在安装 Ubuntu 16.04 LTS Server 期间,我可以选择手动分区并使用 BTRFS 创建 / 分区。安装程序自动将其映射到创建一个名为 的子卷@
,/
并@home
为其自身创建另一个名为 的子/home
卷。对于 UB 18.04 来说,情况似乎不再如此,/
如果我只创建一个分区,我只能为其自身获得一个 BTRFS 子卷。
是我做错了什么,还是事情只是因为某种原因而发生了变化?如果是后者,是否有关于为什么会改变的讨论?以前的设置是否有任何需要在新版本中解决的缺点?如果新的安装程序已经成熟,是否有任何计划恢复旧的行为?
我自己找不到这样的讨论,只有关于旧行为UB 16.04。
谢谢!
答案1
安装程序不知道 BTRFS 子卷,但有一个解决方法。
这是Ask Ubuntu 的答案。由于我只是偶尔使用 Ubuntu 而从未使用过 BTRFS,所以最好验证一下我的答案。
- Do the server setup as usual, at the *Finish installation* step, select **Go Back** and **Execute a shell**.
- List all your target file systems:
mount | grep target
/dev/dm-0 on /target type btrfs (rw,noatime,space_cache,subvolid=257,subvol=/@)
/dev/dm-0 on /target/home type btrfs (rw,noatime,space_cache,subvolid=258,subvol=/@home)
proc on /target/proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /target/dev type devtmpfs (rw,nosuid,relatime,size=475608k,nr_inodes=118902,mode=755)
- Take a note of the BTRFS device, in this example `/dev/dm-0`.
- Now un-mount all of your mounted file systems.
umount /target/dev
umount /target/proc
umount /target/boot/efi
umount /target/home
umount /target/
- Mount your **flat** btrfs filesystem :
cd /tmp
mkdir work
mount /dev/dm-0 work
cd work
- Verify the mount is correct (should show `@` and `@home`):
ls
@ @home
- Create your additional subvolumes (`@tmp`, `@var`, `@var-log`)
btrfs subvolume create @tmp
btrfs subvolume create @var
btrfs subvolume create @var-log
- Move the data
mv @/var/log/* @var-log/
mv @/var/* @var/
# Remove data from tmp
rm @/tmp/* @/tmp/.*
# For 18.04, remove the swapfile since it won't work on btrfs
rm @/swapfile
- Add the new subvolumes to fstab, the device part may be different than the previous mount command, copy the device part from the already existing mount points.
...
/dev/mapper/root-root / btrfs noatime,subvol=@ 0 1
/dev/mapper/root-root /home btrfs noatime,subvol=@home 0 2
/dev/mapper/root-root /var btrfs noatime,subvol=@var 0 2
/dev/mapper/root-root /var/log btrfs noatime,subvol=@var-log 0 2
- Unmount
cd /tmp
umount work
sync
- `exit`, then **Finish the installation**
- Install and configure [snapper](http://snapper.io), a great tool for automatizing snapshots.
答案2
我的答案的一部分来自用户邮件列表:
这取决于您使用的安装程序。如果您使用默认的 subiquity 安装程序,您将获得当前设置。如果您使用不再默认的 di 安装程序,您将获得以前的设置。
我仍然缺少一些背景讨论,如果将来也会将多个不同的子卷添加到新的安装程序中,或者是否不再推荐这样的设置。