Allgemeng Betribsprinzipien vun QEMU-KVM

Allgemeng Betribsprinzipien vun QEMU-KVM

Meng aktuell Verständnis:

1) KVM

KVM (Kernel-baséiert Virtual Machine) ass en Hypervisor (VMM - Virtual Machine Manager) deen als Modul op Linux OS leeft. En Hypervisor ass néideg fir e puer Software an engem net existente (virtuellen) Ëmfeld ze lafen a gläichzäiteg vun dëser Software déi richteg kierperlech Hardware op där dës Software leeft ze verstoppen. Den Hypervisor handelt als "Spacer" tëscht der kierperlecher Hardware (Host) an dem virtuelle OS (Gaascht).

Zënter KVM ass e Standardmodul vum Linux Kernel, kritt se all déi erfuerderlech Goodies vum Kernel (Memory Management, Scheduler, etc.). An deementspriechend ginn um Enn all dës Virdeeler un d'Gäscht (well d'Gäscht un engem Hypervisor schaffen, deen op / am Linux OS Kernel leeft).

KVM ass ganz séier, awer eleng ass et net genuch fir e virtuellt OS ze lafen, well ... Dëst erfuerdert I/O Emulatioun. Fir ech / O (CPU, Disken, Reseau, Video, PCI, USB, Serien Häfen, etc.) KVM benotzt QEMU.

2) QEMU

QEMU (Quick Emulator) ass en Emulator fir verschidden Apparater, deen Iech erlaabt Betribssystemer ze lafen entworf fir eng Architektur op eng aner (zum Beispill ARM -> x86). Zousätzlech zum Prozessor emuléiert QEMU verschidde Peripheriegeräter: Netzwierkkaarten, HDD, Videokaarten, PCI, USB, etc.

Et funktionnéiert esou:

Instruktioune / binäre Code (zum Beispill ARM) ginn an Zwëschenplattform-onofhängege Code ëmgewandelt mam TCG (Tiny Code Generator) Konverter an dann gëtt dëse plattformonofhängege Binärcode an Zilinstruktiounen / Code ëmgewandelt (zum Beispill x86).

ARM –> intermediate_code –> x86

Wesentlech kënnt Dir virtuelle Maschinnen op QEMU op all Host lafen, och mat eelere Prozessormodeller déi Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine) net ënnerstëtzen. Wéi och ëmmer, an dësem Fall wäert et ganz lues funktionnéieren, wéinst der Tatsaach datt den ausféierende binäre Code zweemol op der Flucht nei kompiléiert muss ginn, mat TCG (TCG ass e Just-in-Time Compiler).

Déi. QEMU selwer ass mega cool, awer et funktionnéiert ganz lues.

3) Schutz Réng

Allgemeng Betribsprinzipien vun QEMU-KVM

Binäre Programmcode op Prozessoren funktionnéiert aus engem Grond, awer läit op verschiddene Niveauen (Réng / Schutzringen) mat verschiddenen Niveauen vum Datezougang, vun de privilegéierten (Ring 0), bis zum limitéiertsten, geregelt a "mat den Nëss festgehalen " (Réng 3).

De Betribssystem (OS Kernel) leeft op Ring 0 (Kernel Modus) a ka mat all Daten an Apparater maachen wat et wëllt. Benotzerapplikatiounen funktionnéieren um Ring 3 Niveau (Benotzermodus) an däerfen net alles maachen wat se wëllen, awer mussen amplaz Zougang all Kéier ufroen fir eng bestëmmte Operatioun auszeféieren (also hunn d'Benotzerapplikatiounen nëmmen Zougang zu hiren eegene Donnéeën a kënnen net "kréien" an” engem aneren seng Sandkëscht). Ring 1 an 2 si geduecht fir Chauffeuren ze benotzen.

Virun der Erfindung vun Intel VT-x / AMD SVM, lafe Hypervisoren op Ring 0, a Gäscht lafen op Ring 1. Zanter Ring 1 huet net genuch Rechter fir normal Operatioun vum OS, mat all privilegiéierten Uruff vum Gaaschtsystem, de Hypervisor huet dësen Uruff op der Flucht ze änneren an et op Ring 0 auszeféieren (wéi QEMU mécht). Déi. Gaascht binär NET gouf direkt op de Prozessor ausgefouert, an all Kéier duerch e puer Tëschenzäit Ännerungen op der fléien.

D'Overhead war bedeitend an dëst war e grousse Problem, an dunn hunn d'Prozessorhersteller, onofhängeg vuneneen, en erweiderten Set vun Instruktiounen verëffentlecht (Intel VT-x / AMD SVM) déi et erlaabt de Gaascht OS Code auszeféieren. DIREKT op den Hostprozessor (iwwergoen all deier Zwëschenschrëtt, wéi dat virdru de Fall war).

Mat dem Advent vum Intel VT-x / AMD SVM gouf e speziellen neie Ringniveau -1 (minus een) erstallt. An elo leeft den Hypervisor drop, an d'Gäscht lafen op Ring 0 a kréien privilegiéierten Zougang zu der CPU.

Déi. schlussendlech:

  • Host leeft op Ring 0
  • Gäscht schaffen um Ring 0
  • hypervisor leeft op Ring -1

4) QEMU-KVM

KVM gëtt Gäscht Zougang zu Ring 0 a benotzt QEMU der I / O ze emuléieren (Prozessor, Scheiwen, Reseau, Video, PCI, USB, Serien Häfen, etc. datt Gäscht "gesinn" an Aarbecht mat).

Dofir QEMU-KVM (oder KVM-QEMU) :)

KREDITEN
Bild fir Opmierksamkeet ze lackele
Bild vun Schutz Réng

PS Den Text vun dësem Artikel gouf ursprénglech am Telegram Kanal publizéiert @RU_Voip als Äntwert op eng Fro vun engem vun de Kanal Participanten.

Schreift an de Kommentarer wou ech d'Thema net richteg verstinn oder wann et eppes ze addéieren ass.

Merci!

Source: will.com

Setzt e Commentaire