私はoverlayFS
を使用して、単純な実験的なサンドボックスを作成しています。 私はそれがどのように動作するかを理解すると思う:Linux上でルートファイルシステムをどのようにオーバーレイできますか?
- 下層必ずマウントする必要があります
- 上位層は、すべての変更が
- 仕事層がトランザクションの理由である起こるところであるR/O
- ターゲットはすべてマージされます。lower + upper go
たとえば、/disk2
に物理ディスクがマウントされています。それから私は内容を維持するためにオーバーレイしたいので、私は次のように何かを行うことができます:
mount("overlay", "/disk2", "overlay", MS_MGC_VAL, "lowerdir=/disk2,upperdir=./upper,workdir=./work");
これはうまく動作します:私の新しいプロセスが/disk2
の下でコンテンツを修正しようとすると、それだけで上部の下現実に修正します:これは実際に意図したとおりに動作しています。たとえば、0、0のファイルを見ると、のアッパーでは削除されているものの、のアロフトではないものが削除されていることがわかります。です。
私は何とかルート/
に重ねることができないように残念なことになります。私は次のコードを実行した場合:
mount("overlay", "/", "overlay", MS_MGC_VAL, "lowerdir=/disk2,upperdir=./upper,workdir=./work")
を私はまだ全体本当/
を見ることができると私はファイルを書き込む際に、それらが書き込まれます彼らのの実(すなわちの下位)の場所では、の上位ではありません。
私はここで間違っていますか?
私はカーネルにあります4.4.0-53
です。
すべてのプロセスが実際のデバイスの '/'ではなく '/'を使用するように、オーバーレイルートファイルシステムをinit(またはsystemd以前)で実行する必要があります。すべてのプロセスには '/'という固有の概念があり、プロセスが作成されると変更することはできません(私はこれを修正するためにオープンしています)。 [overlayroot](https://github.com/chesty/overlayroot)[ブログ投稿](https://spin.atomicobject.com/2015/03/10/protecting-ubuntu-root-filesystem)の詳細を見てください。 /)。 – Petesh
@petesh Cコードの_clone_呼び出しの後でこれを動的に行う必要があるため、どれくらい役立つかわかりません。それにもかかわらず、見ています。 – Emanuele
私は昨年のダブリンのユーロlinuxconで、そのようなものを使った会社のプレゼンテーションを覚えています。私は起こったプレゼンテーションだけを覚えています。それに関連するオンラインのものを見つけることができるかもしれません。 – Petesh