我刚刚使用 Ubuntu 安装程序(从已安装的 ISO 映像)在 VPS 上安装了 Ubuntu 18.04 服务器。在安装的手动分区阶段,我选择了 BTRFS 作为文件系统类型。
现在安装已完成,但我看不到@
或@home
不像在非服务器安装中通常看到的那样。我不关心@home
这里的子卷,但我不想将顶层卷安装在/
。
lsblk:
vda 252:0 0 25G 0 disk
|-vda1 252:1 0 1M 0 part
|-vda2 252:2 0 20G 0 part /
`-vda3 252:3 0 5G 0 part [SWAP]
没有产生任何结果:
btrfs su li /
我接下来尝试了这个:
btrfs filesystem show | awk '/ path /{print $NF}'
/dev/vda2
和:
# findmnt
TARGET SOURCE FSTYPE OPTIONS
/ /dev/vda2 btrfs rw,relatime,space_cache,subvolid=5,subvol=/
如何在安装 18.04 服务器期间创建 BTRFS 子卷?
我想创建@
(为/
)和@varlog
(为/var/log
)以及其他人。
我想使用 Snapper 进行每小时快照。有没有推荐的方法来使用 BTRFS 和 Snapper 设置 Ubuntu 服务器?
答案1
您可以通过以下方式移动/
到子卷:
创建文件系统的快照。
btrfs sub snap / /@
将新的子卷挂载到
/mnt
。mount -o subvol=@ /dev/vda2 /mnt
Chroot 到子卷并更新 grub。
cd /mnt mount -o bind /dev dev mount -o bind /sys sys mount -o bind /proc proc chroot /mnt update-grub exit
更新
/mnt/etc/fstab
并添加此处subvol=@
作为选项。重启。您将启动到子卷。通过以下方式确保
mount | grep vda2
它应该显示类似
/dev/vda2 on / type btrfs (rw,relatime,space_cache,subvolid=257,subvol=/@)
- 现在,您可以将顶部子卷挂载到某处,并删除其内容,但 除外
/@
。
答案2
这是一个适用于 Ubuntu Server 20.04 的解决方案。它@
在第一次启动之前创建子卷并从/
卷中删除所有文件。
使用 BTRFS 根分区安装 Ubuntu 20.04,但系统安装后不要重新启动。
切换到终端(Alt+ F2)。
切换到 root 用户并卸载除 BTRFS 分区之外的所有设备:
sudo -i umount /target/boot/efi umount -l /target/run umount /target/cdrom
如果您还有其他挂载点(即
/home
),也请将其卸载。创建
@
子卷并将所有文件移入其中:cd /target btrfs subvolume create @ ls | grep -v @ | xargs mv -t @
卸载 BTRFS 分区并再次挂载,这次指向
@
子卷。这也是定义一些额外挂载选项的好时机(在我的示例中,有一些针对 SSD 设备的推荐选项)。我假设 BTRFS 卷位于/dev/sda2
(根据情况进行调整)cd / umount /target mount -o subvol=@,ssd,noatime,space_cache,commit=120,compress=zstd:2 /dev/sda2 /target
现在是时候通过安装所有必要的设备来完成系统,然后切换到它
chroot
(我假设你的启动分区是/dev/sda1
)mount /dev/sda1 /target/boot/efi mount --bind /proc /target/proc mount --bind /dev /target/dev mount --bind /sys /target/sys chroot /target
如果你已经创建了其他分区(例如
/home
),也请将它们挂载在这里在编辑器中打开
fstab
:vi /etc/fstab
并用 BTRFS 分区更新该行,即:
UUID=xxx / btrfs default,subvol=@,ssd,noatime,space_cache,commit=120,compress=zstd:2 0 0
最后,设置引导加载程序(我假设
/dev/sda
)update-initramfs -u -k all grub-install --recheck /dev/sda update-grub exit
返回安装程序 ( Alt+ F1) 并重新启动。Ubuntu 应该会启动到您的
@
子卷。