Категорії
Solaris

Что такое zpool?

zpool – это механизм управления пулами, состоящих из томов zfs. В статье будет рассмотрены особенности работы zpool и ряд интересных опций данной команды. И так, приступим.

zpool можно сравнить с linux’овыми LVM, но только он намного функциональнее. Ключевое свойство – это наличие ведение истории пула. В истории хранятся успешно выполненные команды zfs и zpool, которые изменили информацию о состоянии пула.

1) Справка по командам.

zpool предоставляет удобный справочный инструмент для определения нужных ключей/значений той или иной команды. Это так сказать краткий manual. Запуск её очень прост:

#zpool help command | help | property property-name

К примеру:

$ zpool help add
usage:
add [-f] [-n [-l]] <pool> <vdev> ...

2) Список пулов

Узнаём список доступных пулов:

# zpool list
NAME    SIZE  ALLOC   FREE  CAP  DEDUP  HEALTH  ALTROOT
rpool  15.9G  6.86G  9.02G  43%  1.00x  ONLINE  -

Есть очень интересная опция – интервал обновления информации: например, удобно наблюдать за часто меняющимся местом на пуле. Просто после слова list указывает число (в секундах).

3) Журнал команд ZFS (zpool history)

Это усовершенствование средств системного администрирования впервые введено в выпуске Solaris Express 12/06.
ZFS автоматически регистрирует успешные команды zfs и zpool, изменяющие информацию о состоянии пула. Пример:

# zpool history
History for 'newpool':
2006-10-23.08:58:22 zpool create -f newpool c1t2d0
2006-10-23.08:59:02 zpool replace -f newpool c1t2d0 c1t3d0
2006-10-23.08:59:54 zpool attach -f newpool c1t3d0 c1t4d0

Эта функция позволяет пользователю или персоналу технической поддержки Sun определить точный состав выполненных команд ZFS для поиска причин возникновения ошибки.

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

– отключение протокола невозможно;
– протокол постоянно сохраняется на диске, т.е. при перезагрузке системы данные сохраняются;
– протоколирование организовано по принципу кольцевого буфера; минимальный объем составляет 128 Кб; максимальный объем составляет 32 Мб;
– для меньших пулов максимальный размер ограничен 1% размера пула, где размер size определяется во время создания пула;
– действия по настройке протокола не требуются. Это означает, что отсутствует необходимость установки размера или изменения местоположения протокола.

Для того, что бы посмотреть расширенный режим (кто, в какой зоне) используется ключ -l:

# zpool history -l rpool
History for 'rpool':
2009-08-26.16:49:07 zpool create -f -o failmode=continue -R /a -m legacy -o cachefile=
/tmp/root/etc/zfs/zpool.cache rpool c1t1d0s0 [user root on neo:global]
2009-08-26.16:49:08 zfs set canmount=noauto rpool [user root on neo:global]
2009-08-26.16:49:08 zfs set mountpoint=/rpool rpool [user root on neo:global]
2009-08-26.16:49:09 zfs create -o mountpoint=legacy rpool/ROOT [user root on neo:global]
2009-08-26.16:49:10 zfs create -b 8192 -V 2048m rpool/swap [user root on neo:global]
2009-08-26.16:49:11 zfs create -b 131072 -V 1024m rpool/dump [user root on neo:global]
2009-08-26.16:49:14 zfs create -o canmount=noauto rpool/ROOT/zfs1009BE [user root on neo:global]
2009-08-26.16:49:15 zpool set bootfs=rpool/ROOT/zfs1009BE rpool [user root on neo:global]
2009-08-26.16:49:15 zfs set mountpoint=/ rpool/ROOT/zfs1009BE [user root on neo:global]
2009-08-26.16:49:16 zfs set canmount=on rpool [user root on neo:global]
2009-08-26.16:49:17 zfs create -o mountpoint=/export rpool/export [user root on neo:global]
2009-08-26.16:49:18 zfs create rpool/export/home [user root on neo:global]
2009-08-28.08:17:59 zpool attach rpool c1t1d0s0 c1t0d0s0 [user root on neo:global]

Для ещё более детального вывода используйте дополнительно ключ ‘-i’.

4) Параметры пула.

Что бы получить список параметров пула используем команду zpool get. Ключевое слово all выведет все параметры пула:

