「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

iノード番号

pointこの用語のポイント

pointiノードに割り振られる番号だよ

pointiノードを識別するときに使うよ

pointUNIX系の話で出てくるよ

point数に上限があるよ

スポンサーリンク

簡単に書くよ

iノード番号(読:アイノードバンゴウ 英:inode number)とは

主にUNIX系で使われる、ファイルやディレクトリの属性情報が書いてあるデータ(iノード)に割り当てられる番号
であり

iノードを識別するための番号
です。


image piyo

詳しく書くよ

順番に見ていきましょう。
まずは予備知識として「iノード」について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。

iノードは「ファイルディレクトリの所有者や更新日時、ファイルサイズなどの属性情報が書かれているデータ」です。

例えば、そうですね。

ピヨ太君がファイルを作りました。

iノード番号

ファイルの中にはデータが入っています。

iノード番号2

ファイルを構成する要素は、中に入っているデータ以外にもあります。
例えば

・所有者
・更新日時
・ファイルサイズ
アクセス権


などの情報です。

これらの属性情報は、実はファイルの中には ありません。
別のところに置いてあります。

iノード番号3

この、別のところに置いてある

ファイルの属性情報をまとめたデータ

がiノードです。

iノード番号4

以上を踏まえて

iノードに割り当てられる識別用の番号

が「iノード番号」です。

iノード番号5

iノード番号はiノードとファイル名などを関連付けるときに使われます。

例えば、そうですね。
ピヨ太君が「/tmp」ディレクトリの中にファイル「hoge.txt」を作ったとしましょう。

iノード番号6

そうすると、まず「hoge.txt」の中身のデータが、どこかに置かれます。

iノード番号7

次に「hoge.txt」の属性情報(iノード)が、どこかに置かれます。

iノード番号8

iノードの中には、ファイルの属性情報と「ファイルの中身は、どこにあるよ!」が書いてあります。
また、iノードには識別するための番号が割り振られます。
この識別するための番号がiノード番号です。
今回の例では、iノード番号は「1」だったとしておきましょう。

iノード番号9

最後に「/tmp」ディレクトリの中にiノード番号とファイル名が保管されます。
具体的には、iノード番号「1」とファイル名「hoge.txt」が保管されます。

iノード番号10

さて、ピヨ太君が「/tmp」ディレクトリの中の「hoge.txt」を開きました。

iノード番号11

コンピュータさんは、まず「/tmp」ディレクトリの中を見ます。
そうすると、iノード番号「1」とファイル名「hoge.txt」が見つかります。

iノード番号12

「hoge.txt」のiノード番号は「1」だと分かりました。
次に、iノード番号が「1」のiノードを見ます。

iノード番号13

これで「hoge.txt」の属性情報が分かりました。
そういえば、iノードには「ファイルの中身は、どこにあるよ!」が書いてありましたね。

コンピュータさんは、iノードの中に書いてあった「ファイルの中身は、どこにあるよ!」な情報をもとにしてファイルの中身を見ます。

iノード番号14

これで「hoge.txt」の

・ファイル名
・属性情報
・中身のデータ


が揃いました。

順番万端ですね。
実際に「hoge.txt」を開きます。

iノード番号15

まとめると、ファイルの属性情報をまとめたデータがiノードです。
iノードには実データの場所も書いてあります。

iノードには識別するための番号が割り当てられます。
iノード番号です。

ディレクトリの中にはファイル名とiノード番号が保管されています。

ファイルの情報が必要になったら

1.ファイル名からiノード番号をたどる
2.iノード番号からiノードをたどる
3.iノードから実データをたどる


の順番で集めます。

これがiノードを使ったファイル管理の流れであり、iノード番号の役割です。
iノードを識別するため、iノードを他の情報と関連付けるために使われます。

ファイルに割り当てられたiノード番号を確認したい場合は

ls -i

を実行してください。
lsコマンドはファイルやディレクトリの一覧を表示するコマンドです。
「-i」オプションはiノード番号も表示するオプションです。

例えば

ls hoge.txt

の実行結果が

hoge.txt

だったとしましょう。

ls -i hoge.txt

の実行結果は

201412369 hoge.txt

のような形になります。
先頭の

201412369

がiノード番号です。

なお、iノード番号には上限があります。
上限を超えると、ファイルが作れなくなります。

例えば、iノード番号の上限が3だったとしましょう。
最初の状態では、1から3まで、すべて空いています。

iノード番号16

ファイルを3つ作ると、iノード番号の空きがなくなります。

iノード番号17

空いているiノード番号がなくなったら、新しいファイルを作れません。
いらないファイルを削除して、iノード番号に空きを作る必要があります。

iノード番号18

iノード番号の空きを確認するコマンドは

df -i

です。
私の環境(CentOS 7)で実行したところ、以下の結果が表示されました。

ファイルシス              Iノード I使用     I残り I使用% マウント位置
/dev/mapper/centos-root  52428800 29491  52399309     1% /
devtmpfs                   231817   422    231395     1% /dev
tmpfs                        234381     1    234380     1% /dev/shm
tmpfs                        234381   490    233891     1% /run
tmpfs                        234381    13    234368     1% /sys/fs/cgroup
/dev/mapper/centos-home 101183488    18 101183470     1% /home
/dev/sda1                  512000   337    511663     1% /boot
tmpfs                        234381     1    234380     1% /run/user/0


少し見にくいですが「I使用%」は、すべて「1%」になっています。
この様子だと、まだまだ使い切る心配は、なさそうですね。

あまり気にする必要はないと思いますが、サイズの小さいファイルを たくさん作ると、ディスク容量に空きがあってもファイルを作れなくなります。
iノード番号の空きが、なくなるからです。
一応、頭の片隅に置いておいてあげてください。


image piyo2

一言でまとめるよ

まぁ「iノード番号」って単語が出てきたら「iノード(ファイルやディレクトリの属性情報が書いてあるデータ)に割り当てられる識別用の番号なんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像063
書籍画像068

おまけ

■訳してみるよ

「i(アイ)」はアルファベットの「i」です。
「index(インデックス)」の頭文字だという説明を見つけましたが、ウソかホントかは知りません。
ちなみに「index(インデックス)」の意味は「指標」とか「指針」とか「索引」とか「見出し」とかです。
「node(ノード)」の意味は「節」とか「節点」とか「結節」とか「集合点」とかです。
「番号」は日本語ですね。
何となく くっつけると

iの節の番号

となります。




書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本
つくって、壊して、直して学ぶ Git&GitHub 入門
体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践