Seite 1 von 1

PowerCLI 5.1 - VMDK online convert THICK to THIN

Verfasst: 23.12.2012, 17:55
von rapster
Hab ein kleines PowerCLI Script geschrieben welches alle THICK Festplatten online (ohne VM auszuschalten) nach THIN convertiert.
Die Zeile "ForEach ($VM in Get-VM) {" kann durch "ForEach ($VM in Get-VM "VMNAME") {" ersetzt werden um nur eine bestimmte VM zu bearbeiten.
Hierfür wird ein zweiter Datastore benötigt, die VMDKs liegen am Ende wieder am selben Ort wie vor dem Convert (Auch wenn die VM HDDs auf verschiedenen Datastores hat).

Viel Spaß damit, hoffe es hilft dem ein oder anderen...

Code: Alles auswählen

$TempDatastore = "MySecondDatastoreName"

$ProgressPreference = "SilentlyContinue"
$WarningPreference = "Continue"
$ConfirmPreference = "None"
$ErrorActionPreference = "Continue"

ForEach ($VM in Get-VM) {
   $WriteVM=$true
   $VMDK_Name = @()
   $VMDK_Path = @{}
   ForEach ($HDD in $VM.HardDisks | ?{$_.StorageFormat -ne "Thin"}) {
      If($WriteVM) { $WriteVM=$false; Write-Host -fore magenta "`nProcessing VM '$VM' ..."; }
      $OriginalDatastore = $HDD.Filename -Replace '\[(.+)\].*',"`$1"
      if ($OriginalDatastore -notmatch $TempDatastore) {
         $VMDK = $HDD.Filename -Replace '.+/(.+)$',"`$1"
         $VMDK_Name += $VMDK
         $VMDK_Path.Add($VMDK,$OriginalDatastore)
         Write-Host -fore yellow "Moving '$($HDD.Filename)' temporarily to '$TempDatastore' ..."
            Move-HardDisk -HardDisk $HDD -Datastore $TempDatastore -StorageFormat thin
      }
   }
   $VM = Get-VM $VM
   ForEach ($HDD in $VM.HardDisks) {
      $VMDK = $HDD.Filename -Replace '.+/(.+)$',"`$1"
      if( $VMDK_Name -contains $VMDK ) {
         $OriginalDatastore = $VMDK_Path.Get_Item($VMDK)
         Write-Host -fore green "Moving '$($HDD.Filename)' back to '$OriginalDatastore' ..."
            Move-HardDisk -HardDisk $HDD -Datastore $OriginalDatastore -StorageFormat thin
      }
   }
}

Verfasst: 23.12.2012, 21:39
von mbreidenbach
Benötigt das Storage vMotion Lizenz ?

Verfasst: 23.12.2012, 21:44
von irix
Ja natuerlich.

Gruss
Joerg

Verfasst: 23.12.2012, 21:54
von rapster
Ja, "vSphere Storage vMotion" wird benötigt.

Zu erwähnen ist ebenfalls dass das benötigte cmdlet "Move-HardDisk" erst in vSphere 5.1 eingeführt wurde.
In früheren vSphere Versionen lässt sich ein Script mit dem cmdlet "Move-VM" erstellen, welches allerdings nicht auf VM's mit Festplatten auf verschiedenen Datastores anwendbar ist.

Verfasst: 24.12.2012, 14:31
von mbreidenbach
rapster hat geschrieben:Ja, "vSphere Storage vMotion" wird benötigt.


Dachte ich mir ja irgendwie schon ^^