
Состояние degraded у ZFS pool означает, что один или несколько компонентов пула перестали корректно работать, что снижает уровень избыточности и увеличивает риск потери данных. Важно оперативно определить источник проблемы и принять меры для восстановления стабильности пула.
Для начала необходимо получить детальную информацию о состоянии пула с помощью команды zpool status. Она покажет, какие устройства вызывают сбой и в каком состоянии находятся остальные диски. В зависимости от конфигурации пула (mirror, RAIDZ и др.) шаги по восстановлению будут отличаться.
При обнаружении неисправного устройства его следует заменить на новый диск одинакового или большего объёма. После этого выполняется процесс восстановления данных – resilvering, который автоматически запускается ZFS для восстановления избыточности. Следует контролировать ход этого процесса и при необходимости исправлять ошибки.
Также важно периодически запускать zpool scrub для проверки целостности данных и выявления скрытых проблем. Этот инструмент помогает предотвратить переход пула в состояние degraded в будущем и продлевает срок службы хранилища.
Проверка статуса ZFS pool и выявление проблемных устройств

Для оценки текущего состояния ZFS pool необходимо выполнить команду:
zpool status– отображает общее состояние пула, список устройств и ошибки.
Результат команды включает несколько важных разделов:
- STATE – статус пула. Значение degraded указывает на наличие проблем.
- NAME – список устройств и vdev, из которых состоит пул.
- READ, WRITE, CKSUM – количество ошибок чтения, записи и контрольных сумм по каждому устройству.
Для быстрой фильтрации проблемных устройств можно использовать команду:
zpool status | grep -iE "degraded|faulted|offline|errors"
Дополнительно рекомендуется проверить SMART-статус физических дисков, чтобы выявить аппаратные проблемы, используя команды:
smartctl -a /dev/sdX– для подробного отчёта по диску.smartctl -H /dev/sdX– для быстрого теста статуса здоровья.
Своевременное обнаружение проблемных устройств и анализ ошибок позволяет подготовить последовательность действий по замене дисков и восстановлению пула без потери данных.
Использование команды zpool status для диагностики

Команда zpool status предоставляет подробный отчёт о состоянии ZFS pool, включая статус пула, состояние каждого устройства и статистику ошибок.
STATE – текущее состояние пула. Значение degraded указывает на частичную потерю избыточности.
scan – информация о последнем сканировании и процессе восстановления данных (resilvering).
errors – суммарное количество ошибок чтения, записи и контрольных сумм для каждого устройства.
zpool status pool_name
Для анализа состояния необходимо обратить внимание на раздел, где перечислены устройства. Строки с пометками FAULTED, OFFLINE или DEGRADED требуют немедленного вмешательства.
В случае, если пул находится в процессе восстановления, параметр scan покажет процент выполненной операции и оставшееся время, что позволяет контролировать процесс без прерывания работы.
Для более детального мониторинга используйте ключ -v, который выведет информацию о повреждённых файлах и блоках:
zpool status -v pool_name
Замена повреждённого или отсутствующего устройства в пуле

Для замены неисправного устройства необходимо сначала определить его точное имя через zpool status. После физической замены диска следует выполнить команду добавления нового устройства в пул.
- Отключить проблемный диск, если он ещё не отключён:
zpool offline pool_name device_name. - Физически заменить диск на новый с равным или большим объёмом.
- Подключить новый диск к системе и проверить его видимость командой
lsblkилиfdisk -l. - Добавить новый диск в пул с помощью команды:
zpool replace pool_name old_device new_device. - Мониторить процесс восстановления данных – resilvering – через
zpool status.
Важные рекомендации:
- Новый диск должен иметь не меньшее пространство, чем заменяемый.
- Перед заменой рекомендуется убедиться в отсутствии активных операций записи на пул.
- Если устройство не отключилось корректно, можно использовать принудительное отключение через
zpool detach, но с осторожностью. - Контролируйте статус восстановления, чтобы убедиться в успешной синхронизации данных.
Пересоздание зеркала (mirror) в ZFS pool после отказа диска
Если в пуле с зеркалом произошло повреждение одного из дисков, восстановить его работоспособность можно заменой и повторным созданием зеркала.
Для этого необходимо выполнить следующие действия:
- Определить имя неисправного диска с помощью
zpool status. - Отключить проблемный диск командой
zpool offline pool_name device_name. - Физически заменить диск на новый, аналогичного или большего объёма.
- Подключить новый диск к системе и проверить его доступность.
- Выполнить команду замены диска в зеркале:
zpool replace pool_name old_device new_device. Это инициирует процесс resilvering. - Контролировать процесс восстановления через
zpool status, убедиться в завершении resilvering без ошибок.
При невозможности восстановления зеркала через замену диска может потребоваться полное удаление и повторное создание зеркального vdev. Этот шаг приводит к потере данных, поэтому требуется предварительное резервное копирование.
Перед началом работ стоит проверить состояние всех дисков и SMART-статус, чтобы избежать повторных сбоев.
Восстановление данных с помощью команды zpool scrub

