新Linux入門|ファイルの正体は“iノード”! Linuxのファイル管理の秘密

Linuxでファイルを扱うとき、私たちはファイル名を使って操作していますが、
実はその裏側では「iノード(アイノード)」という仕組みがファイルを管理しています。

この「iノード」は、ファイルシステムの中でファイルの正体ともいえる存在。
ファイル名は単なる“ラベル”にすぎず、ファイルの中身(実体)はiノードによって管理されています。

この記事では、AlmaLinux 9.6を使って、
「iノードとは何か?」「どうやって確認できるのか?」をやさしく解説していきます。

📘 iノードとは?

 iノード(index node) とは、Linuxファイルシステムが各ファイルやディレクトリを管理するために使用するデータ構造です。
つまり、ファイルそのものではなく、ファイルの情報(メタデータ)を保持する箱のようなものです。

iノードはファイルごとに1つずつ存在し、次のような情報を持っています。

区分説明
ファイルサイズとブロック情報ファイルがどれくらいの大きさで、ディスク上のどのブロックに保存されているかを保持します。
ファイルのメタデータ所有者、グループ、アクセス権限(rwx)、作成日時・最終アクセス日時・更新日時を記録します。
ファイルタイプとパーミッション通常ファイル、ディレクトリ、シンボリックリンクなどの種別と、それに対応するパーミッション情報を含みます。
ファイルの所有者情報所有するユーザーID(UID)とグループID(GID)を保持します。

💡 ポイント
ファイルの内容(データ)はiノードに直接保存されるわけではなく、
iノードが「データブロック」へのポインタを持ち、そこから実データを参照する仕組みです。

🧱 iノードとファイル名の関係

ファイル名とiノードの関係を一言で言えば、
ファイル名はiノードへのリンク」です。

ファイル名そのものは、実際のファイルデータを指しているわけではなく、
ディレクトリ内で“iノード番号”とセットで管理されています。

要素役割
ファイル名iノードを指すラベル(人間が識別しやすい名前)
iノード番号ファイルシステムが実体を特定するための番号
実データディスク上のブロックに保存される内容

たとえば、ファイル名を変更しても、
iノード番号が変わらなければファイルの実体(中身)は同じままです。

🔍 iノード番号を確認してみよう

iノード番号を確認するには、ls コマンドに -i オプションを付けます。
この番号がファイルの「正体番号」です。

使用例

[suzuki@AlmaLinux ~]$ ls -i
53625418 data    16253141 memo.txt    17235178 program.py    17325252 sample.html

出力結果の意味

iノード番号ファイル名
53625418data
16253141memo.txt
17235178program.py
17325252sample.html

📘 説明
この結果から、memo.txt は iノード番号「16253141」で管理されていることが分かります。
ファイル名はこの番号を通してiノードを参照しており、
システムはこのiノード番号を使って実際のデータを読み書きします。

🧠 iノードの数はファイル数の上限を決める!

ファイルシステムには、作成時に決まるiノードの総数があります。
これは「最大でいくつのファイルを作成できるか」を決定する要素です。

状況説明
iノードが十分にある新しいファイルを作成できる
iノードが枯渇しているディスクに空き容量があっても新しいファイルを作成できない

💡 たとえば
ログファイルが大量に生成される環境では、
iノードの枯渇が原因でファイル作成に失敗することもあります。

🖥️ iノードに関する便利なコマンド

Linuxでは、iノード情報を確認するためのコマンドがいくつかあります。
代表的なものをまとめてみましょう。

コマンド説明使用例
ls -iファイルごとのiノード番号を表示ls -i sample.txt
stat詳細なメタデータ(iノード番号・アクセス権限・更新時刻など)を表示stat sample.txt
df -iファイルシステムのiノード使用状況を確認df -i

出力例(stat)

[suzuki@AlmaLinux ~]$ stat memo.txt
  File: memo.txt
  Size: 2048       Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d Inode: 16253141    Links: 1
Access: (0644/-rw-r--r--)  Uid: (1000/suzuki)   Gid: (1000/suzuki)
Access: 2025-10-28 21:40:11.000000000 +0900
Modify: 2025-10-28 21:39:58.000000000 +0900
Change: 2025-10-28 21:39:58.000000000 +0900
 Birth: -

📘 解説
ここで表示されている「Inode: 16253141」が、
memo.txt に対応するiノード番号です。
また、ファイルサイズ、所有者、アクセス権限、更新日時といった情報もこのiノードに含まれています。

✅ まとめ:ファイルの裏側には“iノード”がいる!

iノード は、Linuxファイルシステムがファイルを管理するうえで欠かせない存在です。
ファイル名は単なるラベルに過ぎず、
実際のファイルの正体は、このiノードが持つメタデータ情報にあります。

💡 覚えておきたいポイント

  • 各ファイルには一意の iノード番号 が割り当てられる
  • ファイル名は iノード を指すリンク(参照)
  • ls -i や stat コマンドで iノード情報を確認できる
  • iノードが不足すると、ディスク容量があっても新しいファイルは作れない

次回ファイルを作成するとき、
その裏で「iノード」が静かに仕事をしていることを思い出してみてください。