これが可能かどうか疑問に思います。 /
リモートLinuxマシンをローカルマシンの/
にマウントするLinuxシステムをセットアップしたいと思います。ただし、リモートマシンに影響を与えないように、ローカルマシンでのすべての変更をRAMに保存する必要があります。理想的には、変更は決して書き込まれないので、再起動すると、前のセッション中に行われたすべての変更を無視して、元の/
パーティションが再度マウントされます。
そのようなことは可能ですか?
使用nionfs 、 aufs (どちらもカーネルの外部パッチ)または nionfsfuse / funionfs =(Fuseを使用)そして外部/をROおよび内部ファイルシステム(毎回クリーンアップされるtmpfs/ramfs /追加パーティションとしてマウントされる)としてマークすることによってユニオンを作成します。
または、スナップショットでファイルシステムまたはLVMを使用することもできます。次に、変更が書き込まれますが、起動するたびにスナップショットをクリーンアップできます。
これを行うにはいくつかの方法があります。最も簡単なセットアップは、すべての変更がBに保存されるように、2つのディレクトリツリーAとBの単一のビューを表示するユニオンファイルシステムを使用します。この場合、AはNFS/Samba/sshfs /…マウントポイントになります。 Bは、tmpfsファイルシステム上の最初は空のディレクトリになります。
Linuxにはカーネル内のユニオンファイルシステムはありませんが、いくつかの Fuse 実装があります: funionfs 、 nionfs-Fuse 。
/がローカルマシンのRAMに適合し、アプリケーションを実行するための十分なスペースを残している場合、基本的な考え方は、ターゲットマシンで最小限のLinuxシステムを起動してから、自動的にramfs仮想を作成することです。ディスク、/をリモートからコピーし、この新しい/にchrootします。RAMでは不十分な場合は、基本的に同じ手順に従いますが、RAMFSを使用せず、コンテンツが含まれる実際のディスクパーティションを使用します。クリアして完全にコピーする代わりに、適切なオプションを指定してrsyncを使用することもできます。
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共有に書き込まれます。