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

Linux-AuFS-Beispiele:Ein weiteres Tutorial zum Union-Dateisystem (UnionFS-Implementierung)

AuFS steht für Another Union File System.

AuFS begann als Implementierung des UnionFS Union File System.

Ein Union-Dateisystem nimmt ein vorhandenes Dateisystem und überlagert es transparent auf einem neueren Dateisystem. Es ermöglicht die Koexistenz von Dateien und Verzeichnissen separater Dateisysteme unter einem Dach. AuFS kann mehrere Verzeichnisse zusammenführen und eine einzige zusammengeführte Ansicht davon bereitstellen.

AuFS wird in vielen Open-Source-Projekten wie Slax, Knoppix und vielen anderen Live-CD- und Live-USB-Distributionen verwendet.

Gehen Sie auf Debian-basierten Systemen, zum Beispiel auf Ubuntu, wie folgt vor, um aufs.

zu installieren
# apt-get install aufs-tools

Beispiel 1 – Verstehen, wie AuFS funktioniert

Dieses Beispiel zeigt, wie zwei Verzeichnisse desselben Dateisystems gemountet werden.

# mkdir /tmp/dir1

# mkdir /tmp/aufs-root

# mount -t aufs -o br=/tmp/dir1:/home/lakshmanan none /tmp/aufs-root/

Die ersten beiden Befehle erstellten 2 neue Verzeichnisse. Die mount.aufs ist der Befehl zum Mounten des Dateisystems als Union mount.

Der Mount-Befehl gibt an, dass „/tmp/dir1″ und /home/lakshmanan“ unter „/tmp/aufs-root“ gemountet werden sollen. Das Verzeichnis „/tmp/aufs-root“ enthält den Inhalt von „/tmp/dir1“ und „/home/lakshmanan“.

Die folgenden Optionen werden im obigen Mount-Befehlsbeispiel verwendet:

  • -o – gibt Optionen an, die an das Dateisystem übergeben werden sollen
  • br – gibt einen Zweig an, wobei jeder Zweig durch einen Doppelpunkt (:) getrennt ist. Ein Branch ist nichts anderes als ein Verzeichnis auf einem System.
  • none – gibt an, dass kein Gerät damit verbunden ist, da wir zwei Verzeichnisse mounten werden

Wie Sie an der Ausgabe des Befehls unten ls -l sehen, können wir sehen, dass aufs den Inhalt der 2 separaten Verzeichnisse zusammenführt und eine einheitliche Ansicht bringt.

# ls -l /tmp/dir1/
-rw-r--r-- 1 root       root       23 Mar 25 14:21 file_in_tmp_dir1

# ls -l /home/lakshmanan
-rw-r--r-- 1 root       root            26 Mar 25 14:20 file_in_home_dir

# ls -l /tmp/aufs-root/
-rw-r--r-- 1 root       root            26 Mar 25 14:20 file_in_home_dir
-rw-r--r-- 1 root       root            23 Mar 25 14:21 file_in_tmp_dir1

Wenn keine Berechtigungen angegeben sind, wird der erste Zweig standardmäßig als beschreibbar gemountet und die verbleibenden Zweige werden schreibgeschützt gemountet.

Wenn Sie also eine Datei innerhalb von ‚/tmp/aufs-root/‘ erstellen, wird sie physisch unter „/tmp/dir1“ erstellt, da dies der einzige beschreibbare Zweig ist.

Beispiel 2 – Einheitliche Ansicht von Home-Verzeichnissen

Manchmal haben Systemadministratoren mehrere Festplattenpartitionen mit Home-Verzeichnissen mehrerer Benutzer. Wir werden ein Beispiel sehen, wie wir es als einheitliche Ansicht erstellen und den Verwaltungsprozess vereinfachen können.

In diesem Beispiel:

  • /home -> ist der Einhängepunkt von /dev/sda2 mit „lakshmanan“- und „sysadmin“-Benutzern
  • /home1 -> ist der Einhängepunkt von /dev/sdb2 mit dem Benutzer „test“.
# mount -t aufs -o br=/home=rw:/home1=rw -o udba=reval  none /common/

# ls -l /common/
drwxr-xr-x 39 lakshmanan lakshmanan  4096 Mar 25 15:52 lakshmanan
drwxr-xr-x 26 sysadmin   sysadmin    4096 Mar 25 15:51 sysadmin
drwxr-xr-x  2 root       root        4096 Mar 25 16:36 test

Der obige Mount-Befehl hat eine zusätzliche Option namens „udba“, die sich auf „User’s Direct Branch Access“ bezieht. Diese Option sagt, was zu tun ist, wenn der Benutzer direkt auf einen Zweig zugreift und Dateien erstellt/aktualisiert, ohne über AuFS zu gehen.

Folgende Werte sind für udba möglich:

  • udba=none – Mit dieser Option wird das AuFS schneller, zeigt aber möglicherweise falsche Daten an, wenn der Benutzer Dateien/Verzeichnisse erstellt hat, ohne das AuFS zu durchlaufen.
  • udba=reval – Mit dieser Option sucht das AuFS erneut nach den Zweigen und aktualisiert sie. Daher werden alle Änderungen, die an Verzeichnissen innerhalb des Zweigs vorgenommen werden, in „/common“ widergespiegelt.
  • udba=notify – Mit dieser Option registriert sich das AuFS für alle Verzeichnisse in den Branches für inotify. Dies wirkt sich auf die Leistung von AuFS aus.
