Skip to content

Ваш S3 Bucket теперь SSD

Перестаньте относиться к облачному хранилищу как к медленному, громоздкому архиву. Этот инструмент с открытым исходным кодом превращает любой объектный бакет в высокопроизводительный локальный диск с агрессивным механизмом кэширования, который обеспечивает скорость на аппаратном уровне.

Stork.AI
Hero image for: Ваш S3 Bucket теперь SSD

Кратко / Главное

Перестаньте относиться к облачному хранилищу как к медленному, громоздкому архиву. Этот инструмент с открытым исходным кодом превращает любой объектный бакет в высокопроизводительный локальный диск с агрессивным механизмом кэширования, который обеспечивает скорость на аппаратном уровне.

Парадокс облачного хранилища: Дешевая масштабируемость, Ужасная Скорость

Объектное облачное хранилище, примером которого является AWS S3, предлагает беспрецедентную масштабируемость и экономическую эффективность. Однако его фундаментальная природа, основанная на API, создает значительный парадокс: приложения, созданные для традиционных POSIX-совместимых файловых систем, с трудом взаимодействуют напрямую. Это несоответствие вынуждает разработчиков переписывать код или мириться с ужасной производительностью, поскольку стандартные инструменты ожидают семантику локальной файловой системы, а не сетевые вызовы с высокой задержкой для получения отдельных объектов данных.

JuiceFS решает эту проблему, выступая в качестве прозрачного уровня абстракции. Он радикально отделяет метаданные файлов от необработанных фрагментов данных. Метаданные, включающие структуру файловой системы, разрешения и структуры каталогов, хранятся в быстрой, надежной базе данных, такой как Redis или Postgres. Одновременно необработанные фрагменты данных интеллектуально отправляются непосредственно выбранному вами облачному провайдеру, используя бесконечную масштабируемость таких сервисов, как S3.

Истинная инновация заключается в агрессивном многоуровневом механизме кэширования JuiceFS. Это «секретное оружие» предварительно извлекает и хранит часто используемые блоки данных на локальном NVMe-накопителе. В то время как первоначальный доступ к данным включает сетевую задержку, последующие запросы обслуживаются мгновенно из этого локального кэша на аппаратных скоростях. Это позволяет даже требовательным приложениям работать непосредственно в облачном объектном хранилище, превращая медленный, привязанный к API ресурс в высокопроизводительный, POSIX-совместимый локальный диск.

От облачного бакета до локального диска за 5 минут

Создание вашего локального диска из облачного хранилища начинается с механизма метаданных. Запустите экземпляр Redis с помощью Docker; эта база данных будет управлять структурой вашей файловой системы, разрешениями и структурами каталогов. Этот важный первый шаг подготавливает почву для JuiceFS, чтобы отделить ваши данные от их метаданных, оптимизируя производительность.

Далее инициализируйте файловую систему с помощью команды `juicefs format`. Укажите строку подключения Redis, имя вашего S3 bucket и учетные данные для доступа к облаку. Эта команда настраивает схему хранения в Redis и присваивает уникальный UUID вашей новой виртуальной файловой системе, не изменяя сам S3 bucket.

Смонтируйте виртуальный диск в локальный путь каталога с помощью команды `juicefs mount`. Укажите команде ваш экземпляр Redis и желаемую локальную папку. Пользователям macOS требуется macFUSE для включения поддержки пользовательских файловых систем, предоставляя необходимое расширение ядра для работы JuiceFS.

Оптимизируйте управление локальным кэшем с помощью флага `--free-space-ratio`. Этот параметр предотвращает исчерпание свободного места на вашем локальном диске, предписывая JuiceFS агрессивно очищать старые, реже используемые блоки кэша, когда объем локального кэш-диска падает ниже указанного процентного соотношения емкости. По умолчанию установлено 20%, и корректировка этого соотношения является ключом к эффективному использованию временного пространства.

Доказательство: От сетевой задержки до чтения на линейной скорости

Чтобы доказать это преобразование производительности, протестируйте недавно смонтированный диск JuiceFS с помощью классической утилиты `dd`. Эта команда считывает большой видеофайл (например, `input.mp4`) из монтирования JuiceFS, перенаправляя вывод в `/dev/null`, чтобы предотвратить фактическое копирование, при этом устанавливая размер блока (`bs`) в 4 мегабайта, чтобы соответствовать разбиению данных JuiceFS на фрагменты. Добавление `time` измеряет продолжительность выполнения.

