VMWare ESXi – Listando os snapshots existentes

Snapshot é um recurso bastante útil pois preserva o estado da máquina virtual no momento em que este é feito. Muito utilizado antes da realização de modificações em servidores, como configurações, instalações, migrações e etc, pois em caso de falha, incidente ou comportamente inesperado, o administrador consegue retornar o estado da máquina antes da modificação realizada. Não deve ser utilizado em Bancos de Dados ou Servidores Domain Controllers.

Para identificar e documentar os snapshots criados em VMs baseadas em Infraestrutura de nuvem VMWare ESXi podemos utilizar scripts via PowerCli podemos obter essa informação de forma rápida. Ano passado publiquei um Post sobre PowerCli, leiam aqui.

Para simplesmente exibir a lista de VMs e Snapshots existentes no ambiente, no PowerCli, execute o comando abaixo:

get-vm | get-snapshot

snap

Para obter informações mais detalhadas execute: 

get-vm | get-snapshot | format-list

O comando acima exibe os seguintes itens referentes aos snapshots:

Description
Created
Quiesced
PowerState
VM
VMId
Parent
ParentSnapshotId
ParentSnapshot
Children
SizeMB
IsCurrent
IsReplaySupported
ExtensionData
Id
Name
Uid

Em algumas situações, até mesmo por questões de auditoria, pode ser interessante saber qual usuário criou o snapshot. Como o cmdlet Get-VM | Get-Snapshot não fornece esta informação podemos utilizar o script abaixo, que exibe todas as informações com este adicional que comentei.

$myVMs = Get-VM
$VMsWithSnaps = @()
foreach ($vm in $myVMs) {
    $vmView = $vm | Get-View
    if ($vmView.snapshot -ne $null) {
        Write-Host "VM $vm has a snapshot"
        $SnapshotEvents = Get-VIEvent -Entity $vm -type info -MaxSamples 1000 | Where { 
            $_.FullFormattedMessage.contains("Create virtual machine snapshot")}
        try {
        $user = $SnapshotEvents[0].UserName
        $time = $SnapshotEvents[0].CreatedTime
        } catch [System.Exception] {
            $user = $SnapshotEvents.UserName
            $time = $SnapshotEvents.CreatedTime
        }
        $VMInfo = “” | Select "VM","CreationDate","User"
        $VMInfo."VM" = $vm.Name
        $VMInfo."CreationDate" = $time
        $VMInfo."User" = $user
        $VMsWithSnaps += $VMInfo
    }
}
$VMsWithSnaps | Sort CreationDate

 

 

 

Deixe uma resposta

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d blogueiros gostam disto: