/proc/.../mountinfo の 4 番目の列 (ルート) はどういう意味ですか?

/proc/.../mountinfo の 4 番目の列 (ルート) はどういう意味ですか?

マニュアルではproc、4 番目の列をmountinfo「ルート」と名付け、「このマウントのルートを形成するファイルシステム内のディレクトリのパス名」と説明しています。しかし、これをどのように理解すればよいのでしょうか?

マウントの基本要素はソース パスとターゲット パスだと思っていましたが、「マウント ソース」は 10 列目でターゲットは 5 列目なので、ルートは何に使用されるのでしょうか?

ほとんどのマウント情報では、ルートは だけであり/、意味がないようです。 バインド マウントのルートが と異なることがわかったので/、これはバインド マウントでのみ役立ちますか? また、バインドの場合は、ルートに絶対パスが表示されないのはなぜですか? たとえば、 を/run/test_dir/aにバインドすると/run/test_dir/b、ルート列に が表示されますが/test_dir/a、 の部分が非表示になっているのはなぜですか/run?

答え1

言語要素で説明するのは難しいです(少なくとも私の英語力では)ので、例に基づいた回答をすることにしました。

ルートディレクトリは、最高または最もひどいディレクトリ。これは部分的にしか当てはまりません。このディレクトリ想定されるとして最高ディレクトリ。「このディレクトリから始めます。これが最上位のディレクトリであり、その上には何もないものとします」と説明できます。

「ルート」の意味を明確にするための例をいくつか示します。

  • ウェブサーバーを運営していて、ドメインのルートexample.comを に設定しているとします/var/www/html/example.com。ここでファイル を作成します/var/www/html/example.com/test.html。ブラウザで開くと、https://example.com/test.html作成されたファイルの内容が表示されます。ルートとして設定する場合は/var/www/htmlhttps://example.com/example.com/test.html
  • chrootディレクトリに入ると/home/test/testSystem/、この環境のルートは になります/home/test/testSystem。chrootlsされた環境内でを実行するとls /、次の内容が表示されます。/home/test/testSystem/

ルートのマウントポイント/

たとえば、USB には次のものが含まれます。

/
├── dir1
│   ├── subfile1
│   └── subfile2
├── file1
├── file2
└── file3

この USB をマウントすると、USB のディレクトリをルートとして/mnt使用するため、期待どおりの通常の出力が得られます。/

531 137 0:52 / /mnt rw,nosuid,nodev shared:75 - /dev/sdb [...]

したがって、ほとんどの場合、マウント ポイントのルートは確かに になります/

異なるルートのマウントポイント/

これを自分で試すこともできます: ファイルシステム内の2つのディレクトリを

$ mount --bind /var/test1 /var/test2

の出力はmountinfo次のようになります。

564 29 0:26 /var/test1 /var/test2 rw,relatime shared:1 - ext4 /dev/sda rw [...]

マウントポイントのルート/var/test2は です/var/test1。マウントソース(マウントしたもの)は/dev/sda

USB の例に戻ります。 のコンテンツを/mnt/dir1他の場所にマウントすると、マウント ルートが取得され/dir1、マウント ソースは/dev/sdb(USB) になります。 この/mnt部分はここで削除されます。

「/run 部分をなぜ隠すのか」

簡単に言うと、/runtmpfs パーティションであるため削除されます。これらの部分が削除されるのはなぜですか?

USB の例では、を にdir1マウントしました。出力は次のようになります。/dev/sdb/home/test/usbmnt/

564 29 0:26 /dir1 /home/test/usbmnt/ rw,relatime shared:1 - ext4 /dev/sdb rw [...]

/dir1 の内容を (ハード ドライブからではなく USB から) usbmnt というディレクトリにマウントしたことがわかります。 と読むとわかりやすいかもしれません/dev/sdb/dir1

ルートが与えられれば、/mnt/usb/dir1USB上の実際の場所がどこなのかはわかりません。それは/dir1/usb/dir1あるいは/mnt/usb/dir1

関連情報