TrueNAS SCALE и CORE включают встроенное S3-совместимое объектное хранилище на базе MinIO. Вы получаете полноценный API-эндпоинт для хранения резервных копий, логов приложений, статических файлов и любых неструктурированных данных без развёртывания отдельного сервера. Интеграция с ZFS даёт мгновенные снимки, компрессию и защиту контрольными суммами - всё управляется из единого веб-интерфейса.
Эта инструкция проведёт вас от активации сервиса до тонкой настройки производительности. Вы создадите пользователей с политиками доступа, настроите бакеты и научитесь диагностировать типичные ошибки. Все шаги проверены на TrueNAS SCALE 24.04 и CORE 13.3 - актуальных версиях на август 2026 года.
Что такое S3-сервис в TrueNAS и зачем он нужен
S3-сервис в TrueNAS - это реализация объектного хранилища, совместимого с Amazon S3 API. В отличие от файлового доступа по SMB или NFS, объектное хранилище оперирует плоским пространством имён: каждый объект хранится в бакете и идентифицируется уникальным ключом. Такой подход упрощает масштабирование и интеграцию с облачными инструментами.
Типичные сценарии использования:
- Резервное копирование через restic, Borg или Veeam с прямым S3-бэкендом.
- Хранение логов из кластеров Kubernetes, агрегированных через Loki или Vector.
- Раздача статических файлов для веб-приложений, загружаемых через API.
- Централизованное хранилище для артефактов CI/CD (Jenkins, GitLab CI).
Преимущества встроенного MinIO перед отдельной инсталляцией: единая панель управления TrueNAS, автоматическая защита данных через ZFS (снапшоты, scrubbing), отсутствие накладных расходов на виртуализацию. Выделите под S3 отдельный dataset - и получите изолированное хранилище с возможностью моментального снятия снимков перед обновлением конфигурации.
Подготовка к настройке: что нужно проверить перед стартом
Перед активацией сервиса убедитесь, что окружение соответствует минимальным требованиям. Пропуск этого этапа - самая частая причина ошибок на старте.
Контрольный список:
- Версия TrueNAS: SCALE 22.12 (Bluefin) или новее, CORE 13.0 или новее. Настоятельно рекомендуется обновиться до актуального релиза - SCALE 24.04 (Dragonfish) или CORE 13.3.
- Свободное место в пуле: минимум 10 ГБ для служебных данных MinIO плюс объём под полезную нагрузку.
- Сеть: статический IP-адрес или корректно работающее DNS-имя. DHCP-адрес усложнит подключение клиентов после перезагрузки.
- Права доступа: учётная запись с ролью администратора (Full Admin) в веб-интерфейсе.
Создайте отдельный dataset для S3-данных. Это изолирует объектное хранилище от файловых шар и упростит настройку квот. В веб-интерфейсе перейдите в Storage → Pools, выберите целевой пул, нажмите Add Dataset. Задайте имя, например, s3-storage, и оставьте параметры по умолчанию. Отдельный dataset позволит применить к данным MinIO специфичные настройки ZFS - рекордсайз 128K или 1M, отключение atime для снижения операций записи.
Пошаговая активация S3-сервиса через веб-интерфейс
Включение сервиса выполняется в несколько кликов, но каждый параметр влияет на безопасность и доступность. Разберём процесс детально.
Настройка параметров сервиса: порт, IP и хранилище
Откройте раздел Services в левом меню и найдите строку S3. Нажмите на иконку карандаша (Edit) справа от названия сервиса. Откроется форма конфигурации.
Параметры, которые нужно задать:
- IP Address: выберите
0.0.0.0, если сервис должен слушать все сетевые интерфейсы. Для повышенной безопасности укажите конкретный IP внутренней сети, например10.0.1.100. Это ограничит доступ извне, даже если файрволл настроен некорректно. - Port: стандартный порт MinIO -
9000. Если он занят другим процессом, задайте альтернативный, например9001. Проверить занятость порта можно командойsockstat -l | grep 9000(CORE) илиss -tlnp | grep 9000(SCALE). - Data Directory: укажите путь к созданному ранее dataset. В SCALE это
/mnt/имя_пула/s3-storage, в CORE - аналогично. Убедитесь, что путь существует и доступен для записи пользователюminio.
Остальные параметры можно оставить по умолчанию на этом этапе. Нажмите Save. Система применит конфигурацию и подготовит сервис к запуску.
Запуск сервиса и проверка работоспособности
После сохранения конфигурации вернитесь в список сервисов и переведите переключатель S3 в положение Active. Индикатор состояния должен смениться на зелёный. Если этого не произошло - перейдите к разделу диагностики ниже.
Проверьте, что сервис отвечает на запросы. Выполните в терминале TrueNAS или с удалённой машины:
curl -I http://IP_АДРЕС:9000
Ответ должен содержать HTTP-статус 403 Forbidden и заголовок Server: MinIO. Статус 403 на корневой запрос - нормальное поведение: MinIO ожидает корректный S3-запрос с подписью. Отсутствие ответа или ошибка соединения указывают на проблему с сетью или портом.
Для SCALE дополнительно проверьте статус systemd-юнита: systemctl status minio. Для CORE используйте service minio status. Активный статус running подтверждает, что процесс стартовал без ошибок.
Создание пользователей и настройка политик доступа
Модель доступа MinIO основана на связке «пользователь - политика». Пользователь получает Access Key и Secret Key для аутентификации. Политика определяет, какие действия с какими бакетами разрешены. Без политики пользователь не имеет прав ни на одну операцию.
Для создания пользователя перейдите в раздел Credentials → Users веб-интерфейса TrueNAS. Нажмите Add и заполните поля:
- Username: латиница, без пробелов, например
backup-bot. - Password / Secret Key: сгенерируйте надёжный ключ. MinIO использует эту пару как Access Key (имя пользователя) и Secret Key (пароль). Запишите их - интерфейс покажет Secret Key только один раз.
После создания пользователя перейдите на вкладку Policies. Здесь вы пишете JSON-документ, описывающий разрешения.
Примеры политик для типовых сценариев
Политика только на чтение для бакета logs:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::logs",
"arn:aws:s3:::logs/*"
]
}
]
}
Политика на чтение и запись для бакета backups:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::backups",
"arn:aws:s3:::backups/*"
]
}
]
}
Политика с ограничением по IP (доступ только из подсети 10.0.1.0/24):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::secure-bucket", "arn:aws:s3:::secure-bucket/*"],
"Condition": {
"IpAddress": {
"aws:SourceIp": "10.0.1.0/24"
}
}
}
]
}
Чтобы прикрепить политику к пользователю, нажмите на значок замка рядом с его именем в списке пользователей и выберите нужную политику из выпадающего списка. Изменения применяются мгновенно.
Создание и управление бакетами
Бакет - это контейнер для объектов. В веб-интерфейсе TrueNAS перейдите в раздел Storage → Buckets. Нажмите Add и задайте имя бакета. Имя должно быть уникальным в рамках вашего S3-сервера, содержать только строчные буквы, цифры и дефисы.
Дополнительные настройки бакета:
- Versioning: включите, если нужно хранить историю изменений объектов. Каждая перезапись создаёт новую версию, старые остаются доступными. Потребляет дополнительное место.
- Object Lock: блокирует объекты от удаления или перезаписи на заданный срок. Требуется для соответствия регуляторным требованиям (WORM-хранилище). После включения отключить нельзя.
- Quota: лимит на объём данных в бакете. Полезно для предотвращения неконтролируемого роста логов или бекапов.
Управление публичным доступом настраивается через политики. По умолчанию бакет приватный - доступ есть только у пользователей с явными разрешениями. Чтобы сделать бакет публичным на чтение, создайте политику с действием s3:GetObject для ресурса arn:aws:s3:::имя_бакета/* и прикрепите её к анонимному пользователю *.
Продвинутая настройка через командную строку
Веб-интерфейс покрывает базовые сценарии, но тонкая настройка MinIO требует работы в терминале. Подключитесь к TrueNAS по SSH или откройте веб-терминал через интерфейс.
Установите клиент mc (MinIO Client) - он доступен в базовом репозитории SCALE и через pkg в CORE:
# SCALE apt install minio-client -y # CORE pkg install minio-client
Настройте подключение к локальному серверу:
mc alias set local http://127.0.0.1:9000 ACCESS_KEY SECRET_KEY
Полезные команды mc:
mc ls local- список бакетов.mc mb local/новый-бакет- создать бакет.mc mirror /local/path local/бакет- синхронизировать локальную директорию с бакетом.mc admin info local- информация о сервере, версии, аптайме.
Изменение уровня логирования - пример настройки, недоступной в GUI. Создайте файл /etc/minio/config.env и добавьте переменную:
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=securepassword MINIO_LOG_LEVEL=debug
После редактирования перезапустите сервис: systemctl restart minio (SCALE) или service minio restart (CORE). Логи появятся в /var/log/minio/.
Оптимизация производительности S3-хранилища
Производительность объектного хранилища зависит от трёх факторов: дисковая подсистема, сеть и кэширование. Последовательно оптимизируем каждый слой.
Настройка кэширования для ускорения операций чтения
MinIO поддерживает дисковый кэш для горячих данных. Настройка выполняется через переменные окружения в файле конфигурации сервиса. Добавьте в /etc/minio/config.env:
MINIO_CACHE=on MINIO_CACHE_DRIVES=/mnt/пул/cache-dataset MINIO_CACHE_EXPIRY=90 MINIO_CACHE_QUOTA=90
Параметры:
MINIO_CACHE_DRIVES- путь к dataset для кэша. Используйте быстрый SSD-пул, если он есть. Выбор SSD для кэша и мониторинг эффективности - тема отдельного руководства.MINIO_CACHE_EXPIRY- время жизни кэшированного объекта в днях.MINIO_CACHE_QUOTA- максимальный процент заполнения кэш-диска, после которого старые записи вытесняются.
Размер кэша подбирайте под рабочий набор данных. Для бэкапов, где повторные чтения редки, кэш бесполезен. Для раздачи статики или логов, к которым обращаются часто, выделите 10-20% от объёма горячих данных.
Оптимизация сетевых параметров
Сетевые настройки по умолчанию редко бывают оптимальны для S3-трафика. Проверьте MTU на интерфейсе: Jumbo Frames (MTU 9000) снижают нагрузку на CPU и увеличивают пропускную способность при условии, что все устройства в сегменте поддерживают этот размер кадра. Настройка выполняется в Network → Interfaces → Edit.
Для высоконагруженных систем увеличьте TCP-буферы. Добавьте в /etc/sysctl.conf:
net.core.rmem_max = 134217728 net.core.wmem_max = 134217728 net.ipv4.tcp_rmem = 4096 87380 134217728 net.ipv4.tcp_wmem = 4096 65536 134217728
Примените изменения: sysctl -p. Эти параметры увеличивают максимальный размер буфера приёма и передачи до 128 МБ, что критично для операций с большими объектами.
Если на сервере несколько сетевых интерфейсов, настройте Link Aggregation (LACP) в разделе Network → Link Aggregations. Это даст прирост пропускной способности при параллельных подключениях множества клиентов.
Диагностика и устранение типичных проблем
Собрали распространённые ошибки и способы их решения. Начните диагностику с логов: /var/log/minio/ на обеих платформах.
Сервис не запускается: частые причины и решения
Порт занят. Симптом: в логах ошибка bind: address already in use. Решение: проверьте занятость порта командой ss -tlnp | grep 9000 (SCALE) или sockstat -l | grep 9000 (CORE). Если порт использует другой процесс, измените порт в настройках сервиса или остановите конфликтующее приложение.
Неверные права на dataset. Симптом: ошибка permission denied при старте. Решение: MinIO работает от пользователя minio. Выполните chown -R minio:minio /mnt/пул/s3-storage и chmod 750 /mnt/пул/s3-storage.
Ошибка в конфигурационном файле. Симптом: сервис стартует и сразу падает. Решение: проверьте синтаксис /etc/minio/config.env. Убедитесь, что нет опечаток в именах переменных и путях.
Ошибки доступа и аутентификации
Access Denied при корректных ключах. Проверьте системное время на клиенте и сервере. MinIO проверяет временную метку запроса, расхождение более 5 минут вызывает отказ. Настройте синхронизацию NTP: в System → General → NTP Servers добавьте pool.ntp.org.
Ошибка в JSON-политике. Симптом: политика сохраняется, но не применяется. Решение: проверьте валидность JSON через любой онлайн-валидатор. Частая ошибка - лишняя запятая после последнего элемента массива или неверный ARN ресурса. ARN бакета всегда имеет формат arn:aws:s3:::имя_бакета.
Высокое потребление памяти. MinIO кэширует метаданные в оперативной памяти. При объёме хранилища в десятки терабайт потребление может достигать нескольких гигабайт. Ограничьте кэш метаданных через переменную MINIO_MEMORY_LIMIT в файле конфигурации, указав значение в байтах, например MINIO_MEMORY_LIMIT=2147483648 для лимита в 2 ГБ.
Заключение: ваш S3-сервис готов к работе
Вы активировали S3-сервис, создали пользователей с минимально необходимыми правами, настроили бакеты и оптимизировали производительность под свою нагрузку. Ключевые точки контроля: мониторинг логов в /var/log/minio/, регулярная проверка свободного места в dataset и обновление TrueNAS до актуальной версии.
Для интеграции с файловыми протоколами изучите руководство по настройке SMB, NFS и FTP. Если вы только разворачиваете хранилище, начните с базовой настройки общих ресурсов. При выборе платформы поможет сравнение Synology, QNAP и TrueNAS.