De volgende function zoekt eerst alle *.VMX bestanden op en vervangt daarna de extentie *.VMX naar *.VMDK. Deze *.VMDK bestanden worden in de $List geplaatst. Daarna worden alle VMDK’s gedefragmenteerd via de vmware-vdiskmanager.exe.
function Defrag-allVMDKs{ param([string]$path) $vdiskmanager = “C:\Program Files\VMware\VMware Workstation\vmware-vdiskmanager.exe” $parameter = “-d” $List = get-childitem $path -recurse | where {$_.extension -eq “.vmx”} | foreach-object -process { $_.FullName } | ForEach-Object {$_ -replace “.vmx”, “.vmdk”} ForEach($vmdk in $List) { echo $vmdk & $vdiskmanager $parameter $vmdk } } |
Via het volgende commando kun de bovenstaande function gebruiken.
Defrag-allVMDKs <drive>\<path>
Als je dit in de Shell uitvoerd ziet het er als volgt uit:
Was het niet zo dat wanneer je virtual disks defragmenteerd, ze automatisch groeien wanneer je niet meteen de totale grootte hebt gealloceerd?
Dit geldt alleen voor Sparse Disks. Als je gebruik maakt van preallocated virtual disks heb je dat probleem niet.
Zie http://blogs.vmware.com/teamfusion/2008/10/tip-defragmenta.html
Hi Arne
Let ook op dat het bij ons steeds vaker voorkomt dat vmdk en vmx naam niet overeenkomen. Kun je niet handiger de info van de VMDK naam ophalen?
Plus ik zou nog een check inbouwen of er snapshots actief zijn. En dan bij actieve snapshot geen defrag uitvoeren, anders groeit je snapshot gigantisch
Gabrie