QEMU-KVMren funtzionamendu-printzipio orokorrak

QEMU-KVMren funtzionamendu-printzipio orokorrak

Nire egungo ulermena:

1) KVM

KVM (kernel-oinarritutako makina birtuala) Linux OS-en modulu gisa exekutatzen den hipervisor (VMM - Virtual Machine Manager) da. Hipervisor bat behar da software batzuk existitzen ez den ingurunean (birtual) exekutatzeko eta, aldi berean, software honetatik ezkutatzeko software honek exekutatzen duen benetako hardware fisikoa. Hipervisoria hardware fisikoaren (ostalaria) eta OS birtualaren (gonbidatua) arteko "banatzaile" gisa jokatzen du.

KVM Linux nukleoaren modulu estandarra denez, nukleotik behar diren ondasun guztiak jasotzen ditu (memoriaren kudeaketa, programatzailea, etab.). Eta horren arabera, azkenean, onura horiek guztiak gonbidatuentzat doaz (gonbidatuek Linux OS kernelean/exekutatzen den hipervisore batean lan egiten baitute).

KVM oso azkarra da, baina berez ez da nahikoa OS birtual bat exekutatzeko, zeren... Honek I/O emulazioa behar du. I/Orako (CPU, diskoak, sarea, bideoa, PCI, USB, serie atakak, etab.) KVM-k QEMU erabiltzen du.

2) QEMU

QEMU (Quick Emulator) hainbat gailuentzako emuladorea da, arkitektura baterako diseinatutako sistema eragileak beste batean exekutatzeko aukera ematen duena (adibidez, ARM -> x86). Prozesadoreaz gain, QEMUk hainbat gailu periferiko emulatzen ditu: sare-txartelak, HDD, bideo-txartelak, PCI, USB, etab.

Honela funtzionatzen du:

Argibideak/kode bitar (adibidez, ARM) bitarteko plataformaren araberako kode bihurtzen dira TCG (Tiny Code Generator) bihurgailua erabiliz eta, ondoren, plataformatik independentea den kode bitar hau helburuko argibide/kode bihurtzen da (adibidez, x86).

ARM –> tarteko_kodea –> x86

Funtsean, QEMU-n makina birtualak exekutatu ditzakezu edozein ostalaritan, Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine) onartzen ez duten prozesadore-eredu zaharragoekin ere. Hala ere, kasu honetan, oso poliki funtzionatuko du, exekutatzen ari den kode bitarra birritan birkonpilatu behar delako, TCG erabiliz (TCG Just-in-Time konpilatzailea da).

Horiek. QEMU bera mega cool da, baina oso poliki funtzionatzen du.

3) Babes eraztunak

QEMU-KVMren funtzionamendu-printzipio orokorrak

Prozesadoreetako programa-kode bitarrak arrazoi batengatik funtzionatzen du, baina maila ezberdinetan dago (eraztunak / Babes eraztunak) datuetarako sarbidea maila ezberdinekin, pribilegiatuenetatik (0 eraztuna), mugatuenetara, araututa eta "azkoinekin estututa". ” (3. eraztuna).

Sistema eragilea (OS kernel) Ring 0-n exekutatzen da (kernel moduan) eta nahi duena egin dezake edozein datu eta gailurekin. Erabiltzaile-aplikazioek Ring 3 mailan funtzionatzen dute (erabiltzaile moduan) eta ezin dute nahi dutena egin, baina, horren ordez, sarbidea eskatu behar dute eragiketa jakin bat egiteko aldi bakoitzean (horrela, erabiltzaile-aplikazioek beren datuetarako sarbidea dute soilik eta ezin dute "lortu". sartu” beste norbaiten hareatzan). Eraztun 1 eta 2 gidariek erabiltzeko pentsatuta daude.

Intel VT-x / AMD SVM asmatu baino lehen, hiperbissoreak Ring 0-n exekutatzen ziren eta gonbidatuak Ring 1-en exekutatzen ziren. Ring 1-ek ez duenez OSaren funtzionamendu arrunterako eskubide nahikorik, sistema gonbidatuaren dei pribilegiatu bakoitzarekin, hipervisoreak dei hau berehala aldatu eta 0 Ring-en exekutatu behar izan zuen (QEMUk egiten duen antzera). Horiek. gonbidatu bitarra EZ prozesadorean zuzenean exekutatu zen, eta aldi bakoitzean tarteko hainbat aldaketa egin zituen hegan.

Gaineko kostua esanguratsua zen eta arazo handia zen, eta gero prozesadoreen fabrikatzaileek, bata bestearengandik independentean, argibide sorta hedatua kaleratu zuten (Intel VT-x / AMD SVM) gonbidatutako sistema eragilearen kodea exekutatzea ahalbidetzen zuena. ZUZENEAN ostalariaren prozesadorean (bitarteko urrats garestiak saihestuz, lehen gertatzen zen bezala).

Intel VT-x / AMD SVM-ren etorrerarekin, Ring maila -1 (minus bat) berri berezi bat sortu zen. Eta orain hipervisorea bertan exekutatzen da, eta gonbidatuek 0 Eraztunean exekutatzen dute eta CPUrako sarbide pribilegiatua lortzen dute.

Horiek. azkenean:

  • ostalaria 0 eraztunean exekutatzen da
  • gonbidatuek Ring 0-n lan egiten dute
  • hipervisor -1 Ring-en exekutatzen da

4) QEMU-KVM

KVM-k gonbidatuei Ring 0-rako sarbidea ematen die eta QEMU erabiltzen du I/O (prozesadorea, diskoak, sarea, bideoa, PCI, USB, serie-atalak, etab. gonbidatuek "ikusten" eta lan egiten duten).

Horregatik QEMU-KVM (edo KVM-QEMU) :)

KREDITUAK
Arreta erakartzeko irudia
Babes eraztunaren argazkia

PS Artikulu honen testua jatorriz Telegram kanalean argitaratu zen @RU_Voip kanaleko parte-hartzaileetako baten galdera bati erantzun bezala.

Idatzi iruzkinetan gaia ondo ulertzen ez dudan edo gehitzeko zerbait dagoen.

Eskerrik asko!

Iturria: www.habr.com

Gehitu iruzkin berria