GNU/Linux >> Linux の 問題 >  >> Linux

Linux – Linuxオーバーレイ(overlayfs)マウントで、変更を上位ファイルシステムから下位ファイルシステムにマージしますか?

オーバーレイマウントの上位ファイルシステムから下位ファイルシステムへの変更をマージできるようにしたいと思います。

オンラインの両方に興味があります (つまり、 whileをマージします オーバーレイがマウントされます)およびオフライン (オーバーレイをアンマウントしてからマージします)ソリューション。

いくつかのオフラインソリューションを見つけました。それらを回答として追加しました。

オンラインを知っている人はいますか ソリューション?オーバーレイがまだマウントされている間にレイヤーをマージするために実行できる「コミット」タイプのコマンドがあると便利です。

次の質問では、このような質問があり、答えはありません。

  • 1つのファイルを変更して、OverlayFsの下位ディレクトリに同期する方法はありますか?
  • OverlayFSディレクトリを介して下位ファイルを変更するにはどうすればよいですか?
  • OverlayFSは下位ディレクトリのファイルをシームレスに編集します
  • OverlayFS –アンマウントせずに上位のファイルシステムに変更を永続的に行う方法は?

これらの投稿のコメントは、さまざまなmergerfsとbcacheを示唆しています。どちらも特定のユースケースを解決しますが、オーバーレイが提供する一般的なファイルシステムにとらわれないユースケースは解決しません。

私の目標は、スナップショットを備えた安全なファイルシステムサンドボックスを用意し、基盤となる任意の(実用的な)ファイルシステム上で任意のLinuxアプリケーションで使用できるようにすることです。これにより、変更をロールバックしたり、準備ができたら手動でコミットしたりできます。

使用方法を知っていれば、過去数年間のサンドボックス化/仮想化の革新のおかげで、現代のメインラインLinuxにはこの組み込み機能を実行するために必要なすべての機能があるのではないかと疑っています。

承認された回答:

オンラインでの試み 解決策ですが、完全にはありません。

セットアップ(例:/tmp ディレクトリ、ルートとして):

LOWER=$HOME
mkdir u1 w1 o1 O
mount -t overlay overlay -o lowerdir=$LOWER,upperdir=u1,workdir=w1 o1
mount --bind o1 O

次に、Oで作業できます $LOWERのオーバーレイであるディレクトリ 。スナップショットを作成する場合:

mkdir u2 w2 o2
mount -t overlay overlay -o lowerdir=o1,upperdir=u2,workdir=w2 o2

(このようなネストされたオーバーレイは、古いカーネルでは機能しないことに注意してください)。

しかし、Oでバインドマウントをアトミックに変更する方法が必要です。 o2を指す o1の代わりに 。これを行う方法がわからない:

umount O
mount --bind o2 O

アトミックではありません; Oがあるウィンドウがあります マウントされていません。

理想的には、実行中のプロセスは、Oの基盤となるファイルシステムを知らなくても実行を継続できます。 o1から変更されました o2へ 。これが可能かどうか、またはOの基になるファイルシステムを変更するかどうかはわかりません このようにすると、開いているアプリケーションが混乱しすぎます。さらに調査する必要があります。

次に、O o2にリダイレクトされました 、o1を再マウントできます 予防措置として読み取り専用にしてから、たとえばrdiffdirまたはoverlayfs-toolsを使用してオフラインマージを実行します。

関連:ホーリーシートチートシート

最後に、o2をアトミックに再マウントする方法が必要です。 lowerdir=$HOME,upperdir=u2,workdir=w2として o1u1 およびw1 (現在はすべて空のdirs)を削除できます。繰り返しますが、これが可能かどうかはわかりません。

それ以外の場合は、オーバーレイをどんどん深くネストし、マージやクリーンアップを試行せずに、マウントされたそれぞれのオーバーレイとアッパーダイアを残すだけでスナップショットを作成できます。ただし、マウントできるネストされたオーバーレイの数にはおそらく制限があります。そして、ある時点で、変更を永続化する場合は、レイヤーを下にマージする必要があります。


Linux
  1. 単一のLinuxファイルシステムを暗号化する方法

  2. Linux –ポート番号を指定してリモートファイルシステムをマウントする方法は?

  3. Linuxでマウントをバインドする

  1. Linux でファイルシステム / パーティションをマウントおよびアンマウントする方法 (Mount/Umount コマンドの例)

  2. Linux で iso ファイルをマウントする方法

  3. Linux での mount コマンドの例

  1. Linux ファイルシステムを通常のユーザーとして読み取り/書き込み可能に手動でマウントするにはどうすればよいですか?

  2. LinuxでISOファイルをマウントするには?

  3. Linux:大文字と小文字を区別しないファイルシステム