ファイルシステムをそのフォルダの1つにマウントして「循環」できるのはなぜですか?

ファイルシステムをそのフォルダの1つにマウントして「循環」できるのはなぜですか?

/dev/sda5にインストール/これは私のファイルシステムです。

piotr@thinkpad:~$ sudo mkdir /home/mpoint
piotr@thinkpad:~$ sudo mount /dev/sda5 /home/mpoint

これで、次のようにできます。

piotr@thinkpad:~$ cd /home/mpoint/home/mpoint

2番目のmpointディレクトリにあるときは空です。

私の質問は次のとおりです

  1. ファイルシステムをそのフォルダの1つにマウントして「循環」できるのはなぜですか?

  2. 2番目のmpointディレクトリが空であるのはなぜですか?

答え1

ファイルシステムをマウントすると、システムに追加の階層を追加できます。マウントポイントは絶対パスで、通常はターゲットの内容を隠します。使い方を詳しく見てみると役に立ちstatます。つまり:

まずテストケースを準備します。

# mkdir /mnt/other
# echo hi > /mnt/other/hello.txt
# cat /mnt/other/hello.txt
hi
# stat -c %i /mnt/other
6424680

その後、インストール

# mount / /mnt/other
# cat /mnt/other/hello.txt
cat: cannot access '/mnt/other/hello.txt': No such file or directory
# stat -c %i /mnt/other
2
# stat -c %i /
2
# stat -c %i /mnt/other/mnt/other
6424680
# cat /mnt/other/mnt/other/hello.txt
hi

ご覧のとおり、マウントポイントのinodeがinode 6424680から2(ルート1のinode)に変更されました。このディレクトリの内容はマウントポイントに関しては隠されていますが、ディスクにはまだ存在します。ファイルシステムの上の階層です。

1 と親ルートからルートへ...


このパスは/mnt/other/mnt/otherマウントポイントではなく、ディレクトリ inode の元の内容を保持します。あなたの場合は空ですが、私の場合はファイルがあります。できるまた、マウントポイントとして設定します。

# mount / /mnt/other/mnt/other
# stat -c %i /mnt/other/mnt/other
2
# stat -c %i /mnt/other/mnt/other/mnt/other
6424680
# cat /mnt/other/mnt/other/mnt/other/hello.txt
hi

についてはなぜだから、なぜそうではありません。システムが中断されない限り、ユーザーが望むようにしてください。それは言わなかったシステムに害を及ぼすために何もできません。しかし、この場合、私が見たブロッカーを追加するインセンティブはありません。何らかの理由でマウントポイントに別のビューを作成したり、ルートツリー自体のビューを作成したい場合があります。

さらに、* nixシステムにはWindowsとは異なり、単一のディレクトリツリーがあります。ドライバー手紙とㅏ:第二:氏:。 man mountの始まりによると:

Unixシステムからアクセスできるすべてのファイルは、/にルートを持つファイル階層である大きなツリーに配置されます。これらのファイルは複数のデバイスに展開できます。 mountコマンドは、デバイスで見つかったファイルシステムを大きなファイルツリーに接続するために使用されます。

答え2

ご質問に逆順でご回答いたします。

  1. 2番目のmpointディレクトリが空であるのはなぜですか?

そこには何もないので、ディレクトリは空であり、その場所にコメントがインストールされます。

  1. ファイルシステムをそのフォルダの1つにマウントして「循環」できるのはなぜですか?

おそらくこれを防ぐには多くの努力が必要で、実際に悪い結果をもたらさないからです。そして、あなたの意見を解決するために、どのディレクトリもそれを介して複数の/home/mpoint親ディレクトリを取得しません/home/mpoint/home/mpoint

関連情報