Ridurre la dimensione del disco di una macchina virtuale su VMware ESXi 5
Situazione, abbiamo una macchina virtuale esistente che al momento della creazione, o per un errore di valutazione o per un cambio di implementazione, è stata configurata ad esempio con un hard disk da 30GB anche se effettivamente magari usa a malapena 3GB.
Per ottimizzare lo spazio nel datastore vogliamo ad esempio ridurre il disco da 30GB a 8GB.
Dopo diverse ricerche e prove ho sperimentato una procedura discretamente veloce e pratica, per questo ci serve avere sul datastore oltre alla ISO del sistema della macchina virtuale, la ISO di una LiveCD ad esempio Ubuntu 11.10 Desktop e la ISO di Clonezilla.
Nel mio caso la macchina virtuale è una versione di Ubuntu 10.04 Server.
Spegniamo la macchina virtuale, colleghiamoci poi tramite SSH all’host su cui gira VMware ESXi 5, ed effettuamo possibilmente una copia della macchina virtuale per sicurezza, es:
1 2 3 |
cd /vmfs/volumes/miodatastore mkdir vmtest-copy cp vmtest/* vmtest-copy/ |
Ovviamente datastore è il nome del datastore e vmtest è il nome della macchina virtuale esistente.
Spostiamoci nella cartella della macchina virtuale e creiamo poi il nuovo disco virtuale ( 8GB, tipo thin ):
1 2 |
cd vmtest vmkfstools -c 8G -d thin disco8g.vmdk |
Aggiungiamolo ora alla macchina virtuale tramite il client di gestione.
Aggiungiamo anche la ISO LiveCD nel drive e avviamo, alla schermata del BIOS premiamo ESC per far eseguire il boot dalla ISO e diamo l’opzione di provare la versione senza installarla.
Una volta nella LiveCD apriamo GParted e ridimensioniamo la partizione esistente ad esempio in una da 6GB ( è necessario che sia uguale o più piccola di quella che si creerà nel nuovo disco o Clonezilla fallirà la clonazione ).
Sempre da GParted andiamo ora sul disco nuovo e creiamo prima una partizione primaria ad esempio da 7GB ext4 per il sistema, poi una partizione estesa nello spazio rimanente e dentro questa una partizione logica di tipo linux-swap ( o della dimensione che conviene secondo la RAM installata ).
Spegniamo la macchina virtuale e cambiamo nel drive la ISO che punti a Clonezilla ed avviamo con il solito passaggio di premere ESC al BIOS per far avviare dalla LiveCD.
Avviato Clonezilla bisogna selezionare la modalità device-device, e come copia quella delle partizioni e non del disco facendo attenzione poi di impostare bene la partizione sorgente ( che nel nostro caso è la /dev/sda1 da 6GB ) e quella di destinazione ( /deb/sdb1 da 7GB ).
Alla richiesta se eseguire o meno il controllo della partizione sorgente prima di fare la copia diciamo di si, altrimenti potrebbe fallire l’operazione, ed avviamo la clonazione.
Se tutto è andato come doveva Clonezilla termina le operazioni senza errori.
Ora spegniamo la macchina virtuale e tramite il client di gestione leviamo il disco vecchio da 30GB e impostiamo come principale quello nuovo da 8GB.
Sicuramente avviando così la macchina virtuale non parte dato che gli mancano le istruzioni di avvio, quindi a questo punto mettiamo nel drive la ISO del sistema operativo, in questo caso Ubuntu 10.04 Server ed avviamo scegliendo l’opzione di ripristinare un sistema difettoso.
Al termine delle procedure di avvio dove richiede le impostazioni da tastiera, i parametri di rete e altro si arriva a una scelta di operazioni di ripristino, basta scegliere quella di re-installare GRUB dicendogli poi di installarla sul disco principale ( /dev/sda ).
Di solito ci impiega poco tempo e ritorna alla lista della scelta delle operazioni di ripristino senza messaggi, ora riavviamo la macchina virtuale.
Se tutto è andato come doveva ora l’avvio avviene senza problemi dal nuovo disco di 8GB.
Potrebbe esserci poi un errore che non trova la partizione di SWAP ( mountall: Disconnected from Playmouth ) in quanto ha cambiato UUID da quella impostata in /etc/fstab, per risolvere questo problema una volta avviato il sistema otteniamo il nuovo UUID tramite il comando blkid e andiamo a sostituirlo nel file /etc/fstab.
Controlliamo che tutto funzioni e a questo punto possiamo anche cancellare sia la copia che il disco vecchio da 30GB.