GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿Fusionar los cambios en el sistema de archivos superior al sistema de archivos inferior en el montaje de superposición de Linux (overlayfs)?

Me gustaría poder fusionar los cambios del sistema de archivos superior de un montaje superpuesto a un sistema de archivos inferior.

Estoy interesado tanto online (es decir, fusionar mientras la superposición está montada) y sin conexión (desmontar la superposición y luego fusionar) soluciones.

He encontrado un par de soluciones fuera de línea, que he agregado como respuestas.

¿Alguien sabe de alguna online soluciones? Sería bueno tener un comando de tipo "confirmar" que pueda ejecutar para fusionar las capas mientras la superposición aún está montada.

Algo así se ha preguntado en las siguientes preguntas sin respuesta:

  • ¿Hay alguna forma de modificar un archivo y sincronizarlo con el directorio inferior en OverlayFs?
  • ¿Cómo modificar un archivo inferior a través de un directorio OverlayFS?
  • OverlayFS edita archivos sin problemas en el directorio inferior
  • OverlayFS:¿cómo hacer que los cambios en el sistema de archivos superior sean persistentes sin desmontarlos?

Los comentarios en estas publicaciones sugieren diversas fusiones y bcache, que resuelven casos de uso específicos, pero no el caso de uso genérico independiente del sistema de archivos que proporcionan las superposiciones.

Mi objetivo es tener un entorno de pruebas de sistema de archivos seguro con instantáneas que se puedan usar con cualquier aplicación de Linux en cualquier sistema de archivos subyacente (cuando sea práctico), lo que le permitirá revertir los cambios o confirmarlos manualmente cuando esté listo.

Tengo la sospecha de que la línea principal moderna de Linux tiene todas las funciones necesarias para hacer esto incorporadas, gracias a todas las innovaciones de virtualización/sandboxing de los últimos años, si tan solo supiera cómo usarlas.

Respuesta aceptada:

Un intento de online solución, pero no está del todo allí.

La configuración (por ejemplo, /tmp directorio, como raíz):

LOWER=$HOME
mkdir u1 w1 o1 O
mount -t overlay overlay -o lowerdir=$LOWER,upperdir=u1,workdir=w1 o1
mount --bind o1 O

Entonces puedes trabajar en O directorio, que es una superposición sobre $LOWER . Cuando quieras hacer la instantánea:

mkdir u2 w2 o2
mount -t overlay overlay -o lowerdir=o1,upperdir=u2,workdir=w2 o2

(Tenga en cuenta que las superposiciones anidadas como esta no funcionarán en kernels más antiguos).

Pero luego quiero alguna forma de cambiar atómicamente el montaje de enlace en O apuntar a o2 en lugar de o1 . No sé cómo hacer esto más que:

umount O
mount --bind o2 O

(No atómico; hay una ventana donde O está desmontado).

Idealmente, los procesos en ejecución podrían continuar ejecutándose sin saber que el sistema de archivos subyacente de O había cambiado de o1 a o2 . No sé si esto es posible, o si cambiar el sistema de archivos subyacente de O así interrumpirá demasiado las aplicaciones abiertas. Necesito investigar más.

Luego, una vez O ha sido redirigido a o2 , podemos volver a montar o1 solo lectura como precaución, luego realice una fusión fuera de línea usando, por ejemplo, rdiffdir o overlayfs-tools.

Relacionado:Hoja de trucos de la hoja sagrada

Finalmente, nos gustaría alguna forma de volver a montar atómicamente o2 como lowerdir=$HOME,upperdir=u2,workdir=w2 de modo que o1 , u1 y w1 (todos los directorios ahora vacíos) podrían eliminarse. Nuevamente, no sé si esto es posible.

De lo contrario, podemos lograr instantáneas simplemente anidando superposiciones cada vez más y dejando la superposición y los directorios superiores para cada montado sin intentar fusionarlos o limpiarlos. Pero probablemente haya un límite en la cantidad de superposiciones anidadas que se pueden montar. Y en algún momento, todavía tenemos que fusionar las capas hacia abajo si queremos conservar los cambios.


Linux
  1. Linux:¿qué puntos de montaje existen en un sistema Linux típico?

  2. Linux – ¿Montaje de unión en Linux?

  3. Ejemplos de comandos de montaje en Linux

  4. fusionar carpetas de linux:rsync?

  5. ¿Cómo montar un archivo ISO en Linux?

Cómo montar un recurso compartido NFS en Linux

Cómo montar un archivo ISO en Linux

Personalización de los comandos del sistema de archivos de Linux

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

¿Cuáles son las opciones de montaje para mejorar el rendimiento del sistema de archivos ext4 en Linux?

¿Cómo monto manualmente un sistema de archivos de Linux de lectura/escritura como un usuario normal?