Руководство по администрированию файловых систем ZFS Solaris

Выявление проблем в ZFS

В следующих разделах описывается процедура выявления проблем в файловых системах или пулах устройств хранения данных ZFS.

Для выявления проблем в конфигурациях ZFS можно воспользоваться следующими функциями:

В большинстве случаев поиск и устранение сбоев ZFS выполняются с помощью команды zpool status. Эта команда используется для анализа различных сбоев, возникающих в системе, и выявления наиболее серьезной проблемы, а также предлагает возможные действия и предоставляет ссылку на соответствующую статью базы знаний для получения дополнительной информации. Следует отметить, что эта команда позволяет выявить только одну проблему в пуле, несмотря на возможное наличие нескольких проблем. Например, ошибки, связанные с повреждением данных, всегда подразумевают сбой одного из устройств. Замена неисправного устройства не позволяет решить проблему повреждения данных.

Кроме того, для диагностики и уведомления о сбоях пулов и устройств доступен механизм диагностики ZFS. Также обеспечивается регистрация ошибок контрольной суммы, ввода/вывода и устройств, связанных со сбоем пула или устройства. Сбои ZFS, выявленные с помощью команды fmd, отображаются на консоли и регистрируются в файле системных сообщений. В большинстве случаев сообщение fmd содержит ссылку на команду zpool status.

Ниже приведено описание базового процесса восстановления.

В этой главе описывается интерпретация выходных данных команды zpool status для диагностики типа сбоя и перехода к одному из следующих разделов, в которых приведены инструкции по устранению проблемы. Поскольку основной объем операций выполняется автоматически с помощью команды, для диагностики типа сбоя необходимо точно понимать, какие проблемы были выявлены.

Выявление проблем в пуле устройств хранения данных ZFS

Наиболее простым способом определения выявленных проблем в системе является выполнение команды zpool status -x. Эта команда выводит список пулов с явными проблемами. При отсутствии в системе неисправных пулов эта команда выводит следующее простое сообщение:


# zpool status -x
all pools are healthy

Без флага -x команда полностью отображает состояние всех пулов (или затребованного пула, если он указан в командной строке), даже если эти пулы в работоспособны.

Для получения дополнительной информации о параметрах командной строки для команды zpool status см. Запрос состояния пула устройств хранения данных ZFS.

Просмотр выходных данных команды zpool status

Полные выходные данные команды 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 содержатся следующие поля, некоторые из них отображаются только для неисправных пулов:

pool

Имя пула.

state

Текущая работоспособность пула. Эта информация относится только к способности пула обеспечить необходимый уровень репликации. Пулы, находящиеся в состоянии ONLINE, по-прежнему могут содержать неисправные устройства или поврежденные данные.

status

Описание неисправности пула. При отсутствии выявленных сбоев это поле опускается.

action

Рекомендуемое действие по устранению ошибок. Это поле представляет собой сокращенную форму для направления пользователя к одному из следующих разделов. При отсутствии выявленных сбоев это поле опускается.

see

Ссылка на статью базы знаний, содержащую подробную информацию об устранении сбоя. Статьи в Интернете обновляются чаще, чем настоящее руководство, и поэтому для большинства актуальных процедур устранения сбоев указываются ссылки именно на них. При отсутствии выявленных сбоев это поле опускается.

scrub

Определяет текущее состояние операции очистки, которое может включать дату и время выполнения последней очистки, информацию о выполняемой очистке или указание на то, что запросы на очистку не поступали.

errors

Определяет выявленные ошибки в данных или указывает на отсутствие таковых.

Информация о конфигурации пула

Поле config в выходных данных команды zpool status содержит информацию о конфигурации устройств, составляющих пул, а также их состоянии и любых ошибках, генерируемых этими устройствами. Устройства могут находиться в одном из следующих состояний: ONLINE, FAULTED, DEGRADED, UNAVAILABLE или OFFLINE. Если состояние устройства отлично от состояния ONLINE, это указывает на пониженную отказоустойчивость пула.

Во втором разделе выходных данных конфигурации отображается статистика ошибок. Эти ошибки подразделяются на три категории:

Эти ошибки могут использоваться для определения постоянного характера сбоя. Небольшое количество ошибок ввода/вывода может указывать на временный сбой, тогда как большое количество таких ошибок – на наличие постоянной проблемы, связанной с устройством. Эти ошибки не обязательно свидетельствуют о повреждении данных, интерпретируемом приложениями. Если устройство имеет конфигурацию с избыточностью, то дисковые устройства могут отображать неисправимые ошибки, тогда как на уровне зеркала или устройства 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

Помимо сохраняемого отслеживания ошибок в пуле, ZFS также формирует сообщения типа "syslog" в случае представляющих интерес событий. События, требующие уведомления администратора, генерируются в следующих случаях:

При выявлении ZFS ошибки устройства и ее автоматическом исправлении уведомление не создается. Такие ошибки не приводят к сбою, связанному с обеспечением избыточности пула или целостностью данных. Кроме того, такие ошибки обычно являются результатом проблем с драйвером, сопровождаемых рядом собственных сообщений об ошибках.