btrfs:分配了巨大的元数据


14

我有一个256GB的SSD磁盘,将ext4根FS转换为btrfs。我擦除了ext4备份子卷,启用了压缩功能,并对它进行了碎片整理,以对所有文件启用它。

btrfs fi df / 有一个让我担心的输出:

Data: total=148.00GB, used=106.11GB
System: total=32.00MB, used=16.00KB
Metadata: total=65.00GB, used=2.04GB

如果我正确理解了输出,则65GB(磁盘的1/4!)将保留用于元数据,而不可用于存储文件。如果这是正确的话,那将浪费我的磁盘空间。我理解正确吗?可以调整磁盘的元数据分配部分的大小吗?

Answers:


16

首先,确保您的内核和BTRFS用户空间是最新的。

根据BTRFS常见问题,您无法调整元数据块大小。但是,您可以尝试运行btrfs balance start -m <挂载点>,这将在整个磁盘上重新分配元数据,并且作为副作用,可能释放未分配的空间。

如果这样不起作用,则可能必须备份数据并重新创建文件系统。(请查看以获取更多信息。)


感谢您的回答。内核是3.11.2,btrfs-tools是v0.20-rc1,所以我不认为我已经过时了。我试图保持平衡,但随后遇到以下错误: spinics.net/lists/linux-btrfs/msg26977.html ,不想为此而编译新的内核。:P我想知道这65GB是否是无法调整大小的元数据块,或者该术语是否涉及其他内容。否则,我真的不明白如何首先创建具有该大小的元数据块。
Gnurou

不幸的是,我只是btrfs的用户,而不是专家,因此我的帮助非常有限。在任何情况下,ext4的转换过程都可能存在缺陷。
hololeap 2013年

11
因此,必要的补丁程序使它成为了稳定的内核,我已经尝试了您的建议。平衡的确将元数据的保留区域量减少到3GB,现在声称的空间在'df'中显示为可用空间。请注意,您不需要重新平衡整个磁盘,可以执行btrfs balance start -m <mount point>来仅重新平衡元数据,这要快得多。感谢您的深刻见解!
Gnurou

很高兴我能帮助你!
hololeap 2013年

“您无法调整元数据块大小的大小”。这与这个问题无关-FAQ讨论的是分配单位的大小,而不是为元数据分配的空间量。
弗拉基米尔·潘捷列夫

1

这将减小元数据的大小。

sudo btrfs balance start -v -musage=0 /path
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.