创建btrfs子卷,例如@或@home


11

受到btrfs的吸引,我决定在VM中玩弄它。只要我记得放在/boot一个单独的分区上,安装的效果就很好,而且一切似乎都很好。

我想做的是为散装数据创建一个单独的子卷,该子卷的设置与诸如@和相比有所不同@homebtrfs subvolume create data会为我做到这一点,但我很好奇为什么它会继续命名@/data(或尝试/data或类似的东西@data)。有没有一种特殊的方式来创建像这样的子卷@@home因此我的数据子卷将显示为@data?(并且:命名方案之间的确切区别是什么?)


附加信息:

  • ubuntu 12.04.2,作为KVM guest虚拟机在mint15主机上运行;
  • ubuntu-x-swat的内核3.8.0-27-generic(保留反向端口);
  • btrfs使用两个设备,/dev/sda并且/dev/sdb
  • /dev/sda并且/dev/sdb是主机操作系统未使用的磁盘上的分区

Answers:


13

igh,似乎我发布得太早了,在IRC上全能的Zosma的帮助下,我们发现了它应该如何工作。

子卷@@home是btrfs根目录的子目录,因此/实际上不是文件系统根目录。所述BTRFS根的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。重新启动后,我们将从/data另一个btrfs子卷中挂载目录。

…利润!


5

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

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

我想做的是为散装数据创建一个单独的子卷,该子卷的设置与@和@home不同。

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

btrfs子卷创建数据将为我做到这一点,但是我很好奇为什么它不断为@ / data命名(或尝试使用/ data或@data时类似的东西)

默认情况下,Ubuntu的安装无处不在创建子卷@,并@home在文件系统中,并且你的Ubuntu根实际上是在子卷@

是否有一种特殊的方式来创建@和@home等子卷,以便我的数据子卷显示为@data?(并且:命名方案之间的确切区别是什么?)

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

有关更多子卷的解释,请访问Funtoo.org-BTRFS


感谢您在此添加的详尽内容;很多有用的信息:)
akaIDIOT 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.