oVirt 4.2.5 - Ошибка передачи роли SPM между хостами - SPM due to a failure to stop the current SPM

oVirt 4.2.5 - SPM due to a failure to stop the current SPMСлучилось так, что в кластере oVirt 4.2.5 сломалась возможность передачи роли Storage Pool Manager (SPM) с одного хоста на другой. Как позже выяснилось, истинная причина этой проблемы заключалась в том, что на хранилище виртуальных машин Data Domain возникла проблема с неудалённым "осиротевшим" диском в LVM-группе, с которой работает oVirt. Однако данная ключевая проблема привела к другой сложности - невозможности передачи роли SPM между хостами.

При попытке выполнить форсированную передачу роли SPM в веб-консоли oVirt…

oVirt 4.2.5 Failed to force select host as the SPM

…возникала ошибка вида “Failed to force select KOM-M11 as the SPM due to a failure to stop the current SPM.”

Failed to force select host as the SPM due to a failure to stop the current SPM

В логе engine.log на сервере oVirt Engine в этот момент фиксировалось следующее сообщение:

# tail -f /var/log/ovirt-engine/engine.log

...
2018-08-13 12:13:50,858+03 ERROR [org.ovirt.engine.core.vdsbroker.vdsbroker.SpmStopVDSCommand] (default task-37) [0b598484-cc03-4002-840d-1307d15294a2] SpmStopVDSCommand::Not stopping SPM on vds 'KOM-VM14', pool id '00000001-0001-0001-0001-0000000001c2' as there are uncleared tasks 'Task '150ed04f-31b7-406b-9858-8114fede320f', status 'finished'
...

Как я понял, в данной ситуации проблема передачи SPM заключается в невозможности остановить SPM на текущем хосте из-за заданий VDSM, имеющих статус завершённых, но не вычищенных из очереди заданий.

Перейдём в консоль хоста, на котором на данный момент выполняется роль SPM и посмотрим задания VDSM

# vdsm-client Host getAllTasksInfo

{

    "150ed04f-31b7-406b-9858-8114fede320f": {
        "verb": "deleteVolume",
        "id": "150ed04f-31b7-406b-9858-8114fede320f"
    }
}

Как видно, в списке заданий есть одно задание. Посмотрим его статус.

# vdsm-client Task getStatus taskID=150ed04f-31b7-406b-9858-8114fede320f

{
    "message": "Could not acquire resource. Probably resource factory threw an exception.: ()",
    "code": 100,
    "taskID": "150ed04f-31b7-406b-9858-8114fede320f",
    "taskResult": "cleanSuccess",
    "taskState": "finished"
}

Как было отмечено ранее, по сути информация фигурирующая в сообщении об ошибке отсылает нас в корневую причину проблем, находящуюся в LVM-группе. Однако интересно в контексте нашей вторичной проблемы с невозможностью передачи SPM другое – то, что задача VDSM на хосте фактически имеет статус finished/cleanSuccess, но при этом не исчезает из списка заданий VDSM.

Решить эту проблему мы можем, самостоятельно очистив “залипшее” задание командой следующего вида:

# vdsm-client Task clear taskID=150ed04f-31b7-406b-9858-8114fede320f
true

После этого снова проверим список заданий VDSM и убедимся в том, что теперь он пуст.

# vdsm-client Host getAllTasksInfo

{}

После этого повторная попытка передачи роли SPM между хостами должна произойти успешно.

oVirt - Success to force select host as the SPM

Похожая проблема с “залипшим” заданием VDSM, приводящим к невозможности перевода хоста с ролью SPM в режим облуживания ранее была описана Bug 1519497 - downloadImage task was finished but not cleared, thus preventing moving the SPM to maintenance.

Добавить комментарий