Powercli ile VM Datastore boş alan kontrollü snapshot alma

Snapshot datastore’da yer kaplayan bir sanallaştırma teknolojidisir. Snapshotlar çok hızlı disk alanı kaplayabilirler. En iyisi snapshot almadan önce datastore’da boş alan kontrolü yapmaktır. Tavsiye edilen datastore doluluk oranı genelde %15 civarıdır, ancak bu oran size kalmıştır. Ben genelde %10 civarı bir buffer alan bırakırım.

Aşağıdaki powercli scripti, $vm ile tanımlanan sanal sunucunun bağlı bulunduğu datastore alanını kontrol ederek, bu datastore’da %10’dan daha fazla boş alan varsa snasphot alır. Eğer yoksa konsolda uyarı mesajı verir.

Connect-viserver vcenter.kolukisa.net

ForEach ($vm in (get-datastore -VM $vm) | ForEach {$_.VM}) {

$vm = get-vm test

$treshold = “{0:n2}” -f 10

$dsfreespace = get-datastore -VM $vm | select-object @{N=”DSFreespace”; E={[math]::Round(($_.FreeSpaceGB)/($_.CapacityGB)*100,2)}} | Select-Object -ExpandProperty DSFreespace

if (($dsfreespace -gt $treshold)) {new-snapshot -vm $vm -name test123} else {

Write-Host “Sanal sunucunun Datastore’unda %10’dan az yer olduğu için snapshot alınamaz” }

}

Kendi vcenterınız için vcenter.kolukisa.local’i vcenter sunucunuzun fqdn yada ip adresi ile değiştirin.

Scripti çalıştırmak istediğiniz sanal sunucu adı örnekte test olarak geçiyor. Boşluk ve karakterlerden oluşan bir isme sahip sunucunuz varsa “” arasına adını yazınız.

%10’luk treshold’u değiştirmek isterseniz $treshold = “{0:n2}” -f 10 satırındaki 10’u başka bir sayıyla değiştirin. %15 için 15 yazmanız yeterli.

Hata mesajını ise çift tırnak arasında kalması koşuluyla istediğiniz gibi modifiye edebilirsiniz.

Saygılarımla