En los sistemas operativos de computadora , el montaje de unión es una forma de combinar varios directorios en uno que parece contener sus contenidos combinados. [1] El montaje de unión es compatible con Linux , BSD y varios de sus sucesores, y Plan 9 , con un comportamiento similar pero sutilmente diferente.
Como ejemplo de aplicación de montaje de unión, consideremos la necesidad de actualizar la información contenida en un CD-ROM o DVD . Si bien no se puede escribir en un CD-ROM, se puede superponer el punto de montaje del CD con un directorio grabable en un montaje de unión. Luego, actualizar los archivos en el directorio de unión hará que terminen en el directorio grabable, dando la ilusión de que el contenido del CD-ROM se ha actualizado. [1] [2]
En el sistema operativo Plan 9 de Bell Labs (mediados de la década de 1980 en adelante), el montaje de sindicatos es un concepto central, que reemplaza varias convenciones antiguas de Unix con directorios sindicales; por ejemplo, varios directorios que contienen ejecutables , unidos en un único directorio /bin , reemplazan la variable PATH para la búsqueda de comandos en el shell. [3]
La semántica de unión del Plan 9 está muy simplificada en comparación con las implementaciones para sistemas operativos de estilo POSIX : la unión de dos directorios es simplemente la concatenación de sus contenidos, por lo que una lista de directorio de la unión puede mostrar nombres duplicados. Además, no se hace ningún esfuerzo por fusionar subdirectorios de forma recursiva, lo que lleva a una implementación extremadamente simple. [4] Los directorios están unidos en un orden controlable; u/nombre , donde u es un directorio de unión, denota el archivo llamado nombre en el primer directorio constituyente que contiene dicho archivo. [4]
Las implementaciones de uniones Unix/POSIX tienen requisitos diferentes de la implementación del Plan 9 debido a restricciones en el comportamiento tradicional del sistema de archivos Unix, lo que complica enormemente su implementación y, a menudo, conduce a compromisos. [5] Los problemas que encuentra el montaje sindical en sistemas operativos tipo Unix incluyen:
Los primeros intentos de agregar unión a los sistemas de archivos Unix incluyeron el sistema de archivos 3-D ( Bell Labs ) y el Translucent File Service en SunOS ( Sun Microsystems , 1988 [2] ). Se agregó una implementación de montaje de unión a la versión BSD de Unix en la versión 4.4 (1994), inspirándose en estos intentos anteriores, Plan 9 y los sistemas de archivos apilables en Spring (Sun, 1994). [1] 4.4BSD implementa el enfoque de pila de directorios descrito anteriormente. Como en el Plan 9, las operaciones atraviesan esta pila de arriba hacia abajo para resolver nombres, pero a diferencia del Plan 9, los montajes de unión BSD son recursivos, de modo que el contenido de los subdirectorios aparece fusionado en el directorio de unión. Además, a diferencia de la versión Plan 9, todas las capas excepto la superior son de solo lectura: la modificación de archivos en la unión hace que su contenido se copie primero en la capa superior de la pila, donde luego se aplican las modificaciones. La eliminación de archivos se implementa escribiendo un tipo especial de archivo llamado whiteout en el directorio superior, que tiene el efecto de marcar el nombre del archivo como inexistente y ocultar archivos con el mismo nombre en las capas inferiores de la pila. [1] Los apagones requieren soporte del sistema de archivos subyacente. [4]
El montaje de unión se implementó para Linux 0.99 en 1993; Esta implementación inicial se llamó Sistema de archivos heredado, pero su desarrollador la abandonó debido a su complejidad. [2] La siguiente implementación importante fue UnionFS , que surgió del proyecto FiST en la Universidad Stony Brook . [6] [5] En 2006 se lanzó un intento de reemplazar UnionFS, aufs , seguido en 2009 por OverlayFS . [2] En 2014, se agregó la implementación de montaje de unión OverlayFS al código fuente estándar del kernel de Linux . [7]
De manera similar, GlusterFS ofrece la posibilidad de montar diferentes sistemas de archivos distribuidos en una red, en lugar de estar ubicados en la misma máquina. [8]
MergerFS, lanzado originalmente en 2014, es un complemento FUSE de código abierto desarrollado activamente , que permite agrupar directorios arbitrarios. [9]
GlusterFS es un sistema de archivos distribuido de código abierto capaz de escalar a varios petabytes (en realidad, ¡72 brontobytes!) y manejar miles de clientes. GlusterFS agrupa bloques de almacenamiento a través de Infiniband RDMA o interconexión TCP/IP, agregando recursos de disco y memoria y administrando datos en un único espacio de nombres global. GlusterFS se basa en un diseño de espacio de usuario apilable y puede ofrecer un rendimiento excepcional para diversas cargas de trabajo.