zpool get "all" rpool
NAME   PROPERTY       VALUE               SOURCE
rpool  size           15.9G               -
rpool  capacity       43%                 -
rpool  altroot        -                   default
rpool  health         ONLINE              -
rpool  guid           439004504488420144  -
rpool  version        33                  default
rpool  bootfs         rpool/ROOT/solaris  local
rpool  delegation     on                  default
rpool  autoreplace    off                 default
rpool  cachefile      -                   default
rpool  failmode       wait                default
rpool  listsnapshots  off                 default
rpool  autoexpand     off                 default
rpool  dedupditto     0                   default
rpool  dedupratio     1.00x               -
rpool  free           9.02G               -
rpool  allocated      6.86G               -
rpool  readonly       off                 -

Так же можно получить значение только нужной опции, указав вместо all нужный параметр.

Ниже приводится описание опций

Имя свойства Тип Значение по умолчанию Описание
allocated Число нет Доступное только для чтения значение, которое показывает доступный объем занятого места в пуле.На это свойство можно также ссылаться с помощью сокращенного имени столбца ALLOC.
altroot Строка off Указывает альтернативный корневой каталог. Если указан, этот каталог добавляется к началу любых точек монтирования в пуле. Это свойство можно использовать при проверке неизвестного пула, если нельзя доверять точкам монтирования, или в альтернативной среде загрузки, где типовые пути не являются действительными.
autoexpand Логическое значение off Указывает на то, должен ли пул автоматически увечиться в размере при увеличении размеров устройств(LUN)
autoreplace Логическое значение off Управляет автоматической заменой устройств. Если свойство отключено, замена устройства должна инициироваться администратором с помощью команды zpool replace. Если свойство включено, все новые устройства, обнаруженные в том же физическом расположении, что и устройство, ранее принадлежавшее пулу, автоматически форматируются и заменяются. Настройка по умолчанию – off. На это свойство можно также ссылаться с помощью сокращенного имени столбца replace.
bootfs Логическое значение нет Определяет загружаемый набор данных по умолчанию для корневого пула. Предполагается, что это свойство указывается в основном программами установки и обновления.
cachefile Строка нет Определяет положение файла кэша конфигурации пула
CAPACITY Число нет Доступное только для чтения значение, которое показывает долю используемого пространства пула.На это свойство можно также ссылаться с помощью сокращенного имени столбца cap.
delegation Логическое значение on Указывает, могут ли непривилегированному пользователю предоставляться разрешения на доступ, определенные для набора данных. Для получения дополнительных сведений см. Глава 9Делегированное администрирование ZFS.
dedupditto Число 0 Пороговое значение числа копий снимков zfs
dedupratio Число 0 Кофициент сжатия
failmode Строка wait Управляет поведением системы в случае катастрофического сбоя пула. Это условие обычно возникает в результате потери подключения к устройству хранилища данных или сбоя всех устройств в пуле. Поведение в этом случае определяется одним из следующих значений.

  • wait – блокирует весь доступ на ввод-вывод до восстановления подключения устройства и сброса ошибок с помощью команды zpool clear. Это поведение по умолчанию.
  • continue – возвращает EIO во все новые запросы ввода/вывода, но позволяет чтение всех остающихся работоспособных устройств. Любые запросы на операции записи, которые еще не записаны на диск, будут блокированы. После переподключения или замены устройства необходимо сбросить ошибки с помощью команды zpool clear.
  • panic – выводит на консоль сообщение и выполняет аварийный дамп системы.
free Число Количество свободного места на пуле
guid Строка нет Доступное только для чтения свойство, которое определяет уникальный идентификатор пула.
HEALTH Строка нет Доступное только для чтения свойство, которое определяет текущую работоспособность пула с помощью значений ONLINE, DEGRADED, FAULTED, OFFLINE, REMOVED или UNAVAIL..
listsnapshots Строка off Определяет, должна ли ассоциированная с данным пулом информация снимка отображаться с помощью команды zfs list. Если это свойство отключено, для вывода данных о снимках можно воспользоваться командой zfs list -t snapshot. Значением по умолчанию является on.
size Число нет Доступное только для чтения свойство, которое определяет общий размер пула устройств хранения данных.
used Число нет Доступное только для чтения свойство, которое показывает объем хранилища, используемый пулом.
version Число нет Определяет текущую версию пула на диске. Это значение может увеличиваться, но не может уменьшаться. Лучшим средством обновления пула является команда zpool upgrade, хотя это свойство можно использовать, если для совместимости с предыдущими версиями требуется конкретная версия пула. Значением этого свойства может быть любое число от 1 до текущей версии, которую возвращает команда zpool upgrade - v. Значение current представляет псевдоним для последней поддерживаемой версии.

5) Состояние пула.

Команда zpool status покажет состояние всех пулов в системе, а так же состояние дисков, входящих в каждый пул.

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

