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.

Respuesta

No estoy seguro 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 sí. 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 un nuevo archivo. Plan9 es bien conocido por intentar hacer que todo sea accesible a través del sistema de archivos, y el /proc pseudo -sistema de archivos proviene de ellos; FUSE es una forma para que las aplicaciones sigan fácilmente ese patrón

Por ejemplo, aquí «una captura de pantalla de un sistema de archivos FUSE (sin características) 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 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 desde display_name y website_url llamaron a más funciones que devolvieron los datos en caché memoria, sin nada realmente existente en el disco

Comentarios

  • Hay implementaciones FUSE de FAT , NTFS , iso9660 , ext2 y más .
  • Encontrará sistemas de archivos de alta resistencia implementados en fuse: LessFS, GlusterFS, MooseFS . Google ' s GFS (no POSIX) también se ejecuta en el espacio de usuario.
  • ¿Dónde encontraste esa aplicación?!?!
  • @George Lo escribí cuando estaba jugando con la API de SO. No ' no usa ninguna ruta excepto / users, 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
  • @George lo puse en github

Respuesta

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 en el kernel 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 desaparecen debido a que un proceso falla 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:

  • 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, no causará pánico en su kernel: no verá nada peor que errores de E / S en las aplicaciones que estaban accediendo al sistema de archivos.
  • Ellos se puede programar muy rápidamente; hay enlaces FUSE para muchos lenguajes de scripting donde un controlador de sistema de archivos FUSE útil puede escribirse en unos cientos de líneas de código.
  • Pueden implementarse muy rápidamente, tanto porque no es necesaria la intervención del administrador para instalarlos como porque se pueden portar fácilmente entre sistemas operativos compatibles .
  • No hay problemas de licencia relacionados con la vinculación estática con un kernel (esto afecta a zfs ).

Respuesta

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

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *