Nous avons plusieurs serveurs ESXi gérés par un vCenter; existe-t-il un moyen d'obtenir une liste de tous les instantanés dans toutes les machines virtuelles?
Cela ressemble à un travail pour PowerCLI! Eh bien, à partir d'un poste de travail Windows, de toute façon, c'est ce que j'ai.
Le blog de Surly Admin a même un script que vous pouvez copier-coller pour obtenir tous les instantanés de toutes les VM de votre environnement , la viande dont je posterai ci-dessous pour votre commodité.
$Report = Get-VM | Get-Snapshot | Select VM,Name,Description,@{Label="Size";Expression={"{0:N2} GB" -f ($_.SizeGB)}},Created
If (-not $Report)
{ $Report = New-Object PSObject -Property @{
VM = "No snapshots found on any VM's controlled by $VIServer"
Name = ""
Description = ""
Size = ""
Created = ""
}
}
$Report = $Report | Select VM,Name,Description,Size,Created | ConvertTo-Html -Head $Header -PreContent "<p><h2>Snapshot Report - $VIServer</h2></p><br>" | Set-AlternatingRows -CSSEvenClass even -CSSOddClass odd
Grrr ... Instantanés VMware. Si je le pouvais, ils n'existeraient qu'à des fins de sauvegarde et pour tester les modifications.
Vous pouvez afficher l'espace consommé par les instantanés (, ce qui est probablement ce que vous souhaitez vraiment savoir ) en utilisant l'onglet "Vues de stockage" du cluster niveau dans votre client vSphere.
Commencez par là, puis descendez jusqu'aux machines virtuelles individuelles. Les entrées qui ont des valeurs en octets (B) signifient essentiellement qu'il n'y a pas d'instantanés.
La réponse de HopelessNoob est idéale pour un rapport lisible par l'homme. Parfois, je préfère analyser le mien dans d'autres objets PS. Il est également très similaire à HopelessNoob - je suppose que nous avons tous deux commencé à partir du même extrait de code pour créer nos scripts:
$ VIServer = "vsphere.ad.example.com"
If (-not (Get-PSSnapin VMware.VimAutomation.Core))
{ Try { Add-PSSnapin VMware.VimAutomation.Core -ErrorAction Stop }
Catch { Write-Host "Unable to load PowerCLI, is it installed?" -ForegroundColor Red; Break }
}
Connect-VIServer $VIServer -Credential (Get-Credential) | Out-Null
Get-VM | Get-Snapshot | Select VM,Name,Description,@{Label="Size";Expression={"{0:N2} GB" -f ($_.SizeGB)}},Created | FT
Donne:
VM Name Description Size Created
-- ---- ----------- ---- -------
ENETSXS2 VEEAM BACKUP TEMPORARY SNAPSHOT Please do not delete this sn... 19.28 GB 8/11/2014 8:42:18 AM
ENETSDFS-BS VEEAM BACKUP TEMPORARY SNAPSHOT Please do not delete this sn... 16.30 GB 8/11/2014 5:24:44 AM
Vous pouvez ensuite diriger cela vers Remove-Snapshot
ou le filtrer ou autre chose.
Voici le script que nous utilisons pour vider une liste de toutes les machines virtuelles avec des instantanés, fonctionne dans PowerCLI. C'est très simple et propre. Il videra les résultats sur votre bureau local via un fichier .csv.
# Possible "Select-Object -Property" variables: Description, Created, Quiesced, PowerState, VM, VMId, Parent, ParentSnapshotId, ParentSnapshot, Children, SizeMB, SizeGB, IsCurrent, IsReplaySupported, ExtensionData, Id, Name, Uid, Client
get-vm | get-snapshot | Select-Object -Property vm,created,sizeGB,name,description | Export-Csv -Path C:\Users\$env:username\Desktop\snapshots.csv
Même si une réponse a été acceptée, je voudrais vous signaler check_vmware_snapshots .
C'est un plugin Nagios/Icinga , pour vérifier l'âge et compter pour VM instantanés dans un environnement VMWare ESXi/vSphere.
Cela dépend de Perl/VMware :: VIRuntime de "VMware-vSphere-CLI-5.5.0", donc pas de PowerCLI ou -Shell cette fois. :-)
Malheureusement, le client lourd pour Vcenter n'a pas eu cette fonctionnalité depuis 6.0, je crois, mais voici une autre option si vous voulez le faire facilement dans une interface graphique. Dans 6.0 ou 6.5, lancez le client Web vcenter (version flash). Sur le côté gauche (fenêtre du navigateur), sélectionnez vcenter, un centre de données ou un cluster, puis sélectionnez pour afficher les machines virtuelles. Sur le côté droit à gauche de la case "filtre", il y a une petite icône carrée (survolant elle dit "Afficher et masquer les filtres rapides". Cliquez sur cette icône carrée, puis cliquez sur "a un instantané" puis cliquez sur "oui". Votre La vue affichera désormais uniquement les machines virtuelles avec des instantanés.
Ou exécutez la requête suivante dans MS SQL (la requête est basée sur sql2008 et vcenter 5.1)
select t.ID, t.NAME as VMName, s.SNAPSHOT_NAME as SnapshotName
from [VCDB].[dbo].[VPX_SNAPSHOT] s, [VCDB].[dbo].[VPX_ENTITY] t
where s.VM_ID = t.ID order by t.ID
Ouvrez vCenter avec vSphere Client. Aller vers
Catégorie "Datastore et Datastore Cluster"
"R-Cliquez sur Datastore" où vous voulez trouver un instantané. (Si plusieurs banques de données doivent aller dans chaque banque de données)
Vous verrez l'onglet Dossier et Recherche.
Cliquez pour voir l'image de l'onglet de recherche
Cliquez sur Rechercher, puis dans le menu déroulant, sélectionnez "Instantané de la machine virtuelle"
Cliquez sur Rechercher.
Il affichera tous les instantanés stockés dans ce magasin de données.
R-Cliquez sur Instantané et "Aller au dossier"
Il faudra VM dossier dont l'instantané est pris.