Непонятно мне, почему нельзя реализовать вменяемый способ экстренной остановки зависших или неактуальных (и даже вредных) задач, имеющих атрибут IsCancelable = false.
На днях, сложилась ситуация — Veeam запустил своё задание на бэкап, появилась задача Create virtual machine snapshot и благополучно провисела в состоянии 95% до следующего запуска бэкапа. То есть больше суток. Дождавшись появления ещё одной аналогичной задачи, вставшей в очередь. Картина некрасивая, бэкапы не делаются, но что предпринять, чтобы выйти из ситуации корректно — непонятно.
В итоге сработала немного варварская, но результативная последовательность действий:
1) По рекомендациям статьи in vSphere the task “create virtual machine snapshot” is stuck (не помогло).
Выясняем, на каком хосте esx запущена проблемная машина. Подключаемся к хосту по SSH, выполняем
ps | grep vmx | grep <имя машины>
Первая колонка — PID процесса, вторая — PID родительского процесса. Далее убиваем родительский процесс командой kill <PID> В итоге, ВМ должна остановиться, а все задачи с ней связанные — прерваться.
В моём случае чуда не произошло. Или произошло, но менее приятное — повторный ввод команды ps показал, что два процесса (vmx-vthread-…) остались, но повторно убить их не получалось — появлялось сообщение, что процессов с таким ID нет. В панели задач клиента vSphere создание снапшота «продолжалось», машина отображалась как работающая.
2) Напрашивался ребут хоста. Но даже после того, как я выгнал все прочие виртуальные машины вручную (DRS засыпал на попытке выгнать именно эту проблемную в числе первых, при выводе сервера в Maintenance Mode) и ткнул Reboot, ничего не случилось. Задача reboot’а тоже встала в очередь. Очевидно возникла проблема с Managemet agents. Теме их перезапуска в разных вариациях и на разных версиях esx посвящена целая KB. Я просто перезапустил их все одной командой:
services.sh restart
После этого работа хоста нормализовалась, но машина стала недоступной, поскольку хост не мог определить её состояние после 1). Пришлось удалить из inventory и добавить заново. Возможно, в следующий раз лучше будет начать с 2).
Спасибо, помог второй вариант. Правда не без проблем, после рестарта сервисов машина не добавлялась в inventory.
Проблема с файлом машины, лечил удалением *.vmx~ и сбросом прав на *.vmx до 755
Мне повезло больше. Помог первый вариант.
VMware ESXi, 5.1.0, 2323236