В следующих разделах описывается процедура выявления проблем в файловых системах или пулах устройств хранения данных ZFS.
Для выявления проблем в конфигурациях ZFS можно воспользоваться следующими функциями:
вывод подробной информации пула устройств хранения данных ZFS с помощью команды zpool status;
уведомление об сбоях пулов и устройств с помощью сообщений диагностики ZFS/FMA;
отображение предыдущих команд ZFS, используемых для изменения информации о состоянии пула, с помощью команды zpool history.
В большинстве случаев поиск и устранение сбоев ZFS выполняются с помощью команды zpool status. Эта команда используется для анализа различных сбоев, возникающих в системе, и выявления наиболее серьезной проблемы, а также предлагает возможные действия и предоставляет ссылку на соответствующую статью базы знаний для получения дополнительной информации. Следует отметить, что эта команда позволяет выявить только одну проблему в пуле, несмотря на возможное наличие нескольких проблем. Например, ошибки, связанные с повреждением данных, всегда подразумевают сбой одного из устройств. Замена неисправного устройства не позволяет решить проблему повреждения данных.
Кроме того, для диагностики и уведомления о сбоях пулов и устройств доступен механизм диагностики ZFS. Также обеспечивается регистрация ошибок контрольной суммы, ввода/вывода и устройств, связанных со сбоем пула или устройства. Сбои ZFS, выявленные с помощью команды fmd, отображаются на консоли и регистрируются в файле системных сообщений. В большинстве случаев сообщение fmd содержит ссылку на команду zpool status.
Ниже приведено описание базового процесса восстановления.
При необходимости определения команд ZFS, после выполнения которых возникла ошибка, воспользуйтесь командой zpool history. Пример:
# zpool history tank History for 'tank': 2009-09-01.09:26:15 zpool create tank mirror c0t1d0 c0t2d0 c0t3d0 2009-09-01.09:26:34 zfs create tank/erick 2009-09-01.09:26:41 zfs set checksum=off tank/erick |
Следует отметить, что в приведенных выше выходных данных контрольные суммы для файловой системы tank/erick отключены. Такая конфигурация не рекомендуется.
Идентифицируйте ошибки с использованием сообщений fmd на системной консоли или в файлах /var/adm/messages.
Перейдите к дальнейшим инструкциям по устранению сбоев с помощью команды zpool status -x.
Устраните сбои, в т.ч.:
замените неисправное или отсутствующее устройство и переведите его в оперативный режим;
восстановите конфигурацию или поврежденные данные из резервной копии;
проверьте результат восстановления с помощью команды zpool status -x;
выполните резервное копирование восстановленной конфигурации (если применимо).
В этой главе описывается интерпретация выходных данных команды zpool status для диагностики типа сбоя и перехода к одному из следующих разделов, в которых приведены инструкции по устранению проблемы. Поскольку основной объем операций выполняется автоматически с помощью команды, для диагностики типа сбоя необходимо точно понимать, какие проблемы были выявлены.
Наиболее простым способом определения выявленных проблем в системе является выполнение команды zpool status -x. Эта команда выводит список пулов с явными проблемами. При отсутствии в системе неисправных пулов эта команда выводит следующее простое сообщение:
# zpool status -x all pools are healthy |
Без флага -x команда полностью отображает состояние всех пулов (или затребованного пула, если он указан в командной строке), даже если эти пулы в работоспособны.
Для получения дополнительной информации о параметрах командной строки для команды zpool status см. Запрос состояния пула устройств хранения данных ZFS.
Полные выходные данные команды zpool status выглядят следующим образом:
# zpool status tank pool: tank state: DEGRADED status: One or more devices has been taken offline by the administrator. 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 |
Эти выходные данные подразделяются на несколько разделов:
В разделе заголовка выходных данных команды zpool status содержатся следующие поля, некоторые из них отображаются только для неисправных пулов:
Имя пула.
Текущая работоспособность пула. Эта информация относится только к способности пула обеспечить необходимый уровень репликации. Пулы, находящиеся в состоянии ONLINE, по-прежнему могут содержать неисправные устройства или поврежденные данные.
Описание неисправности пула. При отсутствии выявленных сбоев это поле опускается.
Рекомендуемое действие по устранению ошибок. Это поле представляет собой сокращенную форму для направления пользователя к одному из следующих разделов. При отсутствии выявленных сбоев это поле опускается.
Ссылка на статью базы знаний, содержащую подробную информацию об устранении сбоя. Статьи в Интернете обновляются чаще, чем настоящее руководство, и поэтому для большинства актуальных процедур устранения сбоев указываются ссылки именно на них. При отсутствии выявленных сбоев это поле опускается.
Определяет текущее состояние операции очистки, которое может включать дату и время выполнения последней очистки, информацию о выполняемой очистке или указание на то, что запросы на очистку не поступали.
Определяет выявленные ошибки в данных или указывает на отсутствие таковых.
Поле config в выходных данных команды zpool status содержит информацию о конфигурации устройств, составляющих пул, а также их состоянии и любых ошибках, генерируемых этими устройствами. Устройства могут находиться в одном из следующих состояний: ONLINE, FAULTED, DEGRADED, UNAVAILABLE или OFFLINE. Если состояние устройства отлично от состояния ONLINE, это указывает на пониженную отказоустойчивость пула.
Во втором разделе выходных данных конфигурации отображается статистика ошибок. Эти ошибки подразделяются на три категории:
READ – ошибка ввода/вывода, возникшая при обработке запроса на чтение;
WRITE – ошибка ввода/вывода, возникшая при обработке запроса на запись;
CKSUM – ошибка контрольной суммы. В результате запроса на чтение устройство выдает поврежденные данные.
Эти ошибки могут использоваться для определения постоянного характера сбоя. Небольшое количество ошибок ввода/вывода может указывать на временный сбой, тогда как большое количество таких ошибок – на наличие постоянной проблемы, связанной с устройством. Эти ошибки не обязательно свидетельствуют о повреждении данных, интерпретируемом приложениями. Если устройство имеет конфигурацию с избыточностью, то дисковые устройства могут отображать неисправимые ошибки, тогда как на уровне зеркала или устройства RAID-Z ошибки не отображаются. В этом случае ZFS успешно извлекает корректные данные и предпринимает попытку восстановления поврежденных данных на основе существующих реплик.
Для получения дополнительной информации об интерпретации этих ошибок для идентификации сбоя устройства см. Определение типа сбоя устройства.
Наконец, в последнем столбце выходных данных команды zpool status отображается дополнительная информация. Эта информация дополняет данные в поле state и используется для диагностики типов сбоя. Если устройство находится в состоянии FAULTED, в этом поле указывается, является ли устройство доступным и нарушена ли целостность содержащихся в нем данных. Если для устройства выполняется перенос актуальных данных, в этом поле отображается ход выполнения этой операции.
Для получения дополнительной информации о наблюдении за процесса переноса актуальных данных см. Просмотр статуса переноса актуальных данных.
В третьем разделе выходных данных команды zpool status описывается текущее состояние всех явных очисток. Эта информация отличается от информации по обнаруженным ошибкам, несмотря на возможность ее использования для определения точности сообщений об ошибках, связанных с повреждением данных. Если последняя очистка была завершена недавно, наиболее вероятно обнаружение всех выявленных повреждений данных.
Для получения дополнительной информации об очистке данных и интерпретации соответствующей информации см. Проверка целостности данных ZFS.
Команда zpool status также отражает связь выявленных ошибок с пулом. Эти ошибки могут быть обнаружены при очистке диска или в нормальном режиме работы. ZFS ведет сохраняемый протокол всех ошибок в данных, связанных с пулом. При каждом завершении полной очистки соответствующий журнал очищается.
Ошибки, связанные с повреждением данных, всегда являются фатальными. Их наличие указывает на то, что по крайней мере в одном приложении возникла ошибка ввода/вывода из-за повреждения данных в пуле. Ошибки устройств в резервном пуле не приводят к повреждению данных и не регистрируются в журнале. По умолчанию отображается только количество обнаруженных ошибок. Полный список ошибок с подробной информацией можно просмотреть с помощью параметра zpool status -v. Пример:
# zpool status -v pool: tank state: UNAVAIL status: One or more devices are faulted in response to IO failures. action: Make sure the affected devices are connected, then run 'zpool clear'. see: http://www.sun.com/msg/ZFS-8000-HC scrub: scrub completed after 0h0m with 0 errors on Tue Sep 1 09:51:01 2009 config: NAME STATE READ WRITE CKSUM tank UNAVAIL 0 0 0 insufficient replicas c1t0d0 ONLINE 0 0 0 c1t1d0 UNAVAIL 4 1 0 cannot open errors: Permanent errors have been detected in the following files: /tank/data/aaa /tank/data/bbb /tank/data/ccc |
Аналогичное сообщение также отображается с помощью команды fmd на системной консоли и в файле /var/adm/messages. Эти сообщения также можно отслеживать с помощью команды fmdump.
Для получения дополнительной информации об интерпретации ошибок, связанных с повреждением данных, см. Определение типа повреждения данных.
Помимо сохраняемого отслеживания ошибок в пуле, ZFS также формирует сообщения типа "syslog" в случае представляющих интерес событий. События, требующие уведомления администратора, генерируются в следующих случаях:
Изменение состояния устройства. При переводе устройства в состояние FAULTED в ZFS выводится сообщение о возможном снижении уровня отказоустойчивости пула. Аналогичное сообщение выдается при последующем переводе устройства в оперативный режим и восстановлении работоспособности пула.
Повреждение данных. При выявлении повреждения данных в ZFS выводится сообщение о времени повреждения и расположении поврежденных данных. Это сообщение появляется только при первом выявлении повреждения. При последующем доступе это сообщение отсутствует.
Отказы пула и устройств. При сбое пула или устройства демон Fault Manager уведомляет об этих ошибках с помощью сообщений в системном журнале, а также команды fmdump.
При выявлении ZFS ошибки устройства и ее автоматическом исправлении уведомление не создается. Такие ошибки не приводят к сбою, связанному с обеспечением избыточности пула или целостностью данных. Кроме того, такие ошибки обычно являются результатом проблем с драйвером, сопровождаемых рядом собственных сообщений об ошибках.