
Спойлер для тех кто не в курсе:
В начале 2025 года компания MinIO в лице сооснователя Harshavardhana начала поэтапно сворачивать свою версию Community Edition. В феврале из open-source версии был вырезан веб-интерфейс администрирования - управление политиками, мониторинг, репликация, IAM - всё это переехало в коммерческий продукт AIStor с ценником от $96 000 в год. Пользователям оставили лишь базовый object browser и CLI-утилиту mc. В мае последовало удаление поддержки OIDC-аутентификации. В октябре MinIO прекратил публикацию Docker-образов и готовых бинарников - причём аккурат в момент раскрытия критической CVE-уязвимости. А в декабре 2025-го проект официально перешёл в режим maintenance mode: никаких новых фич, pull request'ы не принимаются, только точечные security-фиксы по усмотрению компании.
Мой опыт с Minio
В моей инфраструктуре MinIO присутствует на нескольких стендах с 3ТБ данных, и также в домашней лабе для бэкапов Synology, всех ПК, репозиториев кода. 10 января вышла интересная статья про альтернативы Minio, где я заинтересовался вопросом миграции своего "нажитого". Критерии поиска были такие - S3 Full Compatibility, OpenLicense (Apache 2.0 и тд), Web UI для администрирования, небольшое потребление ресурсов, а также желательно чтобы было из коробки Versioning, Crashrecovery, Deduplication, Lifecycle policy, Object Locking, IAM, и желательно метрики

Табличка по альтернативам - приоритету слева направо (простота, full s3, надежность)
Решение | Простота | S3 API | Репликация | Версии | Locking | Lifecycle |
|---|---|---|---|---|---|---|
RustFS | 9/10 🟢 | ✅ 100% | 🟢 Высокая (распред.) | ✅ | ✅ | ✅ |
Garage | 9/10 🟢 | ⚠️ Базовый | 🔥 Отличная (CRDT) | ❌ | ❌ | ⚠️ Частично |
MinIO + OpenMaxIO | 8/10 🟢 | ✅ 100% | 🟢 Высокая (Erasure) | ✅ | ✅ | ✅ |
SeaweedFS | 7/10 🟡 | ✅ Высокая | 🟢 Высокая (O(1)) | ✅ | ✅ | ✅ |
Apache Ozone | 4/10 🔴 | ✅ Высокая | 🔥 Максимальная (Raft) | ✅ | ✅ | ✅ |
Ceph (RGW) | 3/10 🔴 | ✅ Высокая | 🔥 Максимальная (CRUSH) | ✅ | ✅ | ✅ |
MinIO и Garage сразу вылетают по лицензии, поддержки CE и отсутствии версионирования
Если отвлечься от первой колонки "Простота", то можно предположить что победитель тут RustFS или SeaweedFS, но к сожалению это не так.
ПОЧЕМУ не RustFS:
Агрессивная пиар кампания, построенная на « костях » Minio, громкие заголовки. В последние месяцы проект очень активно пушится через заказные статьи на Medium. Явно прослеживается модель - набрать аудиторию корпоративных пользователей. В этом нет ничего плохого, но риск смены лицензии очень высокий, вопрос лишь времени
На сайте rustfs используются термины вроде "Limitless Scalability" и "EB-level storage capacity". Для проекта, архитектура которого еще до конца не стабилизировалась, заявлять поддержку эксабайтных хранилищ смешно.
По баг-репортам, понятно, что на объектах размером 512KB и 1MB производительность RustFS падает в 2 раза по сравнению с MinIO И также мой личный тест на слабом железе был завален rustfs'ом (Ошибки при concurrency: Под высокой параллельной нагрузкой (warp mixed тесты) система начинает сыпать ошибками, упирается в высокий iowait). Кластерный режим (Distributed mode) до сих пор носит статус экспериментального
Почему не остальные SeaweedFS / Ceph / Apache Ozone S3 и тд:
Высокая кривая в установке и поддержке. Куча нод - master, filer, volume, gateway. В общем для самых отважных
Дорого для инфраструктуры
Что в сухом остатке
Вариантов не много, больше всего душа лежала к SeaweedFS, проект стабильный и надежный, но поддерживать и следить за этим парком нод не очень хочется, минус еще - ручное расширение volume нод, в итоге пошел другим путем..
Я просто взял и написал свой S3, то есть S4
... в котором есть все из коробки:

