Администраторы VMware vSphere знают, что для виртуальных машин, работающих на серверах VMware ESXi, есть операция Suspend, которая позволяет поставить виртуальную машину "на паузу", что означает сохранение памяти ВМ на диск. Когда машину потребуется "продолжить" (Resume), ее память с диска будет загружена в физическую RAM и она продолжит исполнять инструкции.
В платформе Microsoft Hyper-V есть такая операция Save, которая работает аналогично операции Suspend в ESXi, однако есть и операция Pause, которая работает несколько иначе: виртуальная машина прекращает исполнять инструкции, но память ее продолжает оставаться загруженной в оперативную память сервера. Вследствие этого, такая ВМ может быть быстро продолжена, так как не требуется загружать память с диска.
Есть ли такая операция в VMware vSphere? Как пишет Вильям Лам, оказывается, есть. Для этого можно поступить с VMX-процессом виртуальной машины так же, как и с любым другим процессом в случае его "замораживания" в Unix-системе.
Итак, чтобы поставить ВМ на такую "паузу", идентифицируем ее PID (Process ID). Для этого выполним команду:
# esxcli vm process list
PID виртуальной машины приведен в секции "VMX Cartel ID" результатов вывода команды:
В качестве альтернативы можно использовать также команду ps:
# ps -c | grep -v grep | grep [vmname]
Ну и, собственно, ставим ВМ на паузу:
# kill -STOP [pid]
Чтобы снять машину с паузы, выполняем команду для продолжения VMX-процесса:
# kill -CONT [pid]
Машинка продолжит возвращать пинги:
Надо отметить, что эта штука не работает с виртуальными машинами, для которых включена функция VM monitoring, поскольку этот механизм ничего не знает о такой возможности по приостановке виртуальных машин.
Ну и, само собой, несмотря на то, что эта штука вполне себе работает, она не поддерживается со стороны VMware.