Comment augmenter la taille du disque d’une machine virtuelle KVM
KVM est une technologie de virtualisation intégrée au noyau Linux. Vous pouvez créer des machines virtuelles et interagir avec KVM à l’aide d’outils tels que virsh, virt-manager et GNOME Boxes.
Le manque d’espace disque est l’un des problèmes d’invité de VM les plus courants. Vous avez peut-être commencé avec un disque intentionnellement petit pendant que vous testiez une nouvelle machine virtuelle. Au fil du temps, vous accumulez des fichiers jusqu’à ce que le disque virtuel soit presque plein. Voici comment redimensionner votre disque sur place, sans avoir à copier des fichiers sur un disque plus grand séparé.
Sommaire
Arrêtez votre machine virtuelle
Commencez par arrêter votre machine virtuelle. Vous pouvez arrêter dans le système d’exploitation invité, en utilisant les commandes de votre interface utilisateur de gestion ou en émettant le virsh shutdown
commande:
$ sudo virsh list Id Name State ------------------------------ - ubuntu22.04 running $ sudo virsh shutdown ubuntu22.04 Domain ubuntu22.04 is being shutdown
Attendez que la VM soit éteinte. Il disparaîtra de la virsh list
sortie après l’arrêt. Vous pouvez voir les détails des machines virtuelles inactives en ajoutant le --all
drapeau:
$ sudo virsh list --all Id Name State ------------------------------ - ubuntu22.04 shut off
Trouver l’emplacement du disque
Ensuite, vous devez identifier le chemin où le disque de votre VM est enregistré. Chaque machine virtuelle obtient un fichier image disque qui stocke le contenu complet de son système de fichiers. Plusieurs formats peuvent être utilisés, notamment QCOW2, VDI, VMDK et VHDX.
La plupart des machines virtuelles créées dans un environnement KVM moderne auront une image disque QCOW2 stockée dans le /var/lib/libvirt/images
annuaire. Le nom du fichier correspondra au nom de la machine virtuelle affiché dans le virsh list
la sortie de la commande.
Vous pouvez vérifier le chemin d’accès au disque d’une machine virtuelle en exécutant virsh domblklist
:
$ sudo virsh domblklist ubuntu22.04 Target Source ----------------------------------------------------- sdb /var/lib/libvirt/images/ubuntu22.04.qcow2
Cela confirme que le fichier à redimensionner pour cette VM est /var/lib/libvirt/images/ubuntu22.04.qcow2
.
Supprimer les instantanés de VM
Vous ne pouvez pas redimensionner les images de disque sur lesquelles des instantanés sont stockés. Vous devrez supprimer les instantanés avant d’effectuer le redimensionnement. Si vous devez conserver des instantanés, clonez d’abord la machine virtuelle et utilisez la copie pour accéder aux états des instantanés. Vous pouvez ensuite supprimer les instantanés de la machine virtuelle d’origine et poursuivre votre opération de redimensionnement.
La virsh snapshot-list
La commande révélera si votre VM a des instantanés :
$ virsh snapshot-list ubuntu22.04 Name Creation Time State --------------------------------------------------- 13-09-2022 2022-09-13 22:36:41 +0100 shutoff
Supprimez-les avec le snapshot-delete
commande. L’instantané à supprimer est identifié à l’aide de <vm-name> <snapshot-name>
syntaxe.
$ virsh snapshot-delete ubuntu22.04 13-09-2022
Redimensionner le disque
La qemu-img
La commande peut maintenant être utilisée pour redimensionner le disque. Ses arguments sont le chemin d’accès au fichier image disque et la quantité de capacité supplémentaire à ajouter au disque.
$ sudo qemu-img resize /var/lib/libvirt/images/ubuntu22.04.qcow2 +16G
La +16G
signifie que le disque deviendra 16 Go plus grand que sa taille actuelle. Vous pouvez également utiliser d’autres suffixes standard tels que M pour mégaoctets et T pour téraoctets. Omettre le +
La notation indique à QEMU de donner au disque une taille spécifique, telle que 1T
pour fournir 1 To de capacité.
Le processus de redimensionnement ne devrait prendre que quelques secondes. Cela n’aura pas nécessairement un effet immédiat sur l’utilisation totale du disque de votre hôte en fonction du format d’image utilisé.
Extension des partitions du disque
Démarrez ensuite votre machine virtuelle et utilisez l’utilitaire de gestion de disque du système d’exploitation invité pour étendre la table de partition du disque dans l’espace libre nouvellement alloué. Sans cette étape, votre nouvelle capacité ne sera pas accessible au système d’exploitation.
Linux resize2fs
augmentera automatiquement une partition désignée dans la mesure maximale autorisée par tout espace libre disponible :
$ sudo resize2fs /dev/sda
Trouvez le bon appareil à cibler (/dev/sda
dans la commande ci-dessus) en exécutant df -h
et la recherche du système de fichiers qui est monté sur /
:
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda 32G 17G 15G 53% /
Pour redimensionner graphiquement la partition, vous pouvez utiliser les disques GParted ou GNOME dans un invité Linux ou la gestion des disques pour une machine Windows.
Voici la machine virtuelle Ubuntu 22.04 dont le disque a été redimensionné de 16 Go dans l’exemple ci-dessus. Après avoir démarré l’invité et ouvert GParted, les 16 Go d’espace libre sont visibles en tant que zone non allouée à la fin du disque.
L’espace est mis en service en cliquant avec le bouton droit sur la partition système existante, en sélectionnant « Redimensionner/Déplacer » dans le menu de GParted et en agrandissant la partition dans l’espace libre à la fin. Après application de l’opération, la partition a une capacité utile de 48 Go comme prévu.
Réduire la taille d’un disque
Les images de disque peuvent être réduites si votre machine virtuelle a reçu plus de stockage qu’elle n’en a besoin. C’est une opération potentiellement risquée. Sauvegardez votre disque avant de commencer le redimensionnement afin de pouvoir récupérer la situation si des données sont supprimées :
$ sudo cp /var/lib/libvirt/images/ubuntu22.04.qcow2 ubuntu22.04.qcow2.bak
Ensuite, vous devoir ajustez la table de partition depuis la machine virtuelle afin qu’il y ait de l’espace libre non alloué disponible sur le disque. Lorsque vous redimensionnez un disque de 32 Go à 20 Go, vous devez vous assurer qu’il y a au moins 12 Go d’espace libre à la fin de la table de partition, par exemple. Si vous oubliez cette étape, le redimensionnement supprimera sans discernement les données de la fin du disque, corrompant la table de partition et laissant votre VM impossible à démarrer.
Cette machine Windows 10 dispose d’un disque de 40 Go dont seulement 32 Go sont mappés en partitions. L’espace non alloué de 8 Go à la fin du lecteur signifie que vous pouvez en toute sécurité réduire la taille du disque jusqu’à 8 Go.
Une fois que vous avez préparé vos partitions, vous pouvez utiliser qemu-img resize
pour effectuer la réduction. La prise en charge de cette opération doit être activée manuellement à chaque fois en incluant le --shrink
drapeau avec votre commande. Cela vous permet de spécifier une taille cible inférieure à la capacité actuelle du disque. Vous pouvez également -8G
syntaxe pour réduire la taille d’un montant prédéterminé.
$ qemu-img resize --shrink /var/lib/libvirt/images/win10.qcow2 -8G
Après avoir redémarré l’invité, Windows confirme que l’espace libre de 8 Go a été supprimé de la fin du disque.
Sommaire
Les images de disque utilisées par les machines virtuelles KVM peuvent être redimensionnées avec le virsh
et qemu-img
commandes. Le redimensionnement d’un disque est fiable et devrait se terminer en quelques secondes, mais cela ne fonctionne pas lorsque les machines virtuelles ont stocké des instantanés. C’est toujours une bonne idée de sauvegarder votre image disque avant de commencer à travailler.
Certaines interfaces graphiques KVM telles que les boîtiers GNOME incluent la prise en charge des redimensionnements, vous permettant d’agrandir un disque sans utiliser le terminal. Quelle que soit la façon dont vous appliquez le redimensionnement, vous devez ensuite démarrer la machine virtuelle invitée et ajuster la table de partition pour utiliser l’espace. Cela permet au système d’exploitation d’utiliser la capacité accrue du disque.