En los sistemas operativos de computadora , el montaje en unión es una forma de combinar varios directorios en uno que parece contener su contenido combinado. [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, considere la necesidad de actualizar la información contenida en un CD-ROM o DVD . Aunque 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. Entonces, la actualización de archivos en el directorio de unión hará que terminen en el directorio de escritura, dando la ilusión de que el contenido del CD-ROM se ha actualizado. [1] [2]
Implementaciones
Plan 9
En el sistema operativo Plan 9 de Bell Labs (mediados de la década de 1980 en adelante), el montaje de unión es un concepto central, reemplazando varias convenciones de Unix más antiguas con directorios de unión; por ejemplo, varios directorios que contienen ejecutables , unidos en un solo directorio / bin , reemplazan el Variable PATH para búsqueda de comandos en el shell. [3]
La semántica de unión de Plan 9 se simplifica enormemente 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 directorios de la unión puede mostrar nombres duplicados. Además, no se hace ningún esfuerzo para 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]
Unix y BSD
Las implementaciones de uniones Unix / POSIX tienen diferentes requisitos de la implementación de Plan 9 debido a las limitaciones en el comportamiento del sistema de archivos Unix tradicional, lo que complica enormemente su implementación y, a menudo, conduce a compromisos. [5] Los problemas que encuentra el montaje de unión en sistemas operativos similares a Unix incluyen:
- Los nombres de archivos duplicados dentro de un directorio no son aceptables, ya que esto rompería las expectativas de las aplicaciones sobre cómo funciona un sistema de archivos Unix. Poner un orden de precedencia lógico, similar a una pila , en los constituyentes de la unión resuelve parcialmente este problema, pero requiere memoria para registrar qué archivos deben omitirse durante una lista de directorios (que de lo contrario es una operación casi sin estado). [5]
- La eliminación requiere un soporte especial: si existen archivos con el mismo nombre en varios de los constituyentes del directorio de unión, simplemente eliminarlo de uno de los constituyentes hace que un archivo de uno de los otros vuelva a aparecer en su lugar. [5]
- La inserción de un directorio en la pila puede causar incoherencia en la caché de nombres de archivo del kernel . [5]
- Cambiar el nombre de un archivo dentro de un único sistema de archivos montado (usando el renombrar llamada al sistema) debería ser una operación atómica , pero el cambio de nombre dentro de un montaje de unión puede requerir cambios en varios de los directorios constituyentes de la unión. Una posible solución es rechazar cambie el nombre en tales situaciones y requiera implementaciones para copiar y eliminar en su lugar. [2]
- Estables inode número de archivos, enlaces duros y de E / S mapeada en memoria ( mmap ) son difíciles de implementar correctamente. [2]
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, por lo que el contenido de los subdirectorios aparece combinado en el directorio de unión. También 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 los archivos con el mismo nombre en las capas inferiores de la pila. [1] Los apagones requieren soporte del sistema de archivos subyacente. [4]
Linux
El montaje de unión se implementó para Linux 0.99 en 1993; esta implementación inicial se llamó Inheriting File System, 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 de Stony Brook . [6] [5] Un intento de reemplazar UnionFS, aufs , fue lanzado en 2006, seguido en 2009 por OverlayFS . [2] En 2014, la implementación de montaje de unión OverlayFS se agregó al código fuente estándar del kernel de Linux . [7]
De manera similar, GlusterFS ofrece la capacidad de montar diferentes sistemas de archivos distribuidos a través de una red, en lugar de estar ubicados en la misma máquina. [8]
Referencias
- ^ a b c d Pendry , Jan-Simon; Marshall Kirk McKusick (diciembre de 1995). "Union Mounts en 4.4BSD-Lite" . Actas de la Conferencia técnica de USENIX sobre UNIX y sistemas informáticos avanzados : 25–33 . Consultado el 25 de noviembre de 2007 .
- ^ a b c d e f Aurora, Valerie; Henson (marzo de 2009). "Unión de sistemas de archivos: arquitectura, características y opciones de diseño" . LWN.net . Consultado el 21 de diciembre de 2009 .
- ^ Pike, R .; Presotto, D .; Thompson, K .; Trickey, H .; Winterbottom, P. "El uso de espacios de nombres en el plan 9" . Sitio web de la Organización Insurgente Contraria al Azar cat-v.org . Bell Labs . Consultado el 27 de octubre de 2016 .
- ^ a b c Aurora, Valerie; Henson (marzo de 2009). "Unión de sistemas de archivos: Implementaciones, parte I" . LWN.net . Consultado el 21 de diciembre de 2009 .
- ^ a b c d e Wright, Charles P .; Jay Dave; Puja Gupta; Harikesavan Krishnan; Erez Zadok; Mohammad Nayyer Zubair. "Versatilidad y semántica Unix en un sistema de archivos de unificación en abanico" . Informe técnico de la Universidad de Stony Brook FSL-04-01b . Consultado el 25 de noviembre de 2007 .
- ^ Aurora, Valerie; Henson (abril de 2009). "Unión de sistemas de archivos: Implementaciones, parte 2" . LWN.net . Consultado el 21 de diciembre de 2009 .
- ^ Larabel, Michael (29 de septiembre de 2014). "OverlayFS propuesto para el kernel de Linux 3.18" . Phoronix.com . Consultado el 12 de octubre de 2015 .
- ^ "Acerca de GlusterFS" . Noviembre de 2009 . Consultado el 4 de marzo de 2013 . Cite journal requiere
|journal=
( ayuda )