
AuFS (ein weiteres Union-Dateisystem) ermöglicht es uns, zwei Bäume zu einem zusammenzuführen, selbst wenn sich diese Bäume überlappen. Wir können dann Schreibvorgänge in den zusammengeführten Baum an einen der Zweige und Lesevorgänge an einen anderen leiten.
Der klassische Einsatzzweck hierfür ist ein Flash-Dateisystem und eine RAM-Disk, wieDas(Ref. 1), um ein schreibgeschütztes Root-Dateisystem zu erstellen, das Linux nicht beschädigt. Alle Dateischreibvorgänge werden in den RAM geschrieben. Nach einem Neustart wird das System auf die Auslieferungskonfiguration zurückgesetzt.
/dir1
= nur lesen/dir2
= lesen/schreiben/aufs
= Zusammenführen von/dir1
und/dir2
/aufs
wird dann erneut gemountet, um --move
es /
(root) zu machen
Vereinfacht ausgedrückt macht das Beispiel in (Ref. 1) genau dies
mount -t aufs br=/dir2:/dir1 /aufs
mount --move /aufs /
Ich möchte es jedoch so verwenden, dass sich das beschreibbare ( /dir2
) auf einer realen Festplatte befindet, nicht auf einer RAM-Disk. Auf diese Weise bleiben die Daten nach einem Neustart erhalten.
Ich muss jedoch sicherstellen, dass bestimmte Dateien in dir2 nicht erhalten bleiben und auf ihre ( /dir1
) Standardeinstellungen zurückgesetzt werden. Dadurch wird sichergestellt, dass bei zukünftigen Starts immer die Dateien im Originalzustand verwendet werden. Ohne dass Benutzer- und Protokolldaten verloren gehen.
zB sollten geänderte Dateien in /etc
, /bin
, /boot
, /usr
einen Neustart nicht überstehen.
DerAUFS-Webseite(Ref. 2) enthält nur sehr wenige Beispiele.
Also zur Frage: Wie macht man das richtig mit AuFS?
Mir fällt dazu folgendes ein:
- Ändern Sie den ersten Mount-Befehl auf irgendeine Weise
- Fügen Sie weitere Mount-Befehle mit den Befehlen aufs add/del vor dem zweiten Mount hinzu.
/dir2
Löschen Sie einfach die Bäume, die nicht beim Booten erhalten bleiben sollen- Teilbaum (
etc, bin, boot, lib, etc
) intmpfs
Zu 1:https://help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash
Verweis 2:http://aufs.sourceforge.net/aufs.html
Antwort1
Option 1: auFS
unterstützt eine solche Mount-Option nicht von sich aus, daher ist Option Nr. 1 tot. Sie müssen das umgehen.
Option Nr. 3: Natürlich können Sie diese Verzeichnisse bei jedem Systemstart einfach löschen. Das ist wohl der einfachste Weg, den ich hier sehe.
Option 2: Sie könnten mit einem arbeiten tmpfs
. Erstellen Sie also zunächst ein tmpfs
, sagen wir mit der Größe 500 MB:
mount -t tmpfs -o rw,size=500M tmpfs /tmpfs
Wir haben jetzt:
/dir1
: schreibgeschützt/dir2
: lesen Schreiben/tmpfs
: Lesen/Schreiben im RAM/aufs
: die Überlagerung von/dir1
und/dir2
Darin /tmpfs
erstellen wir die Verzeichnisse, die Sie beibehalten möchten:
mkdir -p /tmpfs/{etc,usr,boot,bin}
Beachten Sie, dass wir dies tun, wenn wir die beiden Verzeichnisse bereits zusammengeführt haben. Wenn also der Verzeichnisbaum /aufs
bereits vorhanden ist. Jetzt führen wir jedoch ein Aufs-Mount pro Verzeichnis durch, das beibehalten werden soll:
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
Sie haben jetzt einen Verzeichnisbaum, in /aufs
den Sie überall Dateien schreiben können. Wenn Sie jedoch beispielsweise in schreiben /etc
, wird in geschrieben /tmpfs/etc
, das sich im RAM befindet und daher einen Neustart nicht übersteht. Andere Dateien in /home
beispielsweise werden in geschrieben /dir2/home
, das ein schreib- und lesbares Dateisystem ist und daher einen Neustart übersteht.
Eine andere Lösung: Ich verwende auch ein Clientsystem, das ein Overlay-Dateisystem und gespeicherte Benutzerdaten verwendet. So habe ich es gelöst: Einfach ein schreibgeschütztes Dateisystem und ein darüber gemountetes tmpfs. Wenn sich der Benutzer später anmeldet, mounte ich sein Home-Verzeichnis von einem Samba-Server schreib- und lesbar. Alle seine Benutzerdaten werden also in gespeichert und gespeichert /home
, und der Rest überlebt einen Neustart nicht. In Ihrem Fall könnten Sie es einfach /home
in eine andere physische Partition einfügen, die schreib- und lesbar ist, und diese später in mounten /aufs/home
.