我正在尝试追踪我的 btrfs 文件系统上的一些空间正在使用什么。和之间有很大的区别,btrfs fi du -s /
而且btrfs fi usage /
区别似乎<ERROR>
在运行时的部分btdu
。
我如何追查导致这种<ERROR>
用法的原因?
# btrfs fi du -s /
Total Exclusive Set shared Filename
5.50GiB 5.50GiB 0.00B /
# btrfs fi usage /
Overall:
Device size: 20.00GiB
Device allocated: 12.28GiB
Device unallocated: 7.72GiB
Device missing: 0.00B
Used: 11.59GiB
Free (estimated): 8.22GiB (min: 8.22GiB)
Data ratio: 1.00
Metadata ratio: 1.00
Global reserve: 16.00MiB (used: 0.00B)
Data,single: Size:12.00GiB, Used:11.50GiB
/dev/sda2 12.00GiB
Metadata,single: Size:256.00MiB, Used:89.03MiB
/dev/sda2 256.00MiB
System,single: Size:32.00MiB, Used:16.00KiB
/dev/sda2 32.00MiB
Unallocated:
/dev/sda2 7.72GiB
相关btdu输出:
--- / --------------------------------------------------------------------------------
~12.0 GiB [##########] /<DATA>
~253.1 MiB [ ] <METADATA>
~32.0 MiB [ ] <SYSTEM>
--- /DATA ----------------------------------------------------------------------------
~6.5 GiB [##########] /<ERROR>
~2.1 MiB [ ] /<ROOT_TREE>
~5.5 GiB [######## ] /@
--- /DATA/ERROR ----------------------------------------------------------------------
~6.0 GiB [##########] logical ino (Inappropriate ioctl for device)
~509.9 MiB [ ] logical ino (No such file or directory)
所以我的结论是我系统上的实际文件占用了大约 5.5GB,其余的使用来自 btdu 报告为错误的东西。
笔记/我尝试过的事情:
- 我已经运行了 在任何网站上都能找到的各种口味的
balance
,rescue
, 。没运气。check --repair
scrub
- 我已卸载所有其他磁盘 / nfs 驱动器 / 等。(安装下没有隐藏文件。)
好的,再看看内核代码和 btdu,我想我明白了。
您的内核太旧(4.14 或更早)并且不支持
BTRFS_IOC_LOGICAL_INO_V2
.1) btdu 大部分工作和 2) 这些错误被映射到 6 GB 空间的原因是 btdu 仅用于
BTRFS_IOC_LOGICAL_INO_V2
在第一个查询(使用 -no 完成)没有产生结果时执行BTRFS_IOC_LOGICAL_INO
查询_V2
。我将更新 btdu 以显示针对这种情况的适当提示。
至于是什么消耗了这 6 GB 的空间:很可能它们是部分使用的扩展区中无法访问的部分。碎片整理将摆脱它们。如果您更新内核,btdu 将能够告诉您哪些文件正在固定这些范围。