web-dev-qa-db-ja.com

すでにファイルが含まれているフォルダにドライブをマウントすると、ファイルはどこに行きますか?

すでにファイルが含まれているフォルダに誤って新しいドライブをマウントしました。私はそれらを気にせず、どこか別の場所に持っていますが、そのフォルダーは現在空になっています。ファイルがどうなったか知りたいです。 Linuxによって単に削除されるだけですか?

32
T. Brian Jones

単に「シャドウイング」され、アンマウントすると再び表示されます。 :)

実際、ファイルは「そのまま」そのままで、アンマウントせずにすぐにアクセスする必要がある場合は、いわゆるbindマウントを使用して回避できます。

mount --bind /Original/FS/Mount/Point /Somewhere/Else

カーネルにファイルシステムをマウントポイントにマウントするように要求すると、カーネルはそのマウントポイントをマウントしているファイルシステムへの「ビューポート」として扱うため、正常に機能するため、mounted FSそこにコンテンツ。

しかしこれはnotこれらのFSの「レイヤー」を単一のビューに組み合わせることができる唯一の方法です。いわゆる「 ユニオンマウント 」アプローチがあります(この「計画9の中心的な概念」、BTWを知っているのはおかしいです)。 Linuxでは Aufs を使用できますが、これはメインラインカーネルに組み込まれなかった、または現在(3.18以降) OverlayFSdid .

38
poige

新しくマウントされたファイルシステムは、初期のファイルシステムの一部を隠すオーバーレイのようなものです。 poigeで説明されているバインドマウントのように、ファイルにアクセスするトリックがあります。 Linuxでは、個人的には、ファイルシステムを複数の異なるマウントポイントに複数回マウントできるという事実が気に入っています。したがって、/だけでなく/mntにもルートファイルシステムを完全にマウントできます。これは、失われたスペース/失われたファイル/ディスク使用量のカウント/ ...をデバッグするときに役立ちます。

Gotcha's:

  • 古いファイルはまだ残っており、スペースを使い果たしていますです。マウントによって非表示になっているファイルのディスクスペースが「不足している」ことはよくある間違いです。例えば。誤ってディレクトリに大きなファイルを書き込んだり、ファイルシステムをそのディレクトリにマウントすることを決定したとき。例えば。ロギングファイルシステムが適切にマウントされる前に、誤って大きなデータベースを起動した...
  • プログラムがファイルを開いており、その後、新しくマウントされたファイルシステムによって非表示にされた場合、プログラムはそれを気にせず、閉じるまで 'hidden'ファイルを正常に使用し続けます。その瞬間から、そのファイルは、新しいファイルシステムがマウント解除され、基礎となるディレクトリが再び表示されるまで、プロセスから見えなくなります。
21
jippie