由于对 btrfs 很感兴趣,我决定在虚拟机中试用一下。只要我记得放在/boot
单独的分区上,安装就会很顺利,一切似乎都运行良好。
我想做的是为批量数据创建一个单独的子卷,其设置不同于@
和 之类的设置@home
。btrfs 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。