Mat*_*ias 5 linux btrfs snapshot
在升级到 Fedora 25 之前,我做了一个btrfs subvolume snapshot / /f24
. 我的可用空间很少,所以更新失败。现在的问题是,如何恢复快照?我已经通过编辑 grub.cfg(设置rootflags=subvol=root/f24
)启动到快照。
这家伙说到只是btrfs subvolume delete root
。但我不确定 grub2 是否会在下一次内核更新时重新生成一个坏的 grub.cfg。也delete root
听起来像一个rm -rf /
类似的操作。
这家伙使用 rsync 将数据从快照复制到根目录。我确定它有效,但它是 2013 年的答案,我认为有更好的方法来恢复快照。
我发现有几次“只是使用mv
”,通常与apt-btrfs-snapshot
. 它只是听起来不像mv /f24 /
真的会起作用。(如果是这样,请纠正我。)
最后,恢复的快照当然应该root
再次命名,而不是root/f24
. 以下是关于FS的一些信息:
$ btrfs subvolume list /
ID 257 gen 419417 top level 5 path root
ID 3231 gen 419430 top level 257 path root/f24
Run Code Online (Sandbox Code Playgroud)
启动到快照:
$ btrfs subvolume show /
/
Name: f24
UUID: b1782609-7d9f-4725-911d-428cda2256c7
Parent UUID: 8df6fae9-770a-4d55-a4bf-6a32edf1fbd7
Received UUID: -
Creation time: 2016-11-26 19:17:22 +0200
Subvolume ID: 3231
Generation: 419438
Gen at creation: 411444
Parent ID: 257
Top level ID: 257
Flags: -
Snapshot(s):
Run Code Online (Sandbox Code Playgroud)
2016 年有没有办法做到这一点?
由于您当前或所需的子卷都不是“真正的”Btrfs 根,即子卷 ID 0,您的情况有所简化。
首先(临时)挂载真正的 Btrfs 根,如下所示:
mkdir /mnt/btrfs-root
mount -o subvolid=0 /dev/somedevice /mnt/btrfs-root
Run Code Online (Sandbox Code Playgroud)
现在,在 btrfs-root 中,您应该能够看到您的子卷“根”以及您在那里定义的任何其他子卷。您可以使用 plain 以您想要的方式重新排列它们mv
:
cd /mnt/btrfs-top
mv -i root/f24 newroot
# Now at least you don't have one subvolume rooted inside another
# It's a little simpler to work with.
# Now just shuffle them as desired
mv -i root oldroot
mv -i newroot root
# ...and clean up
cd
umount /mnt/btrfs-top
rmdir /mnt/btrfs-top
Run Code Online (Sandbox Code Playgroud)
现在,下次您挂载名为“root”的子卷时,它将是新的。
请注意不要通过 subvolid 挂载根文件系统。如果您通过 subvolid 安装它,那么即使您重命名上述内容,subvolid 也不会改变。
如果您依赖默认的 subvolid 挂载文件系统,那么您需要将默认的 subvolid 更改为新的:
btrfs subvolume set-default 3231 /
Run Code Online (Sandbox Code Playgroud)如果您通过显式 subvolid 规范安装它,那么您将需要更改/etc/fstab
并/etc/default/grub
使用subvolid=3231
.
归档时间: |
|
查看次数: |
4502 次 |
最近记录: |