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


9

这个问题并不简单。BTRFS是COW文件系统,许多文件可以引用存储在硬盘上的一个对象。

我将BTRFS快照用作生产服务器上备份解决方案的一部分。这样,我就可以获得给定子卷的节省空间的可浏览历史记录(我使用了SnapBtr的修改)。

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

我需要一种方法,可以根据旧快照的使用期限及其备份池的重要性来加权删除每个备份后将释放的数据量。我错过了以前的信息。

我了解BTRFS上的可用空间的计算过程既微不足道,也不是很快。我需要一些可以模拟子卷删除的东西,以获取将要释放的空间的大小。

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

Answers:


6

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

首先,启用btrfs配额:

# btrfs quota enable /btrfs_subvolume

然后运行:

# btrfs qgroup show /btrfs_subvolume
OR
# btrfs qgroup show -f /btrfs_subvolume

Btrfs v3.18.2中的哪个向您显示了以下内容:

qgroupid        rfer       excl
--------        ----       ----
0/260        1.09GiB    1.09GiB

0/260是子卷ID,而excl是子卷中的排他数据。如果删除子卷,则将释放多少空间。

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


Pro Backup指出(建议编辑中),值得检查配额支持方面已知问题
史蒂芬·基特

0

btrfsQuota.py使输出btrfs qgroup show更具可读性,用子卷的名称替换子卷ID,例如:

subvol                                      group         total    unshared
-------------------------------------------------------------------------------
test/a                                      0/970        20.05M       0.05M
test/b                                      0/971        20.05M      10.05M
test/c                                      0/972        30.05M      10.05M
test/d                                      0/973        30.05M       0.05M
test/e                                      0/974        30.05M      10.05M

1
它不适用于Ubuntu 14.04的默认btrfs-tools版本。您需要安装较新的版本,然后一切正常
Adam Ryczkowski

@AdamRyczkowski我现在正在使用该脚本的Python 3版本,并且工作正常。
Geremia'8
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.