Linux By Victor

Inode 耗盡:磁碟明明還有空間卻無法寫入?

隱形的儲存殺手

身為維運人員,你一定遇過 df -h 顯示還有 50% 空間,但 touch 檔案卻報錯 "No space left on device"。

原因:檔案系統的 Inode (索引節點) 用光了。這通常發生在伺服器產生了數百萬個極小的暫存檔或 Session 檔 (例如 PHP 的 session 目錄或是 Postfix 的 mail queue)。

解決 SOP

  1. 使用 df -i 確認 Inode 使用率。
  2. 使用 for i in /*; do echo $i; find $i | wc -l; done (需小心效能) 或 du --inodes 找出哪個目錄檔案數最多。
  3. 刪除大量小檔案時,避免直接 rm * (會參數過長),建議用 find . -type f -delete