Tous les utilisateurs de VHDX ont déjà rencontré ce problème. La taille du VHDX augmente avec le remplissage du disque ce qui constitue le point fort de la technologie. Malheureusement, l’inverse n’est pas réciproque. Je vais vous expliquer que faire.

A propos des VHDX

Le VHDX est l’évolution du VHD. Parmi les nombreux avantages, le plus important pour moi réside dans le fait que la taille du fichier est proportionnelle au volume de données contenu dans le disque virtuel. Dans la pratique, un VHDX vide formaté en NTFS occupe 4Mo. A partir de la, chaque fichier vient faire grossir la taille du VHDX. Maintenant, c’est là que c’est fort gênant, si l’on re-format le disque virtuel, le VHDX va continuer d’occuper le même espace. Dynamiquement, il ne peut que grossir, jamais se réduire seul. Je vais vous montrer comment réduire facilement l’occupation sur le disque via un outil Windows très connu : « diskpart ».

Solution

Attention : on ne peut pas redimensionner le fichier VHDX si ce dernier est utilisé par un système d’exploitation. Il faut donc arrêter la machine virtuelle qui l’utilise ou détacher le disque de l’OS. L’opération est par contre rapide, quelques minutes par To.

On commence par lancer par lancer une console cmd puis diskpart :

cmd

diskpart

Maintenant, on va dire à notre outil sur quel disque virtuel on veut travailer, puis on attache le disque :


select vdisk file="C:\...\disque.vhdx"

attach vdisk

exit

Nous allons procédé à la défragmentation du disque virtuel. Personnellement, j’ai fait le test avec et sans, la différence n’est pas énorme mais on gagne effectivement quelques précieux mégaoctets avec la défragmentation.

defrag /o /v x: (x: chemin de montage du vdisk)

Maintenant on retourne sur diskpart, on redonne à l’outil le chemin vers le VHDX puis nous allons l’attacher en mode lecture seule :

select vdisk file="chemin du fichier VHDX"

attach vdisk readonly

Dernière étape (toujours avec diskpart), on compact le fichier puis on détache le disque virtuel avant de sortir de diskpart.

compact vdisk

detach vdisk

exit

Dans mon cas, j’ai travaillé sur un VHDX contenant une base Exchange 2016 de 189 Go. Suite à de nombreuses opérations sur la base et les fichiers de journaux, le VHDX atteignait presque 850 Go. Le compactage a duré environ 3 minutes et je suis arrivé à un fichier de 240 Go. Mission réussie.