Как удалить виртуальную машину Vmware ESXI

vmware logo

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов на просторах рунета Pyatilistnik.org. В прошлый раз мы с вами успешно определили причину медленной работы компьютера, который тормозил из-за компонента software reporter tool встроенного в Google. Двигаемся дальше и сегодня разберем ситуацию, когда вам необходимо удалить виртуальную машину на гипервизоре Vmware ESXI 6.5 и выше. Думаю это будет полезно для новичков, которые кроме графического метода могут быть не знакомы с другими.

Постановка задачи

В моей инфраструктуре есть система управления виртуализацией 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.

Как удалить виртуальную машину через vSphere

Пункт "Remove from Inventory" вы можете использовать еще при глюке, когда виртуальная машина в списке доступных имеет статус Invalid (Unknown)

Вас еще раз предупредят, что файлы виртуального сервера будут уничтожены, вам нужно подтвердить действие.

Подтверждение удаления виртуальной машины ESXI

То же самое вы можете выполнить и на самом веб-интерфейсе отдельного ESXI хоста. Находите нужную виртуальную машину и так же через контекстное меню вы выбираете пункт "Delete", это более понятная формулировка, чем в vSphere.

Удаление виртуальной машины через ESXI

Тут так же нужно подтвердить свое действие по удалению.

Удаление VM в ESXI

Как удалить виртуальную машину через PowerCLI

Чем плохи графические методы, это отсутствием автоматизации и невозможностью массового удаления виртуальных машин. Предположим, что вам нужно бахнуть 50 серверов, сколько времени вы потратите на это и графики, а если вообще нужно выполнить удаленно. Поэтому вы должны использовать оболочку PowerCLI. Он устанавливается в систему отдельно, как это сделать я рассказывал вот тут.

Подключаемся к нашему vCenter серверу или ESXI хосту. Для этого введите в оболочке команду:

Connect-VIServer vcenter.pyatilistnik.org

Как подключиться к vCenter через PowerCLI

Далее есть такой командлет Get-VM, который может вам показать наличие нужных виртуальных машин. Мои виртуальные машины все называются term70-80. Зная это я могу вывести полный список.

Get-VM term7*

Получаем список виртуальных машин для удаления

Далее для удаления виртуальной машины есть командлет Remove-VM со своими ключами:

  • VM  - Задает виртуальные машины, которые вы хотите удалить.
  • Confirm -  Если значение равно $true, это означает, что командлет запрашивает подтверждение перед запуском. Если значение равно $false, командлет запускается без запроса подтверждения пользователя.
  • DeletePermanently - Указывает, что вы хотите удалить виртуальные машины не только из инвентаря, но и из хранилища данных.
    RunAsync - Указывает, что команда немедленно возвращается, не дожидаясь завершения задачи. В этом режиме выходом командлета является объект Task. Для получения дополнительных сведений о параметре RunAsync запустите «help About_RunAsync» в консоли VMware PowerCLI.
  • Server - Указывает сервер vCenter Server, на котором вы хотите запустить командлет. Если этому параметру не задано значение, команда выполняется на серверах по умолчанию.
  • WhatIf - Указывает, что командлет запускается только для отображения изменений, которые будут внесены, и на самом деле никакие объекты не изменяются.

Дополнительно можно посмотреть вот тут - https://vdc-repo.vmware.com/vmwb-repository/dcr-public/85a74cac-7b7b-45b0-b850-00ca08d1f238/ae65ebd9-158b-4f31-aa9c-4bbdc724cc38/doc/Remove-VM.html

Давайте теперь для примера удалим виртуальную машину term79, для этого введите:

Remove-VM -VM term79

У вас появится подтверждение на удаление, говорим "Y".

Использование Remove-VM

Н на самом деле ваша виртуальная машина не удалена, а просто теперь не зарегистрирована на vCenter, об этом говорит задание "Unregister virtual machine".

Отмена регистрации виртуальной машины

Файлы сервера все также продолжают лежать на датасторе.

Список файлов виртуальной машины

Давайте теперь используем ключ -DeletePermanently, это позволит полностью с датасторов удалить виртуальный сервер.

Remove-VM -VM term79 -DeletePermanently

У вас выскочит подтверждение ваших действия, если нажмете "Y", то файлы VM будут полностью удалены.

Полное удаление файлов виртуальной машины с гипервизора ESXI

Если не хотите видеть подтверждения, то воспользуемся ключом -Confirm:$false

Remove-VM -VM term79 -DeletePermanently -Confirm:$false

Убираем подтверждение на удаление в PowerCLI

В веб интерфейсе вы увидите задание по удалению сервера.

Delete virtual machine ESXI

Как массово удалить виртуальную машину через PowerCLI

После знакомства с командлетами нужно научиться автоматизировать наши задания и посмотреть, как сделать все то же самое, но с большим количеством серверов. Тут есть несколько простых конструкций. Создадим переменную с двумя серверами:

$VMs = Get-VM term72, term73

Удостоверимся, что в нее попадают наши два виртуальных сервера и произведем удаление $VMs.

Remove-VM -VM $VMs -DeleteFromDisk

Как видим при удалении переменной $VMs, у нас идет запрос на удаление двух виртуальных серверов, term72 и term73.

Как массово удалить виртуальную машину через PowerCLI

То же самое можно сделать имя файл со списком серверов, который так же помещается в переменную. Вам нужно заранее подготовить обычный txt файл, где каждый сервер будет находится на новой строке. Далее есть такой командлет Get-Content.  Пишем:

$VMs = (Get-Content C:\Users\sem\Desktop\VM.txt)

Проверяем, что в переменную $VMs попали сервера из файла.

Далее выполняем команду по удалению виртуалок.

Remove-VM -VM $VMs -DeleteFromDisk -Confirm:$false

После выполнения команды, если вывести запрос по поиску всех серверов с именем term*, то мы ничего не обнаруживаем.

Удаление списка виртуальных машин через powercli

Если в этот момент посмотреть vCenter, то тут вы увидите массовые задания по удалению.

Список заданий по удалению в vcenter

Так же я могу с вами поделиться полезным скриптом, который проверяет статус виртуальной машины, если она работает, то идет выключение, а уже потом удаление.

# Загружаем список виртуальных машин из файла

$VMs = (Get-Content servers.txt)
$vmObj = Get-vm $vms

# Проверяем статус виртуальных машин, если что то выключаем их
foreach($active in $vmObj){
if($active.PowerState -eq "PoweredOn"){
Stop-VM -VM $active -Confirm:$false -RunAsync | Out-Null}
}
Start-Sleep -Seconds 7

# Производим удаление виртуальных машин

foreach($delete in $vmObj){
Remove-VM -VM $delete -DeleteFromDisk -Confirm:$false -RunAsync | Out-Null}

На этом у меня все, мы разобрали разные методы удаления виртуальных машин. Если, что-то не понятно, то жду вас в комментариях. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *