GNU/Linux >> Tutoriales Linux >  >> Linux

Ejemplos de Linux AuFS:otro tutorial del sistema de archivos de la Unión (Implementación de UnionFS)

AuFS significa Otro Sistema de Archivos de Unión.

AuFS comenzó como una implementación de UnionFS Union File System.

Un sistema de archivos de unión toma un sistema de archivos existente y lo superpone de forma transparente en un sistema de archivos más nuevo. Permite que archivos y directorios de sistemas de archivos separados coexistan bajo un mismo techo. AuFS puede combinar varios directorios y proporcionar una única vista combinada de ellos.

AuFS se usa en muchos de los proyectos de código abierto como Slax, Knoppix y muchas otras distribuciones de CD en vivo y USB en vivo.

En sistemas basados ​​en Debian, por ejemplo en Ubuntu, haga lo siguiente para instalar aufs.

# apt-get install aufs-tools

Ejemplo 1:comprender cómo funciona AuFS

Este ejemplo muestra cómo montar dos directorios de un mismo sistema de archivos.

# mkdir /tmp/dir1

# mkdir /tmp/aufs-root

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

Los primeros dos comandos crearon 2 nuevos directorios. El mount.aufs es el comando para montar el sistema de archivos como Union mount.

El comando de montaje especifica que se va a montar en unión "/tmp/dir1" y /home/lakshmanan" en "/tmp/aufs-root". El directorio “/tmp/aufs-root” tendrá el contenido tanto de “/tmp/dir1” como de “/home/lakshmanan”.

Las siguientes opciones se utilizan en el ejemplo de comando de montaje anterior:

  • -o:especifica las opciones que se pasarán al sistema de archivos
  • br:especifica una rama, donde cada rama está separada por dos puntos (:). Una rama no es más que un directorio en un sistema.
  • ninguno:especifica que no tenemos ningún dispositivo asociado, ya que vamos a montar dos directorios

Como puede ver en el siguiente resultado del comando ls -l, podemos ver que aufs está fusionando el contenido de los 2 directorios separados y ofrece una vista unificada.

# 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

De forma predeterminada, si no se especifican permisos, la primera rama se montará como de escritura y las ramas restantes se montarán como de solo lectura.

Entonces, cuando crea cualquier archivo dentro de '/tmp/aufs-root/', físicamente se creará en "/tmp/dir1", ya que es la única rama en la que se puede escribir.

Ejemplo 2:vista unificada de los directorios principales

A veces, los administradores del sistema terminan teniendo varias particiones de disco que tienen directorios de inicio de varios usuarios. Veremos un ejemplo de cómo podemos convertirlo en una vista unificada y simplificar el proceso de administración.

En este ejemplo:

  • /home -> es el punto de montaje de /dev/sda2 que tiene usuarios "lakshmanan" y "sysadmin"
  • /home1 -> es el punto de montaje de /dev/sdb2 que tiene un usuario de "prueba".
# 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

El comando de montaje anterior tiene una opción adicional llamada "udba", que se refiere al "Acceso directo a la rama del usuario". Esta opción dice qué hacer si el usuario accede directamente a una rama y crea/actualiza archivos sin pasar por AuFS.

Los siguientes son valores posibles para udba:

  • udba=none:con esta opción, el AuFS será más rápido, pero puede mostrar datos incorrectos si el usuario creó algún archivo/directorio sin pasar por el AuFS.
  • udba=reval:con esta opción, AuFS volverá a buscar las sucursales y las actualizará. Por lo tanto, cualquier cambio realizado en cualquier directorio dentro de la rama se reflejará en "/common".
  • udba=notify:con esta opción, el AuFS se registrará en inotify para todos los directorios de las sucursales. Esto afecta el rendimiento de AuFS.
# touch /home/lakshmanan/TGS

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

El comando táctil creó un archivo llamado "TGS" en el directorio de inicio de "lakshmanan" sin pasar por AuFS. Dado que montamos usando "udba=retval", cuando ejecutamos ls, AuFS volvió a buscar y muestra el nuevo archivo que se creó.

También tenga en cuenta que, en el comando de montaje anterior, especificamos el permiso para cada rama como lectura y escritura. Entonces, cuando se crea un archivo en /common/test/, se creará físicamente en "/home1/test/", que es la ubicación física real. Lo mismo se aplica a otros directorios también.

# touch /common/test/Testing

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

Ejemplo 3:montaje con permiso de solo lectura para sucursales

También puede montar estableciendo permisos para cada sucursal.

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

El comando anterior montará /tmp/aufs-root, al tener "/tmp/dir1" como de escritura y "/home/lakshmanan" como de solo lectura. Cualquier cambio que haga en /tmp/aufs-root, se guardará solo en "/tmp/dir1", ya que ese es el único directorio en el que se puede escribir.

La siguiente secuencia de comandos se puede utilizar para verificar lo anterior.

# 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

En la secuencia de comandos anterior, hicimos lo siguiente:

  • Estamos creando un archivo llamado 1.txt en "/home/lakshmanan".
  • Este archivo se refleja en el directorio de montaje de unión, debido a la opción udba=retval que explicamos anteriormente
  • Actualice el archivo que está presente en el directorio de montaje de la unión
  • Aunque el archivo está presente dentro de /home/lakshmanan, ya que está montado como de solo lectura, AuFS toma una copia del archivo y la coloca en "/tmp/dir1".
  • Además de esa copia, agrega el contenido y guarda el archivo
  • En /home/lakshmanan/1.txt, el cambio no se refleja
  • Se crea un nuevo archivo llamado "1.txt" en "/tmp/dir1" que tiene el contenido actualizado

Ejemplo 4:aplicar la política Round Robin para crear archivos en AuFS

Cuando tenemos más de 2 sucursales en las que se puede escribir, podemos elegir cualquiera de las políticas predefinidas, de modo que un archivo creado se almacenará en función de la política elegida.

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

La opción “create=rr”, especifica que se debe aplicar la política de turno rotativo para este montaje de unión. En la política de operación por turnos, si creamos 4 archivos, 2 archivos estarán en “/tmp/dir1” y 2 archivos estarán en “/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. Tutorial de comandos tail de Linux para principiantes (5 ejemplos)

  2. Cómo crear y montar el sistema de archivos Btrfs (explicado con ejemplos)

  3. Ejemplos de comandos de montaje en Linux

  4. Ejemplos de comandos ln en Linux

  5. Ejemplos de comandos de archivo en Linux

Tutorial de comando de trituración de Linux para principiantes (5 ejemplos)

Dbxfs:monte la carpeta de Dropbox localmente como sistema de archivos virtual en Linux

Cómo montar Google Drive localmente como sistema de archivos virtual en Linux

Cómo montar un sistema de archivos Linux remoto usando SSHFS

Tutorial de Tripwire:Sistema de detección de intrusos basado en host Linux

Comando de montaje de Linux con ejemplos