如何检查 Btrfs 文件系统使用情况

在 Btrfs 文件系统中,有为常规数据、元数据分配的块。
还有一些块被分配用于存储文件系统信息以及其他块在物理磁盘上的位置。
这些块只能存储数据。
偶尔,块类型可能会填满并开始耗尽空间。
但是,其他块中可能(并且经常)仍有可用空间。
因此,需要在其上释放一些空间。

Btrfs 文件系统中有一个平衡功能(Balancing)。
平衡操作有效地释放了其他块中的空间,使其可用于分配。

  1. 下面的命令显示文件系统上分配了多少空间:
# btrfs fi show
  1. 下面的命令显示了文件的使用情况:
# btrfs filesystem du /btr
  1. 通过数据和元数据完成文件系统使用(Before Balance):
# btrfs filesystem usage /btr

以下命令用于平衡,此命令无需过滤器即可完成完全平衡。
此操作非常激烈,可能需要很长时间。
建议使用平衡过滤器来缩小平衡数据的范围。

无过滤器

# btrfs filesystem balance /btr

带过滤器(使用dusage和musage)

# btrfs filesystem balance start -dusage=5 /btr

请注意, -d 和 usage 之间不应有空格。
此命令将尝试重新定位空或者接近空的数据块中的数据(在此示例中最多使用 5%),从而允许回收空间并将其重新分配给元数据。

如果 balance 命令以“完成,必须重新定位 XX 个块中的 0 个”结尾,那么我们需要增加“dusage”百分比参数,直到至少重新定位一个块。
如果我们不使用过滤器,则它会同时平衡数据和元数据。

另一种通过脚本平衡 btrfs 文件系统的方法

for i in 0 5 10 15 20 25 30 40 50 60 70 80 90 100
do
	echo "
# btrfs filesystem usage /btr
: Running with ${i}%" sudo btrfs balance start -dusage=$i -musage=$i /btr/ done

通过以下命令进行余额检查后:

##代码##

根据“btrfs 文件系统 du”和“btrfs 文件系统使用情况”决定 -dusage 和 -musage 的值。

日期:2020-09-17 00:13:14 来源:oir作者:oir