Sobre o projeto

JuiceFS é um sistema de arquivos POSIX de alto desempenho, lançado sob a Licença Apache 2.0 e projetado para ambientes cloud-native. Os arquivos gravados através do JuiceFS são persistidos em armazenamento de objetos (por exemplo, Amazon S3 ou outros serviços compatíveis com S3), enquanto metadados como nomes de arquivos, tamanhos, permissões, carimbos de data/hora e estrutura de diretórios são mantidos em um motor de metadados separado. Os motores de metadados suportados incluem Redis, MySQL, SQLite e TiKV, de modo que as implantações podem ser ajustadas para diferentes cenários e requisitos. O projeto descreve três partes principais: o cliente JuiceFS, que coordena o armazenamento de objetos e o motor de metadados e implementa interfaces de sistema de arquivos; a camada de armazenamento de dados, que pode usar discos locais, armazenamento de objetos em nuvem pública ou privada, ou HDFS; e o motor de metadados. Os arquivos são divididos em chunks (limite superior padrão de 64 MiB), os chunks em slices, e os slices em blocos (4 MiB por padrão) que são armazenados no armazenamento de objetos. Devido a esse layout, os arquivos de origem não são diretamente visíveis em um navegador de armazenamento de objetos; o bucket contém um diretório chunks com diretórios e arquivos numerados. As capacidades destacadas listadas no README incluem compatibilidade POSIX completa, um SDK Java para Hadoop compatível com Hadoop 2.x e 3.x, um gateway compatível com S3, um driver CSI para Kubernetes, acesso compartilhado de leitura/gravação a partir de milhares de clientes, consistência forte em que modificações confirmadas são imediatamente visíveis para todos os clientes montados, latência baixa e throughput escalável, criptografia em trânsito e em repouso, bloqueios de arquivos globais (BSD flock e POSIX fcntl), e compressão de dados com LZ4 ou Zstandard. O README também observa consistência close-to-open, rename atômico e operações de metadados, arquivos abertos acessíveis após unlink, mmap, fallocate com suporte a punch hole, e atributos estendidos. Afirma que o JuiceFS passou em todos os 8813 testes de compatibilidade no pjdfstest mais recente. Para começar, são necessários um motor de metadados suportado, armazenamento de objetos suportado e o cliente JuiceFS. A documentação abrange um guia de início rápido, referência de comandos, contêineres (Docker e Podman), Kubernetes, SDK Java para Hadoop, melhores práticas para Redis, configuração de armazenamento de objetos, cache, diagnóstico de falhas, opções de montagem FUSE, uso no Windows e o gateway S3. Benchmarks são fornecidos através de um subcomando do JuiceFS, além de comparações de leitura/gravação sequencial com fio e metadados com mdtest em relação a EFS e S3FS; o README apresenta esses resultados como favoráveis e fornece links para detalhes. O armazenamento de objetos suportado inclui Amazon S3 e serviços compatíveis com S3, Google Cloud Storage, Azure Blob Storage, Alibaba Cloud OSS, Tencent Cloud COS, Qiniu Kodo, QingStor, Ceph RGW, MinIO, disco local e Redis, entre outros. O README afirma que o JuiceFS está pronto para produção e é usado por milhares de máquinas, com uma lista de adotantes e documentação de integração. O formato de armazenamento é descrito como estável e suportado por versões futuras. O roadmap menciona otimização de gateway, sincronização retomável, otimização de read-ahead, otimização de cenários em larga escala e snapshots. O JuiceFS coleta dados de uso anônimos por padrão, relatando apenas métricas principais, como o número da versão, e isso pode ser desativado com a opção --no-usage-report. O design foi inspirado no Google File System, HDFS e MooseFS. O suporte da comunidade está disponível através do GitHub Discussions e Discord, e as issues são acompanhadas no GitHub.