Если ты ищешь надежное, enterprise-уровневое решение для хранения данных с открытым исходным кодом, то TrueNAS.com — это твой выбор. Это не просто "сетевая папка", а полноценная операционная система на базе FreeBSD (TrueNAS CORE) или Debian Linux (TrueNAS SCALE), заточенная под работу с файловыми системами ZFS. Давай разберем, как с нуля развернуть и настроить свой NAS, используя подход Senior DevOps инженера.
Что такое TrueNAS и зачем он нужен?
Представь, что тебе нужно централизованное хранилище для дома или офиса, которое должно быть:
- Надежным: Защита от битых секторов (самолечение ZFS), контрольные суммы данных.
- Масштабируемым: Легко добавить диски в пул или заменить на более емкие.
- Быстрым: Кэширование в оперативной памяти (ARC, L2ARC) и на SSD (SLOG).
- Универсальным: Поддержка протоколов SMB (Windows), NFS (Linux), iSCSI (виртуализация), AFP (Mac).
- С репликацией: Снимки (snapshots) и их отправка на другой сервер для бэкапа.
Именно это предлагает TrueNAS.com. Скачать дистрибутив можно прямо с официального сайта.
Шаг 1: Подготовка и установка TrueNAS
Для установки тебе понадобится флешка (от 8 ГБ) и целевой сервер/ПК с минимум 8 ГБ ОЗУ (лучше 16+). ZFS любит память.
1.1 Скачивание образа с TrueNAS.com
Иди на страницу загрузки TrueNAS.com, выбери CORE или SCALE и скачай файл .iso.
1.2 Запись образа на USB-накопитель
Используй утилиту Rufus (Windows) или dd (Linux/Mac). Вот команда для Linux:
# ЗАМЕНИ /dev/sdX на свою флешку! Эта команда ее полностью сотрет.
sudo dd if=./TrueNAS-CORE-13.0-U5.1.iso of=/dev/sdX bs=1M status=progress
sudo sync
/dev/sdX). Неправильный выбор уничтожит данные на другом диске.
1.3 Установка на сервер
Загрузись с флешки, выбери Install/Upgrade. Ключевые моменты установки:
- Выбери диск для установки ОС (например, маленький SSD на 120 ГБ). Система будет жить здесь.
- Не используй для ОС диски, которые планируешь добавить в пул данных!
- Задай пароль для root. Запомни его — он понадобится для входа в веб-интерфейс.
- Настрой статический IP или DHCP (статический IP предпочтительнее для сервера).
После перезагрузки система покажет IP-адрес. Открой его в браузере.
Шаг 2: Базовая настройка через веб-интерфейс
Войди под root и заданным паролем. Первым делом — настрой сеть.
2.1 Настройка сетевых интерфейсов
Иди в Network → Interfaces. Для лучшей производительности и отказоустойчивости настрой LACP (Link Aggregation), если у тебя два порта и управляемый коммутатор.
# Пример конфига LACP через CLI (можно сделать и в GUI)
ifconfig lagg0 create
ifconfig lagg0 up laggproto lacp laggport igb0 laggport igb1
ifconfig lagg0 inet 192.168.1.10 netmask 255.255.255.0
2.2 Создание пула хранения (ZFS Pool)
Это сердце системы. Иди в Storage → Pools → ADD.
- RaidZ1 (аналог RAID5): 1 диск на отказ. Минимум 3 диска. Хорош для медиа-хранилища.
- RaidZ2 (аналог RAID6): 2 диска на отказ. Минимум 4 диска. Для критичных данных.
- Mirror (аналог RAID1): Высокая производительность, но малая эффективная емкость. Минимум 2 диска.
- Stripe: Без избыточности. Не используй для важных данных.
Выбери диски (VDEVs) и тип RAID. Назови пул, например, tank.
Шаг 3: Создание и настройка общих ресурсов (Shares)
3.1 Создание набора данных (Dataset)
Перед созданием шары создай Dataset — это как раздел внутри пула. У него можно задать квоты, тип сжатия (lz4 — обязательно включи!) и политики снапшотов.
Storage → Pools. Нажми три точки у пула → Add Dataset.
- Имя:
media,backup,home. - Compression:
lz4(экономит место почти без нагрузки на CPU). - Share Type:
SMBдля Windows,NFSдля Linux.
3.2 Настройка SMB (Samba) шары
Иди в Sharing → Windows Shares (SMB) → ADD.
- Укажи путь:
/mnt/tank/media - Настрой права (ACL): Это важно! Включи "Use ACL".
После создания зайди в Edit ACL и настрой права как на Linux:
# Идеальные права для домашней папки
Владелец: user1 (чтение/запись/исполнение)
Группа: users (чтение/исполнение)
Другие: нет прав
# ACL для SMB наследуются и работают корректно.
3.3 Настройка NFS шары
Sharing → Unix Shares (NFS) → ADD.
# Пример записи в /etc/exports (настраивается в GUI)
/mnt/tank/backup -alldirs -maproot=root -network 192.168.1.0/24
# Разрешаем доступ всей подсети 192.168.1.*
На клиенте Linux смонтируй так:
sudo mount -t nfs 192.168.1.10:/mnt/tank/backup /mnt/nas_backup
Шаг 4: Продвинутые настройки и мониторинг
4.1 Настройка периодических снапшотов (Snapshots)
Снапшоты ZFS — это моментальные снимки состояния данных. Они занимают мало места (только изменения) и спасают от случайного удаления или ransomware.
Storage → Periodic Snapshot Tasks → ADD.
- Dataset:
tank/media - Schedule: Каждый день в 2:00 ночи.
- Lifetime: Хранить 2 недели, 12 месячных снапшотов.
4.2 Репликация на другой TrueNAS (Remote Backup)
Мощнейшая фича. Ты можешь отправлять снапшоты по SSH на другой сервер, хоть в облако.
Tasks → Replication Tasks → ADD.
- Настрой SSH-ключи между серверами (Source -> Destination).
- Выбери локальный dataset и удаленный хост.
- Запускай репликацию по расписанию (например, раз в день).
# Пример команды, которую генерирует GUI (zfs send/receive)
zfs send -R tank/media@auto-20231201_0200 | \
ssh user@backup-nas "zfs receive -F tank/backup/media"
4.3 Мониторинг через CLI и настройка оповещений
Зайди в Shell (кнопка в веб-интерфейсе) и проверь здоровье пула:
# Статус пула
zpool status tank
# Проверка на ошибки (scrub). Запускай раз в месяц.
zpool scrub tank
# Просмотр использования
zpool list
zfs list -t snapshot # Все снапшоты
Настрой оповещения по email в System → Alert Services → ADD. Укажи SMTP своего почтового ящика. TrueNAS будет присылать письма при ошибках диска, заполнении пула или сбое репликации.
Сравнение TrueNAS CORE и SCALE
| Критерий | TrueNAS CORE | TrueNAS SCALE |
|---|---|---|
| Основа | FreeBSD | Debian Linux |
| Гипервизор | Bhyve (базовый) | KVM (полноценный) |
| Контейнеры | Jails (FreeBSD) | Docker + Kubernetes |
| Драйверы железа | Стабильнее, особенно для HBA-контроллеров | Шире, но могут быть "сырые" |
| Кому подходит | Чистое хранилище, максимальная стабильность | Хостинг VM/контейнеров, homelab "все в одном" |
Часто задаваемые вопросы (FAQ)
Можно ли обновить CORE до SCALE?
Да, есть миграционный путь, но это не простое обновление. Это переустановка с экспортом/импортом конфигурации и данных. Перед этим сделай полный бэкап конфига (System → General → Save Config) и убедись в совместимости оборудования с Linux.
Почему ZFS ест много оперативной памяти?
ZFS использует RAM как кэш (ARC) для ускорения операций чтения. Это не утечка, а дизайн-фича. Чем больше RAM — тем быстрее доступ к частым данным. Минимум — 8 ГБ, для комфортной работы с несколькими терабайтами — 16-32 ГБ.
Как добавить диски в существующий пул?
Есть два способа: 1) Расширить существующий VDEV — нельзя, архитектурное ограничение ZFS. 2) Добавить новый VDEV в пул — можно, но данные распределятся по всем VDEV (как RAID 0 поверх RAID групп). Добавляй VDEV того же типа и размера, чтобы не было дисбаланса.
TrueNAS можно запустить в виртуальной машине?
Да, для тестирования — легко. Для продакшена с реальными данными — не рекомендуется, если ты не можешь гарантировать прямой доступ (PCIe Passthrough) контроллера дисков (HBA) к виртуальной машине. Без этого теряется надежность ZFS.
Заключение от DevOps Ментора
TrueNAS.com предоставляет, возможно, лучшее бесплатное решение для построения отказоустойчивого хранилища. Ключевые моменты для успеха:
- Используй аппаратное RAID-контроллеры в режиме HBA (IT Mode) или встроенные порты SATA.
- Включи сжатие
lz4на всех datasets — это бесплатная экономия места. - Настрой автоматические снапшоты и репликацию на второй аппарат. Один NAS — это не бэкап.
- Мониторь SMART-атрибуты дисков и ставь оповещения.
Начни с простой конфигурации, пойми принципы ZFS, а затем масштабируйся. Удачи в построении твоего надежного хранилища!