Эта инструкция предназначена для администраторов любого уровня (включая новичков). Она решает проблему, когда замена диска через веб-интерфейс TrueNAS завершается ошибкой [EINVAL] Failed to find vdev, поскольку старый диск уже извлечён, а система потеряла связь с его логическими разделами.
В TrueNAS замена неисправного диска в зеркальном пуле данных выполняется стандартно: вы физически меняете накопитель, загружаете систему, переходите в настройки пула, выбираете повреждённый диск и запускаете процедуру замены, указав новый накопитель. После этого диски синхронизируются и пул возвращается в штатный режим работы. Однако при попытке аналогичным образом заменить диск в загрузочном пуле (boot-pool) система выдаёт ошибку
[EINVAL] Failed to find vdev for ТУТ-ИМЯ-ВАШЕГО-ДИСКА
Диск заменить не получается. Почему? Это связано с принципиальным различием в том, как TrueNAS управляет этими пулами. Пул данных хранит исключительно разделы ZFS. При замене диска данных TrueNAS не нужно выполнять сложные системные сценарии разметки — он просто отдаёт команду ZFS привязать новый накопитель к существующему виртуальному устройству (vdev). В загрузочном пуле системе требуется создавать загрузочные разделы (EFI/GRUB).
В этом случае нам поможет ручное вмешательство через CLI — это специфика, присущая загрузочному пулу (boot-pool).
Подготовка к работе
1. Откройте веб-интерфейс TrueNAS SCALE.
2. Перейдите в раздел Система — Командный интерпретатор или подключитесь к серверу по SSH.
3. Все команды выполняются с правами суперпользователя (root).
Сопоставление текстовых имён и числовых GUID дисков
Попытка заменить диск по его текстовому имени (например, nvme-SAMSUNG_…-part2) часто вызывает ошибку no such device in pool, если накопитель физически отключен. Использование уникального числового идентификатора (GUID) — самый надёжный способ.
Чтобы не ошибиться и определить GUID именно сломанного диска, мы выполним проверку в два этапа, сравнивая текстовый вывод и числовой по порядку устройств в списке.
Сначала выведите статус пула, чтобы увидеть, какой именно диск по счёту (верхний или нижний в зеркале) помечен как REMOVED или UNAVAIL:
zpool status boot-pool
Здесь мы четко видим: первый диск в зеркале работает (ONLINE), а второй (нижний) — вышел из строя (REMOVED).
Теперь выведите тот же статус пула, но с флагом -g, чтобы текстовые имена заменились на числовые GUID:
zpool status -g boot-pool

Ориентируясь по порядку в списке (вторая строка), найдите числовой ID напротив статуса REMOVED. Полностью скопируйте это число. Это и есть GUID вашего вышедшего из строя диска.
Определение точного пути нового диска
У нас уже подключён новый диск в системе, который мы будем использовать в качестве замены.
ZFS в TrueNAS требует использования стабильных путей через серийные номера устройств (by-id). Использовать стандартные имена Linux (такие как /dev/nvme1n1) нельзя: после перезагрузки эти имена могут измениться, и пул «развалится».
Выведите список всех подключенных дисков по их постоянным идентификаторам:
ls -l /dev/disk/by-id/
Внимательно изучите список и найдите ваш новый диск. Скопируйте название. Ориентируйтесь на модель и серийный номер (например, nvme-Samsung_SSD_980_250GB_S64BNL0YC07250P).
Важное правило: Имя диска не должно заканчиваться на -part1, -part2 и т.д. Вам нужен диск целиком, а не его разделы. TrueNAS разметит его автоматически. Пример:
Подготовка (очистка) нового диска (Рекомендуется)
Если новый диск ранее где-то использовался или на нем осталась заводская разметка, ZFS может заблокировать операцию замены. Чтобы этого избежать, затрите служебную область диска:
dd if=/dev/zero of=/dev/disk/by-id/ПОЛНОЕ_ИМЯ_НОВОГО_ДИСКА bs=1M count=10
# пример: dd if=/dev/zero of=/dev/disk/by-id/nvme-Samsung_SSD_980_250GB_S64BNL0YC07250P bs=1M count=10`
Выполнение замены диска
Теперь объедините полученные данные в одну команду. Флаг -f (force) заставит ZFS принудительно начать замену на указанный чистый накопитель.
zpool replace -f boot-pool <ЧИСЛОВОЙ_GUID_СТАРОГО_ДИСКА> /dev/disk/by-id/<ПОЛНОЕ_ИМЯ_НОВОГО_ДИСКА>
# пример: zpool replace -f boot-pool 15696509188538032599 /dev/disk/by-id/nvme-Samsung_SSD_980_250GB_S64BNL0YC07250P
После нажатия Enter команда должна выполниться без вывода ошибок, вернув вас на новую строку ввода.
Контроль синхронизации
Процесс переноса операционной системы на новый диск начинается автоматически в фоновом режиме. Проверьте текущий статус:
# Уже без флага `-g`, чтобы видеть привычные имена
zpool status boot-pool
В строке scan: вы увидите статус resilver in progress и процент выполнения. Дождитесь окончания процесса. Когда процедура завершится, статус сменится на ONLINE, ошибки будут равны нулю (0 errors), а старый диск полностью исчезнет из списка устройств. Пул снова станет отказоустойчивым. Пример:
Устранение рассинхронизации Middleware и GUI после замены диска
После всех операций в командной строке в интерфейсе в разделе Хранилище вы можете увидеть, что есть один неиспользуемый диск и из него можно создать новый пул-данных. Это наш с вами новый диск:

Прямой вызов команды zpool replace меняет накопитель на уровне файловой системы ZFS , но выполняется в обход базы данных TrueNAS SCALE. В результате ZFS считает пул здоровым, а веб-интерфейс продолжает видеть новый диск как «Неиспользуемый» (Unused Disks). Если вы выполнили замену диска через терминал и столкнулись с тем, что диск завис в списке неиспользуемых, то чтобы вернуть накопитель в исходное состояние и заставить TrueNAS подхватить его корректно, необходимо удалить его из пула и снова добавить. Выведем структуру пула с числовыми идентификаторами дисков:
# понятные имена дисков
zpool status boot-pool
# числовые идентификаторы дисков
zpool status -g boot-pool
Найдите в зеркале mirror-0 числовой GUID вашего нового диска. Он будет находиться в статусе ONLINE. Исключите диск из пула командой отсоединения по его GUID:
zpool detach boot-pool <ЧИСЛОВОЙ_GUID_НОВОГО_ДИСКА>
Служба-посредник TrueNAS (middlewared) блокирует повторные действия с этим диском, пока не перезагрузим систему. Перезагружаем систему.
После перезагрузки система заново опросит дисковые контроллеры. TrueNAS увидит абсолютно чистый, освобожденный от ZFS диск.
- Откройте веб-интерфейс TrueNAS.
- Перейдите по пути: Система — Загрузка — Состояние загрузочного пула.
- В списке дисков найдите ваш единственный оставшийся системный диск.
- Нажмите на три точки напротив него и выберите появившийся пункт Присоединить.
- В выпадающем меню выберите ваш чистый и подтвердите операцию.
При запуске процедуры именно через графическое меню система выполняет операцию «по-честному»:
- TrueNAS автоматически создает на диске загрузочную область EFI и ZFS-раздел.
- Уникальный стабильный серийный номер (ID) диска намертво записывается во внутреннюю базу данных конфигурации.
- Сообщение о свободном диске (
Unused Disks) полностью исчезает. - Система работает корректно.










