MinIO: S3-совместимое объектное хранилище под офис и бэкапы
Привет! Я Женя Семёнов, руководитель ITFresh. Больше пятнадцати лет в IT — это вам не шутки! За это время я успел поработать с десятками хранилищ: от простеньких файловых шар до гигантских S3-кластеров на сотни терабайт. Честно говоря, MinIO считаю одной из самых удачных технологий последних лет. Почему? Да потому что он элементарно запускается, идеально дружит с Amazon S3 API (прямо до мельчайших деталей), шикарно масштабируется и вообще не требует чего-то особенного – обычное железо, и никаких лицензий! Мы в ITFresh регулярно используем MinIO как неубиваемый бэкап-репозиторий для Veeam, а ещё для архива данных 1С и как идеальную платформу для внутренних сервисов, которым нужен именно объектный доступ.
Почему именно MinIO, а не Ceph или классический NAS
Так чем же объектные хранилища принципиально отличаются от старых добрых NAS? Я вижу три главных вещи. Во-первых, вы работаете с API, а не с какой-то там файловой системой. Во-вторых, внутри бакетов — абсолютно плоское пространство имён. И, наконец, в-третьих, у вас есть крутое встроенное версионирование. MinIO? Это как если бы кто-то взял все фишки облачного S3, но завернул их в один маленький Go-бинарник, который разворачивается буквально за десять минут. Мы в ITFresh не раз убеждались: MinIO выручает там, где Ceph попросил бы целую ораву инженеров, а простой NAS даже и не потянул бы нужный API.
- Простота. Один исполняемый файл, одна команда запуска.
- Совместимость. AWS SDK, Veeam, Duplicati, rclone, Terraform — всё работает «из коробки».
- Производительность. На Dell Xeon Platinum 8280 и 40G Mellanox ConnectX-5 я видел 9 ГБ/с на последовательной записи.
- Масштабирование. Начинаете с одного узла, расширяетесь до federated-кластеров на петабайты.
- Лицензия. AGPLv3 — бесплатно для внутреннего использования. Enterprise за деньги, если нужна поддержка.
Планирование: сколько узлов и дисков
Ставить MinIO в production? Однозначно в распределённом режиме. А какой минимум нужен для этого? Минимум — это 4 узла, и на каждом по 4 диска. Итого 16 дисков. По умолчанию здесь работает схема erasure coding — EC:4. Что это даёт? Из каждых шестнадцати блоков данных четыре выделяются под паритет. То есть, даже если у вас разом выйдут из строя два узла или сразу восемь дисков (главное, чтобы они были разбросаны по разным узлам), ваши данные всё равно будут в безопасности. Надёжно, правда?
| Конфигурация | Узлы × Диски | Сырая ёмкость | Полезная ёмкость | Производительность |
|---|---|---|---|---|
| Начальная | 4 × 4 × 8 ТБ | 128 ТБ | 96 ТБ (EC:4) | 4–6 ГБ/с |
| Средняя | 4 × 6 × 14 ТБ | 336 ТБ | 252 ТБ | 6–8 ГБ/с |
| Большая | 8 × 8 × 18 ТБ | 1.15 ПБ | 864 ТБ | 9+ ГБ/с |
У вас средний офис? Хотите S3-репозиторий для Veeam и надёжный архив для документов? Тогда, скорее всего, нашей базовой конфигурации, о которой я уже рассказывал, вполне хватит. А по железу что? Для узлов я обычно советую Dell PowerEdge R740xd или HPE ProLiant DL380. Диски — берите 10–18 ТБ Enterprise SATA, не прогадаете.
Установка в распределённом режиме
MinIO? Всегда ставлю его на Ubuntu 22.04 LTS. Почему именно она? Там минимум мусора, самое свежее ядро, а ещё, что супер важно, она отлично работает с XFS и справляется с огромными файлами. На каждом узле я сначала готовлю все четыре диска, потом форматирую их в XFS, а затем, разумеется, монтирую. Простая схема, но очень надёжная.
for d in sdb sdc sdd sde; do
mkfs.xfs -f /dev/$d
mkdir -p /mnt/minio/$d
echo "/dev/$d /mnt/minio/$d xfs defaults,noatime 0 2" >> /etc/fstab
done
mount -a
useradd -r minio-user -s /sbin/nologin
chown -R minio-user:minio-user /mnt/minio
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio && mv minio /usr/local/bin/
Конфигурация /etc/default/minio — одинаковая на всех узлах:
MINIO_ROOT_USER=adminopsroot
MINIO_ROOT_PASSWORD=BolshoyStoykiyParol2025
MINIO_VOLUMES="https://minio{1...4}.corp.local/mnt/minio/sd{b...e}"
MINIO_OPTS="--address :9000 --console-address :9001 \
--certs-dir /etc/minio/certs"
MINIO_SERVER_URL="https://s3.corp.local"
MINIO_BROWSER_REDIRECT_URL="https://s3-console.corp.local"
Systemd-юнит? Просто берём его с официального репозитория, включаем и запускаем. И вот тут важный момент: все четыре узла должны стартовать одновременно. Иначе MinIO, увы, просто не сможет собрать кворум.
TLS и сертификат от внутреннего CA
Голый HTTP в production? Вы что, с ума сошли? Такое я вообще никогда, ни при каких обстоятельствах не допущу! Почему? Ну, во-первых, MinIO просто требует TLS для STS и для корректной работы с политиками IAM. А во-вторых, без него ни один современный клиент нормально работать не будет. Всегда использую сертификат, выпущенный от внутреннего AD CS. Кстати, как его развернуть, я уже подробно расписал в одной из своих статей – загляните, если интересно.
# На каждом узле
mkdir -p /etc/minio/certs
cp s3.corp.local.crt /etc/minio/certs/public.crt
cp s3.corp.local.key /etc/minio/certs/private.key
chown -R minio-user /etc/minio/certs
chmod 600 /etc/minio/certs/*.key
systemctl restart minio
Сертификат включает SAN для всех 4 узлов и VIP-имени балансировщика. Фронтом я ставлю HAProxy или nginx, который распределяет входящие запросы по 4 узлам round-robin с health-check по /minio/health/live.
Создание бакетов и IAM-пользователей
Работать с MinIO? Проще простого, если использовать утилиту `mc` — это MinIO Client. По сути, тот же `aws cli`, только куда компактнее и намного интуитивнее.
mc alias set s3 https://s3.corp.local adminopsroot 'BolshoyStoykiyParol2025'
# Бакет для Veeam
mc mb s3/veeam-backups
mc version enable s3/veeam-backups
mc retention set --default compliance 30d s3/veeam-backups
# Бакет для архива 1С
mc mb s3/archive-1c
mc ilm add --expiry-days 2555 s3/archive-1c # 7 лет ФНС
# Пользователь с ограниченными правами
mc admin user add s3 veeam-user 'VeryStrongServicePass'
mc admin policy attach s3 readwrite --user veeam-user
Есть такая штука — Immutability через S3 Object Lock. Она буквально спасает бэкапы от шифровальщиков! Представьте: даже root-админ не сможет удалить объект, пока не истечёт срок retention. Это же просто маст-хэв, ключевая фича для любой современной стратегии 3-2-1-1-0.
Интеграция с Veeam Backup & Replication
В Veeam добавляем MinIO как Object Storage Repository. Тип — S3 Compatible, endpoint https://s3.corp.local:9000, регион us-east-1 (именно так — MinIO эмулирует AWS-регионы). Ставим галку Immutability с периодом, скажем, 30 дней — и получаем защищённый репозиторий, в котором шифровальщик ничего не сможет стереть.
# Тест доступа перед настройкой Veeam
aws --endpoint-url https://s3.corp.local s3 ls \
--ca-bundle /etc/ssl/certs/corp-root.pem
Реальный кейс: 48 ТБ для логистической компании
Где-то в марте 2026 к нам обратился клиент — крупный логистический оператор из Москвы. Их задача была такая: перенести все бэкапы со стареющей СХД на надёжное объектное хранилище. Что требовалось? Держать 48 ТБ активных бэкапов Veeam, обеспечить надёжный архив EDI-документов, и плюс ко всему, развернуть S3-шину для внутренних сервисов. Бюджет на всё это — 1.6 млн рублей.
Не так давно мы собрали вот такую мощную систему: четыре узла Dell PowerEdge R740xd, каждый с процессорами Xeon Platinum 8280 и 128 ГБ оперативной памяти. Плюс к этому, шесть дисков по 14 ТБ HDD SATA, а ещё SSD под операционку. Сеть у нас была не абы какая — 40G Mellanox ConnectX-5, всё это работало в стеке из двух коммутаторов Dell S4148. Где всё это разместилось? Прямо в стойке у клиента, в дата-центре МТС в Москве. MinIO, конечно же, мы настроили в распределённом режиме, с EC:4 и всеми необходимыми TLS-сертификатами от внутреннего AD CS. А что по бенчмаркам? Последовательная запись — впечатляющие 6.8 ГБ/с, случайная — 1.9 ГБ/с. Но самое крутое — это полный бэкап Veeam на 18 ТБ, который теперь пролетает всего за 58 минут! Подумайте только, раньше на это уходило целых 4.5 часа. Разница очевидна, не правда ли?
Мониторинг и обслуживание
MinIO из коробки отдаёт Prometheus-метрики на /minio/v2/metrics/cluster. Я всегда подключаю Grafana с готовой дашбордой 13502. На ней сразу видно IOPS, throughput, доступность узлов, ошибки erasure coding.
- Раз в неделю —
mc admin heal s3 --recursiveдля проверки целостности. - Каждый месяц — обновляем MinIO до самого свежего и стабильного релиза.
- Раз в квартал устраиваем настоящие учения: специально выключаем один узел, чтобы убедиться — кластер работает как часы и ни байта данных не потеряно.
- И да, самое главное: обязательно настраиваем внешнее оповещение в Telegram через Alertmanager, чтобы моментально узнать о падении любого узла.
Развернём MinIO-кластер под ваши бэкапы
Я могу спроектировать и внедрить S3-совместимые хранилища абсолютно любого масштаба — от скромных 4-узловых решений для офиса до гигантских петабайтных федераций. Что я делаю? Это подбор железа, полная установка, настройка TLS, интеграция с Veeam и 1С, а также мониторинг в Grafana.
Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш
FAQ — вопросы по MinIO
- Зачем MinIO, если есть NAS?
- MinIO даёт S3-совместимый API — его понимают Veeam, Duplicati, rclone, приложения на AWS SDK. NAS по SMB/NFS не работает с объектными бэкап-системами и не даёт версионирования, immutability и встроенного шифрования на уровне объектов.
- Сколько узлов минимально?
- Для распределённого режима — минимум 4 узла по 4 диска, итого 16 дисков. Это обеспечивает erasure coding EC:4 и защиту от потери двух узлов без простоя.
- Как MinIO интегрируется с Veeam?
- Veeam B&R с версии 10 поддерживает S3-репозитории как Object Storage. Указывается endpoint, access key, secret key и bucket — Veeam сам шифрует, дедуплицирует и работает с immutability через S3 Object Lock.
- Можно ли без TLS?
- Теоретически да, на внутренней сети. На практике — нет. MinIO без TLS отключает часть функций (например, STS-токены), а клиенты типа Veeam требуют HTTPS. Я всегда генерирую сертификат от внутреннего CA.
- Какой диск использовать?
- MinIO любит JBOD без RAID — erasure coding делает резервирование на уровне кластера. Используйте Enterprise HDD 10–18 ТБ SATA или SAS, файловая система XFS. RAID внутри узла не нужен и вреден.
