HestiaCP 怎麼查Inode 佔用?磁碟明明有空間卻寫不進文件的元兇

前兩天有個朋友半夜給我發訊息,說他的伺服器炸了。

具體症狀特別詭異,網站突然開始報錯,日誌也寫不進去,新檔案直接提示磁碟已滿。

但他df -h 一看卻嚇了一跳,磁碟明明還躺著大幾十G 的空閒空間,怎麼就滿了呢。

我當時就跟他說,兄弟,你這不是空間滿了,你是Inode 爆了。

他回了我一個問號,Inode 到底是個啥。

其實很多人第一次踩這個坑的時候,反應都跟他一模一樣,因為學校裡壓根沒人教過這玩意。

先把Inode 這回事說清楚

你把它想成圖書館的索引卡,一下就好懂了。

磁碟空間相當於書架,能擺多少本書看的是容量,這大家都好理解。

Inode 相當於每一本書對應的那張索引卡,記錄著它叫什麼、放在哪裡、誰動過。

在Linux裡,每一個檔案、每一個目錄,都得佔用一個Inode,不管這個檔案有多小。

就算是個空文件,系統也認認真真給牠吃掉一個索引卡。

系統能建立的檔案總數是有上限的,這個上限就是Inode 總數。

一旦Inode 用光,就算你的磁碟還空著幾百G,作業系統也拒絕再新建任何檔案。

日誌寫不進、快取建不了、網站直接癱瘓,就是你看到的詭異場面。

說真的,這個坑特別陰,因為它報錯的地點根本不在你盯著看的地方。

第一招,df -i 一眼看全局

在HestiaCP環境裡,你直接SSH 進終端,敲這一行就行。

df -i

它會把每個掛載分區的Inode 總數、已用數、剩餘數一股腦列出來。

輸出裡面有個欄位叫IUse%,這就是你該盯的關鍵指標。

哪個分割區的IUse% 到了100%,就算那個分割磁碟空間還富餘,它也已經沒辦法再新建任何檔案或是日誌了。

我當時就建議那個朋友先跑這個,一秒定位是不是Inode 的問題,比瞎猜快多了。

第二招,find 精準數某用戶

確認是Inode 的問題之後,下一步就是找出底誰在瘋狂吃索引卡。

HestiaCP 每個使用者都有獨立的主目錄,你直接數某個網站目錄下的檔案和目錄總量就行。

find /home/用户名/web/你的域名/public_html | wc -l

把「使用者名稱」和「你的網域」換成你真實的路徑,終端返回的那個純數字,就是該目錄下所有檔案和資料夾的總和。

一個檔案或目錄,就對應一個Inode,所以這個數就是它的Inode 佔用。

HestiaCP 怎麼查Inode 佔用?磁碟明明有空間卻寫不進文件的元兇

如果你懶得一個一個查,想一次看全站所有用戶的佔用分佈,也有一行循環指令。

for d in /home/*; do echo -n "$d: "; find "$d" 2>/dev/null | wc -l; done

這行會把/home 下每個使用者目錄的檔案總數都打出來,誰家目錄異常偏高,一眼就能揪出來。

第三招,揪出吃Inode 最多的子目錄

有時候你已經知道某個網站Inode 高得離譜,但滿螢幕檔案根本不知道問題出在哪。

這種時候就要往下鑽一層,找出聚集了大量小檔案的子資料夾,像是快取目錄、會話目錄、日誌目錄這些重災區。

find /home/用户名/web/你的域名/public_html -type d -exec sh -c 'echo -n "{}: "; find "{}" -maxdepth 1 | wc -l' \; | sort -n -r -k 2 | head -n 10

這串指令會把佔用檔案最多的前10 個子資料夾排出來。

排在清單最前面的那個路徑,就是大量小文件紮堆的地方。

我當時就跟朋友說,八成是某個快取插件在偷偷生小文件,跑完這行基本上就能實錘。

第四招,repquota 看配額上限

如果你的伺服器啟用了Linux 檔案系統配額,那還能換一個視角看問題。

repquota -a

這條指令會把所有使用者的檔案數量限制和實測佔用都拉出來。

重點看輸出裡的File Limits 區域,used 欄位就是已經用了多少個檔案。

soft 和hard 欄位就是軟硬限制閾值,一旦used 頂到hard,系統就直接開始拒絕新建檔案。

這跟你磁碟還剩多少空間,完全是兩個維度的故事。

收個尾,把排查思路串起來

回到開頭那個半夜炸服的朋友。

他照我說的四步走了一遍,先是df -i 確認Inode 真滿了。

再用find 定位到是某個遺棄舊站的快取目錄在瘋狂生小檔案。

最後repquota 一看,果然頂到了hard 限制。

清理掉那堆垃圾快取之後,網站當場就活過來了。

所以下次再遇到「磁碟明明有空間卻寫不進檔案」這種詭異場面,別急著加硬碟。

先df -i 看一眼Inode,很可能真相就藏在那張你從來沒注意過的索引卡上。

我真的覺得,這種藏在系統底層的小常識,比背一百條優化清單都有效。

希望陳溈亮部落格(https://www.chenweiliang.com/) 分享的《HestiaCP 怎麼查Inode 佔用?磁碟明明有空間卻寫不進文件的元兇》,對您有幫助。

歡迎分享本文連結:https://www.chenweiliang.com/cwl-34619.html

想解鎖更多隱藏秘技🔑,歡迎加入Telegram頻道!

喜歡就分享和按讚!您的分享與按贊,是我們持續的動力!

 

發表評論

您的郵箱地址不會被公開。必填項已用*標註

回到頁首