Résumé des points clés de l'examen sur la technologie de virtualisation

Résumé des points clés de l'examen sur la technologie de virtualisation

Qu'est-ce que la virtualisation ? quelle est la fonction

La virtualisation fait référence à la virtualisation d'un ordinateur en plusieurs ordinateurs logiques grâce à la technologie de virtualisation. Plusieurs ordinateurs logiques peuvent être exécutés simultanément sur un seul ordinateur. Chaque ordinateur logique peut exécuter un système d'exploitation différent et les applications peuvent s'exécuter dans des espaces indépendants sans s'affecter les unes les autres, améliorant ainsi considérablement l'efficacité du travail informatique.

Fonction : Exécutez plusieurs systèmes d'exploitation sur un seul ordinateur, facilitez la mise en place d'un environnement d'enseignement et d'un environnement de test, n'avez rien à voir avec l'environnement matériel, économisez les coûts de gestion et les investissements matériels et économisez de l'énergie.

Qu'est-ce que la virtualisation au niveau du système

​ Ajout de fonctions de serveur virtuel au niveau du système d'exploitation sans couche d'hyperviseur indépendante.

Au contraire, le système d'exploitation hôte lui-même est responsable de l'allocation des ressources matérielles entre plusieurs serveurs virtuels et de rendre ces serveurs indépendants les uns des autres. Une différence évidente est que si la virtualisation de la couche système d'exploitation est utilisée, tous les serveurs virtuels doivent exécuter le même système d'exploitation. .

​ Bien que la flexibilité de la virtualisation de la couche du système d'exploitation soit relativement faible, les performances de vitesse natives sont relativement élevées. De plus, comme l’architecture utilise un système d’exploitation standard unique sur tous les serveurs virtuels, elle est plus facile à gérer qu’un environnement hétérogène.

Qu'est-ce qu'une machine hôte ? Qu'est-ce qu'un client ?

​ La machine hôte est la machine hôte. Ce concept est relatif à la machine esclave. Par exemple, si vous avez une machine virtuelle installée, alors par rapport à la machine virtuelle, l'ordinateur que vous utilisez est la machine hôte et la machine virtuelle est installé sur la machine hôte. , doit s'exécuter sur l'hôte, l'hôte est un "hôte"

Un client peut être un appareil sur le réseau ou un utilisateur utilisant les services fournis par le serveur. Au sens large, "client" fait généralement référence à un ordinateur sur un réseau. Il fait également référence à l'utilisateur exécutant le côté client d'une application client/serveur, c'est-à-dire les logiciels qui résident sur une machine distante et qui doivent communiquer avec L'ordinateur récupère les informations, les traite de manière appropriée, puis les affiche sur la machine distante.

Qu'est-ce que l'hyperviseur

​ Une couche logicielle intermédiaire qui s'exécute entre le serveur physique sous-jacent et le système d'exploitation, permettant à plusieurs systèmes d'exploitation et applications de partager du matériel et d'accéder à tous les périphériques physiques du serveur, y compris les disques et la mémoire.

​ L'hyperviseur coordonne non seulement l'accès à ces ressources matérielles, mais assure également une protection entre chaque machine virtuelle. Lorsque le serveur démarre et exécute l'hyperviseur, il chargera les systèmes d'exploitation de tous les clients de la machine virtuelle et allouera des quantités appropriées de mémoire à chaque machine virtuelle. , CPU, réseau et disque

Qu’est-ce que la virtualisation des postes de travail ?

​ La virtualisation des postes de travail repose sur la virtualisation des serveurs. Sa fonction principale est de sauvegarder et de gérer de manière centralisée les environnements de bureau dispersés, y compris la livraison centralisée, les mises à jour centralisées et la gestion centralisée des environnements de bureau. Cela simplifie la gestion du bureau. Chaque terminal n'a pas besoin d'être entretenu séparément. Chaque terminal est mis à jour. Les données du terminal peuvent être stockées de manière centralisée dans la salle informatique centrale. La sécurité est beaucoup plus élevée que celle des applications de bureau traditionnelles.

​ La virtualisation des postes de travail permet à une personne de disposer de plusieurs environnements de bureau, ou un environnement de bureau peut être utilisé par plusieurs personnes, économisant ainsi les licences.

Le concept, les caractéristiques et le but de la technologie de virtualisation

Concept : La virtualisation est un processus qui transforme les ressources physiques en ressources logiquement gérables pour éliminer les barrières entre les structures physiques et abstraire, isoler, réaffecter et gérer diverses ressources par la logique.

Caractéristiques:

​ 1) Les objets de la virtualisation sont des ressources (notamment CPU, mémoire, stockage, réseau, etc.)

2) Les ressources virtualisées ont une représentation logique unifiée, et cette représentation logique peut fournir aux utilisateurs la plupart des mêmes fonctions, ou exactement les mêmes, que les ressources physiques virtualisées.

