我正在尝试追踪哪些程序占用了我的 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 驱动器/等。(挂载下没有隐藏文件。)
答案1
好的,再次查看内核代码并查看 btdu,我想我明白了。
您的内核太旧(4.14 或更旧)并且不支持BTRFS_IOC_LOGICAL_INO_V2
。
1) btdu 大部分情况下有效且 2) 这些错误被映射到 6 GB 空间的原因是,仅当第一个查询(使用-noBTRFS_IOC_LOGICAL_INO_V2
完成)没有产生结果时,btdu 才用于执行查询。BTRFS_IOC_LOGICAL_INO
_V2
我将更新 btdu 来显示适合这种情况的提示。
至于是什么占用了这 6 GB 的空间:很可能是部分使用范围中无法访问的部分。碎片整理将清除它们。如果您更新内核,btdu 将能够告诉您哪些文件正在固定这些范围。