Найти в Дзене

Наскройка S3 - облачный сервис хранения данных и кластеризация.

Оглавление
MinIO AIStor is Designed for AI Scale Challenges
MinIO AIStor is Designed for AI Scale Challenges

26.04.2025
Официальный сайт проекта
https://min.io
Cтатью писал Игольников Игорь.

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

🔹Основные характеристики:

Полная совместимость с Amazon S3

  • Поддерживает все основные API S3 (GET, PUT, DELETE, LIST и др.).
  • Работает с инструментами, которые используют S3 (AWS CLI, SDK, Cyberduck, Rclone и др.).

Высокая производительность

  • Оптимизирован для работы с большими объемами данных (подходит для аналитики, ИИ, резервного копирования).
  • Поддерживает мультипарт-загрузку, SSE (Server-Side Encryption) и ускоренные запросы.

Масштабируемость (Distributed MinIO)

  • Можно развернуть кластер из нескольких серверов для отказоустойчивости (режим erasure coding).
  • Поддерживает автоматическое распределение данных между узлами.

Простота развертывания

  • Запускается одним бинарным файлом или через Docker.
  • Не требует сложной настройки (в отличие от Ceph или Swift).

Безопасность

  • Поддержка TLS/SSL.
  • IAM-подобная система управления доступом (политики, как в AWS).
  • Шифрование данных на стороне сервера (SSE-S3, SSE-C, SSE-KMS).

Открытый исходный код (GNU AGPL v3)

  • Бесплатен для использования (есть также коммерческая версия MinIO SUBNET с поддержкой).

🔹Где используется MinIO?

  • Резервное копирование (вместо S3, но локально).
  • Хранение медиафайлов (фото, видео, документы).
  • Big Data & AI/ML (интеграция с Apache Spark, TensorFlow).
  • Kubernetes-хранилище (через MinIO Operator).
  • Гибридные облака (развертывание в частном облаке с S3-совместимостью).

🔹Установка minio

apt update
apt upgrade
cd /tmp/
wget
https://dl.min.io/server/minio/release/linux-amd64/minio -O minio
mkdir -p /etc/minio/

nano /etc/minio/minio.conf
MINIO_OPTS="--console-address :9001"
MINIO_VOLUMES="http://192.168.1.2:9000/mnt/minio-data http://192.168.1.3:9000/mnt/minio-data"
MINIO_ROOT_USER="admin"
MINIO_ROOT_PASSWORD="you_sercret_password"
nano /usr/lib/systemd/system/minio.service
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio
[Service]
Type=notify
WorkingDirectory=/mnt/minio-data
User=root
Group=root
ProtectProc=invisible
EnvironmentFile=/etc/minio/minio.conf
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
# Let systemd restart this service always
Restart=always
# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=1048576
# Turn-off memory accounting by systemd, which is buggy.
MemoryAccounting=no
# Specifies the maximum number of threads this process can create
TasksMax=infinity
# Disable timeout logic and wait until process is stopped
TimeoutSec=infinity
# Disable killing of MinIO by the kernel's OOM killer
OOMScoreAdjust=-1000
SendSIGKILL=no
[Install]
WantedBy=multi-user.target

🔹Настройка диска "для хранения данных".

В этом разделе мы более подробно обсудим возможные проблемы и пути их решения. Когда мы настраиваем хранилище s3 в Linux Server, подразумевается, что это будет не просто папка на сервере, а отдельный диск. Если мы просто создадим папку в корневой директории, то сервер не запустится и будут появляться ошибки, связанные с несоответствием конфигурации на сервере и так далее.
В моём случае я использую сервер Proxmox, который установлен у меня дома. Я просто подключил логический том (LVM) к папке /mnt/minio-data.
root@new-CT-C3-01:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/pve-vm--117--disk--0 7.8G 912M 6.5G 13% /
/dev/mapper/pve-vm--117--disk--1 7.8G 312K 7.4G 1% /mnt/minio-data
none 492K 4.0K 488K 1% /dev
efivarfs 128K 120K 3.7K 98% /sys/firmware/efi/efivars
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 3.2G 96K 3.2G 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock

🔹Итог:

Чтобы настроить количество нод в кластере, используйте параметр MINIO_VOLUMES=. В моём примере у меня установлено две ноды, однако в реальной жизни рекомендуется иметь не менее четырёх.

На этом базовая конфигурация завершена.