创建像@或@home这样的btrfs子体积

由于对btrfs感兴趣,我决定在VM中玩弄它。 只要我记得将/boot放在一个单独的分区上,安装就可以正常工作了。

我想要做的是为大量数据创建一个单独的子卷,其设置与@@homebtrfs subvolume create data会为我做这件事,但我很好奇为什么它一直将它命名为@/data (或类似的东西,当我尝试/data@data )。 是否有一种特殊的方法可以创建像@@home这样的子卷,这样我的数据子卷就会显示为@data ? (和:命名方案之间的确切区别是什么?)


附加信息:

  • ubuntu 12.04.2,在mint15主机上作为KVM来宾运行;
  • 内核3.8.0-27-来自ubuntu-x-swat的通用(raring backport);
  • btrfs使用两个设备, /dev/sda/dev/sdb
  • /dev/sda/dev/sdb是主机OS未使用的磁盘上的分区

叹了口气 ,似乎我发布了一点太早了,在IRC的全能Zosma的帮助下,我们发现了它应该如何工作。

Subvolumes @@home是btrfs root的子项,因此/实际上不是文件系统的根。 btrfs root的UUID在/etc/fstab提供两次,为//home提供安装。 挂载文件系统的实际根目录显示安装程序创建的子卷:

 root@box:~# mkdir /mnt/btrfs root@box:~# mount UUID=f8963df3-1320-4bc0-a125-62be185b029e /mnt/btrfs root@box:~# ls /mnt/btrfs @ @home 

这就是他们去的地方! 以ubuntu安装程序的确切方式创建新的子卷现在很简单:

 root@box:~# btrfs subvolume create /mnt/btrfs/@data Create subvolume '/mnt/btrfs/@data' 

现在,因为我们在btrfs根目录而不是在根文件系统中创建了一个子卷来进行安装,所以/data/本身不会显示。 幸运的是,通过检查/etc/fstab并为/data添加另一个挂载来复制安装程序使用的技巧是微不足道的:

 UUID=f8963df3-1320-4bc0-a125-62be185b029e /data btrfs defaults,subvol=@data 0 2 

最后一步是创建挂载点: mkdir /data 。 重新启动后,我们将从一个单独的btrfs子卷安装一个/data目录。

……利润!

只要我记得将/ boot放在一个单独的分区上,安装就会很好

您不需要单独的/ boot。 GRUB2可以从btrfs读取和启动Linux。

我想要做的是为大量数据创建一个单独的子卷,其设置与@和@home不同。

如果您正在讨论使用不同的挂载选项安装子卷,请注意当前(2013年11月)它们不受支持:根据Btrfs常见问题解答,“ 我可以挂载具有不同挂载选项的子卷吗? ”,目前只有btrfs特定的选项不受支持或未实现。 但是,开发人员计划在未来实施它。

btrfs subvolume创建数据会为我做,但我很好奇为什么它一直命名为@ / data(或类似的东西,当我尝试/数据或@data)

默认情况下,Ubuntu的安装程序Ubiquity在文件系统中创建子卷@@home ,并且您的Ubuntu根实际上在子卷@

是否有一种特殊的方法可以创建像@和@home这样的子卷,这样我的数据子卷就会显示为@data? (和:命名方案之间的确切区别是什么?)

@@home是安装程序选择的任意名称,在/etc/fstab之外没有任何意义。 事实上,我通常将它们重命名为更具体的名称,这样我就可以在同一个btrfs上安装许多Ubiquity安装的发行版,只要我记得更新它们的fstab。

Funtoo.org上的更多子卷解释- BTRFS 。