QEMU-KVM ning umumiy ishlash tamoyillari

QEMU-KVM ning umumiy ishlash tamoyillari

Mening hozirgi tushuncham:

1) KVM

KVM (yadro asosidagi virtual mashina) - bu operatsion tizimda modul sifatida ishlaydigan gipervizor (VMM - Virtual Machine Manager). LinuxGipervizor dasturiy ta'minotni mavjud bo'lmagan (virtual) muhitda ishga tushirish va shu bilan birga u ishlaydigan haqiqiy jismoniy apparatni o'sha dasturiy ta'minotdan yashirish uchun kerak. Gipervizor jismoniy apparat (xost) va virtual OT (mehmon) o'rtasida "qatlam" vazifasini bajaradi.

KVM standart yadro moduli bo'lgani uchun Linux, u yadrodan barcha kerakli narsalarni oladi (xotirani boshqarish, rejalashtiruvchi va boshqalar). Va shunga ko'ra, bu afzalliklarning barchasi oxir-oqibat mehmonlarga beriladi (chunki mehmonlar OS yadrosida/ichida ishlaydigan gipervizorda ishlaydi). Linux).

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

DDoS himoyasi, VPS VDS serverlari bo'lgan saytlar uchun ishonchli hosting sotib oling 🔥 DDoS himoyasi, VPS VDS serverlari bilan ishonchli veb-sayt xostingini sotib oling | ProHoster