AUFS: Wie erstelle ich einen Lese-/Schreibzweig für nur einen Teil eines Verzeichnisbaums?

AUFS: Wie erstelle ich einen Lese-/Schreibzweig für nur einen Teil eines Verzeichnisbaums?

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 /dir1und/dir2

/aufswird dann erneut gemountet, um --movees /(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, /usreinen 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:

  1. Ändern Sie den ersten Mount-Befehl auf irgendeine Weise
  2. Fügen Sie weitere Mount-Befehle mit den Befehlen aufs add/del vor dem zweiten Mount hinzu.
  3. /dir2Löschen Sie einfach die Bäume, die nicht beim Booten erhalten bleiben sollen
  4. 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: auFSunterstü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 /dir1und/dir2

Darin /tmpfserstellen 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 /aufsbereits 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 /aufsden 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 /homebeispielsweise 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 /homein eine andere physische Partition einfügen, die schreib- und lesbar ist, und diese später in mounten /aufs/home.

verwandte Informationen