Egwyddorion cyffredinol gweithrediad QEMU-KVM

Egwyddorion cyffredinol gweithrediad QEMU-KVM

Fy nealltwriaeth gyfredol:

1) KVM

Mae KVM (Peiriant Rhithwir yn seiliedig ar gnewyllyn) yn hypervisor (VMM - Rheolwr Peiriant Rhithwir) sy'n rhedeg fel modiwl ar Linux OS. Mae angen hypervisor er mwyn rhedeg rhywfaint o feddalwedd mewn amgylchedd nad yw'n bodoli (rhithwir) ac ar yr un pryd cuddio rhag y feddalwedd hon y caledwedd ffisegol go iawn y mae'r feddalwedd hon yn rhedeg arno. Mae'r hypervisor yn gweithredu fel “spacer” rhwng y caledwedd ffisegol (gwesteiwr) a'r OS rhithwir (gwestai).

Gan fod KVM yn fodiwl safonol o'r cnewyllyn Linux, mae'n derbyn yr holl nwyddau angenrheidiol o'r cnewyllyn (rheoli cof, amserlennydd, ac ati). Ac yn unol â hynny, yn y diwedd, mae'r holl fuddion hyn yn mynd i'r gwesteion (gan fod y gwesteion yn gweithio ar hypervisor sy'n rhedeg ar / yn y cnewyllyn Linux OS).

Mae KVM yn gyflym iawn, ond ar ei ben ei hun nid yw'n ddigon i redeg OS rhithwir, oherwydd ... Mae hyn yn gofyn am efelychiad I/O. Ar gyfer I/O (CPU, disgiau, rhwydwaith, fideo, PCI, USB, pyrth cyfresol, ac ati) mae KVM yn defnyddio QEMU.

2) QEMU

Mae QEMU (Efelychydd Cyflym) yn efelychydd ar gyfer dyfeisiau amrywiol sy'n eich galluogi i redeg systemau gweithredu sydd wedi'u cynllunio ar gyfer un bensaernïaeth ar y llall (er enghraifft, ARM -> x86). Yn ogystal â'r prosesydd, mae QEMU yn efelychu dyfeisiau ymylol amrywiol: cardiau rhwydwaith, HDD, cardiau fideo, PCI, USB, ac ati.

Mae'n gweithio fel hyn:

Mae cyfarwyddiadau/cod deuaidd (er enghraifft, ARM) yn cael eu trosi'n god platfform-annibynnol canolradd gan ddefnyddio'r trawsnewidydd TCG (Tiny Code Generator) ac yna mae'r cod deuaidd platfform-annibynnol hwn yn cael ei drawsnewid yn gyfarwyddiadau / cod targed (er enghraifft, x86).

ARM -> cod_ canolradd -> x86

Yn y bôn, gallwch redeg peiriannau rhithwir ar QEMU ar unrhyw westeiwr, hyd yn oed gyda modelau prosesydd hŷn nad ydynt yn cefnogi Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine). Fodd bynnag, yn yr achos hwn, bydd yn gweithio'n araf iawn, oherwydd y ffaith bod angen ail-grynhoi'r cod deuaidd gweithredu ar y hedfan ddwywaith, gan ddefnyddio TCG (mae TCG yn gasglwr Mewn Amser).

Y rhai. Mae QEMU ei hun yn wych, ond mae'n gweithio'n araf iawn.

3) cylchoedd amddiffyn

Egwyddorion cyffredinol gweithrediad QEMU-KVM

Mae cod rhaglen deuaidd ar broseswyr yn gweithio am reswm, ond mae wedi'i leoli ar wahanol lefelau (modrwyau / modrwyau Diogelu) gyda gwahanol lefelau o fynediad at ddata, o'r rhai mwyaf breintiedig (Cylch 0), i'r rhai mwyaf cyfyngedig, rheoledig a “gyda'r cnau wedi'u tynhau ” ( Modrwy 3 ).

Mae'r system weithredu (cnewyllyn OS) yn rhedeg ar Ring 0 (modd cnewyllyn) a gall wneud beth bynnag y mae ei eisiau gydag unrhyw ddata a dyfeisiau. Mae cymwysiadau defnyddwyr yn gweithredu ar lefel Ring 3 (modd defnyddiwr) ac ni chaniateir iddynt wneud beth bynnag a fynnant, ond yn lle hynny rhaid iddynt ofyn am fynediad bob tro i gyflawni gweithrediad penodol (felly, dim ond eu data eu hunain sydd gan gymwysiadau defnyddwyr ac ni allant "gael i mewn” i flwch tywod rhywun arall). Mae cylchoedd 1 a 2 wedi'u bwriadu i'w defnyddio gan yrwyr.

Cyn dyfeisio Intel VT-x / AMD SVM, rhedodd hypervisors ar Ring 0, a rhedodd gwesteion ar Ring 1. Gan nad oes gan Ring 1 ddigon o hawliau ar gyfer gweithrediad arferol yr OS, gyda phob galwad freintiedig o'r system westai, mae'r roedd yn rhaid i hypervisor addasu'r alwad hon ar y hedfan a'i gweithredu ar Ring 0 (yn debyg iawn i QEMU). Y rhai. deuaidd gwestai NID ei weithredu'n uniongyrchol ar y prosesydd, a phob tro yn mynd trwy nifer o addasiadau canolradd ar y hedfan.

Roedd y gorbenion yn sylweddol ac roedd hyn yn broblem fawr, ac yna rhyddhaodd gweithgynhyrchwyr proseswyr, yn annibynnol ar ei gilydd, set estynedig o gyfarwyddiadau (Intel VT-x / AMD SVM) a oedd yn caniatáu gweithredu cod OS gwestai. YN UNIONGYRCHOL ar y prosesydd gwesteiwr (gan osgoi unrhyw gamau canolradd costus, fel oedd yn wir o'r blaen).

Gyda dyfodiad Intel VT-x / AMD SVM, crëwyd lefel Ring newydd arbennig -1 (llai un). Ac yn awr mae'r hypervisor yn rhedeg arno, ac mae'r gwesteion yn rhedeg ar Ring 0 ac yn cael mynediad breintiedig i'r CPU.

Y rhai. yn y pen draw:

  • gwesteiwr yn rhedeg ar Ring 0
  • gwesteion yn gweithio ar Ring 0
  • mae hypervisor yn rhedeg ar Ring -1

4) QEMU-KVM

Mae KVM yn rhoi mynediad i Ring 0 i westeion ac yn defnyddio QEMU i efelychu'r I/O (prosesydd, disgiau, rhwydwaith, fideo, PCI, USB, pyrth cyfresol, ac ati y mae gwesteion yn eu “gweld” ac yn gweithio gyda nhw).

Felly QEMU-KVM (neu KVM-QEMU) :)

CREDYDAU
Llun i ddenu sylw
Llun o gylchoedd Gwarchod

PS Cyhoeddwyd testun yr erthygl hon yn wreiddiol yn sianel Telegram @RU_Voip fel ateb i gwestiwn gan un o gyfranogwyr y sianel.

Ysgrifennwch yn y sylwadau lle nad wyf yn deall y pwnc yn gywir neu os oes unrhyw beth i'w ychwanegu.

Diolch yn fawr!

Ffynhonnell: hab.com

Ychwanegu sylw