df 报告分区占用的空间,但没有数据

df 报告分区占用的空间,但没有数据

df -h粘贴分区的输出/mtd_rwarea

$ df -h 
Filesystem                Size      Used Available Use% Mounted on
/dev/mmcblk0p16         150.0M    138.5M     11.5M  92% /mtd_rwarea

但目录里什么也没有。目录/mtd_rwarea为空。ls -la该分区的输出:

ls -la
drwxr-xr-x    1 root     0                2 Jan  1 00:01 .
drwxrwxrwx   26 root     0              693 Aug 16  2012 ..

有人可以帮助理解这可能是什么原因吗?

谢谢!

答案1

如果重新启动后回收了空间,则差异很可能是由于使用打开的处理程序删除了文件。

使用 lsof 查看是否有已删除的文件仍然打开。一些应用程序(例如 MySQL)因在这方面的行为不当而臭名昭著,它们会在不关闭文件处理程序的情况下取消临时文件的链接。

答案2

有几个原因可能会导致这种情况,我所知道的原因按我想到的顺序排列:

  1. 当您在目录中时挂载\卸载文件系统会在执行 ls 之类的操作时为您提供过时的信息。
  2. 如果一个目录附加了两个挂载点,则最后一个挂载点是有效挂载点。
  3. 文件系统有时会保留一定比例的空间供 root 用户使用,在某些版本中,它显示为已用空间(可以使用 dumpe2fs 在 extX 上找到)。
  4. 发生错误,文件被取消链接并且数据块未被正确释放(使用 fsck 修复)。
  5. 创建文件系统时,它是使用高索引节点/块比率创建的,这导致索引节点空间看起来已分配。

考虑到文件系统是空的,我会重新创建它。

但是,如果您可以粘贴 dumpe2fs(不带阻止列表)来找出哪个理论是正确的(如果有的话),我会很高兴。

相关内容