QEMU-KVMi üldpõhimõtted

QEMU-KVMi üldpõhimõtted

Minu praegune arusaam:

1) KVM

KVM (Kernel-based Virtual Machine) on hypervisor (VMM – Virtuaalmasina Haldur), mis töötab Linuxi operatsioonisüsteemi moodulina. Hypervisor on vajalik, et käivitada teatud tarkvara mitteeksisteerivas (virtuaalses) keskkonnas, peites samal ajal sellest tarkvarast tõelise riistvara, mille peal see tarkvara töötab. Hypervisor toimib "vahekihina" füüsilise riistvara (majakas) ja virtuaalse operatsioonisüsteemi (külalisena) vahel.

Kuna KVM on standardne Linuxi kerneli moodul, saab ta kerneldelt kõik vajalikud eelised (mälu haldamine, ajakava jms). Seetõttu saavad lõpuks kõik need eelised ka külalised (kuna külalised töötavad hypervisoril, mis töötab Linuxi operatsioonisüsteemi kerneli peal).

KVM on väga kiire, kuid seda ei piisa virtuaalse operatsioonisüsteemi käivitamiseks, kuna vajatakse I/O emulatsiooni. I/O (protsessor, kettad, võrk, video, PCI, USB, seerianumbrid jne) jaoks kasutab KVM QEMU.

2) QEMU

QEMU (Quick Emulator) – erinevate seadmete emulaator, mis võimaldab käivitada operatsioonisüsteeme, mis on mõeldud ühe arhitektuuri jaoks, teise arhitektuuri peal (näiteks ARM –> x86). Lisaks protsessorile emuleerib QEMU erinevaid perifeerseid seadmeid: võrkaartide, HDD, videokaartide, PCI, USB jne.

See töötab nii:

Juhised/binaarkood (näiteks ARM) muudetakse TCG (Tiny Code Generator) konverteri abil vaheplatformist sõltumatuks koodiks ja seejärel muudetakse see platvormispetsiifiliseks juhiseks/koodiks (näiteks x86).

ARM –> vahe_kood –> x86

Põhimõtteliselt saate QEMU peal käivitada virtuaalmasinaid igasugusel hostil, isegi vanade protsessorimudelitega, mis ei toeta Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine). Kuid sellisel juhul töötab see üsna aeglaselt, kuna käivitatav binaarkood peab olema kahe korra jooksvalt uuesti kompileeritud TCG abil (TCG on Just-in-Time kompilaator).

St, QEMU on ise ülekaalukalt muljetavaldav, kuid töötab väga aeglaselt.

3) Kaitse rõngad

QEMU-KVMi üldpõhimõtted

Binaarne programmikood töötleb protsessorites mitte lihtsalt niisama, vaid on paigutatud erinevatesse tasanditesse (ringides / Protection rings) erinevate andmete juurdepääsutasondega, alates kõige privileegitumast (Ring 0) kuni kõige piiratumani, reguleeritud ja "kinni keeratud" (Ring 3).

Operatsioonisüsteem (OS tuum) töötab Ring 0 (kernel mode) ja võib teha mistahes andmete ja seadmetega kõike, mida soovib. Kasutajarakendused töötavad Ring 3 tasemel (user mode) ning ei ole õigustatud tegema kõike, mida nad soovivad, vaid peavad igal korral taotlema ligipääsu konkreetse tehingu teostamiseks (niimoodi on kasutajarakendustel ligipääs ainult oma andmetele ning nad ei saa "ronida" teiste "liivakasti"). Ring 1 ja 2 on mõeldud seadme draiverite kasutamiseks.

Enne Intel VT-x / AMD SVM leiutamist töötasid hüperviisorid Ring 0-l, samas kui külalised töötasid Ring 1-l. Kuna Ring 1-l ei olnud piisavalt õigusi OS-i normaalseks toimimiseks, pidi hüperviisor igal korral, kui külalisest süsteemist toimus privileegitud kutse, selle kutse reaalajas modifitseerima ja täitma Ring 0-l (umbes nii, nagu teeb QEMU). St. külalise binaarkood ei EI töötanud otse protsessoril, vaid iga kord läbis mitu vahepealset modifikatsiooni.

Ülekulud olid märkimisväärsed ning see oli suur probleem, mistõttu protsessoritootjad, sõltumatult üksteisest, lasid välja laiendatud käsu koosseisu (Intel VT-x / AMD SVM), mis võimaldas külaliste OS-ide koodi OTSE käsutööprotsessoril (mööda igasuguseid kulukaid vaheprotsesse, nagu see varem oli).

Intel VT-x / AMD SVM-i tutvustamisega loodi spetsiaalne uus Ring -1 (miinus üks) tase. Nüüd töötab hüperviisor sellel ja külalised töötavad Ring 0-l, omades privileegitud ligipääsu CPU-le.

St. tulemuseks:

  • majutaja töötab Ring 0-l
  • külalised 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 emuleerimiseks (protsessor, kettad, võrk, video, PCI, USB, seerianumbrid jne, mida külastajad „näevad“ ja millega töötavad).

Seetõttu on QEMU-KVM (või KVM-QEMU) 🙂

KREDIIDID
Pilt tähelepanu tõmbamiseks
Pilt Kaitserõngad

P.S. Selle artikli tekst ilmus algselt Telegrami kanalil @RU_Voip vastusena ühe kanali liikme küsimusele.

Kirjutage kommentaarides, mis kohtades ma teemat valesti mõistan või kui on midagi, mida lisada.

Aitäh!

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster