Kanuni za jumla za uendeshaji wa QEMU-KVM

Kanuni za jumla za uendeshaji wa QEMU-KVM

Uelewa wangu wa sasa:

1) KVM

KVM (Mashine ya Virtual ya msingi wa Kernel) ni hypervisor (VMM - Kidhibiti cha Mashine ya Mtandao) inayoendesha kama moduli kwenye Linux OS. Hypervisor inahitajika ili kuendesha baadhi ya programu katika mazingira yasiyopo (ya kawaida) na wakati huo huo kujificha kutoka kwa programu hii maunzi halisi ambayo programu hii huendesha. Hypervisor hufanya kama "spacer" kati ya vifaa halisi (mwenyeji) na OS ya kawaida (mgeni).

Kwa kuwa KVM ni moduli ya kawaida ya kernel ya Linux, inapokea vitu vyote vinavyohitajika kutoka kwa kernel (usimamizi wa kumbukumbu, mpangilio, nk). Na ipasavyo, mwishowe, faida hizi zote huenda kwa wageni (kwani wageni hufanya kazi kwenye hypervisor inayoendesha / kwenye kernel ya Linux OS).

KVM ni haraka sana, lakini yenyewe haitoshi kuendesha OS ya kawaida, kwa sababu ... Hii inahitaji uigaji wa I/O. Kwa I/O (CPU, diski, mtandao, video, PCI, USB, bandari za serial, n.k.) KVM hutumia QEMU.

2) QEMU

QEMU (Quick Emulator) ni emulator ya vifaa mbalimbali vinavyokuwezesha kuendesha mifumo ya uendeshaji iliyoundwa kwa ajili ya usanifu mmoja hadi mwingine (kwa mfano, ARM -> x86). Mbali na processor, QEMU huiga vifaa mbalimbali vya pembeni: kadi za mtandao, HDD, kadi za video, PCI, USB, nk.

Inafanya kazi kama hii:

Maagizo/msimbo wa jozi (kwa mfano, ARM) hubadilishwa kuwa msimbo wa kati unaojitegemea kwa jukwaa kwa kutumia kibadilishaji cha TCG (Tiny Code Generator) na kisha msimbo huu wa binary unaojitegemea kwa jukwaa hubadilishwa kuwa maelekezo/misimbo lengwa (kwa mfano, x86).

ARM –> intermediate_code –> x86

Kimsingi, unaweza kuendesha mashine pepe kwenye QEMU kwa seva pangishi yoyote, hata kwa miundo ya kichakataji ya zamani ambayo haitumii Intel VT-x (Teknolojia ya Uhakikisho wa Intel) / AMD SVM (AMD Secure Virtual Machine). Walakini, katika kesi hii, itafanya kazi polepole sana, kwa sababu ya ukweli kwamba msimbo wa binary wa kutekeleza unahitaji kukusanywa tena kwa kuruka mara mbili, kwa kutumia TCG (TCG ni mkusanyaji wa Wakati wa Wakati).

Wale. QEMU yenyewe ni nzuri sana, lakini inafanya kazi polepole sana.

3) Pete za ulinzi

Kanuni za jumla za uendeshaji wa QEMU-KVM

Nambari ya programu ya binary kwenye wasindikaji hufanya kazi kwa sababu fulani, lakini iko katika viwango tofauti (pete / pete za Ulinzi) na viwango tofauti vya ufikiaji wa data, kutoka kwa upendeleo zaidi (Pete 0), hadi mdogo zaidi, kudhibitiwa na "na karanga zilizoimarishwa. ” (Pete 3).

Mfumo wa uendeshaji (OS kernel) huendesha kwa Gonga 0 (hali ya kernel) na inaweza kufanya chochote inachotaka na data na vifaa vyovyote. Programu za mtumiaji zinafanya kazi katika kiwango cha Gonga 3 (hali ya mtumiaji) na haziruhusiwi kufanya chochote wanachotaka, lakini badala yake lazima ziombe ufikiaji kila wakati ili kufanya operesheni fulani (kwa hivyo, programu za watumiaji zina ufikiaji wa data zao wenyewe tu na haziwezi "kupata. ndani ya" sanduku la mchanga la mtu mwingine). Pete 1 na 2 imekusudiwa kutumiwa na madereva.

Kabla ya uvumbuzi wa Intel VT-x / AMD SVM, hypervisor iliendesha kwenye Gonga 0, na wageni walikimbia kwenye Gonga 1. Kwa kuwa Gonga 1 haina haki za kutosha kwa uendeshaji wa kawaida wa OS, kwa kila simu ya upendeleo kutoka kwa mfumo wa wageni, hypervisor ilibidi kurekebisha simu hii kwenye nzi na kuitekeleza kwenye Gonga 0 (kama vile QEMU inavyofanya). Wale. mgeni binary NOT ilitekelezwa moja kwa moja kwenye processor, na kila wakati ilipitia marekebisho kadhaa ya kati kwenye kuruka.

Upeo wa juu ulikuwa muhimu na hili lilikuwa shida kubwa, na kisha watengenezaji wa wasindikaji, bila ya kila mmoja, walitoa seti iliyopanuliwa ya maagizo (Intel VT-x / AMD SVM) ambayo iliruhusu kutekeleza nambari ya OS ya mgeni. MOJA KWA MOJA kwenye kichakataji mwenyeji (kupitia hatua zozote za gharama za kati, kama ilivyokuwa hapo awali).

Pamoja na ujio wa Intel VT-x / AMD SVM, kiwango kipya cha Gonga -1 (minus moja) kiliundwa. Na sasa hypervisor inaendesha juu yake, na wageni huendesha kwenye Gonga 0 na kupata ufikiaji wa bahati kwa CPU.

Wale. hatimaye:

  • mwenyeji huendesha kwenye Gonga 0
  • wageni wanafanya kazi kwenye Gonga 0
  • hypervisor inaendesha kwenye Gonga -1

4) QEMU-KVM

KVM huwapa wageni ufikiaji wa Gonga 0 na hutumia QEMU kuiga I/O (kichakataji, diski, mtandao, video, PCI, USB, milango ya mfululizo, n.k. ambayo wageni "huona" na kufanya kazi nayo).

Kwa hivyo QEMU-KVM (au KVM-QEMU) :)

Mikopo
Picha ili kuvutia umakini
Picha ya pete za ulinzi

PS Maandishi ya makala haya yalichapishwa awali katika chaneli ya Telegram @RU_Voip kama jibu la swali kutoka kwa mmoja wa washiriki wa kituo.

Andika kwenye maoni ambapo sielewi mada kwa usahihi au ikiwa kuna chochote cha kuongeza.

Asante!

Chanzo: mapenzi.com

Kuongeza maoni