В ZFS предусмотрены методы проверки работоспособности устройства и пула. Работоспособность пула определяется на основе состояния всех его устройств. Эта информация о состоянии отображается с помощью команды zpool status. Кроме того, для выявления потенциальных сбоев пула и устройств используется команда fmd, и они отображаются в системной консоли и в файле /var/adm/messages. В этом разделе описывается процедура определения работоспособности пула и устройства. Способы устранения сбоев или восстановления неработоспособных пулов здесь не рассматриваются. Дополнительно об устранении неполадок и восстановлении данных см. Глава 11Поиск и устранение сбоев и восстановление данных в ZFS.
Каждое устройство может находиться в одном из следующих состояний:
Устройство находится в нормальном рабочем состоянии. Несмотря на возможность возникновения некоторых временных ошибок, устройство исправно.
Произошел сбой виртуального устройства, однако оно по-прежнему функционирует. Это состояние является наиболее распространенным при потере связи между зеркалом или устройством RAID-Z и одним или несколькими составными устройствами. Отказоустойчивость пула может быть подвергнута риску, т. к. следующий сбой в каком-либо другом устройстве может оказаться неисправимым.
Виртуальное устройство полностью недоступно. Это состояние обычно указывает на полный сбой устройства, в результате которого ZFS не может обмениваться данными с этим устройством. Если виртуальное устройство верхнего уровня находится в этом состоянии, то весь пул становится недоступным.
Виртуальное устройство было явно переведено администратором в автономный режим.
Доступ к устройству или виртуальному устройству невозможен. В некоторых случаях пулы с устройствами в состоянии UNAVAILABLE отображаются в режиме DEGRADED. Если виртуальное устройство верхнего уровня недоступно, то также недоступны все элементы пула.
Устройство было физически удалено во время работы системы. Обнаружение удаления устройств является аппаратной функцией и может не поддерживаться на некоторых платформах.
Работоспособность пула определяется на основе работоспособности всех виртуальных устройств верхнего уровня. Если все виртуальные устройства находятся в состоянии ONLINE, то пул также находится в состоянии ONLINE. Если какое-либо из виртуальных устройств находится в состоянии DEGRADED или UNAVAILABLE, то пул также находится в состоянии DEGRADED. Если виртуальное устройство верхнего уровня находится в состоянии FAULTED или OFFLINE, то пул также находится в состоянии FAULTED. Пул в состоянии FAULTED полностью недоступен. Восстановление данных без подключения или исправления требуемых устройств невозможно. Пул в состоянии DEGRADED продолжает функционировать, но обеспечение того же уровня избыточности данных или пропускной способности, что и при состоянии ONLINE, невозможно.
Наиболее простым способом получения краткого обзора статуса работоспособности пула является команда zpool status:
# zpool status -x all pools are healthy |
Для проверки определенных пулов в команде необходимо указать имя пула. Любой пул, не находящийся в состоянии ONLINE, должен быть проверен на наличие потенциальных проблем, как описано в следующем разделе.
Для запроса более подробных данных по работоспособности используется параметр -v. Пример:
# zpool status -v tank pool: tank state: DEGRADED status: One or more devices could not be opened. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Attach the missing device and online it using 'zpool online'. see: http://www.sun.com/msg/ZFS-8000-2Q scrub: none requested config: NAME STATE READ WRITE CKSUM tank DEGRADED 0 0 0 mirror DEGRADED 0 0 0 c1t0d0 FAULTED 0 0 0 cannot open c1t1d0 ONLINE 0 0 0 errors: No known data errors |
Эти выходные данные содержат полное описание причины текущего состояния пула, включая четкое описание проблемы и ссылку на статью в базе знаний для получения дополнительной информации. Каждая такая статья позволяет получить актуальную информацию по рекомендуемым способам устранения текущей проблемы. С помощью подробной информации о конфигурации можно определить, какое из устройств повреждено и как восстановить пул.
В приведенном выше примере неисправное устройство требуется заменить. После замены устройства для его перевода обратно в оперативный режим используется команда zpool online. Пример:
# zpool online tank c1t0d0 Bringing device c1t0d0 online # zpool status -x all pools are healthy |
Если пул содержит устройство в автономном режиме, то этот проблемный пул будет указан в выходных данных команды. Пример:
# zpool status -x pool: tank state: DEGRADED status: One or more devices has been taken offline by the adminstrator. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Online the device using 'zpool online' or replace the device with 'zpool replace'. scrub: none requested config: NAME STATE READ WRITE CKSUM tank DEGRADED 0 0 0 mirror DEGRADED 0 0 0 c1t0d0 ONLINE 0 0 0 c1t1d0 OFFLINE 0 0 0 errors: No known data errors |
Столбцы READ и WRITE содержат количество ошибок ввода/вывода, зарегистрированных для устройства, тогда как столбец CKSUM содержит количество неисправимых ошибок контрольной суммы, возникших в устройстве. Оба эти счетчика ошибок определяют вероятность сбоя устройства и необходимость корректировочных действий. При обнаружении ненулевых счетчиков ошибок для виртуального устройства верхнего уровня часть данных может оказаться недоступной. Счетчик ошибок учитывает все известные ошибки в данных.
В приведенном выше примере выходных данных устройство в автономном режиме не приводит к возникновению ошибок в данных.
Для получения дополнительной информации о диагностике и восстановлении неисправных пулов и данных см. Глава 11Поиск и устранение сбоев и восстановление данных в ZFS.