關於Linux磁碟被佔滿的問題,之前在使用WDCP面板時有遇到過,因為在面板後台開啟了網站日誌,但是日誌沒有定期刪除,長此以往導致了VPS主機的磁碟空間被日誌佔滿了。當磁碟空間達到100%時,網站就會出現一些莫名的錯誤,例如後台無法登錄,無法評論以及頁面空白等等。

不過最近在維護網路監控平台ping.wzfou.com時,發現磁碟空間還有不少,但日誌中依然報No Space Left on Device錯誤。經過排查,終於發現是Linux磁碟的inode被用完了,導致網站無法繼續寫入新的數據,最終的後台就是Smokeping也運作不正常,報表都無法顯示。

不管是磁碟空間還有磁碟的inode空間,只要被佔用滿了都會造成網站的不穩定。有時候我們可能沒有懷疑到這一點,可能還會去尋找它的問題。磁碟被佔滿最嚴重可能還會導致S#S¥H也無法進入,這時需要我們從VPS面板中執行釋放磁碟空間的相關操作了。

Linux系統磁碟空間佔滿的解決方案-No Space Left on Device錯誤

這篇文章就來分享Linux系統磁碟空間佔滿的解決辦法,主要還是記錄一下查找磁碟空間指令的使用方法,以備日後不時之需。更多的Linux指令使用方法,這裡還有:

  1. 三個命令工具Rsync,SCP,Tar-快速解決VPS遠端網站搬家與資料同步
  2. Linux系統監控指令整理總表-掌握CPU,記憶體,磁碟IO等找出效能瓶頸
  3. Linux Crontab指令定時任務基本語法與操作教學-VPS/伺服器自動化

PS:2019年2月22日更新,當磁碟空間已經即將用盡時,這時候就要考慮擴容硬碟了:Linux VPS主機硬碟擴容方法-VPS新硬碟分割區掛載和硬碟動態擴容。

一、解決磁碟空間佔用100%問題

1.1  查看目前磁碟剩餘空間

指令:df -h,使用這個指令可以看到目前VPS主機的磁碟空間還有多少了,如果看到佔用達到90%以上,這時你就要清理一下空間了。

二、 解決磁碟inode佔用100%問題

2.1  查看inode佔用情況

硬碟格式化的時候,作業系統會自動將硬碟分成兩個區域。一個是資料區,存放檔案資料;另一個是inode區(inode table),存放inode所包含的資訊。每個inode節點的大小,一般是128位元組或256位元組。 inode與資料儲存對應關係如下:

使用指令df -ia可以查詢目前inode佔用情況:

2.2  找出inode佔用大的目錄

使用下列指令計算出目前目錄下各個資料夾佔用inode情況:


#当前各大文件夹占用inode情况
for i in /var/*; do echo $i; find $i |wc -l; done
#排序
sudo find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n

多次使用以上指令就可以查出特定的佔用大inode的目錄了,然後上面的方法刪除檔案或資料夾即可。

三、總結

inode一般來說是用不完的,除非是程式產生大量的日誌,例如本次wzfou.com遇到的問題是/var/spool/postfix/maildrop/ 中有大量的文件,這是因為postfix運行不正常導致的。當然如果sendmail或postfix正常運行,則會在/var/mail目錄下也會堆積大量的郵件。

如果不用sendmail或postfix的話,建議直接刪除或卸載它們:

apt-get remove sendmail*
yum remove sendmail
或者
yum remove postfix
sudo apt-get remove postfix
sudo apt-get remove --auto-remove postfix

有些朋友想到可以用腳本來監控VPS主機的inode使用情況,其實挖站否之前介紹的Zabbix可以實現伺服器的inode監控,詳細見:Zabbix安裝與使用-強大的伺服器效能監控工具掌控伺服器軟硬體資源。

發表評論