我在 btrfs 上有一个根文件系统。很久以前我创建了快照(snap_before_sid
)。我用我的系统做了坏事并切换到这个快照(btrfs filesystem set-default snap_before_sid
)。一切看起来都不错并且工作正常,但我担心由于旧的顶级子卷(id 5)在某处而导致“空间丢失”。
有什么办法可以:
- 要么删除 id 5 子卷?
- 或者将当前快照(当前默认子卷)合并到其中并将其删除。
- 或者通过 id5 子卷清除已用空间?
我的 fs 看起来像这样:
btrfs subvolume list / -a -p
ID 276 gen 311412 parent 5 top level 5 path <FS_TREE>/snap_before_sid
btrfs subvolume show -r 5 /
/
Name: <FS_TREE>
UUID: -
Parent UUID: -
Received UUID: -
Creation time: -
Subvolume ID: 5
Generation: 311399
Gen at creation: 0
Parent ID: 0
Top level ID: 0
Flags: -
Snapshot(s):
snap_before_sid
答案1
我不是专业人士BTRFS
。我已经使用它几个星期了。另外我不得不说,我理论上知道这个案例,我没有做测试,但我对你的问题有一些了解。
- 要么删除 id 5 子卷?
据我了解,BTRFS
无法删除根子卷。
- 或者将当前快照(当前默认子卷)合并到其中并将其删除。
据我了解BTRFS
不知道如何合并快照。它没有这个功能。
但:
快照是像任何其他子卷一样的子卷,具有给定的初始内容。默认情况下,快照是以读写方式创建的。快照中的文件修改不会影响原始子卷中的文件。
看关联。
我知道快照是一个子卷,它具有子卷的所有功能,但正如我们所看到的,它被标记为快照。所以它不完全是子卷。 :)
您更改默认子卷,从而获得“合并”。这是正确的案例之一。
另一个案例:
编辑: !!!警告!!!在您的情况下,当您挂载根卷(子卷)时,您可能会看到快照目录(或快照子卷),请小心同步,它可能会删除所有文件。我不确定我们是否可以将快照卷作为快照目录删除,并且我不会尝试在工作站上进行检查。 :) 我将在没有快照目录(或快照子卷)的情况下同步文件,并且不使用镜像同步并使用自定义同步。
有子卷和快照。要从快照恢复数据,您可以使用同步应用程序(例如 rsync 或我使用 FreeFileSync,我喜欢 GUI),它可以像镜像一样同步文件。在这种情况下,您可以恢复子卷并删除快照。然后去喝茶或咖啡。
请参阅从快照恢复文件关联。
如何将您的案例更改为另一个案例?(编辑)
我做了一个测试。我将根卷恢复为默认值。
你做的btrfs filesystem set-default snap_before_sid [path]
也是一样的btrfs filesystem set-default 276 [path]
。276
- 你的IDsnap_before_sid
然后你就可以做btrfs filesystem set-default 5 [path]
。 5 - 您的<FS_TREE>
ie 根卷的 id。
之后您可以检查默认音量 - btrfs subvolume get-default [path]
。你应该得到一个答案—— ID 5 (FS_TREE)
。
别忘了BTRFS
再次重新挂载。您将看到根卷恢复原状。
根卷不会永远丢失。它将导致文件系统的顶层无法访问,直到您将根卷恢复为默认值。它被暂时隐藏。
之后您可以转到另一个案例一步步玩弄rsync
.
看关联。
- 或者通过 id5 子卷清除已用空间?
抱歉,我不知道。但我认为BTRFS
不能这样做。
希望我的回答对您有帮助。