Algemene beginsels van QEMU-KVM werking

Algemene beginsels van QEMU-KVM werking

My huidige begrip:

1) KVM

KVM (Kernel-gebaseerde virtuele masjien) is 'n hiperviser (VMM - Virtual Machine Manager) wat as 'n module op Linux OS werk. 'n Hypervisor is nodig om sekere sagteware in 'n nie-bestaande (virtuele) omgewing te laat loop en terselfdertyd die werklike fisiese hardeware waarop hierdie sagteware loop, vir hierdie sagteware weg te steek. Die hypervisor dien as 'n "laag" tussen die fisiese hardeware (gasheer) en die virtuele bedryfstelsel (gas).

Aangesien KVM 'n standaardmodule van die Linux-kern is, ontvang dit al die byvoordele (geheuebestuur, skeduleerder, ens.) vanaf die kern. En dienooreenkomstig, op die ou end, gaan al hierdie voordele na die gaste (omdat die gaste werk op 'n hypervisor wat op / in die Linux-kern werk).

KVM is baie vinnig, maar op sigself is dit nie genoeg om 'n virtuele bedryfstelsel te laat loop nie, want dit vereis I/O-emulasie. Vir I/O (verwerker, skywe, netwerk, video, PCI, USB, seriële poorte, ens.) KVM gebruik QEMU.

2) QEMU

QEMU (Quick Emulator) is 'n emulator van verskeie toestelle wat jou toelaat om bedryfstelsels wat ontwerp is vir een argitektuur op 'n ander te laat loop (byvoorbeeld ARM –> x86). Benewens die verwerker, emuleer QEMU verskeie randtoestelle: netwerkkaarte, HDD, videokaarte, PCI, USB, ens.

Dit werk so:

Instruksies/binêre kode (byvoorbeeld ARM) word omgeskakel na intermediêre platform-onafhanklike kode deur gebruik te maak van die TCG (Tiny Code Generator)-omskakelaar, en dan word hierdie platform-onafhanklike binêre kode omgeskakel na teikeninstruksies/kode (byvoorbeeld x86).

ARM –> staging –> x86

Trouens, jy kan virtuele masjiene op QEMU op enige gasheer laat loop, selfs met ouer verwerkermodelle wat nie Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine) ondersteun nie. In hierdie geval sal dit egter baie stadig werk, as gevolg van die feit dat die uitvoerbare binêre kode twee keer met behulp van TCG hersaamgestel moet word (TCG is 'n Just-in-Time samesteller).

Dié. QEMU self is mega cool, maar dit werk baie stadig.

3) Beskermingsringe

Algemene beginsels van QEMU-KVM werking

Binêre programkode op verwerkers werk nie net so nie, maar is geleë op verskillende vlakke (ringe / Beskermingsringe) met verskillende vlakke van toegang tot data, van die mees bevoorregte (Ring 0), tot die mees beperkte, gereguleerde en “met vasgedraaide moere” (Ring 3 ).

Die bedryfstelsel (OS-kern) loop op Ring 0 (kernmodus) en kan doen wat hy wil met enige data en toestelle. Gebruikerstoepassings werk op die Ring 3-vlak (gebruikersmodus) en is nie geregtig om te doen wat hulle wil nie, maar in plaas daarvan moet hulle elke keer toegang versoek om een ​​of ander bewerking uit te voer (dus, gebruikerstoepassings het slegs toegang tot hul eie data en kan nie "kom" in "iemand anders se sandbox"). Ring 1 en 2 is vir bestuurdergebruik.

Voor die uitvinding van Intel VT-x / AMD SVM, het hipervisers op Ring 0 gehardloop en gaste het op Ring 1 gehardloop. Aangesien Ring 1 nie genoeg regte het vir die OS om behoorlik te funksioneer nie, met elke bevoorregte oproep van die gas, die hipervisor moes hierdie oproep dadelik verander en dit op Ring 0 uitvoer (baie soos QEMU doen). Dié. gas binêre NIE is direk op die verwerker uitgevoer, en elke keer het dit deur verskeie intermediêre wysigings gegaan.

Die bokoste was aansienlik en dit was 'n groot probleem, en toe het verwerkervervaardigers, onafhanklik van mekaar, 'n uitgebreide stel instruksies (Intel VT-x / AMD SVM) vrygestel wat jou toelaat om gas-bedryfstelselkode uit te voer DIREK op die gasheerverwerker (omseil enige duur tussenstappe, soos dit voorheen was).

Met die koms van Intel VT-x / AMD SVM, is 'n spesiale nuwe vlak Ring -1 (minus een) geskep. En nou loop die hypervisor daarop, en die gaste loop op Ring 0 en kry bevoorregte toegang tot die SVE.

Dié. uiteindelik:

  • gasheer wat op Ring 0 loop
  • gaste werk vir Ring 0
  • hipervisor wat op Ring -1 loop

4) QEMU-KVM

KVM gee gaste toegang tot Ring 0 en gebruik QEMU om die I/O (verwerker, skywe, netwerk, video, PCI, USB, seriële poorte, ens. wat gaste "sien" en mee werk) na te boots.

Vandaar QEMU-KVM (of KVM-QEMU) :)

KREDIETE
Foto om aandag te trek
Beeldbeskermingsringe

NS Die teks van hierdie artikel is oorspronklik in die Telegram-kanaal gepubliseer @RU_Voip as 'n antwoord op 'n vraag van een van die kanaallede.

Skryf in die kommentaar waar ek nie die onderwerp reg verstaan ​​nie of as daar iets is om by te voeg.

Dankie!

Bron: will.com

Voeg 'n opmerking