​ 3) Après une série de processus de virtualisation, les ressources ne sont plus soumises à des contraintes de ressources physiques, ce qui peut apporter aux utilisateurs plus d'avantages que l'informatique traditionnelle, notamment l'intégration des ressources, une utilisation améliorée, une informatique dynamique, etc.

Objectif : rationaliser l'infrastructure informatique et optimiser les méthodes de gestion des ressources pour intégrer les ressources, économiser les coûts potentiels, réduire les dépenses en ressources informatiques de l'entreprise, améliorer l'utilisation de l'équipement informatique et résoudre les problèmes de compatibilité entre différents serveurs physiques.

La relation entre la virtualisation et le cloud computing

​ D'un point de vue technique : la virtualisation est l'un des composants essentiels du cloud computing et l'une des technologies clés pour la réalisation de services de cloud computing et de stockage dans le cloud.

​ Du point de vue de la séparation des logiciels et du matériel : le cloud computing supprime en quelque sorte la connexion entre les logiciels et le matériel. La virtualisation est une méthode qui sépare efficacement les logiciels et le matériel.

​ Du point de vue des services réseau : le cloud computing est un modèle « tout est un service », qui fournit généralement des services sur le réseau ou le cloud. Les machines virtuelles de la couche de virtualisation fournissent des services de cloud computing et le réseau virtualisé fournit des services de stockage.

Classification de la virtualisation du point de vue de la plate-forme virtuelle (complète/paravirtualisation) et de la structure de mise en œuvre de la virtualisation (trois types), caractéristiques et comparaison de chaque type

Perspective de plateforme virtuelle (complète/paravirtualisation)

Entièrement virtualisé

​ Fait référence au système d'exploitation virtuel complètement isolé du matériel sous-jacent, et la couche intermédiaire de l'hyperviseur est transformée en code d'appel du système d'exploitation invité virtuel vers le matériel sous-jacent.

​ La virtualisation complète fournit toutes les abstractions du système physique sous-jacent et crée un nouveau système virtuel dans lequel le système d'exploitation invité peut s'exécuter sans nécessiter de modifications du système d'exploitation invité ou des applications.

Le principal inconvénient est que les performances ne sont pas aussi bonnes que celles du bare metal, car l'hyperviseur doit occuper certaines ressources et entraîner une surcharge du processeur.

​ Paravirtualisation

​ Fait référence à l'ajout d'instructions de virtualisation spécifiques au système d'exploitation invité virtuel, grâce auxquelles les ressources matérielles peuvent être directement appelées via la couche hyperviseur.

​ La paravirtualisation nécessite des modifications du système d'exploitation invité exécuté sur la machine virtuelle et offre des performances similaires

La paravirtualisation a de meilleures performances que la virtualisation complète

Structure de mise en œuvre de la virtualisation (trois types) :

Principalement divisé en virtualisation d'hyperviseur, virtualisation de modèle hôte et virtualisation de modèle hybride

Virtualisation de l'hyperviseur

La virtualisation de l'hyperviseur fait référence à l'installation de VMM directement sur le matériel sous-jacent en tant qu'hyperviseur à prendre en charge. L'hyperviseur sera responsable de la gestion de toutes les ressources et du support de l'environnement virtuel. Le problème avec cette structure est qu'il existe différents périphériques matériels et que VMM ne peut pas implémenter tous les pilotes de périphérique un par un, ce modèle prend donc en charge un nombre limité de périphériques.

Virtualisation du modèle hôte

​ Le modèle d'hébergement consiste à installer un système d'exploitation sur les ressources matérielles pour gérer les périphériques matériels. Le VMM fonctionne sur le système d'exploitation en tant qu'application et est responsable de la prise en charge de l'environnement virtuel. L'avantage de cette méthode est qu'elle n'a pas besoin de faire fonctionner le pilote de périphérique sous-jacent. L'inconvénient est que l'appel de vmm au matériel dépend de l'hôte, donc l'efficacité et les fonctions sont limitées et affectées par l'hôte.

​Virtualisation de modèles hybrides

​ Le modèle hybride est un mélange des deux modèles ci-dessus. Premièrement, VMMM gère directement le matériel, mais cédera certains droits de contrôle des périphériques aux machines virtuelles fonctionnant avec des privilèges. L'inconvénient de ce modèle est qu'il nécessite un système d'exploitation privilégié pour fournir Une commutation de mode se produira, entraînant une surcharge importante et une dégradation des performances.

Les avantages, les inconvénients et le champ d'application des technologies de virtualisation logicielle et matérielle (niveaux de prise en charge de la virtualisation)

​ Virtualisation matérielle

