Лучшее S3 хранилище

Лучшее S3 хранилище

Для чего нужно распределённое хранилище Simple Storage Service (далее — S3)?

Чаще всего S3 используют для хранения неструктурированных данных: изображений, исходного кода, видеофайлов и резервных копий. Оно позволяет хранить данные практически любого типа с высокой надёжностью благодаря репликации между серверами. Использование S3-хранилища открывает возможность размещать терабайты данных в удобном формате с доступом из любой точки мира.

Почему именно S3, а не аналоги?

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

Критерии выбора хранилища:

  1. Открытый исходный код — возможность аудита безопасности и адаптации под специфические требования;
  2. Актуальность и обновляемость — активная разработка, регулярные релизы и поддержка сообщества;
  3. Безопасность — наличие механизмов шифрования данных, аутентификации и авторизации;

Выбор S3 хранилища

Стоит уточнить, что раньше самым популярным решением был MinIO, но он перешел в режим поддержки, что может означать множество проблем с ним, особенно в плане безопасности.

Рассматривалось 7 систем:

AIStore был сразу исключён из рассмотрения из-за избыточной сложности для поставленных задач. Ambry не поддерживает S3 API, HS5 не является распределённым хранилищем, а Versity S3 Gateway не представляет собой полноценное хранилище в классическом понимании, оно делает существующее хранилище(файловое или облачное) доступным через S3 интерфейс.

В итоге для дальнейшего анализа остались три варианта: Garage, SeaweedFSи RustFS.

После тестирования и более глубокого изучения документации стало очевидно, что RustFS не подходит для использования в текущий момент из-за незрелости проекта — на данный момент доступна только alpha-версия. Несмотря на перспективность и как заверяют авторы самой большой скорости передачи данных из всех аналогов решение требует дальнейшего развития.

Garage показал себя как простое и стабильное решение, однако SeaweedFS продемонстрировал большую гибкость, более высокую производительность и простоту масштабирования. Кроме того, SeaweedFS обладает расширенным функционалом по сравнению с конкурентами, что делает его более универсальным решением.

Сравнение

Garage
Плюсы:
Простота архитектуры, легковесность, отказоустойчивость, написан на Rust, децентрализация, стабильность, прозрачная документация,низкие требования к ресурсам
Минусы:
Требует ручной перебалансировки, ограниченный функционал, небольшое сообщество, отсутствие GUI, eventual consistency
Рекомендации:
Для небольших проектов с ограниченными ресурсами, где важна простота и стабильность

SeaweedFS
Плюсы:
Высокая производительность, низкая латентность, автоматическое масштабирование, богатый функционал (Filer, WebDAV, HDFS), отличная документация, большое сообщество, веб-интерфейс, гибкая репликация, дедупликация и компрессия
Минусы:
Сложность архитектуры, ресурсоёмкость, централизация управления (Master), Overhead на метаданных
Рекомендации:
Для production-систем с высокими требованиями к производительности и масштабируемости

RustFS
Плюсы:
Современный дизайн, написан на Rust, теоретически высокая производительность, перспективная архитектура, активная разработка новых фич
Минусы:
Незрелость (alpha-стадия), нестабильность API, нет production deployments, слабая документация, маленькое сообщество, неполная реализация S3 API, риски развития проекта, недостаточное тестирование
Рекомендации:
Пока НЕ рекомендуется для production. Держать на радаре для будущего использования

Итоговый выбор

В качестве распределённого S3-совместимого хранилища был выбран SeaweedFS. Данное решение сочетает в себе удобный интерфейс, качественную документацию, высокую производительность и продуманные механизмы безопасности.

Все файлы, передающиеся между серверами защищены:

  1. Каждое обращение проверяет JWT ключ для доступа, с разделением прав на запись и чтение
  2. Шифрование трафика благодаря gRPC с взаимной аутентификацией TLS (mTLS)
  3. Шифрование трафика HTTP/HTTPS протокола
  4. Белые списки IP-адресов

Благодаря этим четырем уровням защиты обеспечивается комплексная безопасность на транспортном, сетевом и прикладном уровнях.

Рис 1. – Веб-интерфейс SeaweedFS с отображением топологии кластера (распределение узлов, объёмов данных и статус репликации)

Расширенный функционал SeaweedFS

Помимо стандартного S3 API, SeaweedFS предоставляет дополнительные возможности для работы с данными, которые делают его универсальным решением для различных сценариев использования.

Встроенная файловая система Filer

SeaweedFS Filer представляет собой файловый интерфейс поверх объектного хранилища. Это позволяет работать с данными как с обычной файловой системой — создавать директории, управлять файлами через веб-интерфейс и организовывать иерархическую структуру данных. Filer особенно удобен для организации совместной работы над файлами и быстрого доступа к часто используемым данным.

Рис. 2 — Веб-интерфейс SeaweedFS Filer с иерархической структурой директорий
Рис. 3 — Просмотр файлов внутри директории с отображением размера и времени изменения

Поддержка протокола WebDAV

SeaweedFS поддерживает протокол WebDAV, что позволяет монтировать хранилище как сетевой диск в операционных системах Windows, macOS и Linux. Это открывает возможность работать с объектным хранилищем через стандартные файловые менеджеры без необходимости использования специализированных клиентов. Пользователи могут перетаскивать файлы, редактировать документы напрямую из хранилища и синхронизировать данные с локальными копиями.

Мониторинг и управление volumes

Веб-интерфейс SeaweedFS предоставляет детальную информацию о состоянии системы. Можно отслеживать распределение данных по узлам кластера, контролировать использование дискового пространства и версионность данных. Каждый volume отображает количество файлов, занятое место, статус корзины и режим работы (ReadOnly/ReadWrite), что позволяет оперативно выявлять проблемы и планировать расширение инфраструктуры.

Рис. 4 — Детальная информация о volumes: размер данных, количество файлов, статус и версионность

Статистика и мониторинг системы

Встроенная панель мониторинга отображает ключевые метрики работы кластера в реальном времени: использование дискового пространства, количество запросов на чтение за различные временные периоды (минута, час, день, неделя), время работы системы (uptime) и информацию о мастер-узлах. Графики нагрузки позволяют анализировать паттерны использования и оптимизировать производительность.

Рис. 5 — Панель мониторинга с информацией о дисковом пространстве, статистике запросов и времени работы


Заключение

В ходе работы было проведено сравнение нескольких S3-совместимых систем хранения на основе заранее определённых критериев. Анализ показал, что SeaweedFS наилучшим образом соответствует требованиям по масштабируемости, функциональности и надёжности. Использование SeaweedFS позволяет эффективно организовать хранение больших объёмов данных, обеспечить быстрый доступ к ним и создать основу для дальнейшего роста инфраструктуры. В перспективе возможен пересмотр выбора при изменении требований или появлении более зрелых альтернатив, однако на текущий момент SeaweedFS является оптимальным решением.