GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Änderungen am oberen Dateisystem zum unteren Dateisystem im Linux-Overlay-Mount (overlayfs) zusammenführen?

Ich möchte in der Lage sein, Änderungen vom oberen Dateisystem eines Overlay-Mounts mit einem niedrigeren Dateisystem zusammenzuführen.

Ich interessiere mich sowohl online (d. h. zusammenführen während das Overlay ist gemountet) und offline (Unmounten Sie das Overlay und führen Sie es dann zusammen) Lösungen.

Ich habe ein paar Offline-Lösungen gefunden, die ich als Antworten hinzugefügt habe.

Kennt jemand online Lösungen? Es wäre gut, einen Befehl vom Typ „commit“ zu haben, den Sie ausführen könnten, um die Ebenen zusammenzuführen, während das Overlay noch gemountet ist.

So etwas wurde in den folgenden Fragen ohne Antwort gestellt:

  • Gibt es eine Möglichkeit, eine Datei zu ändern und mit dem unteren Verzeichnis in OverlayFs zu synchronisieren?
  • Wie ändere ich eine niedrigere Datei über ein OverlayFS-Verzeichnis?
  • OverlayFS bearbeitet Dateien im unteren Verzeichnis nahtlos
  • OverlayFS – Wie kann man Änderungen am oberen Dateisystem dauerhaft machen, ohne es abzuhängen?

Kommentare in diesen Beiträgen schlagen verschiedene Mergerfs und Bcache vor, die beide bestimmte Anwendungsfälle lösen, aber nicht den generischen dateisystemunabhängigen Anwendungsfall, den Overlays bieten.

Mein Ziel ist es, eine sichere Dateisystem-Sandbox mit Snapshots zu haben, die mit jeder Linux-Anwendung über jedes (wo praktikabel) zugrunde liegende Dateisystem verwendet werden kann, sodass Sie Änderungen rückgängig machen oder manuell festschreiben können, wenn Sie bereit sind.

Ich habe den Verdacht, dass modernes Mainline-Linux dank all der Sandboxing-/Virtualisierungsinnovationen der letzten Jahre alle notwendigen Funktionen dafür eingebaut hat, wenn ich nur wüsste, wie man sie benutzt.

Akzeptierte Antwort:

Ein Versuch eines online Lösung, aber es ist noch nicht ganz da.

Das Setup (in z.B. /tmp Verzeichnis, als root):

LOWER=$HOME
mkdir u1 w1 o1 O
mount -t overlay overlay -o lowerdir=$LOWER,upperdir=u1,workdir=w1 o1
mount --bind o1 O

Dann können Sie in O arbeiten Verzeichnis, das eine Überlagerung von $LOWER ist . Wenn Sie den Schnappschuss machen möchten:

mkdir u2 w2 o2
mount -t overlay overlay -o lowerdir=o1,upperdir=u2,workdir=w2 o2

(Beachten Sie, dass verschachtelte Überlagerungen wie diese auf älteren Kerneln nicht funktionieren).

Aber dann möchte ich eine Möglichkeit, die Bindungshalterung bei O atomar zu ändern auf o2 zeigen statt o1 . Ich weiß nicht, wie ich das anders machen soll als:

umount O
mount --bind o2 O

(Nicht atomar; Es gibt ein Fenster, in dem O ist nicht gemountet).

Im Idealfall könnten laufende Prozesse weiterlaufen, ohne zu wissen, dass das zugrunde liegende Dateisystem von O von o1 geändert hatte zu o2 . Ich weiß nicht, ob dies möglich ist oder ob das zugrunde liegende Dateisystem von O geändert wird so werden geöffnete Anwendungen zu sehr gestört. Ich muss weiter nachforschen.

Dann einmal O wurde zu o2 umgeleitet , können wir o1 erneut einhängen als Vorsichtsmaßnahme schreibgeschützt, führen Sie dann eine Offline-Zusammenführung durch, beispielsweise mit rdiffdir oder overlayfs-tools.

Verwandte:Holy Sheet Spickzettel

Schließlich möchten wir eine Möglichkeit, o2 atomar neu einzuhängen als lowerdir=$HOME,upperdir=u2,workdir=w2 damit o1 , u1 und w1 (alle jetzt leeren Verzeichnisse) konnten entfernt werden. Auch hier weiß ich nicht, ob dies möglich ist.

Andernfalls können wir Snapshots erstellen, indem wir Overlays einfach immer tiefer verschachteln und das Overlay und die oberen Verzeichnisse für jedes bereitgestellte Verzeichnis belassen, ohne zu versuchen, es zusammenzuführen oder zu bereinigen. Aber die Anzahl der verschachtelten Overlays, die gemountet werden können, ist wahrscheinlich begrenzt. Und irgendwann müssen wir die Ebenen immer noch nach unten zusammenführen, wenn wir Änderungen beibehalten wollen.


Linux
  1. So verschlüsseln Sie ein einzelnes Linux-Dateisystem

  2. Linux – Wie wird ein Remote-Dateisystem mit Angabe einer Portnummer gemountet?

  3. Mounts unter Linux binden

  4. So mounten und unmounten Sie Dateisysteme/Partitionen unter Linux (Mount/Umount-Befehlsbeispiele)

  5. Allgemeine NFS-Mount-Optionen in Linux

So mounten Sie eine NFS-Freigabe unter Linux

So mounten Sie eine ISO-Datei unter Linux

Anpassen von Linux-Dateisystembefehlen

So mounten Sie ein Remote-Linux-Dateisystem mit SSHFS

Wie mounte ich eine ISO-Datei unter Linux?

Linux:Case-INSENSITIVE Dateisystem