ONLINE
Устройство находится в нормальном рабочем состоянии. Несмотря на возможность возникновения некоторых временных ошибок, устройство исправно.
DEGRADED
Произошел сбой виртуального устройства, однако оно по-прежнему функционирует. Это состояние является наиболее распространенным при потере связи между зеркалом или устройством RAID-Z и одним или несколькими составными устройствами. Отказоустойчивость пула может быть подвергнута риску, т. к. следующий сбой в каком-либо другом устройстве может оказаться неисправимым.
FAULTED
Виртуальное устройство полностью недоступно. Это состояние обычно указывает на полный сбой устройства, в результате которого ZFS не может обмениваться данными с этим устройством. Если виртуальное устройство верхнего уровня находится в этом состоянии, то весь пул становится недоступным.
OFFLINE
Виртуальное устройство было явно переведено администратором в автономный режим.
UNAVAILABLE
Доступ к устройству или виртуальному устройству невозможен. В некоторых случаях пулы с устройствами в состоянии UNAVAILABLE отображаются в режиме DEGRADED. Если виртуальное устройство верхнего уровня недоступно, то также недоступны все элементы пула.
REMOVED
Устройство было физически удалено во время работы системы. Обнаружение удаления устройств является аппаратной функцией и может не поддерживаться на некоторых платформах.

Если требуется узнать только состояние пула, можно использовать короткий вывод:

$ zpool status -x
all pools are healthy

6) Проверка пула.

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

Команда zpool scrub проверяет пул на целостность, то есть читает каждый занятый блок пула, считает его контрольную сумму и сравнивает с записанной на диске. Для реплицируемых устройств (mirror, raidz) производится автоматическое восстановление данных

Ограничения.

– в конкретный момент времени может выполняться только одна операция активной очистки в пуле (поскольку это низкоуровневые операции I\O).

В 99% случаях выполнение команды scrub не требуется.

Пример.

# zpool scrub rpool
# zpool status
  pool: rpool
 state: ONLINE
  scan: scrub in progress since Sat Dec 24 00:18:13 2011
    2.22M scanned out of 6.86G at 378K/s, 5h16m to go
    0 repaired, 0.03% done
config:

        NAME      STATE     READ WRITE CKSUM
        rpool     ONLINE       0     0     0
          c3d0s0  ONLINE       0     0     0

errors: No known data errors

Остановить проверку можно так:

#zpool scrub -s rpool

7) Очистка ошибок

Если на устройстве раньше присутствовали ошибки, то да данная команда убирёт флаг наличия ошибок с пула и даст его инициализировать

# zpool clear %pool_name%

8) Мониторинг производительности

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

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

FREE CAPACITY
Объем пространства, доступного в пуле или устройстве. Как и в статистике по показателю alloc, этот объем незначительно отличается от объема пространства, доступного для наборов данных.
READ OPERATIONS
Количество операций чтения для пула или устройства, включая запросы метаданных.
WRITE OPERATIONS
Количество операций записи для пула или устройства.
READ BANDWIDTH
Пропускная способность для всех операций чтения (включая метаданные), выраженная в единицах в секунду.
WRITE BANDWIDTH
Пропускная способность для всех операций записи, выраженная в единицах в секунду.

Пример

# 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

Для просмотра статистики отдельно по виртуальным устройствами, используйте ключ ‘-v’.

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

  • Во-первых, использование пространства отображается только для виртуальных устройств верхнего уровня. Способ распределения пространства между зеркальными виртуальными устройствами и виртуальными устройствами RAID-Z зависит от реализации и не может быть выражен как единый показатель.
  • Во-вторых, показатели не всегда должны суммироваться так, как это можно было бы предположить. В частности, число операций для устройств RAID-Z и зеркальных устройств различается. Это различие особенно заметно после создания пула, поскольку значительное количество операций ввода/вывода выполняется непосредственно на дисках в рамках процедуры создания пула, и эти операции не учитываются на уровне зеркала. Через некоторое время эти показатели постепенно выравниваются, несмотря на то, что неисправные, не отвечающие или автономные (в автономном режиме) устройства могут также повлиять на этот баланс.

9) Разделение пула

Команда zpool split – позволяет разделить зазеркалированный пул на две половинки — полноценные пулы. Доступна, начиная с ZFSv28. Данная возможность например позволяет упростить клонирование данных, когда к зеркалу добавляются несколько дисков, производится синхронизация и диски исключаются из пула, после чего диски содержат полную копию данных и могут быть использованы для загрузки аналогичных серверов. С использованием zpool split можно легко исключить диск из пула и затем создать на его основе новый пул;

10) Обновление пула ZFS

