lsof处理df和du大小不一致的问题-创新互联
APP服务器根满了,一直报警
成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计制作、成都网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的托克逊网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!df显示根分区已经使用了90%的空间,但是du根分区总和只有40G左右,该分区应该没有大量小文件,所以应该不会产生大量小文件导致的block写满的问题.
网上搜了下发现有可能是有程序操作大文件导致文件句柄没有释放,这些被程序占用着的文件句柄会被df认为是存在硬盘上的.
网上是这么解释的:
du是把目录下所有的文件统计另起来,而df是从文件系统考虑,统计被分配出去的空间,并且包括被程序申请占用的空间.
如果看来,/目录下应该有大量空间被某个程序占用了.
处理方法 lsof /|grep delete
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mongod 2842 root 15u REG 251,0 536870912 6296116 /var/lib/mongodb/vida_log.3 (deleted)
mongod 2842 root 16u REG 251,0 536870912 6306826 /var/lib/mongodb/vida_log.4 (deleted)
mongod 2842 root 10u REG 251,0 536870912 6345649 /var/lib/mongodb/vida_log.0 (deleted)
mongod 2842 root 11u REG 251,0 536870912 6345658 /var/lib/mongodb/vida_log.1 (deleted)
mongod 2842 root 12u REG 251,0 536870912 6345659 /var/lib/mongodb/vida_log.2 (deleted)
ruby 25149 vidafm 3w REG 251,0 5594054 7351133 /var/www/vida_api_120614/log/development.log.4 (deleted)
ruby 26599 vidafm 3w REG 251,0 5594054 7351133 /var/www/vida_api_120614/log/development.log.4 (deleted)
nginx 9388 nobody 82u REG 251,0 90112 6162236 /opt/nginx/client_body_temp/0004778814 (deleted)
可以看到SIZE这行的文件都特别大,而且已经是delete状态,说明文件已经被删除但是文件句柄未被程序释放.
kill掉这些进程即可释放空间
重新df -h后发现可用空间已经变为了90G+了,非常舒服.
网上对df和du的另一种解释
du -sh命令通过将指定文件系统中所有的目录,符号链接和文件使用的块数累加得到该文件系统使用的总块数
而df命令通过查看文件系统磁盘块分配图得出总块数与剩余块数.
文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如i节点,磁盘分布图,间接块,超级块等.这些数据对大多数用户级的程序来说是不可见的,通常称为Meta Data.
du命令是用户级的程序,它不考虑Meta Data,而df命令则查看文件系统的磁盘分配图并考虑Meta Data.
因此正常情况下,df计算的USED空间会比du计算的结果要稍大.
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
名称栏目:lsof处理df和du大小不一致的问题-创新互联
新闻来源:http://scyanting.com/article/ddghsj.html