web-dev-qa-db-ja.com

異なるパーティションおよび異なるファイルシステムへのマウントポイント

mount point を読んでいる間、Linuxでのファイル管理は次のように思います:

  • /は木の本体です
  • /aは本体からのブランチ、/a/b/aブランチからのブランチです
  • パーティションcをマウントポイント/a/bにマウントするということは、/c/a/bブランチに「ぶら下げる」ことを意味し、結果として/a/b/cになります。

いくつか質問があります:

  1. パーティション全体のみをマウントできますか、それともそのパーティションの一部でマウントできますか?詳しく説明してください。

  2. すでにマウントされている別のパーティションにパーティションをマウントしますか?たとえば、いくつかのd/mntにマウントされていますが、別の/edにマウントして、/mnt/d/eを作成できますか?または、//mntなどの「固定ブランチ」にのみマウントできますか?可能であれば、/dをアンマウントするとどうなりますか?/eも自動的にアンマウントされますか?

  3. 別のファイルシステムで何かにマウントできますか?たとえば、ファイルシステムF1を持つ/aをファイルシステムF2を持つ/baにマウントし、/a/bを作成できますか?

  4. 2つのパーティションsda1sda2を持つデバイスsdaとしましょう。一般的に、人々は/sda1から/a/sda1sda2から/b/c/sda2など、任意のマウントポイントにマウントしますか、それとも同じディレクトリにマウントしますか?

  5. Fedora 22などのLinuxで、マウントとマウントポイントをテストおよび学習するための仮想または一時パーティション/ファイルシステムを作成するにはどうすればよいですか?

2
Kenny

まず、パーティションをマウントしません。マウントされるのはfilesystemです。ファイルシステムはパーティション上に存在する可能性がありますが、必ずしもそうではありません。ファイルシステムは一般的に生きています:

  • ファイル内(ISOイメージなど)、

  • 完全にRAM(たとえば、/ tmpはこの方法で作成されることがあります))、

  • カーネル内(/ sysと/ procはこのように機能します)、

  • またはネットワークサービスとして(NFSとSambaはこのように機能します)。

パーティションcをマウントポイント/ a/bにマウントするということは、/ cを/ a/bブランチに「ぶら下げる」ことを意味し、結果として/ a/b/cになります。

これは正しくありません。

まず、ファイルシステムを参照する方法はたくさんあります(たとえば、最も一般的で、ほとんどの場合最も安全な方法はUUIDを使用する方法です。通常のユーザーとしてlsblk -o +UUID,LABELを実行して、カーネルが認識しているIDを確認してください)。それらのどれも、実際の結果のパスに影響を与えません。

したがって、マウントするときにパスを指定します(そのパスはマウントポイントと呼ばれ、すでに存在している必要があります)。ファイルシステムがマウントされた後、そのルートは、指定したまさにそのパスでアクセス可能になります。 -)---そのサブディレクトリではありません。

  1. パーティション全体のみをマウントできますか、それともそのパーティションの一部でマウントできますか?詳しく説明してください。

理論的には、1つのパーティションに複数のファイルシステムを置くことができますが、そこで見つけるには特定のソフトウェアが必要になります(これを行うために使用されるtruecrypt、IIRC)。

ファイルシステムの一部のみをマウントしたい場合は、理論的には可能かもしれませんが、カーネルはこのようにはしません。理論的には、部分的にしかマウントできないファイルシステムを考案して、そのドライバーを作成することもできますが、それは難しいことと不可能なことの間だと思います。 AFAIK、一般的に使用されるファイルシステムはどれもこれをサポートしていません。

  1. すでにマウントされている別のパーティションにパーティションをマウントしますか?

はい、できます。同じパスを介して任意の数のファイルシステムをマウントし、それらを任意の順序でアンマウントできます。ただし、最後にマウントされたファイルシステムにのみアクセスできます。

実際、それはいくつかのプログラムによって一般的に行われています。セキュリティ上の理由から、ファイルシステムをマウントし、そのファイルを開いてから、同じパスに別のファイルをマウントします。これで、他のプロセスは最初のファイルにアクセスできなくなります。

たとえば、いくつかのdが/ mntにマウントされていますが、別の/ eをdにマウントして、/ mnt/d/eを作成できますか?または、/、/ mntなどの「固定ブランチ」にのみマウントできますか?可能であれば、/ dをアンマウントするとどうなりますか?/ eも自動的にアンマウントされますか?

