/home、/usr、/varなどのディレクトリがすべて同じinode番号(2)を持つのはなぜですか?

/home、/usr、/varなどのディレクトリがすべて同じinode番号(2)を持つのはなぜですか?

私のルートディレクトリの下に同じinode番号を持ついくつかのディレクトリがあることがわかりました。

$ ls -aid */ .*/

2 home/ 2 tmp/ 2 usr/ 2 var/ 2 ./ 2 ../ 1 sys/ 1 proc/

私が知っているのは、ディレクトリ名が親ディレクトリに保存され、そのデータがディレクトリ自体のinodeに保存されることだけです。

私はここでとても混乱しています。

これが/home/user1というパス名を追跡するときに私が考えたことです。

  • まず、ディレクトリリストを含むルートディレクトリであるinode 2に移動します。
  • その後、homeという名前がinode 2とペアになっていることがわかりました。
  • それからディスクに戻ってinode 2を見つけますか?
  • ここにuser1という名前がありますか?

ベストアンサー1

異なるデバイスにあります。

出力を見ると、ファイルを含むstatデバイスも表示できます。

# stat / | grep Inode
Device: 801h/2049d      Inode: 2           Links: 24
# stat /opt | grep Inode
Device: 803h/2051d      Inode: 2           Links: 5

したがって、これら2つは異なるデバイス/ファイルシステムにあります。 Inode番号はファイルシステム内でのみ一意であるため、ここでは珍しいことはありません。 ext2/3/4 inode 2からまた、常にルートディレクトリだから、我々は彼らがそれぞれのファイルシステムのルートであることを知っています。

デバイス番号+ inodeの組み合わせは、システム全体で一意にすることができます。 (一部のファイルシステムには伝統的な意味のinodeはありませんが、その場所にある種の一意の識別子を偽造する必要があるとします。)

そこのデバイス番号は、デバイスノードに表示されたものと同じに見えるため、開かれた/dev/sda1ファイルシステムが保存されます。/

# ls -l /dev/sda1
brw-rw---- 1 root disk 8, 1 Sep 21 10:45 /dev/sda1

おすすめ記事