- FUSE permite escribir controladores de sistema de archivos sin necesidad de un módulo del kernel
- Lo usan varios clientes de sistemas de archivos como NTFS, SFTP y S3
- También se pueden crear cosas que no son un sistema de archivos real, como WikipediaFS
- Pero FUSE es incómodo para desarrollar
- Hay que elegir entre 2 API: Low-Level y High-Level
- Hay 2 versiones de API incompatibles: libfuse2 y libfuse3
- APIs que siguen cambiando poco a poco (
FUSE_USE_VERSION)
- En Mac y Windows no es nativo, así que hay que instalar controladores de terceros como MacFuse y WinFuse
- Nosotros (XetHub) queríamos que fuera fácil acceder desde una laptop personal a distintas versiones de datasets de imágenes sin tener que usar comandos de S3
- La pregunta "¿se podrá crear un sistema de archivos en espacio de usuario que sea realmente multiplataforma?" nos llevó a NFSv3
NFS
- NFSv3 es un protocolo de sistema de archivos en red con 20 años de antigüedad; es muy simple y universal, así que viene implementado de forma nativa en casi todos los sistemas operativos
- Principios de diseño hermosos y simples
- El servidor es completamente stateless
- El servidor NFS es simple y el cliente NFS es inteligente
- Reglas simples de consistencia de caché (el servidor no define la política de caché; el cliente se encarga como quiera)
- El cliente NFS sabe que está hablando a través de la red
- En la práctica, el rendimiento es muy bueno
- En resumen, usar NFS en localhost en vez de FUSE para implementar un sistema de archivos en modo usuario permite obtener rendimiento y resiliencia con mayor facilidad
- Si implementas una sola vez el protocolo del servidor, puedes aprovechar directamente el caché existente y las funciones reforzadas durante 20 años
Cómo usa NFS XetHub
- Desarrollaron una implementación nativa, multiplataforma y en modo usuario de sistema de archivos
- Es posible montar datasets masivos en la máquina del usuario sin controladores del kernel
- Como montar el modelo Llama 2 de 660GB o analizar archivos Parquet grandes con consultas de DuckDB
- Compatible con Linux, Mac y Windows Pro o superior (Windows Home no funciona)
- El servidor NFS implementado en Rust, nfsserve, está publicado en GitHub
- El rendimiento de lectura es bastante bueno, y la escritura funciona, pero todavía necesita optimización
4 comentarios
A diferencia del título, en realidad no explican por qué lo escribieron en Rust.
El enfoque del artículo original es por qué desarrollaron su propio servidor NFS... pero parece que pusieron una palabra clave popular como Rust en el título porque no podían dejarla fuera :-)
Parece que el artículo original no trata de por qué lo escribieron en Rust, sino de por qué eligieron NFS en lugar de FUSE.
Ah, pensándolo bien, no había nada aparte de decir que simplemente era rápido por estar hecho en Rust. Hice el resumen sin pensarlo mucho.