Первый публичный выпуск распределённой файловой системы JuiceFS

После четырёх лет разработки компания Juicedata, созданная при поддержке двух крупных китайских венчурных фондов, опубликовала первый публичный выпуск POSIX-совместимой распределённой файловой системы JuiceFS, которая может быть развёрнута поверх СУБД Redis или хранилищ объектов, поддерживающих API Amazon S3. JuiceFS развивается как промежуточное решение, позволяющее упростить адаптацию любых приложений для работы в облачной инфраструктуре, благодаря возможности работать с хранилищами объектов как с традиционными ФС. Код проекта написан на языке Go и распространяется под лицензией AGPLv3.

Архитектура JuiceFS подразумевает использование СУБД Redis для хранения метаданных, определяющих структуру ФС и параметры отражения блоков данных в облачные хранилища. Файловая система реализована в пространстве пользователя с использованием механизма FUSE. Каждый файл разбивается на логические цепочки размером 64 МБ, которые в свою очередь разделяются на более мелкие блоки, которые после шифрования (опционально) и сжатия записываются в хранилища объектов.


Основные особенности JuiceFS:

  • Полная совместимость с POSIX, для приложений хранилище выглядит как традиционная файловая система.
  • Высокая производительность, отзывчивость на уровне нескольких миллисекунд и гибкие возможности по расширению. По скорости выполнения операций с метаданными, а также последовательного чтения и записи, JuiceFS на порядок опережает Amazon EFS и FUSE-модуль S3FS.

  • Поддержка архитектуры Cloud-Native с независимым масштабированием хранилища и вычислительных компонентов. На базе JuiceFS может создаваться единое общее хранилище для облачных сервисов.
  • Поддержка создания совместных хранилищ для одновременных операций чтения и записи от большого числа клиентов. На базе JuiceFS также можно легко развёртывать хранилища для резервных копий или накопления больших объёмов аналитических данных.
  • Глобальные файловые блокировки с поддержкой flock (BSD-блокировки) и fcntl (POSIX-блокировки).
  • Встроенная возможность хранения данных в сжатом виде: по умолчанию используется алгоритм LZ4 и опционально доступен Zstd.
  • Обеспечение отказоустойчивости через и избыточное хранение копий данных в разных хранилищах объектов.
  • Для хранения объектов могут использоваться локальный диск, СУБД Redis, Ceph RGW, MinIO, облачные сервисы Amazon S3, Google Cloud Storage, Azure Blob Storage, Alibaba Cloud Object Storage Service (OSS), Tencent Cloud Object Storage (COS) и QingStor Object Storage.

Помимо JuiceFS, компания Juicedata также развивает открытый инструментарий JuiceSync, позволяющий реплицировать данные между разными хранилищами на базе локальных ФС, sftp, HDFS и облачных сервисов хранения объектов AWS S3, Google Cloud Platform GCS, Microsoft Azure Block Storage, Aliyun OSS, Tencent Cloud COS, UCloud UFile, Qingyun QingStor, KingSoft Cloud KS3, Baidu Cloud BOS, JDCloud Object Storage, Qiniu, Backblaze B2 и Digital Ocean Space.

Release. Ссылка here.