QEMU 5.2 a été publié , et cette nouvelle version comprend plus de 3200 modifications apportées par 216 développeurs , notamment la prise en charge de la migration à chaud pour RISC-V, la prise en charge expérimentale de l'hyperviseur RISC-V, la prise en charge de davantage de cartes, et bien plus encore.
Pour ceux qui ne connaissent pas QEMU, il s'agit d'un émulateur qui permet d'exécuter un programme créé pour une plateforme matérielle sur un système ayant une architecture complètement différente , par exemple, exécuter une application ARM sur un PC compatible x86.
En mode virtualisation dans QEMU, les performances du code en cours d'exécution dans l'environnement sandbox sont proches du système matériel en raison de l'exécution directe des instructions sur le processeur et de l'utilisation de l'hyperviseur Xen ou du module KVM.
Principales nouveautés de QEMU 5.2
Le système de compilation a changé ; la compilation de QEMU nécessite désormais l'installation du kit d'outils ninja.
La prise en charge du pilote de périphérique de stockage par blocs a été ajoutée pour utiliser le processus qemu-storage-daemon en arrière-plan comme backend pour vhost-user-blk, ainsi qu'une nouvelle commande QMP « block-export-add », qui remplace la commande « nbd-server-add » et prend en charge « qemu-storage-daemon ».
Pour les images qcow2, la prise en charge des registres L2 étendus a été ajoutée, permettant l'allocation d'espace par groupes incomplets (sous-clusters). Pour activer le L2 lors de la création d'une image, vous devez spécifier l'option « extended_l2 = on ».
Il convient également de souligner l' amélioration de la prise en charge de qemu en tant que client NBD, car elle réduit les situations provoquant des délais d'attente lors des échanges de données sur le réseau, et donc le blocage des machines virtuelles. Qemu-nbd permet de spécifier plusieurs options « -B nom » afin de désigner simultanément plusieurs bitmaps modifiés.
Autre changement important : le nouveau mode de migration haute performance avec transfert de données chiffré via TLS et multifd. La limite de bande passante par défaut pour la migration a été portée à 1 Gbit/s.
Le paramètre de migration « block-bitmap-mapping » a été ajouté, permettant un contrôle plus précis des bitmaps transférés lors de la migration. Ce paramètre fonctionne même si les noms d'hôtes diffèrent de ceux de la source à la destination.
De plus, de nouveaux appels « calc-dirty-rate » et « query-dirty-rate » ont été ajoutés pour prédire le taux de mise à jour pendant la migration, en tenant compte de la charge associée aux opérations en RAM.
Nous trouverons également une prise en charge pour les cartes mp2-an386, mp2-an500, raspi3ap (Raspberry Pi 3 modèle A+), raspi0 (Raspberry Pi Zero), raspi1ap (Raspberry Pi A+) et npcm750-evb/quanta-gsj.
Pour l'architecture AArch32, la prise en charge des extensions ARMv8.2 FEAT_FP16 (point flaoting de précision moyenne) est implémentée.
Enfin, de nouvelles options de virtiofsd sont également mentionnées pour contrôler le rendu des noms d'attributs xattr étendus sur le système invité, la connexion séparée des partitions avec différents points de montage sur le système hôte, et également pour spécifier un mécanisme d'isolation sandbox qui est une alternative à pivot_root.
Prise en charge de la migration en direct vers l'émulateur d'architecture RISC-V, ainsi que prise en charge expérimentale de l'hyperviseur pour RISC-V mise à jour vers la version 0.6.1. Ajout de la prise en charge des sockets NUMA sur les systèmes virt/Spike.
Parmi les autres changements notables de cette nouvelle version, on peut citer :
- Les commandes guest-get-devices, guest-get-disks et guest-ssh- {get, add-remove} -authorized-keys ont été ajoutées à l'agent invité QEMU (qemu-ga).
- Ajout de la prise en charge de la comptabilité basée sur kvm-steal-time.
- L'émulateur d'architecture HPPA prend en charge le démarrage de NetBSD et de très anciennes distributions Linux, telles que Debian 0.5 et 0.6.1.
- L'émulateur d'architecture PowerPC a amélioré la prise en charge de l'espacement défini par l'utilisateur pour la topologie NUMA.
- L'émulateur d'architecture s390 pour KVM a ajouté la prise en charge des instructions de diagnostic 0x318.
- Le générateur de code classique TCG (Tiny Code Generator) implémente la prise en charge d'instructions z14 supplémentaires.
- Sur les périphériques vfio-pci, des informations sur les fonctionnalités réelles de l'ordinateur sont fournies à la place des fonctionnalités émulées.
- L'émulateur d'architecture Xtensa ajoute la prise en charge du coprocesseur DFPU avec des opcodes à virgule flottante simple et double précision.