我试图追查我的硬盘空间在哪里。 我有1TB的总空间,根据我的系统,使用了433GB。 不过,我知道我有更多,因为我没有任何我知道的大文件或文件夹。 以下显示前10个目录。
du -cks *|sort -rn|head
它说/ var文件夹占用了480GB,但当我进入该文件夹时,没有什么大的(我从root或'/'w / su权限运行这个)。
我错过了什么? 有没有隐藏的文件,该代码不能拿起? 作为参考,我正在使用opensuse 11.3,如果这样做差异。
如果按照build议执行recursion操作,并计算整个var树的所有空间,并且不加上使用的总数,则可能需要检查未打开的文件句柄。 这可能发生在不正确的logrotate脚本中,这些脚本会删除或移动仍在写入的日志。 你取消链接文件(删除inode,因此ls不再报告),但是这个过程仍然在写入。
lsof通常不是一个标准的安装,所以你必须通过OpenSuse使用的任何方法安装它,然后运行: lsof +L -a /var
你会看到输出
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME httpd 32287 apache 14w REG 253,7 3020256 1 121 /var/log/httpd/access_log
将会出现许多文件,但是您要查找的是在大小列中具有较大值,在NLINK列中为0(并且未标记为已删除)的文件。 该文件仍在写入,但不再链接。
您可以通过终止打开未链接文件句柄的进程来更正它。
所有这一切意味着你没有find所有空间正在使用的文件。 发现它应该是微不足道的,因为如果dufind它在最高层,那么它就坐在文件系统上。
如果du -s /directory显示使用的空间,但是du -s /directory/*没有,那么问题就直接隐藏在(“以。”开始)文件或目录中。 如果df和du之间存在差异(大于可以通过舍入差异来解释),那么您已经删除了但未发布的文件占用空间。
量子,你的答案帮我把它钉住了…原来是/ var / lib / mysql文件夹…现在,我需要弄清楚该怎么做瓦特/ …
你用过MySQL复制吗? 如果是这样 ,也许二进制日志填满你的硬盘。 它可以通过从mysql>提示符中设置expire_logs_days自动删除:
mysql> set global expire_logs_days = 7;
(也改变my.cnf使它永久)
你应该设置它不低于你的奴隶可能落后于主人的最大天数。
如果不是 ,继续检查/var/lib/mysql所有数据库。
你有什么东西挂在/ var ?
可能存在隐藏在“挂载点”下的数据。
mkdir /var/test dd if=/dev/zero of=/var/test/data.dat bs=1M count=16
现在在/ var / test上挂载一些东西 – 你不会看到缺less的16MB的地方。