Sobre el proyecto

JuiceFS es un sistema de archivos POSIX de alto rendimiento publicado bajo la Licencia Apache 2.0 y diseñado para entornos cloud-native. Los archivos escritos a través de JuiceFS se persisten en almacenamiento de objetos (por ejemplo, Amazon S3 u otros servicios compatibles con S3), mientras que los metadatos, como nombres de archivo, tamaños, permisos, marcas de tiempo y estructura de directorios, se conservan en un motor de metadatos independiente. Los motores de metadatos compatibles incluyen Redis, MySQL, SQLite y TiKV, por lo que las implementaciones pueden ajustarse a diferentes escenarios y requisitos. El proyecto describe tres partes principales: el cliente de JuiceFS, que coordina el almacenamiento de objetos y el motor de metadatos e implementa interfaces de sistema de archivos; la capa de almacenamiento de datos, que puede usar discos locales, almacenamiento de objetos en nube pública o privada, o HDFS; y el motor de metadatos. Los archivos se dividen en chunks (límite superior predeterminado de 64 MiB), los chunks en slices y los slices en blocks (4 MiB de forma predeterminada) que se almacenan en el almacenamiento de objetos. Debido a esta disposición, los archivos de origen no son visibles directamente en un navegador de almacenamiento de objetos; el bucket contiene un directorio chunks con directorios y archivos numerados. Las capacidades destacadas enumeradas en el README incluyen compatibilidad POSIX completa, un SDK de Java para Hadoop compatible con Hadoop 2.x y 3.x, una puerta de enlace compatible con S3, un controlador CSI para Kubernetes, acceso compartido de lectura/escritura desde miles de clientes, consistencia fuerte donde las modificaciones confirmadas son visibles de inmediato para todos los clientes montados, latencia baja y rendimiento escalable, cifrado en tránsito y en reposo, bloqueos de archivos globales (BSD flock y POSIX fcntl) y compresión de datos con LZ4 o Zstandard. El README también menciona consistencia close-to-open, rename atómico y operaciones de metadatos, archivos abiertos accesibles después de unlink, mmap, fallocate con soporte de punch hole y atributos extendidos. Indica que JuiceFS pasó las 8813 pruebas de compatibilidad en la última versión de pjdfstest. Para empezar se requiere un motor de metadatos compatible, almacenamiento de objetos compatible y el cliente de JuiceFS. La documentación cubre una guía de inicio rápido, referencia de comandos, contenedores (Docker y Podman), Kubernetes, SDK de Java para Hadoop, mejores prácticas de Redis, configuración de almacenamiento de objetos, caché, diagnóstico de fallos, opciones de montaje FUSE, uso en Windows y la puerta de enlace S3. Los benchmarks se proporcionan mediante un subcomando de JuiceFS, además de comparaciones de lectura/escritura secuencial con fio y de metadatos con mdtest frente a EFS y S3FS; el README presenta estos como resultados favorables y enlaza a los detalles. El almacenamiento de objetos compatible incluye Amazon S3 y servicios compatibles con S3, Google Cloud Storage, Azure Blob Storage, Alibaba Cloud OSS, Tencent Cloud COS, Qiniu Kodo, QingStor, Ceph RGW, MinIO, disco local y Redis, entre otros. El README afirma que JuiceFS está listo para producción y se usa en miles de máquinas, con una lista de adoptantes y documentación de integración. El formato de almacenamiento se describe como estable y compatible con versiones futuras. La hoja de ruta menciona optimización de la puerta de enlace, sincronización reanudable, optimización de read-ahead, optimización de escenarios a gran escala y snapshots. JuiceFS recopila datos de uso anónimos de forma predeterminada, informando solo métricas principales como el número de versión, y esto se puede desactivar con la opción --no-usage-report. El diseño se inspiró en Google File System, HDFS y MooseFS. El soporte de la comunidad está disponible a través de GitHub Discussions y Discord, y los issues se gestionan en GitHub.