Principis generals de funcionament de QEMU-KVM

Principis generals de funcionament de QEMU-KVM

La meva comprensió actual:

1) KVM

KVM (Màquina virtual basada en nucli) és un hipervisor (VMM - Virtual Machine Manager) que s'executa com a mòdul al sistema operatiu Linux. Es necessita un hipervisor per executar algun programari en un entorn (virtual) inexistent i alhora ocultar d'aquest programari el maquinari físic real en què s'executa aquest programari. L'hipervisor actua com a "espaiador" entre el maquinari físic (amfitrió) i el sistema operatiu virtual (convidat).

Atès que KVM és un mòdul estàndard del nucli de Linux, rep totes les coses necessàries del nucli (gestió de memòria, planificador, etc.). I en conseqüència, al final, tots aquests avantatges van per als convidats (ja que els convidats treballen en un hipervisor que s'executa al/al nucli del sistema operatiu Linux).

KVM és molt ràpid, però per si sol no n'hi ha prou amb executar un sistema operatiu virtual, perquè... Això requereix emulació d'E/S. Per a E/S (CPU, discs, xarxa, vídeo, PCI, USB, ports sèrie, etc.) KVM utilitza QEMU.

2) QEMU

QEMU (Quick Emulator) és un emulador per a diversos dispositius que permet executar sistemes operatius dissenyats per a una arquitectura en una altra (per exemple, ARM -> x86). A més del processador, QEMU emula diversos dispositius perifèrics: targetes de xarxa, HDD, targetes de vídeo, PCI, USB, etc.

Funciona així:

Les instruccions/codi binari (per exemple, ARM) es converteixen en codi intermedi independent de la plataforma mitjançant el convertidor TCG (Tiny Code Generator) i després aquest codi binari independent de la plataforma es converteix en instruccions/codi de destinació (per exemple, x86).

ARM –> codi_intermedi –> x86

Bàsicament, podeu executar màquines virtuals a QEMU a qualsevol host, fins i tot amb models de processadors més antics que no admeten Intel VT-x (tecnologia de virtualització Intel) / AMD SVM (màquina virtual segura AMD). Tanmateix, en aquest cas, funcionarà molt lentament, a causa del fet que el codi binari que s'executa s'ha de recompilar sobre la marxa dues vegades, utilitzant TCG (TCG és un compilador Just-in-Time).

Aquells. QEMU en si és genial, però funciona molt lentament.

3) Anells de protecció

Principis generals de funcionament de QEMU-KVM

El codi de programa binari als processadors funciona per una raó, però es troba a diferents nivells (anells / anells de protecció) amb diferents nivells d'accés a les dades, des dels més privilegiats (anell 0), fins als més limitats, regulats i “amb les femelles apretades”. ” (Anell 3).

El sistema operatiu (nucli del sistema operatiu) s'executa amb Ring 0 (mode nucli) i pot fer el que vulgui amb qualsevol dada i dispositiu. Les aplicacions d'usuari operen al nivell Ring 3 (mode d'usuari) i no poden fer el que vulguin, sinó que han de sol·licitar accés cada vegada per realitzar una operació determinada (per tant, les aplicacions d'usuari només tenen accés a les seves pròpies dades i no poden “obtenir a” la caixa de sorra d'una altra persona). Els anells 1 i 2 estan pensats per a ser utilitzats pels conductors.

Abans de la invenció d'Intel VT-x / AMD SVM, els hipervisors funcionaven a Ring 0 i els convidats funcionaven a Ring 1. Com que Ring 1 no té prou drets per al funcionament normal del sistema operatiu, amb cada trucada privilegiada del sistema convidat, el L'hipervisor va haver de modificar aquesta trucada sobre la marxa i executar-la a l'anell 0 (com fa QEMU). Aquells. binari convidat NO s'executava directament al processador, i cada vegada passava per diverses modificacions intermèdies sobre la marxa.

La sobrecàrrega era important i això era un gran problema, i aleshores els fabricants de processadors, independentment els uns dels altres, van llançar un conjunt estès d'instruccions (Intel VT-x / AMD SVM) que permetien executar codi del sistema operatiu convidat. DIRECTAMENT al processador amfitrió (obviant els passos intermedis costosos, com era el cas anterior).

Amb l'arribada d'Intel VT-x / AMD SVM, es va crear un nou nivell especial d'anell -1 (menys un). I ara l'hipervisor s'executa amb ell i els convidats s'executen a l'anell 0 i tenen accés privilegiat a la CPU.

Aquells. finalment:

  • L'amfitrió s'executa a l'anell 0
  • els convidats treballen a l'anell 0
  • L'hipervisor s'executa a l'anell -1

4) QEMU-KVM

KVM dóna accés als convidats a Ring 0 i utilitza QEMU per emular l'E/S (processador, discs, xarxa, vídeo, PCI, USB, ports sèrie, etc. que els convidats "veuen" i treballen).

Per tant, QEMU-KVM (o KVM-QEMU) :)

CRÈDITS
Imatge per cridar l'atenció
Fotografia de Anells de protecció

PD El text d'aquest article es va publicar originalment al canal de Telegram @RU_Voip com a resposta a una pregunta d'un dels participants del canal.

Escriu als comentaris on no entenc bé el tema o si hi ha alguna cosa a afegir.

Gràcies!

Font: www.habr.com

Afegeix comentari