/ mntにファイルシステムをマウントし、そのファイルシステムにたとえばが含まれている場合。ディレクトリ 'foo'の場合、このディレクトリを使用して別のファイルシステムをマウントできます。ただし、カーネルでは、使用されているファイルシステムをアンマウントできません。ファイルを開き、ディレクトリへのプロセスchdirを持ち、ディレクトリをマウントポイントとして使用することは、すべて「使用中」としてカウントされます。

/などの「固定ブランチ」にマウントします。

ああ、ちなみに、決してこれを行う。何も直接/にマウントしないでください。これにより、システムがすぐに破損する可能性があります。

  1. 別のファイルシステムで何かにマウントできますか

うん。実際、一般的なディストリビューションでは、ログイン画面が表示されるまでに、約5つの異なるファイルシステム(現在、私のFedoraボックスでは16です)が/の下のどこかにマウントされています。

mountを実行して、現在マウントされているファイルシステムを確認します。

  1. 2つのパーティションsda1、sda2を持つデバイスsdaを考えてみましょう。一般的に、/ sda1から/ a/sda1、sda2から/ b/c/sda2など、任意のマウントポイントにマウントしますか、それとも同じディレクトリにマウントしますか?

私が覚えている限り、唯一の要件は、マウントポイント(つまりディレクトリ)がすでに存在している必要があるということです。それ以外に、あなたはあなたのニーズに合うどんな計画も思いつくことができます。ファイルシステムが同じディスク上にあるという事実は、制限をもたらしません。

結局のところ、後でファイルシステムを別のメディアに移動して再マウントすることもできます。あなたはそれをするでしょう例えばディスクに障害が発生している場合、またはより多くのスペースが必要な場合。

命名に関しては、そもそもなぜファイルシステムが必要なのかという問題です。ユーザーのホームディレクトリ専用に別の(大きな)ファイルシステムを用意するのが一般的です。ホームディレクトリの自然な場所は/ homeであるため、そのファイルシステムをこのパスにマウントするのがコツです。サーバーの場合、この方法で/ varを分離すると有利なことがよくあります。ただし、別のストレージが必要な場合は、パスが一意でユーザーにとって意味のあるものである限り、未使用のパス(/ Financeなど)にいつでもマウントできます(/ sda1はYMMV以外ではないと思います;)) 。

  1. [...]マウントとマウントポイントをテストおよび学習するための仮想または一時パーティション/ファイルシステムを作成するにはどうすればよいですか?

Archemarの答えを参照してください。 (ちなみに、Fedora 22だけでなく、一般的なGNU/Linuxディストリビューションでも動作するはずです。)

4
Alois Mahdal

これは非常に広いです

  1. ローカルパーティションは全体としてマウントされます。部分的にマウントすることはできません。
  2. 他のパーティションの上にパーティションをマウントすることができます(そして通常はたくさん行います)。既存のデータは「非表示」です(たとえば、foo.txtに「b」をマウントすると/mnt/a/b/foo.txtのファイル/mnt/a/bは非表示になります)
  3. はい、できます。ローカルよりローカル、遠隔またはローカルにリモートをマウントすることをお勧めしますが、ローカルext3をnfsよりもext3よりもマウントできます...
  4. それはあなたの必要性に依存します。
  5. / etc/fstabに書き込まれない限り、マウントポイントは起動時に消えます。

を使用して一時的なデバイスとマウントポイントを作成できます

  • dd if=/dev/zero count=100 bs=1K of=foo
  • 次にmkfs -t ext3 foo
  • 次に、ルートとして、mount foo /mnt

    /mntをアンマウントし、完了したらfooを削除します。

リクエストに応じて。

/ dev/sda1/dev/sda2があります

ls /mnt
#empty
mount /dev/sda1 /mnt/a
error mount point doesn't exist (1)
mkdir /mnt/a 
mount /dev/sda1 /mnt/a
ls /mnt
a
ls /mnt/a
# empty
mkdir /mnt/a/b
date > /mnt/a/b/foo.txt
mount /dev/sda2 /mnt/a/b
ls /mnt/a/b
# empty
umount /mnt/a
device busy (2) 
date > /mnt/a/b/bar.txt
ls /mnt/a/b
bar.txt
umount /mnt/a/b
ls /mnt/a/b
foo.txt
  • (1)既存のディレクトリにマウントする必要があります。
  • (2)/ mnt/aを使用しているマウントポイントがあるため、/ mnt/aをアンマウントできません(/ mnt/a/b)
4
Archemar