Mfundo zazikuluzikulu za ntchito ya QEMU-KVM

Mfundo zazikuluzikulu za ntchito ya QEMU-KVM

Kumvetsetsa kwanga pano:

1) KVM

KVM (Kernel-based Virtual Machine) ndi hypervisor (VMM - Virtual Machine Manager) yomwe ikuyenda ngati gawo pa Linux OS. Hypervisor imafunika kuti muthe kuyendetsa mapulogalamu ena pamalo omwe mulibe (owoneka) ndipo nthawi yomweyo mubisale ku pulogalamuyi zida zenizeni zakuthupi zomwe pulogalamuyi imayendera. Hypervisor imakhala ngati "spacer" pakati pa zida zakuthupi (host) ndi OS (mlendo).

Popeza KVM ndi gawo lokhazikika la kernel ya Linux, imalandira zinthu zonse zofunika kuchokera ku kernel (kasamalidwe ka memori, scheduler, etc.). Ndipo motero, pamapeto pake, zopindulitsa zonsezi zimapita kwa alendo (popeza alendo amagwira ntchito pa hypervisor yomwe imayenda pa / mu Linux OS kernel).

KVM ndiyothamanga kwambiri, koma palokha sikokwanira kuyendetsa OS, chifukwa ... Izi zimafuna kutsanzira I/O. Kwa I/O (CPU, disks, network, video, PCI, USB, serial ports, etc.) KVM imagwiritsa ntchito QEMU.

2) QEMU

QEMU (Quick Emulator) ndi emulator pazida zosiyanasiyana zomwe zimakupatsani mwayi woyendetsa makina opangira mamangidwe amodzi (mwachitsanzo, ARM -> x86). Kuphatikiza pa purosesa, QEMU imatengera zida zosiyanasiyana zotumphukira: makhadi amtaneti, HDD, makhadi avidiyo, PCI, USB, ndi zina zambiri.

Zimagwira ntchito motere:

Malangizo/kachidindo ka binary (mwachitsanzo, ARM) amasinthidwa kukhala kachidindo kodziyimira papulatifomu pogwiritsa ntchito chosinthira cha TCG (Tiny Code Generator) ndiyeno code binary iyi yodziyimira payokha imasinthidwa kukhala malangizo/code chandamale (mwachitsanzo, x86).

ARM –> intermediate_code –> x86

Kwenikweni, mutha kuyendetsa makina enieni pa QEMU pa wolandira aliyense, ngakhale ndi mitundu yakale ya purosesa yomwe sagwirizana ndi Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine). Komabe, pankhaniyi, izi zidzagwira ntchito pang'onopang'ono, chifukwa chakuti code ya binary iyenera kubwerezedwa kawiri kawiri, pogwiritsa ntchito TCG (TCG ndi Just-in-Time compiler).

Iwo. QEMU yokha ndiyozizira kwambiri, koma imagwira ntchito pang'onopang'ono.

3) mphete zoteteza

Mfundo zazikuluzikulu za ntchito ya QEMU-KVM

Nambala ya Binary pa processors imagwira ntchito pazifukwa, koma ili pamiyezo yosiyana (mphete / mphete zoteteza) zokhala ndi magawo osiyanasiyana ofikira deta, kuyambira pamwayi kwambiri (Ring 0), mpaka ochepa, owongolera komanso "ndi mtedza wokhazikika. ” ( mphete 3 ).

Makina ogwiritsira ntchito (OS kernel) amayendera Ring 0 (kernel mode) ndipo amatha kuchita chilichonse chomwe angafune ndi data ndi zida zilizonse. Mapulogalamu a ogwiritsa ntchito amagwira ntchito pa Ring 3 level (mawonekedwe a ogwiritsa) ndipo saloledwa kuchita chilichonse chomwe akufuna, koma m'malo mwake ayenera kupempha mwayi nthawi iliyonse kuti achite ntchito inayake (chifukwa chake, mapulogalamu a ogwiritsa ntchito amangopeza deta yawoyawo ndipo sangathe "kupeza. kulowa” mu sandbox ya munthu wina). Mphete 1 ndi 2 idapangidwa kuti igwiritsidwe ntchito ndi madalaivala.

Asanayambe kupangidwa kwa Intel VT-x / AMD SVM, ma hypervisors adathamanga pa mphete 0, ndipo alendo adathamanga pa mphete 1. hypervisor amayenera kusintha kuyimba uku pa ntchentche ndikuyipereka pa mphete 1 (monga momwe QEMU imachitira). Iwo. mlendo binary OSATI adaphedwa mwachindunji pa purosesa, ndipo nthawi iliyonse adadutsa zosintha zingapo zapakatikati pa ntchentche.

Kupitilira muyeso kunali kofunikira ndipo ili linali vuto lalikulu, kenako opanga mapurosesa, mopanda wina ndi mnzake, adatulutsa malangizo owonjezera (Intel VT-x / AMD SVM) omwe amalola kugwiritsa ntchito nambala ya OS ya alendo. ZOCHITIKA pa purosesa yolandira alendo (kudutsa masitepe apakati aliwonse okwera mtengo, monga zinalili kale).

Pakubwera kwa Intel VT-x / AMD SVM, mphete yatsopano ya mphete -1 (yochotsa imodzi) idapangidwa. Ndipo tsopano hypervisor imayendetsa, ndipo alendo amathamanga pa Ring 0 ndikupeza mwayi wopita ku CPU.

Iwo. pomaliza:

  • host akuthamanga pa Ring 0
  • alendo amagwira ntchito pa mphete 0
  • hypervisor imayendera mphete -1

4) QEMU-KVM

KVM imapatsa alendo mwayi wopita ku Ring 0 ndipo amagwiritsa ntchito QEMU kutsanzira I / O (purosesa, disks, network, video, PCI, USB, serial ports, etc. kuti alendo "amawona" ndikugwira nawo ntchito).

Chifukwa chake QEMU-KVM (kapena KVM-QEMU) :)

CREDITS
Chithunzi chokopa chidwi
Chithunzi cha mphete za Chitetezo

PS Zolemba za nkhaniyi zidasindikizidwa koyamba mu njira ya Telegraph @RU_Voip ngati yankho ku funso lochokera kwa m'modzi mwa omwe akutenga nawo mbali panjira.

Lembani mu ndemanga zomwe sindikumvetsa mutuwo molondola kapena ngati pali chilichonse chowonjezera.

Бпасибо!

Source: www.habr.com

Kuwonjezera ndemanga