Для обновления пулов до более новой версии, что позволит воспользоваться всеми преимуществами новейших функций, используется команда zpool upgrade. Кроме того, измененная команда zpool status может проинформировать пользователя об использовании в пулах старых версий.

Пример.

# zpool upgrade -v
This system is currently running ZFS pool version 33.

The following versions are supported:

VER  DESCRIPTION
---  --------------------------------------------------------
 1   Initial ZFS version
 2   Ditto blocks (replicated metadata)
 3   Hot spares and double parity RAID-Z
 4   zpool history
 5   Compression using the gzip algorithm
 6   bootfs pool property
 7   Separate intent log devices
 8   Delegated administration
 9   refquota and refreservation properties
 10  Cache devices
 11  Improved scrub performance
 12  Snapshot properties
 13  snapused property
 14  passthrough-x aclinherit
 15  user/group space accounting
 16  stmf property support
 17  Triple-parity RAID-Z
 18  Snapshot user holds
 19  Log device removal
 20  Compression using zle (zero-length encoding)
 21  Deduplication
 22  Received properties
 23  Slim ZIL
 24  System attributes
 25  Improved scrub stats
 26  Improved snapshot deletion performance
 27  Improved snapshot creation performance
 28  Multiple vdev replacements
 29  RAID-Z/mirror hybrid allocator
 30  Encryption
 31  Improved 'zfs list' performance
 32  One MB blocksize
 33  Improved share support

For more information on a particular version, including supported releases,
see the ZFS Administration Guide.

11) Специальные устройства в пулах.

– устройство кеша: используется для кэширования данных пула.

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

Ограничения:

  • Зеркалирование устройств кэширования невозможно; кроме того, они не могут быть частью конфигурации RAID-Z
  • Объем содержимого устройства кэширования является непостоянным, как и в случае других системных кэшей.

Пример.

# zpool create tank mirror c2t0d0 c2t1d0 c2t3d0 cache c2t5d0 c2t8d0
# zpool status tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c2t0d0  ONLINE       0     0     0
            c2t1d0  ONLINE       0     0     0
            c2t3d0  ONLINE       0     0     0
        cache
          c2t5d0    ONLINE       0     0     0
          c2t8d0    ONLINE       0     0     0

– устройства протоколирования: для оптимальной производительности пула рекомендуется выносить логгирование на отдельные диски

Ограничения:

  • Устройства протоколирования могут использоваться без репликации или с зеркальным отражением, но RAID-Z для этих устройств не поддерживается.
  • Устройства протоколирования можно добавлять, заменять, подключать, отключать, а также импортировать и экспортировать как часть более крупного пула устройств хранения данных. В настоящее время устройства протоколирования нельзя удалять.
  • Минимальный размер устройства протоколирования совпадает с минимальным размером каждого устройства в пуле и составляет 64 МБ. Объем активных данных, которые могут храниться на устройстве протоколирования, относительно невелик. Блоки данных протоколирования освобождаются после выполнения транзакции протоколов (системный вызов).
  • Максимальный размер устройства протоколирования должен составлять примерно 1/2 размера физической памяти, поскольку это максимальный объем потенциальных активных данных, которые могут храниться на устройстве. Например, если в системе имеется 16 ГБ физической памяти, максимальный размер устройства протоколирования должен составлять 8 ГБ.

Пример.

# zpool create datap mirror c1t1d0 c1t2d0 mirror c1t3d0 c1t4d0 log mirror c1t5d0 c1t8d0
# zpool status
  pool: datap
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        datap       ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c1t3d0  ONLINE       0     0     0
            c1t4d0  ONLINE       0     0     0
        logs        ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c1t5d0  ONLINE       0     0     0
            c1t8d0  ONLINE       0     0     0

errors: No known data errors

2 коментарі “Что такое zpool?”

Приветствую.)
Возникла такая ситуация:
bash-3.00# zpool status -v
pool: rpool
state: DEGRADED
status: One or more devices has experienced an error resulting in data
corruption. Applications may be affected.
action: Restore the file in question if possible. Otherwise restore the
entire pool from backup.
see: http://www.sun.com/msg/ZFS-8000-8A
scrub: none requested
config:

NAME STATE READ WRITE CKSUM
rpool DEGRADED 0 0 0
c0d0s0 DEGRADED 0 0 0 too many errors

errors: Permanent errors have been detected in the following files:

rpool/export:
rpool/export:

Возможно ли как-то узнать дату, с которой поменялся статус пула? (Например, с online на degraded). И можно ли узнать, что за файлы с ошибками скрываются под записями:
rpool/export:
rpool/export:

Посмотреть системные логи или через zdb как-то. Других вариантов не знаю.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff