创建 btrfs 子卷,如 @ 或 @home

创建 btrfs 子卷,如 @ 或 @home

由于对 btrfs 很感兴趣,我决定在虚拟机中试用一下。只要我记得放在/boot单独的分区上,安装就会很顺利,一切似乎都运行良好。

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


附加信息:

  • ubuntu 12.04.2,作为 KVM 客户机在 mint15 主机上运行;
  • 来自 ubuntu-x-swat 的内核 3.8.0-27-generic(raring 反向移植);
  • btrfs 使用两个设备,/dev/sda并且/dev/sdb
  • /dev/sda并且/dev/sdb是主机操作系统未使用的磁盘分区

答案1

,似乎我发布得有点太早了,在 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 子卷挂载一个目录。

… 利润!

答案2

只要我记得将 /boot 放在单独的分区上,安装就会顺利进行

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

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

如果你谈论的是使用不同的安装选项,请注意,目前(2013 年 11 月)它们不受支持:根据 Btrfs FAQ,“我可以使用不同的挂载选项来挂载子卷吗?“,目前只有 btrfs 特定的选项不受支持或未实现。不过,开发人员计划在未来实现它。

btrfs subvolume create data 会为我做到这一点,但我很好奇为什么它一直将其命名为@ / data(或当我尝试/ data或@data时类似的名称)

默认情况下,Ubuntu 的安装程序 Ubiquity 会在文件系统中创建子卷@@home,而您的 Ubuntu 根目录实际上位于子卷中@

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

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

更多子卷说明,请参阅Funtoo.org-BTRFS

相关内容