linux No space left on device 問題解決
阿新 • • 發佈:2019-01-28
問題:網站無法登陸,上傳檔案失敗 …
查詢問題:
- 檢視日誌,出現如下錯誤:
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分鐘,定位問題相對容易,就是因為垃圾檔案長時間沒清理,導致清理檔案花太多的時間,為了避免該類問題,最好對系統的垃圾檔案進行定時清理,或者部署監視系統。