読み取り/書き込みルートファイルシステムのディスクイメージをOverlayFS upperdirとして使用できますか?

読み取り/書き込みルートファイルシステムのディスクイメージをOverlayFS upperdirとして使用できますか?

読み取りおよび書き込みアクセスのためにルートファイルシステムを含む既存のディスクイメージをマウントupperdirポイントに統合マウントできますか?overlayfs

/tmp/既存のスクリプト(元のUbuntu 12.04で作成され、14.04に移植)を使用して、古い古いディスクイメージをUbuntu 16.04システムのディレクトリに統合マウントしようとしています。

overlayfsイメージの上に書き込み可能なディスクイメージを作成し、共同でマウントするために使用された以前の自動化スクリプトは次のとおりです。ext2/3squashfs

cd /tmp
mkdir lower upper union
losetup /dev/loop1 /tmp/image.sfs
losetup /dev/loop2 /tmp/image.ext2
mount -t squashfs -o ro /dev/loop1 /tmp/lower
mount -t ext2 -o rw /dev/loop2 /tmp/upper
mount -t overlayfs -o rw,lowerdir=/tmp/lower,upperdir=/tmp/upper overlayfs /tmp/union

この方法は3.xカーネル(おそらく3.18より前)で最後に使用されており、この方法はもう機能していないようです。今すぐ上書きするには、workdir次のオプションが必要です。

mount -t overlay -o rw,lowerdir=/tmp/lower,upperdir=/tmp/upper,workdir=/tmp/work overlay /tmp/union

尋ねる:4.xカーネルで書き込み可能な状態で既存のイメージをマウントして使用するように自動化スクリプトを調整できますか?ディレクトリrootなどのエントリを含めるように書き直す必要はありませんか?work場合によっては、他の場所で使用が中断されることがあります。

文書によると、アトミック書き込みを許可するworkdirには、同じファイルシステムの空のディレクトリでなければなりませんupperdir。私が見ると、ルートファイルシステムイメージを読み取り/書き込みで統合マウントすることは不可能だと思います。これはworkdirイメージに存在する必要があり(データディレクトリとは別に)、ルートファイルシステムイメージでは不可能です。

仮想マシンにUbuntu 14.04を一度にロードすることを検討しましたが、これは長期的なソリューションではありません。


これまでに最高の試み:

同じデータをディスクに繰り返し書き込まないようにするために私が考えた唯一の解決策は、両方の画像をlowerdir値としてマウントし、マウントの上にupperdirディレクトリをworkdirマウントすることです。tmpfsその後、自動書き込みが完了し、オーバーレイフェデレーションがマウント解除された後、そのrsync場所の変更をtmpfsマウントされたイメージにコピーできます。例:ext2/3

mount -t overlay -o rw,lowerdir=/tmp/upper:/tmp/lower,upperdir=/tmp/tmpfs/root,workdir=/tmp/tmpfs/work overlay /tmp/union

...perform automated reads/writes...

umount /tmp/union

...rsync contents from /tmp/tmpfs/root to /tmp/upper...

ただし、利用可能なRAMによっては厳しく制限されており、すべての自動化スクリプトに追加するのは見苦しいハッキングです。

答え1

作る追加レベル画像ファイルに入れ子にする:

mkdir   /tmp/upper/upper
mkdir   /tmp/upper/work
mount -t overlay -o rw,lowerdir=/tmp/lower,upperdir=/tmp/upper/upper,workdir=/tmp/upper/work overlay /tmp/union

関連情報