Снапшоты (снимки) виртуальных машины в VMWare позволяют сохранить состояние виртуального диска виртуальной машины, конфигурацию ВМ и, при необходимости, виртуальной памяти на определенный момент. Снапшоты можно создавать перед установкой обновлений, обновлением приложений или в различных тестовых сценариях. Подавляющее большинство решений по резервному копированию виртуальных машин в процессе создания резервной копии ВМ сначала создают снапшот ВМ, забирают его к себе (на диск или на ленту), а потом удаляют снапшот у ВМ. Тем самым в бэкап попадает состояние ВМ на определенный момент.
В этой статье мы покажем, как создавать в среде VMWare создавать, удалять и консолидировать снапшоты из командной строки PowerCLI.
Создаем снапшот ВМ из PowerCLI
Предположим, вы уже подключились в PowerCLI к своему серверу vCenter с помощью командлета Connect-VIServer. Для создания снапшота используется командлет New–Snapshot.
New-Snapshot -vm msk-app01 -Name beforeAppUpdate
Или можно воспользоваться конвейером:
get-vm -Name msk-app01 | New-Snapshot -Name beforeAppUpdate
В списке снапшотов ВМ появится еще один.
Можно получить список имеющихся снапшотов определенной ВМ с помощью команды:
Get-VM -name msk-app01 | Get-Snapshot | Select VM,Name,Created,SizeMB | FT
Можно получить список снапшотов за определенный период. Например, нам нужно найти все ВМ со снапшотами, созданными более 30 дней назад:
Get-VM| Get-Snapshot |Where {$_.Created -lt (Get-Date).AddDays(-30)}| Select-Object VM,Name,Created,SizeGB | FT
Удаление снапшота ВМ из PowerCLI
Можно удалить снапшот с помощью командлета Remove-Snapshot.
Get-VM -Name msk-app01 | Get-Snapshot | Remove-Snapshot
Появится уведомление, в котором у вас запросится подтвердить удаление всех снапшотов.
Если вы хотите удалить только один снапшот, нужно указать его имя.
Get-VM -Name msk-app01 | Get-Snapshot -name beforeAppUpdate | Remove-Snapshot
Можно одной командой удалить все снапшоты старше 30 дней у всех ВМ в vCenter:
Get-VM | Get-Snapshot | Where {$_.Created -lt (Get-Date).AddDays(-30)} | Remove-Snapshot
Запуск консолидации дисков из PowerCLI
При удалении одного или всех снапшотов (DeleteAll) у виртуальной машины, они немедленно пропадают из консоли Snapshot Manager, после чего выполняется консолидация .vmdk файлов в VMFS хранилище. Если при консолидации произойдет ошибка, старые файлы снапшотов vmdk дисков могут остаться на хранилище. Вы можете выполнить консолидацию дисков с помощью командлета Consolidation:
Найдем все ВМ, которые требуют консолидации файлов:
Get-VM | Where-Object {$_.Extensiondata.Runtime.ConsolidationNeeded}
После чего можно выполнить консолидацию всех ВМ:
Get-VM | Where-Object {$_.Extensiondata.Runtime.ConsolidationNeeded} | foreach {$_.ExtensionData.ConsolidateVMDisks_Task()}
2 комментария
Здравствуйте. Спасибо за статью.
Вопрос такой — возможно ли создание виртуальных машин из снепшотов других виртуальных машин?
Как-то было настроено что снэп делается каждый день в определенное время, как отключить это?