QEMU-KVMi töötamise üldpõhimõtted

QEMU-KVMi töötamise üldpõhimõtted

Minu praegune arusaam:

1) KVM

KVM (Kernel-based Virtual Machine) – hüperviisor (VMM – Virtual Machine Manager), mis töötab moodulina Linuxi operatsioonisüsteemis. Hüpperviisori eesmärk on käivitada tarkvara fantoomkeskkonnas ja samal ajal varjata selle tarkvara jaoks reaalset füüsilist riistvara, millel see töötab. Hüpperviisor toimib nagu "vahendaja" füüsilise riistvara (host) ja virtuaalse operatsioonisüsteemi (külaline) vahel.

Kuna KVM on Linuxi tuumamoodul, saab ta tuumalt kõik vajalikud omadused (mäluhaldus, ajastaja jne). Seega, lõpuks jõuavad kõik need eelised ka külalistele (kuna külalised töötavad hüperviisoril, mis töötab Linuxi operatsioonisüsteemi tuumas).

KVM on väga kiire, kuid sellest üksi ei piisa virtuaalse operatsioonisüsteemi käivitamiseks, kuna selleks on vajalik I/O emulatsioon. KVM kasutab I/O (protsessor, kettad, võrk, video, PCI, USB, seerialiidid jne) jaoks QEMU.

2) QEMU

QEMU (Quick Emulator) – erinevate seadmete emulaator, mis võimaldab käivitada operatsioonisüsteeme, mis on mõeldud ühele arhitektuurile, teisel (näiteks, ARM –> x86). Lisaks protsessorile emuleerib QEMU ka erinevaid perifeerseadmeid: võrkaardeid, HDD-sid, videokaarte, PCI, USB jne.

See töötab nii:

Juhised/binaarkood (näiteks, ARM) muudetakse vahepealseks platvormist sõltumatuks koodiks TCG (Tiny Code Generator) konverteri abil ja seejärel muudetakse see platvormist sõltumatu binaarkood sihtinstruktsioonideks/koodiks (näiteks, x86).

ARM –> vaheline_kood –> x86

Sisuliselt võite käivitada virtuaalmasinad QEMU-s igasugustes hostides, isegi vanade protsessorite mudelitel, mis ei toeta Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine). Kuid sel juhul töötab see üsna aeglaselt, kuna täidetav binaarkood tuleb jooksvalt kaks korda ümber kompileerida TCG abil (TCG on Just-in-Time kompilaator).

Seega, QEMU ise on äärmiselt võimas, kuid töötab väga aeglaselt.

3) Protection rings

QEMU-KVMi töötamise üldpõhimõtted

Binaarne tarkvarakood protsessorites ei tööta lihtsalt niisama, vaid see asub erinevatel tasanditel (rõngad / Protection rings), millel on erinevad juurdepääsutasemed andmetele, alates kõige privilegeeritud (Ring 0) kuni kõige piiratud, reguleeritud ja "kinni keeratud" (Ring 3).

Operatsioonisüsteem (OSi südamik) töötab Ring 0 (kernel mode) ja võib teha kõike, mis tahab, mis puudutab andmeid ja seadmeid. Kasutaja rakendused töötavad Ring 3 (user mode) tasemel ja ei tohi teha kõike, mida nad soovivad, vaid peavad iga kord küsima luba teatud toimingute sooritamiseks (seega on kasutaja rakendustel juurdepääs ainult oma andmetele ja nad ei saa "välja ronida" kellegi teise "liivakastist"). Ring 1 ja 2 on mõeldud draiverite kasutamiseks.

Enne Intel VT-x / AMD SVM leiutamist töötasid hüperviisorid Ring 0-l, samas kui külastajad töötasid Ring 1-l. Kuna Ring 1-l ei olnud piisavalt õigusi operatsioonisüsteemi normaalseks toimimiseks, pidi hüperviisor igal korral, kui külastussüsteem tegi privileegitud kutse, selle kutse jooksvalt muutma ja seda Ring 0-l täitma (kuid sel viisil, nagu teeb QEMU). St, külastaja binaarkood EI täideti otse protsessoril ning iga kord tehti jooksvalt mitu vahepealset muudatust.

Töökoormus oli märkimisväärne ja see oli suur probleem, seega väljastasid protsessoritootjad iseseisvalt laiendatud käskude komplektid (Intel VT-x / AMD SVM), mis võimaldasid külastava OSi koodi OTSE hosti protsessoril (mööda kõiki aeganõudvaid vaheetappe, nagu see oli varem).

Intel VT-x / AMD SVM tekkimisega loodi spetsiaalne uus Ring -1 (miinus üks) tase. Nüüd töötab hüperviisor sellel tasemel ja külastajad töötavad Ring 0-l ning saavad privileegitud juurdepääsu CPU-le.

St, lõpptulemusena:

  • host töötab Ring 0-l
  • külastajad töötavad Ring 0-l
  • hüperviisor töötab Ring -1-l

4) QEMU-KVM

KVM annab külastajatele juurdepääsu Ring 0-le ja kasutab QEMU-d I/O simuleerimiseks (protsessor, kettad, võrkd, video, PCI, USB, seerianumbrid jne, mida "näevad" ja millega töötavad külastajad).

Sealt ka QEMU-KVM (või KVM-QEMU) 🙂

AUHINNAD
Pilt tähelepanu tõmbamiseks
Pilt kaitserõngastest

P.S. Selle artikli tekst avaldati algselt Telegrami kanalil @RU_Voip vastuseks ühe kanali osaleja küsimusele.

Palun kirjutage kommentaaridesse, millistes kohtades ma teemat valesti mõistan või kui on midagi lisada.

Aitäh!

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster