stringtranslate.com

Sistema de archivos en el espacio de usuario

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.

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

FUSE es software gratuito lanzado originalmente bajo los términos de la Licencia pública general GNU y la Licencia pública general reducida GNU .

Historia

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.

FUSE se lanzó originalmente bajo los términos de la Licencia pública general GNU y la Licencia pública general reducida de GNU , luego también se reimplementó como parte del sistema base FreeBSD [5] y se lanzó bajo los términos de la licencia BSD simplificada . En marzo de 2013 se lanzó una reimplementación con licencia ISC realizada por Sylvestre Gallon [6] y se 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 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

Un diagrama de flujo que muestra cómo funciona FUSE: El kernel redirige la solicitud desde el espacio de usuario para enumerar archivos (ls -l /tmp/fuse) 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 se redirige al programa de espacio de usuario que realizó originalmente la solicitud.

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.

Desmontar 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 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.

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 respaldo

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

Clientes de sistemas de archivos remotos/distribuidos

Otro

Ver 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 - Compatibilidad con 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 OSDir.com". Archivado desde el original el 20 de abril de 2016.
  9. ^ "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 .
  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". Microsistemas solares. Archivado desde el original el 22 de enero de 2009 . Consultado el 2 de marzo de 2008 .
  13. ^ "minio/minf". GitHub . Consultado el 12 de abril de 2018 .

enlaces externos