GNU/Linux >> Linux Esercitazione >  >> Linux

Esempi Linux AuFS:un altro tutorial di Union File System (implementazione UnionFS)

AuFS sta per Another Union File System.

AuFS è nato come implementazione di UnionFS Union File System.

Un filesystem union prende un filesystem esistente e lo sovrappone in modo trasparente a un filesystem più recente. Consente a file e directory di filesystem separati di coesistere sotto un unico tetto. AuFS può unire più directory e fornirne un'unica vista unita.

AuFS è utilizzato in molti dei progetti opensource come Slax, Knoppix e molti altri CD live e distribuzioni USB live.

Sui sistemi basati su Debian, ad esempio su Ubuntu, procedi come segue per installare aufs.

# apt-get install aufs-tools

Esempio 1 – Capire come funziona AuFS

Questo esempio mostra come montare due directory di uno stesso filesystem.

# mkdir /tmp/dir1

# mkdir /tmp/aufs-root

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

I primi due comandi hanno creato 2 nuove directory. mount.aufs è il comando per montare il filesystem come Union mount.

Il comando mount specifica che eseguirà l'unione di mount “/tmp/dir1″ e /home/lakshmanan” sotto “/tmp/aufs-root”. La directory “/tmp/aufs-root” avrà il contenuto sia di “/tmp/dir1” che di “/home/lakshmanan”.

Le seguenti opzioni vengono utilizzate nell'esempio del comando mount sopra:

  • -o – specifica le opzioni da passare al filesystem
  • br – specifica un ramo, in cui ogni ramo è separato da due punti (:). Un ramo non è altro che una directory su un sistema.
  • none:specifica che non abbiamo alcun dispositivo associato, poiché monteremo due directory

Come puoi vedere dall'output del comando ls -l sottostante, possiamo vedere che aufs sta fondendo il contenuto delle 2 directory separate e offre una vista unificata.

# 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

Per impostazione predefinita, se non vengono specificate autorizzazioni, il primo ramo verrà montato come scrivibile e i rami rimanenti verranno montati come di sola lettura.

Quindi, quando crei un file all'interno di "/tmp/aufs-root/", fisicamente verrà creato in "/tmp/dir1", poiché è l'unico ramo scrivibile.

Esempio 2 – Visualizzazione unificata delle home directory

A volte, gli amministratori di sistema finiscono per avere più partizioni del disco che hanno directory home di più utenti. Vedremo un esempio di come possiamo renderlo una vista unificata e semplificare il processo di amministrazione.

In questo esempio:

  • /home -> è il punto di montaggio di /dev/sda2 con utenti "lakshmanan" e "sysadmin"
  • /home1 -> è il punto di montaggio di /dev/sdb2 con utente "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

Il comando mount sopra ha un'opzione aggiuntiva chiamata "udba", che si riferisce a "Accesso diretto dell'utente". Questa opzione dice cosa fare se l'utente accede direttamente a un ramo e crea/aggiorna file senza passare da AuFS.

I seguenti sono valori possibili per udba:

  • udba=none – Con questa opzione, AuFS sarà più veloce, ma potrebbe mostrare dati errati, se l'utente ha creato file/directory senza passare attraverso AuFS.
  • udba=reval – Con questa opzione, AuFS cercherà nuovamente i rami e li aggiornerà. Pertanto, qualsiasi modifica apportata a qualsiasi directory all'interno del ramo si rifletterà in "/common".
  • udba=notify – Con questa opzione, AuFS registrerà per inotify per tutte le directory nei rami. Ciò influisce sulle prestazioni di AuFS.
# touch /home/lakshmanan/TGS

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

Il comando touch ha creato un file chiamato "TGS" nella home directory di "lakshmanan" senza passare da AuFS. Poiché abbiamo montato utilizzando "udba=retval", quando eseguiamo ls, AuFS ha eseguito una nuova ricerca e mostra il nuovo file che è stato creato.

Si noti inoltre che, nel precedente comando mount, abbiamo specificato l'autorizzazione per ciascun ramo come readwrite. Quindi, quando un file viene creato in /common/test/, verrà creato fisicamente in "/home1/test/", che è la posizione fisica effettiva. Lo stesso vale anche per altre directory.

# touch /common/test/Testing

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

Esempio 3:montaggio con autorizzazione di sola lettura per i rami

Puoi anche montare impostando le autorizzazioni per ogni ramo.

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

Il comando precedente monterà /tmp/aufs-root, avendo "/tmp/dir1" come scrivibile e "/home/lakshmanan" come sola lettura. Qualsiasi modifica apportata in /tmp/aufs-root, verrà salvata solo in "/tmp/dir1", poiché questa è l'unica directory scrivibile.

La seguente sequenza di comandi può essere utilizzata per verificare quanto sopra.

# 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

Nella sequenza di comandi sopra, abbiamo fatto quanto segue:

  • Stiamo creando un file chiamato 1.txt sotto “/home/lakshmanan”.
  • Questo file si riflette nella directory mount dell'unione, a causa dell'opzione udba=retval che abbiamo spiegato sopra
  • Aggiorna il file presente nella directory di montaggio dell'unione
  • Anche se il file è presente all'interno di /home/lakshmanan, dal momento che è montato in sola lettura, AuFS prende una copia del file e la posiziona su “/tmp/dir1”.
  • In cima a quella copia, aggiunge il contenuto e salva il file
  • In /home/lakshmanan/1.txt, la modifica non si riflette
  • Un nuovo file denominato "1.txt" viene creato in "/tmp/dir1" con il contenuto aggiornato

Esempio 4:applicare la politica Round Robin per la creazione di file in AuFS

Quando abbiamo più di 2 branch scrivibili, possiamo scegliere uno qualsiasi dei criteri predefiniti, in modo che un file creato venga archiviato in base al criterio scelto.

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

L'opzione "create=rr", specifica che la politica round robin deve essere applicata per questo montaggio union. Nella politica round robin, se creiamo 4 file, 2 file saranno in "/tmp/dir1" e 2 file 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. Come creare e montare il file system Btrfs (spiegato con esempi)

  2. Come creare e montare filesystem in Linux

  3. Come montare e smontare un file system in Linux

  4. mount Esempi di comandi in Linux

  5. file Esempi di comandi in Linux

Esercitazione sui comandi shred Linux per principianti (5 esempi)

Dbxfs – Monta la cartella Dropbox localmente come file system virtuale in Linux

Come montare Google Drive localmente come file system virtuale in Linux

Come montare un filesystem Linux remoto usando SSHFS

Tutorial Tripwire:Sistema di rilevamento delle intrusioni basato su host Linux

Comando di montaggio Linux con esempi