为 / 和 /home 创建子卷

为 / 和 /home 创建子卷

操作系统:Arch Linux x86_64

我有一个 BTRFS 文件系统,都包含 / & /home,如何为 / & /home 创建子卷,并为每个子卷创建快照并从它们的快照恢复(从 Live CD 恢复快照)?

答案1

为 / 和 /home 创建子卷

假设 / 当前是 BTRFS 文件系统的根子卷,您需要首先创建子卷,然后将目录移动到各自的子卷中。

警告: 使用以下任何命令,请确保您阅读它们并了解它们的工作原理。

cd /
btrfs subvol create rootfs
btrfs subvol create homefs
cp -a --reflink=always bin usr root var rootfs/ # This is just a sample of directories to copy. But DON'T copy home.
cp -a --reflink=always home/* homefs/

然后,编辑/etc/fstab并更改 / 挂载点,以便它使用 rootfs 子卷。这是通过添加选项 (-o) 来完成的subvol=rootfs。然后,添加用于/home使用 homefs 子卷的挂载点。您还需要更新引导加载程序中配置的根文件系统。

最后,重新启动并确认正在使用新的安装点。如果一切顺利,您可以暂时挂载根子卷(在 /root/btrfs 等目录中)并删除您复制的原始目录。

创建快照

就我个人而言,我有一个包含快照的子卷。这样我就可以将快照挂载在,比如说。/mnt/snapshots并且可以轻松访问我可能意外删除的文件。

设置

mkdir /root/btrfs
mount /dev/WHATEVER /root/btrfs
cd /root/btrfs
btrfs subvol create snapshots

拍摄只读快照的示例

mount /dev/WHATEVER /root/btrfs
cd /root/btrfs
btrfs subvol snapshot -r rootfs snapshots/rootfs-2019-04-11

从快照恢复

无需 LiveCD 即可从快照恢复。该过程非常简单:重命名子卷,然后从您选择的快照创建读写快照。

恢复 rootfs 快照的示例。

mount /dev/WHATEVER /root/btrfs
cd /root/btrfs
mv rootfs rootfs-old # Even though rootfs would be mounted, you can still rename it without affecting the running system.
btrfs subvol snapshot snapshots/rootfs-2019-04-10 rootfs

重新启动以使恢复生效。

相关内容