我只有1 个 BTRFS 分区包含/
和/home
。
我已经通过以下命令对根文件系统进行了快照:
btrfs subvolume snapshot / /root/snapshots/test
现在我想恢复这个快照。我怎么做 ?
当我启动到救援介质并安装时,我得到:
# mount -t btrfs /dev/sda3 /mnt
# ls /mnt
# bin boot dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
正如您所看到的,我的子卷从这里不可见。
但是当我这样做时:
$ btrfs subvolume list /
ID 256 gen 3794 top level 5 path fedora
ID 264 gen 2296 top level 256 path root/snapshots/test
如何恢复这个快照?
教程说我必须将子卷重命名为根。我怎么做 ?
我尝试过编辑/etc/fstab
但没有效果。
答案1
您拥有的是一个包含两个子卷的 BTRFS 文件系统:
fedora
- 这是设置为您的默认子卷,这是您在挂载文件系统而不指定子卷时看到的内容。前任。mount -t btrfs /dev/sda3 /mnt
root/snapshots/test
- 这是您创建的快照fedora
在 BTRFS 中,实际上不存在恢复快照之类的事情。相反,您只需使用不同的子卷作为根文件系统进行引导。有几种方法可以做到这一点。
重命名子卷
为此,您首先需要挂载顶级卷,该卷的 ID 始终为 5,并且在您的情况下默认情况下不会挂载。之后您可以进行正常的目录重命名。
笔记:这在您的情况下不起作用,因为您的操作系统配置为将默认子卷安装为根文件系统,并且此过程不会更改默认子卷。
mount -t btrfs -o subvolid=5 /dev/sda3 /mnt
cd /mnt
mv fedora fedora-old
mv fedora-old/root/snapshots/test fedora
更改默认子卷
通过更改默认子卷,重新启动时您的系统将从新的默认子卷启动。下面显示的子卷 ID 264 来自您的示例btrfs subvolume list /
btrfs subvolume set-default 264 /
更改引导加载程序中的根子卷
如何完成此操作取决于您的引导加载程序,但引导加载程序(例如 GRUB)通常包含一行配置,用于指定将哪个文件系统挂载为根文件系统。可以更改该配置以引导不同的子卷。不幸的是我没有例子可以展示。但请注意,这是无法完成的,/etc/fstab
因为直到稍后才会读取该文件。
结论
对于您的具体情况,我认为通过更改默认子卷可以获得最佳结果。