Almennar starfsreglur QEMU-KVM

Almennar starfsreglur QEMU-KVM

Núverandi skilningur minn:

1) KVM

KVM (Kernel-based Virtual Machine) er hypervisor (VMM – Virtual Machine Manager) sem keyrir sem eining á Linux OS. Ofurvisor er nauðsynlegur til að keyra einhvern hugbúnað í (sýndar)umhverfi sem ekki er til og á sama tíma fela fyrir þessum hugbúnaði raunverulegan líkamlegan vélbúnað sem þessi hugbúnaður keyrir á. Hypervisorinn virkar sem „spacer“ á milli líkamlegs vélbúnaðar (hýsils) og sýndarstýrikerfisins (gestur).

Þar sem KVM er stöðluð eining í Linux kjarnanum, fær hann allar nauðsynlegar dágóður frá kjarnanum (minnisstjórnun, tímaáætlun osfrv.). Og í samræmi við það, á endanum, fara allir þessir kostir til gesta (þar sem gestirnir vinna á hypervisor sem keyrir á/í Linux OS kjarnanum).

KVM er mjög hratt, en í sjálfu sér er það ekki nóg til að keyra sýndarstýrikerfi, því... Þetta krefst I/O eftirlíkingar. Fyrir I/O (CPU, diska, net, myndband, PCI, USB, raðtengi o.s.frv.) notar KVM QEMU.

2) QEMU

QEMU (Quick Emulator) er keppinautur fyrir ýmis tæki sem gerir þér kleift að keyra stýrikerfi sem eru hönnuð fyrir einn arkitektúr á öðrum (til dæmis ARM -> x86). Auk örgjörvans líkir QEMU eftir ýmsum jaðartækjum: netkortum, HDD, skjákortum, PCI, USB o.s.frv.

Það virkar svona:

Leiðbeiningar/tvíundarkóða (til dæmis ARM) er breytt í millistigsóháðan kóða með því að nota TCG (Tiny Code Generator) breytirinn og síðan er þessum vettvangsóháða tvöfalda kóða breytt í markleiðbeiningar/kóða (til dæmis x86).

ARM –> millikóði –> x86

Í meginatriðum geturðu keyrt sýndarvélar á QEMU á hvaða vél sem er, jafnvel með eldri örgjörvagerðum sem styðja ekki Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine). Hins vegar, í þessu tilfelli, mun það virka mjög hægt, vegna þess að keyrandi tvöfaldur kóða þarf að vera endursamsetur á flugi tvisvar, með því að nota TCG (TCG er Just-in-Time þýðanda).

Þeir. QEMU sjálft er mega flott, en það virkar mjög hægt.

3) Verndarhringir

Almennar starfsreglur QEMU-KVM

Tvöfaldur forritakóði á örgjörvum virkar af ástæðu, en er staðsettur á mismunandi stigum (hringir / verndarhringir) með mismunandi stigum gagnaaðgangs, frá þeim sem hafa mesta forréttindi (hringur 0), til þeirra takmarkaða, stjórnaða og „með rúturnar hertar “ (Hringur 3).

Stýrikerfið (OS kjarna) keyrir á Ring 0 (kjarnahamur) og getur gert hvað sem það vill með hvaða gögn og tæki sem er. Notendaforrit starfa á Ring 3 stigi (notendahamur) og mega ekki gera hvað sem þeir vilja, heldur verða þeir að biðja um aðgang í hvert skipti til að framkvæma ákveðna aðgerð (þannig hafa notendaforrit aðeins aðgang að eigin gögnum og geta ekki „fá inn í sandkassa einhvers annars). Hringur 1 og 2 eru ætlaðir til notkunar fyrir ökumenn.

Áður en Intel VT-x / AMD SVM var fundið upp, keyrðu hypervisors á hring 0 og gestir keyrðu á hring 1. Þar sem hringur 1 hefur ekki næg réttindi fyrir eðlilega notkun stýrikerfisins, með hverju forréttindasímtali frá gestakerfinu, hypervisor þurfti að breyta þessu símtali á flugi og framkvæma það á Ring 0 (líkt og QEMU gerir). Þeir. gestur tvöfaldur EKKI var keyrt beint á örgjörvann og fór í hvert skipti í gegnum nokkrar millibreytingar á flugu.

Yfirkostnaðurinn var umtalsverður og þetta var mikið vandamál og síðan gáfu framleiðendur örgjörva, óháð hver öðrum, út aukið sett af leiðbeiningum (Intel VT-x / AMD SVM) sem gerði kleift að keyra stýrikerfi gestakóða. BEINT á hýsingargjörvanum (hjá öllum kostnaðarsömum milliskrefum, eins og áður var).

Með tilkomu Intel VT-x / AMD SVM var sérstakt nýtt hringstig -1 (mínus einn) búið til. Og nú keyrir hypervisorinn á honum og gestirnir keyra á Ring 0 og fá forréttindaaðgang að CPU.

Þeir. að lokum:

  • gestgjafi keyrir á hring 0
  • Gestir vinna á hring 0
  • hypervisor keyrir á Ring -1

4) QEMU-KVM

KVM veitir gestum aðgang að Ring 0 og notar QEMU til að líkja eftir I/O (örgjörva, diskum, neti, myndbandi, PCI, USB, raðtengi o.s.frv. sem gestir „sjá“ og vinna með).

Þess vegna QEMU-KVM (eða KVM-QEMU) :)

Credits
Mynd til að vekja athygli
Mynd af verndarhringjum

PS Texti þessarar greinar var upphaflega birtur á Telegram rásinni @RU_Voip sem svar við spurningu frá einum þátttakenda rásarinnar.

Skrifaðu í athugasemdir þar sem ég skil ekki efnið rétt eða hvort það sé einhverju við að bæta.

Þakka þér!

Heimild: www.habr.com

Bæta við athugasemd