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

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

Команда zpool list обеспечивает ряд способов для запроса информации о состоянии пула. Как правило, доступная информация подразделяется на три категории: базовая информация об использовании, статистика ввода/вывода и статус работоспособности. В этом разделе рассматриваются все три типа информации о пулах устройств хранения данных.

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

Для просмотра базовой информации о пулах используется команда zpool list.

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

При отсутствии указанных аргументов команда отображает все поля для всех пулов в системе. Пример:


# zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
tank                   80.0G   22.3G   47.7G    28%  ONLINE     -
dozer                   1.2T    384G    816G    32%  ONLINE     -

В этих выходных данных содержится следующая информация:

NAME

Имя пула.

SIZE

Общая емкость пула, равная сумме емкостей всех виртуальных устройств верхнего уровня.

USED

Объем пространства, распределяемый между всеми наборами данных и внутренними метаданными. Следует отметить, что этот объем отличается от объема пространства на уровне файловой системы.

Для получения дополнительной информации об определении доступного пространства файловой системы см. Учет пространства ZFS.

AVAILABLE

Объем нераспределенного пространства в пуле.

CAPACITY (CAP)

Объем используемого пространства, выраженный как процент от общего пространства.

HEALTH

Текущий статус работоспособности пула.

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

ALTROOT

Альтернативный корень пула, если таковой имеется.

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

Также можно получить статистику по определенному пулу, указав имя пула. Пример:


# zpool list tank
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
tank                   80.0G   22.3G   47.7G    28%  ONLINE     -

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

Для запроса определенной статистики используется параметр -o. Этот параметр позволяет выполнять пользовательские отчеты или быстро получить требуемые данные. Например, для вывода списка имен и емкостей каждого пула используется следующий синтаксис:


# zpool list -o name,size
NAME                    SIZE
tank                   80.0G
dozer                   1.2T

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

Использование вывода данных о пуле устройств хранения ZFS в сценариях

Стандартные выходные данные команды zpool list в первую очередь удобочитаемы, однако их сложно использовать в сценариях интерпретатора команд. Для упрощения использования этой команды в сценариях имеется параметр -H для подавления вывода заголовков столбцов и разделения поля символами табуляции вместо пробелов. Например, для запроса простого списка всех имен пулов в системе можно ввести следующую команду:


# zpool list -Ho name
tank
dozer

Ниже приведен еще один пример:


# zpool list -H -o name,size
tank   80.0G
dozer  1.2T

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

ZFS автоматически регистрирует успешные команды zfs и zpool, изменяющие информацию о состоянии пула. Для просмотра этой информации используется команда zpool history.

Например, представленный ниже синтаксис отображает выходные данные команды для корневого пула.


# zpool history
History for 'rpool':
2009-05-07.13:51:00 zpool create -f -o failmode=continue -R /a -m legacy -o cachefile=
/tmp/root/etc/zfs/zpool.cache rpool c1t0d0s0
2009-05-07.13:51:01 zfs set canmount=noauto rpool
2009-05-07.13:51:02 zfs set mountpoint=/rpool rpool
2009-05-07.13:51:02 zfs create -o mountpoint=legacy rpool/ROOT
2009-05-07.13:51:03 zfs create -b 8192 -V 2048m rpool/swap
2009-05-07.13:51:04 zfs create -b 131072 -V 1024m rpool/dump
2009-05-07.13:51:09 zfs create -o canmount=noauto rpool/ROOT/snv_114
2009-05-07.13:51:10 zpool set bootfs=rpool/ROOT/snv_114 rpool
2009-05-07.13:51:10 zfs set mountpoint=/ rpool/ROOT/snv_114
2009-05-07.13:51:11 zfs set canmount=on rpool
2009-05-07.13:51:12 zfs create -o mountpoint=/export rpool/export
2009-05-07.13:51:12 zfs create rpool/export/home

Подобные выходные данные могут использоваться в системе для идентификации набора exact команд ZFS, который был выполнен для устранения сбоев при возникновении ошибки.

Протокол журнала имеет следующие характеристики:

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


# zpool history mypool
History for 'mypool':
2009-06-02.10:56:54 zpool create mypool mirror c0t4d0 c0t5d0
2009-06-02.10:57:31 zpool add mypool spare c0t6d0
2009-06-02.10:57:54 zpool offline mypool c0t5d0
2009-06-02.10:58:02 zpool online mypool c0t5d0

Параметр -l позволяет отображать длинный формат с указанием имени пользователя, имени узла и зоны, в которой выполняется операция. Пример:


# zpool history -l mypool
History for 'mypool':
2009-06-02.10:56:54 zpool create mypool mirror c0t4d0 c0t5d0 [user root on neo:global]
2009-06-02.10:57:31 zpool add mypool spare c0t6d0 [user root on neo:global]
2009-06-02.10:57:54 zpool offline mypool c0t5d0 [user root on neo:global]
2009-06-02.10:58:02 zpool online mypool c0t5d0 [user root on neo:global]

Параметр -i позволяет отображать сведения о внутренних событиях, которые можно использовать для диагностики. Пример:


# zpool history -i mypool
History for 'mypool':
2009-06-02.10:56:54 zpool create mypool mirror c0t4d0 c0t5d0
2009-06-02.10:57:31 zpool add mypool spare c0t6d0
2009-06-02.10:57:54 zpool offline mypool c0t5d0
2009-06-02.10:58:02 zpool online mypool c0t5d0
2009-06-02.11:02:20 [internal create txg:23] dataset = 24
2009-06-02.11:02:20 [internal property set txg:24] mountpoint=/data dataset = 24
2009-06-02.11:02:20 zfs create -o mountpoint=/data mypool/data
2009-06-02.11:02:34 [internal create txg:26] dataset = 30
2009-06-02.11:02:34 zfs create mypool/data/datab

