Principes généraux de fonctionnement de QEMU-KVM

Principes généraux de fonctionnement de QEMU-KVM

Ma compréhension actuelle :

1) KVM

KVM (Machine Virtuelle BasĂ©e sur le Noyau) – un hyperviseur (VMM – Gestionnaire de Machines Virtuelles) qui fonctionne comme un module sur le systĂšme d'exploitation Linux. L'hyperviseur est nĂ©cessaire pour exĂ©cuter un logiciel dans un environnement virtuel non existant tout en masquant le matĂ©riel physique rĂ©el sur lequel ce logiciel fonctionne. L'hyperviseur agit comme un « intermĂ©diaire » entre le matĂ©riel physique (hĂŽte) et le systĂšme d'exploitation virtuel (invitĂ©).

Puisque KVM est un module standard du noyau Linux, il bénéficie de toutes les fonctionnalités offertes par le noyau (gestion de la mémoire, planificateur, etc.). Par conséquent, tous ces avantages profitent également aux invités (car les invités fonctionnent sur l'hyperviseur qui tourne dans le noyau du systÚme d'exploitation Linux).

KVM est trÚs rapide, mais à lui seul, il n'est pas suffisant pour lancer un systÚme d'exploitation virtuel, car une émulation I/O est nécessaire. Pour l'I/O (processeur, disques, réseau, vidéo, PCI, USB, ports série, etc.), KVM utilise QEMU.

2) QEMU

QEMU (Émulateur Rapide) – un Ă©mulateur de divers dispositifs qui permet d'exĂ©cuter des systĂšmes d'exploitation conçus pour une architecture sur une autre (par exemple, ARM → x86). En plus du processeur, QEMU Ă©mule divers pĂ©riphĂ©riques : cartes rĂ©seau, disques durs, cartes graphiques, PCI, USB, etc.

Ça fonctionne comme ceci :

Les instructions / code binaire (par exemple, ARM) sont convertis en code intermédiaire indépendant de la plateforme à l'aide du convertisseur TCG (Tiny Code Generator), puis ce code binaire indépendant de la plateforme est converti en instructions / code cible (par exemple, x86).

ARM → code_intermĂ©diaire → x86

En gros, vous pouvez exĂ©cuter des machines virtuelles sur QEMU sur n'importe quel hĂŽte, mĂȘme avec d'anciens modĂšles de processeurs qui ne supportent pas Intel VT-x (Technologie de Virtualisation Intel) / AMD SVM (Machine Virtuelle SĂ©curisĂ©e AMD). Cependant, dans ce cas, cela fonctionnera trĂšs lentement, en raison du fait que le code binaire d'exĂ©cution doit ĂȘtre recompilĂ© Ă  la volĂ©e deux fois, Ă  l'aide de TCG (TCG est un compilateur Just-in-Time).

C'est-Ă -dire que QEMU est en soi super, mais il fonctionne trĂšs lentement.

3) Anneaux de protection

Principes généraux de fonctionnement de QEMU-KVM

Le code binaire sur les processeurs ne fonctionne pas n'importe comment, mais se situe à différents niveaux (anneaux / Anneaux de Protection) avec différents niveaux d'accÚs aux données, du plus privilégié (Anneau 0) au plus restreint, régulé et « avec des contraintes » (Anneau 3).

Le systĂšme d'exploitation (noyau OS) fonctionne en Ring 0 (mode noyau) et peut faire tout ce qu'il veut avec n'importe quelles donnĂ©es et dispositifs. Les applications utilisateur fonctionnent au niveau Ring 3 (mode utilisateur) et ne peuvent pas faire ce qu'elles veulent, elles doivent Ă  chaque fois demander l'accĂšs pour effectuer une opĂ©ration (de cette façon, les applications utilisateur n'ont accĂšs qu'Ă  leurs propres donnĂ©es et ne peuvent pas « s'immiscer » dans le « bac Ă  sable » des autres). Les Rings 1 et 2 sont destinĂ©s Ă  ĂȘtre utilisĂ©s par les pilotes.

Avant l'invention d'Intel VT-x / AMD SVM, les hyperviseurs fonctionnaient en Ring 0, tandis que les invitĂ©s fonctionnaient en Ring 1. Étant donnĂ© que le Ring 1 n'a pas suffisamment de droits pour le bon fonctionnement de l'OS, Ă  chaque appel privilĂ©giĂ© du systĂšme invitĂ©, l'hyperviseur devait modifier cet appel Ă  la volĂ©e et l'exĂ©cuter en Ring 0 (un peu comme le fait QEMU). C'est-Ă -dire que le code binaire de l'invitĂ© NON s'exĂ©cutait directement sur le processeur, subissant Ă  chaque fois plusieurs modifications intermĂ©diaires Ă  la volĂ©e.

Les frais généraux étaient considérables et c'était un gros problÚme, et à ce moment-là, les fabricants de processeurs, indépendamment les uns des autres, ont publié un ensemble d'instructions étendu (Intel VT-x / AMD SVM) permettant d'exécuter du code des systÚmes d'exploitation invités DIRECTEMENT sur le processeur hÎte (en contournant toutes sortes d'étapes intermédiaires coûteuses, comme cela se faisait auparavant).

Avec l'apparition d'Intel VT-x / AMD SVM, un nouveau niveau spécial Ring -1 (moins un) a été créé. Et maintenant, l'hyperviseur fonctionne à ce niveau, tandis que les invités fonctionnent en Ring 0 et obtiennent un accÚs privilégié au CPU.

C'est-à-dire qu'en définitive :

  • l'hĂŽte fonctionne en Ring 0
  • les invitĂ©s fonctionnent en Ring 0
  • l'hyperviseur fonctionne en Ring -1

4) QEMU-KVM

KVM donne accÚs aux invités au Ring 0 et utilise QEMU pour l'émulation I/O (processeur, disques, réseau, vidéo, PCI, USB, ports série, etc., que voient et avec lesquels interagissent les invités).

D'oĂč QEMU-KVM (ou KVM-QEMU) 🙂

CRÉDITS
Image pour attirer l'attention
Image Protection rings

P.S. Le texte de cet article a été initialement publié sur le canal Telegram @RU_Voip en réponse à la question d'un des membres du canal.

Écrivez dans les commentaires, Ă  quels endroits je ne comprends pas correctement le sujet ou s'il y a des Ă©lĂ©ments Ă  ajouter.

Merci!

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster