AUFS: ¿Cómo crear una twig de lectura / escritura de sólo parte de un tree de directorys?

AuFS (otro sistema de files de unión) nos permite combinar dos treees en uno, incluso cuando esos treees se superponen. Entonces podemos dirigir las escrituras al tree combinado hacia una de las twigs y las lee a otra.

El uso clásico de esto es con un sistema de files flash y un disco RAM, como este (ref 1) para crear un sistema de files raíz de sólo lectura que no rompa Linux. Todas las escrituras de files van a RAM. Después de un reinicio, el sistema se restaura a la configuration como se envió.

  • /dir1 = solo lectura
  • /dir2 = lectura / escritura
  • /aufs = combinación de /dir1 y /dir2

/aufs se vuelve a montar con --move para que sea / (root)

Simplificado, el ejemplo en (ref 1) sólo hace esto

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

Sin embargo, quiero usarlo de tal manera que el /dir2 escribible ( /dir2 ) esté en un disco real, no en un disco ramdisk. De esta forma, después de un reinicio, conservará sus datos.

Pero necesito asegurar ciertos files en dir2 no se conservan y se restauran a sus ( /dir1 ). Esto garantiza que las futuras botas siempre utilicen los files enviados. Sin perder el usuario y los datos de logging.

Por ejemplo, los files modificados en /etc , /bin , /boot , /usr no deben sobrevivir a un reinicio.

La página web AUFS (ref 2) tiene muy pocos ejemplos.

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

Puedo pensar en lo siguiente:

  1. Modificar el primer command de assembly de alguna manera
  2. Agregue más commands de assembly utilizando el command aufs add / del antes del segundo assembly
  3. Simplemente elimine los treees que no se deben conservar desde /dir2 durante el arranque
  4. Árbol parcial ( etc, bin, boot, lib, etc ) en tmpfs

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

Opción # 1 : auFS por sí mismo no soporta tal opción de assembly, por lo que la opción # 1 está muerta. Tienes que trabajar alnetworkingedor de eso.

Opción # 3 : Por supuesto, usted puede simplemente eliminar en cada inicio de esos directorys. Puede ser la manera más simple que veo aquí.

Opción # 2 : Usted podría trabajar con un tmpfs . Así que primero crear un tmpfs , digamos de tamaño 500 MB:

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

Tenemos ahora:

  • /dir1 : sólo lectura
  • /dir2 : lectura / escritura
  • /tmpfs : lectura / escritura en RAM
  • /aufs : la superposition de /dir1 y /dir2

Dentro de /tmpfs , creamos aquellos dirs que deseas conservar:

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

Tenga en count, que lo hacemos cuando ya se fusionan los dos dirs. Así que cuando el tree de directorys en /aufs ya existe. Sin embargo, ahora hacemos un aufs mount por directory que debe ser preservado:

 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 tienes un tree de directorys en /aufs wehre puedes escribir files en todas partes, pero al escribir en /etc por ejemplo, se escribirá en /tmpfs/etc , que está en RAM, por lo tanto no sobrevive a un reinicio. Otros files en /home por ejemplo se escriben en /dir2/home , que es un sistema de files de lectura-escritura y por lo tanto sobrevive a un reinicio.

Otra solución : También uso el sistema cliente que utiliza un sistema de ficheros superpuestos y datos de usuario conservados. He aquí cómo lo solucioné: Simplemente un sistema de files de sólo lectura y un tmpfs que está montado sobre él. Más tarde, cuando el usuario inicia session en su directory de inicio de un server de samba de lectura-escritura. Así que todos sus datos de usuario se almacenan y se conservan en /home , y el rest no sobrevive a un reinicio. En tu caso podrías simplemente poner /home en otra partición física que sea read-writable y montarla más tarde en /aufs/home .