/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

答え2

特定のファイルのinode番号はファイルシステムに固有ですが、特定のホストにインストールされているすべてのファイルシステムに一意である必要はありません。複数のファイルシステムがある場合、ファイルシステム間に重複したinode番号が表示されます。これは通常の現象です。

関連情報