Unionfs es un servicio de sistema de archivos para Linux , FreeBSD y NetBSD que implementa un montaje de unión para otros sistemas de archivos . Permite que los archivos y directorios de sistemas de archivos separados, conocidos como ramas, se superpongan de forma transparente, formando un único sistema de archivos coherente. El contenido de los directorios que tienen la misma ruta dentro de las ramas fusionadas se verá junto en un único directorio fusionado, dentro del nuevo sistema de archivos virtual.
Al montar ramas, se especifica la prioridad de una rama sobre la otra. Por lo tanto, cuando ambas ramas contienen un archivo con el mismo nombre, una tiene prioridad sobre la otra.
Las diferentes ramas pueden ser sistemas de archivos de solo lectura o de lectura/escritura , de modo que las escrituras en la copia virtual fusionada se dirijan a un sistema de archivos real específico. Esto permite que un sistema de archivos parezca escribible, pero sin permitir realmente que las escrituras cambien 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 Live CD .
Unionfs fue desarrollado originalmente por Erez Zadok y su equipo en la Universidad Stony Brook . [1] [2] [3]
Usos
En Knoppix , se puede realizar una unión entre el sistema de archivos del CD-ROM o DVD y un sistema de archivos contenido en un archivo de imagen llamado knoppix.img (knoppix-data.img para Knoppix 7) en una unidad grabable (como una memoria USB ), donde la unidad grabable tiene prioridad sobre el sistema de archivos de solo lectura. Esto permite al usuario cambiar cualquiera de los archivos del sistema, con el nuevo archivo almacenado en la imagen y utilizado de forma transparente en lugar del que está en el CD. [4]
Unionfs también se puede utilizar para crear una única plantilla común para varios sistemas de archivos o por motivos de seguridad. A veces se utiliza como un sistema de captura de instantáneas ad hoc .
Docker utiliza sistemas de archivos inspirados en Unionfs, como Aufs , para superponer imágenes de Docker. A medida que se realizan acciones en una imagen base, se crean y documentan capas, de modo que cada capa describe completamente cómo recrear una acción. Esta estrategia permite las imágenes livianas de Docker, ya que solo es necesario propagar las actualizaciones de las capas (en comparación con las máquinas virtuales completas, por ejemplo). [5]
UbuntuLTSP , la implementación del proyecto Linux Terminal Server para Ubuntu, utiliza Unionfs al arrancar mediante PXE clientes ligeros o gruesos. [6]
Otras implementaciones
Unionfs para Linux tiene dos versiones. La versión 1.x es independiente y se puede crear como módulo. La versión 2.x es más nueva, rediseñada y reimplementada.
aufs es una versión alternativa de unionfs. [7]
overlayfs escrito por Miklos Szeredi se ha utilizado en OpenWRT y Ubuntu lo ha considerado y se ha fusionado con el kernel principal de Linux el 26 de octubre de 2014 [8] después de muchos años de desarrollo y discusión [9] para la versión 3.18 del kernel.
unionfs-fuse es un proyecto independiente, implementado como un programa de sistema de archivos de espacio de usuario , en lugar de un módulo o parche del núcleo. Al igual que Unionfs, admite ramas de copia en escritura y de solo lectura o de lectura y escritura. [10]
El sistema operativo Plan 9 de Bell Labs utiliza ampliamente montajes de unión para crear espacios de nombres personalizados por usuario o proceso.
Los montajes de unión también han estado disponibles en BSD desde al menos 1995. [11]
GNU Hurd tiene una implementación de Unionfs. [12] A partir de enero de 2008, funciona, pero da como resultado un punto de montaje de solo lectura.
mhddfs funciona como Unionfs pero permite equilibrar archivos en las unidades con más espacio libre disponible. Se implementa como un sistema de archivos de espacio de usuario.
mergerfs es un sistema de archivos de unión basado en FUSE que ofrece múltiples políticas para acceder y escribir archivos, así como otras funciones avanzadas (xattrs, gestión de unidades mixtas RO y RW, enlace CoW, etc.). [13]
Sun Microsystems introdujo la primera implementación de un sistema de archivos apilado en capas con copia en escritura, ocultación de archivos (ocultar los archivos en capas inferiores de las capas superiores), etc. como el Servicio de archivos translúcidos en SunOS 3, alrededor de 1986. [14]
JailbreakMe 3.0, una herramienta para hacer jailbreak a dispositivos iOS lanzada en julio de 2011, utiliza técnicas de unionfs para acelerar el proceso de instalación de la modificación del sistema operativo. [15]
Véase también
Referencias
- ^ Wright, Charles P.; Zadok, Erez (diciembre de 2004). "Kernel Korner: Unionfs: Uniendo los sistemas de archivos". Linux Journal . 2004 (128): 8. ISSN 1075-3583.
- ^ "Servidor Git del Laboratorio de sistemas de archivos y almacenamiento". Universidad de Stony Brook . Archivado desde el original el 17 de junio de 2016. Consultado el 17 de julio de 2017.
Proyecto: unionfs-3.9.y.git; Propietario: Erez Zadok
- ^ "Laboratorio de sistemas de archivos y almacenamiento: Departamento de informática". Universidad de Stony Brook .
Coordinador del laboratorio e investigador principal: Prof. Erez Zadok
- ^ Schulz, Werner P. (15 de diciembre de 2016). «Instalación del disco duro: UNIONFS». Knoppix . Consultado el 17 de julio de 2017 .
- ^ "Descripción general de Docker: sistemas de archivos de unión". Docker, Inc. 13 de julio de 2017. Consultado el 17 de julio de 2017 .
- ^ Georgopoulos, Alkis (24 de diciembre de 2010). «UbuntuLTSP/LTSPWithoutNFS» . Consultado el 17 de julio de 2017 .
- ^ "en la página de inicio". 2 de julio de 2017. Consultado el 17 de julio de 2017 .
- ^ Torvalds, Linus (26 de octubre de 2014). "La fusión de overlayfs y la corrección de fugas para la falla de d_splice_alias() salen" . Consultado el 17 de julio de 2017 .
- ^ Corbet, Jonathan (15 de junio de 2011). «Debating overlayfs» (Debate sobre superposiciones) . Consultado el 17 de julio de 2017 .
- ^ Podgorny, Radek (21 de noviembre de 2016). «unionfs-fuse – Una implementación de unionfs en el espacio de usuario». GitHub . Consultado el 17 de julio de 2017 .
- ^ Pendry, Jan-Simon; McKusick, Marshall Kirk (enero de 1995). "Montajes de unión en 4.4BSD-Lite". Actas de la conferencia técnica de USENIX de 1995. Consultado el 17 de julio de 2017 .
- ^ Schwinge, Thomas (26 de febrero de 2014). "unionfs". GNU Hurd . Consultado el 17 de julio de 2017 .
- ^ "trapexit/mergerfs". GitHub . Consultado el 21 de octubre de 2018 .
- ^ Sun/Release 3.0 . Vol. 1. Interleaf Technical Publishing. 1988. págs. 15‑1–18, 16‑1–19.
- ^ Imran, Awais (19 de junio de 2011). "Comex trabaja en un proceso de jailbreak más rápido para JailbreakMe 3.0; ¡Jailbreak para iPad 2 próximamente!". Redmond Pie . Consultado el 17 de julio de 2017 .
Enlaces externos
- Sitio web oficial
- Charles P. Wright; Jay Dave; Puja Gupta; Harikesavan Krishnan; Erez Zadok; Mohammad Nayyer Zubair (2004). "Versatilidad y semántica Unix en un sistema de archivos de unificación Fan-Out" (PDF) . Informe técnico FSL-04-01b . Universidad de Stony Brook .
- unionfs-fuse en GitHub : una implementación alternativa de Unionfs basada en FUSE
- FunionFS – Otra implementación de Unionfs basada en FUSE
- La nueva implementación de unionfs para FreeBSD y el estado de la fusión (2007-10-23)
- Sobre el desarrollo de sistemas de archivos incrementales
- Unionfs basado en LUFS para Linux Archivado el 28 de agosto de 2006 en Wayback Machine (basado en LUFS )
- Guía de Linux y U-Boot de DENX: sistemas de archivos superpuestos