Prionnsabalan obrachaidh coitcheann QEMU-KVM

Prionnsabalan obrachaidh coitcheann QEMU-KVM

Mo thuigse an-dràsta:

1) KVM

Tha KVM (Inneal Brìgheil stèidhichte air Kernel) na hypervisor (VMM - Virtual Machine Manager) a’ ruith mar mhodal air Linux OS. Tha feum air hypervisor gus cuid de bhathar-bog a ruith ann an àrainneachd nach eil idir ann (brìgheil) agus aig an aon àm cuir am falach bhon bhathar-bog seo am fìor bhathar-cruaidh corporra air a bheil am bathar-bog seo a’ ruith. Bidh an hypervisor ag obair mar “spacer” eadar am bathar-cruaidh corporra (aoigheachd) agus an OS brìgheil (aoigh).

Leis gu bheil KVM na mhodal àbhaisteach den kernel Linux, bidh e a’ faighinn a h-uile rud a tha a dhìth bhon kernel (riaghladh cuimhne, clàr-ama, msaa). Agus a rèir sin, aig a ’cheann thall, bidh na buannachdan sin uile a’ dol gu na h-aoighean (leis gu bheil na h-aoighean ag obair air hypervisor a bhios a ’ruith air / ann an kernel Linux OS).

Tha KVM gu math luath, ach leis fhèin chan eil e gu leòr airson OS brìgheil a ruith, oir ... Feumaidh seo aithris I/O. Airson I/O (CPU, diosgan, lìonra, bhidio, PCI, USB, puirt sreathach, msaa) bidh KVM a’ cleachdadh QEMU.

2) QEMU

Tha QEMU (Quick Emulator) na emuladair airson diofar innealan a leigeas leat siostaman obrachaidh a dhealbhadh airson aon ailtireachd air fear eile (mar eisimpleir, ARM -> x86). A bharrachd air a ’phròiseasar, bidh QEMU ag atharrais air grunn innealan iomaill: cairtean lìonra, HDD, cairtean bhidio, PCI, USB, msaa.

Bidh e ag obair mar seo:

Tha stiùireadh / còd binary (mar eisimpleir, ARM) air an atharrachadh gu còd eadar-mheadhanach neo-eisimeileach le bhith a’ cleachdadh inneal-tionndaidh TCG (Tiny Code Generator) agus an uairsin tha an còd binary neo-eisimeileach àrd-ùrlar seo air a thionndadh gu stiùireadh / còd targaid (mar eisimpleir, x86).

ARM -> eadar-mheadhanach_code -> x86

Gu bunaiteach, faodaidh tu innealan brìgheil a ruith air QEMU air aoigheachd sam bith, eadhon le modalan pròiseasar nas sine nach eil a ’toirt taic do Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine). Ach, anns a 'chùis seo, obraichidh e gu math slaodach, air sgàth' s gu bheil feum air a 'chòd binary cur an gnìomh a bhith air ath-chruinneachadh air an itealan dà uair, a' cleachdadh TCG (tha TCG na neach-cruinneachaidh Just-in-Time).

An fheadhainn sin. Tha QEMU fhèin mega fionnar, ach bidh e ag obair gu math slaodach.

3) fàinneachan dìon

Prionnsabalan obrachaidh coitcheann QEMU-KVM

Bidh còd prògram binary air pròiseasairean ag obair airson adhbhar, ach tha e suidhichte aig diofar ìrean (fàinnean / fàinneachan dìon) le diofar ìrean de ruigsinneachd dàta, bhon fheadhainn as sochairiche (Ring 0), chun an fheadhainn as cuingealaichte, riaghlaichte agus “leis na cnothan air an teannachadh ” (Fàinne 3).

Bidh an siostam obrachaidh (kernel OS) a’ ruith air Ring 0 (modh kernel) agus faodaidh e rud sam bith a tha e ag iarraidh a dhèanamh le dàta agus innealan sam bith. Bidh tagraidhean luchd-cleachdaidh ag obair aig ìre Ring 3 (modh cleachdaiche) agus chan eil cead aca rud sam bith a tha iad ag iarraidh a dhèanamh, ach an àite sin feumaidh iad ruigsinneachd iarraidh gach uair gus gnìomhachd sònraichte a dhèanamh (mar sin, chan eil cothrom aig tagraidhean luchd-cleachdaidh ach air an dàta aca fhèin agus chan urrainn dhaibh “fhaighinn a-steach do “bogsa gainmhich cuideigin eile). Tha fàinne 1 agus 2 airson a chleachdadh le draibhearan.

Mus deach Intel VT-x / AMD SVM a chruthachadh, ruith hypervisors air Ring 0, agus ruith aoighean air Cearcall 1. Leis nach eil còraichean gu leòr aig Ring 1 airson obrachadh àbhaisteach an OS, le gach gairm sochair bhon t-siostam aoighean, tha an b’ fheudar do hypervisor an gairm seo atharrachadh air a’ chuileag agus a chuir an gnìomh air Ring 0 (coltach ri QEMU). An fheadhainn sin. binary aoigh NOT air a chuir gu bàs gu dìreach air a’ phròiseasar, agus chaidh grunn atharrachaidhean eadar-mheadhanach air an itealan gach uair.

Bha an os-cionn cudromach agus bha seo na dhuilgheadas mòr, agus an uairsin chuir luchd-saothrachaidh pròiseasar, gu neo-eisimeileach bho chèile, a-mach seata stiùiridh leudaichte (Intel VT-x / AMD SVM) a leig le còd OS aoigheachd a chuir an gnìomh. Direach air a 'phròiseas aoigheachd (a' seachnadh ceumannan eadar-mheadhanach cosgail sam bith, mar a bha roimhe).

Le teachd Intel VT-x / AMD SVM, chaidh ìre Cearcall ùr sònraichte -1 (às aonais aon) a chruthachadh. Agus a-nis tha an hypervisor a 'ruith air, agus bidh na h-aoighean a' ruith air Ring 0 agus a 'faighinn cothrom sochair air an CPU.

An fheadhainn sin. mu dheireadh thall:

  • aoigheachd a’ ruith air Ring 0
  • Bidh aoighean ag obair air Ring 0
  • Bidh hypervisor a’ ruith air Ring -1

4) QEMU-KVM

Bidh KVM a’ toirt cothrom dha aoighean faighinn gu Cearcall 0 agus a’ cleachdadh QEMU gus aithris a dhèanamh air an I/O (pròiseasaran, diosgan, lìonra, bhidio, PCI, USB, puirt sreathach, msaa a bhios aoighean “a’ faicinn ”agus ag obair leotha).

Mar sin QEMU-KVM (no KVM-QEMU) :)

Buinidh
Dealbh gus aire a tharraing
Dealbh de fhàinneachan dìon

P.S. Chaidh teacsa an artaigil seo fhoillseachadh an toiseach anns an t-sianal Telegram @RU_Voip mar fhreagairt do cheist bho aon de chom-pàirtichean an t-seanail.

Sgrìobh anns na beachdan far nach eil mi a’ tuigsinn a’ chuspair gu ceart no ma tha dad ri chur ris.

Tapadh leibh!

Source: www.habr.com

Cuir beachd ann