Экспорт виртуальной машины с хоста ESXi (в качестве резервной копии) с отключением ненужных дисков.
Известная проблема с экспортом более менее больших виртуальных машин через WEB GUI ESXi решается с помощью ovftool однако иногда бывает нужно что-то еще сделать за одно, например мы хотим экспортировать только один диск нашей машины (предположим второй лежит на другом сторейдже и содержит скажем дистрибутивы или какие то ненужные видео файлы).
Можно в WEB GUI ESXi выключить машину, удалить (крестиком) диск, экспортировать машину через ovftools, затем добавить существующий диск (указав путь до vmdk файла (разумеется мы его предварительно запомнили :-) ).
Но может вы хотите потом автоматизировать эту рутину.Тогда вам поможет WMWare PowerCli - это набор скриптов PowerShell которые умеют много из командной строки.
Итак начнем.
Сначала нужно подключится к VMWare для примера адрес хоста 192.168.1.10
Чтоб не пришлось вводить логин пароль в отдельном окне (а если вы делаете скрипт, тем более)
привязываем к хосту учетку:
New-VICredentialStoreItem -Host 192.168.1.10 -User вашпользователь -Password вашпароль
Теперь можно просто приконнектится к хосту:
Connect-VIServer 192.168.1.10
Если точно не знаем имя виртуальной машины посмотрим ее в списке:
Get-VM
Name PowerState Num CPUs MemoryGB
---- ---------- -------- --------
AlmaDocker PoweredOff 4 16,000
CUCM PoweredOff 2 4,000
SDP PoweredOn 2 4,000
PMP PoweredOn 2 2,000
Asterisk PoweredOn 1 2,000
Win2016vmwareclitest PoweredOn 2 8,000
eve PoweredOff 8 32,000
Присвоим переменной $mvm нашу машину чтоб в остальных командах не писать длинное имя:
$mvm = Get-VM Win2016vmwareclitest
Выключаем машину (только в случае если установлены VMWare tools иначе надо ее выключать жестко) - иначе нельзя удалить диски и выполнить экспорт:
Shutdown-VMGuest -vm $mvm -confirm:$false
Проверяем что она выключилась:
Get-VM
Name PowerState Num CPUs MemoryGB
---- ---------- -------- --------
AlmaDocker PoweredOff 4 16,000
CUCM PoweredOff 2 4,000
SDP PoweredOn 2 4,000
PMP PoweredOn 2 2,000
Win2016vmwareclitest PoweredOff 4 8,000
Asterisk PoweredOn 1 2,000
eve PoweredOff 8 32,000
Получаем список дисков в виде который даст нам всю необходимую информацию:
Get-HardDisk -vm $mvm | Select-Object Name,StorageFormat,Persistence,Filename,CapacityGB
Name : Hard disk 1
StorageFormat : Thick
Persistence : Persistent
Filename : [SAS5] Win2016vmwareclitest/Win2016vmwareclitest.vmdk
CapacityGB : 16
Name : Hard disk 2
StorageFormat : Thick
Persistence : Persistent
Filename : [SAS5] Win2016vmwareclitest/Win2016vmwareclitest_1.vmdk
CapacityGB : 20
Опять воспользуемся переменной, пусть это будет $hdd и присвоим нужный диск:
$hdd = Get-HardDisk -vm $mvm -Name "Hard disk 2"
Теперь удалим ненужный диск, удаляем его без удаления самого файла:
Remove-HardDisk -HardDisk $hdd -confirm:$false
Еще раз проверяем что больше нет ненужного диска у нашей ВМ:
Get-HardDisk -vm $mvm | Select-Object Name,StorageFormat,Persistence,Filename,CapacityGB
Name : Hard disk 1
StorageFormat : Thick
Persistence : Persistent
Filename : [SAS5] Win2016vmwareclitest/Win2016vmwareclitest.vmdk
CapacityGB : 16
Еще помните что может быть подключен какой нибудь DVD и он тоже будет экспортироваться давайте его отключим:
Get-CDDrive -vm $mvm
IsoPath HostDevice RemoteDevice
------- ---------- ------------
[SAS5] distr/ru_w...
Есть - удаляем его:
$mcd = Get-CDDrive -vm $mvm
Remove-CDDrive -cd $mcd -confirm:$false
Теперь делаем экспорт машины в локальную папку:
Export-VApp -vm $mvm -Destination C:\vmbackups\
Видим вверху окошка PowerShell прогресс и ждем.....
Export-VApp
percent complete: 13,8
[ooooooooooooooooooooooooo
В конце увидим созданные файлы:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 06.03.2023 0:01 9418 Win2016vmwareclitest.ovf
-a---- 06.03.2023 0:01 5364877824 Win2016vmwareclitest_disk0.vmdk
-a---- 06.03.2023 0:01 270840 Win2016vmwareclitest_file0.nvram
-a---- 06.03.2023 0:01 312 Win2016vmwareclitest.mf
Когда экспорт закончен можно подключить диск обратно:
New-HardDisk -Persistence Persistent -DiskPath "[SAS5] Win2016vmwareclitest/Win2016vmwareclitest_1.vmdk" -vm $mvm
И запустить машину:
Start-VM -vm $mvm
Комментарии
Отправить комментарий