为什么 Btrfs 子卷名称中带有 @?

为什么 Btrfs 子卷名称中带有 @?

相当简短的问题。Btrfs 子卷名称中带有 @ 有什么技术原因吗?它的功能、好处或问题原因是什么?

最佳做法是什么?

例子:

答案1

这只是一种惯例。内核 btrfs wiki 中有关子卷的部分根本没有提到@。关于debian-boot 邮件列表信息丰富:

上游 btrfs 系统管理员指南中提出的约定与 Fedora 命名其子卷的方式相同,我相信它是由 Fedora 开发人员编写的。我认为与它不同的主要理由是表明看似目录的东西实际上不是目录,而是子卷。正如我之前提到的,此 FS 支持的灵活性令人震惊,我担心如果没有近乎不言而喻的默认约定,支持它可能会是一场噩梦。我想我会选择一些东西,如果有人不喜欢它,那么它可以改变?我希望在这次讨论中会出现任何强烈的意见!:-)

这是 OpenSUSE 和 Debian 显然从 Ubuntu 那里学到的一个惯例,使用所有这些子卷的想法归因于科林·沃森对罗杰·李说那是在 2010 年,2011 年,我们已经有了以 命名的子卷@,但我找不到当时关于此事的在线讨论。我想只有科林现在就可以回答这个问题了。

答案2

@ 是“真正的”根卷。它的卷 ID 为 0,执行时不会列出btrfs subvolume list /。您可以使用此卷来创建/删除子卷。

mount -o subvolid=0 UUID=insert-the-uuid-here /mnt

您必须将此隐藏根挂载到其他位置才能访问子卷。您可以在 中获取 UUID /etc/fstab,它是所有根子卷的重复 UUID。

# ls /mnt
  @

清单/mnt显示了一个 @ 目录,该目录下是正常的/etc、、/var等等

btrfs subvolume delete /mnt/@/whatever

或者

btrfs subvolume create /mnt/@/whatever

如果创建子卷,请添加:

UUID=insert-the-uuid-here /whatever btrfs subvol=@/home 0 0 

/etc/fstab

现在,,mkdir /whatever您就可以安装它了:mount /whatever

如果删除子卷,请务必将其移除fstab并删除挂载点。

答案3

没什么特别的原因,而且这很令人反感。但我们必须坚持使用时间移位。参见https://linuxreviews.org/Btrfs

相关内容