Montaje de unión en Linux

11

Un montaje de unión presenta una vista combinada de múltiples directorios (ramas) en una sola jerarquía. Ok, pero ¿cómo uso uno en la práctica y cuál?

Muchas tecnologías de montaje de unión están disponibles en un sistema Linux moderno: OverlayFS , aufs , UnionFS , varios sistemas de archivos basados ​​en FUSE, ...

Dado un caso de uso, ¿cómo decido cuál es el adecuado? En particular:

  • ¿Cuáles requieren acceso de root en un sistema típico? (En otras palabras, ¿puede un usuario sin privilegios crear un montaje de unión?)
  • ¿En cuáles se puede montar /(con acceso raíz, por supuesto)?
  • ¿Cuáles admiten escribir en las ramas subyacentes? (Es decir, si /fooy /barestán montados en unión /union, ¿puedo escribir en /fooy /bar?)
  • ¿Cuáles admiten políticas configurables para escrituras? (Por ejemplo, ¿puedo enviar archivos recién creados a la rama B a pesar de que obtengo contenido de la rama A cuando existe un archivo en ambas ramas?)
  • ¿Cuáles admiten un orden de prioridad entre ramas que depende de los archivos? (Por ejemplo, ¿puedo obtener siempre el archivo más nuevo entre todas las ramas que lo tienen?)

Se agradecerían ejemplos de uso.

Evite las respuestas que se centran en un punto específico. Estoy buscando respuestas completas que revisen el software disponible (algo similar a ¿Qué es un montaje de enlace? ). Se darán buenas respuestas.

Gilles 'SO- deja de ser malvado'
fuente

Respuestas:

12

En cada uno de los puntos específicos:

  • Acceso a la raíz: si usa FUSE, no necesita root, si no usa FUSE, necesita root a menos que realice una configuración especial con capacidades (potencialmente peligrosas) o espacios de nombres.

  • Montaje /: supongo que te refieres al sistema de archivos raíz en el inicio, en cuyo caso cualquiera de ellos que se ejecute en modo kernel debería funcionar en teoría, aunque algunos son más confiables que otros. La mayoría de los LiveCD hacen esto, por lo que sugeriría buscar información sobre este punto en particular.

  • Escribir en las ramas subyacentes: esto depende de lo que quieras decir. Si te refieres a propagar las escrituras a la vista montada hacia las ramas inferiores, no tengo idea. Si te refieres a escribir en las ramas inferiores fuera de banda desde el sistema de archivos principal, técnicamente todos los tres grandes lo hacen, pero todos requieren un remontaje para garantizar que el cambio se propague a la vista montada.

  • Políticas de escritura configurables: no sé específicamente sobre esto, pero creo que los 3 grandes (UnionFS, AUFS y OverlayFS) no lo admiten.

  • Orden de prioridad dependiente del archivo: creo que este tipo también se incluye en la tercera subpregunta, y al igual que allí, no conozco ninguno que lo respalde específicamente.

En cuanto a algunos detalles más sobre cada uno de ellos:

  • UnionFS: Por lo que puedo decir, esta fue la implementación original del sistema de archivos de unión apilable para Linux. Ha existido durante siglos, y es utilizado por muchos LiveCD de Linux. Se ejecuta en modo kernel y requiere parches para el kernel ascendente que se utilizará.

  • AUFS: se originó como una bifurcación de UnionFS, y luego se convirtió en algo propio. Éste intentó fusionarse con la línea principal y fue rechazado debido a la calidad del código. Se ha reemplazado UnionFS en algunas distribuciones LiveCDs, principalmente derivados de Debian y Gentoo. Al igual que UnionFS, se ejecuta en modo kernel y requiere parches para el kernel ascendente.

  • OverlayFS: No sé mucho sobre el desarrollo original de este, aparte de que también es compatible con un par de derivados BSD. Es notablemente la implementación del sistema de archivos de superposición / unión ascendente en el kernel de Linux. También se ejecuta en modo kernel.

  • UnionFS-FUSE: este proyecto de nombre un tanto confuso en realidad no tiene nada que ver con UnionFS aparte de proporcionar esencialmente la misma funcionalidad. Es la implementación FUSE más utilizada de un sistema de archivos de unión, pero eso es todo lo que sé al respecto.

  • mhddfs: este es un valor atípico extraño que es más parecido a una implementación RAID-0 de granularidad de archivos que un sistema de archivos de unión convencional. Admite el equilibrio de archivos en múltiples directorios de respaldo en función del uso del espacio. También está basado en FUSE.

Un par de cosas específicas a tener en cuenta que no son específicas de una implementación particular:

  • Todas las opciones en el núcleo tienen limitaciones sobre cuáles pueden ser los sistemas de archivos de respaldo, sobre todo no funcionan con sistemas de archivos en red o BTRFS.

  • Todas las implementaciones de FUSE tienen problemas cuando se usan como un sistema de archivos raíz. Esto no es específico para las implementaciones del sistema de archivos de unión, pero es más un problema con FUSE en general.

Austin Hemmelgarn
fuente