Introduction
Lorsque vous travaillez avec un serveur cloud distant, vous travaillez généralement avec une machine virtuelle : une instance isolée et cloisonnée d’un système d’exploitation entier qui s’exécute au sein d’un cluster de serveurs plus important. Vous pouvez également travailler avec des machines virtuelles localement sur votre ordinateur de bureau, en utilisant des logiciels tels que QEMU ou VirtualBox. Les machines virtuelles peuvent inclure une interface de bureau complète, ou elles ne peuvent exécuter qu’un serveur SSH pour permettre des connexions de terminal. Dans les deux cas, elles sont techniquement similaires et font des hypothèses similaires. Mis à part les optimisations cloud à grande échelle, la seule différence significative entre les environnements de virtualisation réside dans les disques durs et les options de configuration des machines virtuelles. Ceux-ci sont désignés sous le terme d’images de machines virtuelles et sont formatés différemment selon les fournisseurs.
Dans ce tutoriel, vous apprendrez comment convertir entre les formats d’image de machine virtuelle (y compris qcow2
, vdi
, vhd
et vmdk
), afin de pouvoir transporter vos environnements virtuels de votre ordinateur de bureau vers le cloud et inversement selon vos besoins.
Prérequis
Les commandes de ce tutoriel peuvent être exécutées sur Windows, macOS ou Linux, tant que vous pouvez installer QEMU et VirtualBox ainsi que leurs outils en ligne de commande. Ce tutoriel fournit des instructions d’installation en utilisant le gestionnaire de paquets Homebrew. Vous pouvez installer Homebrew sur macOS, sur Linux, ou sur Windows sous WSL2.
Si vous utilisez un droplet DigitalOcean, vous devez disposer d’au moins 2 CPU et de 2 Go de mémoire.
Vous aurez également besoin d’au moins 10 Go d’espace libre pour exécuter les commandes de ce tutoriel.
Remarque : Si vous utilisez macOS avec un processeur Apple Silicon (fabriqué en 2020 et plus récent), vous ne pourrez utiliser que QEMU et non VirtualBox.
QEMU
QEMU est le logiciel de virtualisation open source le plus puissant et largement pris en charge. Il s’exécute sur toutes les principales plates-formes (y compris Windows, macOS, Linux et d’autres systèmes d’exploitation tels qu’Android) et est capable à la fois de la virtualisation et de l’émulation selon les besoins. Par exemple, si vous exécutez une image de serveur Linux sur un bureau Windows (un cas d’utilisation courant), ces deux plates-formes partagent une architecture sous-jacente commune (Intel/AMD x86), de sorte que QEMU peut atteindre des performances optimales grâce à la virtualisation. Si vous utilisez QEMU pour mélanger et assortir des architectures, par exemple en exécutant Linux ou Windows x86 (en tant que système d’exploitation « hôte » ou « invité ») avec les architectures ARM de macOS ou Android, QEMU utilisera automatiquement l’émulation pour traduire les architectures.
Comparé à la virtualisation, l’émulation n’est généralement pas utilisée dans des environnements de production car elle entraîne une pénalité de performance significative. Cependant, le fait que QEMU traite la virtualisation et l’émulation comme quasi-équivalentes offre des avantages significatifs en termes de compatibilité, car cela signifie que les mêmes formats d’image et les mêmes outils peuvent être utilisés dans chaque scénario.
QEMU est un logiciel en ligne de commande et présente une courbe d’apprentissage élevée par rapport aux logiciels de virtualisation de bureau tels que VMware ou VirtualBox en raison du grand nombre d’options de configuration des machines virtuelles. Il peut éventuellement être utilisé avec des interfaces graphiques telles que QtEmu sur Windows ou Linux et UTM sur macOS. Ce tutoriel fournira des instructions en ligne de commande pour travailler avec QEMU.
Installation de QEMU
Pour installer QEMU, utilisez la commande brew install
de Homebrew :
- brew install qemu
Cela fournira l’ensemble complet d’outils et de commandes QEMU, y compris qemu-img
, qui est utilisé pour convertir des images de machines virtuelles en ligne de commande. Vérifiez que vous avez accès à la commande qemu-img
en exécutant which qemu-img
:
- which qemu-img
Output/usr/local/bin/qemu-img
Remarque : Vous pouvez également installer QEMU sur Windows en utilisant son programme d’installation natif, si vous préférez travailler sur Windows sans WSL2.
QEMU fournit la plupart des fonctionnalités dont vous aurez besoin dans ce tutoriel. Vous pouvez également installer VirtualBox, un autre package de virtualisation populaire.
VirtualBox
VirtualBox est un logiciel de virtualisation open source fourni par Oracle. Il prend en charge tous les systèmes d’exploitation x86 (Windows, Linux et macOS sur les ordinateurs fabriqués avant 2020). Il ne prend pas en charge l’émulation ni les architectures non x86, le rendant principalement utile pour exécuter Linux sous Windows et vice versa. Cependant, il est également plus simple à utiliser que QEMU, propose des paramètres par défaut largement compatibles et inclut une interface graphique par défaut.
Il ne fournit pas autant de fonctionnalités en ligne de commande que QEMU, il est donc souvent associé à des logiciels d’orchestration dédiés comme Vagrant pour automatiser et reproduire les configurations de machine virtuelle. Cependant, il inclut l’outil en ligne de commande VBoxManage
, qui peut être utilisé pour manipuler certaines images de machine virtuelle.
Installation de VirtualBox
Pour installer VirtualBox sur macOS, utilisez brew install
avec le drapeau --cask
, car VirtualBox est distribué sous forme de bundle d’application complet, que Homebrew appelle un cask:
- brew install --cask virtualbox
Pour installer VirtualBox sur Ubuntu ou les distributions Linux dérivées de Debian (y compris sous WSL2), commencez par utiliser apt update
pour rafraîchir vos sources de paquets, puis apt install
:
- sudo apt update
- sudo apt install virtualbox
Pour installer VirtualBox sur Windows sans WSL2, consultez sa page de téléchargement.
Après avoir installé VirtualBox, vérifiez que vous avez accès à la commande vboxmanage
en exécutant which vboxmanage
:
- which vboxmanage
Output/usr/local/bin/vboxmanage
Il existe des alternatives à QEMU et VirtualBox pour la virtualisation. Cependant, la plupart d’entre elles sont spécifiques à une plate-forme (comme Hyper-V sur Windows) ou conçues pour une utilisation à grande échelle en entreprise (comme VMware). Elles ne seront pas abordées directement dans ce tutoriel, mais vous convertirez leurs formats d’image dans les étapes suivantes.
Création d’une image de machine virtuelle avec QEMU
Pour démontrer la conversion d’images de machines virtuelles, vous pouvez commencer par créer une image avec QEMU. Vous pouvez sauter cette section si vous avez déjà une image à convertir.
Utilisez la commande qemu-img create
avec le drapeau -f qcow2
pour créer une image dans le format qcow2
par défaut de QEMU:
- qemu-img create -f qcow2 ubuntu-desktop-22.04.qcow2 10G
À ce stade, vous aurez créé une image de machine virtuelle vide. Même si vous l’avez nommée ubuntu-desktop-22.04.qcow2
et avez fourni une capacité de 10G
, à ce stade, elle n’aura ni Ubuntu 22.04 installé ni une taille de 10 Go.
OutputFormatting 'ubuntu-desktop-22.04.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=10737418240 lazy_refcounts=off refcount_bits=16
Les images QEMU prendront toujours le moins d’espace possible sur votre disque, tout en reflétant leur capacité maximale déclarée à tout logiciel s’exécutant dans la machine virtuelle. Dans ce cas, 10 Go seraient la capacité que votre machine virtuelle pense avoir disponible, et la taille maximale à laquelle l’image de la machine virtuelle se redimensionnera automatiquement.
A typical next step would be to install Ubuntu 22.04 onto the virtual machine, using a Ubuntu 22.04 ISO. However, you can skip this step for this tutorial, as you won’t actually be working directly with this virtual machine. An ISO is another type of disk image that is usually read-only, and was historically written onto CD and DVD installation media, rather than an image of a writable hard disk. Other software exists for manipulating ISO images, such as mkisofs and dd. To learn more about installing Linux using QEMU, refer to the QEMU documentation.
Conversion d’une image QEMU vers un autre format
Une fois que vous avez créé une image de machine virtuelle, vous pouvez utiliser qemu-img convert
pour la convertir vers d’autres formats. vdi
est le format d’image par défaut de VirtualBox. Par défaut, cela n’effacera pas l’image VM originale, mais en créera une nouvelle :
- qemu-img convert -f qcow2 ubuntu-desktop-22.04.qcow2 -O vdi ubuntu-desktop-22.04.vdi
Le drapeau -f
est utilisé pour spécifier le format d’entrée et le nom de fichier d’entrée. Le drapeau -O
est utilisé pour spécifier le format de sortie et le nom de fichier de sortie. Vous pouvez également inclure le drapeau -p
pour afficher une barre de progression, utile lors de la conversion d’images très volumineuses. L’image que vous avez créée à la dernière étape se convertira instantanément, car elle ne contient encore aucun contenu. Vous pouvez confirmer la création de ubuntu-desktop-22.04.vdi
en utilisant ls
:
- ls ubuntu-desktop-22.04.vdi
Outputubuntu-desktop-22.04.vdi
D’autres formats courants incluent vmdk
, principalement utilisé par VMware, et vhd
, principalement utilisé par Hyper-V de Microsoft. Vous pouvez également créer une image « raw » si votre logiciel le requiert, en suivant l’étape suivante.
Conversion d’autres formats de machine virtuelle vers QEMU
Si vous avez une image au format vdi
, vous pouvez utiliser la commande vboxmanage
fournie par VirtualBox pour la convertir :
- vboxmanage clonemedium ubuntu-desktop-22.04.vdi ubuntu-desktop-22.04.img --format raw
Output0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone medium created in format 'raw'. UUID: 0501e707-c94e-4103-9069-d7b64a933d78
Notez que cela enregistrera automatiquement l’image créée dans la configuration locale de VirtualBox, ce qui peut être gênant si vous essayez de créer des copies transitoires. Vous devrez peut-être supprimer manuellement les nouvelles entrées de l’interface VirtualBox si vous enregistrez involontairement des doublons.
Les images de machine virtuelle brutes ne sont pas du tout compressées, donc cette commande créera en fait un fichier complet de 10 Go, contrairement à avant. Vous pouvez le convertir de nouveau au format qcow2
pour l’utiliser avec QEMU en inversant la syntaxe de la dernière étape :
- qemu-img convert -f raw ubuntu-desktop-22.04.img -O qcow2 ubuntu-desktop-22.04-new.qcow2
Vous pouvez maintenant supprimer l’image brute pour récupérer de l’espace disque :
- rm ubuntu-desktop-22.04.img
Enfin, vous pouvez utiliser les commandes qemu-img check
et qemu-img info
pour afficher certaines métadonnées de vos images de machine virtuelle :
- qemu-img check ubuntu-desktop-22.04.qcow2
OutputNo errors were found on the image.
Image end offset: 262144
- qemu-img info ubuntu-desktop-22.04.qcow2
Outputimage: ubuntu-desktop-22.04.qcow2
file format: qcow2
virtual size: 10 GiB (10737418240 bytes)
disk size: 196 KiB
cluster_size: 65536
Format specific information:
compat: 1.1
compression type: zlib
lazy refcounts: false
refcount bits: 16
corrupt: false
extended l2: false
Pour plus d’informations sur la conversion d’images avec qemu-img
, consultez la page de manuel de qemu-img ou sa documentation officielle.
Remarque : Vous pouvez également télécharger ces images de machine virtuelle sur DigitalOcean pour les utiliser comme images de serveur cloud, en suivant la documentation d’Image Personnalisée de DigitalOcean.
Conclusion
Dans ce tutoriel, vous avez utilisé les outils en ligne de commande de QEMU et VirtualBox pour créer, convertir et exporter des images de machine virtuelle. Vous avez passé en revue quelques exemples courants de formats d’image de machine virtuelle, ainsi que quelques hypothèses par défaut utiles pour travailler avec des machines virtuelles. Il est toujours utile de comprendre les technologies sous-jacentes aux concepts courants tels que la virtualisation, surtout si vous avez besoin de migrer vers d’autres architectures ou fournisseurs de cloud.
Ensuite, vous voudrez peut-être consulter notre guide sur la mise à l’échelle des machines virtuelles selon vos besoins.
Source:
https://www.digitalocean.com/community/tutorials/how-to-convert-virtual-machine-image-formats