Generelle driftsprinsipper for QEMU-KVM

Generelle driftsprinsipper for QEMU-KVM

Min nåværende forståelse:

1) KVM

KVM (Kernel-based Virtual Machine) er en hypervisor (VMM – Virtual Machine Manager) som kjører som en modul på operativsystemet. LinuxEn hypervisor er nødvendig for å kjøre programvare i et ikke-eksisterende (virtuelt) miljø, samtidig som den fysiske maskinvaren den kjører på skjules fra programvaren. Hypervisoren fungerer som et "lag" mellom den fysiske maskinvaren (verten) og det virtuelle operativsystemet (gjesten).

Siden KVM er en standard kjernemodul Linux, den får alle nødvendige fordeler fra kjernen (minnehåndtering, planlegger osv.). Og følgelig tilfaller alle disse fordelene til slutt gjestene (siden gjestene kjører på en hypervisor, som kjører på/i OS-kjernen). Linux).

KVM er veldig raskt, men i seg selv er det ikke nok til å kjøre et virtuelt operativsystem, fordi... Dette krever I/O-emulering. For I/O (CPU, disker, nettverk, video, PCI, USB, serielle porter, etc.) bruker KVM QEMU.

2) QEMU

QEMU (Quick Emulator) er en emulator for ulike enheter som lar deg kjøre operativsystemer designet for en arkitektur på en annen (for eksempel ARM -> x86). I tillegg til prosessoren emulerer QEMU ulike perifere enheter: nettverkskort, HDD, skjermkort, PCI, USB, etc.

Det fungerer slik:

Instruksjoner/binær kode (for eksempel ARM) konverteres til mellomliggende plattformuavhengig kode ved hjelp av TCG (Tiny Code Generator)-omformeren og deretter konverteres denne plattformuavhengige binære koden til målinstruksjoner/-kode (for eksempel x86).

ARM –> mellomkode –> x86

I hovedsak kan du kjøre virtuelle maskiner på QEMU på hvilken som helst vert, selv med eldre prosessormodeller som ikke støtter Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine). I dette tilfellet vil det imidlertid fungere veldig sakte, på grunn av det faktum at den utførende binære koden må kompileres på nytt to ganger ved hjelp av TCG (TCG er en Just-in-Time-kompilator).

De. QEMU i seg selv er megakul, men den fungerer veldig sakte.

3) Beskyttelsesringer

Generelle driftsprinsipper for QEMU-KVM

Binær programkode på prosessorer fungerer av en grunn, men er plassert på forskjellige nivåer (ringer / beskyttelsesringer) med forskjellige nivåer av datatilgang, fra de mest privilegerte (Ring 0), til de mest begrensede, regulerte og "med mutrene strammet til ” (Ring 3 ).

Operativsystemet (OS-kjernen) kjører på Ring 0 (kjernemodus) og kan gjøre hva det vil med alle data og enheter. Brukerapplikasjoner opererer på Ring 3-nivå (brukermodus) og har ikke lov til å gjøre hva de vil, men må i stedet be om tilgang hver gang for å utføre en bestemt operasjon (derved har brukerapplikasjoner bare tilgang til sine egne data og kan ikke "få inn i en annens sandkasse). Ring 1 og 2 er beregnet for bruk av sjåfører.

Før oppfinnelsen av Intel VT-x / AMD SVM, kjørte hypervisorer på Ring 0, og gjester kjørte på Ring 1. Siden Ring 1 ikke har nok rettigheter for normal drift av OS, med hver privilegert samtale fra gjestesystemet, hypervisor måtte endre denne samtalen på fly og utføre den på Ring 0 (omtrent som QEMU gjør). De. gjest binær IKKE ble utført direkte på prosessoren, og gikk hver gang gjennom flere mellomliggende modifikasjoner i farten.

Overheaden var betydelig og dette var et stort problem, og deretter ga prosessorprodusenter, uavhengig av hverandre, ut et utvidet sett med instruksjoner (Intel VT-x / AMD SVM) som tillot utførelse av gjeste-OS-kode DIREKTE på vertsprosessoren (omgå eventuelle kostbare mellomtrinn, slik tilfellet var før).

Med bruken av Intel VT-x / AMD SVM, ble et spesielt nytt Ring-nivå -1 (minus en) opprettet. Og nå kjører hypervisoren på den, og gjestene kjører på Ring 0 og får privilegert tilgang til CPU.

De. etter hvert:

  • vert kjører på Ring 0
  • gjester jobber på Ring 0
  • hypervisor kjører på Ring -1

4) QEMU-KVM

KVM gir gjestene tilgang til Ring 0 og bruker QEMU til å emulere I/O (prosessor, disker, nettverk, video, PCI, USB, serielle porter osv. som gjestene "ser" og jobber med).

Derfor QEMU-KVM (eller KVM-QEMU) :)

CREDITS
Bilde for å tiltrekke oppmerksomhet
Bilde av beskyttelsesringer

P.S. Teksten til denne artikkelen ble opprinnelig publisert i Telegram-kanalen @RU_Voip som svar på et spørsmål fra en av kanaldeltakerne.

Skriv i kommentarfeltet hvor jeg ikke forstår temaet riktig eller om det er noe å legge til.

Takk!

Kilde: www.habr.com

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig webhotell med DDoS-beskyttelse, VPS VDS-servere | ProHoster