【アイノード】

inode(アイノード) とは?

最終更新:
💡 名前の対応表と、ファイルの情報を分ける

LinuxやUnix系のファイルシステムで、ファイルの種類・所有者・権限・時刻などを管理する仕組み。ファイル名とinode番号の対応はディレクトリエントリが持ち、番号の一意性は同じファイルシステム内に限られます。

📌 このページのポイント
inode:名前と、ファイルの情報を分けるディレクトリreport.txtbackup.txtinode #123所有者・権限サイズ・時刻データへの情報同じファイルの内容名前が2つでも、独立したコピーではない番号は、同じファイルシステム内で一意
同じファイルシステム内のハードリンクの例です。名前はディレクトリエントリにあり、矢印は参照です。backup.txtという名前でも更新前の内容を保存する独立したバックアップではありません。
ひよこ ひよこ
inodeはファイルの名前?
ペンギン先生 ペンギン先生
名前そのものではないよ。ファイルの種類、所有者、権限、サイズ、時刻などの情報を管理する仕組みだね。ディレクトリエントリがファイル名とinode番号を対応させる。番号は同じファイルシステム内で一意だけれど、別のファイルシステムでは同じ番号があり得るよ。
ひよこ ひよこ
同じinodeを指す名前が2つあったら?
ペンギン先生 ペンギン先生
ハードリンクだよ。たとえばreport.txtとbackup.txtが同じinodeを指すなら、名前は2つでも同じファイルの内容と情報を共有する。バックアップの独立したコピーとは違い、内容を書き換えれば両方の名前から同じ変更が見えるんだ。
ひよこ ひよこ
名前を1つ削除したら内容も消える?
ペンギン先生 ペンギン先生
別のハードリンクが残っていれば、そこから引き続き使える。最後の名前を削除しても、プロセスが開いている間は内容が残ることがあるよ。Linuxでは最後の開いた参照も閉じられてから領域が再利用可能になるんだ。
ひよこ ひよこ
ctimeは作成した日時?
ペンギン先生 ペンギン先生
違うよ。ctimeは権限や所有者、内容などの変更に伴う状態の変更時刻だね。mtimeは内容の更新、atimeはアクセスに関わる時刻。作成時刻は対応するファイルシステムや取得方法で別に扱い、ctimeと混同しないことが大切だよ。
ひよこ ひよこ
容量はあるのにファイルを作れない?
ペンギン先生 ペンギン先生
inodeが足りない場合もある。ext系では作成時の設定と領域の大きさがinode数に関わるが、すべてのファイルシステムが同じ固定方式ではない。GNU/Linuxではdf -iで利用状況を確認できる。容量、inode、クォータなどを切り分けて調べよう。
もっと詳しく知りたい人へ

ハードリンクがあれば更新前の内容も保存できる?

同じファイルの内容を共有するため、そのまま上書きしても旧内容は保存されません。一方、アプリが新しいファイルを作って名前を置き換える保存方法では、名前が別のinodeを指すことがあります。保存方法と、独立したコピーやスナップショットの役割を確認してください。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「inode」って出てきたら「ファイルの情報を管理する仕組み」と思えばだいたいOK!名前とinodeの対応はディレクトリが持つよ。
📖 おまけ:英語の意味
「inode」 = ファイルの情報を管理するノード
💬 Unix系のファイルシステムで使われてきた名称です。番号とファイル名を分けて扱う仕組みとして理解し、特定のディスク形式やサイズが全実装で共通とは考えません。

参考資料

← 用語集にもどる