null

Администрирование SCSI-резерваций в окружении Sun/Oracle Cluster 3.X

Как известно, механизм SCSI-резерваций (SCSI-2 Reservations, SCSI-3 Persistent Reservations, Persistent Group Reservations Emulation (PGRE)) используется в Sun/Oracle Cluster 3.X для организации работы кворума и резервированием общих для узлов кластера дисковых устройств или томов ("fencing"). В рамках эксплуатации кластера у администраторов периодически возникает необходимость управления этим механизмом и здесь возникает множество вопросов,  ответы на которые не найти  в официальной  документации.  Привожу небольшую "шпаргалку" которая отвечает на основные вопросы администрирования SCSI-резерваций в окружении  Sun/Oracle Cluster.

Основные способы определения типа используемых SCSI-резерваций.

Sun/Oracle Cluster 3.2/3.3 :

"Глобальное" значение :

# cluster show|grep global_fencing

выдаваемое  значение "pathcount" соответствует  SCSI-2 резервациям,   а "prefer3"- SCSI-3.

"Индивидуальное" значение для каждого устройства :

# cldev show <did device> |grep default_fencing

где <did device> - DID устройство, например d4  (соответствие DID и логических  устройств Solaris можно при помощи команды  cldev list -v )
 выдаваемое значение "global" соответствует "глобальной" настройке в кластере (см.выше)
"pathcount" соответствует SCSI-2 резервациям, "scsi3" - SCSI-3

Sun Cluster 3.0/3.1

# scconf -pvv |grep access
где значения  "scsi2" и "scsi3" говорят сами за себя.

кроме того, тип SCSI-резерваций хранится в конфигурационной "базе" CCR (Cluster Configuration Repository), а именно в  файле  infrastructure  (в случае с Sun/Oracle Cluster 3.2/3.3 файл находится в /etc/cluster/ccr/global/, а для Sun Cluster 3.0/3.1в  /etc/cluster/ccr/ ).
Например :
# cat /etc/cluster/ccr/global/infrastructure |grep access_mode
cluster.quorum_devices.1.properties.access_mode scsi2

 
Просмотр и удаление  SCSI-2 и PGRE резерваций.

Для управления любым типом  SCSI-резерваций в окружении Sun/Oracle Cluster 3.X предусмотрена утилита /usr/cluster/lib/sc/scsi (пакет SUNWscu).

Для того, чтобы определить разрешен ли доступ какого-либо  узла  кластера к конкретному дисковому устройству, можно воспользоваться подкомандой status утилиты scsi.

Например :
 #  /usr/cluster/lib/sc/scsi -c status -d /dev/did/rdsk/d4s2
status...1

Выдаваемое значение "1" означает  что данный узел не имеет доступа к устройству, т.е. устройство зарезервировано другим узлом, а "0" - доступ разрешен.

Так как механизм SCSI-2 резерваций не предусматривает хранение ключей на устройстве при помощи SCSI-команд,  возможности просмотра значений этих ключей при помощи  утилиты scsi невозможно.  Как известно, для хранения ключей в данном случае используется программный механизм Persistent Group Reservations Emulation (PGRE)). Просмотр "эмулируемых"  резервации и ключей возможно при помощи утилиты   /usr/cluster/lib/sc/pgre.

Просмотр PGRE-резерваций (пример) :
# /usr/cluster/lib/sc/pgre -c pgre_inresv -d /dev/did/rdsk/d4s2
resv[0]: key=0x4e03255200000002.

Просмотр PGRE-ключей (пример):

#  /usr/cluster/lib/sc/pgre -c pgre_inkeys -d /dev/did/rdsk/d4s2
key[0]=0x4e03255200000001.
key[1]=0x4e03255200000002.

 
Удаление стандартных SCSI-2 резерваций выполняется при помощи подкоманды  "release" утилиты scsi, запущенной на узле, владеющим резервацией. При этом необходимо  выполнить команду  /usr/cluster/lib/sc/scsi -c disfailfast -d /dev/did/rdsk/<did device>s2 перед удалением каких-либо резервацией, для того, чтобы обезопасить систему от нежелательных паник.

