13 puntos por xguru 2023-09-22 | 4 comentarios | Compartir por WhatsApp
  • 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

 
ntpd3300 2023-09-22

A diferencia del título, en realidad no explican por qué lo escribieron en Rust.

 
botplaysdice 2023-09-23

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 :-)

 
blueprajna 2023-09-22

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.

 
xguru 2023-09-22

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.