1. 程式人生 > >linux No space left on device 問題解決

linux No space left on device 問題解決

問題:網站無法登陸,上傳檔案失敗 …

查詢問題:
  1. 檢視日誌,出現如下錯誤:
PHP Warning:  session_start(): open(/var/tmp/php/session/sess_s0enu22sojitqshbm6bs4dsf95, O_RDWR) failed: No space left on device (28) in /var/www/sites/prod/include.inc.php on line 2, referer: http://www.yuming.com/photodetail.php?id=ozx6G1zs/Ti00C6Rk/A&from=groupmessage

問題是磁碟空間不足,無法寫入session,這種原因通常是檔案空間不足或者檔案索引被佔用完
2. 檢視磁碟空間資訊

df命令用於顯示磁碟分割槽上的可使用的磁碟空間。預設顯示單位為KB。可以利用該命令來獲取硬碟被佔用了多少空間,目前還剩下多少空間等資訊。

[root@srv-web1 tkont]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda1             20G  3.9G   15G  21% /
tmpfs                 1.9G     0  1.9
G 0% /dev/www 158G 42G 109G 28%

發現空間是足夠的,然後df -i 查看了下inodes,發現根目錄下的inodes值使用率為100%了

[root@srv-web1 tkont]# df -ih
Filesystem   Inodes  IUsed  IFree IUse% Mounted on
/dev/xvda1    1.3M    1.3M    0k   100% /
tmpfs         479K  1  479K  1% /dev/shm
/dev/www      10M 373K 9.7M  4% /var/www/sites
解決問題

通過以下指令碼進行檢查,檢視到底哪個目錄下面的檔案最多,依次定位到最終最大的那個目錄

for i in /*; do echo $i; find $i | wc -l; done

將大檔案刪掉,如果直接用rm -rf 會報錯/bin/rm Argument list too long,用xargs 去避免這個問題

ls | xargs -n 10 rm -rf

然後登陸系統,問題最終解決!

問題總結

該問題從發現到解決總共花掉30分鐘,定位問題相對容易,就是因為垃圾檔案長時間沒清理,導致清理檔案花太多的時間,為了避免該類問題,最好對系統的垃圾檔案進行定時清理,或者部署監視系統。