运行 du 命令报告无穷大作为磁盘使用量

hur*_*n77 7 filesystems disk-usage btrfs

我正在尝试获取存储在我的主目录中的总大小。令我惊讶的是,它在几秒钟后报告无穷大:

/home/user $ du -sh .
Infinity
Run Code Online (Sandbox Code Playgroud)

嗯?我很确定没有递归符号链接,但du默认情况下无论如何都不应该遵循符号链接。我也试过了,du -shx .所以它不会跨越设备边界 - 结果相同。

我很确定我没有无限的磁盘空间或磁盘使用量。;-)

目标文件系统是一个没有快照的 btrfs 子卷。rsync每天晚上把这个目录同步到一个外部磁盘就好了,这个“无穷大”没有问题。但是,du那里的报告相同。

对评论的回答:

我的主目录中没有挂载点:

$ mount|grep home
/dev/sda3 on /home type btrfs (rw,relatime,compress=lzo,space_cache,autodefrag)
Run Code Online (Sandbox Code Playgroud)

使用完整路径而不是.作为参数显示相同的行为。

没有大于 200GB 的文件:

$ sudo find -size +$((200*1024*1024)) | wc -l
0
Run Code Online (Sandbox Code Playgroud)

ter*_*don 5

我发现了这个错误报告,其中用户在 btrfs 系统上遇到了同样的问题。结果证明问题来自一个特定.xml文件,其大小被错误地报告为 16 艾字节。

在提交错误的人的情况下,问题是文件系统损坏,问题是通过将所有文件移动到/tmp(这是一个 tmpfs),删除原始文件然后再次复制它们来解决的:

mkdir /tmp/foo &&
cp -rv ~/* /tmp/foo &&
rm -r ~/* &&
mv /tmp/foo/* ~/
Run Code Online (Sandbox Code Playgroud)