QEMU-KVM vispārīgie darbības principi

QEMU-KVM vispārīgie darbības principi

Mana pašreizējā izpratne:

1) KVM

KVM (uz kodolu balstīta virtuālā mašīna) ir hipervizors (VMM — virtuālās mašīnas pārvaldnieks), kas darbojas kā modulis operētājsistēmā Linux OS. Hipervizors ir nepieciešams, lai palaistu kādu programmatūru neesošā (virtuālā) vidē un tajā pašā laikā paslēptu no šīs programmatūras reālo fizisko aparatūru, uz kuras šī programmatūra darbojas. Hipervizors darbojas kā “starpnieks” starp fizisko aparatūru (saimniekdatoru) un virtuālo OS (viesis).

Tā kā KVM ir Linux kodola standarta modulis, tas no kodola saņem visus nepieciešamos labumus (atmiņas pārvaldība, plānotājs utt.). Un attiecīgi galu galā visas šīs priekšrocības nonāk viesiem (jo viesi strādā pie hipervizora, kas darbojas Linux OS kodolā).

KVM ir ļoti ātrs, taču ar to vien nepietiek, lai darbinātu virtuālo OS, jo... Tam nepieciešama I/O emulācija. I/O (CPU, diski, tīkls, video, PCI, USB, seriālie porti utt.) KVM izmanto QEMU.

2) QEMU

QEMU (Quick Emulator) ir emulators dažādām ierīcēm, kas ļauj darbināt operētājsistēmas, kas paredzētas vienai arhitektūrai citā (piemēram, ARM -> x86). Papildus procesoram QEMU emulē dažādas perifērijas ierīces: tīkla kartes, HDD, video kartes, PCI, USB utt.

Tas darbojas šādi:

Instrukcijas/binārais kods (piemēram, ARM) tiek pārveidots par starpposma platformas neatkarīgu kodu, izmantojot TCG (Tiny Code Generator) pārveidotāju, un pēc tam šis no platformas neatkarīgais binārais kods tiek pārveidots mērķa instrukcijās/kodā (piemēram, x86).

ARM -> starpkods -> x86

Būtībā jūs varat palaist virtuālās mašīnas QEMU jebkurā resursdatorā, pat ar vecākiem procesoru modeļiem, kas neatbalsta Intel VT-x (Intel virtualizācijas tehnoloģija) / AMD SVM (AMD Secure Virtual Machine). Tomēr šajā gadījumā tas darbosies ļoti lēni, jo izpildošais binārais kods ir jāpārkompilē lidojumā divas reizes, izmantojot TCG (TCG ir Just-in-Time kompilators).

Tie. Pats QEMU ir mega foršs, bet darbojas ļoti lēni.

3) Aizsarggredzeni

QEMU-KVM vispārīgie darbības principi

Binārais programmas kods procesoros darbojas kāda iemesla dēļ, bet atrodas dažādos līmeņos (gredzeni / aizsardzības gredzeni) ar dažādiem datu piekļuves līmeņiem, sākot no priviliģētākajiem (0. gredzens), līdz visierobežotākajam, regulētajam un “ar pievilktiem uzgriežņiem ” (3. gredzens).

Operētājsistēma (OS kodols) darbojas uz Ring 0 (kodola režīms) un var darīt visu, ko vēlas ar jebkuriem datiem un ierīcēm. Lietotāju lietojumprogrammas darbojas Ring 3 līmenī (lietotāja režīmā) un tām nav atļauts darīt visu, ko viņi vēlas, bet tā vietā katru reizi jāpieprasa piekļuve, lai veiktu noteiktu darbību (tādējādi lietotāju lietojumprogrammām ir piekļuve tikai saviem datiem un tās nevar “dabūt kāda cita smilšu kastē). 1. un 2. gredzens ir paredzēts autovadītāju lietošanai.

Pirms Intel VT-x / AMD SVM izgudrošanas hipervizori darbojās uz gredzena 0, bet viesi - uz gredzena 1. Tā kā Ring 1 nav pietiekamu tiesību normālai OS darbībai, ar katru priviliģēto zvanu no viesu sistēmas, hipervizoram bija jāmaina šis izsaukums lidojuma laikā un jāizpilda 0 zvanā (līdzīgi kā QEMU). Tie. viesu binārs NAV tika izpildīts tieši procesorā, un katru reizi lidojumā tika veiktas vairākas starpposma modifikācijas.

Pieskaitāmās izmaksas bija ievērojamas, un tā bija liela problēma, un tad procesoru ražotāji neatkarīgi viens no otra izlaida paplašinātu instrukciju kopu (Intel VT-x / AMD SVM), kas ļāva izpildīt viesu OS kodu. TIEŠI resursdatora procesorā (apejot visas dārgās starpposma darbības, kā tas bija iepriekš).

Līdz ar Intel VT-x / AMD SVM parādīšanos tika izveidots īpašs jauns gredzena līmenis -1 (mīnus viens). Un tagad tajā darbojas hipervizors, un viesi darbojas ar Ring 0 un iegūst priviliģētu piekļuvi centrālajam procesoram.

Tie. galu galā:

  • saimniekdators darbojas uz gredzena 0
  • viesi strādā pie 0. gredzena
  • hipervizors darbojas uz gredzena -1

4) QEMU-KVM

KVM nodrošina viesiem piekļuvi Ring 0 un izmanto QEMU, lai emulētu I/O (procesors, diski, tīkls, video, PCI, USB, seriālie porti utt., ko viesi redz un ar kuriem strādā).

Tādējādi QEMU-KVM (vai KVM-QEMU) :)

KREDĪTI
Attēls, lai piesaistītu uzmanību
Aizsarggredzenu attēls

PS Šī raksta teksts sākotnēji tika publicēts telegrammas kanālā @RU_Voip kā atbilde uz viena kanāla dalībnieka jautājumu.

Rakstiet komentāros, kur es pareizi nesaprotu tēmu vai ir ko piebilst.

Paldies!

Avots: www.habr.com

Pievieno komentāru