🐧 Linux 総合学習プラットフォーム

容量は空いているのに No space left on device が出る(inode枯渇)

症状(よく出るエラー)

ファイル作成時に No space left on device が出るが、df -h を見ると使用率は50%程度で空きは十分ある。touch で空ファイルを1個作るのすら失敗する。

原因

ext4 などのファイルシステムは、データ領域とは別に「ファイル1個につき1つ必要な管理情報=inode」の数を作成時に固定で確保している。セッションファイルやキャッシュ、メールキューのように小さいファイルが何百万個も溜まると、容量より先に inode が尽きる。df -h が見ているのはバイト数だけなので、この状態を見抜けない。

直し方

df -i を実行して IUse% が100%になっていれば inode 枯渇が確定。次に for d in /var/* /tmp; do echo "$d: $(find $d -xdev -type f 2>/dev/null | wc -l)"; done のような数え上げや du --inodes(GNU系)で、ファイル数の多いディレクトリを特定する。原因は大抵キャッシュや一時ファイルの溜め込みなので、該当ディレクトリを削除し、cron やアプリ設定で定期削除(ローテーション)を仕込んで再発を防ぐ。

▶ 学習アプリでしっかり学ぶ