Просмотр статистики ввода/вывода для пула устройств хранения данных ZFS

Для запроса статистики ввода/вывода по пулу или определенным виртуальным устройствам используется команда zpool iostat. Подобно команде iostat, она выводит статический снимок всех операций ввода/вывода, выполненных вплоть до настоящего момента, а также актуальную статистику по каждому указанному интервалу. Отображается следующая статистика:

USED CAPACITY

Объем данных, сохраненных в настоящее время в пуле или устройстве. Этот показатель незначительно отличается от объема пространства, доступного для фактических файловых систем, за счет внутренних особенностей реализации.

Для получения дополнительной информации о различиях между пространством пула и пространством набора данных см. Учет пространства ZFS.

AVAILABLE CAPACITY

Объем пространства, доступного в пуле или устройстве. Как и в статистике по показателю used, этот объем незначительно отличается от объема пространства, доступного для наборов данных.

READ OPERATIONS

Количество операций чтения для пула или устройства, включая запросы метаданных.

WRITE OPERATIONS

Количество операций записи для пула или устройства.

READ BANDWIDTH

Пропускная способность для всех операций чтения (включая метаданные), выраженная в единицах в секунду.

WRITE BANDWIDTH

Пропускная способность для всех операций записи, выраженная в единицах в секунду.

Вывод статистики по всему пулу

Если параметры не указаны, команда zpool iostat выводит полную статистику с момента начальной загрузки для всех пулов в системе. Пример:


# zpool iostat
               capacity     operations    bandwidth
pool         used  avail   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
tank         100G  20.0G   1.2M   102K   1.2M  3.45K
dozer       12.3G  67.7G   132K  15.2K  32.1K  1.20K

Поскольку эта статистика суммируется с момента начальной загрузки, при низком уровне активности пула полоса пропускания может быть определена как относительно свободная. Указание конкретного интервала позволяет получить более точные данные по текущему использованию полосы пропускания. Пример:


# zpool iostat tank 2
               capacity     operations    bandwidth
pool         used  avail   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
tank         100G  20.0G   1.2M   102K   1.2M  3.45K
tank         100G  20.0G    134      0  1.34K      0
tank         100G  20.0G     94    342  1.06K   4.1M

В этом примере отображается статистика использования только для пула tank, обновляемая каждые две секунды до нажатия Ctrl+C. Также можно указать дополнительный параметр count, завершающий выполнение команды после определенного количества итераций. Например, команда zpool iostat 2 3 выводит сводку через каждые две секунды в рамках трех итераций, в общей сложности в течение шести секунд. При наличии только одного пула статистика отображается в последовательных строках. При наличии нескольких пулов каждая итерация визуально выделяется дополнительной пунктирной линией.

Вывод статистики по виртуальному устройству

Помимо статистики ввода/вывода по всему пулу, команда zpool iostat позволяет просмотреть статистику по определенным виртуальным устройствам. Эта команда может использоваться для выявления медленно работающих устройств или просто для контроля данных ввода/вывода, генерируемых ZFS. Для запроса полной структуры виртуального устройства с полной статистикой ввода/вывода используется команда zpool iostat -v. Пример:


# zpool iostat -v
               capacity     operations    bandwidth
tank         used  avail   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
mirror      20.4G  59.6G      0     22      0  6.00K
  c1t0d0        -      -      1    295  11.2K   148K
  c1t1d0        -      -      1    299  11.2K   148K
----------  -----  -----  -----  -----  -----  -----
total       24.5K   149M      0     22      0  6.00K

При просмотре статистики ввода/вывода по отдельным виртуальным устройствам обратите внимание на две важных особенности:

Тот же набор параметров (интервал и количество) используется при исследовании статистики виртуальных устройств.

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

В ZFS предусмотрены методы проверки работоспособности устройства и пула. Работоспособность пула определяется на основе состояния всех его устройств. Эта информация о состоянии отображается с помощью команды zpool status. Кроме того, для выявления потенциальных сбоев пула и устройств используется команда fmd, и они отображаются в системной консоли и в файле /var/adm/messages. В этом разделе описывается процедура определения работоспособности пула и устройства. Способы устранения сбоев или восстановления неработоспособных пулов здесь не рассматриваются. Дополнительно об устранении неполадок и восстановлении данных см. Глава 11Поиск и устранение сбоев и восстановление данных в ZFS.

Каждое устройство может находиться в одном из следующих состояний:

ONLINE

Устройство находится в нормальном рабочем состоянии. Несмотря на возможность возникновения некоторых временных ошибок, устройство исправно.

DEGRADED

Произошел сбой виртуального устройства, однако оно по-прежнему функционирует. Это состояние является наиболее распространенным при потере связи между зеркалом или устройством RAID-Z и одним или несколькими составными устройствами. Отказоустойчивость пула может быть подвергнута риску, т. к. следующий сбой в каком-либо другом устройстве может оказаться неисправимым.

FAULTED

Виртуальное устройство полностью недоступно. Это состояние обычно указывает на полный сбой устройства, в результате которого ZFS не может обмениваться данными с этим устройством. Если виртуальное устройство верхнего уровня находится в этом состоянии, то весь пул становится недоступным.

OFFLINE

Виртуальное устройство было явно переведено администратором в автономный режим.

UNAVAILABLE

Доступ к устройству или виртуальному устройству невозможен. В некоторых случаях пулы с устройствами в состоянии UNAVAILABLE отображаются в режиме DEGRADED. Если виртуальное устройство верхнего уровня недоступно, то также недоступны все элементы пула.

REMOVED

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

Работоспособность пула определяется на основе работоспособности всех виртуальных устройств верхнего уровня. Если все виртуальные устройства находятся в состоянии 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.