​ La virtualisation matérielle signifie que la plate-forme physique matérielle elle-même prend en charge l'interception et la redirection d'instructions spéciales. En termes simples, cela ne dépend pas du système d'exploitation, c'est-à-dire qu'il ne dépend pas du niveau de l'application ni du déploiement rétrograde.

​ Dans la technologie de virtualisation logicielle basée sur le matériel, le matériel constitue la base de la virtualisation et le matériel (principalement le processeur) prendra en charge le logiciel de virtualisation, réalisant ainsi la virtualisation des ressources matérielles.

​ Avantages : Bonnes performances, peut prendre en charge les systèmes d'exploitation 64 bits

​ Virtualisation de logiciels

​ Fait référence à l'utilisation d'un logiciel pour faire en sorte que les instructions privilégiées du client tombent dans une exception, incitant ainsi l'hôte à effectuer un traitement de virtualisation.

Les principales technologies utilisées sont la compression prioritaire et la traduction de code binaire

Avantages : coût relativement faible, déploiement facile, gestion et maintenance simples

​ Défauts : il y aura de nombreuses restrictions lors du déploiement, telles qu'une surcharge supplémentaire, et le système d'exploitation invité sera limité par l'environnement de la machine virtuelle.

Problèmes à résoudre par la virtualisation du processeur (lacunes structurelles du processeur x86) et des solutions logicielles et matérielles

Le problème à résoudre est d'implémenter la virtualisation dans l'architecture x86, ce qui nécessite que le système client rejoigne la couche de virtualisation pour réaliser le partage des ressources physiques. Par conséquent, cette couche de virtualisation doit s'exécuter au niveau Ring0 et le système d'exploitation invité ne peut s'exécuter qu'à des niveaux supérieurs à Ring0. Cependant, si les instructions privilégiées du système d'exploitation invité ne s'exécutent pas au niveau Ring0, elles auront une sémantique différente, produiront des effets différents, voire ne fonctionneront pas du tout. Il s'agit d'un défaut dans la conception de virtualisation de la structure du processeur. conduisent directement à des vulnérabilités de virtualisation. Afin de compenser cette vulnérabilité, avant que le matériel ne fournisse un support suffisant, en paravirtualisation, le système d'exploitation invité et la machine virtuelle doivent être compatibles, sinon la machine virtuelle ne peut pas faire fonctionner efficacement la machine hôte.

La solution est logicielle :

La technologie de virtualisation logicielle a déjà fourni deux solutions réalisables : la virtualisation complète et la paravirtualisation. La virtualisation complète peut utiliser la technologie de traduction dynamique du code binaire pour résoudre le problème des instructions privilégiées du client.L'avantage de cette méthode est que la conversion du code est effectuée de manière dynamique sans modifier le système d'exploitation invité, de sorte qu'elle peut prendre en charge plusieurs systèmes d'exploitation. La paravirtualisation résout le problème des machines virtuelles exécutant des instructions privilégiées en modifiant le système d'exploitation invité. Les systèmes d'exploitation invités hébergés par une plate-forme de virtualisation doivent modifier leur système d'exploitation pour remplacer toutes les instructions sensibles par des hyperappels vers la plate-forme de virtualisation sous-jacente.

La solution est basée sur le matériel :

Actuellement, Intel et AMD ont lancé respectivement les technologies de virtualisation assistée par matériel Intel VT et AMD SVM pour réaliser la virtualisation plus efficacement et plus facilement.

Caractéristiques techniques d'Intel VT-x, mode de fonctionnement et processus de fonctionnement VMX

​Caractéristiques techniques

​ IntelVT-x peut faire fonctionner un processeur comme plusieurs processeurs fonctionnant en parallèle, permettant ainsi à plusieurs systèmes d'exploitation de fonctionner simultanément sur un serveur physique. Il peut réduire (voire même éliminer) la concurrence et les restrictions en matière de ressources entre plusieurs systèmes d'exploitation de machines virtuelles, améliorer considérablement la sécurité et les performances des machines virtuelles du point de vue matériel et contribuer à améliorer la flexibilité et la stabilité des solutions de virtualisation logicielles. La technologie IntelVT-x peut empêcher le VMM (Virtual Machine Monitor) de participer au traitement des demandes « d'interruption » de la machine virtuelle et à l'exécution d'instructions spécifiques. De cette façon, le VMM sera plus rapide, plus fiable et plus sûr lors de son fonctionnement et de son contrôle. la machine virtuelle.

En outre, les fonctionnalités de migration de machines virtuelles d'IntelVT-x peuvent également fournir une protection solide pour les investissements informatiques et améliorer encore la flexibilité du basculement, de l'équilibrage de charge, de la reprise après sinistre et de la maintenance.

​ Mode de fonctionnement VMX

img

Processus :

