inode(アイノード)とは | 意味や読み方など丁寧でわかりやすい用語解説

inode(アイノード)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

アイノード (アイノード)

英語表記

inode (アイノード)

用語解説

inodeは、LinuxやUNIX系のオペレーティングシステムで利用されるファイルシステムにおいて、ファイルやディレクトリに関する様々な管理情報を保持するためのデータ構造である。ファイルシステム上に存在するすべてのファイルとディレクトリは、それぞれを識別するための一意の番号を持っており、これをinode番号と呼ぶ。我々が普段目にするファイル名は人間が識別しやすいように付けられた別名に過ぎず、システム内部ではこのinode番号によってファイルが管理されている。inodeの最も重要な特徴は、ファイルの実データそのものではなく、ファイルの属性情報、すなわちメタデータを格納している点にある。これには、ファイルの所有者、アクセス権限、作成日時、ファイルサイズといった情報が含まれる。そして、ファイル名とinode番号の対応関係は、ディレクトリという特殊なファイルの中に記録されている。このように、ファイル名と、そのファイルの実体であるメタデータやデータ本体とを分離して管理する仕組みが、inodeを基本とするファイルシステムの根幹をなしている。

inodeに格納されている詳細な情報には、いくつかの重要な項目がある。まず、ファイル種別を示す情報である。これが通常のファイルなのか、ディレクトリなのか、あるいはシンボリックリンクのような特殊なファイルなのかを識別する。次に、アクセス権限、いわゆるパーミッション情報がある。これは、ファイルの所有者、所属グループ、その他のユーザーそれぞれに対する読み取り、書き込み、実行の可否を定義する。さらに、ファイルの所有者を示すユーザーID(UID)と、所有グループを示すグループID(GID)も記録される。ファイルの大きさを示すファイルサイズ、そしてファイルが最後にアクセスされた日時、内容が最後に変更された日時、inode情報自体が最後に変更された日時という3種類のタイムスタンプも保持する。また、このinodeを参照しているファイル名がいくつ存在するかを示すリンクカウントという数値情報も含まれる。そして最も重要なのが、ファイルの実データがディスク上のどこに保存されているかを示すポインタである。このポインタは、データを格納しているデータブロックのアドレスを指し示している。ファイルサイズが大きくなると複数のデータブロックにまたがってデータが保存されるが、inodeはそれらのデータブロック群を効率的に指し示すための複雑なポインタ構造を持っている。

ファイル名とinodeの関係を理解することは、Linuxのファイル操作を深く知る上で不可欠である。ディレクトリは、その内部に「ファイル名とinode番号の対応表」を持っている。ユーザーが特定のパスでファイルにアクセスしようとすると、OSはパスを先頭から順に辿り、各階層のディレクトリの対応表を参照して次のinode番号を特定する。最終的に目的のファイル名に紐づくinode番号を見つけ出し、そのinodeに記録されたメタデータとデータブロックのポインタを利用してファイルへのアクセスを実現する。この仕組みにより、ハードリンクという機能が可能になる。ハードリンクとは、一つのinodeに対して複数のファイル名を関連付ける機能のことである。ハードリンクを作成すると、ディレクトリ内に新しいファイル名と既存のinode番号のペアが追加され、inode内のリンクカウントが1つ増加する。どのファイル名からアクセスしても、同じinode、つまり同じ実データを参照することになる。

ファイルの削除操作もinodeと深く関連している。ユーザーがファイルを削除するコマンドを実行すると、実際にはディレクトリファイルに記録されている「ファイル名とinode番号の対応」が削除される。そして、該当するinodeのリンクカウントが1つ減少する。このリンクカウントが0になった時点、つまり、そのinodeを指し示すファイル名が一つもなくなった時点で、ファイルシステムはそのinodeと、それが指し示していたデータブロックを解放済みの領域としてマークする。これにより、ディスク上の領域が再利用可能になる。リンクカウントが1以上残っている間は、たとえ一部のファイル名が削除されても、inodeと実データはディスク上に保持され続ける。

最後に、inodeの数には上限があるという点も重要である。ファイルシステムを作成する際に、ディスク領域の一部がinodeを格納するための領域として確保される。この領域のサイズによって、そのファイルシステム上に作成できるファイルとディレクトリの総数が決定される。そのため、ディスク全体の容量にまだ空きがあっても、inodeをすべて使い切ってしまうと、それ以上新しいファイルやディレクトリを作成できなくなるという「inode枯渇」と呼ばれる問題が発生することがある。これは、特にサイズの小さいファイルを大量に生成するようなシステムで注意が必要な現象である。ファイルシステムにおけるinodeの使用状況は、dfコマンドに-iオプションを付けて確認することができる。

関連コンテンツ