web-dev-qa-db-ja.com

Linuxファイルシステム:マウントポイントとフォルダー?

「マウントポイント」とフォルダの* nixの概念を理解するためにコミュニティの助けを求めたいと思います。 thisthisthis などのバックグラウンド読み取りを試みましたが、概念はまだあいまいです。 最初のリンク の重複にならないように、この質問をしようとします。

開示:私のコンピューティング基盤はほぼ完全にDOS/Windows環境にあり、これを理解するのが難しい一因となっている可能性があります。

最初の質問:マウントポイントとは何ですか? (私はそれが何であるかについての様々な説明を読みました、多分これに答えて与えられたものが違いを生むでしょう)。

具体的な例も使ってみたいと思います。次の出力は、私が使用しているLinuxボックスからのものです。

>df -k
Filesystem                        1K-blocks      Used Available Use% Mounted on
/dev/mapper/Fedora_localhost-root 239727136 215317088  12209500  95% /
devtmpfs                            8145236         0   8145236   0% /dev
tmpfs                               8166384       160   8166224   1% /dev/shm
tmpfs                               8166384       796   8165588   1% /run
tmpfs                               8166384         0   8166384   0% /sys/fs/cgroup
tmpfs                               8166384        76   8166308   1% /tmp
/dev/sda1                            487652    150127    307829  33% /boot

>ls -l /dev/mapper/Fedora_localhost-root 
lrwxrwxrwx 1 root root 7 Jan  3 18:12 /dev/mapper/Fedora_localhost-root -> ../dm-0

>ls -l /dev/dm-0
brw-rw---- 1 root disk 253, 0 Jan  3 18:12 /dev/dm-0

私の希薄な理解を言葉で表現してみてください。そうすれば、おそらく回答者は私の誤解を理解して修正することができます。

私の読書から、私はthinkLinuxは「ハードドライブのような物理デバイスを、/ devの下のどこかにあるファイルのように見える「ブロックデバイス」として利用できるようにします」。 /dev/dm-0。これは正しいです?

私の読書から、「マウントポイント」は、特定のパーティションの「最上位ディレクトリ」のようなものであり、DOS用語ではC:\D:\のようなものであると理解しています。そうですか?

私が得られないことが1つあります。私の例では、/dev/dm-0/に「マウント」されています。しかし、/the「最上位ディレクトリ」ではありませんか?つまり、アクセス可能なすべてのフォルダーは、必然的に/のサブフォルダーになりますね。例えば。 /home/varなどは、接頭辞/が付いているため、すべて/の「下」にあります。私が得ているのは、「マウントポイントは特定のパーティションの最上位ディレクトリのようなものである」という私の理解が正しければ、最上位のマウントポイント/がすでに使用されているので、どうして複数のマウントポイントを持つことができるでしょうか。アップ?

上記の段落に関連して:/dev/dm-0はそれ自体が/のサブフォルダーです。それで、マウントポイント/がそれ自身のサブフォルダーへのエントリーポイントになる方法がわかりませんか?これについて何かが循環しているように見えます、そして私はこれを理解していません。

最後に、誰かがマウントポイントとサブフォルダーの違いを説明できますか? 記事の1つ 私が読んだところによると、//home、および/bootはすべてマウントポイントです。では、/homeがマウントポイントであるのと、mkdir /homeを実行した場合の違いは何ですか?

助けてくれてありがとう。私はこれについてあらゆる種類のぼんやりと混乱しています。

2
StoneThrow