Для запуска сканирования выполните:
zpool scrub pool_name
Во время работы scrub нагрузка на систему увеличивается, но операции записи и чтения остаются доступными.
Для контроля состояния сканирования используйте:
zpool status pool_name
Если после завершения scrub остаются необработанные ошибки, это указывает на серьёзные повреждения данных, требующие замены устройств или восстановления из резервных копий.
Рекомендуется регулярно запускать zpool scrub для своевременного обнаружения проблем и минимизации риска перехода пула в состояние degraded.
Добавление нового устройства для восстановления избыточности
В случае потери одного или нескольких дисков в пуле с RAIDZ или mirror, для восстановления избыточности можно добавить новое устройство. Этот процесс позволяет вернуть пул в нормальное состояние без потери данных.
Для добавления нового диска используйте команду:
zpool add pool_name new_device
Однако для восстановления избыточности рекомендуется применять команду zpool replace, которая заменяет конкретное неисправное устройство на новое и запускает процесс resilvering:
zpool replace pool_name old_device new_device
Важно, чтобы новый диск соответствовал по размеру или был больше заменяемого. После добавления устройства контролируйте процесс восстановления через:
zpool status pool_name
Если пул использует конфигурацию с несколькими vdev, добавление диска в существующий vdev невозможно, потребуется замена неисправных дисков. В этом случае новый диск добавляется вместо старого, а не отдельно.
Добавление нового устройства повышает надёжность и позволяет избежать перехода пула в состояние degraded.
Удаление устаревших или неисправных дисков из пула

Удаление диска из ZFS pool возможно только для устройств, которые были добавлены как hot spare или в конфигурациях с поддержкой удаления vdev, например, в некоторых версиях ZFS.
Перед удалением необходимо убедиться, что данные с удаляемого диска перенесены и пул остаётся целостным. Для удаления используйте команду:
zpool detach pool_name device_name
Если диск является частью зеркала, команда detach отсоединит его без потери данных, а процесс синхронизации продолжится с оставшимися устройствами.
Для удаления устройства из RAIDZ-пула стандартными средствами ZFS удаление дисков не поддерживается, требуется полный пересоздавать пул с нужной конфигурацией.
Перед удалением рекомендуется проверить состояние пула и выполнить zpool scrub для минимизации рисков потери данных.
В случае физической неисправности диска сначала отключите его командой:
zpool offline pool_name device_name
После отключения и проверки состояния можно выполнять дальнейшие операции с пулом.
Проверка и исправление ошибок после восстановления пула
После завершения восстановления состояния ZFS pool необходимо провести проверку наличия ошибок и устранить их для предотвращения повторных сбоев.
Для выявления ошибок используется команда:
zpool status -v pool_name
| Тип ошибки | Файл/Область | Описание | Действия |
|---|---|---|---|
| Checksum Error | /path/to/file | Ошибка контрольной суммы блока данных | Запуск zpool scrub для исправления |
| Read Error | vdev X | Ошибка чтения с устройства | Проверка SMART, замена диска |
| Write Error | vdev Y | Ошибка записи на устройство | Анализ логов, возможная замена устройства |
Если ошибки сохраняются после scrub, рекомендуется выполнить резервное копирование важных данных и рассмотреть замену проблемных дисков.
Регулярный контроль состояния пула и своевременное выполнение zpool scrub помогают поддерживать целостность данных и снижать вероятность повторных сбоев.
Вопрос-ответ:
Что означает статус degraded у ZFS pool и как быстро определить источник проблемы?
Статус degraded указывает на снижение избыточности пула из-за неисправности одного или нескольких устройств. Для выявления проблемного компонента нужно выполнить команду zpool status. В выводе будет указан статус каждого устройства и наличие ошибок чтения, записи или контрольных сумм. Определив неисправный диск, можно приступать к его замене и восстановлению пула.
Какие шаги необходимы для замены повреждённого диска в ZFS pool с зеркалом?
Сначала необходимо отключить неисправный диск через команду zpool offline pool_name device_name. Затем физически заменить диск на новый, равный или больший по объёму. После подключения нового устройства выполняется zpool replace pool_name old_device new_device, что запускает процесс восстановления данных — resilvering. Следует контролировать ход восстановления с помощью zpool status до полного завершения операции.
Как работает команда zpool scrub и в каких случаях её стоит запускать?
Команда zpool scrub проверяет целостность данных и метаданных на всех устройствах пула. При обнаружении ошибок она пытается исправить их с помощью резервных копий. Запуск рекомендуется после замены дисков, при подозрении на повреждения или планово для контроля состояния пула. В процессе проверки доступ к данным сохраняется, а прогресс можно отслеживать через zpool status.
Можно ли удалить диск из ZFS pool без потери данных и как это сделать?
Удаление диска возможно, если он был добавлен как hot spare или пул поддерживает удаление vdev. Для отключения диска применяется команда zpool detach pool_name device_name. В конфигурациях с зеркалом это позволяет безопасно удалить устройство без потери информации. В RAIDZ удаление отдельных дисков стандартными средствами не поддерживается, здесь потребуется пересоздание пула с нужной конфигурацией.
