Linux Filesystem Overlay - wofür wird workdir verwendet? (OverlayFS)

35

OverlayFS verfügt workdirneben zwei weiteren Verzeichnissen über eine Option lowerdirund upperdirmuss ein leeres Verzeichnis sein.

Leider wird in der Kerneldokumentation von Overlayfs nicht viel über den Zweck dieser Option gesprochen.

Das "workdir" muss ein leeres Verzeichnis auf demselben Dateisystem sein wie upperdir.

Bei schreibgeschützten Overlays workdirkann es vorkommen, dass das unter den Overlays ommittet upperdir. Dies gibt mir den Hinweis, dass es mit dem Schreiben der zusammengeführten Dateien zu tun hat.

Bitte erläutern Sie, was passiert, workdirwenn Dateien im zusammengeführten Verzeichnis geschrieben oder geändert werden. Warum reicht das Beschreiben upperdirnicht aus?

versuchen-fangen-endlich
quelle

Antworten:

27

Die Option workdir ist erforderlich und wird zum Vorbereiten von Dateien verwendet, bevor diese in einer atomaren Aktion zum Überlagerungsziel verschoben werden (das workdir muss sich auf demselben Dateisystem wie das oberste Verzeichnis befinden).

Quelle: http://windsock.io/the-overlay-filesystem/

Ich würde eine Vermutung wagen, dass "das Überlagerungsziel" bedeutet upperdir.

Also ... bestimmte Dateien (vielleicht "Whiteout" -Dateien?) Werden nicht atomar erstellt und konfiguriert workdirund dann atomar verschoben upperdir.

mpb
quelle
-3

Denn wenn Sie eine Datei löschen, die sich auf lowerdir befindet, werden diese Informationen im workdir gespeichert.

Ipor Sircer
quelle
1
Hm, aber wenn ich Dateien im zusammengeführten Verzeichnis lösche, bleibt das Arbeitsverzeichnis leer, aber im oberen Verzeichnis werden Dateien mit einem Flag ( ) angezeigt, wenn sie aus dem unteren Verzeichnis "überlagert" gelöscht wurden. (Dieselbe Datei verbleibt natürlich im unteren Verzeichnis.)cc--------- 1 root root 0, 0 Nov 19 18:22 ivebeendeleted
try-catch-finally
Ich denke, wenn Sie eine Datei löschen, wird eine "Whiteout" -Datei erstellt und diese wird im obersten Verzeichnis gespeichert, nicht im Arbeitsverzeichnis. Die Whiteout-Datei ist ein Zeichengerät (mit "c"
-Flag