QEMU-KVM-ийн үйл ажиллагааны ерөнхий зарчим

QEMU-KVM-ийн үйл ажиллагааны ерөнхий зарчим

Миний одоогийн ойлголт:

1) KVM

KVM (Цөмд суурилсан виртуал машин) нь Линукс үйлдлийн систем дээр модуль хэлбэрээр ажилладаг гипервизор (VMM – Virtual Machine Manager) юм. Зарим программ хангамжийг байхгүй (виртуал) орчинд ажиллуулахын тулд энэ програм хангамжийн бодит физик техник хангамжийг энэ програм хангамжаас нуухын тулд гипервизор хэрэгтэй. Гипервизор нь физик техник хангамж (хост) болон виртуал үйлдлийн систем (зочин) хооронд "зайлагч" үүрэг гүйцэтгэдэг.

KVM нь Линуксийн цөмийн стандарт модуль тул цөмөөс шаардлагатай бүх сайн зүйлсийг (санах ойн удирдлага, төлөвлөгч гэх мэт) хүлээн авдаг. Үүний дагуу эцэст нь эдгээр бүх ашиг тус зочдод хүрдэг (зочдод Linux үйлдлийн системийн цөм дээр ажилладаг гипервизор дээр ажилладаг тул).

KVM нь маш хурдан боловч виртуал үйлдлийн систем ажиллуулахад хангалтгүй, учир нь... Энэ нь I/O эмуляцийг шаарддаг. 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 –> завсрын_код –> x86

Үндсэндээ та Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine) дэмждэггүй хуучин процессорын загвартай ч гэсэн ямар ч хост дээр QEMU дээр виртуал машин ажиллуулах боломжтой. Гэсэн хэдий ч, энэ тохиолдолд энэ нь маш удаан ажиллах болно, учир нь гүйцэтгэх хоёртын кодыг 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 дээр, зочид Ring 1 дээр ажилладаг байсан. Ring 1 нь үйлдлийн системийн хэвийн ажиллагааг хангах хангалттай эрхгүй тул зочны системээс давуу эрхтэй дуудлага бүрт, hypervisor энэ дуудлагыг шууд өөрчилж, Ring 0 дээр гүйцэтгэх шаардлагатай болсон (QEMU шиг). Тэдгээр. зочин хоёртын Үгүй процессор дээр шууд гүйцэтгэсэн бөгөөд тэр бүрдээ хэд хэдэн завсрын өөрчлөлтийг шууд дамжуулж байв.

Нэмэлт зардал их байсан бөгөөд энэ нь том асуудал байсан бөгөөд дараа нь процессор үйлдвэрлэгчид бие биенээсээ үл хамааран зочны үйлдлийн системийн кодыг гүйцэтгэх боломжийг олгодог өргөтгөсөн зааврыг (Intel VT-x / AMD SVM) гаргасан. ШУУД хост процессор дээр (өмнө нь байсан шиг зардал ихтэй завсрын алхмуудыг алгасах).

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

Тэдгээр. эцэст нь:

  • хост Ring 0 дээр ажилладаг
  • зочид Ring 0 дээр ажилладаг
  • hypervisor Ring -1 дээр ажилладаг

4) QEMU-KVM

KVM нь зочдод Ring 0-д хандах боломжийг олгодог бөгөөд QEMU-г ашиглан I/O-г дуурайдаг (процессор, диск, сүлжээ, видео, PCI, USB, цуваа портууд гэх мэт. зочдын “хардаг”, хамтран ажилладаг).

Тиймээс QEMU-KVM (эсвэл KVM-QEMU) :)

Кредитүүд
Анхаарал татахуйц зураг
Хамгаалалтын цагирагны зураг

Жич Энэ нийтлэлийн текстийг Telegram сувагт анх нийтэлсэн @RU_Voip сувгийн оролцогчдын нэг асуултын хариулт.

Сэдвийг зөв ойлгохгүй байгаа эсвэл нэмэх зүйл байвал коммент хэсэгт бичээрэй.

Баярлалаа!

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх