Представь, что тебе нужно развернуть надежное, масштабируемое хранилище для проекта. Ты устал от облачных счетов и хочешь контролировать свои данные. Решение — TrueNAS NAS. Это не просто "сетевая папка", а полноценная ZFS-система с enterprise-функциями, доступная каждому. Давай разберем, как превратить железо в профессиональный NAS.
Что такое TrueNAS и почему он нужен DevOps
TrueNAS — это операционная система на базе FreeBSD (TrueNAS CORE) или Linux (TrueNAS SCALE), заточенная под работу с хранилищами данных. Её ядро — файловая система ZFS, которая даёт:
- Снапшоты — моментальные снимки данных без нагрузки
- Копирование при записи (Copy-on-Write) — защита от повреждения данных
- Самовосстановление — проверка целостности и исправление ошибок
- Легкое масштабирование — добавление дисков в пул на лету
Выбор между TrueNAS CORE и TrueNAS SCALE
Первый и главный выбор. Давай сравним:
| Критерий | TrueNAS CORE | TrueNAS SCALE |
|---|---|---|
| Основа | FreeBSD | Linux (Debian) |
| Виртуализация | Bhyve (ограниченно) | KVM + Docker |
| Контейнеры | Jails (FreeBSD) | Docker + Kubernetes |
| Для кого | Классический NAS, файловое хранилище | DevOps, хомлабы, гиперконвергентные системы |
Пошаговая установка TrueNAS SCALE
Шаг 1: Подготовка загрузочного носителя
Скачиваем ISO с официального сайта. Записываем на USB (минимум 8 ГБ) через BalenaEtcher или dd:
# Определяем устройство USB (ОСТОРОЖНО!)
lsblk
# Допустим, USB — это /dev/sdb
sudo dd if=truenas-scale.iso of=/dev/sdb bs=1M status=progress
sudo sync
Шаг 2: Установка на систему
Загружаемся с USB, выбираем установку. Важный момент — TrueNAS устанавливается целиком на диск. Для системы выдели отдельный SSD (даже на 32 ГБ), а для данных — другие диски.
- Выбираем диск для установки (НЕ данные!)
- Задаем root-пароль и IP-адрес (или оставляем DHCP)
- Ждем завершения, извлекаем USB, перезагружаемся
Базовая настройка хранилища: создание пула ZFS
Всё управление через веб-интерфейс (https://IP-адрес). Первым делом создаем пул (Pool) — это аналог RAID-массива в ZFS.
# Через веб: Storage → Pools → ADD
# Или через консоль (если любишь CLI):
zpool create tank raidz2 /dev/sda /dev/sdb /dev/sdc /dev/sdd
zpool status tank
Рекомендации по конфигурациям:
- mirror (RAID1): 2 диска — максимум безопасности, минимум места
- raidz1 (RAID5): 3+ диска — один диск на отказ
- raidz2 (RAID6): 4+ диска — два диска на отказ (рекомендуется)
- raidz3: 5+ дисков — три диска на отказ для очень больших массивов
Создание наборов данных (Datasets)
Внутри пула создаем datasets — это как папки, но с индивидуальными настройками ZFS (компрессия, квоты, снапшоты).
# Storage → Pools → три точки у пула → Add Dataset
Имя: docker
Компрессия: lz4 (рекомендуется)
Quota: 100G (если нужно ограничить)
Настройка сетевых шаров: SMB и NFS
SMB/CIFS для Windows и macOS
Идем в Sharing → SMB. Добавляем шар, указываем путь к dataset.
# Файл конфигурации: /etc/smb4.conf
[backup]
path = /mnt/tank/backup
valid users = @users
read only = no
browsable = yes
Не забудь создать пользователей (Credentials → Local Users) и назначить им права.
NFS для Linux и Kubernetes
NFS критически важен для DevOps. В Sharing → NFS создаем шар. Пример для экспорта dataset "docker":
/mnt/tank/docker -alldirs -network 192.168.1.0/24 -maproot=root
На клиенте монтируем так:
sudo mount -t nfs 192.168.1.10:/mnt/tank/docker /mnt/docker
Использование TrueNAS как Docker-хоста
В TrueNAS SCALE есть встроенные Applications (это обёртка над Kubernetes). Но если хочешь прямой Docker — есть два пути:
Способ 1: Установка Docker вручную через Shell
# Включаем SSH и заходим на TrueNAS
ssh root@truenas.local
# Устанавливаем Docker
apt update
apt install docker.io docker-compose
# Запускаем сервис
systemctl enable --now docker
# Проверяем
docker ps
Способ 2: Использование Applications (рекомендуется)
Идем в Applications, настраиваем Pool для приложений. Устанавливаем, например, Portainer:
- Находим "Portainer" в каталоге
- В настройках Storage указываем dataset для /data
- Задаем NodePort (например, 30779 для веб-интерфейса)
- Запускаем, управляем Docker через Portainer
Автоматизация и мониторинг
Снапшоты и репликация
Сила ZFS — в снапшотах. Настрой периодические снапшоты через Storage → Snapshots:
Dataset: tank/docker
Расписание: каждый день в 2:00
Хранить: 7 дней, 4 недельных, 3 месячных
Репликацию на второй TrueNAS настраиваешь через Storage → Replication Tasks.
Мониторинг через Netdata или Prometheus
Установи Netdata из Applications — даст красивый дашборд по дискам, ZFS, сети.
Для интеграции с существующим Prometheus:
scrape_configs:
- job_name: 'truenas'
static_configs:
- targets: ['truenas.local:9100'] # node_exporter порт
metrics_path: '/api/v2.0/metrics/report'
scheme: 'https'
basic_auth:
username: 'root'
password: 'твой_пароль'
Частые вопросы (FAQ)
Можно ли обновлять TrueNAS без потери данных?
Да, обновления через веб-интерфейс безопасны для данных. Но всегда делай снапшот перед обновлением. Данные хранятся в пулах ZFS, которые не затрагиваются при обновлении системы.
Как мигрировать данные со старого NAS на TrueNAS?
1. Через NFS/SMB: смонтируй шар со старого NAS на TrueNAS и скопируй данные. 2. Через ZFS send/receive: если старый NAS тоже на ZFS, используй `zfs send | zfs recv` для эффективной миграции с сохранением снапшотов.
TrueNAS тянет 10 GbE сеть?
Да, если железо позволяет. Для 10 GbE нужны: быстрые диски (SSD или HDD в RAID), достаточный CPU (Intel Core i3/i5 или Xeon) и правильная настройка сети. На HDD-массиве ты упрешься в дисковую подсистему (~200-400 MB/s).
Можно ли запускать виртуальные машины на TrueNAS?
На TrueNAS SCALE — да, через встроенный KVM. Выделяй VM отдельный dataset, создавай виртуальную машину через раздел Virtual Machines. Идеально для тестовых стендов или изолированных сервисов.
Заключение: TrueNAS в DevOps-инфраструктуре
TrueNAS — это не игрушка, а production-готовое решение. С ним ты получаешь:
- Надежное хранилище с ZFS и самовосстановлением
- Единую точку управления данными, снапшотами, репликацией
- Платформу для Docker и виртуальных машин (на SCALE)
- Бесплатный enterprise-уровень с активным комьюнити
Начни с малого: разверни TrueNAS SCALE на старой рабочей станции, создай пул из двух дисков в mirror, настрой NFS-шар для своих проектов. Через месяц ты не поймешь, как жил без снапшотов и компрессии lz4.