我用过鲷鱼使用 Fedora 26 创建我的 btrfs 系统的快照,我正在尝试重新开始(即删除 snapper 及其所做的任何事情),但我有一个快照无法删除,因为它似乎是我的默认子卷(我不记得了)为什么它会这样做,也许我尝试了回滚)。
# snapper delete 535
Deleting snapshot failed.
# btrfs subvolume get-default /
ID 1630 gen 112224 top level 275 path .snapshots/535/snapshot
# btrfs subvolume show /
/
Name: root
UUID: 544f9215-4537-fe4b-b1b5-4da21d9abb9c
Parent UUID: -
Received UUID: -
Creation time: 2017-07-19 21:28:42 +0100
Subvolume ID: 257
Generation: 112591
Gen at creation: 8
Parent ID: 5
Top level ID: 5
Flags: -
Snapshot(s):
我不确定我在这里问的是否有意义,但我想将默认子卷更改回我最初在顶部设置系统时所拥有的父卷(;master;root,不确定正确的词)卷- 文件系统的级别,即/,默认更改之前。
# btrfs subvolume list / -a -p -t
ID gen parent top level path
-- --- ------ --------- ----
257 112604 5 5 <FS_TREE>/root
258 112604 5 5 <FS_TREE>/home
263 112214 257 257 root/var/lib/machines
275 112593 257 257 root/.snapshots
276 112577 258 258 <FS_TREE>/home/.snapshots
1630 112224 275 275 <FS_TREE>/root/.snapshots/535/snapshot
1639 112604 257 257 root/var/log
1641 111548 257 257 root/mnt/virtualbox
我可以运行btrfs subvolume set-default
其中一个来实现这一目标吗?我不确定 /... 的含义,因为我猜测我应该将默认值更改为 ID 257 的根,但这让我失望了。
与 / 中的文件相比,此快照中的文件现在已经过时,因此我不希望用快照的内容覆盖 / 。
答案1
通过挂载 BTRFS 文件系统,可以指定要挂载或不挂载的子卷:
Btrfs 文件系统有一个默认子卷,它最初设置为顶级子卷 [其 ID 始终为 5],如果未指定 subvol 或 subvolid 选项,则安装该子卷。 -https://btrfs.wiki.kernel.org/index.php/SysadminGuide#Snapshots
subvol
您可以在挂载文件系统时使用以下选项覆盖默认子卷:
mount /dev/sda / -o subvol=root/.snapshots/535/snapshot
在您的情况下,当您执行回滚时,子卷 275 已更改为默认值。
回滚[选项] [数量]
创建两个新快照并设置默认子卷。默认情况下,系统从根文件系统的默认子卷启动。-http://snapper.io/manpages/snapper.html
Snapper 映射页面在这里隐含的意思是,它期望根文件系统的挂载点为不是指定子卷。否则,回滚命令将无效,因为它会被选项覆盖subvol
。
您原来的默认子卷是顶层(ID 5)。您当然可以btrfs subvolume set-default
再次将其设为默认值,但是......也许您不应该这样做。
如果您一直从 535 子卷启动,那么随着时间的推移,您可能已经在该子卷上积累了大量更改。恢复到顶级子卷意味着损失这些变化;我用这个词损失考虑到更改仍然存在,只是在不同的子卷中,所以此处松散。