Filesystem in Userspace ( FUSE ) es una interfaz de software para Unix y sistemas operativos informáticos similares a Unix que permite a los usuarios sin privilegios crear sus propios sistemas de archivos sin editar el código del kernel . 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 hacia las interfaces reales del kernel.
El sistema FUSE era 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ó al sistema de archivos Userland de Linux y proporcionó una interfaz de traducción usando lufislibfuse1.
El lado del espacio de usuario de FUSE, la biblioteca libfuse , generalmente siguió el ritmo de desarrollo del kernel de Linux manteniendo al mismo tiempo la compatibilidad del "mejor esfuerzo" con los descendientes de BSD. Esto es posible porque el kernel FUSE informa sus propios "niveles de características" o versiones. La excepción es la bifurcación FUSE para macOS, OSXFUSE, que tiene demasiadas diferencias para compartir una biblioteca. [9] Una ruptura en la historia de libfuse es libfuse3, que incluye algunas mejoras incompatibles en la interfaz y el rendimiento, en comparación con el antiguo libfuse2 ahora en modo de mantenimiento. [10]
Como el protocolo de espacio de usuario del núcleo de FUSE tiene versiones 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 instalaciones de 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, es necesario escribir un programa controlador vinculado a la biblioteca proporcionada . 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 kernel. Si un usuario ahora emite solicitudes de lectura/escritura/estadísticas para este sistema de archivos recién montado, el kernel reenvía estas solicitudes de IO 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 esencialmente trabajan 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 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 del usuario con FUSE, por ejemplo, por razones de compatibilidad o licencia.
Sistema de archivos de cinta lineal : permite acceder a los archivos almacenados en cinta magnética de manera similar a aquellos en disco o unidades flash extraíbles.
NTFS-3G y NTFS cautivo , 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 copia de seguridad 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 copia de seguridad) : programa de copia de seguridad con deduplicación que permite montar archivos de copia de seguridad como sistemas de archivos FUSE.
Restic: el software de respaldo gratuito, rápido, eficiente y seguro utiliza FUSE para poder explorar todas sus instantáneas de respaldo 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 lugar 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 el espacio de usuario (FUSE) mediante transporte HTTP, para entregar software de manera rápida y confiable a escala global.
CloudStore (anteriormente, sistema de archivos Kosmos): al montarse 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 usando FUSE
GlusterFS : sistema de archivos distribuido en clúster que tiene la 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 construido 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 Lustre Cluster 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 gestión de datos) de ZFS en el espacio de usuario. [12]
MinFS : MinFS es un controlador fusible para el servidor de almacenamiento de objetos compatible 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 tolerante a fallas de código abierto disponible en todos los sistemas operativos con implementación 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 comercial de Linux que combina almacenamiento en nube y objetos compatible con bloques, archivos y S3 en un único grupo de almacenamiento compatible con POSIX.
ObjectiveFS: sistema de archivos distribuido con backend de almacén de objetos (Amazon S3, Google Cloud Storage o almacén de objetos compatible con S3) usando FUSE
Rclone puede montar una variedad de almacenamiento remoto/en la nube con FUSE.
s3fs: Brinda la posibilidad de montar un depósito S3 como si fuera un sistema de archivos local.
Sistema de archivos sectoriales : Sector es un sistema de archivos distribuido diseñado para una gran cantidad de computadoras básicas. 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 .
Transmitir: 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. Usando 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 (servicio descontinuado en 2015).
IndexFS: un sistema de archivos remoto que agrega archivos con acceso CURL transparente a archivos distribuidos.
rvault: un almacén seguro y autenticado para secretos y documentos pequeños que utiliza cifrado de sobre 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 proyectados 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 - Compatibilidad con 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 OSDir.com". Archivado desde el original el 20 de abril de 2016.
^ "libfuse/libfuse, la implementación de referencia de la interfaz Linux FUSE (sistema de archivos en el espacio de usuario)". 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". Microsistemas solares. Archivado desde el original el 22 de enero de 2009 . Consultado el 2 de marzo de 2008 .
^ "minio/minf". GitHub . Consultado el 12 de abril de 2018 .
enlaces externos
Página web oficial
Desarrolla tu propio sistema de archivos con FUSE por Sumit Singh
Lista de sistemas de archivos FUSE
Documentación/documentación de sistemas de archivos/fuse.txt en el árbol de fuentes de Linux
WinFSP, un sistema similar a FUSE para Windows (se proporciona una capa de compatibilidad FUSE para Cygwin)
Crossmeta FUSE, Port de FUSE a Windows (software comercial)