Представь, что твой сервер TrueNAS почти заполнен, а проекты требуют больше места. Или ты только что установил новый SSD и хочешь добавить его в систему. В этой статье я, как Senior DevOps, разберу с тобой все способы, как добавить диск в TrueNAS — от простого расширения существующего пула до создания нового и настройки через CLI. Мы затронем как TrueNAS CORE, так и SCALE.
Подготовка: что нужно знать перед добавлением диска
Прежде чем физически вставлять диск, важно понять архитектуру ZFS и ограничения. TrueNAS использует ZFS пулы (pools), которые состоят из виртуальных устройств (vdevs). Vdev, в свою очередь, создается из физических дисков. Ключевой момент: расширяется пул, а не отдельный vdev.
Сценарии добавления диска
- Расширение пула (добавление нового vdev): Самый частый сценарий. Добавляешь новый vdev (например, из одного диска в режиме stripe или из нескольких в RAID) к существующему пулу.
- Создание нового пула: Если нужна изоляция данных (например, для быстрых VM или отдельного проекта).
- Замена диска на более емкий: Постепенная замена всех дисков в vdev для увеличения общего объема.
- Добавление кэша (L2ARC) или лога (SLOG): Специальные диски (обычно SSD) для ускорения операций.
Шаг 1: Физическое подключение и обнаружение диска
Давай начнем с основ. Выключи сервер, подключи новый диск (SATA, SAS, NVMe) и включи его обратно.
Проверка, видит ли TrueNAS диск
Зайди в веб-интерфейс TrueNAS (обычно по IP адресу сервера).
- Перейди в Storage → Disks.
- В списке должен появиться новый диск. Обрати внимание на его идентификатор (например,
ada2илиnvme0n1). - Если диска нет, проверь подключение или используй CLI.
# Проверить список дисков через командную строку (Shell)
# Подключись к TrueNAS по SSH или через консоль
dmesg | grep -i "sd\|nvme\|ada" # Последние записи о дисках
# Или используй утилиту camcontrol
camcontrol devlist
# В TrueNAS SCALE (на базе Linux) можно использовать lsblk
lsblk -o name,size,model,serial,tran
Шаг 2: Добавление диска в существующий пул (расширение хранилища)
Это основной метод увеличения общего объема. Мы добавим новый vdev к пулу. Представь, у тебя есть пул tank с одним vdev (mirror из 2 дисков). Мы добавим к нему еще один vdev.
Через веб-интерфейс (рекомендуется)
- Иди в Storage → Pools.
- Найди нужный пул, нажми на три точки (⋮) и выбери «Expand Pool» или «Manage Devices» (в зависимости от версии).
- Нажми «Add Vdev». Теперь нужно выбрать тип нового vdev и диски для него.
Типы Vdev для добавления
| Тип | Мин. дисков | Отказоустойчивость | Использование |
|---|---|---|---|
| Stripe (одиночный диск) | 1 | Нет. Сбой диска = потеря данных всего пула. | Не рекомендуется для данных. Можно для временного хранилища. |
| Mirror (зеркало) | 2 | Высокая. Выдержит отказ одного диска в каждом mirror. | Для важных данных, где нужна скорость и надежность. |
| RAIDZ1 (аналог RAID 5) | 3+ | Один диск в vdev. | Баланс объема и надежности. |
| RAIDZ2 | 4+ | Два диска в vdev. | Для больших массивов, где важна надежность. |
4. Выбери тип (например, Mirror), если добавляешь два диска. 5. В поле «Available Disks» перемести нужные диски в «Vdev Disks». 6. Нажми «Add Vdev», затем «Expand Pool». Начнется процесс расширения, данные останутся целы.
Через командную строку (CLI)
Иногда интерфейс недоступен или нужна автоматизация. Используй команду zpool add.
# Сначала посмотрим структуру пула
zpool status tank
# Добавим новый vdev типа single disk (stripe) к пулу 'tank'
# ВАЖНО: Это рискованно, так как отказ этого диска разрушит весь пул!
zpool add tank /dev/ada2
# Безопаснее добавить vdev типа mirror из двух новых дисков
zpool add tank mirror /dev/ada2 /dev/ada3
# Добавить vdev типа RAIDZ1 из трех дисков
zpool add tank raidz1 /dev/ada2 /dev/ada3 /dev/ada4
# Проверим результат
zpool status tank
Шаг 3: Создание нового пула с добавленным диском
Если хочешь изолированное хранилище, создай новый пул. Иди в Storage → Pools → Add.
- Нажми «Create Pool».
- Присвой имя (например,
fast-ssd). - Перетащи диски из «Available Disks» в область конфигурации.
- Выбери тип vdev (Data Vdev Type) для этих дисков.
- Настрой остальные параметры (шифрование, резервное копирование метаданных).
- Нажми «Create». Пул будет отформатирован и смонтирован.
Шаг 4: Добавление диска кэша (L2ARC) или лога (SLOG)
Это специальные роли для ускорения. L2ARC — кэш чтения (часто используемые данные). SLOG — журнал синхронных записей (ускоряет NFS, iSCSI, базы данных). Для них лучше использовать быстрые NVMe SSD.
# Добавить SSD в качестве кэша (L2ARC) к пулу 'tank'
zpool add tank cache /dev/nvme0n1p1
# Добавить SSD в качестве журнала синхронных записей (SLOG)
# Рекомендуется использовать зеркало из двух дисков для надежности
zpool add tank log mirror /dev/nvme0n1p2 /dev/nvme0n1p3
# Проверить, что все добавлено
zpool status tank
Частые проблемы и их решение
Диск не отображается в интерфейсе
- Проблема: Физически подключенный диск не виден в Storage → Disks.
- Решение:
- Проверь кабели и питание.
- В CLI выполни
dmesg | tail— возможно, драйвер не загрузился. - Для SAS-контроллера убедись, что он в режиме IT (Initiator Target), а не RAID.
Ошибка "one or more vdevs refer to the same disk"
Ты пытаешься добавить диск, который уже используется в системе. Убедись, что диск очищен (wiped) и не входит в другой пул. Используй команду, чтобы увидеть, где используется диск:
# Найти, к какому пулу привязан диск /dev/ada2
zpool status | grep -B5 -A5 ada2
После добавления диска свободное место не увеличилось
ZFS распределяет данные по всем vdev пропорционально (подобное RAID 0). Новое место станет доступно сразу, но чтобы его использовать, нужно, чтобы данные записывались. Проверь команду:
zpool list -v tank
Ты увидишь размер каждого vdev. Если добавил mirror или RAIDZ, учти, что часть объема уйдет на избыточность.
Часто задаваемые вопросы (FAQ)
Можно ли добавить один диск к существующему vdev RAIDZ1?
Нет, это невозможно в ZFS. Архитектура ZFS не позволяет добавлять диски в существующий vdev после его создания. Можно только: 1) Добавить новый vdev к пулу. 2) Заменить все диски в vdev на диски большего объема и затем расширить пул.
Какой тип vdev лучше добавить для расширения?
Если в пуле уже есть vdev типа mirror, добавляй также mirror — это обеспечит равномерную надежность. Если в пуле RAIDZ2, можно добавить еще один RAIDZ2. Добавление одиночного диска (stripe) резко снижает отказоустойчивость всего пула.
Нужно ли останавливать сервисы или прерывать работу при добавлении диска?
Нет. Добавление нового vdev — операция «на лету». Существующие данные не затрагиваются, сервисы (SMB, NFS, Docker) продолжают работать. Однако при физической установке диска в «горячем» режиме убедись, что твоя система и контроллер поддерживают hot-plug.
Как добавить диск, если слоты SATA/SAS закончились?
Потребуется расширить аппаратную часть:
- Установить HBA/RAID-контроллер в режиме IT (например, LSI 9211-8i).
- Использовать внешнюю JBOD-стойку, подключенную по SAS.
- Замена дисков на более емкие (замена по одному с последующим resilver).
Почему после добавления диска ZFS показывает состояние "DEGRADED"?
Это нормально на время операции «resilvering» (перераспределение данных). Проверь прогресс командой zpool status. После завершения статус сменится на ONLINE. Если статус не меняется, проверь SMART-статус нового диска.
Заключение и лучшие практики
Давай резюмируем, как правильно добавить диск в TrueNAS:
- Планируй архитектуру заранее: Продумай, будешь ли ты расширять пул или создавать новый. Помни о правилах отказоустойчивости vdev.
- Используй одинаковые vdev в одном пуле: Для предсказуемой производительности и надежности.
- Всегда инициализируй (wipe) новые диски перед добавлением.
- Для критичных данных избегай single-disk vdev. Используй минимум mirror.
- Мониторь состояние пула после добавления: Выполни
zpool statusи проверь SMART новых дисков через интерфейс. - Документируй изменения: Запиши, какие диски, куда и когда были добавлены. Это спасет при диагностике.
Теперь ты знаешь не только как добавить диск в TrueNAS через веб-интерфейс, но и как делать это через CLI, понимаешь разницу между расширением пула и созданием vdev, а также можешь решать типичные проблемы. Это фундаментальный навык для любого админа систем хранения. Экспериментируй на тестовом стенде, прежде чем вносить изменения в боевую систему. Удачи в масштабировании твоего хранилища!