您好,登錄后才能下訂單哦!
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計算的結果要稍大.
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。