Prensîbên xebatê yên giştî yên QEMU-KVM

Prensîbên xebatê yên giştî yên QEMU-KVM

Têgihîştina min a niha:

1) KVM

KVM (Makina Virtual-based Kernel) hîpervisorek e (VMM - Rêvebirê Makîneya Virtual) ku wekî modulek li ser Linux OS-ê dixebite. Ji bo ku hin nermalava di hawîrdorek tine (virtual) de bixebite û di heman demê de hardwareya fîzîkî ya rastîn a ku ev nermalava li ser dixebitîne ji vê nermalavê veşêre, hîpervisorek pêdivî ye. Hîpervisor di navbera hardwareya laşî (mêvandar) û OS-ya virtual (mêvan) de wekî "spacer" tevdigere.

Ji ber ku KVM modulek standard a kernel Linux-ê ye, ew hemî qenciyên pêwîst ji kernelê distîne (rêveberiya bîranîn, plansazker, hwd.). Û li gorî vê yekê, di dawiyê de, van hemî feydeyan diçin mêvanan (ji ber ku mêvan li ser hîpervisorek ku li ser / di kernel OS Linux-ê de dixebite dixebitin).

KVM pir bilez e, lê bi serê xwe ne bes e ku meriv OS-ya virtual bimeşîne, ji ber ku ... Ji bo vê yekê emûlasyona I/O hewce dike. Ji bo I/O (CPU, dîskên, torê, vîdyoyê, PCI, USB, lîmanên serial, hwd.) KVM QEMU bikar tîne.

2) QEMU

QEMU (Quick Emulator) ji bo cîhazên cihêreng emulatorek e ku dihêle hûn pergalên xebitandinê yên ku ji bo mîmariyek li ser mîmariyek din hatine çêkirin bimeşînin (mînak, ARM -> x86). Ji bilî pêvajokê, QEMU cîhêreng ên cîhêreng ên periferîkî dişibîne: kartên torê, HDD, kartên vîdyoyê, PCI, USB, hwd.

Ew bi vî rengî dixebite:

Talîmat / koda binary (mînak, ARM) bi karanîna veguhezera TCG (Tiny Code Generator) vediguhezîne koda serbixwe-platforma navîn û dûv re ev koda binary-serbixwe ya platformê vediguhezîne rêwerzên/kodê armanc (mînak, x86).

ARM -> koda_navber -> x86

Di bingeh de, hûn dikarin makîneyên virtual li ser QEMU li ser her mêvandar bimeşînin, tewra bi modelên pêvajoyek kevn ên ku Intel VT-x (Teknolojiya Virtualîzasyona Intel) / AMD SVM (AMD Makîneya Virtualê ya Ewle) piştgirî nakin. Lêbelê, di vê rewşê de, ew ê pir hêdî bixebite, ji ber vê yekê ku pêdivî ye ku koda binary ya bicîhkirî du caran, bi karanîna TCG-ê ji nû ve were berhev kirin (TCG berhevkarek Just-in-Time ye).

Ewan. QEMU bixwe mega xweş e, lê ew pir hêdî dixebite.

3) Zengên parastinê

Prensîbên xebatê yên giştî yên QEMU-KVM

Koda bernameya binary a li ser pêvajokeran ji ber sedemek kar dike, lê di astên cihêreng de cih digire (zengil / zengilên parastinê) bi astên cihêreng ên gihîştina daneyê, ji ya herî bi îmtiyaz (Ring 0), heya ya herî bisînor, bi rêkûpêk û "bi gwîzan hişkkirî ye. ” (Zeng 3).

Pergala xebitandinê (kernel OS) li ser Ring 0 (moda kernelê) dimeşe û dikare bi her dane û cîhazê re çi bixwaze bike. Serlêdanên bikarhêner di asta Ring 3 de (moda bikarhêner) dixebitin û destûr nayê dayîn ku tiştê ku ew dixwazin bikin, lê di şûna wê de divê her car daxwaziya gihîştinê bikin da ku karek taybetî pêk bînin (bi vî rengî, sepanên bikarhêner tenê gihîştina daneyên xwe hene û nekarin "bigirin nav” sandboxa kesekî din). Ring 1 û 2 ji bo karanîna ajokaran têne armanc kirin.

Berî îcadkirina Intel VT-x / AMD SVM, hîpervisoran li ser Ring 0 dixebitîn, û mêvanan li ser Ring 1 dimeşiyan. Ji ber ku Ring 1 ji bo xebata normal ya OS-ê têrê nake, bi her bangek îmtiyazê ji pergala mêvan re, Hypervisor neçar bû ku vê bangê di firînê de biguhezîne û wê li ser Ring 0 bicîh bike (wekî ku QEMU dike). Ewan. mêvan binary Ne rasterast li ser pêvajoyê hate darve kirin, û her carê di rê de çend guhertinên navîn derbas bûn.

Serî girîng bû û ev pirsgirêkek mezin bû, û dûv re çêkerên pêvajoyê, ji hev serbixwe, komek rêwerzên dirêjkirî (Intel VT-x / AMD SVM) berdan ku destûr da ku koda OS-ya mêvan bi cih bîne. DIRECTLY li ser pêvajoya mêvandar (wek ku berê bû, her gavên navîn ên biha derbas dike).

Bi hatina Intel VT-x / AMD SVM, asta Ring-a nû ya taybetî -1 (minus yek) hate afirandin. Û naha hypervisor li ser wê dimeşe, û mêvan li ser Ring 0 dimeşin û gihîştina îmtiyazê ji CPU re digirin.

Ewan. paştirîn:

  • mêvandar li ser Ring 0 dimeşe
  • mêvan li ser Ring 0 dixebitin
  • hypervisor li ser Ring -1 dimeşîne

4) QEMU-KVM

KVM rê dide mêvanan ku bigihîjin Ring 0 û QEMU bikar tîne da ku I/O (prosesor, dîskên, tora, vîdyoyê, PCI, USB, benderên rêzefîlmê, hwd. yên ku mêvan "dibînin" û pê re dixebitin, bi kar tîne.

Ji ber vê yekê QEMU-KVM (an KVM-QEMU) :)

CREDITS
Wêne ji bo balê bikişînin
Wêneyê Rings Parastinê

P.S. Nivîsa vê gotarê di destpêkê de di kanala Telegram de hate weşandin @RU_Voip wek bersiva pirseke yek ji beşdarên kanalê.

Di şîroveyan de binivîsin ku ez mijarê rast fêm nakim an jî tiştek heye ku lê zêde bikim.

Spas!

Source: www.habr.com

Add a comment