如何检查(模拟)删除 btrfs 子卷后会释放多少空间?

Ada*_*ski 9 disk-usage btrfs

这个问题并非微不足道。BTRFS 是 COW 文件系统,存储在硬盘上的一个对象可以被多个文件引用。

我在生产服务器上使用 BTRFS 快照作为备份解决方案的一部分。这样我就有了给定子卷的空间高效、可浏览的历史记录(我使用了SnapBtr的修改)。

我有几个独立的 btrfs 子卷用于不同的目的,每个子卷都有一个备份方案。当可用空间用完时,我可以根据 的智能对数时间成本算法从每个备份池中获取最不需要的备份快照SnapBtr

我需要一种方法来衡量在删除每个备份后将释放的数据量与旧快照的年龄及其备份池的重要性。我错过了以前的信息。

我理解 BTRFS 上的可用空间的计算过程既不简单也不快速。我需要一些可以模拟子卷删除的东西来获得可能被释放的空间的大小。

谁能帮我?我应该将此消息发布到linux-btrfs@vger.kernel.org吗?

Tal*_*Tal 6

这表现在这里,这其实是很简单的事情。

首先,启用 btrfs 配额:

# btrfs quota enable /btrfs_subvolume
Run Code Online (Sandbox Code Playgroud)

然后运行:

# btrfs qgroup show /btrfs_subvolume
OR
# btrfs qgroup show -f /btrfs_subvolume
Run Code Online (Sandbox Code Playgroud)

Btrfs v3.18.2 中的内容向您展示了这一点:

qgroupid        rfer       excl
--------        ----       ----
0/260        1.09GiB    1.09GiB
Run Code Online (Sandbox Code Playgroud)

0/260是子卷ID,excl是子卷中的独占数据。如果您删除子卷,您将释放多少空间。

编辑:根据此链接,这似乎是官方推荐的方法。