Имел ли я на это право?) Считаю, что да. Как бы это не безумно звучало, но хочешь сделать хорошо, сделай это сам. Во-первых хотелось нормальной альтернативы Minio, которой по сути на данный момент нет. Во-вторых за плечами несколько лет разработки бэка, поэтому сделать аналог S3 не такая и проблема
Из чего состоит S4 ?

Github https://github.com/s4core/s4core
Сайт https://s4core.com
Документация https://docs.s4core.com
Написан на Rust
Полная совместимость с S3 API - Object Locking (WORM), Versioning & Lifecycle, IAM & RBAC со встроенной системой ролей (Reader, Writer, SuperUser) и
JWT-авторизацией.Дедупликация данных - Content-Addressable Storage: система считает SHA-256 хеш контента. Загрузишь один и тот же файл 10 раз - физически на диске он будет
лежать в одном экземпляре.Готовый веб интерфейс и мониторинг - В комплекте современная админка на Next.js + эндпоинт для Prometheus, позволяющий отслеживать латентность, IOPS и коэффициент
дедупликации в реальном времени.Архитектура хранения - В отличие от решений, которые кладут каждый объект в отдельный файл на диске, S4 использует Bitcask-style storage. Миллиард объектов
хранится всего в ~1000 больших файлах - никакого Inode Exhaustion. Объекты меньше 4 КБ сохраняются прямо в метаданных (база redb), что даёт молниеносное чтение
без лишних операций ввода-вывода. Данные не перезаписываются «поверх» - любая запись это append в конец лога.Crash Recovery-Каждый блоб защищён CRC32-контрольной суммой, fsync гарантирует сброс на диск до ответа клиенту. Метаданные хранятся в ACID-базе redb. Даже
если база метаданных потеряна - движок при старте сканирует все volume-файлы, проверяет CRC32 каждого блоба и полностью восстанавливает индекс и карту
дедупликации из append-only логов. Данные не теряются.
Немного про архитектуру

s4-server- приложение: конфигурация, TLS, запуск воркеров.
s4-api - сетевой слой на Axum: парсинг S3-запросов, аутентификация AWS Signature V4, роутинг.
s4-core -сердце системы: append-only тома, ACID-индекс на redb, дедупликатор (SHA-256), CRC32-валидация и crash recovery.
s4-features - бизнес-логика поверх ядра: версионирование, Object Lock, lifecycle-политики, IAM с JWT.
s4-compactor -фоновый процесс: находит «мёртвые» блобы в старых томах, переносит живые в новый том, освобождает место.
А теперь про установку и тестирование
Quick start for DEV:
git clone https://github.com/s4core/s4core.git cd s4core cargo build --release ./target/release/s4-server # Готово — S4 слушает на http://127.0.0.1:9000
Docker:
docker run -d \ --name s4core \ -p 9000:9000 \ -v s4-data:/data \ -e S4_ACCESS_KEY_ID=myaccesskey \ -e S4_SECRET_ACCESS_KEY=mysecretkey \ -e S4_ROOT_PASSWORD=password12345 \ s4core/s4core:latest
Логинимся и проверяем:
aws --endpoint-url http://localhost:9000 s3 mb s3://test-bucket
aws --endpoint-url http://localhost:9000 s3 cp file.txt s3://test-bucket/
aws --endpoint-url http://localhost:9000 s3 ls s3://test-bucket
Production ready:
services: s4core: image: s4core/s4core:latest restart: unless-stopped ports: - "9000:9000" volumes: - s4-data:/data environment: - S4_ACCESS_KEY_ID=myaccesskey - S4_SECRET_ACCESS_KEY=mysecretkey - S4_ROOT_PASSWORD=password12345 s4-console: image: s4core/s4console:latest restart: unless-stopped ports: - "3000:3000" environment: - S4_BACKEND_URL=http://s4core:9000 depends_on: - s4core volumes: s4-data:
После запуска:
S4 API: https://localhost:9000
Web Console: http://localhost:3000 (логин с root-кредами)
Почему модель лицензирования OpenCore (Apache 2.0 + ELv2)?

