it-swarm-es.tech

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

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

19
geoffc

No estoy seguro si te refieres a sistemas de archivos reales, en disco o cualquier sistema de archivos. Nunca he visto a 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 parece un sistema de archivos, pero en realidad solo llama a funciones dentro de su aplicación cuando el usuario intenta hacer cosas como listar los archivos en un directorio o crear uno nuevo. expediente. Plan9 es bien conocido por intentar hacer que todo sea accesible a través del sistema de archivos, y el /proc el pseudo-sistema de archivos proviene de ellos; Fuse es una forma de que las aplicaciones sigan fácilmente ese patrón

Por ejemplo, aquí hay una captura de pantalla de un sistema de archivos Fuse (sin características) que da acceso a los datos del sitio SE:

Screenshot of Fuse filesystem in action

Naturalmente, ninguno de esos archivos existe realmente; cuando ls solicitó la lista de archivos en el directorio Fuse llamó a una función en mi programa que hizo una solicitud API a este sitio para cargar información sobre el usuario 73 (yo); cat intentando leer de display_name y website_url llamó a más funciones que devolvieron los datos almacenados en caché desde la memoria, sin que nada realmente exista en el disco

17
Michael Mrozek

Los sistemas de archivos Unix se implementan tradicionalmente en el kernel. Fuse permite que los sistemas de archivos sean implementados por un programa de usuario.

Los sistemas de archivos del 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, en el sentido de que no desaparecerán debido a que un proceso se bloquee o falle por error.
  • Son algo más rápidos.

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

  • Pueden ser cargados y montados por usuarios normales, por lo que son convenientes para sistemas de archivos que los usuarios tienden a montar por sí mismos: para acceso a la red, para revisar archivos, para medios extraíbles, etc.
  • Si un controlador del sistema de archivos Fuse falla, su kernel no entrará en pánico: no verá nada peor que errores de E/S en las aplicaciones que estaban accediendo al sistema de archivos.
  • Se pueden programar muy rápidamente; hay Fuse bindings para muchos lenguajes de scripting donde un controlador de sistema de archivos Fuse útil se puede escribir en unos pocos cientos de líneas de código.
  • Se pueden implementar muy rápidamente, tanto porque no es necesaria la intervención del administrador para instalarlos como porque se pueden migrar fácilmente entre sistemas operativos compatibles .
  • No hay problemas de licencia relacionados con estar vinculado estáticamente con un kernel (esto afecta a zfs ).

Fuse no es realmente un sistema de archivos en sí, sino un código que permite que los sistemas de archivos se implementen como procesos en lugar de como módulos del kernel.

Uno de los beneficios más útiles de Fuse es permitir que el código GPL se "mezcle" con uno que no es 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).

7
jlliagre