VHD/VHDX vDisk Datei komprimieren
Hyper-V & XenServer VHD vDisks wachsen mit der Zeit an, da nicht mehr benötigter Speicherplatz nicht automatisch freigegeben wird. Um die Datei wieder zu verkleinern, kann sie komprimiert werden.
diskpart DISKPART> select vdisk file="<Path to vDisk>\<vDisk>.vhd/.vhdx" DISKPART> attach vdisk readonly DISKPART> compact vdisk DISKPART> detach vdisk DISKPART> exit exit
Heho,
… hier eine etwas aufgehübschte Version die im Grunde das Gleiche für alle heruntergefahrenen virtuellen Maschienen tut und über die Ergebnisse informiert.
# Enumeriert VHDX aller ausgeschalteten virtuellen Maschinen und führt ein 'Optimize-VHD -Mode Full' durch
$VMs = Get-VM
$VMsArray = @()
$VMs | ForEach-Object { $VMsArray += $_.Name }
foreach($VMname in $VMsArray){
# prüfe ob die VM läuft
Write-Host
if ((Get-VM -Name $VMname).State -eq "Off" -and (Get-VMCheckpoint -VMName $VMname) -eq $null) {
# enumeriere alle zur VM gehörigen VHDX und wende Optimierungen an
Write-Host " VM: $VMname " -NoNewLine -ForegroundColor Black -BackgroundColor Yellow
Write-Host " "
foreach ($Path in ((Get-VMHardDiskDrive $VMname).Path)) {
Write-Host "bearbeite VHDX:" $Path
$PathFileSize = (Get-VHD -Path $Path).FileSize/ 1GB
$vorhergesamt += $PathFileSize; $vorher = $PathFileSize
Write-Host "vorher: $([math]::truncate($($PathFileSize))) GB / " -NoNewLine -ForegroundColor Yellow
Mount-VHD -Path $Path -NoDriveLetter -ReadOnly
Optimize-VHD -Path $Path -Mode Full
$PathFileSize = (Get-VHD -Path $Path).FileSize/ 1GB
Write-Host "nacher: $([math]::truncate($($PathFileSize))) GB / " -NoNewLine -ForegroundColor Green
Write-Host "gespart: $([math]::truncate($($vorher - $PathFileSize))) GB" -ForegroundColor Red
$nachergesamt += $PathFileSize
Dismount-VHD -Path $Path
}
} else { Write-Host " VM: $VMname " -NoNewLine -ForegroundColor Black -BackgroundColor Yellow
Write-Host " -> " -NoNewLine
Write-Host " übersprungen weil VM aktiv oder Prüfpunkte vorhanden " -NoNewLine -ForegroundColor DarkBlue -BackgroundColor Gray
Write-Host " "
Write-Host
}
}
Write-Host
Write-Host "Gesamtergebnis:" -ForegroundColor White
Write-Host "---------------"
Write-Host " vorher: $([math]::truncate($($vorhergesamt))) GB" -ForegroundColor Black -BackgroundColor Yellow
Write-Host " nacher: $([math]::truncate($($nachergesamt))) GB" -ForegroundColor Black -BackgroundColor Green
Write-Host " gespart: $([math]::truncate($($vorhergesamt - $nachergesamt))) GB" -ForegroundColor White -BackgroundColor DarkRed
Write-Host "---------------"
Write-Host