Snap Me If You Can
Posted by NiTRo | Filed under Tips & Tricks, VMware, ZFS
En cherchant un paramètre dans la hidden_vmx_params liste extraite par William Lam, nous sommes tombé sur une option bien sympathique pour ceux qui aiment contrôler la situation ou qui détestent les mauvaises surprises en matière de snapshot : snapshot.minFreeSpace
Disons que vous souhaitez limiter la possibilité de faire un snapshot sur vos vm uniquement s’il y a suffisamment d’espace sur les datastore, vous utiliseriez notre beau petit one-liner fait main :
Get-View -ViewType virtualmachine|?{-not $_.Config.Template -and $_.Runtime.ConnectionState -eq "connected"}|?{($_.Config.Hardware.Device|?{$_.GetType().Name -eq"VirtualDisk"}|%{$_.Backing.FileName.split("[]")[1]}|sort -Unique|measure-object).count -eq 1}|%{$_.ReconfigVM((New-Object VMware.Vim.VirtualMachineConfigSpec -Property @{extraconfig=@((New-Object VMware.Vim.optionvalue -Property @{Key="snapshot.minFreeSpace"; Value="$($($_.Config.Hardware.Device|?{$_.GetType().Name -eq"VirtualDisk"}|%{$_.CapacityInKB*1KB}|measure-object -sum).sum)"}))}))}
Ce script fixe le snapshot.minFreeSpace à la somme de la taille des vmdk (taille max d’un snapshot) et se limite aux vm dont les vmdk résident sur un seul et unique datastore.
Mais avant de passer ce script, peut être voudriez vous vérifier que vous n’avez pas des vm déjà dans cette situation ? Cet autre petit one-liner vous donnera la liste de chaque vm dont la taille totale est supérieure à l’espace libre du datastore où elle réside :
Get-View -ViewType virtualmachine|?{-not $_.Config.Template}|?{($_.Config.Hardware.Device|?{$_.GetType().Name -eq"VirtualDisk"}|%{$_.Backing.FileName.split("[]")[1]}|sort -Unique|measure-object).count -eq 1}|?{($_.Config.Hardware.Device|?{$_.GetType().Name -eq"VirtualDisk"}|%{$_.CapacityInKB*1KB}|measure-object -sum).sum -gt ((get-view -viewtype datastore -property name,summary -filter @{"name" = ($_.Config.Hardware.Device|?{$_.GetType().Name -eq"VirtualDisk"}|%{$_.Backing.FileName.split("[]")[1]}|sort -Unique)}).Summary.FreeSpace)}|select name
Tags: PowerCLI, powershell, scripting, snapshot, VAAI
February 12th, 2012 at 11:08
Malheureusement ce n’est pas dynamique du tout et la seul VM qui en profitera’ et se vera refuser un snapshot sera celle pour qui l’espace disque sur le volume n’est plus suffisant a un instant T. Pour les autres VM du volume qui ont un snapshot en cours, il faudra croisser les doigts que le volume aie assez d’espace disque. Dans le meilleure des cas on a prevu autant d’espace libre que d’espace utilise par les VMDK. Pas tres economique en tout cas
SRDS peut etre salvateur et bougera certaines VM avant que le volume soit plein, mais bon tout le monde n’a pas de license Ent+ non plus.
February 12th, 2012 at 17:52
Je suis d’accord mais c’est toujours moins pire que de faire un snapshot sans “filet”
Et pour SDRS, tu peux tjs utiliser notre script datastore-equalizer en tache planifié http://vm.lc/zdrs