У меня есть кластер VMWare из 2 узлов (Simplivity), на котором я планирую провести некоторое обслуживание оборудования (т. е. отключить их). Поэтому я хотел бы аккуратно завершить работу гостевых виртуальных машин, а затем снова включить их. Работает довольно много гостевых машин (~200), поэтому выполнение этого вручную через vsphere займет довольно много времени. Это несколько осложняется зависимостями в запуске, которые требуют упорядочивания запуска. Поэтому я надеюсь сделать это через командную строку, используя...
vim-cmd vmcsv/power.shutdown <vmid>
...
vim-cmd vmcsv/power.on <vmid>
Я запустил тестовый случай остановки и запуска виртуальной машины. Через CLI все работало отлично, но когда я попытался запустить виртуальную машину через vsphere, VMware решила запустить ее на другом узле, чем тот, на котором она была запущена ранее, иназначил ему новый vmid.
Хотя я могу определить vmid, когда виртуальные машины запущены, что произойдет после перезапуска хостов ESX? Будут ли ранее захваченные мной vmid ссылаться на виртуальные машины? Или мне нужно найти другой способ определения виртуальных машин и их запуска?
(Я бы спросил HPE, но их советы за последние 3 раза, когда я к ним обращался, были катастрофически неверными)
решение1
Оказывается, они сохраняются при перезапусках ESX, однако они не полностью статичны. Хотя они уникальны в кластере, они изменяются, когда VM мигрирует с помощью DRS. Поэтому безопасный способ запустить ее снова (если вы знаете имя и vmid из прошлого) это:
vim-cmd vmsvc/getallvms | grep '$VMNAME' | grep $VMID && vim-cmd vmsvc/power.on $VMID