合并最后一个快照或用 btrfs 中的快照替换顶级

合并最后一个快照或用 btrfs 中的快照替换顶级

我在 btrfs 上有一个根文件系统。很久以前我创建了快照(snap_before_sid)。我用我的系统做了坏事并切换到这个快照(btrfs filesystem set-default snap_before_sid)。一切看起来都不错并且工作正常,但我担心由于旧的顶级子卷(id 5)在某处而导致“空间丢失”。

有什么办法可以:

  1. 要么删除 id 5 子卷?
  2. 或者将当前快照(当前默认子卷)合并到其中并将其删除。
  3. 或者通过 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。我已经使用它几个星期了。另外我不得不说,我理论上知道这个案例,我没有做测试,但我对你的问题有一些了解。

  1. 要么删除 id 5 子卷?

据我了解,BTRFS无法删除根子卷。

  1. 或者将当前快照(当前默认子卷)合并到其中并将其删除。

据我了解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.

关联

  1. 或者通过 id5 子卷清除已用空间?

抱歉,我不知道。但我认为BTRFS不能这样做。

希望我的回答对您有帮助。

相关内容