操作系统: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
重新启动以使恢复生效。