Windowsはドライブマウントポイントもサポートしています(Microsoftはそれらを「再解析ポイント」と呼んでいますが、概念は同じです)。 * NIXオペレーティングシステムよりもWindowsに精通しているため、Windowsでを実行できる小さな実験を次に示します概念を理解するのに役立ちます。

  1. USBフラッシュドライブをコンピューターに挿入します。
  2. デスクトップに新しい空のフォルダを作成します。
  3. ディスクの管理コンソールを開き、フラッシュドライブを右クリックして、Change Drive Letters and Paths...を選択します。
  4. 表示されるダイアログで、Add...ボタンを押します。
  5. Mount in the following empty NTFS folder:ボタンが選択されていることを確認し、デスクトップに作成したそのフォルダのパスを参照します(例:C:\Users\<your profile>\Desktop\New Folder
  6. OKとOKを押します。次に、デスクトップを確認してください。作成したフォルダにドライブショートカットアイコンがあることがわかります。

Drive shortcut icon

コマンドプロンプトウィンドウから見ると、<JUNCTION>オブジェクトタイプとして表示されます。

enter image description here

フラッシュドライブに2つのマウントポイントがあることに注意してください。 E:(またはその他)と手順2で作成したフォルダ。必要に応じてドライブ文字を削除できます。それでもフォルダを介してドライブ文字との間でファイルをコピーできます。デスクトップ上。必要に応じて、複数のドライブ文字を追加することもできます。これがマウントポイントです:ドライブ/パーティションにアクセスするための単なるパスです。

Linuxとは異なり、Windowsはこのフォルダをある種の奇妙なショートカットとして表現しています。マウントポイントはMicrosoftの世界では少し奇妙な概念であるため、Windowsはこれを行います(したがって、混乱します)。多くの場合、正しく機能しません。しかし、* NIXオペレーティングシステムでは、これはまさに物事が行われる方法です。 Linuxでは、ディレクトリはフォルダまたはマウントポイントのいずれかであり、ほとんどの場合、この2つの違いは重要ではありません。

* NIXオペレーティングシステムにはドライブ文字の概念がありません。 「ルート」ファイルシステム(/)は常にツリーの最上位にあり、(通常は常にではありませんが)システムのブートドライブとしてマウントされます。これが、WindowsにとってのC:\です。ルートは1つしか存在できません(C:ドライブが1つしか存在できないのと同じです)。システム上の他のすべてのドライブまたはパーティションは、このルートの下のパス(ディレクトリ)にマウントする必要があります。したがって、WindowsではD:またはE:は、Linuxでは/mnt/D_Drive/media/cdrom、さらには/var/homeなどになります。 。


これは重要なことであり、混乱の大きな原因です。
デバイスノードはマウントポイントと同じものではありません。 WindowsとLinuxの両方にデバイスノードがあります。違いは、Windowsがそれらを表示することはなく、Linuxのようにハードドライブにファイルとして存在しないことです。

上記のコマンドプロンプトのスクリーンショットでは、作成したフォルダーが\??\Volume{GUID}\としてリストされていることがわかります。 LinuxとWindowsの両方で、rawデバイス自体にデバイスノードがあります(たとえば、Linuxの場合は/dev/sda1、Windowsの場合は\??\Volume{GUID})。マウントポイントは、そのデバイス上のファイルシステムです。 Windowsでは、ドライブ文字(E:\など)をドライブ/パーティションのマウントポイントと考えることができます。唯一の違いは、Windowsが\??\Volume{GUID}デバイスノードを表示しないことです。マウントポイントのみが表示され、それらのマウントポイントはほとんどの場合ドライブ文字です(ただし、上記の実験からわかるように、そうである必要はありません)。


これで問題が解決することを願っています。

ここで、ディスクの管理に戻ってそのマウントポイントを削除してから、誤って何かをコピーしたり移動したりするなどの愚かなことをしてください。 :-)

4
Wes Sayeed
Wrote this as a comment, realised I could expand it into a full blown answer.

フォルダはWindowsのアイデアです、忘れてください。ディレクトリに関しては、Linuxではすべてがファイルであるため、ディレクトリ内に存在できます。また、循環リンクには本質的に何も問題はありません。/linkに/に移動するリンクを含めることができます。 Linuxはこれを可能にし、それを受け入れ、先に進みます

マウントポイントは、マウントされたデバイスにアクセスできるポイントです。

あなたの/ 'ルート'は決して移動しません、それは常に/ですが、他のすべてはあなたが望むところならどこにでも置くことができます。 (LSFHのドキュメントで詳しく説明されている、私たちが固執しようとしている特定の標準があります。)

/を取得したら、この「スペース」内に他のデバイスをマウントできます。通常、カーネルによって処理されるいくつかのあいまいなパスの下に存在するスワップドライブ/ファイルがあります

ドライブ全体が/ home専用である可能性があります。つまり、これがマウントポイントになり、/ usrと/ tmpがそれぞれのドライブにもマウントポイントになる可能性があります。

物理デバイスが/の外部に存在することを想像できます。また、/ devの下にあるものは、気分が良くなる場合は、単なる架空のショートカットにすぎません。

一般的なルール:ディレクトリがあると、そこに何かをマウントすることでマウントポイントにすることができます。元のディレクトリコンテンツ(存在する場合。マウントポイントに空のディレクトリを使用することをお勧めします)は、他のファイルシステムがオーバーレイされているため、今後はアクセスできなくなります。

例えば。 HDDがWindowsでD:\で、D:\data\a1\フォルダーがあった場合、Linuxの/mnt/foo/にマウントして、すぐに/mnt/foo/data/a1/にすることができます。代わりに/bar/baz/にマウントすると、a1と同じ/bar/baz/data/a1/ディレクトリにアクセスできるようになります。

この新しくマウントされたファイルシステム内のどこかにあるサブディレクトリ(/bar/baz/data/a1/など)は、必要に応じて他の何かのマウントポイントになる場合があります。ここでは一般的な制限はありません。

最初は/が利用可能です。そこにルートファイルシステムをマウントします。これには、(とりわけ)他のファイルシステムのマウントポイントとなることを目的とした空のディレクトリがいくつか含まれています。このようにして、特定のマウントポイントでさまざまなファイルシステムを正しい順序でオーバーレイすることにより、ディレクトリツリーを構築します。

2

Windowsでは、OSが認識するファイルシステムを備えた異なるパーティションまたはドライブ全体がある場合、ドライブ文字が割り当てられます(D:、E:など)。 Unixでは、rootとしてマウントされるファイルシステムが1つあり、残りのファイルシステムにはマウントポイントからアクセスできます。マウントされたら、ルートファイルシステムのフォルダとしてドライブにアクセスします。別のファイルシステムをルートファイルシステムにマウントする前に、マウントポイントフォルダがルートファイルシステムに存在している必要があります。 UNIXはすべてを一般的なソリューションとして実装する傾向があるため、Windows共有、.isoイメージ、または一時ファイルシステム(DOS ramdriveなど)をマウントポイントにマウントできます。マウントされると、ユーザーは透過的になります。

注:これは少し不正確な説明ですが、私がWindowsユーザーだったときに説明した方法です。

0
DrNoone