Как отключить виртуальную машину vmware
Постановка задачи
В моей инфраструктуре есть система управления виртуализацией VMware vSphere 7 и кластер построенный на базе ESXI 6.5. Недавно я создавал новую отказоустойчивую терминальную ферму HA RDS на базе Windows Server 2016, состоящую из 50 виртуальных машин. RDS ферма работает без проблем и нареканий, поэтому старые виртуальные сервера от фермы на базе Windows Server 2012 R2 я могу смело удалять, но я хочу их удалить разными методами, чтобы напомнить что-то себе и научить чему-то вас.
Удаление виртуальной машины через vSphare или ESXI интерфейс
Данный метод по удалению виртуальной машины со всеми файлами является самым простым. Его суть заключается в том, что вы будите использовать веб-интерфейс вашего гипервизора. В vCenter переходите в раздел "Hosts and Clusters" и среди списка серверов находите нужный в моем примере, это будет виртуальная машина term82. Щелкаем по нему правым кликом мыши и из контекстного меню выберите пункт "Delete from disk"
Давайте я вам опишу чем отличается пункт "Delete from disk" и "Remove from Inventory":- Delete from disk - Полностью удаляет всю виртуальную машину со всеми файлами с ваших датасторов, без возможности ее восстановления штатными средствами
- Remove from Inventory - Удаляет виртуальную машину из видимости "Hosts and Clusters", но сами файлы виртуальной машины будут все еще лежать на вашем датасторе, это используют например при переносе виртуальных машин между серверами vCenter, где файлы сервера просто добавляются в Inventory.
Вас еще раз предупредят, что файлы виртуального сервера будут уничтожены, вам нужно подтвердить действие.
То же самое вы можете выполнить и на самом веб-интерфейсе отдельного ESXI хоста. Находите нужную виртуальную машину и так же через контекстное меню вы выбираете пункт "Delete", это более понятная формулировка, чем в vSphere.
Тут так же нужно подтвердить свое действие по удалению.
Как удалить виртуальную машину через PowerCLI
Чем плохи графические методы, это отсутствием автоматизации и невозможностью массового удаления виртуальных машин. Предположим, что вам нужно бахнуть 50 серверов, сколько времени вы потратите на это и графики, а если вообще нужно выполнить удаленно. Поэтому вы должны использовать оболочку PowerCLI. Он устанавливается в систему отдельно, как это сделать я рассказывал вот тут.
Подключаемся к нашему vCenter серверу или ESXI хосту. Для этого введите в оболочке команду:
Далее есть такой командлет Get-VM, который может вам показать наличие нужных виртуальных машин. Мои виртуальные машины все называются term70-80. Зная это я могу вывести полный список.
Далее для удаления виртуальной машины есть командлет Remove-VM со своими ключами:
- VM - Задает виртуальные машины, которые вы хотите удалить.
- Confirm - Если значение равно $true, это означает, что командлет запрашивает подтверждение перед запуском. Если значение равно $false, командлет запускается без запроса подтверждения пользователя.
- DeletePermanently - Указывает, что вы хотите удалить виртуальные машины не только из инвентаря, но и из хранилища данных.
RunAsync - Указывает, что команда немедленно возвращается, не дожидаясь завершения задачи. В этом режиме выходом командлета является объект Task. Для получения дополнительных сведений о параметре RunAsync запустите «help About_RunAsync» в консоли VMware PowerCLI. - Server - Указывает сервер vCenter Server, на котором вы хотите запустить командлет. Если этому параметру не задано значение, команда выполняется на серверах по умолчанию.
- WhatIf - Указывает, что командлет запускается только для отображения изменений, которые будут внесены, и на самом деле никакие объекты не изменяются.
Давайте теперь для примера удалим виртуальную машину term79, для этого введите:
У вас появится подтверждение на удаление, говорим "Y".
Файлы сервера все также продолжают лежать на датасторе.
Давайте теперь используем ключ -DeletePermanently, это позволит полностью с датасторов удалить виртуальный сервер.
Remove-VM -VM term79 -DeletePermanentlyУ вас выскочит подтверждение ваших действия, если нажмете "Y", то файлы VM будут полностью удалены.
Если не хотите видеть подтверждения, то воспользуемся ключом -Confirm:$false
Remove-VM -VM term79 -DeletePermanently -Confirm:$falseВ веб интерфейсе вы увидите задание по удалению сервера.
Как массово удалить виртуальную машину через PowerCLI
После знакомства с командлетами нужно научиться автоматизировать наши задания и посмотреть, как сделать все то же самое, но с большим количеством серверов. Тут есть несколько простых конструкций. Создадим переменную с двумя серверами:
Удостоверимся, что в нее попадают наши два виртуальных сервера и произведем удаление $VMs.
Как видим при удалении переменной $VMs, у нас идет запрос на удаление двух виртуальных серверов, term72 и term73.
То же самое можно сделать имя файл со списком серверов, который так же помещается в переменную. Вам нужно заранее подготовить обычный txt файл, где каждый сервер будет находится на новой строке. Далее есть такой командлет Get-Content. Пишем:
Проверяем, что в переменную $VMs попали сервера из файла.
Далее выполняем команду по удалению виртуалок.
После выполнения команды, если вывести запрос по поиску всех серверов с именем term*, то мы ничего не обнаруживаем.
Если в этот момент посмотреть vCenter, то тут вы увидите массовые задания по удалению.
Так же я могу с вами поделиться полезным скриптом, который проверяет статус виртуальной машины, если она работает, то идет выключение, а уже потом удаление.
$VMs = (Get-Content servers.txt)
$vmObj = Get-vm $vms
foreach($delete in $vmObj) Remove-VM -VM $delete -DeleteFromDisk -Confirm:$false -RunAsync | Out-Null>
- Mark as New
- Bookmark
- Subscribe
- Mute
- Email to a Friend
Добрый день. Существует 100% виртуальная инфраструктура, постоенная на vCenter 5.1. Есть порядка 16 ВМ в продакшене, включая контроллеры домена. Вопрос заключается в том как правильно погасить всю инфраструктуру и соответственно после проведения профилактических работ всё запустить? Подскажите каков порядок.
VMadmin4eg- Mark as New
- Bookmark
- Subscribe
- Mute
- Email to a Friend
Выключается приблизительно так:
служебные серверы (резервного копирования, мониторинга и т.п.)
апликейшен серверы (1с, терминальные, VDI и т.п.)
серверы баз данных
серверы печати и файловые серверы
виртуальные хосты - ESXi (при этом выключается сам vCenter)
сетевое оборудование (ethernet, FC и т.п.)
Sladky- Mark as New
- Bookmark
- Subscribe
- Mute
- Email to a Friend
В целом подпишусь
ADobrynin- Mark as New
- Bookmark
- Subscribe
- Mute
- Email to a Friend
А не будет ли каких-либо проблем с авторизацией при настроенной SSO? Ведь контроллеры выключаются раньше, чем vCenter? Опять же выключениие (включение) vCenter надо настроить на како-либо хосте в автоматическом режиме, правильно? Может и контроллеры настроить на автоматическое отключение (включениие)?
Sladky- Mark as New
- Bookmark
- Subscribe
- Mute
- Email to a Friend
Кстати, тут вопрос тот еще
Я бы контроллеры домена выключал самыми последними.
1. Может отвалиться авторизация. Она кэшируется и проблем быть не должно, но всё же.
2. На 100% отвалтся DNS , а по имени vCenter знает хосты. Которые точно отвалятся (этого не будет, если они зацеплены по IP, либо если записи прописаны в файлик hosts на вЦентре).
Как бы сделал я:
2. мигрировать машинки таким образом, чтобы на одном хосте оказался как минимум один контроллер домена (со службой DNS), вЦентр
3. настроить правильное выключение и включение вЦентра и контроллера домена. Сначала выключаем вЦентр, потом контроллер домена. Включаем сначала контроллер домена, потом вЦентр (учитываем. что контроллер долго стартует).
Если требуется отключить доступ насовсем (и удалить GUI службы VMware Web Access), то: 2.1 Выполните Start > Programs > Administrative Tools > Services, затем остановите службу VMware VirtualCenter Management Webservices service.
Как выйти из виртуальной машины VMware?
Чтобы выйти из полноэкранного режима, нажмите одновременно клавиши [Ctrl]-[Alt].
Как правильно выключить виртуальную машину?
Чтобы закрыть виртуальную машину, в окне виртуальной машины нажмите кнопку X, расположенную в верхнем правом углу, либо выберите команду Закрыть в меню Действие.
Как выключить виртуальную машину Hyper V?
Единственный способ принудительно выключить/ перезапустить такую зависшую виртуальную машину без перезагрузки всего хостового сервера Hyper-V – завершить ее рабочий процесс на гостевой ОС. Все ВМ на хосте Hyper-V запускаются с помощью процесса vmwp.exe (Virtual Machine Worker Process).
Как переключаться между виртуальной машиной?
Как выйти из полноэкранного режима в виртуальной машине?
Самый простой способ переключиться из полноэкранного режима в оконный — при запущенной игре воспользоваться сочетанием клавиш Alt + Enter. В качестве альтернативы могут быть использованы комбинации Ctrl + F для ОС Windows или Command + M для MacOS.
Как выйти из виртуальной машины VirtualBox?
Поэтому, находясь в масштабном или полноэкранном режиме внутри VirtualBox, установленного в Windows, необходимо Право Ctrl + C комбинация клавиш для выхода из режима масштабирования. Это просто активирует ваши вкладки VirtualBox вверху, откуда вы можете изменить настройки в соответствии с вашими требованиями.
Как вернуть мышь в виртуальной машине?
Когда ввод с клавиатуры и мыши сфокусирован в окне виртуальной машины, вы не можете перемещать курсор за его пределы, и все нажатия клавиш обрабатываются только в пределах виртуальной машины. Чтобы освободить ввод с клавиатуры и мыши, нажмите Ctrl+Alt. Ввод с клавиатуры и мыши будет немедленно освобожден.
Как выключить виртуальную машину Parallels Desktop?
Как запустить службу Hyper V?
Как перезапустить виртуальную машину?
Чтобы перезапустить одну виртуальную машину, выберите машину → нажмите значок → выберите пункт Перезапустить. Чтобы выполнить это действие с несколькими виртуальными машинами, выделите нужные в списке → нажмите кнопку Перезапустить в нижней части экрана.
Иногда сталкиваюсь с тем, что определенная виртуальная машина на хосте VMWare ESXi зависает и ее нельзя никаким средствами выключить или перезагрузить из веб-интерфейса клиента vSphere. Перезагружать целиком ESXi сервер из-за одной виртуальной машины – не совсем целесообразно (особенно, если у вас всего один ESXi хост, или оставшиеся сервера в DRS кластере не потянут дополнительной нагрузки в виде виртуальных машин с перезагружаемого сервера). Рассмотрим основные способы принудительной остановки зависшей виртуальной машины в VMWare ESXi.
Если процесс виртуальной машины на сервере ESXi завис, она перестает реагировать на команды Reset / Power Off, и на любое действие выдает одну из ошибок:
- The attempted operation cannot be performed in the current state ;
- Another task is already in progress ;
- The virtual machine might be performing concurrent operations. Actions: Complete the concurrent operation and retry the power-off operation. The virtual machine is in an invalid state .
В таких случаях вы можете вручную остановить процесс виртуальной машины на хосте ESXi из командной строки ESXi Shell или PowerCLI.
Сначала определите на каком ESXi хосте запушена зависшая виртуальная машина. Для этого в интерфейсе vSphere Client найдите ВМ. Имя хоста, на котором она запущена, указано на вкладке Summary в секции Related Object -> Host.
Щёлкните по имени хоста ESXi. Вам нужно разрешить доступ к нему по протоколу SSH. Перейдите в Configure -> Services -> SSH -> Start.
Теперь вы можете подключиться к этому ESXi хосту через SSH с помощью клиента putty.
Выведем список ВМ, запушенных на хосте ESXi:
esxcli vm process list
Скопируйте идентификатор нужной виртуальной машины (World ID).
Чтобы завершить процесс зависшей виртуальной машинына хосте ESXi используется следующая команда:
esxcli vm process kill --type=[soft,hard,force] --world-id=WorldNumber
Как вы видите, есть три типа завершения процесса ВМ:
- Soft – самый безопасный способ завершить VMX процесс (похож на kill -SIGTERM);
- Hard – немедленное завершение процесса ВМ (kill -9);
- Force – самый жесткий режим завершения процесса, должен использоваться в последнюю очередь, если ничего другое не помогает.
Попробуем мягко остановить ВМ с указанным ID:
esxcli vm process kill --type=soft -w=25089429
ВМ должна выключиться.
Вы можете остановить зависшую виртуальную машину с помощью PowerCLI (это удобно, т.к. при подключении к vCenter вам не нужно искать хост, на котором запушена ВМ и включать SSH доступ). Проверим, что ВМ запушена:
get-vm “web2" | select name,PowerStates
Принудительно остановите процесс ВМ командой:
stop-vm -kill "web2" -confirm:$false
Также вы можете остановить зависшую виртуальную машину с помощью утилиты ESXTOP.
В SSH сесиии введите команду esxtop, затем нажмите “c” для отображения ресурсов CPU и shift + V, чтобы отображать только процессы вириальных машин
Затем нажмите “f” (выбрать отображаемы поля), “c” (отобразить поле LWID- Leader World Id) и нажмите Enter.
В столбце Name найдите виртуальную машину, которую нужно остановить, и определите номер ее LWID по соответствующему столбцу.
Затем осталось нажать кнопку «k» (kill) и набрать LWID идентфикатор той виртуальной машины, которую нужно принудительно выключить.
Последний способ жёсткого выключения виртуальной машины – воспользоваться утилитой kill. Такой способ позволит остановить не только ВМ, но и все дочерние процессы.
Получим ID родительского процесса ВМ:
kill -9 24288474
После такого “hard reset”, установленная ОС запустится в режиме восстановления. В случае гостевой Windows, скрин будет выглядеть так.
Читайте также: