# UnionFS

UnionFS es un servicio para sistemas de archivos de Linux que permite montar un sistema de archivos formado por la unión de otros sistemas de archivos de Linux. Permite que archivos y directorios de sistemas de archivos distintos, conocidos como ramas, se superpongan de forma transparente, formando un único sistema de archivos. Los contenidos de directorios que tienen la misma ruta en las ramas que se combinan aparecerán juntos en un único directorio en el nuevo sistema de archivos virtual.
UnionFS se utiliza principalmente en LiveCD o sistemas sin disco, donde el directorio raíz de solo lectura se combina con un sistema de archivos tmpfs (que reside en memoria y es modificable). De este modo, todos los archivos de la raíz de solo lectura pueden ser modificados, y la modificación se mantiene en memoria.
Las diferentes ramas pueden ser sistemas de archivos de solo lectura o lectura y escritura, de forma que las escrituras al sistema de archivos virtual combinado pueden realizarse sobre un sistema de archivos real concreto. Esto lleva a otro útil propósito de las uniones de sistemas de archivos, que es hacer que un sistema de archivos parezca modificable, pero sin permitir realmente que las escrituras modifiquen el sistema de archivos, también conocido como copia en escritura. Esto puede ser deseable cuando el medio es físicamente de solo lectura, como en el caso de los CD-ROMs, o para utilizar una única plantilla común para varios sistemas de archivos, o quizás por razones de seguridad. La implementación de Linux, UnionFS, se utiliza algunas veces como un sistema de imágenes (snapshot) ad hoc.
A la hora de montar ramas, la prioridad de una rama sobre otra es especificada. De este modo, cuando ambas ramas contienen un archivo con el mismo nombre, uno tiene prioridad sobre el otro.
En los LiveCDs se utiliza para superponer un sistema de archivos modificable sobre un medio de solo lectura. En Knoppix por ejemplo la unión del sistema de archivos en el CD-ROM o DVD puede hacerse con el sistema de archivos contenido en una imagen llamada knoppix.img en una memoria USB que tenga prioridad sobre el sistema de archivos de solo lectura. El usuario ve un sistema de archivos en el que es posible añadir y cambiar archivos en cualquier sitio. Lo que ocurre en el nivel físico es que si un archivo pertenece a la rama de solo lectura es reemplazada con una nueva versión que se almacena en el archivo de imagen. Dado que el sistema de archivos de unión combina las dos ramas de forma transparente, el usuario simplemente ve la nueva versión.

## Otras implementaciones

Unionfs para Linux tiene dos versiones. La versión 1.x es una versión autónoma que puede actuar como módulo. La versión 2.x es una versión nueva, rediseñada y reimplementada. En enero de 2007, Unionfs 2.0 ha sido incluido en la rama -mm de Andrew Morton del núcleo Linux, y por tanto con posibilidades de ser incluido en el futuro en la rama principal. La versión 2.x es la implementación más pequeña de sistemas de archivos de unión para Linux, está probada extensivamente e inspeccionada por muchos desarrolladores del núcleo, y es más eficiente.
aufs es una versión alternativa de sistema de archivos de unión para Linux.
El sistema operativo Plan 9 utiliza sistemas de archivos de unión ampliamente para crear espacios de nombres a medida por usuario/proceso. El mismo concepto, implementado como "union mount" ha estado disponible en BSD desde, al menos, 1995.
Hubo varios intentos previos para añadir esta característica a Linux, pero ninguno fue mantenido demasiado. Desde hace tiempo Linux ha tenido la característica bind mount, que permite que un directorio esté disponible en más de un lugar en el sistema de archivos, y esta característica está presente en otros sistema operativos incluyendo MS-DOS, pero es un concepto completamente diferente al de los sistemas de archivos de unión.