为什么du和quota结果不匹配?


8

我在没有root用户访问权限的系统上超出了磁盘配额。我尝试删除旧文件,但仍然结束。我试图du找出所有空间都用完了,但是它报告我使用的很少。

结果来自 quota

   /home/1234$ quota -s
   Disk quotas for user 1234 (uid 1234): 
        Filesystem   space   quota   limit   grace   files   quota   limit   grace
       cslab:/home   4519M*  4096M   5120M   09:47    6155       0       0 

du

   /home/1234$ du -mad 1
   ...
   936     total

我不明白为什么会quota说我正在使用4.5GB,而du只有0.9GB。我还检查了我拥有的文件,/tmp并且那里有50MB的文件。其他3.5GB的文件可能在哪里?配额系统是否有可能需要重新设置?


Answers:


2

我相信某些进程可能仍在打开某些文件。您可以尝试使用列出它们,

lsof | grep username | grep deleted

更好的版本是使用

lsof +L1 | grep username

但是,有时输出之间可能存在差异,du并且quota在此链接中对此进行了说明。从链接摘录,

在Unix中,du和quota命令可能报告不同的值。出现这种差异的原因是,遍历文件系统,检查配额和更新使用情况表的过程仅在特定时间运行。因此,配额检查之间会有一段时间,配额-v命令将报告错误的磁盘使用情况。使用du命令可获取有关文件大小的最准确信息。


我已经尝试过了,但是没有打开的已删除文件。
布兰登·克莱门茨

@BrandonClements,链接有用吗?
Ramesh 2014年

该链接很有用,我不认为配额只是定期更新。我将不得不等待,看看这是否确实是我的问题,但我认为是。您能否将链接和简短说明移至答案中。
布兰登·克莱门茨

@BrandonClements,已更新。如果您需要更多信息,请与我们联系!
Ramesh 2014年

好像它整夜都固定了。对于其他阅读此答案的人,我会注意到删除小文件似乎对我的配额有立竿见影的效果,因此我不确定情况是否如此。确实如此。
布兰登·克莱门茨2014年

2

quota 通过查询文件系统中文件实际占用的块来工作。

du 通过递归扫描文件来工作。

两种方法可能会产生不同的结果。例如,当您“删除”文件时,列出目录时该文件将不再可见。但是,直到关闭磁盘上的最后一个文件句柄,磁盘上的块才真正释放。在这种情况下,该文件对不可见du,但仍计入您的配额。

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.