使用btrfs时,为什么df中的“大小”,“已使用”和“可用”值不匹配?


9

我有一个btrfs分区。当我运行时df -h,它显示:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       113G  101G  8.3G  93% /home

为什么呢?是否因为ext2 / 3/4为root保留了空间?或者是别的什么?如果是前者,我该如何更改并回收这些4GB?

根据btrfs Wiki,我知道元数据存储了两次,从而扩大了“已用”数据的大小:

user@machine:~$ df -h /
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             894G  311G  583G  35% /
                            ^^^^
user@machine:~$ btrfs fi df /
Metadata: total=18.00GB, >>used=6.10GB<<  *2=  12.20GB
Data: total=358.00GB, >>used=298.37GB<<   *1= 298.37GB
System: total=12.00MB, >>used=40.00KB<<   *1=   0.00GB
                                           == 310.57GB 
                                           ~~ 311   GB

但这仍不能解释为什么“已用+可用<大小”。


btrfs.wiki.kernel.org/articles/f/a/q/FAQ_1fe9.html-阅读“为什么有这么多方法检查可用空间量?” 部分,其中包含很多信息。
2012年

是的,它有很多信息,但是在所有示例中,Used + Avail = df输出大小。我已经用这个更新了问题。
2012年

是否lsof显示任何已删除的文件?(系统输出的btrfs比wiki的输出更合适。)
2012年

我知道,但是我懒于重新格式化它,这是类推。如果lsof |grep 'DEL'|wc -l给出已删除文件的数量,则为338。尽管它们看起来并不大(我能以某种方式获得它们的整体大小吗?)
sup 2012年

1
@Mat这是BTRFS常见问题解答的有效链接:为什么有太多方法检查可用空间量?
ali_m 2014年

Answers:


10

除非在格式化时另有指定,否则默认设置是存储元数据块的重复副本,以提高可靠性。使用4gb,您可能有2gb的元数据存储了两次。您可以使用查看更多详细信息btrfs filesystem df

特别是,为元数据分配了1.75GB,因此它消耗了两倍的空间或3.5GB的空间。目前,在1.75 GB的内存中只有385 mb用于元数据,但完整的1.75 GB保留用于该用途,因此不计入文件数据的可用空间


btrfs filesystem df /home给出Metadata, DUP: total=1.75GB, used=385.70MB的数据,因此我存储了约771MB的元数据,以及总计101G的数据,但它不能解释为什么Used + Avail <Size-我扩展了问题以反映这一点。
2012年

4
@sup,为元数据分配了1.75GB,因此它消耗了两倍的空间或3.5GB的空间。目前,在1.75 GB的内存中只有385 mb用于元数据,但完整的1.75 GB保留用于该用途,因此不计入文件数据的可用空间。
psusi

啊,现在我明白了。我想来自btrfs Wiki的示例仅使用一些对此不了解的旧df。感谢您的回答!
sup
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.