​ VMM exécute l'instruction VMXON pour entrer en mode de fonctionnement VMX. À ce moment, le CPU est en mode de fonctionnement racine VMX et le logiciel VMM commence à s'exécuter.

​ VMM exécute l'instruction VMLAUNCH ou VMRESUME pour générer une entrée VM et le logiciel client commence à s'exécuter. À ce moment, le processeur passe du mode root au mode non root.

​ Lorsque le client exécute une instruction privilégiée ou qu'une interruption ou une exception se produit dans le fonctionnement du client, VM-Exit est déclenché et tombe dans le VMM. Le CPU passe automatiquement du mode non root au mode root. Le VMM le gère en conséquence selon la raison de VM-Exit, puis continuez à exécuter le client.

​ Si VMM décide de quitter, exécutez VMXOFF pour fermer le mode de fonctionnement VMX

La composition et le fonctionnement de base du vCPU

​ Composition : La première est la structure VMCS (Virtual Machine Control Structure, structure de contrôle de machine virtuelle), qui stocke le contenu utilisé et mis à jour par le matériel, qui est principalement des registres virtuels ; la seconde est le contenu qui n'est pas enregistré par VMCS mais est utilisé et mis à jour par le VMM, principalement les parties autres que VCMS

img

Opérations de base:

​Création de vCPU : Créer un VCPU revient en fait à créer un descripteur de vCPU. Puisque le descripteur de vCPU est une structure, créer un descripteur de vCPU consiste à allouer de la mémoire de la taille correspondante. Une fois le descripteur vCPU créé, il nécessite une initialisation supplémentaire avant de pouvoir être utilisé.

​ Fonctionnement du vCPU : Une fois le vCPU créé et initialisé, son exécution sera planifiée par le planificateur. Le planificateur sélectionnera le VCPU à exécuter selon un certain algorithme de stratégie.

​ Sortie de vCPU : comme le processus, vCPU en tant qu'unité de planification ne peut pas s'exécuter éternellement. Il se fermera toujours pour diverses raisons, telles que l'exécution d'instructions privilégiées, des interruptions physiques, etc. Cette sortie se manifeste sous la forme d'une VM dans VT-x -Exit . Le traitement de la sortie du vCPU est au cœur de VMM pour la virtualisation du CPU, comme la simulation de diverses instructions privilégiées.

​ Réopération du vCPU : fait référence au VMM qui est chargé de remettre en service le vCPU après avoir traité la sortie du VCPU.

Résoudre les problèmes de mappage pour la virtualisation de la mémoire

La tâche principale de la virtualisation de la mémoire est de traiter deux aspects des problèmes

​ Mettre en œuvre la virtualisation de l'espace d'adressage et maintenir la relation de mappage entre l'adresse physique de l'hôte et l'adresse physique de l'invité

Une fois l'espace d'adressage physique invité introduit, la virtualisation de l'espace d'adressage peut être prise en charge via deux traductions d'adresse, c'est-à-dire la conversion de l'adresse virtuelle invité - de l'adresse physique de l'invité - de l'adresse physique de l'hôte. Au cours du processus de mise en œuvre, la conversion de GVA en GPA est généralement spécifiée par le système d'exploitation invité via la table de pages pointée par le champ d'état invité CR3 dans VMCS. La conversion de GPA en HPA est déterminée par le VMM. Le VMM utilise généralement une structure de données partielle pour enregistrer la relation de mappage dynamique entre l'adresse physique du client et l'adresse physique de l'hôte.

Intercepter l'accès de l'hôte à l'adresse physique du client et la convertir en adresse physique de l'hôte en fonction de la relation de mappage enregistrée

La solution la plus simple consiste à laisser le client déclencher une exception à chaque fois qu'il accède à l'espace d'adressage physique de l'hôte et à demander au VMM d'interroger la table de traduction d'adresses pour imiter son accès. Cependant, les performances de cette méthode sont très médiocres.

Concepts de base d'Intel EPT et processus de mise en œuvre de la traduction d'adresses

Concepts de base

​ EPT est un mécanisme matériel conçu par Intel pour la virtualisation de la mémoire. Il est principalement utilisé pour contrôler l'accès des invités à la mémoire physique. Afin de simplifier la mise en œuvre de la virtualisation de la mémoire et d'améliorer les performances de la virtualisation de la mémoire, Intel a lancé l'EPT (Enhanced Page Table). technologie, c'est-à-dire ajouter une table de pages EPT à la table de pages d'origine pour réaliser un autre mappage. De cette manière, les deux traductions d'adresses GVA-GPA-HPA sont automatiquement complétées par le matériel CPU.

Processus de conversion d'adresse

​ Le processus de traduction approximative de GVA et HPA via EPT :

​ Le CPU en mode non root charge le gCR3 du processus invité ;

​ gCR3 est GPA et le CPU doit interroger la table des pages EPT pour implémenter GPA->HPA ;

