Das Verkleinern einer virtuellen VMware Platte – also des vmdk-Files – ist unter ESXi offenbar nicht vorgesehen (supportet). Trotzdem habe ich mir die Infos bröckchenweise zusammengesucht und folgendes einfache Vorgehen hat dann geklappt:
- Bestehendes Dateisystem auf der Disk verkleinern (variiert natürlich je nach Typ – bei mir war es LVM-Schieberei und zuletzt ein
pvresize --setphysicalvolumesize 1577844736k /dev/sdi1
) - Das Verkleinern (Shrink) der darunter liegenden virtuellen Disk geht leider nicht (wie von mir naiv gedacht) mit ESXi-Mitteln (vSphere Client). Die Größe lässt sich per Klick zwar kleiner stellen, springt dann beim Anwenden immer wieder auf die ursprüngliche Größe. Die Alternativ-Idee ist nun, den leeren Bereich mit Nullen zu füllen und dann auf „Thin provisioned“ umzustellen, wodurch die Null-Bereiche freigegeben werden:
- Dazu habe ich mit
gparted
(auf dem Host, auf dem die Platte eingebunden ist) erstmal nur die Partition verkleinert und eine unformatierte (deleted) Partition im frei gewordenen Bereich angelegt. - Mit
ddrescue -f /dev/zero /dev/sdi2
(ebenfalls auf dem Host, auf dem die Platte eingebunden ist) wird nun der freie Bereich wirklich mit Nullen überschrieben. - Danach stellt
vmkfstools -K /vmfs/volumes/datastore1/foo/bar.vmdk
(per ssh auf dem ESXi-Server) die Typ der Platte um und gibt den Platz des leeren Bereichs auf dem Datastore frei.
- Dazu habe ich mit
Die Platte ist nun zwar nicht wirklich verkleinert, aber der Effekt ist der gleiche – zumindest der für mich in diesem Fall wesentliche Punkt, nämlich dass Platz auf dem Datastore freigegeben wird.