QEMU-KVM ning umumiy ishlash tamoyillari

QEMU-KVM ning umumiy ishlash tamoyillari

Mening hozirgi tushuncham:

1) KVM

KVM (Yadroga asoslangan Virtual Mashina) - Linux operatsion tizimida modul sifatida ishlaydigan gipervisor (VMM - Virtual Machine Manager). Mavjud bo'lmagan (virtual) muhitda ba'zi bir dasturiy ta'minotni ishga tushirish va shu bilan birga ushbu dasturiy ta'minotdan ushbu dasturiy ta'minot ishlaydigan haqiqiy jismoniy uskunani yashirish uchun gipervisor kerak. Gipervisor jismoniy apparat (xost) va virtual OT (mehmon) o'rtasida "bo'shliq" vazifasini bajaradi.

KVM Linux yadrosining standart moduli bo'lgani uchun u yadrodan barcha kerakli yaxshiliklarni oladi (xotirani boshqarish, rejalashtiruvchi va boshqalar). Va shunga ko'ra, oxir-oqibat, bu imtiyozlarning barchasi mehmonlarga beriladi (chunki mehmonlar Linux OS yadrosida ishlaydigan gipervisorda ishlaydi).

KVM juda tez, lekin o'z-o'zidan virtual OTni ishga tushirish uchun etarli emas, chunki... Bu I/U emulyatsiyasini talab qiladi. Kirish/chiqarish uchun (CPU, disklar, tarmoq, video, PCI, USB, ketma-ket portlar va boshqalar) KVM QEMU dan foydalanadi.

2) QEMU

QEMU (Tezkor emulyator) - bu bir arxitektura uchun mo'ljallangan operatsion tizimlarni boshqasida (masalan, ARM -> x86) ishga tushirish imkonini beruvchi turli qurilmalar uchun emulyator. Protsessorga qo'shimcha ravishda, QEMU turli xil periferik qurilmalarga taqlid qiladi: tarmoq kartalari, HDD, video kartalar, PCI, USB va boshqalar.

Bu shunday ishlaydi:

Ko'rsatmalar/ikkilik kod (masalan, ARM) TCG (Tiny Code Generator) konvertori yordamida oraliq platformadan mustaqil kodga aylantiriladi va keyin bu platformadan mustaqil ikkilik kod maqsadli ko'rsatmalar/kodga (masalan, x86) aylantiriladi.

ARM -> oraliq_kod -> x86

Aslida, siz QEMU-da virtual mashinalarni istalgan xostda, hatto Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine) qo'llab-quvvatlamaydigan eski protsessor modellarida ham ishga tushirishingiz mumkin. Biroq, bu holda, u juda sekin ishlaydi, chunki bajaruvchi ikkilik kodni TCG (TCG - Just-in-Time kompilyatori) yordamida ikki marta tezda qayta kompilyatsiya qilish kerak.

Bular. QEMU o'zi mega ajoyib, lekin u juda sekin ishlaydi.

3) Himoya halqalari

QEMU-KVM ning umumiy ishlash tamoyillari

Protsessorlardagi ikkilik dastur kodi biron bir sababga ko'ra ishlaydi, lekin turli darajalarda (halqalar / himoya uzuklari) eng imtiyozli (Ring 0) dan eng cheklangan, tartibga solinadigan va "yong'oqlar mahkamlangan holda" ma'lumotlarga kirishning turli darajalarida joylashgan ” (3-ring).

Operatsion tizim (OS yadrosi) Ring 0 (yadro rejimi) da ishlaydi va har qanday ma'lumot va qurilmalar bilan xohlagan narsani qila oladi. Foydalanuvchi ilovalari Ring 3 darajasida (foydalanuvchi rejimi) ishlaydi va ular xohlagan narsani qilishlari mumkin emas, lekin buning o'rniga har safar ma'lum bir operatsiyani bajarish uchun ruxsat so'rashlari kerak (shuning uchun foydalanuvchi ilovalari faqat o'z ma'lumotlariga kirish huquqiga ega va "olish" mumkin emas. boshqa birovning qum qutisiga). Ring 1 va 2 haydovchilar tomonidan foydalanish uchun mo'ljallangan.

Intel VT-x / AMD SVM ixtiro qilinishidan oldin gipervisorlar Ring 0 da, mehmonlar esa Ring 1 da ishlagan. Ring 1 operatsion tizimning normal ishlashi uchun yetarli huquqlarga ega emasligi sababli, mehmon tizimidan har bir imtiyozli chaqiruv bilan, hypervisor bu qo'ng'iroqni tezda o'zgartirishi va uni Ring 0 da bajarishi kerak edi (xuddi QEMU kabi). Bular. mehmon ikkilik QAYD to'g'ridan-to'g'ri protsessorda bajarildi va har safar bir nechta oraliq modifikatsiyalardan o'tdi.

Qo'shimcha xarajatlar muhim edi va bu katta muammo edi, keyin protsessor ishlab chiqaruvchilari bir-biridan mustaqil ravishda mehmon OS kodini bajarishga imkon beruvchi kengaytirilgan ko'rsatmalar to'plamini (Intel VT-x / AMD SVM) chiqardilar. To'g'ridan-to'g'ri xost protsessorida (ilgari bo'lgani kabi har qanday qimmat oraliq bosqichlarni chetlab o'tish).

Intel VT-x / AMD SVM paydo bo'lishi bilan maxsus yangi Ring darajasi -1 (minus bir) yaratildi. Va endi gipervisor uning ustida ishlaydi va mehmonlar Ring 0 da ishlaydi va protsessorga imtiyozli kirish huquqiga ega bo'ladi.

Bular. Natijada:

  • xost Ring 0 da ishlaydi
  • mehmonlar Ring 0 da ishlaydi
  • gipervisor Ring -1 da ishlaydi

4) QEMU-KVM

KVM mehmonlarga Ring 0 ga kirish imkonini beradi va QEMU dan I/U ga taqlid qilish uchun foydalanadi (protsessor, disklar, tarmoq, video, PCI, USB, ketma-ket portlar va boshqalar. mehmonlar "ko'radi" va ishlaydi).

Shuning uchun QEMU-KVM (yoki KVM-QEMU) :)

KREDITLAR
Diqqatni jalb qilish uchun rasm
Himoya uzuklarining rasmi

P.S. Ushbu maqola matni dastlab Telegram kanalida e'lon qilingan @RU_Voip kanal ishtirokchilaridan birining savoliga javob sifatida.

Mavzuni to'g'ri tushunmagan yoki qo'shadigan biror narsa bo'lsa, izohlarda yozing.

Rahmat!

Manba: www.habr.com

a Izoh qo'shish