TrueNAS: установка, настройка ZFS, SMB/NFS, Docker | DevOps гайд | AdminWiki

TrueNAS: Полное руководство по настройке и использованию для DevOps инженеров

31 декабря 2025 8 мин. чтения #backup #devops #docker #nas #nfs #samba #storage #truenas #zfs

Представь, что тебе нужно развернуть надёжное, отказоустойчивое хранилище для проектов, бэкапов или медиатеки. Покупать дорогое коммерческое решение? Сложно настраивать самописное? Давай разберем TrueNAS — мощную, бесплатную операционную систему для NAS на основе FreeBSD с фокусом на ZFS. Это твой швейцарский нож для хранения данных в инфраструктуре.

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

TrueNAS (ранее FreeNAS) — это не просто «сетевое хранилище». Это полноценная платформа для управления данными с веб-интерфейсом, которая превращает любой сервер или даже старый ПК в профессиональный NAS. Его «сердце» — файловая система ZFS, которая даёт нам:

  • Снэпшоты (snapshots) — моментальные снимки состояния данных.
  • Копирование при записи (Copy-on-Write) — защита от повреждения данных.
  • Самовосстановление (self-healing) — проверка контрольных сумм и автоматическое исправление ошибок.
  • Легкое управление томами (zvol, datasets).
  • Динамическое сжатие и дедупликация (экономия места).

Для DevOps это означает: централизованное хранилище для Docker volumes, бэкапов (Borg, Restic), артефактов сборки (Jenkins, GitLab), общих конфигов и медиа для стриминга (Plex, Jellyfin).

Важно: Существует две основные ветки: TrueNAS CORE (бесплатная, на FreeBSD) и TrueNAS SCALE (также бесплатная, но на Linux, с лучшей поддержкой контейнеризации и Kubernetes). В этом руководстве фокус на CORE как на стабильном решении для хранения.

Шаг 1: Установка TrueNAS CORE

Давай создадим наш NAS с нуля. Минимальные требования: 8 ГБ RAM, 64-битный процессор, два или более диска (для зеркала), флешка (8+ ГБ) или SSD для системы.

1.1. Подготовка установочного носителя

Скачиваем последний образ TrueNAS с официального сайта. Записываем на флешку с помощью balenaEtcher или dd.

bash
# Пример записи через dd (Linux/Mac)
dd if=TrueNAS-13.0-U5.1.iso of=/dev/sdX bs=1M status=progress
# Где /dev/sdX — твоя флешка

1.2. Процесс установки

Загружаемся с флешки, выбираем установку (Install/Upgrade).

  • Выбираем диск для установки ОС (это будет наша флешка/SSD). Внимание! Этот диск будет полностью отформатирован.
  • Задаём пароль для root (запомни его крепко!).
  • Выбираем загрузку из BIOS или UEFI (современные системы — UEFI).
  • Ждём окончания установки и перезагружаемся, вытащив установочную флешку.
Опасно: Не устанавливай ОС на диски, которые планируешь использовать для пула данных! Система должна жить на отдельном носителе.

Шаг 2: Базовая настройка и создание пула ZFS

