AUFS: ¿Cómo crear una rama de lectura/escritura de solo una parte de un árbol de directorios?

AUFS: ¿Cómo crear una rama de lectura/escritura de solo una parte de un árbol de directorios?

AuFS (otro sistema de archivos de unión) nos permite fusionar dos árboles en uno, incluso cuando esos árboles se superponen. Luego podemos dirigir las escrituras en el árbol fusionado hacia una de las ramas y las lecturas en otra.

El uso clásico de esto es con un sistema de archivos flash y un disco ram, comoeste(ref 1) para crear un sistema de archivos raíz de solo lectura que no rompa Linux. Todas las escrituras de archivos van a la RAM. Después de reiniciar, el sistema se restaura a la configuración original.

  • /dir1= solo lectura
  • /dir2= leer/escribir
  • /aufs= fusión de /dir1y/dir2

/aufsluego se vuelve a montar para --movehacerlo /(raíz)

Simplificado, el ejemplo en (ref 1) simplemente hace esto

mount -t aufs br=/dir2:/dir1 /aufs
mount --move /aufs /

Sin embargo, quiero usarlo de manera que el elemento grabable ( /dir2) esté en un disco real, no en un disco RAM. De esa manera, después de reiniciar, conservará sus datos.

Pero necesito asegurarme de que ciertos archivos en dir2 no se conserven y se restauren a sus /dir1valores predeterminados (). Esto garantiza que los arranques futuros siempre utilicen los archivos tal como se envían. Sin perder datos de usuario ni de registro.

Por ejemplo , los archivos modificados en /etc, /bin, no deberían sobrevivir al reinicio./boot/usr

Elpagina web de la AUF(ref 2) tiene muy pocos ejemplos.

Entonces a la pregunta: ¿Cuál es la forma correcta de hacer esto usando AuFS?

Puedo pensar en lo siguiente:

  1. Modificar el primer comando de montaje de alguna manera.
  2. Agregue más comandos de montaje usando aufs add/del antes del segundo montaje
  3. Simplemente elimine los árboles que no deben conservarse /dir2en el momento del arranque.
  4. Árbol parcial ( etc, bin, boot, lib, etc) entmpfs

Árbitro 1:https://help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash
Árbitro 2:http://aufs.sourceforge.net/aufs.html

Respuesta1

Opción 1: auFSpor sí solo no admite dicha opción de montaje, por lo que la opción n.° 1 está muerta. Tienes que solucionar eso.

Opción #3: Por supuesto, puedes simplemente eliminar esos directorios en cada inicio. Puede que sea la forma más sencilla que veo aquí.

Opcion 2: Podrías trabajar con un tmpfs. Así que primero crea un archivo tmpfs, digamos de 500 MB de tamaño:

mount -t tmpfs -o rw,size=500M tmpfs /tmpfs

Ahora tenemos:

  • /dir1: solo lectura
  • /dir2: leer escribir
  • /tmpfs: lectura/escritura en RAM
  • /aufs: la superposición de /dir1y/dir2

Dentro /tmpfs, creamos aquellos directorios que deseas conservar:

mkdir -p /tmpfs/{etc,usr,boot,bin}

Aviso, lo hacemos cuando ya fusionamos los dos directorios. Entonces, cuando el árbol de directorios /aufsya existe. Sin embargo, ahora hacemos un montaje por directorio que debe conservarse:

mount -t aufs -o dirs=/tmpfs/etc=rw:/dir2/etc=ro none /aufs/etc
mount -t aufs -o dirs=/tmpfs/usr=rw:/dir2/usr=ro none /aufs/usr
mount -t aufs -o dirs=/tmpfs/boot=rw:/dir2/boot=ro none /aufs/boot
mount -t aufs -o dirs=/tmpfs/bin=rw:/dir2/bin=ro none /aufs/bin

Ahora tiene un árbol de directorios en /aufsel que puede escribir archivos en todas partes, pero cuando escribe, /etcpor ejemplo, se escribirá en /tmpfs/etc, que está en la RAM, por lo que no sobrevive al reinicio. Otros archivos, /homepor ejemplo, se escriben en /dir2/home, que es un sistema de archivos de lectura y escritura y, por lo tanto, sobrevive al reinicio.

Otra solución: También utilizo un sistema cliente que utiliza un sistema de archivos superpuesto y datos de usuario conservados. Así es como lo resolví: simplemente un sistema de archivos de solo lectura y un tmpfs montado sobre él. Más tarde, cuando el usuario inicia sesión, monto su directorio de inicio desde un servidor Samba de lectura y escritura. Por lo tanto, todos sus datos de usuario se almacenan y conservan en /home, y el resto no sobrevive al reinicio. En su caso, podría simplemente colocarla /homeen otra partición física que sea de lectura y escritura y montarla más tarde en /aufs/home.

información relacionada