MinIO

Материал из ALT Linux Wiki

MinIO — это высокопроизводительный сервер объектного хранилища с открытым исходным кодом, совместимый с облачным хранилищем Amazon S3. Он оптимален для хранения неструктурированных данных: фотографий, видео, файлов журналов, резервных копий, образов контейнеров и виртуальных машин.

MinIO может использоваться как бэкенд для хранения резервных копий Proxmox Backup Server (PBS) благодаря поддержке S3-совместимого API.

Установка MinIO

Установка сервера MinIO и клиента minio-mc:

# apt-get install minio minio-mc

Проверка установленной версии:

$ minio --version
minio version RELEASE.2025-10-15T17-29-55Z (commit-id=9e49d5e7a648f00e26f2246f4dc28e6b07f8c84a)
Runtime: go1.24.10 linux/amd64
License: GNU AGPLv3 - https://www.gnu.org/licenses/agpl-3.0.html
Copyright: 2015-0000 MinIO, Inc.

Активация и запуск службы:

# systemctl enable --now minio

Проверка статуса:

# systemctl status minio

Базовая настройка

Доступ к веб-интерфейсу

По умолчанию MinIO слушает следующие адреса:

Компонент Адрес по умолчанию Описание
API http://*:9000 S3-совместимый API-интерфейс
WebUI (Console) http://127.0.0.1:9001 Веб-интерфейс управления
Примечание: Веб-интерфейс по умолчанию доступен только с localhost. Для удалённого доступа необходимо изменить конфигурацию.


Учётные данные по умолчанию:

  • Логин: minioadmin
  • Пароль: minioadmin

Веб-интерфейс MinIO

Конфигурационный файл

Основные параметры настраиваются в файле /etc/sysconfig/minio:

# Адрес прослушивания API
MINIO_ADDRESS=":9000"

# Адрес прослушивания веб-консоли
MINIO_CONSOLE_ADDRESS=":9001"

# Учётные данные администратора (рекомендуется изменить)
MINIO_ROOT_USER="minioadmin"
MINIO_ROOT_PASSWORD="minioadmin"

# Путь к данным (по умолчанию: /var/lib/minio)
# MINIO_VOLUMES="/var/lib/minio"

# Дополнительные опции (например, путь к сертификатам)
MINIO_OPTIONS="--certs-dir /etc/minio/certs"

После изменения конфигурации перезапустите службу:

# systemctl restart minio

Настройка хранилища (volumes)

Параметр MINIO_VOLUMES определяет расположение данных:

Конфигурация Пример Описание
Одиночный узел, один диск MINIO_VOLUMES="/var/lib/minio" Базовая установка для тестирования
Одиночный узел, несколько дисков MINIO_VOLUMES="/mnt/data{1...4}" Распределение данных по 4 дискам для повышения надёжности
Распределённый кластер MINIO_VOLUMES="http://node{1...4}/export{1...4}" Кластер из 4 узлов с 4 дисками на каждом
Примечание: Для производственных сред рекомендуется использовать режим распределённого хранения с репликацией.


Настройка TLS/SSL

MinIO по умолчанию ищет TLS-сертификаты в каталоге /etc/minio/certs/. Сертификаты должны быть в формате PEM с именами public.crt и private.key.

Создание самоподписанного сертификата (замените 192.168.0.207 на актуальный адрес сервера или доменное имя):

# cd /etc/minio/certs

# openssl req -x509 -nodes -days 365 \
  -newkey rsa:4096 \
  -keyout private.key \
  -out public.crt \
  -subj "/CN=192.168.0.207"

# chown _minio:_minio private.key public.crt
# chmod 600 private.key
# chmod 644 public.crt
Примечание: Пользователь, от имени которого запускается MinIO (_minio), должен иметь:
  • право чтения для файлов сертификатов;
  • право записи в каталог сертификатов (для автоматического обновления).


После настройки перезапустите службу и убедитесь, что доступ осуществляется по https://:

# systemctl restart minio

# curl -k https://192.168.0.207:9000/minio/health/live -I
HTTP/1.1 200 OK
…

Клиент MinIO (minio-mc)

minio-mc (MinIO Client) — утилита командной строки для управления объектными хранилищами и файловыми системами. Поддерживает работу с локальными каталогами, MinIO, Amazon S3, Google Cloud Storage и другими S3-совместимыми сервисами.

Добавление конфигурации подключения к локальному серверу:

  1. Настройка алиаса для локального сервера:
    $ minio-mc alias set local http://192.168.0.207:9000 minioadmin minioadmin
    
  2. Проверка подключения:
    $ minio-mc admin info local192.168.0.207:9000
       Uptime: 22 minutes 
       Version: 2025-10-15T17-29-55Z
       Network: 1/1 OK 
       Drives: 1/1 OK 
       Pool: 1
    
    ┌──────┬──────────────────────┬─────────────────────┬──────────────┐
    │ Pool │ Drives Usage         │ Erasure stripe size │ Erasure sets │
    │ 1st  │ 5.7% (total: 52 GiB)11            │
    └──────┴──────────────────────┴─────────────────────┴──────────────┘
    
    1 drive online, 0 drives offline, EC:0
    
Примечание: Если используется самоподписанный сертификат, необходимо добавлять параметр --insecure:
$ minio-mc alias set local http://192.168.0.207:9000 minioadmin minioadmin --insecure


Основные команды minio-mc

Действие Команда Описание
Создание бакета minio-mc mb local/my-bucket Создать новый бакет (аналог mkdir)
Список бакетов minio-mc ls local Показать все бакеты
Загрузка файла minio-mc cp file.txt local/my-bucket/ Копировать файл в хранилище
Скачивание файла minio-mc cp local/my-bucket/file.txt . Скачать файл из хранилища
Рекурсивное копирование minio-mc cp -r ./data/ local/my-bucket/data/ Копировать каталог рекурсивно
Список объектов minio-mc ls local/my-bucket/ Показать содержимое бакета
Удаление объекта minio-mc rm local/my-bucket/file.txt Удалить объект
Удаление бакета minio-mc rb local/my-bucket Удалить пустой бакет
Просмотр прав доступа minio-mc anonymous get local/my-bucket Показать ACL бакета
Установка публичного доступа minio-mc anonymous set public local/my-bucket Сделать бакет публичным
Синхронизация каталогов minio-mc mirror ./source/ local/my-bucket/ Зеркалирование с отслеживанием изменений
Поиск объектов minio-mc find local/my-bucket --name "*.txt" Найти объекты по шаблону
Информация об объекте minio-mc stat local/my-bucket/file.txt Показать метаданные объекта

Примеры использования:

  • настройка жизненного цикла объектов (удаление старых файлов):
    $ minio-mc ilm add local/my-bucket --expire-days 30
    
  • генерация временной ссылки для скачивания:
    $ minio-mc share download local/my-bucket/file.txt --expire 1h
    
  • резервное копирование каталога в бакет:
    $ minio-mc mb local/test
    $ minio-mc mirror --watch test local/test
    
Примечание: Флаг --watch обеспечивает непрерывную синхронизацию при изменении файлов.


Полезные ссылки

Официальная документация: https://docs.min.io/