web-dev-qa-db-ja.com

パーティションを「サンドボックス」にマウントする

これが可能かどうか疑問に思います。 /リモートLinuxマシンをローカルマシンの/にマウントするLinuxシステムをセットアップしたいと思います。ただし、リモートマシンに影響を与えないように、ローカルマシンでのすべての変更をRAMに保存する必要があります。理想的には、変更は決して書き込まれないので、再起動すると、前のセッション中に行われたすべての変更を無視して、元の/パーティションが再度マウントされます。

そのようなことは可能ですか?

9
Falmarri

使用nionfsaufs (どちらもカーネルの外部パッチ)または nionfsfuse / funionfs =(Fuseを使用)そして外部/をROおよび内部ファイルシステム(毎回クリーンアップされるtmpfs/ramfs /追加パーティションとしてマウントされる)としてマークすることによってユニオンを作成します。

または、スナップショットでファイルシステムまたはLVMを使用することもできます。次に、変更が書き込まれますが、起動するたびにスナップショットをクリーンアップできます。

7

これを行うにはいくつかの方法があります。最も簡単なセットアップは、すべての変更がBに保存されるように、2つのディレクトリツリーAとBの単一のビューを表示するユニオンファイルシステムを使用します。この場合、AはNFS/Samba/sshfs /…マウントポイントになります。 Bは、tmpfsファイルシステム上の最初は空のディレクトリになります。

Linuxにはカーネル内のユニオンファイルシステムはありませんが、いくつかの Fuse 実装があります: funionfsnionfs-Fuse

/がローカルマシンのRAMに適合し、アプリケーションを実行するための十分なスペースを残している場合、基本的な考え方は、ターゲットマシンで最小限のLinuxシステムを起動してから、自動的にramfs仮想を作成することです。ディスク、/をリモートからコピーし、この新しい/にchrootします。RAMでは不十分な場合は、基本的に同じ手順に従いますが、RAMFSを使用せず、コンテンツが含まれる実際のディスクパーティションを使用します。クリアして完全にコピーする代わりに、適切なオプションを指定してrsyncを使用することもできます。

3
fschmitt

Btrfsに行くことができ、それはコピーオンライト(CoW)機能です。

あなたが探しているかもしれないものは Btrfs Wiki as Seed-device で説明されています:

基本的な考え方は、別の書き込み可能なパーティションである「その上にレイヤーを追加する」(/dev/shmなどのRAMにいつでも作成できます)よりも、元のデータを読み取り専用でパーティションを作成してマウントすることです。それ:

btrfstune -S 1 /dev/RO #make it read-only
mount /dev/RO /mnt/temp
btrfs device add /dev/RW /mnt/temp
umount /mnt/temp

そしてその瞬間から、あなたがマウントするたびに

mount /dev/RW /mnt/test

変更は/ dev/RWに保存されますが、/ dev/ROは変更されません。

(例は wiki の例に基づいています)

これは、PXEブートを使用すると非常に簡単にできます。 pxe tftpnfsブートでライブxbmcシステムを実行しています。変更はCOWを使用してNFS共有に書き込まれます。

0
user3427