Opći principi rada QEMU-KVM

Opći principi rada QEMU-KVM

Moje trenutne spoznaje:

1) KVM

KVM (Hypervisor temeljen na jezgru) – hypervisor (VMM – Upravitelj virtualnih mašina) koji radi kao modul u OS Linux. Hypervisor je potreban za pokretanje određenog softvera u nepostojećem (virtualnom) okruženju, dok istovremeno skriva fizički hardver na kojem se taj softver izvodi. Hypervisor djeluje kao "posrednik" između fizičkog hardvera (hosta) i virtualnog OS-a (gosta).

Budući da je KVM standardni modul jezgra Linuxa, on dobiva sve potrebne resurse od jezgre (rad s memorijom, planiranje itd.). Stoga, na kraju, sve te prednosti dolaze i do gostiju (pošto gosti rade na hypervisoru koji radi u/na jezgru OS-a Linux).

KVM je vrlo brz, ali sam po sebi nije dovoljan za pokretanje virtualnog OS-a, jer je potrebna emulacija I/O-a. Za I/O (procesor, diskovi, mreža, video, PCI, USB, serijski portovi itd.) KVM koristi QEMU.

2) QEMU

QEMU (Brzi emulator) – emulator raznih uređaja koji omogućuje pokretanje operativnih sustava namijenjenih jednoj arhitekturi na drugoj (na primjer, ARM –> x86). Osim procesora, QEMU emulira različite perifernije uređaje: mrežne kartice, HDD, grafičke kartice, PCI, USB itd.

Radi to ovako:

Upute/binarni kod (na primjer, ARM) konvertiraju se u međuprostorni platformu neovisni kod uz pomoć konvertera TCG (Mali generator koda) i zatim se taj platformu neovisni binarni kod konvertira u ciljne upute/kod (na primjer, x86).

ARM –> međuprostorni_kod –> x86

U suštini, možete pokretati virtualne mašine na QEMU na bilo kojem hostu, čak i s starijim modelima procesora koji ne podržavaju Intel VT-x (Intelova tehnologija virtualizacije) / AMD SVM (AMD-ova sigurna virtualna mašina). Međutim, u tom slučaju, radit će vrlo sporo, jer se izvršni binarni kod mora rekompajlirati u hodu dvaput, pomoću TCG-a (TCG je Just-in-Time kompajler).

Dakle, sam QEMU je iznimno moćan, ali radi vrlo sporo.

3) Zaštitna koluta

Opći principi rada QEMU-KVM

Binarni programski kod na procesorima ne radi samo tako, već se nalazi na različitim razinama (kolutima / Zaštitnim kolutima) s različitim razinama pristupa podacima, od najprivilegiranijeg (Ring 0) do najograničenijeg, reguliranog i "zakovano" (Ring 3).

Operacijski sistem (jedro OS) deluje na Ring 0 (kernel mode) in lahko tako manipulira z vsemi podatki in napravami, kot hoče. Uporabniške aplikacije delujejo na ravni Ring 3 (user mode) in nimajo pravice početi vsega, kar želijo, ampak morajo vsakič zaprositi za dovoljenje za izvedbo določene operacije (tako imajo uporabniške aplikacije dostop le do lastnih podatkov in ne morejo "vstopiti" v "tuje peskovnike"). Ring 1 in 2 sta namenjena uporabi z gonilniki.

Pred izumom Intel VT-x / AMD SVM so hipervizorji delovali na Ring 0, gostje pa na Ring 1. Ker Ring 1 nima dovolj pravic za normalno delovanje OS, je moral hipervizor vsakič, ko je gostujoči sistem naredil privilegiran klic, na hitro modificirati ta klic in ga izvesti na Ring 0 (približno tako, kot to počne QEMU). T.j. gostujoča binarna koda NE se je izvajala neposredno na procesorju, pri čemer je vsakič na hitro prešla skozi več medfaznih modifikacij.

Naka zneski so bili ogromni in to je predstavljalo velik problem, zato so proizvajalci procesorjev, brez medsebojnega sodelovanja, izdala razširjen niz navodil (Intel VT-x / AMD SVM), ki omogočajo izvajanje kode gostujočih OS NEPOSREDNO na procesorju gostitelja (brez dragih medfazi, kot so to počeli prej).

S pojavom Intel VT-x / AMD SVM je bil ustvarjen nov poseben nivo Ring -1 (minus en). In zdaj na njem deluje hipervizor, gostje pa delujejo na Ring 0 in pridobivajo privilegiran dostop do CPU.

T.j. na koncu:

  • gostitelj deluje na Ring 0
  • gostje delujejo na Ring 0
  • hipervizor deluje na Ring -1

4) QEMU-KVM

KVM omogoča dostop gostom do Ring 0 in uporablja QEMU za emulacijo I/O (procesor, disk, omrežje, video, PCI, USB, serijske porte itd., ki jih "vidijo" in s katerimi delujejo gostje).

Odtod QEMU-KVM (ali KVM-QEMU) 🙂

ZASLUGE
Slika za pritegnitev pozornosti
Slika Protection rings

P.S. Besedilo tega članka je bilo prvotno objavljeno na Telegram kanalu @RU_Voip kot odgovor na vprašanje enega od članov kanala.

Napišite v komentarjih, kje sem napačno razumel temo ali če imate kaj dodatnega.

Hvala!

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster