AuFS(別のユニオンファイルシステム)を使用すると、2つのツリーが重複している場合でも、それらを1つにマージできます。次に、マージされたツリーへの書き込みをブランチの1つに向け、別のブランチに読み取ることができます。
これの古典的な使用法は、Linuxを壊さない読み取り専用のルートファイルシステムを作成するために、 this (ref 1)のようなフラッシュファイルシステムとRAMディスクを使用することです。すべてのファイル書き込みはRAMに送られます。再起動後、システムは出荷時の構成に復元します。
/dir1
=読み取り専用/dir2
=読み取り/書き込み/aufs
= /dir1
と/dir2
のマージ次に、/aufs
を--move
で再マウントして、/
(ルート)にします。
簡略化すると、(参照1)の例はこれを実行します
mount -t aufs br=/dir2:/dir1 /aufs
mount --move /aufs /
ただし、書き込み可能(/dir2
)がRAMディスクではなく実際のディスク上にあるように使用したいと思います。そうすれば、再起動後、データが保持されます。
ただし、dir2内の特定のファイルが保持されず、(/dir1
)デフォルトに復元されるようにする必要があります。これにより、将来のブートでは常に出荷時のファイルが使用されます。ユーザーとログデータを失うことなく。
例えば/etc
、/bin
、/boot
、/usr
で変更されたファイルは、再起動後も存続しないはずです。
AUFS Webページ (参照2)には例がほとんどありません。
だから質問に:AuFSを使用してこれを行う正しい方法は何ですか?
私は次のことを考えることができます:
/dir2
から保存してはいけないツリーを削除するだけですtmpfs
の部分ツリー(etc, bin, boot, lib, etc
)参照1: https://help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash
参照2: http://aufs.sourceforge.net/aufs.html
オプション#1:auFS
自体はそのようなマウントオプションをサポートしていないため、オプション#1は無効です。あなたはそれを回避しなければなりません。
オプション#:もちろん、起動するたびにこれらのディレクトリを削除するだけです。それは私がここで見る最も簡単な方法かもしれません。
オプション#2:tmpfs
で作業できます。したがって、最初にtmpfs
を作成します。たとえば、サイズが500MBの場合を考えます。
mount -t tmpfs -o rw,size=500M tmpfs /tmpfs
私たちは今持っています:
/dir1
:読み取り専用/dir2
:読み取り/書き込み/tmpfs
:RAMでの読み取り/書き込み/aufs
:/dir1
と/dir2
のオーバーレイ/tmpfs
内に、保存したいdirを作成します。
mkdir -p /tmpfs/{etc,usr,boot,bin}
すでに2つのdirをマージしているときにこれを行うことに注意してください。したがって、/aufs
のディレクトリツリーがすでに存在する場合。ただし、ここでは、保存する必要があるディレクトリごとに1つのaufsマウントを実行します。
mount -t aufs -o dirs=/tmpfs/etc=rw:/dir2/etc=ro none /aufs/etc
mount -t aufs -o dirs=/tmpfs/usr=rw:/dir2/usr=ro none /aufs/usr
mount -t aufs -o dirs=/tmpfs/boot=rw:/dir2/boot=ro none /aufs/boot
mount -t aufs -o dirs=/tmpfs/bin=rw:/dir2/bin=ro none /aufs/bin
これで、/aufs
にディレクトリツリーができました。どこにでもファイルを書き込むことができますが、たとえば/etc
に書き込むと、RAMにある/tmpfs/etc
に書き込まれるため、再起動後も存続しません。たとえば、/home
内の他のファイルは/dir2/home
に書き込まれます。これは読み取り/書き込み可能なファイルシステムであるため、再起動後も存続します。
別の解決策:オーバーレイファイルシステムと保存されたユーザーデータを使用するクライアントシステムも使用しています。これが私がそれを解決した方法です:単に読み取り専用ファイルシステムとその上にマウントされたtmpfs。後でユーザーがログインすると、読み取り/書き込み可能なSambaサーバーからホームディレクトリをマウントします。したがって、彼のすべてのユーザーデータは/home
に保存および保存され、残りは再起動後も存続しません。あなたの場合、/home
を読み取り/書き込み可能な別の物理パーティションに配置し、後でそれを/aufs/home
にマウントすることができます。