VMware: Disk verkleinern

November 9, 2018 in hypervisor, linux, windows ‐ 3 min read

Wenn Ihr unter VMware dynamisch erweiterbare Festplatten benutzt, wird der Speicherplatz von der VM erst genutzt, wenn er wirklich gebraucht wird. Wenn sich jetzt Daten auf der VM angesammelt haben und sie werden von euch gelöscht, steht der Speicherplatz dem Host nicht wieder zur Verfügung.

Damit der freigeräumte Platz wieder genutzt werden kann, muss die virtuelle Festplatte geschrumpft (shirnk) werden.

Bei Windows Gastbetriebssystemen ist der Task relativ trivial, solange die VMware Tools installiert sind. Recktsklick auf die VM > Manage > Clean Up Disks…

image

 

Wenn der Task durchgelaufen ist, kann die Festplatte in den Einstellungen erweitert werden.

image

 

Unter Linux läuft der Task ähnlich und setzt auch voraus, dass die VMware tools installiert sind. Mit folgendem Befehl könnt Ihr euch listen lassen, welche Disk gemounted sind.

vmware-toolbox-cmd disk list

Und anschließend könnt mir mit folgendem Befehl die Festplatte shrinken.

vmware-toolbox-cmd disk shrink <DISK>

image

Auf dem Screenshot ist /dev/sda1 der mountpoint vom Rootverzeichnis und aktuell sind nur 11GB von 48GB in Verwendung. (Merkt euch diesen Wert!)

Jetzt könnt Ihr wie bei der Windows VM auch über Einstellungen > Compact Disk die Disk verkleinern.

Advanced Troubleshooting

Achtung: Diese Maßnahmen können euch die VM zerschießen! Macht Backups…

Falls die Festplatte des Hostssystems schon relativ voll ist, kann das durchaus fehlschlagen.

image

Installiert auf der VM also gparted und startet es.

apt install gparted

Hier wählt ihr dann die zu verkleinernde Partition aus und wählt resize. Dies kann allerdings an LVM oder anderen Dingen nicht funktionieren.

Falls gparted nicht funktioniert, nutzt fdisk.

Werfen wir nochmal einen Blick auf den Output von df -h weiter oben. Das Rootfilesystem / lieft auf dem device /dev/sda1. Sda1 ist die erste Partition auf /dev/sda, ich will also /dev/sda verkleinern.

Startet fdisk mit dem device, das Ihr shrinken wollt.

fdisk /dev/sda

Als erstes listen wir die Partitionstabelle mit p

image

Hier sehen wir, dass /dev/sda1 einen Bootflag hat, bei Sektor 2048 beginnt (wichtig! merken!), die Start und Endsektoren der Partition und dass sie 36GiB groß ist. Wir werden die Parition jetzt löschen und neu anlegen, allerdings kürzer.

Keine Sorge, den Daten passiert nichts, solange Ihr euch merkt, wo die alte Partition begonnen hat. Löscht die Partition also mit d

Schauen wir uns mit p nochmal die Partitionstabelle an, ziemlich leer hier order?

image

Macht die neue partition nicht kleiner, als der genutzte zuvor genutzte Speicher (!)

Wir legen jetzt mit n eine neue Partition an und sagen dann mit p, dass es sich um eine primäre Partition handelt. Da es sich wieder um die Partition 1 handeln wird und bei Sektor 2048 beginnen soll, kann ich diese beiden Werte auf default lassen. Wenn die gelöscht Partition bei euch nicht 1 war oder nicht bei Sektor 2048 begann, passt diese Werte bitte unbedingt an!

Als nächstes definieren wir die Größe der neuen Partition. Ich lege mit +15G fest, dass die neue Partition 15GiB Groß sein soll.

Jetzt setzen wir mit a das Bootflag auf die erste Partition.

image

Zu guter Letzt schrieben wir die Änderungen in die Partitionstabelle mit w.

image

Ihr werdet eine Warnung erhalten, dass die VM jetzt neu gestartet werden muss. Es gibt Methoden die Rootpartition zu unmounten, zu resizen und sie dann wieder zu mounten, falls neu starten aus Gründen für euch keine Option ist. Das behandle ich vielleicht mal in einem anderen Artikel.

Cheers, Ori