Agrandir un disque virtuel dynamique de VirtualBox

VirtualBox est un outil fantastique dont j'ai parlé plusieurs fois, notamment dans mon dernier billet. Il est simple d'utilisation, et met la virtualisation à la portée de tous, avec une interface graphique facile à prendre en main; une excellente traduction et une nombre impressionnant de sites proposant des tutoriels de qualité, dont beaucoup sont en français.

Cependant, il arrive parfois qu'on doive faire appel à cette satanée ligne de commande, chère aux geeks de tous poils, pour certaines tâches sortant un peu de l'ordinaire. Agrandir un disque virtuel prévu trop petit, même s'il est dynamique, est une de ces tâches, et elle est moins simple qu'il n'y parait.

En effet, rien n'est prévu pour réaliser cette opération. Il faut donc créer un nouveau disque plus grand, y transférer l'image de l'ancienne partition par clonage, agrandir la partition pour lui faire occuper tout l'espace du nouveau disque, tester, puis, si tout est bon, basculer définitivement.
Attention : ne supprimez pas le fichier contenant l'ancien disque avant d'être certain que le nouveau est pleinement opérationnel.

Définissons dans un premier temps les pré-requis de départ :

  • VirtualBox est installé et opérationnel (dans le cadre de ce tutoriel, la version utilisée est la 3.0.12)
  • La taille maximale d'origine du disque qui vous pose ce problème de taille est supérieure à 4 Go (les disques plus petits ne peuvent être agrandi par cette procédure)

On supposera aussi que ce disque virtuel réside dans l'emplacement par défaut : ~/.VirtualBox/HardDisks.
Voici maintenant comment il faut procéder :

1 - Création du nouveau disque de taille supérieure

Cette opération peut bien entendu être réalisée via l'interface graphique, mais comme nous avons choisi de jouer au geek, utilisons donc la commande suivante :

VBoxManage createhd --filename NouveauDisque.vdi --size 20000 --remember

Ceci va créer un nouveau disque dur dynamique d'une taille maximale de 20 Go (20000 Mo) qui prendra la forme du fichier ~/.VirtualBox/HardDisks/NouveauDisque.vdi (emplacement par défaut); l'option --remember ayant pour effet de référencer ce nouveau disque dans la liste des supports virtuels déclarés.

2 - Clonage de l'ancien disque vers le nouveau disque

Cette opération là ne peut pas être réalisée autrement qu'avec la commande suivante (les geeks ont donc raison, c'est plus puissant) :

VBoxManage clonehd AncienDisque.vdi NouveauDisque.vdi --existing

Bien entendu, vous devrez remplacer les noms AncienDisque.vdi et NouveauDisque.vdi par ceux qui conviennent dans votre cas, éventuellement en remplaçant le nom par le path explicite complet si ceux ci ne sont pas situés dans le répertoire par défaut.

3 - Attacher le nouveau disque à la place de l'ancien

Cette opération est certainement celle qui est la plus facile à réaliser avec l'interface graphique, mais continuons à jouer au geek et utilisons pour le faire les deux commandes suivantes; la première détache le 'vieux' disque, la seconde attache le nouveau, fraichement cloné :

VBoxManage modifyvm NomMachineVirtuelle --hda none
VBoxManage modifyvm NomMachineVirtuelle --hda NouveauDisque.vdi

4 - Agrandir la partition clonée pour occuper tout le nouveau disque

Pour réaliser cette opération il peut être nécessaire de vérifier dans la configuration de la machine dans quel ordre elle exploite ses ressources pour booter. En effet, cette opération ne doit pas être réalisée par VirtualBox lui même, mais requiers de lancer une outil dédié à ce genre de manipulation; GParted Live est une excellente idée, libre et gratuite, mais d'autres peuvent mieux vous convenir en fonction de vos habitudes (System Rescue CD, ou le live CD de votre distribution favorite).

Placez l'image ISO de l'outil de votre choix en source primaire de boot de votre machine virtuelle. Si j'ai l'image de GPartedLive dans mon home, la version ligne de commande sera :

VBoxManage modifyvm NomMachineVirtuelle --dvd ~/gparted-live-0.4.8-6.iso

Démarrez là, procédez à l'agrandissement de la partition en vous référant au manuel de l'outil que vous avez choisi; puis arrêtez votre machine.

5 - Tester le démarrage avec le nouveau disque

Retirez l'image ISO de votre lecteur de CD virtuel. Là encore, jouons là geek :

VBoxManage modifyvm NomMachineVirtuelle --dvd none

Normalement, une fois l'image ISO retirée, le nouveau disque devrait redevenir celui sur lequel se fait le démarrage. Vous pouvez toujours vérifier dans la configuration de la machine, deux précautions valent mieux qu'une.

Démarrez la machine virtuelle et vérifiez que tous ce passe normalement. Contrôlez que l'espace disponible est maintenant conforme à la nouvelle taille définie au départ et que l'opération qui vous a amené à devoir agrandir votre disque peut maintenant s'exécuter sans se plaindre d'un manque de place.

6 - Éliminer l'ancien disque dur

Lorsque tous ces contrôles sont positifs et que vous êtes vraiment sûr que l'ancien disque ne vous est plus d'aucune utilité, vous pouvez le retirer de la liste des supports virtuels et détruire le fichier qui le contenait. C'est très simple à faire avec l'interface graphique de VirtualBox, mais puisque nous avons choisi d'être geek, allons jusqu'au bout :

VBoxManage closemedium disk AncienDisque.vdi

Et pour l'effacer (sous réserve qu'il soit situé dans son emplacement par défaut)

rm ~/.VirtualBox/HardDisks/AncienDisque.vdi

Voilà, c'est tout. Votre machine virtuelle est prête pour de nouvelles aventures.