TrueNAS 2025 — Установка, настройка ZFS, Docker и мониторинг | AdminWiki

TrueNAS 2025: Полное руководство по установке, настройке и администрированию

28 января 2026 8 мин. чтения #devops #docker #nas #truenas #zfs #мониторинг #хранение данных

Что такое TrueNAS 2025 и зачем он DevOps-инженеру?

Представь, что тебе нужно развернуть отказоустойчивое, самоисцеляющееся хранилище для данных виртуальных машин, контейнеров и бэкапов. Вручную настраивать ZFS, репликацию, мониторинг — это дни работы. TrueNAS 2025 — это готовое решение, которое превращает сервер в мощную систему хранения данных уровня предприятия с веб-интерфейсом. Для DevOps это означает централизованное управление данными, интеграцию с Kubernetes (через CSI драйвер) и автоматизацию через API.

Ключевое отличие 2025 года: Основной фокус на TrueNAS SCALE — дистрибутиве на базе Linux (Debian) с поддержкой контейнеризации (Kubernetes k3s) и масштабируемости, в отличие от TrueNAS CORE на FreeBSD.

Подготовка и установка TrueNAS SCALE 2025

Давай разберем процесс с нуля. Тебе понадобится сервер или мощная виртуальная машина с минимум 8 ГБ RAM (рекомендуется 16+ ГБ) и как минимум двумя дисками для зеркалирования.

Шаг 1: Скачивание и запись образа

Скачай актуальный образ с официального сайта. Запиши его на USB-накопитель (он будет использоваться как установочный и загрузочный диск системы).

bash
# Пример записи образа на Linux с помощью dd
# ЗАМЕНИ /dev/sdX на свой USB-накопитель!
sudo dd if=TrueNAS-SCALE-24.10.0.1.iso of=/dev/sdX bs=1M status=progress oflag=sync
Внимание! Весь данные на целевом диске (/dev/sdX) будут безвозвратно удалены. Дважды проверь правильность устройства.

Шаг 2: Установка через веб-интерфейс

После загрузки с флешки TrueNAS запустит временную систему. Открой браузер и перейди по IP-адресу, который покажет консоль.

  1. В мастере установки выбери диск для ОС (лучше всего SSD). Система займет весь диск.
  2. Задай пароль рута. Запомни его — это главный ключ от системы.
  3. Настрой сеть: статический IP или DHCP. Для продакшена всегда используй статический IP.
  4. Дождись завершения установки и перезагрузки.

Настройка ZFS: Создание пула и наборов данных (Datasets)

Сердце TrueNAS — файловая система ZFS. Давай создадим отказоустойчивый пул и логические разделы для разных целей.

Создание пула через веб-интерфейс

Перейди в Storage → Pools → ADD. Здесь ты определяешь топологию RAID.

Топология (VDEV) Минимум дисков Отказоустойчивость Использование для DevOps
Mirror (Зеркало) 2 Потеря 1 диска Системные диски, высокопроизводительные VM
RAIDZ1 (аналог RAID 5) 3 Потеря 1 диска Общее хранилище, бэкапы
RAIDZ2 (аналог RAID 6) 4 Потеря 2 дисков Критичные данные, архив

После создания пула tank создай наборы данных (Datasets) — это как разделы внутри пула.

bash
# Пример создания наборов данных через CLI TrueNAS (из шелла)
# Создаем dataset для виртуальных машин
zfs create tank/vms

# Создаем dataset для Docker volume
zfs create tank/docker

# Включаем сжатие для экономии места (lz4 почти не нагружает CPU)
zfs set compression=lz4 tank/vms
zfs set compression=lz4 tank/docker

# Устанавливаем квоту (лимит)
zfs set quota=500G tank/docker

Настройка общего доступа (SMB/NFS) и ACL

Чтобы твои виртуальные машины и контейнеры могли использовать хранилище, нужно настроить сетевой доступ.

Настройка общего доступа NFS для Kubernetes

Идеально для динамического предоставления томов через CSI драйвер.

  1. Перейди в Services → NFS и включи сервис.
  2. В Sharing → Unix Shares (NFS) → ADD укажи путь к dataset (например, /mnt/tank/docker).
  3. В настройках укажи сеть, которой разрешен доступ (например, 10.0.0.0/16).
  4. Важно: Убедись, что у dataset правильные права. Для NFS обычно используется root:root и режим 777 с учетом squash.
config
# Пример строки в /etc/exports (генерируется автоматически)
/mnt/tank/docker 10.0.0.0/16(rw,async,no_subtree_check,all_squash,anonuid=0,anongid=0)

Развертывание приложений (Docker) в TrueNAS SCALE

Одна из сильнейших сторон TrueNAS SCALE 2025 — встроенный k3s (легковесный Kubernetes) и менеджер приложений. Ты можешь развернуть Portainer, GitLab Runner, мониторинг и многое другое в пару кликов.

Установка Portainer для управления Docker

  1. Перейди в Apps → Available Applications.
  2. Найди "Portainer" и нажми INSTALL.
  3. В настройках установки:
    • Выбери версию (обычно последнюю).
    • В Storage укажи dataset для persistent data (например, /mnt/tank/docker/portainer_data).
    • Настрой сетевой доступ (NodePort или LoadBalancer).
  4. После установки открой Portainer по указанному IP и порту, создай администратора и подключись к локальному Docker socket.
