web-dev-qa-db-ja.com

Linuxのユニオンマウント

union mount は、単一の階層内の複数のディレクトリ(ブランチ)を組み合わせたビューを表示します。わかりましたが、実際にどのように使用すればよいですか?

最新のLinuxシステムでは、多くのユニオンマウントテクノロジーを利用できます: OverlayFSaufsUnionFS 、さまざまなFuseベースのファイルシステム、…

ユースケースが与えられた場合、どの方法が適切であるかをどのように決定しますか特に:

  • 一般的なシステムでrootアクセスが必要なのはどれですか。 (つまり、権限のないユーザーがユニオンマウントを作成できますか?)
  • どれが/にマウントできますか(もちろんrootアクセスで)?
  • 基になるブランチへの書き込みをサポートするものはどれですか? (つまり、/foo/bar/unionにユニオンでマウントされている場合、/foo/barに書き込むことができますか?)
  • どれが書き込みの構成可能なポリシーをサポートしますか? (たとえば、ファイルが両方のブランチに存在するときにブランチAからコンテンツを取得している場合でも、新しく作成されたファイルをブランチBに送信できますか?)
  • ファイルに依存するブランチ間の優先順位をサポートするのはどれですか? (例えば、それを持っているすべてのブランチの中で常に最新のファイルを取得できますか?)

使用例をいただければ幸いです。

特定の点に焦点を当てた回答は避けてください。利用可能なソフトウェアを確認する包括的な回答を探しています( バインドマウントとは何か )。良い答えが得られます。

特定の各ポイントについて:

  • ルートアクセス:Fuseを使用する場合はルートは不要です。Fuseを使用しない場合は、機能(潜在的に危険)または名前空間のいずれかで特別な設定を行わない限り、ルートが必要です。

  • /へのマウント:起動時のルートファイルシステムとしての意味だと思います。その場合、カーネルモードで実行されるものはすべて理論的には機能するはずですが、他のものより信頼性が高いものもあります。ほとんどのLiveCDがこれを行うので、ここでこの特定のポイントに関する情報を探すことをお勧めします。

  • 基礎となるブランチへの書き込み:これは、あなたが何を意味するかによって異なります。マウントされたビューへの書き込みを下のブランチに伝搬するつもりなら、私にはわかりません。メインファイルシステム自体から帯域外の下位ブランチに書き込むことを意味する場合、技術的には大きな3つすべてが行いますが、変更がマウントされたビューに確実に伝達されるように、すべての再マウントが必要です。

  • 構成可能な書き込みポリシー:これについては具体的にはわかりませんが、Big 3(UnionFS、AUFS、およびOverlayFS)ではサポートされていません。

  • ファイルに依存する優先順位:これも3番目のサブ質問に該当すると思います。同様に、具体的にそれをサポートするものは知りません。

それらのそれぞれのいくつかの詳細については:

  • UnionFS:私が知る限り、これはLinux用の元のスタック可能なユニオンファイルシステムの実装でした。それは古くからあり、多くのLinuxes LiveCDで使用されています。カーネルモードで実行され、使用する上流カーネルへのパッチが必要です。

  • AUFS:UnionFSのフォークとして発案され、その後、独自のものになりました。これはマージされたメインラインを取得しようとしましたが、コード品質の理由で拒否されました。一部のディストリビューションのLiveCDでUnionFSに取って代わりました。 UnionFSと同様に、カーネルモードで実行され、上流のカーネルへのパッチが必要です。

  • OverlayFS:いくつかのBSD派生物でもサポートされていることを除いて、私はこれの最初の開発についてはあまり知りません。特に、Linuxカーネルでの上流のオーバーレイ/ユニオンファイルシステムの実装です。また、カーネルモードで実行されます。

  • UnionFS-Fuse:このやや紛らわしい名前のプロジェクトは、実質的に同じ機能を提供する以外は、実際にはUnionFSとは何の関係もありません。これはunionファイルシステムの最も広く使用されているFuseの実装ですが、私が知っているのはそれだけです。

  • mhddfs:これは奇妙な外れ値であり、従来のユニオンファイルシステムよりもファイル粒度のRAID-0実装により似ています。スペースの使用状況に基づいて、複数のバッキングディレクトリ間でのファイルのバランスをサポートします。また、Fuseベースです。

特定の実装に固有のものではないことに注意してください:

  • カーネル内のすべてのオプションには、バッキングファイルシステムの制限があります。特に、ネットワーク化されたファイルシステムやBTRFSでは機能しません。

  • ルートファイルシステムとして使用すると、すべてのFuse実装に問題があります。これはユニオンファイルシステムの実装に固有のものではありませんが、一般的にFuseの問題です。

12