Après avoir récupéré l'espace disque non utilisé dans un fichier qcow2 KVM, on voudrait récupérer l'espace disque non utilisé dans l'image disque d'une machine virtuelle fonctionnant sous VMware. Oui, je sombre dans la folie et la crasse.
$ sudo -i
# apt-get install zerofree
# mount -o remount,ro /
# # Évidemment, ça ne va pas fonctionner
# echo u > /proc/sysrq-trigger
# zerofree -v /dev/sdXy
# poweroff
Évidemment, il faut faire ça pour toutes les partitions…
Il faut utiliser l'utilitaire sdelete. La dernière version en date, la 2.0, ne fonctionne pas : elle reste bloquée à 100 %. Il faut donc récupérer la dernière version fonctionnelle, la 1.61. N'oublie pas d'utiliser VirusTotal. Je mets à disposition une copie : sdelete 1.61.
Ensuite, on ouvre une console en administrateur (rechercher cmd, clic droit -> Exécuter en tant qu'administrateur) et on lance sdelete -z c:
.
Attention : contrairement à zerofree
, sdelete
va remplir de 0 toooouuuut l'espace disque (et pas juste les blocks non alloués) donc le fichier image de la machine virtuelle va grossir jusqu'à atteindre la taille max de la partition !
Évidemment, il faut faire ça pour toutes les partitions…
À la fin de l'opération, on éteint la machine virtuelle.
Note : oui, au lieu d'utiliser sdelete, on aurait aussi pu démarrer la machine virtuelle sur un live CD GNU/Linux et utiliser la commande ntfswipe
. Tout comme sdelete
, ntfswipe
fait monter l'espace disque utilisé par l'image disque à la taille de la partition, mais sdelete
permet de maintenir le service en état de fonctionnement alors qu'un live CD interrompt immédiatement le service rendu par la machine virtuelle.
On active SSH sur l'ESXi, on s'y connecte puis on utilise la commande : vmkfstools -K /vmfs/volumes/<nom_banque_données>/<nom_machine_virtuelle>/<nom_image_disque>.vmdk
. Pour trouver ce chemin, rien de mieux que de regarder dans les paramètres de la machine virtuelle avec Vsphere client. On attend et on démarre la machine virtuelle. \o/
Note : je ne sais pas comment cela se passe en présence de snapshots : je les ai supprimé avant de faire cette manipulation.