Все приложения в TrueNAS SCALE работают в изолированных Kubernetes Pods. Это дает лучшую безопасность и управляемость по сравнению с "голым" Docker.

Мониторинг и оповещения

TrueNAS имеет встроенную систему мониторинга на базе Graphite и Alertmanager. Давай настроим оповещение о заполнении диска.

Настройка оповещения в Telegram

  1. Создай бота в Telegram через @BotFather и получи его токен.
  2. Узнай свой Chat ID (можно через бота @userinfobot).
  3. В TrueNAS перейди в System Settings → Alert Services → ADD.
  4. Выбери тип "Telegram", вставь токен и Chat ID.
  5. Теперь перейди в System Settings → Alert Settings и настрой правила. Например, для предупреждения о заполнении пула на 80%:
config
{
  "policy": {
    "warning": 80,
    "critical": 90
  },
  "check_interval": 300,
  "enabled": true
}

Автоматизация через API и CLI

Для интеграции TrueNAS в твой CI/CD пайплайн или скрипты автоматизации используй REST API.

python
import requests
import json

# Аутентификация в API TrueNAS
BASE_URL = "https://truenas.local/api/v2.0"
USER = "root"
PASSWORD = "your_secure_password"

session = requests.Session()
session.auth = (USER, PASSWORD)
session.headers.update({'Content-Type': 'application/json'})

# Пример: Получить информацию о пулах
def get_pools():
    response = session.get(f"{BASE_URL}/pool")
    if response.status_code == 200:
        return response.json()
    else:
        print(f"Ошибка: {response.status_code}")
        return None

# Пример: Создать моментальный снимок (snapshot) dataset
def create_snapshot(dataset_name, snapshot_name):
    payload = {
        "dataset": dataset_name,
        "name": snapshot_name,
        "recursive": False
    }
    response = session.post(f"{BASE_URL}/zfs/snapshot", data=json.dumps(payload))
    return response.status_code == 200

# Использование
pools = get_pools()
if pools:
    for pool in pools:
        print(f"Пул: {pool['name']}, Здоровье: {pool['healthy']}")

# Создаем снапшот перед обновлением приложения
create_snapshot("tank/docker", "pre-update-backup")

Часто задаваемые вопросы (FAQ)

Можно ли обновить TrueNAS CORE до SCALE?

Прямого пути "на месте" нет. Нужно выполнить миграцию: создать бэкап конфигурации на CORE, установить SCALE с нуля на новое железо или диск, затем восстановить конфигурацию из бэкапа. Важно: не все настройки (особенно связанные с jails) переносятся идеально.

Как настроить репликацию данных на второй сервер TrueNAS?

Используй встроенные задачи репликации (Replication Tasks).

  1. На целевом сервере создай пользователя и dataset для репликации.
  2. На исходном сервере в Data Protection → Replication Tasks → ADD укажи источник (локальный dataset), целевой сервер (SSH соединение) и расписание.
  3. TrueNAS будет автоматически отправлять инкрементальные снапшоты.
Для продакшена используй VPN или защищенный канал между серверами.

Почему не стоит использовать RAID-контроллер в режиме RAID с ZFS?

ZFS предназначена для прямого управления дисками (JBOD). Если RAID-контроллер скрывает отдельные диски и представляет их как один логический блок, ZFS теряет возможность:

  • Обнаруживать и предсказывать сбои отдельных дисков.
  • Выполнять самовосстановление при ошибках чтения.
  • Оптимально распределять данные.
Настрой контроллер в режиме HBA (IT Mode) или используй встроенные порты SATA.

Как добавить диски в существующий пул ZFS?

Зависит от топологии:

  • Mirror: Можно добавить диски к существующему mirror (для увеличения отказоустойчивости) или создать новый mirror VDEV в пуле (для увеличения емкости и производительности).
  • RAIDZ: Нельзя просто добавить диск в существующий RAIDZ VDEV. Нужно либо создавать новый VDEV (из дисков того же количества), либо заменять все диски на диски большего объема.
Планируй емкость заранее!

Заключение и лучшие практики

TrueNAS 2025, особенно SCALE-редакция, — это мощный инструмент в арсенале DevOps-инженера. Он закрывает задачу отказоустойчивого, управляемого хранилища с богатыми возможностями автоматизации. Запомни главное:

  • Всегда используй ECC RAM для защиты от тихих повреждений данных в ZFS.
  • Регулярно создавай снапшоты перед любыми значимыми изменениями.
  • Настрой мониторинг и тестовые оповещения сразу после установки.
  • Для продакшена развертывай два сервера с репликацией.
  • Изучи CLI и API — это ключ к настоящей автоматизации.

Теперь у тебя есть пошаговый план, чтобы поднять свое профессиональное хранилище. Начни с тестового стенда, поэкспериментируй с настройками ZFS и разверни первое приложение. Удачи в освоении TrueNAS 2025!

Поделиться:
Сохранить гайд? В закладки браузера