​ Sinon, le processeur déclenche une violation EPT, qui est interceptée et traitée par l'hyperviseur ;

​ Supposons que le client dispose de tables de pages de niveau M et que l'EPT hôte ait des niveaux N. Dans le pire des cas où tous les TLB sont manqués, des accès mémoire MxN se produiront pour terminer une traduction d'adresse pour le client ;

Caractéristiques techniques du processus de remappage Intel VT-d et DMA

​Caractéristiques techniques

Intel VT-d est l'implémentation de la technologie IOMMU sur Intel. Il fait partie de la technologie de virtualisation Intel. Il cible principalement le sous-système d'E/S. L'implémentation se fait principalement via l'introduction d'une unité de redirection sur le matériel. L'unité de redirection matérielle utilise Il est utilisé pour rediriger les opérations DMA et interrompre la livraison du sous-système d'E/S, aidant ainsi le VMM à mettre en œuvre la virtualisation du sous-système d'E/S.

Processus de remappage DMA

1. Allouez la mémoire physique qui doit être mappée

2. Allouez IOVA selon le mécanisme de mise en cache RCACE

3. Basé sur TTBR et IOVA, créez des entrées de table de pages et établissez le mappage entre IOVA et PA

4. Par défaut, le mappage d'IOVA vers PA sera mis en cache dans le TLB interne du matériel SMMU. Lorsque l'appareil accède à l'IOVA correspondant, il le récupérera d'abord dans le cache TLB. En cas d'échec, il recherchera le table des pages (mémoire) niveau par niveau selon l'IOVA. Si elle n'est pas trouvée, interruption de défaut de page

Comment fonctionne l'équipement TUN/TAP

​ Principe de fonctionnement du pilote Tun/Tap Dans les réseaux informatiques, TUN et TAP sont des périphériques réseau virtuels dans le noyau du système d'exploitation. Différent des périphériques ordinaires implémentés par des cartes réseau matérielles, ces périphériques réseau virtuels sont tous implémentés dans un logiciel et un périphérique réseau qui fournit logiciel fonctionnant sur un système d’exploitation avec exactement les mêmes fonctionnalités que le matériel.

Structure du cadre du système KVM, relation entre QEMU et KVM

La relation entre QEMU et KVM

Du point de vue de QEMU, lors de l'exécution de la machine virtuelle, QEMU effectue les paramètres du noyau via l'interface d'appel système fournie par le module KVM. Le module KVM est chargé de placer la machine virtuelle dans un mode spécial du processeur.

​ Structure du cadre du système KVM

Le pilote kvm est désormais un module du noyau Linux. Son rôle principal est de créer une machine virtuelle, d'allouer de la mémoire virtuelle, de lire et d'écrire des registres de CPU virtuel et d'exécuter le CPU virtuel.

​ Un autre composant est Qemu. QEMU est un simulateur et un virtualiseur de machine open source général. Sa fonction principale est de simuler le composant espace utilisateur de la machine virtuelle, de fournir un modèle de périphérique io et d'accéder aux périphériques.

Processus d'initialisation KVM

​Initialisez le matériel du processeur. KVM détectera d'abord le processeur du système actuel pour garantir que le processeur prend en charge la virtualisation. Lorsque le module KVM est chargé, le module KVM initialisera d'abord la structure de données interne. La partie noyau de KVM s'exécute sur l'hôte en tant que module de noyau chargeable dynamiquement. L'un des modules est un module KVM indépendant de la plate-forme qui implémente l'infrastructure de virtualisation de base, et l'autre est un module KVM_Intel lié à la plate-forme matérielle ou voir module kvm_amd

​ Activez le commutateur de mode de virtualisation dans le registre de contrôle du processeur CR4 et mettez le système d'exploitation hôte en mode racine en mode de virtualisation en exécutant des instructions spécifiques.

Le module KVM crée un fichier de périphérique spécial /dev/kvm et attend les commandes de l'espace utilisateur (par exemple, s'il faut créer un invité virtuel, quel type d'invité virtuel créer, etc.)

Commandes QEMU courantes pour créer des fichiers image de machine virtuelle et démarrer des machines virtuelles

​Connaissances de base de Qemu

Comparaison de trois solutions de virtualisation d'E/S : logiciel pur/paravirtualisation/allocation directe

Virtualisation complète des E/S

​ Cette méthode est plus simple à comprendre : en termes simples, elle simule les requêtes d'E/S de la machine virtuelle sous forme de logiciel pur. En prenant qemu-kvm comme exemple, le module kvm du noyau est chargé d'intercepter les requêtes d'E/S, puis de notifier le modèle de périphérique qemu de l'espace utilisateur via des notifications d'événements. qemu est responsable de terminer la simulation de ces E/S. demande.