# touch /home/lakshmanan/TGS

# ls -l /common/lakshmanan/
.
.
-rw-r--r-- 1 root       root             0 Mar 25 17:17 TGS

Der Touch-Befehl erstellte eine Datei namens „TGS“ im Home-Verzeichnis von „lakshmanan“, ohne AuFS zu durchlaufen. Da wir mit „udba=retval“ gemountet haben, hat AuFS bei der Ausführung von ls eine erneute Suche durchgeführt und die neu erstellte Datei angezeigt.

Beachten Sie auch, dass wir im vorherigen mount-Befehl die Berechtigung für jeden Zweig als readwrite angegeben haben. Wenn also eine Datei unter /common/test/ erstellt wird, wird sie physisch in „/home1/test/“ erstellt, dem tatsächlichen physischen Speicherort. Gleiches gilt auch für andere Verzeichnisse.

# touch /common/test/Testing

# ls -l /home1/test/
-rw-r--r-- 1 root root  0 Mar 25 18:26 Testing

Beispiel 3 – Einhängen mit Nur-Lese-Berechtigung für Branches

Sie können auch mounten, indem Sie Berechtigungen für jeden Zweig festlegen.

# mount -t aufs -o br=/tmp/dir1=rw:/home/lakshmanan=ro -o udba=reval none /tmp/aufs-root/

Der obige Befehl wird das /tmp/aufs-Stammverzeichnis einhängen, indem „/tmp/dir1“ als beschreibbar und „/home/lakshmanan“ als schreibgeschützt festgelegt wird. Jede Änderung, die Sie in /tmp/aufs-root vornehmen, wird nur unter „/tmp/dir1“ gespeichert, da dies das einzige beschreibbare Verzeichnis ist.

Die folgende Befehlsfolge kann verwendet werden, um das Obige zu überprüfen.

# cat > /home/lakshmanan/1.txt
This is a new file

# cat /tmp/aufs-root/1.txt
This is a new file

# cat >> /tmp/aufs-root/1.txt
This is updated on AuFS space

# cat /home/lakshmanan/1.txt
This is a new file

# cat /tmp/dir1/1.txt
This is a new file
This is updated on AuFS space

In der obigen Befehlsfolge haben wir Folgendes getan:

  • Wir erstellen eine Datei namens 1.txt unter „/home/lakshmanan“.
  • Diese Datei wird aufgrund der oben erläuterten Option udba=retval im Union-Mount-Verzeichnis widergespiegelt
  • Aktualisieren Sie die Datei, die im Union-Mount-Verzeichnis vorhanden ist
  • Auch wenn die Datei in /home/lakshmanan vorhanden ist, nimmt AuFS eine Kopie der Datei und legt sie auf „/tmp/dir1“ ab, da sie als schreibgeschützt gemountet ist.
  • An dieser Kopie hängt es den Inhalt an und speichert die Datei
  • In /home/lakshmanan/1.txt wird die Änderung nicht widergespiegelt
  • Eine neue Datei mit dem Namen „1.txt“ wird unter „/tmp/dir1“ erstellt, die den aktualisierten Inhalt hat

Beispiel 4 – Wenden Sie die Round-Robin-Richtlinie zum Erstellen von Dateien unter AuFS an

Wenn wir mehr als 2 Zweige haben, die beschreibbar sind, können wir eine der vordefinierten Richtlinien auswählen, sodass eine erstellte Datei basierend auf der ausgewählten Richtlinie gespeichert wird.

# mount -t aufs -o br=/tmp/dir1=rw:/home/lakshmanan=rw -o udba=reval -o create=rr none /tmp/aufs-root/

Die Option „create=rr“ gibt an, dass die Round-Robin-Richtlinie für diesen Union-Mount angewendet werden muss. Wenn wir in der Round-Robin-Richtlinie 4 Dateien erstellen, befinden sich 2 Dateien in „/tmp/dir1“ und 2 Dateien in „/home/lakshmanan“.

# touch /tmp/aufs/first-round-robin

# touch /tmp/aufs/second-round-robin

# ls -l /tmp/dir1/first-round-robin
-rw-r--r-- 1 root root 0 Mar 25 21:53 /tmp/dir1/first-round-robin

# ls -l /home/lakshmanan/second-round-robin
-rw-r--r-- 1 root root 0 Mar 25 21:54 /home/lakshmanan/second-round-robin

Linux
  1. Linux tail Command Tutorial für Anfänger (5 Beispiele)

  2. So erstellen und mounten Sie das Btrfs-Dateisystem (mit Beispielen erklärt)

  3. So erstellen und mounten Sie Dateisysteme in Linux

  4. So mounten und unmounten Sie ein Dateisystem unter Linux

  5. mount-Befehlsbeispiele in Linux

Linux shred Command Tutorial für Anfänger (5 Beispiele)

Dbxfs – Dropbox-Ordner lokal als virtuelles Dateisystem in Linux bereitstellen

So mounten Sie Google Drive lokal als virtuelles Dateisystem in Linux

So mounten Sie ein Remote-Linux-Dateisystem mit SSHFS

Tripwire-Tutorial:Hostbasiertes Linux-Angriffserkennungssystem

Linux-Mount-Befehl mit Beispielen