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.
fuente
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.
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 /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í hay una captura de pantalla de un sistema de archivos FUSE (muy poco funcional) que da acceso a los datos del sitio SE:
Naturalmente, ninguno de esos archivos existe realmente; cuando se ls
le 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); cat
tratando de leer display_name
y website_url
llamado a más funciones que devolvieron los datos almacenados en caché de la memoria, sin nada realmente existente en el disco
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:
Los sistemas de archivos FUSE tienen otras ventajas, principalmente en torno a su flexibilidad:
fuente
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).
fuente