Avantages : Il n'est pas nécessaire de modifier le système d'exploitation ou de changer de pilote, cette méthode offre donc une meilleure « portabilité » et « compatibilité » pour diverses technologies de virtualisation.

Inconvénients : la simulation logicielle pure a de faibles performances. De plus, les requêtes d'E/S émises par la machine virtuelle nécessitent de multiples interactions entre la machine virtuelle et le VMM, ce qui entraîne un grand nombre de changements de contexte et une surcharge énorme.

Paravirtualisation des E/S

Compte tenu des faibles performances de la simulation logicielle pure de la virtualisation complète des E/S, la paravirtualisation des E/S fait un pas en avant. Il fournit un mécanisme qui permet à l'invité et à l'hôte d'établir une connexion et de communiquer directement, en abandonnant la méthode d'interception et de simulation, obtenant ainsi des performances plus élevées.

Deux points méritent attention :

​ 1) Le mécanisme de l'anneau d'E/S est adopté afin que l'invité et l'hôte puissent partager la mémoire, réduisant ainsi l'interaction entre la machine virtuelle et le VMM.

2) Utilisez des événements et des mécanismes de rappel pour implémenter la communication entre l'invité et l'hôte VMM. De cette manière, lors du traitement des interruptions, le mécanisme d'événement et de rappel peut être directement utilisé sans changement de contexte, ce qui réduit la surcharge.

Avantages : Les performances ont été considérablement améliorées par rapport à la virtualisation complète des E/S

​ Inconvénients : Cela nécessite de modifier le noyau et les pilotes du système d'exploitation, il y aura donc des problèmes de portabilité et d'applicabilité, entraînant une utilisation limitée.

Technologie pass-through ou pass-through d'E/S

Les deux méthodes de virtualisation ci-dessus sont toujours implémentées au niveau logiciel, et les performances ne seront naturellement pas trop élevées. La meilleure façon d'améliorer les performances est de les résoudre au niveau matériel. Si la machine virtuelle occupe exclusivement un périphérique physique et utilise le périphérique physique comme l'hôte, les performances seront sans aucun doute les meilleures.

​ La technologie de transfert d'E/S est proposée pour accomplir une telle chose. Elle permet aux machines virtuelles d'accéder directement aux périphériques physiques grâce à l'assistance matérielle sans passer par VMM ni être interceptée par VMM. La technologie de transfert d'E/S nécessite une prise en charge matérielle. . Pour compléter, le premier choix à cet égard est la technologie VT-d d'Intel, qui répond à ces exigences grâce à une transformation au niveau de la puce. Cette méthode a bien sûr une amélioration qualitative des performances, ne nécessite pas de modification du système d'exploitation et a de bonnes portabilité.

​ Bien que la technologie de transfert d'E/S élimine la surcharge supplémentaire provoquée par l'intervention du VMM dans les E/S de la machine virtuelle, les périphériques d'E/S génèrent un grand nombre d'interruptions pendant les opérations d'E/S. Pour des raisons de sécurité et pour d'autres raisons, les machines virtuelles ne peuvent pas directement Les interruptions sont gérées, les demandes d'interruption doivent donc être acheminées de manière sûre et isolée par le VMM vers la machine virtuelle appropriée.

​ Par conséquent, en utilisation réelle, une combinaison de méthodes de virtualisation logicielle et matérielle est utilisée.

Le principe de virtio implémentant la paravirtualisation des E/S

​ Virtio simule les périphériques d'E/S. Le pilote frontal (frondend, tel que virtio-blk, virtio-net, etc.) est le module pilote qui existe dans le client, et le gestionnaire back-end est implémenté dans QEMU. Entre les pilotes front-end et back-end, deux couches sont également définies pour prendre en charge la communication entre le client et QEMU.

La couche "virtio" est l'interface de file d'attente virtuelle, qui attache conceptuellement le pilote frontal au gestionnaire back-end. Un pilote frontal peut utiliser 0 ou plusieurs files d'attente, selon les besoins. La file d'attente virtuelle est en fait implémentée comme point de connexion entre le système d'exploitation invité et l'hyperviseur, mais elle peut être implémentée de n'importe quelle manière, à condition que le système d'exploitation invité et le programme back-end virtio suivent certaines normes et l'implémentent de manière mutuelle. manière correspondante. . Le virtio-ring implémente un tampon en anneau (ring buffer), qui est utilisé pour enregistrer des informations sur l'exécution du pilote frontal et du gestionnaire back-end, et il peut enregistrer plusieurs requêtes d'E/S du pilote frontal. en même temps et les transmettre au back-end. Traitement par lots, et enfin appelle réellement le pilote de périphérique dans l'hôte pour implémenter les opérations d'E/S physiques. De cette façon, le traitement par lots peut être implémenté conformément à l'accord au lieu de chaque La demande d'E/S chez le client doit être traitée une seule fois, améliorant ainsi l'efficacité du client et l'efficacité de l'échange d'informations de l'hyperviseur.

