
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/dir1
y/dir2
/aufs
luego se vuelve a montar para --move
hacerlo /
(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 /dir1
valores 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:
- Modificar el primer comando de montaje de alguna manera.
- Agregue más comandos de montaje usando aufs add/del antes del segundo montaje
- Simplemente elimine los árboles que no deben conservarse
/dir2
en el momento del arranque. - Á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: auFS
por 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/dir1
y/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 /aufs
ya 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 /aufs
el que puede escribir archivos en todas partes, pero cuando escribe, /etc
por ejemplo, se escribirá en /tmpfs/etc
, que está en la RAM, por lo que no sobrevive al reinicio. Otros archivos, /home
por 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 /home
en otra partición física que sea de lectura y escritura y montarla más tarde en /aufs/home
.