Rain Wiki · Linux

inodeと「No space left on device」

inodeとは何か、df -iコマンドでinodeの使用状況を確認する方法、および数百万の小さなファイルを含むディレクトリを特定する方法について解説します。

Linux · Rain Wiki

inodeは、Unix系ファイルシステムにおいて、ファイルの所有者、権限、サイズ、データが保存されている場所などの情報を格納するために使用されるデータ構造です。各ファイルは1つのinodeを使用し、多くのファイルシステムではinodeの総数が固定されているため、数百万もの小さなファイルが存在すると、df -hコマンドでは空き容量があるように見えても「No space left on device」エラーが発生することがあります。

確認方法

「df -i」コマンドは、ファイルシステムごとのinodeの総数、使用数、空き数を一覧表示します。「ls -i」コマンドはファイルのinode番号を表示し、「stat <file>」コマンドはinodeの詳細情報を表示します。

一般的な原因

Webアプリケーションのセッションディレクトリやキャッシュディレクトリ、メールキュー、ローテーションされていない小さなログファイル、ビルドキャッシュなどが、数百万ものファイルを作成する原因となることがあります。

ディレクトリの特定

GNU duコマンドでinodeをカウントできます。「du --inodes -x / | sort -n | tail」を実行すると、エントリ数が多いディレクトリが一覧表示されます。

inode枯渇の解決方法

  1. 確認: df -iを実行し、IUse%が100%に近いことを確認します。
  2. ディレクトリの特定: sudo du --inodes -x --max-depth=3 / | sort -n | tail -20
  3. 削除を行う前に、何がファイルを作成しているかを確認してください。
  4. 該当アプリケーションのツールを使用して古いファイルを削除するか、findコマンドを使用します。例: 「-delete」オプションを付けずにドライランを実行して確認した後、「find /path -type f -mtime +7 -delete」を実行します。

注意点

  • findコマンドを実行する際は、必ず最初に「-delete」を付けずに実行し、リストを確認してください。
  • ext4のinode数は、ファイルシステム作成時に固定されます。

出典

最終更新: 2026-10-08

関連記事