La fonction et le principe de la technologie des ballons

​ Fonction : De manière générale, pour modifier la mémoire hôte occupée par le client, vous devez d'abord arrêter le client, modifier la configuration de démarrage, puis redémarrer le client. La technologie de ballonnement peut ajuster dynamiquement la mémoire hôte pendant l'exécution du client. Les ressources de mémoire de l'hôte occupées, au lieu d'arrêter le client, sont complétées par le pilote de ballon du client travaillant avec l'hôte via l'interface de file d'attente virtuelle Virtio. La fonction de BalloonDriver est qu'il peut à la fois augmenter la taille de la mémoire qu'il utilise et réduire la mémoire. . Montant d'utilisation.

Principe : La mémoire du ballon peut être utilisée par l'hôte et ne peut être ni accessible ni utilisée par le client.

​ Lorsque l'utilisation de la mémoire de l'hôte est limitée et qu'il n'y a pas beaucoup de mémoire libre, vous pouvez demander au client de recycler une partie de la mémoire qui a été allouée au client. Le client libérera sa mémoire libre, provoquant le gonflement du ballon mémoire, permettant à l'hôte de recycler le ballon. La mémoire contenue peut être utilisée par d'autres processus (ou d'autres clients)

Au contraire, lorsque la mémoire du client est insuffisante, la bulle mémoire du client peut également être compressée pour libérer une partie de la mémoire dans la bulle mémoire, permettant ainsi au client d'utiliser plus de mémoire.

Caractéristiques, fonctions et étapes de fonctionnement de la migration en ligne V2V dans KVM

​ Fonction : la migration en ligne V2V réduit considérablement les temps d'arrêt de la migration des machines virtuelles.

Caractéristiques : La migration V2V consiste à déplacer les systèmes d'exploitation et les données entre les machines virtuelles, en tenant compte des différences au niveau de l'hôte et en gérant différents matériels virtuels. Une machine virtuelle est migrée du VMM sur une machine physique vers le VMM sur une autre machine physique. Les deux types de VMM peuvent être identiques ou différents. Par exemple, VMware migre vers KVM et KVM migre vers KVM. Il existe plusieurs façons de déplacer une machine virtuelle d'un système VM Host à un autre.

Exécuter les étapes

​ (1) Le système vérifie si les paramètres de stockage et de réseau du serveur cible sont corrects et pré-réserve les ressources de la machine virtuelle du serveur cible.

(2) Lorsque la machine virtuelle est toujours en cours d'exécution sur le serveur source, toutes les images mémoire sont copiées sur le serveur cible lors du premier cycle. Pendant ce processus, KVM surveillera toujours toutes les modifications apportées à la mémoire.

(3) Dans les boucles suivantes, vérifiez si la mémoire de la boucle précédente a changé. Si un changement se produit, VMM copiera à nouveau les pages mémoire modifiées, à savoir les pages sales, sur le serveur cible et écrasera les pages mémoire précédentes. À ce stade, VMM continuera à surveiller les modifications de la mémoire.

​ (4) VMM continue le cycle de copie de la mémoire et le nombre de pages sales qui doivent être copiées diminue progressivement jusqu'à ce que certaines conditions soient atteintes (par exemple, la différence de mémoire entre les serveurs source et cible atteint un certain niveau), la mémoire L'opération de copie se termine et le serveur source est arrêté en même temps.

(5) Lorsque les serveurs source et cible sont en panne, copiez les pages sales du dernier cycle et l'état de fonctionnement du serveur d'origine sur le serveur cible.

(6) Enfin, déverrouillez le stockage du serveur source et verrouillez-le sur le serveur cible. Démarrez le serveur cible, restaurez la connexion avec les ressources du réseau de stockage et poursuivez l'exécution après avoir repris le serveur d'origine.

Architecture technologique de sécurité de la virtualisation KVM

​ Sécurité des communications entre QEMU et Libvirt

Sécurité du module QEMU

​ Sécurité des communications entre les modules QEMU et KVM

Sécurité des modules KVM

Vérification de l'intégrité de la machine virtuelle

​Protection des données des machines virtuelles

​Sécurité du réseau des machines virtuelles

Utilisation de base du moniteur QEMU

​ Le moniteur QEMU (moniteur) est une console permettant à QEMU d'interagir avec les utilisateurs. Il est généralement utilisé pour fournir des fonctions plus complexes pour l'émulateur QEMU, notamment l'ajout et le déplacement de certaines images multimédias pour le client, la pause et la poursuite de l'exécution du client. . , création et suppression d'instantanés, sauvegarde et restauration de l'état du client à partir des fichiers disque, migration dynamique des clients, interrogation de divers paramètres d'état actuel des clients, etc.

Commandes communes du moniteur QEMU

​ Commandes auxiliaires : telles que les informations et l'aide

help peut interroger et afficher de brèves informations d'aide pour une certaine commande.

La commande info est principalement utilisée pour afficher les informations d'exécution de la machine virtuelle.

La commande info affiche diverses informations sur l'état actuel du système. Son format de commande est le suivant : sous-commande info

​Commandes de classe d'appareil :

La commande change modifie la configuration d'un appareil

​ Tel que "change vnc localhost:2 " pour modifier la configuration VNC

"changer le mot de passe vnc" change le mot de passe de la connexion VNC

"change ide1-cd0 /path/a.iso" modifie le CD chargé par le lecteur de CD-ROM sur l'ordinateur client.

Les commandes usb_add et usb_del ajoutent et suppriment un périphérique USB

Par exemple, "usb_add host:002.004" signifie ajouter le périphérique 004 dans le bus USB n°002 de l'hôte au client.

"usb_del 0.2" signifie supprimer un périphérique USB dans le client

Les commandes device_add et device_del ajoutent ou suppriment dynamiquement des appareils

Par exemple, « device_addpic-assign,host=02:00.0,id=mydev » attribue au client le périphérique PCI portant le numéro BDF 0.2:00.0 dans l'hôte.

​ Et "device_del mydev" supprime le périphérique qui vient d'être ajouté

La commande mouse_move déplace le curseur de la souris vers les coordonnées spécifiées

​ Par exemple, "mouse_move 500 500" déplace le curseur de la souris vers la position avec les coordonnées (500 500)

La commande mouse_button simule un clic sur les boutons gauche, central et droit de la souris

1 est le bouton gauche, 2 est le bouton du milieu et 4 est le bouton droit.

La commande sendkey keys envoie des clés (ou des combinaisons de touches) au client, tout comme les effets de touches dans un environnement non virtuel. Si une combinaison de plusieurs clés est envoyée en même temps, utilisez "-" pour connecter les clés.

​ Par exemple, la commande « sendkey ctrl-alt-f2 » envoie la clé « ctrl-alt-f2 » au client, ce qui basculera la sortie d'affichage du client vers le terminal tty2 ;

La commande "snedkey ctrl-alt-delete" enverra la touche "ctrl-alt-delete", qui redémarrera le système en mode texte.

​Commandes de classe client

Les commandes savevm, loadvm et delvm créent, chargent et suppriment des instantanés client

Par exemple, « savevm mytag » signifie créer un instantané avec la balise « mytag » en fonction de l'état actuel du client.

​ "loadvm mytag" signifie charger l'état lorsque l'indicateur client est un instantané "mytag"

​ Et "del mytag" signifie supprimer l'instantané client du drapeau "mytag".

​Les commandes migrate et migrate_cancel migrent et annulent dynamiquement la migration dynamique

Par exemple, "migrate tcp:des_ip:6666" signifie migrer dynamiquement le client actuel vers le port TCP6666 de l'hôte avec l'adresse IP "des_ip".

​ Et "migrate_cancel" signifie annuler le processus de migration dynamique en cours.

La commande commit valide les parties modifiées dans l'image disque (lorsque le paramètre de démarrage "-snapshot" est utilisé) ou valide les parties modifiées dans le fichier image principal.

Commandes system_powerdown, system_reset et system_wakeup

Parmi eux, la commande system_powerdown envoie une notification d'événement de mise hors tension au client et amène généralement le client à effectuer une opération d'arrêt ;

La commande system_reset réinitialise le système client, ce qui équivaut à débrancher l'alimentation, à la brancher et à appuyer sur le bouton d'alimentation pour l'allumer ;

et la commande migrate_cancel pour migrer dynamiquement et annuler la migration dynamique

Par exemple, "migrate tcp:des_ip:6666" signifie migrer dynamiquement le client actuel vers le port TCP6666 de l'hôte avec l'adresse IP "des_ip".

​ Et "migrate_cancel" signifie annuler le processus de migration dynamique en cours.

La commande commit valide les parties modifiées dans l'image disque (lorsque le paramètre de démarrage "-snapshot" est utilisé) ou valide les parties modifiées dans le fichier image principal.

Commandes system_powerdown, system_reset et system_wakeup

Parmi eux, la commande system_powerdown envoie une notification d'événement de mise hors tension au client et amène généralement le client à effectuer une opération d'arrêt ;

La commande system_reset réinitialise le système client, ce qui équivaut à débrancher l'alimentation, à la brancher et à appuyer sur le bouton d'alimentation pour l'allumer ;

system_wakeup réveille le client de la suspension

Guess you like

Origin blog.csdn.net/qq_61897309/article/details/128661031