После загрузки система покажет IP-адрес. Заходим в веб-интерфейс по этому IP (http://IP_АДРЕС).

2.1. Сетевые настройки (опционально, но желательно)

Идём в Network → Interfaces. Лучше задать статический IP.

config
# Пример конфига статического IP (через веб-интерфейс)
IPv4 Address: 192.168.1.100/24
IPv4 Default Gateway: 192.168.1.1
DNS Servers: 8.8.8.8, 1.1.1.1

2.2. Создание пула (Pool) данных

Это основа основ. Идём в Storage → Pools → ADD.

  • Name: tank (классическое имя для пула).
  • Добавляем диски. Для примера создадим зеркало (mirror) из двух дисков — это даст отказоустойчивость и хорошую скорость чтения.

Выбираем диски (например, da1 и da2) и нажимаем Create. Типы vdev (виртуальных устройств):

Тип vdev Минимум дисков Отказоустойчивость Использование
Mirror 2 Потеря 1 диска в каждом mirror Домашний NAS, важные данные
RAIDZ1 (аналог RAID5) 3 Потеря 1 любого диска Баланс места и надёжности
RAIDZ2 4 Потеря 2 любых дисков Корпоративное хранилище
После создания пула ZFS автоматически проверит данные (scrub). Рекомендуется включить автоматический scrub (раз в неделю) в Storage → Pools → три точки → Scrub Tasks.

Шаг 3: Создание Dataset'ов и общих ресурсов (Shares)

Пул — это контейнер. Внутри него создаём Dataset'ы — это как разделы/папки с индивидуальными настройками (квоты, компрессия, права).

3.1. Создание Dataset для бэкапов

Идём в Storage → Pools, нажимаем на три точки у пула → Add Dataset.

  • Name: backups
  • Compression: lz4 (быстро, хорошая степень сжатия).
  • Share Type: Generic (для SMB/NFS).

3.2. Настройка SMB (Samba) общего ресурса

Идём в Sharing → Windows Shares (SMB) → ADD.

  • Выбираем путь: /mnt/tank/backups
  • Name: backups
  • Настраиваем права (Permissions). Рекомендую создать отдельного пользователя и группу для доступа.
bash
# Создание пользователя и группы через веб-интерфейс (Credentials → Local Users)
# Или через shell (если любишь CLI):
ssh root@truenas-ip
# Создаём группу
pw groupadd -n backupusers
# Создаём пользователя
pw useradd -n backupuser -g backupusers -s /usr/sbin/nologin -d /nonexistent -c "Backup Service User"
# Задаём пароль
passwd backupuser

Затем в настройках общего ресурса (SMB) выставляем владельца (owner) и группу (group) на созданные backupuser/backupusers.

3.3. Настройка NFS общего ресурса (для Linux-серверов)

Идём в Sharing → Unix Shares (NFS) → ADD.

config
# Пример конфига NFS через веб-интерфейс:
Path: /mnt/tank/backups
# Добавляем сеть:
Authorized Networks: 192.168.1.0/24
# Права:
All dirs: ☑️ (чтение и запись для всех поддиректорий)
# На клиенте (Linux) монтируем так:
sudo mount -t nfs 192.168.1.100:/mnt/tank/backups /mnt/nas_backup

Шаг 4: Интеграция с Docker и резервное копирование

TrueNAS CORE не запускает Docker напрямую (это делает SCALE), но он идеален как целевое хранилище для данных контейнеров и бэкапов.

4.1. Монтирование общего ресурса в Docker-хосте (Linux)

На сервере, где работает Docker, смонтируем NFS или SMB ресурс и используем его как volume.

bash
# Установка NFS клиента (Ubuntu/Debian)
sudo apt install nfs-common
# Постоянное монтирование через /etc/fstab
192.168.1.100:/mnt/tank/docker_data /mnt/docker_nfs nfs defaults,noatime,vers=4.1 0 0
# Монтируем
sudo mount -a
# Теперь в docker-compose.yml можно использовать bind mount:
volumes:
  - /mnt/docker_nfs/app_data:/app/data

4.2. Настройка автоматических бэкапов через ZFS snapshots

Одна из сильнейших фич TrueNAS — моментальные снэпшоты. Создадим задание для автоматических снимков нашего пула.

  • Идём в Tasks → Periodic Snapshot Tasks → ADD.
  • Dataset: tank/backups (или весь tank).
  • Schedule: ежедневно в 2:00.
  • Lifetime: 2 недели (или по потребности).

Снэпшоты занимают минимум места (только изменения) и позволяют откатиться к любой точке во времени. Удалить их можно через Storage → Snapshots.

4.3. Резервное копирование на удалённый TrueNAS (Replication Tasks)

Для катастрофоустойчивости настроим репликацию снэпшотов на второй NAS (например, в другом месте).

config
# На целевом TrueNAS нужно создать SSH ключ (System → SSH Keypairs).
# Затем на источнике (Tasks → Replication Tasks):
Source: tank/backups
Destination: ssh://user@remote-truenas-ip/mnt/backup_pool/replica
Schedule: ежедневно
# ZFS сам отправит инкрементальные изменения.

Шаг 5: Мониторинг и обслуживание

Система должна работать сама, но за ней нужно присматривать.

  • Reporting: Встроенные графики загрузки CPU, RAM, сети и дисков.
  • Alert Services: Настрой уведомления на почту или в Telegram (System → Alert Services).
  • SMART Tests: Регулярные проверки здоровья дисков (Tasks → S.M.A.R.T. Tests).
  • Обновления: System → Update. Всегда делай бэкап конфига перед обновлением (System → General → Save Config).

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

TrueNAS или самописный сервер на Linux с ZFS?

TrueNAS даёт готовый, отполированный веб-интерфейс для всех операций с ZFS, единую точку управления и стабильную сборку. Для быстрого развёртывания и focus на данных, а не на администрировании — TrueNAS. Для полного контроля над каждым пакетом — кастомный Linux.

Можно ли запускать Docker контейнеры прямо на TrueNAS CORE?

Напрямую — нет. CORE работает на FreeBSD, где Docker не поддерживается. Для этого есть TrueNAS SCALE (на Linux) или использование плагинов/jails (устаревший способ). Лучшая практика — держать TrueNAS как хранилище, а контейнеры запускать на отдельном хосте, который монтирует данные с NAS.

Как мигрировать данные с обычного RAID на ZFS пул?

1. Сделай полный бэкап данных на внешний носитель. 2. Создай новый пул ZFS в TrueNAS. 3. Восстанови данные на новый пул по сети (через rsync, SMB или NFS). 4. Протестируй доступность. 5. Переключи клиентов на новый NAS.

Почему система рекомендует много оперативной памяти (8 ГБ минимум)?

ZFS использует RAM как кэш (ARC) для ускорения операций чтения. Чем больше данных и чем выше нагрузка — тем больше RAM будет полезно. Для домашнего использования с 2-4 дисками 16 ГБ — комфортный минимум.

Заключение

TrueNAS — это мощный инструмент, который из коробки решает сложные задачи хранения данных. Потратив один день на первоначальную настройку, ты получаешь систему, которая годами работает без сбоев, защищает данные от битового разложения и дисковых сбоев, и легко масштабируется.

Начни с простого зеркала из двух дисков, настрой SMB для дома и NFS для серверов, автоматизируй снэпшоты. Со временем добавь репликацию на второй аппарат. Теперь у тебя есть своё облако, которое не зависит от подписок и ограничений провайдеров.

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