Создание кластера Milvus на базе JuiceFS
Сотрудничество между сообществами open-source — волшебная вещь. Страстные, умные и творческие волонтёры не только помогают open-source-решениям оставаться инновационными, но и работают над тем, чтобы объединять различные инструменты интересными и полезными способами. Milvus, самая популярная в мире векторная база данных, и JuiceFS, общая файловая система, разработанная для cloud-native сред, были объединены в этом духе своими соответствующими open-source-сообществами. В этой статье объясняется, что такое JuiceFS, как построить кластер Milvus на основе общего файлового хранилища JuiceFS и какой производительности пользователи могут ожидать при использовании этого решения.
Что такое JuiceFS?
JuiceFS — это высокопроизводительная open-source распределённая POSIX-файловая система, которую можно построить поверх Redis и S3. Она была разработана для cloud-native сред и поддерживает управление, анализ, архивирование и резервное копирование данных любого типа. JuiceFS обычно используется для решения задач больших данных, создания приложений искусственного интеллекта (AI) и сбора логов. Система также поддерживает совместное использование данных несколькими клиентами и может напрямую использоваться как общее хранилище в Milvus.
После того как данные и соответствующие им метаданные сохраняются соответственно в объектном хранилище и Redis, JuiceFS выступает в роли stateless-промежуточного ПО. Совместное использование данных реализуется за счёт возможности различным приложениям бесшовно взаимодействовать друг с другом через стандартный интерфейс файловой системы. JuiceFS использует Redis, open-source хранилище данных в памяти, для хранения метаданных. Redis используется потому, что он гарантирует атомарность и обеспечивает высокую производительность операций с метаданными. Все данные сохраняются в объектном хранилище через клиент JuiceFS. Архитектурная схема выглядит следующим образом:
Общая архитектура JuiceFS.
Создание кластера Milvus на основе JuiceFS
Кластер Milvus, построенный с использованием JuiceFS (см. архитектурную схему ниже), работает за счёт разделения входящих запросов с помощью Mishards, промежуточного ПО для шардирования кластера, чтобы каскадно передавать запросы вниз к его подмодулям. При вставке данных Mishards распределяет входящие запросы на узел записи Milvus, который сохраняет вновь вставленные данные в JuiceFS. При чтении данных Mishards загружает данные из JuiceFS через узел чтения Milvus в память для обработки, затем собирает и возвращает результаты из подслужб вверх по потоку.
Архитектура кластера Milvus, построенного с JuiceFS.
Шаг 1: Запустите сервис MySQL
Запустите сервис MySQL на любом узле в кластере. Подробнее см. Управление метаданными с помощью MySQL.
Шаг 2: Создайте файловую систему JuiceFS
В демонстрационных целях используется предварительно скомпилированная бинарная программа JuiceFS. Скачайте правильный установочный пакет для вашей системы и следуйте краткому руководству по началу работы JuiceFS для получения подробных инструкций по установке. Чтобы создать файловую систему JuiceFS, сначала настройте базу данных Redis для хранения метаданных. Для развёртываний в публичном облаке рекомендуется размещать сервис Redis в том же облаке, что и приложение. Кроме того, настройте объектное хранилище для JuiceFS. В этом примере используется Azure Blob Storage; однако JuiceFS поддерживает почти все объектные сервисы. Выберите сервис объектного хранилища, который лучше всего соответствует требованиям вашего сценария.
После настройки сервиса Redis и объектного хранилища отформатируйте новую файловую систему и смонтируйте JuiceFS в локальный каталог:
1 $ export AZURE_STORAGE_CONNECTION_STRING="DefaultEndpointsProtocol=https;AccountName=XXX;AccountKey=XXX;EndpointSuffix=core.windows.net"
2 $ ./juicefs format \
3 --storage wasb \
4 --bucket https://<container> \
5 ... \
6 localhost test #format
7 $ ./juicefs mount -d localhost ~/jfs #mount
8
Если сервер Redis не запущен локально, замените localhost следующим адресом:
redis://<user:password>@host:6379/1.
Когда установка завершается успешно, JuiceFS возвращает страницу общего хранилища /root/jfs.
Успешная установка.
Шаг 3: Запустите Milvus
На всех узлах кластера должен быть установлен Milvus, и каждый узел Milvus должен быть настроен с разрешением на чтение или запись. Только один узел Milvus может быть настроен как узел записи, а остальные должны быть узлами чтения. Сначала задайте параметры разделов cluster и general в файле системной конфигурации Milvus server_config.yaml:
Раздел cluster
| Параметр | Описание | Конфигурация |
|---|---|---|
enable | Включать ли режим кластера | true |
role | Роль развертывания Milvus | rw/ro |
Раздел general
# meta_uri is the URI for metadata storage, using MySQL (for Milvus Cluster). Format: mysql://<username:password>@host:port/database
general:
timezone: UTC+8
meta_uri: mysql://root:milvusroot@host:3306/milvus
Во время установки настроенный путь к общему хранилищу JuiceFS задается как /root/jfs/milvus/db.
1 sudo docker run -d --name milvus_gpu_1.0.0 --gpus all \
2 -p 19530:19530 \
3 -p 19121:19121 \
4 -v /root/jfs/milvus/db:/var/lib/milvus/db \ #/root/jfs/milvus/db is the shared storage path
5 -v /home/$USER/milvus/conf:/var/lib/milvus/conf \
6 -v /home/$USER/milvus/logs:/var/lib/milvus/logs \
7 -v /home/$USER/milvus/wal:/var/lib/milvus/wal \
8 milvusdb/milvus:1.0.0-gpu-d030521-1ea92e
9
После завершения установки запустите Milvus и убедитесь, что он запущен корректно. Наконец, запустите сервис Mishards на любом из узлов кластера. На изображении ниже показан успешный запуск Mishards. Для получения дополнительной информации обратитесь к руководству на GitHub.
Успешный запуск Mishards.
Тесты производительности
Решения общего хранилища обычно реализуются с помощью систем сетевого хранилища (NAS). К распространенным типам систем NAS относятся Network File System (NFS) и Server Message Block (SMB). Публичные облачные платформы обычно предоставляют управляемые сервисы хранения, совместимые с этими протоколами, например Amazon Elastic File System (EFS).
В отличие от традиционных систем NAS, JuiceFS реализован на основе Filesystem in Userspace (FUSE), где все чтение и запись данных выполняются непосредственно на стороне приложения, что дополнительно снижает задержку доступа. У JuiceFS также есть уникальные функции, которых нет в других системах NAS, например сжатие данных и кэширование.
Тестирование производительности показывает, что JuiceFS имеет значительные преимущества перед EFS. В тесте метаданных (рисунок 1) JuiceFS демонстрирует число операций ввода-вывода в секунду (IOPS) до десяти раз выше, чем EFS. Кроме того, тест пропускной способности ввода-вывода (рисунок 2) показывает, что JuiceFS превосходит EFS как в сценариях с одной задачей, так и с несколькими задачами.
Рисунок 1. Тест метаданных.
Рисунок 2. Тест последовательного чтения/записи.
Кроме того, тестирование производительности показывает, что время получения первого запроса, или время загрузки недавно вставленных данных с диска в память, для кластера Milvus на базе JuiceFS составляет в среднем всего 0,032 секунды, что указывает на то, что данные загружаются с диска в память практически мгновенно. Для этого теста время получения первого запроса измеряется с использованием одного миллиона строк 128-мерных векторных данных, вставляемых пакетами по 100 тыс. с интервалами от 1 до 8 секунд.
JuiceFS — это стабильная и надежная система общего файлового хранилища, а кластер Milvus, построенный на JuiceFS, обеспечивает как высокую производительность, так и гибкую емкость хранилища.
Узнайте больше о Milvus
Milvus — это мощный инструмент, способный обеспечивать работу широкого спектра приложений искусственного интеллекта и поиска по сходству векторов. Чтобы узнать больше о проекте, ознакомьтесь со следующими ресурсами:
- Читайте наш блог.
- Взаимодействуйте с нашим open-source сообществом в Slack.
- Используйте или вносите вклад в самую популярную в мире векторную базу данных на GitHub.
- Быстро тестируйте и развертывайте AI-приложения с нашим новым bootcamp.
Биография Changjian Gao.
Биография Jingjing Jia.
Читать далее

Zilliz Cloud Just Landed in Claude Code
The Zilliz Cloud Plugin brings the full power of Zilliz Cloud directly into your Claude Code terminal as natural-language conversations.

Zilliz Cloud Launches in AWS Australia, Expanding Global Reach to Australia and Neighboring Markets
We're thrilled to announce that Zilliz Cloud is now available in the AWS Sydney, Australia region (ap-southeast-2).

Zilliz Named "Highest Performer" and "Easiest to Use" in G2's Summer 2025 Grid® Report for Vector Databases
Zilliz shines in G2's Summer 2025 Grid® Report as both "Highest Performer" and "Easiest to Use," solving the performance-usability dilemma.



