Принудительное обновление размера LUN
1. Пояснение
В ряде случаев zVirt 4.3 не может в автоматическом режиме обновить данные о размере LUN-а в случае подключения его к диску ВМ. Для упрощения этой операции можно воспользоваться подготовленным скриптом refresh-lun.sh, который обращается к API по адресу типа https://${FQDN}:443/ovirt-engine/api/disks/${LUNID}/refreshlun
2. Запуск скрипта
Скрипт необходимо разместить на ВМ HostedEngine и запустить с указанием параметра LUNID, например:
LUNID=24def43e-1f90-4c12-aaae-f496dc02b98d bash refresh-lun.sh
В ходе выполнения скрипта будет определено доменное имя zVirt, запрошен пароль пользователя admin, а также выполнена попытка обновления при помощи первого найденного хоста. В случае успешного выполнения операции вывод консоли будет примерно следующим:
LUNID=24def43e-1f90-4c12-aaae-f496dc02b98d bash refresh-lun.sh
Укажите пароль пользователя admin:
...
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<action>
<disk href="/ovirt-engine/api/disks/24def43e-1f90-4c12-aaae-f496dc02b98d" id="24def43e-1f90-4c12-aaae-f496dc02b98d">
<actions>
<link href="/ovirt-engine/api/disks/24def43e-1f90-4c12-aaae-f496dc02b98d/reduce" rel="reduce"/>
<link href="/ovirt-engine/api/disks/24def43e-1f90-4c12-aaae-f496dc02b98d/sparsify" rel="sparsify"/>
<link href="/ovirt-engine/api/disks/24def43e-1f90-4c12-aaae-f496dc02b98d/export" rel="export"/>
<link href="/ovirt-engine/api/disks/24def43e-1f90-4c12-aaae-f496dc02b98d/copy" rel="copy"/>
<link href="/ovirt-engine/api/disks/24def43e-1f90-4c12-aaae-f496dc02b98d/move" rel="move"/>
<link href="/ovirt-engine/api/disks/24def43e-1f90-4c12-aaae-f496dc02b98d/refreshlun" rel="refreshlun"/>
</actions>
<link href="/ovirt-engine/api/disks/24def43e-1f90-4c12-aaae-f496dc02b98d/permissions" rel="permissions"/>
<link href="/ovirt-engine/api/disks/24def43e-1f90-4c12-aaae-f496dc02b98d/statistics" rel="statistics"/>
</disk>
<host id="ef1e63e0-af88-4430-bdcf-ed37c336dba4"/>
<status>complete</status>
</action>
Для определения идентификатора LUN, необходимо обратиться к меню , перейти на вкладку Прямой LUN и среди списка отображенных дисков найти нужный. Значение LUNID будет в колонке Код. |
В случае необходимости указания конкретного хоста, следует воспользоваться параметром HOSTID, например:
LUNID=24def43e-1f90-4c12-aaae-f496dc02b98d HOSTID=00521c3e-4598-4441-8bfa-784de3b409dd bash refresh-lun.sh
Укажите пароль пользователя admin:
...
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<action>
<disk href="/ovirt-engine/api/disks/24def43e-1f90-4c12-aaae-f496dc02b98d" id="24def43e-1f90-4c12-aaae-f496dc02b98d">
<actions>
<link href="/ovirt-engine/api/disks/24def43e-1f90-4c12-aaae-f496dc02b98d/reduce" rel="reduce"/>
<link href="/ovirt-engine/api/disks/24def43e-1f90-4c12-aaae-f496dc02b98d/sparsify" rel="sparsify"/>
<link href="/ovirt-engine/api/disks/24def43e-1f90-4c12-aaae-f496dc02b98d/export" rel="export"/>
<link href="/ovirt-engine/api/disks/24def43e-1f90-4c12-aaae-f496dc02b98d/copy" rel="copy"/>
<link href="/ovirt-engine/api/disks/24def43e-1f90-4c12-aaae-f496dc02b98d/move" rel="move"/>
<link href="/ovirt-engine/api/disks/24def43e-1f90-4c12-aaae-f496dc02b98d/refreshlun" rel="refreshlun"/>
</actions>
<link href="/ovirt-engine/api/disks/24def43e-1f90-4c12-aaae-f496dc02b98d/permissions" rel="permissions"/>
<link href="/ovirt-engine/api/disks/24def43e-1f90-4c12-aaae-f496dc02b98d/statistics" rel="statistics"/>
</disk>
<host id="00521c3e-4598-4441-8bfa-784de3b409dd"/>
<status>complete</status>
</action>
3. Возможные проблемы
-
В случае указания неверного LUNID будет выведено сообщение примерного вида:
LUNID=24def43e-1f90-4c12-aaae-f496dc02b98d bash refresh-lun.sh Укажите пароль пользователя admin: ... <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <action> <fault> <detail>[Cannot sync Virtual Disk. The specified disk does not exist.]</detail> <reason>Operation Failed</reason> </fault> <host id="ef1e63e0-af88-4430-bdcf-ed37c336dba4"/> <status>failed</status> </action>
-
В случае указания неверного HOSTID будет выведено сообщение примерного вида:
LUNID=2d175b60-99d8-4877-9817-f3d9362bd07b HOSTID=00521c3e-4598-4441-8bfa-784de3b409db bash refresh-lun.sh Укажите пароль пользователя admin: ... <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <action> <fault> <detail>[Cannot sync Virtual Disk. Invalid Host Id.]</detail> <reason>Operation Failed</reason> </fault> <host id="00521c3e-4598-4441-8bfa-784de3b409db"/> <status>failed</status> </action>
4. Код скрипта refresh-lun.sh
#!/usr/bin/bash
if [ -z ${LUNID} ]; then
echo "Запустите скрипт с указанием LUN-а"
echo "LUNID=24def43e-1f90-4c12-aaae-f496dc02b98d bash ./refresh-lun.sh"
exit
fi
# detect zvirt fqdn
FQDN=$(hostname -f)
# ask admin password
echo "Укажите пароль пользователя admin:"
read PASSWD
if [ -z ${HOSTID} ]; then
# get first' host id
HOSTID=$(curl -s \
--cacert '/etc/pki/ovirt-engine/apache-ca.pem' \
--request GET \
--header 'Version: 4' \
--header 'Accept: application/xml' \
--user 'admin@internal:'${PASSWD} \
https://${FQDN}/ovirt-engine/api/hosts | grep host | grep id | head -n1 | awk -F\" '{print $4; exit}')
fi
# send refresh command to lun
curl \
--cacert '/etc/pki/ovirt-engine/apache-ca.pem' \
--request POST \
--header 'Accept: application/xml' \
--header "Content-Type: application/xml" \
--header "Host: ${FQDN}" \
--user 'admin@internal:'${PASSWD} \
--data "<action><host id='${HOSTID}'/></action>" \
https://${FQDN}/ovirt-engine/api/disks/${LUNID}/refreshlun