Parimet e përgjithshme të funksionimit të QEMU-KVM

Parimet e përgjithshme të funksionimit të QEMU-KVM

Kuptimi im aktual:

1) KVM

KVM (Makina virtuale e bazuar në kernel) është një hipervizor (VMM - Virtual Machine Manager) që funksionon si modul në Linux OS. Një hipervizor nevojitet për të ekzekutuar disa softuer në një mjedis inekzistent (virtual) dhe në të njëjtën kohë për të fshehur nga ky softuer harduerin real fizik në të cilin funksionon ky softuer. Hipervizori vepron si një "hapësirë" midis harduerit fizik (host) dhe OS virtual (mysafir).

Meqenëse KVM është një modul standard i kernelit Linux, ai merr të gjitha të mirat e kërkuara nga kerneli (menaxhimi i memories, planifikuesi, etj.). Dhe në përputhje me rrethanat, në fund, të gjitha këto përfitime shkojnë për të ftuarit (pasi të ftuarit punojnë në një hipervisor që funksionon në/në kernelin e Linux OS).

KVM është shumë i shpejtë, por në vetvete nuk mjafton të ekzekutosh një OS virtual, sepse... Kjo kërkon emulimin I/O. Për I/O (CPU, disqe, rrjet, video, PCI, USB, porte serike, etj.) KVM përdor QEMU.

2) QEMU

QEMU (Quick Emulator) është një emulator për pajisje të ndryshme që ju lejon të ekzekutoni sisteme operative të krijuara për një arkitekturë në një tjetër (për shembull, ARM -> x86). Përveç procesorit, QEMU emulon pajisje të ndryshme periferike: kartat e rrjetit, HDD, kartat video, PCI, USB, etj.

Ajo funksionon si kjo:

Instruksionet/kodi binar (për shembull, ARM) konvertohen në kod të ndërmjetëm të pavarur nga platforma duke përdorur konvertuesin TCG (Tiny Code Generator) dhe më pas ky kod binar i pavarur nga platforma konvertohet në udhëzime/kod të synuar (për shembull, x86).

ARM –> kodi_i ndërmjetëm –> x86

Në thelb, ju mund të ekzekutoni makina virtuale në QEMU në çdo host, madje edhe me modelet më të vjetra të procesorit që nuk mbështesin Intel VT-x (Teknologjia e Virtualizimit Intel) / AMD SVM (AMD Secure Virtual Machine). Megjithatë, në këtë rast, ai do të funksionojë shumë ngadalë, për faktin se kodi binar ekzekutues duhet të rikompilohet dy herë në fluturim, duke përdorur TCG (TCG është një përpilues Just-in-Time).

Ato. Vetë QEMU është mega cool, por funksionon shumë ngadalë.

3) Unaza mbrojtëse

Parimet e përgjithshme të funksionimit të QEMU-KVM

Kodi i programit binar në procesorë funksionon për një arsye, por ndodhet në nivele të ndryshme (unaza / unaza mbrojtëse) me nivele të ndryshme të aksesit të të dhënave, nga më të privilegjuarit (Unaza 0), deri te ato më të kufizuarat, të rregulluara dhe "me arra të shtrënguara". ” (Unaza 3).

Sistemi operativ (kerneli OS) funksionon në Ring 0 (modaliteti i kernelit) dhe mund të bëjë çfarë të dojë me çdo të dhënë dhe pajisje. Aplikacionet e përdoruesve funksionojnë në nivelin Ring 3 (modaliteti i përdoruesit) dhe nuk lejohen të bëjnë çfarë të duan, por në vend të kësaj duhet të kërkojnë qasje çdo herë për të kryer një operacion të caktuar (kështu, aplikacionet e përdoruesve kanë akses vetëm në të dhënat e tyre dhe nuk mund të "marrin në” kutinë e rërës së dikujt tjetër). Unaza 1 dhe 2 janë të destinuara për përdorim nga drejtuesit.

Përpara shpikjes së Intel VT-x / AMD SVM, hipervizorët funksiononin në Ring 0, dhe të ftuarit përdornin Ring 1. Meqenëse Unaza 1 nuk ka të drejta të mjaftueshme për funksionimin normal të sistemit operativ, me çdo telefonatë të privilegjuar nga sistemi i mysafirëve, hipervizori duhej ta modifikonte menjëherë këtë thirrje dhe ta ekzekutonte në Unazën 0 (ashtu siç bën QEMU). Ato. binar i ftuar NUK u ekzekutua drejtpërdrejt në procesor, dhe çdo herë kaloi nëpër disa modifikime të ndërmjetme në fluturim.

Shpenzimet e përgjithshme ishin të konsiderueshme dhe ky ishte një problem i madh, dhe më pas prodhuesit e procesorëve, në mënyrë të pavarur nga njëri-tjetri, lëshuan një grup të zgjeruar udhëzimesh (Intel VT-x / AMD SVM) që lejonin ekzekutimin e kodit të sistemit operativ të ftuar. DIREKT në procesorin pritës (duke anashkaluar çdo hap të ndërmjetëm të kushtueshëm, siç ishte rasti më parë).

Me ardhjen e Intel VT-x / AMD SVM, u krijua një nivel i ri special i Unazës -1 (minus një). Dhe tani hipervizori funksionon në të, dhe të ftuarit funksionojnë në Ring 0 dhe marrin akses të privilegjuar në CPU.

Ato. përfundimisht:

  • hosti funksionon në Unazën 0
  • të ftuarit punojnë në Unazën 0
  • hipervizori funksionon në Ring -1

4) QEMU-KVM

KVM u jep vizitorëve akses në Ring 0 dhe përdor QEMU për të imituar I/O (procesor, disqe, rrjet, video, PCI, USB, porte serike, etj. që të ftuarit "i shohin" dhe punojnë me të).

Prandaj QEMU-KVM (ose KVM-QEMU) :)

CREDITS
Foto për të tërhequr vëmendjen
Foto e unazave mbrojtëse

PS Teksti i këtij artikulli fillimisht u publikua në kanalin Telegram @RU_Voip si përgjigje ndaj një pyetjeje nga një prej pjesëmarrësve të kanalit.

Shkruaj në komente ku nuk e kuptoj mirë temën ose nëse ka diçka për të shtuar.

Ju faleminderit!

Burimi: www.habr.com

Shto një koment