Diese Antwort und E-Mail-Nachricht zeigen an, dass etwas mit dem Namen "OverlayFS" in Ubuntu 11.10 verfügbar ist und aufs in Ubuntu 12.04 mit Nachdruck ersetzt.
Wie benutze ich es? Wo ist die Dokumentation?
filesystem
overlayfs
ændrük
quelle
quelle
mount -t overlayfs -o rw,uppderdir=x,lowerdir=y overlayfs /mount/point
. Darüber hinaus bin ich ahnungslos. Ich bastele daran in einem Live-System, aber ich habe es noch nicht geschafft, es zum Laufen zu bringen. Ich wünschte, ich könnte genau herausfinden, was "oberes Verzeichnis" und "unteres Verzeichnis" bedeuten. Ich habe nichts gefunden.Antworten:
Edit: Da diese Antwort zu schreiben, einige Dinge in overlayfs geändert haben, nämlich die Zugabe eines gewünschten Parameters
workdir
finden totti Antwort unten für eine detaillierte Beschreibung dieser neuen Parameter.Ich habe es endlich geschafft, es zu finden. Ich habe in der Kernelquelle Verweise darauf gefunden, aber aus irgendeinem Grund wird es nicht im Git-Baum auf kernel.org angezeigt. Aber! Wenn Sie die Ubuntu-Kernelquelle wie folgt herunterladen:
apt-get source linux-image-3.0.0-16-generic
Sie finden sie inlinux-3.0.0/Documentation/overlayfs.txt
. Es ist auch im linux-doc-Paket in verfügbar/usr/share/doc/linux-doc/filesystems/overlayfs.txt.gz
.Da es sich bei der eigentlichen Hilfedokumentation eher um eine "Funktionsweise" als um eine "Vorgehensweise zum Mounten" handelt, folgt eine kurze Zusammenfassung (in der Kerneldokumentation gibt es ein Beispiel):
mount -t overlayfs -o [mount options] overlayfs [mountpoint for merged system]
Wo [Einhängeoptionen] sein können:
Eine Sache, die mich anfangs verwirrt hat, daher sollte ich wahrscheinlich klarstellen, dass das Mounten eines Overlays kein Dateisystem mounten kann. Ich habe versucht, ein Squashfs-Dateisystem mit einem Overlayfs-Mount zu mounten, aber so funktioniert das nicht. Sie müssen zuerst das Dateisystem (in meinem Fall squashfs) in ein beliebiges Verzeichnis mounten und dann mit overlayfs den Mount-Punkt (ein Verzeichnis) und ein anderes Verzeichnis in ein tertiäres Verzeichnis (den overlayfs-Mount-Punkt) mischen (bearbeiten: dieses "tertiäre" Verzeichnis) kann eigentlich das Verzeichnis upperdir = sein). Im tertiären Verzeichnis sehen Sie die zusammengeführten Dateisysteme (oder Verzeichnisbäume - es ist flexibel).
Beispiel 1, das das Root-Dateisystem überlagert
Ich habe an einer Ubuntu-Hybrid-Bootdiskette gearbeitet, auf der das Ubuntu-Basissystem als filesystem.squashfs existiert, und ich habe Dateien mit den Namen ubuntu.overlay kubuntu.overlay xubuntu.overlay und lubuntu.overlay. Die Overlay-Dateien sind Basisinstallationen dieser Systeme, bei denen der Inhalt von filesystem.squashfs (aus Platzgründen) beschnitten ist. Dann habe ich die Init-Skripte modifiziert, um die Overlay-Datei der richtigen Distribution (von einem Boot-Parameter) mit Overlayfs und den obigen Optionen zu überlagern, und es funktioniert wie ein Zauber!
Dies sind die Zeilen, die ich in meinen Init-Skripten verwendet habe (sobald alle Variablen übersetzt wurden):
Bitte beachte , dass oberhalb filesystem.squashfs ist ein Verzeichnis von casper erstellt, keine Datei.
Diese drei Anweisungen erstellen ein
/overlay
Verzeichnis,/overlay
hängen ein squashfs-Dateisystem in das Verzeichnis ein und verwenden dann OverlayFS, um den Inhalt von/overlay
over im Wesentlichen zusammenzuführen/
.Beispiel 2, transparentes Zusammenführen zweier Verzeichnisse
Während ich mein Live-USB für jedes Release neu aufbaue, nutze ich OverlayFS, um eine Menge Zeit zu sparen. Ich beginne mit einem Verzeichnis namens ubuntu-base, das den Inhalt des Ubuntu-Core-Images enthält, das die einfachste Installation darstellt. Ich werde dann Verzeichnisse mit den Namen ubuntu, kubuntu, lubuntu und xubuntu erstellen.
Dann verwende ich OverlayFS, damit die Dateien aus der Ubuntu-Basis in den einzelnen Verzeichnissen angezeigt werden. Ich würde so etwas verwenden:
Dadurch werden die Dateien von Ubuntu-Base im Kubuntu-Ordner angezeigt. Dann kann ich
chroot
in den kubuntu ordner und sowas machenapt-get install kubuntu-desktop
. Alle Änderungen, die in diesem OverlayFS-Mount vorgenommen werden, verbleiben im oberen Verzeichnis, in diesem Fall im Kubuntu-Ordner. Sobald ich die OverlayFS-Bereitstellung aufgehoben habe, werden die Dateien, die tatsächlich in Ubuntu-Base vorhanden sind, aber im Kubuntu-Ordner "gespiegelt" sind, ausgeblendet, sofern sie nicht geändert wurden. Dies verhindert, dass ich mehrere Kopien der Dateien in Ubuntu-Base haben muss, während ich sie weiterhin so verwenden kann, als ob sie physisch an jedem Ort existieren würden.quelle
overlay
nicht mitoverlayfs
Von https://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt :
quelle
Ich habe diese Artikel um ein Skript für Overlays erweitert, mit dem schreibgeschützte Root-Fs eingerichtet werden.
Ich hoffe es hilft.
quelle
Minimal lauffähiges Beispiel
GitHub Upstream .
Ausgabe des ersten
ls
mit dem mount:Ausgabe der Sekunde
ls
ohne Mount:Interpretation:
work/
Verzeichnis), den wir nicht interessieren solltenBeispiel angepasst aus: Beispiel OverlayFS-Verwendung
Hier ist ein komplexeres Beispiel mit mehreren unteren Ebenen: Overlayfs werden mit mehreren Ebenen neu geladen (Migration weg von aufs)
Getestet unter Ubuntu 18.04, Linux-Kernel 4.15.0.
quelle