¿Cuáles son los beneficios y las desventajas de usar los sistemas de archivos FuseFS?

19

Sé que algunos sistemas de archivos se presentan a través de Fuse y me preguntaba sobre los pros y los contras de este enfoque.

geoffc
fuente

Respuestas:

17

No soy positivo si te refieres a sistemas de archivos reales en disco o cualquier sistema de archivos. Nunca he visto un sistema de archivos normal usar FUSE, aunque supongo que es posible; El principal beneficio de FUSE es que le permite presentar algo a las aplicaciones (o al usuario) que se parece a un sistema de archivos, pero realmente solo llama a funciones dentro de su aplicación cuando el usuario intenta hacer cosas como listar los archivos en un directorio o crear un nuevo archivo. Plan9 es bien conocido por tratar de hacer que todo sea accesible a través del sistema de archivos, y el /procpseudo-sistema de archivos proviene de ellos; FUSE es una forma para que las aplicaciones sigan fácilmente ese patrón

Por ejemplo, aquí hay una captura de pantalla de un sistema de archivos FUSE (muy poco funcional) que da acceso a los datos del sitio SE:

Captura de pantalla del sistema de archivos FUSE en acción

Naturalmente, ninguno de esos archivos existe realmente; cuando se lsle solicitó la lista de archivos en el directorio FUSE llamó a una función en mi programa que hizo una solicitud de API a este sitio para cargar información sobre el usuario 73 (yo); cattratando de leer display_namey website_urlllamado a más funciones que devolvieron los datos almacenados en caché de la memoria, sin nada realmente existente en el disco

Michael Mrozek
fuente
3
Hay implementaciones de FUSE de FAT , NTFS , iso9660 , ext2 y más .
Gilles 'SO- deja de ser malvado'
2
Encontrará sistemas de archivos pesados ​​implementados en fusibles: LessFS, GlusterFS, MooseFS. El GFS de Google (no POSIX) también se ejecuta en el espacio de usuario.
Tobu
¿Dónde encontraste esa aplicación?!?!
Nathan Osman
44
@ George Lo escribí cuando estaba jugando con la API SO. No utiliza ninguna ruta excepto / usuarios, por lo que básicamente está viendo todas las características implementadas en esa captura de pantalla; fue solo para ver lo difícil que sería
Michael Mrozek
55
@George Lo puse en github
Michael Mrozek
19

Los sistemas de archivos Unix se implementan tradicionalmente en el núcleo. FUSE permite que los sistemas de archivos sean implementados por un programa de usuario.

Los sistemas de archivos en el núcleo son más adecuados para los sistemas de archivos principales para programas y datos:

  • Se pueden usar en medios de arranque (el programa que implementa un sistema de archivos FUSE debe cargarse desde algún lugar).
  • Son más robustos, ya que no desaparecerán debido a un proceso que se bloquea o se mata por error.
  • Son algo más rápidos.

Los sistemas de archivos FUSE tienen otras ventajas, principalmente en torno a su flexibilidad:

  • Los usuarios comunes pueden cargarlos y montarlos, por lo que son convenientes para los sistemas de archivos que los usuarios tienden a montar solos: para acceder a la red, para acceder a archivos, medios extraíbles, etc.
  • Si un controlador de sistema de archivos FUSE falla, no entrará en pánico en su núcleo: no verá nada peor que errores de E / S en aplicaciones que estaban accediendo al sistema de archivos.
  • Se pueden programar muy rápidamente; existen enlaces FUSE para muchos lenguajes de secuencias de comandos en los que se puede escribir un útil controlador de sistema de archivos FUSE en unos cientos de líneas de código.
  • Se pueden implementar muy rápidamente, tanto porque no hay necesidad de intervención del administrador para instalarlos como porque se pueden transportar fácilmente entre los sistemas operativos compatibles .
  • No existen problemas de licencia relacionados con la vinculación estática con un núcleo (esto afecta a zfs ).
Gilles 'SO- deja de ser malvado'
fuente
7

FUSE no es realmente un sistema de archivos per se, sino un código que permite que los sistemas de archivos se implementen como procesos en lugar de módulos del núcleo.

Uno de los beneficios más útiles de FUSE es permitir que el código GPL se "mezcle" con uno no GPL. Por ejemplo, Gnu / Linux y ZFS http://zfs-fuse.net/ o NTFS-3G en muchos sistemas operativos como OpenSolaris y * BSD http://www.tuxera.com/community/ntfs-3g-download/

El principal inconveniente es el impacto en el rendimiento en comparación con los controladores nativos (kernel).

jlliagre
fuente