Команда zpool list обеспечивает ряд способов для запроса информации о состоянии пула. Как правило, доступная информация подразделяется на три категории: базовая информация об использовании, статистика ввода/вывода и статус работоспособности. В этом разделе рассматриваются все три типа информации о пулах устройств хранения данных.
Просмотр базовой информации пула устройств хранения данных ZFS
Просмотр статистики ввода/вывода для пула устройств хранения данных ZFS
Определение статуса работоспособности пулов устройств хранения данных 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 - |
В этих выходных данных содержится следующая информация:
Имя пула.
Общая емкость пула, равная сумме емкостей всех виртуальных устройств верхнего уровня.
Объем пространства, распределяемый между всеми наборами данных и внутренними метаданными. Следует отметить, что этот объем отличается от объема пространства на уровне файловой системы.
Для получения дополнительной информации об определении доступного пространства файловой системы см. Учет пространства ZFS.
Объем нераспределенного пространства в пуле.
Объем используемого пространства, выраженный как процент от общего пространства.
Текущий статус работоспособности пула.
Определение статуса работоспособности пулов устройств хранения данных ZFS.
Альтернативный корень пула, если таковой имеется.
Для получения дополнительной информации о пулах с альтернативным корнем см. Использование пулов 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 |
Имена столбцов соответствуют свойствам, перечисленным в разделе Вывод информации обо всех пулах устройств хранения данных.
Стандартные выходные данные команды zpool list в первую очередь удобочитаемы, однако их сложно использовать в сценариях интерпретатора команд. Для упрощения использования этой команды в сценариях имеется параметр -H для подавления вывода заголовков столбцов и разделения поля символами табуляции вместо пробелов. Например, для запроса простого списка всех имен пулов в системе можно ввести следующую команду:
# zpool list -Ho name tank dozer |
Ниже приведен еще один пример:
# zpool list -H -o name,size tank 80.0G dozer 1.2T |
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, который был выполнен для устранения сбоев при возникновении ошибки.
Протокол журнала имеет следующие характеристики:
отключение протокола журнала невозможно;
протокол журнала постоянно сохраняется на диске, т.е. при перезагрузке системы данные не утрачиваются;
протокол журнала организован по принципу кольцевого буфера; минимальный объем – 128 Кб; максимальный объем – 32 МБ;
для меньших пулов максимальный размер ограничен 1% размера пула, где размер size определяется во время создания пула;
отсутствует необходимость в дополнительном администрировании, т.е. задавать размер или изменять местоположение протокола журнала не требуется.
Для идентификации журнала команд определенного пула устройств хранения используется подобный синтаксис:
# 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 |
Для запроса статистики ввода/вывода по пулу или определенным виртуальным устройствам используется команда zpool iostat. Подобно команде iostat, она выводит статический снимок всех операций ввода/вывода, выполненных вплоть до настоящего момента, а также актуальную статистику по каждому указанному интервалу. Отображается следующая статистика:
Объем данных, сохраненных в настоящее время в пуле или устройстве. Этот показатель незначительно отличается от объема пространства, доступного для фактических файловых систем, за счет внутренних особенностей реализации.
Для получения дополнительной информации о различиях между пространством пула и пространством набора данных см. Учет пространства ZFS.
Объем пространства, доступного в пуле или устройстве. Как и в статистике по показателю used, этот объем незначительно отличается от объема пространства, доступного для наборов данных.
Количество операций чтения для пула или устройства, включая запросы метаданных.
Количество операций записи для пула или устройства.
Пропускная способность для всех операций чтения (включая метаданные), выраженная в единицах в секунду.
Пропускная способность для всех операций записи, выраженная в единицах в секунду.
Если параметры не указаны, команда 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 |
При просмотре статистики ввода/вывода по отдельным виртуальным устройствам обратите внимание на две важных особенности:
Во-первых, использование пространства отображается только для виртуальных устройств верхнего уровня. Способ распределения пространства между зеркальными виртуальными устройствами и виртуальными устройствами RAID-Z зависит от реализации и не может быть выражен как единый показатель.
Во-вторых, показатели не всегда должны суммироваться так, как это можно было бы предположить. В частности, число операций для устройств RAID-Z и зеркальных устройств различается. Это различие особенно заметно после создания пула, поскольку значительное количество операций ввода/вывода выполняется непосредственно на дисках в рамках процедуры создания пула, и эти операции не учитываются на уровне зеркала. Через некоторое время эти показатели постепенно выравниваются, несмотря на то, что неисправные, не отвечающие или автономные (в автономном режиме) устройства могут также повлиять на этот баланс.
Тот же набор параметров (интервал и количество) используется при исследовании статистики виртуальных устройств.
В 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.