QEMU-KVMнин жалпы иштөө принциптери

QEMU-KVMнин жалпы иштөө принциптери

Менин азыркы түшүнүгүм:

1) KVM

KVM (Ядро негизиндеги Виртуалдык Машина) – Linux OSде модуль катары иштеген гипервизор (VMM – Virtual Machine Manager). Болбогон (виртуалдык) чөйрөдө кандайдыр бир программалык камсыздоону иштетүү жана ошол эле учурда бул программалык камсыздоонун чыныгы физикалык жабдыктарын бул программадан жашыруу үчүн гипервизор керек. Гипервизор физикалык жабдык (хост) менен виртуалдык ОСтин (конок) ортосунда "бостук" ролун аткарат.

KVM Linux ядросунун стандарттуу модулу болгондуктан, ал ядродон бардык керектүү жакшы нерселерди алат (эстутумду башкаруу, пландоочу ж.б.). Ошентип, акырында, бул артыкчылыктардын бардыгы конокторго берилет (анткени коноктор Linux OS ядросунда/иштей турган гипервизордо иштешет).

KVM абдан тез, бирок виртуалдык ОСти иштетүү үчүн өзү эле жетишсиз, анткени... Бул I/O эмуляциясын талап кылат. Киргизүү/чыгаруу үчүн (CPU, дисктер, тармак, видео, PCI, USB, сериялык порттор ж.б.) KVM QEMU колдонот.

2) QEMU

QEMU (Quick Emulator) – бул ар кандай түзүлүштөр үчүн эмулятор, ал бир архитектура үчүн иштелип чыккан операциялык системаларды экинчисинде иштетүүгө мүмкүндүк берет (мисалы, ARM -> x86). Процессордон тышкары, QEMU ар кандай перифериялык түзүлүштөрдү эмуляциялайт: тармак карталары, HDD, видеокарталар, PCI, USB ж.б.

Ал мындай иштейт:

Инструкциялар/экилик код (мисалы, ARM) TCG (Tiny Code Generator) конвертеринин жардамы менен платформадан көз карандысыз аралык кодго айландырылат жана андан кийин бул платформадан көз карандысыз бинардык код максаттуу нускамаларга/кодго (мисалы, x86) айланат.

ARM –> intermediate_code –> x86

Негизи, сиз QEMU боюнча виртуалдык машиналарды каалаган хостто, атүгүл Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine) колдобогон эски процессорлордун моделдеринде иштете аласыз. Бирок, бул учурда, ал өтө жай иштейт, анткени аткаруучу экилик кодду TCG (TCG - Just-in-Time компилятору) колдонуу менен эки жолу тез арада компиляциялоо керек.

Ошол. QEMU өзү мега салкын, бирок ал абдан жай иштейт.

3) Коргоо шакекчелери

QEMU-KVMнин жалпы иштөө принциптери

Процессорлордогу экилик программалык код кандайдыр бир себептер менен иштейт, бирок ар кандай деңгээлдерде (шакекчелер/коргоо шакекчелери) жайгашкан, эң артыкчылыктуудан (Ring 0), эң чектелгенге, жөнгө салынганга чейин жана "гайкалар бекемделген" ” (3-шакек).

Иштетүү системасы (OS ядросу) Ring 0 (ядро режими) иштейт жана каалаган маалымат жана түзмөктөр менен каалаганын жасай алат. Колдонуучу тиркемелери Ring 3 деңгээлинде (колдонуучу режиминде) иштейт жана алар каалаган нерсени кылууга уруксат берилбейт, бирок анын ордуна белгилүү бир операцияны аткаруу үчүн ар бир жолу кирүүгө уруксат сурашы керек (ошондуктан, колдонуучу колдонмолору өздөрүнүн маалыматтарына гана кире алышат жана "ала албайт" башка бирөөнүн кум чөйрөсүнө). 1 жана 2-шакек айдоочулар үчүн арналган.

Intel VT-x / AMD SVM ойлоп табылганга чейин, гипервизорлор Ring 0, ал эми коноктор 1-рингде иштешчү. Ring 1 OSтун нормалдуу иштеши үчүн жетиштүү укуктарга ээ болбогондуктан, конок системасынан ар бир артыкчылыктуу чалуу менен, hypervisor бул чалууну дароо өзгөртүп, аны Ring 0до аткарышы керек болчу (QEMU сыяктуу). Ошол. конок бинардык НЕ түздөн-түз процессордо аткарылган жана ар бир жолу бир нече аралык модификациялардан өткөн.

Кошумча чыгымдар олуттуу болгон жана бул чоң көйгөй болгон, андан кийин процессор өндүрүүчүлөр бири-биринен көз карандысыз, коноктун OS кодун аткарууга мүмкүндүк берген кеңейтилген нускамалардын топтомун чыгарышты (Intel VT-x / AMD SVM) ТҮЗ хост процессорунда (мурункудай кымбат баалуу аралыктагы кадамдарды айланып өтүү).

Intel VT-x / AMD SVM пайда болушу менен өзгөчө жаңы Ring деңгээли -1 (минус бир) түзүлдү. Эми анын үстүндө гипервизор иштейт, ал эми коноктор Ring 0де иштеп, CPUга артыкчылыктуу мүмкүнчүлүк алышат.

Ошол. жыйынтыгында:

  • хост Ring 0до иштейт
  • коноктор Ring 0до иштешет
  • гипервизор Ring -1де иштейт

4) QEMU-KVM

KVM конокторго Ring 0 мүмкүнчүлүгүн берет жана I/Oну (процессор, дисктер, тармак, видео, PCI, USB, сериялык порттор, ж.

Демек, QEMU-KVM (же KVM-QEMU) :)

Кредиттер
Көңүл буруу үчүн сүрөт
Коргоо шакектеринин сүрөтү

PS Бул макаланын тексти алгач Telegram каналында жарыяланган @RU_Voip каналдын катышуучуларынын биринин суроосуна жооп катары.

Теманы туура түшүнбөй жаткан жеримде же кошумчалай турган нерсе болсо комментарийге жаз.

рахмат!

Source: www.habr.com

Комментарий кошуу