Kinatibuk-ang mga prinsipyo sa operasyon sa QEMU-KVM

Kinatibuk-ang mga prinsipyo sa operasyon sa QEMU-KVM

Akong pagsabot karon:

1) KVM

Ang KVM (Kernel-based Virtual Machine) usa ka hypervisor (VMM - Virtual Machine Manager) nga nagdagan isip module sa Linux OS. Ang usa ka hypervisor gikinahanglan aron makadagan ang pipila ka software sa usa ka wala (virtual) nga palibot ug sa samang higayon itago gikan niini nga software ang tinuod nga pisikal nga hardware diin kini nga software nagdagan. Ang hypervisor naglihok isip usa ka "spacer" tali sa pisikal nga hardware (host) ug sa virtual OS (bisita).

Tungod kay ang KVM usa ka sumbanan nga module sa Linux kernel, kini makadawat sa tanan nga gikinahanglan nga mga butang gikan sa kernel (pagdumala sa memorya, scheduler, ug uban pa). Ug sumala niana, sa katapusan, kining tanan nga mga benepisyo moadto sa mga bisita (tungod kay ang mga bisita nagtrabaho sa usa ka hypervisor nga nagdagan sa / sa Linux OS kernel).

Ang KVM paspas kaayo, apan sa iyang kaugalingon dili igo ang pagpadagan sa usa ka virtual OS, tungod kay ... Nagkinahanglan kini og I/O emulation. Para sa I/O (CPU, disks, network, video, PCI, USB, serial ports, etc.) Ang KVM naggamit sa QEMU.

2) QEMU

Ang QEMU (Quick Emulator) usa ka emulator alang sa lainlaing mga aparato nga nagtugot kanimo sa pagpadagan sa mga operating system nga gidisenyo alang sa usa ka arkitektura sa lain (pananglitan, ARM -> x86). Gawas pa sa processor, ang QEMU nagsunod sa lainlaing mga aparato sa peripheral: network card, HDD, video card, PCI, USB, ug uban pa.

Kini molihok sama niini:

Ang mga instruksiyon/binary code (pananglitan, ARM) gi-convert ngadto sa intermediate platform-independent code gamit ang TCG (Tiny Code Generator) converter ug dayon kining platform-independent nga binary code gi-convert ngadto sa target instructions/code (pananglitan, x86).

ARM -> intermediate_code -> x86

Sa tinuud, mahimo nimong ipadagan ang mga virtual machine sa QEMU sa bisan unsang host, bisan sa mga tigulang nga modelo sa processor nga wala nagsuporta sa Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine). Bisan pa, sa kini nga kaso, kini molihok nga hinay kaayo, tungod sa kamatuoran nga ang nagpatuman nga binary code kinahanglan nga i-recompiled sa langaw kaduha, gamit ang TCG (TCG usa ka Just-in-Time compiler).

Mga. Ang QEMU mismo mao ang mega cool, apan kini hinay kaayo.

3) Mga singsing sa pagpanalipod

Kinatibuk-ang mga prinsipyo sa operasyon sa QEMU-KVM

Ang binary program code sa mga processor nagtrabaho alang sa usa ka rason, apan nahimutang sa lain-laing mga lebel (singsing / Protection singsing) uban sa lain-laing mga lebel sa data access, gikan sa pinakapribilehiyo (Ring 0), ngadto sa labing limitado, regulated ug β€œuban sa mga nuts tightened ” (Ring 3).

Ang operating system (OS kernel) nagdagan sa Ring 0 (kernel mode) ug makahimo sa bisan unsa nga gusto niini sa bisan unsang datos ug mga himan. Ang mga aplikasyon sa gumagamit naglihok sa lebel sa Ring 3 (mode sa tiggamit) ug dili gitugotan sa pagbuhat sa bisan unsa nga gusto nila, apan kinahanglan nga mangayo og access matag higayon aron mahimo ang usa ka partikular nga operasyon (sa ingon, ang mga aplikasyon sa gumagamit adunay access lamang sa ilang kaugalingon nga datos ug dili "makakuha ngadto sa” sandbox sa laing tawo). Ang singsing 1 ug 2 gituyo alang sa paggamit sa mga drayber.

Sa wala pa ang pag-imbento sa Intel VT-x / AMD SVM, ang mga hypervisors midagan sa Ring 0, ug ang mga bisita midagan sa Ring 1. Tungod kay ang Ring 1 walay igong katungod alang sa normal nga operasyon sa OS, sa matag pribilehiyo nga tawag gikan sa guest system, ang Ang hypervisor kinahanglan nga usbon kini nga tawag sa langaw ug ipatuman kini sa Ring 0 (sama sa gibuhat sa QEMU). Mga. bisita binary DILI gipatuman direkta sa processor, ug sa matag higayon nga moagi sa pipila ka intermediate nga mga kausaban sa langaw.

Mahinungdanon ang overhead ug kini usa ka dako nga problema, ug dayon ang mga tiggama sa processor, nga independente sa usag usa, nagpagawas usa ka taas nga set sa mga panudlo (Intel VT-x / AMD SVM) nga nagtugot sa pagpatuman sa code sa OS sa bisita. DIREKTA sa host processor (pag-bypass sa bisan unsang mahal nga intermediate nga mga lakang, sama sa kaso kaniadto).

Sa pag-abut sa Intel VT-x / AMD SVM, usa ka espesyal nga bag-ong lebel sa Ring -1 (minus usa) ang gihimo. Ug karon ang hypervisor nagdagan niini, ug ang mga bisita nagdagan sa Ring 0 ug nakakuha og pribilehiyo nga pag-access sa CPU.

Mga. sa katapusan:

  • host midagan sa Ring 0
  • ang mga bisita nagtrabaho sa Ring 0
  • hypervisor midagan sa Ring -1

4) QEMU-KVM

Ang KVM naghatag sa mga bisita og access sa Ring 0 ug naggamit sa QEMU aron masundog ang I/O (processor, disks, network, video, PCI, USB, serial ports, ug uban pa nga "makita" ug magamit sa mga bisita).

Busa QEMU-KVM (o KVM-QEMU) :)

credits
Hulagway aron madani ang atensyon
Hulagway sa Protection rings

PS Ang teksto niini nga artikulo orihinal nga gipatik sa Telegram channel @RU_Voip isip tubag sa pangutana gikan sa usa sa mga partisipante sa channel.

Isulat sa mga komentaryo kung diin dili nako masabtan ang hilisgutan sa husto o kung adunay idugang.

Бпасибо!

Source: www.habr.com

Idugang sa usa ka comment