Ĝeneralaj funkciaj principoj de QEMU-KVM

Ĝeneralaj funkciaj principoj de QEMU-KVM

Mia nuna kompreno:

1) KVM

KVM (Kernel-bazita Virtuala Maŝino) estas hiperviziero (VMM - Virtual Machine Manager) funkcianta kiel modulo en Linukso OS. Hiperviziero estas necesa por ruli iun programaron en neekzistanta (virtuala) medio kaj samtempe kaŝi de ĉi tiu programaro la realan fizikan aparataron, sur kiu ĉi tiu programaro funkcias. La hiperviziero funkcias kiel "interspacigilo" inter la fizika aparataro (gastiganto) kaj la virtuala OS (gasto).

Ĉar KVM estas norma modulo de la Linukso-kerno, ĝi ricevas ĉiujn postulatajn bonaĵojn de la kerno (memoradministrado, planilo, ktp.). Kaj sekve, finfine, ĉiuj ĉi tiuj avantaĝoj iras al la gastoj (ĉar la gastoj laboras sur hiperviziero kiu funkcias sur/en la Linux OS-kerno).

KVM estas tre rapida, sed per si mem ne sufiĉas ruli virtualan OS, ĉar... Ĉi tio postulas I/O-imuladon. Por I/O (CPU, diskoj, reto, vidbendo, PCI, USB, seriaj havenoj, ktp.) KVM uzas QEMU.

2) QEMU

QEMU (Rapida Emulilo) estas emulilo por diversaj aparatoj, kiu ebligas al vi ruli operaciumojn desegnitajn por unu arkitekturo sur alia (ekzemple, ARM -> x86). Krom la procesoro, QEMU imitas diversajn ekstercentrajn aparatojn: retajn kartojn, HDD, vidkartojn, PCI, USB, ktp.

Ĝi funkcias tiel:

Instrukcioj/binara kodo (ekzemple, ARM) estas konvertitaj en mezan platform-sendependan kodon uzante la TCG (Ty Code Generator) konvertilon kaj tiam ĉi platform-sendependa binara kodo estas konvertita en celinstrukciojn/kodon (ekzemple, x86).

ARM –> meza_kodo –> x86

Esence, vi povas ruli virtualajn maŝinojn sur QEMU en iu ajn gastiganto, eĉ kun pli malnovaj procesoraj modeloj, kiuj ne subtenas Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine). Tamen, en ĉi tiu kazo, ĝi funkcios tre malrapide, pro la fakto ke la ekzekuta binara kodo devas esti rekompilita sur la flugo dufoje, uzante TCG (TCG estas Just-in-Time-kompililo).

Tiuj. QEMU mem estas bonega, sed ĝi funkcias tre malrapide.

3) Protektaj ringoj

Ĝeneralaj funkciaj principoj de QEMU-KVM

Binara programkodo sur procesoroj funkcias ial, sed situas sur malsamaj niveloj (ringoj / Protektaj ringoj) kun malsamaj niveloj de aliro al datumoj, de la plej privilegiita (Ringo 0), ĝis la plej limigita, reguligita kaj "kun la nuksoj streĉitaj". ” ( Ringo 3 ).

La operaciumo (OS-kerno) funkcias per Ring 0 (kerna reĝimo) kaj povas fari kion ajn ĝi volas per ajnaj datumoj kaj aparatoj. Uzantaplikoj funkcias ĉe la Ringo 3-nivelo (uzantreĝimo) kaj ne rajtas fari kion ajn ili volas, sed anstataŭe devas peti aliron ĉiun fojon por plenumi specialan operacion (tiel, uzantaplikaĵoj nur havas aliron al siaj propraj datumoj kaj ne povas "akiri". en” la sablokeston de iu alia). Ringoj 1 kaj 2 estas destinitaj por uzo de ŝoforoj.

Antaŭ la invento de Intel VT-x / AMD SVM, hiperviziiloj funkciis per Ring 0, kaj gastoj funkciis per Ring 1. Ĉar Ring 1 ne havas sufiĉajn rajtojn por normala funkciado de la OS, kun ĉiu privilegia voko de la gastsistemo, la hiperviziero devis modifi ĉi tiun vokon sur la flugo kaj efektivigi ĝin sur Ringo 0 (kiel QEMU faras). Tiuj. gasto duuma NE estis ekzekutita rekte sur la procesoro, kaj ĉiufoje trapasis plurajn interajn modifojn sur la flugo.

La superkompeto estis signifa kaj ĉi tio estis granda problemo, kaj tiam procesoraj produktantoj, sendepende unu de la alia, publikigis plilongigitan aron da instrukcioj (Intel VT-x / AMD SVM), kiuj permesis ekzekuti gaston OS-kodon. REKTE sur la gastiga procesoro (preterirante iujn ajn multekostajn mezajn paŝojn, kiel estis la kazo antaŭe).

Kun la apero de Intel VT-x / AMD SVM, speciala nova Ring-nivelo -1 (minus unu) estis kreita. Kaj nun la hiperviziero funkcias sur ĝi, kaj la gastoj funkcias per Ringo 0 kaj ricevas privilegian aliron al la CPU.

Tiuj. eventuale:

  • gastiganto funkcias per Ringo 0
  • gastoj laboras pri Ringo 0
  • hiperviziero funkcias per Ringo -1

4) QEMU-KVM

KVM donas al gastoj aliron al Ringo 0 kaj uzas QEMU por kopii la I/O (procesoro, diskoj, reto, vidbendo, PCI, USB, seriaj havenoj ktp., kiujn gastoj "vidas" kaj kunlaboras).

Tial QEMU-KVM (aŭ KVM-QEMU) :)

Kreditoj
Bildo por altiri atenton
Bildo de Protektaj ringoj

PS La teksto de ĉi tiu artikolo estis origine publikigita en la Telegram-kanalo @RU_Voip kiel respondo al demando de unu el la kanalaj partoprenantoj.

Skribu en la komentoj kie mi ne komprenas la temon ĝuste aŭ ĉu estas io por aldoni.

Dankon!

fonto: www.habr.com

Aldoni komenton