Filesystem in Userspace ( FUSE ) es una interfaz de software para sistemas operativos Unix y similares que permite a los usuarios sin privilegios crear sus propios sistemas de archivos sin editar el código del núcleo . Esto se logra ejecutando el código del sistema de archivos en el espacio del usuario mientras que el módulo FUSE proporciona solo un puente a las interfaces del núcleo reales.
El sistema FUSE fue originalmente parte de AVFS ( A Virtual Filesystem ), una implementación de sistema de archivos fuertemente influenciada por el concepto de traductor de GNU Hurd . [4] Reemplazó a Linux Userland Filesystem y proporcionó una interfaz de traducción usando lufislibfuse1.
El lado del espacio de usuario de FUSE, la biblioteca libfuse , generalmente siguió el ritmo del desarrollo del núcleo Linux mientras mantenía la compatibilidad de "máximo esfuerzo" con los descendientes de BSD. Esto es posible porque el núcleo FUSE informa sus propios "niveles de características", o versiones. La excepción es la bifurcación de FUSE para macOS, OSXFUSE, que tiene demasiadas diferencias para compartir una biblioteca. [9] Un cambio en la historia de libfuse es libfuse3, que incluye algunas mejoras incompatibles en la interfaz y el rendimiento, en comparación con la versión anterior libfuse2, que ahora está en modo de mantenimiento. [10]
Como el protocolo de espacio de usuario del núcleo de FUSE está versionado y es público, un programador puede optar por utilizar un fragmento de código diferente en lugar de libfuse y seguir comunicándose con las funciones FUSE del núcleo. Por otro lado, libfuse y sus numerosos puertos proporcionan una interfaz portátil de alto nivel que puede implementarse en un sistema sin una función "FUSE".
Operación y uso
libfusePara implementar un nuevo sistema de archivos, se debe escribir un programa controlador vinculado a la biblioteca suministrada . El objetivo principal de este programa es especificar cómo debe responder el sistema de archivos a las solicitudes de lectura/escritura/estadísticas. El programa también se utiliza para montar el nuevo sistema de archivos. En el momento en que se monta el sistema de archivos, el controlador se registra en el núcleo. Si un usuario emite solicitudes de lectura/escritura/estadísticas para este sistema de archivos recién montado, el núcleo reenvía estas solicitudes de E/S al controlador y luego envía la respuesta del controlador al usuario.
FUSE es particularmente útil para escribir sistemas de archivos virtuales . A diferencia de los sistemas de archivos tradicionales que funcionan básicamente con datos en almacenamiento masivo, los sistemas de archivos virtuales en realidad no almacenan datos por sí mismos. Actúan como una vista o traducción de un sistema de archivos o dispositivo de almacenamiento existente.
En principio, cualquier recurso disponible para una implementación de FUSE se puede exportar como un sistema de archivos.
Aplicaciones
Sistemas de archivos en disco
Los sistemas de archivos en disco convencionales se pueden implementar en el espacio de usuario con FUSE, por ejemplo, por razones de compatibilidad o de licencia.
Sistema de archivos de cinta lineal : permite acceder a los archivos almacenados en cinta magnética de manera similar a los que se encuentran en discos o unidades flash extraíbles.
NTFS-3G y Captive NTFS , que permiten el acceso a sistemas de archivos NTFS .
retro-fuse: retro-fuse es un sistema de archivos de espacio de usuario que proporciona una forma de montar sistemas de archivos creados por sistemas Unix antiguos en sistemas operativos modernos. La versión actual de retro-fuse admite el montaje de sistemas de archivos creados por la quinta, sexta y séptima edición de Research Unix de Bell Labs , así como sistemas basados en 2.9BSD y 2.11BSD.
Sistemas de archivos en capas
Los sistemas de archivos FUSE pueden crear una vista de un sistema de archivos subyacente, transformando los archivos de alguna manera.
Atlas (software de respaldo de Rubrik): sistema de archivos distribuido e inmutable utilizado por las aplicaciones de protección de datos de Rubrik Cloud Data Management
Borg (software de respaldo) : programa de respaldo con deduplicación que permite montar archivos de respaldo como sistemas de archivos FUSE.
Restic: software de copia de seguridad gratuito, rápido, eficiente y seguro que utiliza FUSE para poder explorar todas sus instantáneas de copia de seguridad como un sistema de archivos normal.
SPFS Un sistema de archivos para Spectrum Protect, diseñado para montar el espacio de archivos del servidor de respaldo en cualquier parte de su servidor y utilizar las funciones incluidas en el servidor de respaldo (cifrado, deduplicación, compresión, filtrado, etc.). Este es un sistema de archivos WORM .
Clientes de sistemas de archivos remotos/distribuidos
CernVM-FS: un sistema de distribución de software distribuido de solo lectura, implementado como un sistema de archivos POSIX en espacio de usuario (FUSE) utilizando transporte HTTP, para entregar software de manera rápida y confiable a escala global.
CloudStore (anteriormente, sistema de archivos Kosmos): al montarlo a través de FUSE, las utilidades de Linux existentes pueden interactuar con CloudStore
ExpanDrive : un sistema de archivos comercial que implementa SFTP/FTP/S3/Swift utilizando FUSE
FTPF
GlusterFS : sistema de archivos distribuido en clúster con capacidad de escalar hasta varios petabytes.
goofys: Un sistema de archivos FUSE que permite el acceso al almacenamiento de Amazon S3/Microsoft Azure con énfasis en el rendimiento.
google-drive-ocamlfuse es un sistema de archivos FUSE para Google Drive, escrito en OCaml. Te permite montar tu Google Drive en Linux.
IPFS : Un sistema de archivos distribuido punto a punto que busca conectar todos los dispositivos informáticos con el mismo sistema de archivos.
JuiceFS: un sistema de archivos POSIX distribuido creado sobre Redis y S3.
KBFS : un sistema de archivos distribuido con cifrado de extremo a extremo y un espacio de nombres global basado en el servicio Keybase.io que utiliza FUSE para crear montajes de archivos criptográficamente seguros.
El sistema de archivos del clúster Lustre utilizará FUSE para permitir su ejecución en el espacio de usuario, de modo que sea posible un puerto FreeBSD. [11] Sin embargo, el puerto ZFS -Linux de Lustre ejecutará la DMU (Unidad de administración de datos) de ZFS en el espacio de usuario. [12]
MinFS : MinFS es un controlador de fuse para servidores de almacenamiento de objetos compatibles con Amazon S3. MinFS [13] le permite montar un depósito remoto (desde un almacén de objetos compatible con S3), como si fuera un directorio local.
MooseFS : un sistema de archivos distribuido de código abierto, tolerante a fallos, disponible en todos los sistemas operativos con implementación de FUSE (Linux, FreeBSD, NetBSD, OpenSolaris, OS X), capaz de almacenar petabytes de datos distribuidos en varios servidores visibles como un solo recurso.
Nexfs: un sistema de archivos Linux comercial que combina bloques, archivos y almacenamiento en la nube y de objetos compatible con S3 en un único grupo de almacenamiento compatible con POSIX.
ObjectiveFS: Sistema de archivos distribuido con backend de almacenamiento de objetos (Amazon S3, Google Cloud Storage o almacén de objetos compatible con S3) mediante FUSE
Rclone puede montar una variedad de almacenamiento remoto / en la nube con FUSE.
s3fs: brinda la capacidad de montar un bucket S3 como si fuera un sistema de archivos local.
Sistema de archivos Sector : Sector es un sistema de archivos distribuido diseñado para una gran cantidad de computadoras de uso general. Sector utiliza FUSE para proporcionar una interfaz de sistema de archivos local montable.
SSHFS : proporciona acceso a un sistema de archivos remoto a través de SSH .
Transmit: un cliente FTP comercial que también agrega la capacidad de montar servidores WebDAV, SFTP, FTP y Amazon S3 como discos en Finder, a través de MacFUSE.
WebDrive : un sistema de archivos comercial que implementa WebDAV , SFTP, FTP, FTPS y Amazon S3
WikipediaFS : vea y edite artículos de Wikipedia como si fueran archivos reales
Wuala : era un sistema de archivos distribuido, multiplataforma, basado en Java y totalmente integrado en el sistema operativo. Utilizaba FUSE, MacFUSE y CBFS Connect respectivamente para la integración del sistema de archivos, además de una aplicación basada en Java accesible desde cualquier navegador web habilitado para Java (el servicio se suspendió en 2015).
IndexFS: un sistema de archivos de agregación de archivos remotos con acceso CURL transparente a archivos distribuidos.
rvault: un almacén seguro y autenticado para secretos y documentos pequeños que utiliza cifrado de sobres con autenticación de contraseña de un solo uso (OTP). Utiliza FUSE para exponer la bóveda como un sistema de archivos.
Sistema de archivos proyectado de Windows (ProjFS)
Referencias
^ "Versión 3.16.2". 10 de octubre de 2023. Consultado el 19 de octubre de 2023 .
^ "Inicio - FUSE para OS X".
^ Zissimopoulos, Bill (14 de febrero de 2021), billziss-gh/winfsp , consultado el 16 de febrero de 2021
^ "Algunas ventajas técnicas del Hurd". 15 de mayo de 2011. Consultado el 28 de marzo de 2016 .
^ "Novedades/FreeBSD10 - Wiki de FreeBSD".
^ "openbsd dev - tech - Soporte de Fuse (y sshfs) para OpenBSD". Archivado desde el original el 26 de octubre de 2020. Consultado el 14 de julio de 2013 .
^ "'CVS: cvs.openbsd.org: src' - MARC".
^ "file-systems.fuse.devel - FUSE se fusionó con 2.6.14! - msg#00021 - Discusión reciente en OSDir.com". Archivado desde el original el 20 de abril de 2016.
^ "libfuse/libfuse, la implementación de referencia de la interfaz FUSE (sistema de archivos en el espacio de usuario) de Linux". libfuse. 9 de enero de 2020 . Consultado el 9 de enero de 2020 .
^ "Registro de cambios de libfuse3". GitHub . Consultado el 9 de enero de 2020 .
^ "Lustre FreeBSD". Archivado desde el original el 12 de marzo de 2008. Consultado el 2 de marzo de 2008 .
^ "Arquitectura ZFS para Lustre". Sun Microsystems. Archivado desde el original el 22 de enero de 2009. Consultado el 2 de marzo de 2008 .
^ "minio/minfs". GitHub . Consultado el 12 de abril de 2018 .
Enlaces externos
Sitio web oficial
Desarrolla tu propio sistema de archivos con FUSE por Sumit Singh
Lista de sistemas de archivos FUSE
Documentación/filesystems/fuse.txt documentación en el árbol de fuentes de Linux
WinFSP, un sistema similar a FUSE para Windows (se proporciona una capa de compatibilidad de FUSE para Cygwin)
Crossmeta FUSE, puerto de FUSE para Windows (software comercial)