Весь основной код S4Core - это Apache 2.0: используй, форкай, встраивай в свои продукты без ограничений. Никаких скрытых лимитов, никакого «community edition с обрезанными фичами».
Корпоративные возможности (LDAP, multi-node репликация, приоритетная поддержка с SLA) живут в отдельной директории ee/ под Elastic License 2.0 - исходный код открыт для аудита. На данный момент в разработке.
Зачем так?
Крупные компании с требованиями к SLA и энтерпрайз-интеграциям - получает поддержку и дополнительный функционал от моей команды.
Чего не хватает в S4Core и что будет реализовано:
Кластерный режим с репликацией - горизонтальное масштабирование, consistent hashing, Raft-репликация. Уже в разработке, планирую выкатить в ближайшие недели (возможно еще неделя потребуется на тестирование).
Compaction Worker - фоновый сборщик мусора: переносит живые блобы из старых томов в новые, освобождая место после удалений.
Расширенный IAM - полноценные группы, политики на уровне бакетов (Bucket Policies), гранулярные права доступа. Многое из этого уже присутвует в S4Core, но для EE надо шире.
CLI-утилита (аналог mc в MinIO) - консольный инструмент для администрирования: алиасы серверов, ls/cp/rm/mirror, управление пользователями и политиками. Пока в раздумье с этим, так как CLI уже есть включая aws cli и куча других
Расширенный Lifecycle - перемещение между классами хранения, фильтрация по тегам и размеру, автоматическая очистка незавершённых multipart-загрузок.
Audit Log - раздел «кто, что и когда сделал» для полной прозрачности действий на сервере. .. и еще порядка 10 пунктов
Что будет в Enterprise версии, и будет НЕ доступно в CE?

Масштабирование и отказоустойчивость:
Горизонтальное масштабирование на неограниченное количество нод
Raft-репликация с автоматическим failover
Cross-region репликация и гео кластеры
Автоматическое перераспределение данных при добавлении/удалении нод
Корпоративная авторизация:
LDAP / Active Directory
RADIUS
SAML 2.0 / OpenID Connect (SSO)
Kerberos
Multi-tenant изоляция с отдельными квотами и политиками
Интеграция с внешними сервисами:
HashiCorp Vault - управление ключами шифрования (KMS)
Event-уведомления об операциях с объектами
Elasticsearch - полнотекстовый поиск по метаданным
Splunk / Datadog / Grafana Cloud - расширенная телеметрия
Расширенные метрики Prometheus
Безопасность и compliance:
Encryption at Rest (AES-256) с ротацией ключей
Подробный Audit Log с экспортом в SIEM-системы
Immutable Audit Trail для регуляторных требований
Поддержка и SLA:
Приоритетная техподдержка
Помощь с миграцией, оптимизацией
Эпилог

S4Core ещё в активной фазе тестирования, но даже текущая alpha-версия уже прошла серьёзные нагрузочные тесты: несколько терабайт данных, смесь крупных и мелких файлов, тестирование на древнем железе с HDD. По итогу процент отказа - 0%, ни одного потерянного объекта. Для сравнения с другими решениями опубликую отдельную статью с реальными цифрами.
Буду рад найти единомышленников в развитии проекта, а также в тестировании 🤝
Всем спасибо, кто дочитал!