Выполните эту команду `dd` один раз для теста "холодного чтения". Поскольку файл был недавно загружен и еще не кэширован локально, JuiceFS должен получить все 4 МБ фрагментов данных из облака через интернет. Этот первоначальный запуск демонстрирует задержку, связанную с сетью, занимая значительно больше времени, поскольку данные передаются из удаленного Amazon S3 - Cloud Object Storage.

Теперь выполните ту же команду `dd` во второй раз. Подсказка терминала возвращается почти мгновенно, завершаясь менее чем за одну секунду. Это "горячее чтение" демонстрирует эффективность JuiceFS: данные теперь обслуживаются непосредственно из локального SSD-кэша на аппаратных скоростях, полностью минуя интернет.

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

Обеспечение работы Kubernetes, AI и Observability

JuiceFS радикально преобразует облачные развертывания, предоставляя надежное решение для постоянного хранения данных в кластерах Kubernetes. Это устраняет необходимость выделения дорогостоящего облачного блочного хранилища для каждого узла, значительно сокращая затраты на инфраструктуру и упрощая управление хранилищем. Кластеры получают общий доступ к массивным наборам данных, поддерживаемым S3, что оптимизирует развертывание приложений, интенсивно использующих данные, и повышает общую эффективность использования ресурсов.

Конвейеры AI и машинного обучения получают огромные преимущества от этой прямой интеграции с облачным объектным хранилищем. Скрипты обучения теперь выполняются мгновенно с наборами данных S3 петабайтного масштаба, минуя традиционное, трудоемкое требование сначала загрузить все локально. Эта возможность значительно ускоряет разработку моделей, обеспечивая более быструю итерацию и более эффективное использование вычислительных ресурсов для рабочих нагрузок, интенсивно использующих данные.

Встроенная Observability предлагает глубокое понимание операций хранения. JuiceFS предоставляет стандартную конечную точку Prometheus, предоставляя подробные метрики по таким важным аспектам, как коэффициенты попадания в кэш, пропускная способность чтения/записи и задержка. Пользователи могут легко туннелировать эту конечную точку с помощью ngrok и настроить платформу Observability, такую как Better Stack, для сбора этих метрик. Эта настройка позволяет создавать панели мониторинга производительности в реальном времени и проактивные оповещения, обеспечивая оптимальное состояние и эффективность хранилища.

Часто задаваемые вопросы

Что такое JuiceFS?

JuiceFS — это распределенная файловая система с открытым исходным кодом и высокой производительностью, которая позволяет монтировать облачное объектное хранилище (например, AWS S3) как локальный диск, сочетая масштабируемость облака с локальной производительностью.

Как JuiceFS достигает скорости локального диска с облачным хранилищем?

JuiceFS использует многоуровневый механизм кэширования. Он разделяет метаданные (структуру файлов, разрешения) в быструю базу данных, такую как Redis, и хранит фрагменты данных в облаке. Когда файл доступен, он кэшируется на локальном SSD, что позволяет последующим чтениям происходить на аппаратных скоростях.

Что мне нужно, чтобы начать работу с JuiceFS?

Вам понадобятся три основных компонента: корзина облачного объектного хранилища (например, AWS S3), база данных метаданных (например, Redis) и клиент JuiceFS, установленный на вашей машине. Для macOS вам также потребуется установить macFUSE.

Могут ли несколько машин монтировать один и тот же том JuiceFS?

Да, JuiceFS разработан для одновременного доступа. Несколько клиентов или подов в кластере Kubernetes могут монтировать и совместно использовать один и тот же том JuiceFS одновременно, что делает его идеальным для общего постоянного хранилища.

One weekly email of tools worth shipping. No drip funnel.

one email per week · unsubscribe in two clicks · no third-party tracking

🚀Узнать больше

Будьте в курсе трендов ИИ

Откройте лучшие инструменты ИИ, агенты и MCP-серверы от Stork.AI.

P.S. Сделали что-то полезное? Опубликуйте на Stork

Все статьи