stringtranslate.com

Sistema de archivos en el espacio de usuario

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.

FUSE está disponible para Linux , FreeBSD , OpenBSD , NetBSD (como puffs ), OpenSolaris , Minix 3 , macOS , [2] y Windows . [3]

FUSE es un software libre publicado originalmente bajo los términos de la Licencia Pública General GNU y la Licencia Pública General Reducida GNU .

Historia

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.

FUSE fue publicado originalmente bajo los términos de la Licencia Pública General GNU y la Licencia Pública General Reducida GNU , y luego reimplementado como parte del sistema base de FreeBSD [5] y publicado bajo los términos de la licencia BSD Simplificada . Sylvestre Gallon publicó una reimplementación con licencia ISC en marzo de 2013, [6] e incorporó a OpenBSD en junio de 2013. [7]

FUSE se fusionó con el árbol del kernel principal de Linux en la versión 2.6.14 del kernel. [8]

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

Diagrama de flujo que muestra cómo funciona FUSE: la solicitud desde el espacio de usuario para listar archivos (ls -l /tmp/fuse) es redirigida por el kernel a través de VFS a FUSE. Luego, FUSE ejecuta el programa controlador registrado (./hello) y le pasa la solicitud (ls -l /tmp/fuse). El programa controlador devuelve una respuesta a FUSE, que luego es redirigida al programa del espacio de usuario que originalmente realizó la solicitud.

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.

Desmontaje de un sistema de archivos basado en FUSE con el fusermountcomando

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.

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.

Sistemas de archivos de archivo y de respaldo

Los sistemas de archivos FUSE pueden exponer el contenido de los archivos o conjuntos de copias de seguridad sin tener que extraerlos primero.

Clientes de sistemas de archivos remotos/distribuidos

Otro

Véase también

Referencias

  1. ^ "Versión 3.16.2". 10 de octubre de 2023. Consultado el 19 de octubre de 2023 .
  2. ^ "Inicio - FUSE para OS X".
  3. ^ Zissimopoulos, Bill (14 de febrero de 2021), billziss-gh/winfsp , consultado el 16 de febrero de 2021
  4. ^ "Algunas ventajas técnicas del Hurd". 15 de mayo de 2011. Consultado el 28 de marzo de 2016 .
  5. ^ "Novedades/FreeBSD10 - Wiki de FreeBSD".
  6. ^ "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 .
  7. ^ "'CVS: cvs.openbsd.org: src' - MARC".
  8. ^ "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.
  9. ^ "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 .
  10. ^ "Registro de cambios de libfuse3". GitHub . Consultado el 9 de enero de 2020 .
  11. ^ "Lustre FreeBSD". Archivado desde el original el 12 de marzo de 2008. Consultado el 2 de marzo de 2008 .
  12. ^ "Arquitectura ZFS para Lustre". Sun Microsystems. Archivado desde el original el 22 de enero de 2009. Consultado el 2 de marzo de 2008 .
  13. ^ "minio/minfs". GitHub . Consultado el 12 de abril de 2018 .

Enlaces externos