Например :

# /usr/cluster/lib/sc/reserve -c disfailfast -z /dev/did/rdsk/d4s2
# /usr/cluster/lib/sc/reserve -c release -z /dev/did/rdsk/d4s2

Возврат последней команды в виде "do_scsi2_release 0" означает достигнутый успех при удалении резервации.

Удаление PGRE ключей выполняется при помощи подкоманды "pgre_scrub" утилиты  /usr/cluster/lib/sc/pgre

Например :

# /usr/cluster/lib/sc/pgre -c pgre_scrub -d /dev/did/rdsk/d4s2

Scrubbing complete. Use '/usr/cluster/lib/sc/pgre -c pgre_inkeys -d /dev/did/rdsk/d4s2'

  to verify success.

Просмотр и удаление SCSI-3 резерваций.

Просмотр SCSI-3 резерваций и их ключей выполняется при помощи подкоманд "inresv" и "inkeys" утилиты scsi

Просмотр SCSI-3 резерваций (пример) :

  # /usr/cluster/lib/sc/scsi -c inresv -d /dev/did/rdsk/d4s2
  Reservations(1):

  0x4e03255200000001

  type ---> 5

Просмотр ключей SCSI-3 резерваций (пример) :

  # /usr/cluster/lib/sc/scsi -c inkeys -d /dev/did/rdsk/d4s2
  Reservation keys(3):

  0x4e03255200000003

  0x4e03255200000001

  0x4e03255200000002

При этом вывод команд  вида :

"
#  /usr/cluster/lib/sc/scsi -c inkeys -d /dev/did/rdsk/d4s2
Reservation keys(0):

# /usr/cluster/lib/sc/scsi -c inresv -d /dev/did/rdsk/d4s2
Reservations(0):
"
или

"
#  /usr/cluster/lib/sc/scsi -c inkeys -d /dev/did/rdsk/d4s2
do_scsi3_inkeys failed
Reservation keys(0):

# /usr/cluster/lib/sc/scsi -c inresv -d /dev/did/rdsk/d4s2
do_scsi3_inkeys failed
do_scsi-3_inresv failed
"
означает, что тип резерваций не  SCSI-3 а SCSI-2.


Удаление и SCSI-3 резерваций и ключей выполняется при помощи подкоманды  "scrub" утилиты scsi. При этом запуск  можно выполнять, в отличие от SCSI-2, на любом узле, даже если этот хост не "владеет" резервацией и не входит в данный кластер. Выполнение  команды  /usr/cluster/lib/sc/scsi -c disfailfast -d /dev/did/rdsk/<did device>s2 перед удалением  резервацией требуется также,  как в случае с SCSI-2.

Например :

  # /usr/cluster/lib/sc/scsi -c scrub -d /dev/did/rdsk/d4s2

  Reservation keys currently on disk:

 0x4e03255200000003

  0x4e03255200000001

  0x4e03255200000002

  Attempting to remove all keys from the disk...
  Scrubbing complete, use '/usr/cluster/lib/sc/scsi -c inkeys -d /dev/did/rdsk/d4s2' to verify success

Проверяем, что  ключи действительно удалились :

  # /usr/cluster/lib/sc/scsi -c inkeys -d /dev/did/rdsk/d4s2

  Reservation keys(0):

Обращаем внимание, что резервация также удаляется :

  # /usr/cluster/lib/sc/scsi -c inresv -d /dev/did/rdsk/d4s2

  Reservations(0):


Хотелось бы также обратить внимание, что в дополнение к приведенным способам работы с SCSI-резервациями со стороны Sun/Oracle Cluster, существует возможность просмотра и удаления резерваций со стороны контроллеров некоторых массивов.

 

Коротко о себе:

Работаю в компании TUNE-IT в качестве инженера и преподавателя.

В сферу профессиональных интересов входит все,  что связано с "большими" и не очень серверами и СХД от Sun Microsystems/Oracle и кластерами на их основе, но по долгу службы занимаюсь чаще всего их диагностикой и ремонтом... 

Делюсь опытом и  наработанными навыками в рамках курсов по  соответствующим направлениям.