読み取りおよび書き込みアクセスのためにルートファイルシステムを含む既存のディスクイメージをマウントupperdir
ポイントに統合マウントできますか?overlayfs
/tmp/
既存のスクリプト(元のUbuntu 12.04で作成され、14.04に移植)を使用して、古い古いディスクイメージをUbuntu 16.04システムのディレクトリに統合マウントしようとしています。
overlayfs
イメージの上に書き込み可能なディスクイメージを作成し、共同でマウントするために使用された以前の自動化スクリプトは次のとおりです。ext2/3
squashfs
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