При подготовке стенда к мастер-классу "Администрирование AIX" я столкнулся со следующей проблемой: iSCSI-диски, которые я нарезал для лабовых LPAR ни в какую не хотели работать на втором VIOS и давали ошибку:
0514-047 Cannot access a device
А это значит, что протестировать Live Partition Mobility (технологию миграции LPAR с одного хоста на другой) не получится.
Рекомендации состоят в том, чтобы отключить SCSI-резервации - делается это выставлением аттрибута reserve_policy у соответствующих устройств. И это работает для FC-устройств, а вот у iSCSI-устройств такого атрибута увы нет. Хорошую подсказку дает ссылка: Updating ODM stanzas for Storwize V7000 system iSCSI devices
В моем стенде используется тоже массив 7000-й серии но от Sun Microsystems, соответственно патчить систему - не вариант. Это значит, чтобы этот параметр появился, придется лезть в ODM - бинарный "реестр" AIX (а VIOS по сути основан на AIX).
Для начала нам надо перейти в полноценный AIX shell, для этого в VIOS предусмотрена следующая команда:
$ oem_setup_env
Посмотрим, какой класс и тип имеют устройства hdisk, соответствующие iSCSI-томам:
# odmget -q 'name like hdisk* and parent = iscsi0' CuDv
CuDv:
name = "hdisk7"
status = 1
chgstatus = 2
ddins = "scsidisk"
location = ""
parent = "iscsi0"
connwhere = "6"
PdDvLn = "disk/iscsi/osdisk"
Соответственно, класс данного устройства - disk, под-класс - iscsi, а тип - osdisk.
Команда lsdev рассказывает еще несколько типов iSCSI-дисков в AIX:
# lsdev -P | grep iscsi
PCM iscsiother friend SCSI/FCP Disk Path Control Module
<cut>
disk mpioapdisk iscsi MPIO Other iSCSI Disk Drive
disk mpioosdisk iscsi MPIO Other iSCSI Disk Drive
disk nonmpiodisk iscsi iSCSI Disk Drive
disk osdisk iscsi Other iSCSI Disk Drive
disk scsd iscsi Other iSCSI Disk Drive
<cut>
И тип nonmpiodisk, к счастью, содержит нужное нам описание аттрибута:
# odmget -q 'uniquetype = disk/iscsi/nonmpiodisk' PdAt
PdAt:
uniquetype = "disk/iscsi/nonmpiodisk"
attribute = "reserve_policy"
deflt = "no_reserve"
values = "no_reserve,single_path"
width = ""
type = "R"
generic = "DU"
rep = "sl"
nls_index = 96
Я думаю, вы обратили внимание, что названия таблиц ODM состоят из четырех букв: первые две указывают на то, является ли она предопределенной при инсталляции (Pd) или индивидуальной для конкретного хоста (Cu), остальные буквы - на содержимое таблицы: Dv - описание устройств, At - их атрибуты, VPD - Vital Product Data, и т. д.
Создадим файл /tmp/pdat, в который скопируем описание атрибута reserve_policy, поменяв поле uniquetype. Значение по-умолчанию no_reserve - это то, что нам нужно.
PdAt:
uniquetype = "disk/iscsi/osdisk"
attribute = "reserve_policy"
deflt = "no_reserve"
values = "no_reserve,single_path"
width = ""
type = "R"
generic = "DU"
rep = "sl"
nls_index = 96
Добавим данное описание в ODM:
# odmadd /tmp/pdat
Чтобы не прописывать отдельно значения атрибутов в ODM, пересоздадим устройства (а методы cfgmgr сами склонируют нужный нам атрибут):
# for I in 2 3 4 5 6 7 8 9 10; do rmdev -l hdisk$I -d; done
# cfgmgr
После этого проблема решилась, а Live Partition Mobility заработал.