QEMU-KVM:n yleiset toimintaperiaatteet

QEMU-KVM:n yleiset toimintaperiaatteet

Nykyinen käsitykseni:

1) KVM

KVM (Kernel-based Virtual Machine) on hypervisor (VMM – Virtual Machine Manager), joka toimii moduulina Linux-käyttöjärjestelmässä. Hypervisoria tarvitaan joidenkin ohjelmistojen ajamiseen olemattomassa (virtuaalisessa) ympäristössä ja samalla piilottaa tältä ohjelmistolta todellinen fyysinen laitteisto, jolla ohjelmisto toimii. Hypervisor toimii "välikkeenä" fyysisen laitteiston (isäntä) ja virtuaalisen käyttöjärjestelmän (vieras) välillä.

Koska KVM on Linux-ytimen vakiomoduuli, se saa kaikki tarvittavat hyödyt ytimestä (muistinhallinta, ajastin jne.). Ja vastaavasti, kaikki nämä edut menevät lopulta vieraille (koska vieraat työskentelevät hypervisorilla, joka toimii Linux-käyttöjärjestelmän ytimessä).

KVM on erittäin nopea, mutta se ei yksinään riitä käyttämään virtuaalista käyttöjärjestelmää, koska... Tämä vaatii I/O-emuloinnin. I/O:lle (CPU, levyt, verkko, video, PCI, USB, sarjaportit jne.) KVM käyttää QEMU:ta.

2) QEMU

QEMU (Quick Emulator) on emulaattori useille laitteille, jonka avulla voit ajaa yhdelle arkkitehtuurille suunniteltuja käyttöjärjestelmiä toisessa (esimerkiksi ARM -> x86). Prosessorin lisäksi QEMU emuloi erilaisia ​​oheislaitteita: verkkokortit, HDD, näytönohjaimet, PCI, USB jne.

Se toimii näin:

Ohjeet/binäärikoodi (esimerkiksi ARM) muunnetaan alustasta riippumattomaksi välikoodiksi TCG (Tiny Code Generator) -muuntimen avulla ja sitten tämä alustasta riippumaton binäärikoodi muunnetaan kohdekäskyiksi/koodiksi (esimerkiksi x86).

ARM –> välikoodi –> x86

Pohjimmiltaan voit käyttää virtuaalikoneita QEMU:ssa millä tahansa isännällä, jopa vanhemmilla prosessorimalleilla, jotka eivät tue Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine) -tekniikkaa. Tässä tapauksessa se kuitenkin toimii hyvin hitaasti, koska suorittava binäärikoodi on käännettävä uudelleen lennossa kahdesti käyttämällä TCG:tä (TCG on Just-in-Time-kääntäjä).

Nuo. QEMU itsessään on superhieno, mutta toimii hyvin hitaasti.

3) Suojarenkaat

QEMU-KVM:n yleiset toimintaperiaatteet

Binaariohjelmakoodi prosessoreissa toimii syystä, mutta se sijaitsee eri tasoilla (renkaat / suojarenkaat), joilla on eritasoinen pääsy tietoihin, etuoikeutetuimmista (Ring 0), rajoitetuimpiin, säänneltyimpiin ja "mutterit kiristettyinä" ” (Ring 3).

Käyttöjärjestelmä (OS-ydin) toimii Ring 0:lla (ydintila) ja voi tehdä mitä tahansa tiedoilla ja laitteilla. Käyttäjäsovellukset toimivat Ring 3 -tasolla (käyttäjätila) eivätkä he saa tehdä mitä haluavat, vaan niiden on pyydettävä käyttöoikeuksia joka kerta suorittaakseen tietyn toiminnon (siten käyttäjäsovellukset pääsevät vain omiin tietoihinsa, eivätkä ne voi saada jonkun toisen hiekkalaatikkoon). Rengas 1 ja 2 on tarkoitettu kuljettajien käyttöön.

Ennen Intel VT-x / AMD SVM:n keksimistä hypervisorit toimivat renkaalla 0 ja vieraat renkaalla 1. Koska renkaalla 1 ei ole tarpeeksi oikeuksia käyttöjärjestelmän normaaliin toimintaan, jokaisen vierasjärjestelmän etuoikeutetun kutsun yhteydessä hypervisorin täytyi muokata tätä kutsua lennossa ja suorittaa se renkaalla 0 (kuten QEMU tekee). Nuo. vierasbinaari EI suoritettiin suoraan prosessorilla, ja joka kerta käytiin läpi useita välimuutoksia lennossa.

Ylimääräiset kustannukset olivat huomattavat ja tämä oli suuri ongelma, ja sitten prosessorivalmistajat julkaisivat toisistaan ​​riippumatta laajennetun ohjesarjan (Intel VT-x / AMD SVM), jotka mahdollistivat vieraskäyttöjärjestelmän koodin suorittamisen. sUORAAN isäntäprosessorissa (ohittaen kaikki kalliit välivaiheet, kuten aiemmin).

Intel VT-x / AMD SVM:n myötä luotiin erityinen uusi rengastaso -1 (miinus yksi). Ja nyt hypervisor käyttää sitä, ja vieraat pyörivät renkaalla 0 ja saavat etuoikeutetun pääsyn suorittimeen.

Nuo. lopulta:

  • isäntä toimii renkaalla 0
  • vieraat työskentelevät kehällä 0
  • hypervisor toimii renkaalla -1

4) QEMU-KVM

KVM antaa vieraille pääsyn Ring 0:aan ja käyttää QEMU:ta I/O:n emulointiin (prosessori, levyt, verkko, video, PCI, USB, sarjaportit jne., joita vieraat "näkevät" ja joiden kanssa työskentelevät).

Siksi QEMU-KVM (tai KVM-QEMU) :)

CREDITS
Kuva herättää huomiota
Kuva suojarenkaista

PS Tämän artikkelin teksti julkaistiin alun perin Telegram-kanavalla @RU_Voip vastauksena yhden kanavan osallistujan kysymykseen.

Kirjoita kommentteihin, jos en ymmärrä aihetta oikein tai jos on jotain lisättävää.

Kiitos!

Lähde: will.com

Lisää kommentti