ZFS была разработана как надежная и устойчивая к ошибкам система. Тем не менее, ошибки в программном обеспечении или определенные непредвиденные отказы могут вызвать фатальную ошибку системы при обращении к пулу. В рамках процесса начальной загрузки осуществляется открытие каждого пула. Это означает, что в результате подобных сбоев система оказывается в бесконечном цикле фатальной ошибки и перезагрузки. Для восстановления в такой ситуации необходимо информировать ZFS, что при запуске не следует искать никакие пулы.
В ZFS имеется внутренний кэш доступных пулов и их конфигураций в /etc/zfs/zpool.cache. Расположение и содержимое этого файла представляют собой закрытые атрибуты и могут изменяться. Если система становится незагружаемой, выполните начальную загрузку до этапа none с использованием загрузочного параметра -m milestone=none. После перехода системы в рабочий режим перемонтируйте корневую файловую систему как доступную для записи, а затем удалите или переместите файл /etc/zfs/zpool.cache в другое расположение. В результате этих действий ZFS не обнаруживает существующие в системе пулы, что позволяет предотвратить обращение к неисправному пулу, вызвавшему проблему. Затем систему можно перевести в нормальное состояние с помощью команды svcadm milestone all. При загрузке с альтернативного корня для восстановления используется аналогичный процесс.
После перехода системы в рабочий режим можно предпринять попытку импорта пула с помощью команды zpool import. Однако эта операция, вероятно, приведет к возникновению той же ошибки, что и при начальной загрузке, поскольку эта команда использует для доступа к пулам тот же механизм. Если в системе существуют несколько пулов, выполните следующее.
Переименуйте файл zpool.cacheили переместите его в другое место, как описано выше.
Определите проблемный пул. Для этого используйте команду fmdump -eV, показывающую пулы, для которых имеются сообщения о неустранимых ошибках.
Импортируйте пулы один за другим, пропуская проблемные пулы, указанные в выходных данных команды fmdump.