QEMU-KVM əməliyyatının ümumi prinsipləri

QEMU-KVM əməliyyatının ümumi prinsipləri

Hazırkı anlayışım:

1) KVM

KVM (Kernel-based Virtual Machine) Linux ƏS-də modul kimi fəaliyyət göstərən hipervizordur (VMM - Virtual Maşın Meneceri). Bəzi proqram təminatını qeyri-mövcud (virtual) mühitdə işə salmaq və eyni zamanda, bu proqram təminatının işlədiyi real fiziki avadanlığı bu proqramdan gizlətmək üçün hipervizor lazımdır. Hipervisor fiziki aparat (host) və virtual ƏS (qonaq) arasında "qat" rolunu oynayır.

KVM Linux nüvəsinin standart modulu olduğundan, nüvədən bütün üstünlükləri (yaddaşın idarə edilməsi, planlaşdırıcı və s.) alır. Və buna uyğun olaraq, sonda bütün bu üstünlüklər qonaqlara verilir (çünki qonaqlar Linux nüvəsində / üzərində işləyən hipervizorda işləyirlər).

KVM çox sürətlidir, lakin özlüyündə virtual OS-ni işə salmaq kifayət deyil, çünki bu I/O emulyasiyasını tələb edir. I/O (prosessor, disklər, şəbəkə, video, PCI, USB, serial portlar və s.) üçün KVM QEMU-dan istifadə edir.

2) QEMU

QEMU (Quick Emulator) bir arxitektura üçün nəzərdə tutulmuş əməliyyat sistemlərini digərində işlətməyə imkan verən müxtəlif cihazların emulyatorudur (məsələn, ARM –> x86). Prosessordan əlavə, QEMU müxtəlif periferik cihazları təqlid edir: şəbəkə kartları, HDD, video kartlar, PCI, USB və s.

Bu belə işləyir:

Təlimatlar/ikili kod (məsələn, ARM) TCG (Tiny Code Generator) çeviricisindən istifadə edərək aralıq platformadan müstəqil koda çevrilir və sonra bu platformadan asılı olmayan ikili kod hədəf təlimatlara/koda (məsələn, x86) çevrilir.

ARM -> səhnələşdirmə -> x86

Əslində, QEMU-da virtual maşınları istənilən hostda, hətta Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine) dəstəkləməyən köhnə prosessor modelləri ilə də işlədə bilərsiniz. Bununla belə, bu halda, çox yavaş işləyəcək, çünki icra edilə bilən ikili kodu TCG (TCG Just-in-Time tərtibçisidir) istifadə edərək iki dəfə tez bir zamanda yenidən tərtib etmək lazımdır.

Bunlar. QEMU özü mega sərindir, lakin çox yavaş işləyir.

3) Qoruyucu üzüklər

QEMU-KVM əməliyyatının ümumi prinsipləri

Prosessorlardakı ikili proqram kodu belə işləmir, lakin ən imtiyazlıdan (Ring 0) ən məhdud, tənzimlənən və "məlumatlara girişin müxtəlif səviyyələri ilə müxtəlif səviyyələrdə (halqalar / Qoruma halqaları) yerləşir. bərkidilmiş vintlər” (Üzük 3).

Əməliyyat sistemi (ƏS nüvəsi) Ring 0 (kernel rejimi) üzərində işləyir və istənilən məlumat və qurğularla istədiyini edə bilər. İstifadəçi proqramları Ring 3 səviyyəsində (istifadəçi rejimi) işləyir və istədiklərini etmək hüququna malik deyillər, əksinə, hər dəfə bu və ya digər əməliyyatı yerinə yetirmək üçün giriş tələb etməlidirlər (beləliklə, istifadəçi proqramları yalnız öz məlumatlarına çıxış əldə edə bilər və bunu edə bilməzlər. "başqasının qum qutusuna" daxil olun). Halqa 1 və 2 sürücünün istifadəsi üçündür.

Intel VT-x / AMD SVM ixtirasına qədər hipervizorlar Ring 0-da, qonaqlar isə Ring 1-də işləyirdilər. Ring 1-də ƏS-nin düzgün işləməsi üçün kifayət qədər icazələr olmadığından, hipervizor bu çağırışı tez bir zamanda dəyişdirməli idi. qonağın hər imtiyazlı zəngi ilə. və onu Ring 0-da yerinə yetirin (QEMU kimi). Bunlar. qonaq binar EDİLMƏDİ birbaşa prosessorda icra olunurdu və hər dəfə tez bir zamanda bir neçə aralıq modifikasiyadan keçirdi.

Yerüstü xərclər əhəmiyyətli idi və bu, böyük bir problem idi və sonra prosessor istehsalçıları bir-birindən asılı olmayaraq, qonaq OS kodunun icrasına imkan verən geniş təlimatlar dəstini (Intel VT-x / AMD SVM) buraxdılar. BİRBAŞA host prosessorunda (əvvəlki kimi hər hansı bahalı aralıq addımları keçməklə).

Intel VT-x / AMD SVM-in yaranması ilə xüsusi yeni səviyyəli Ring -1 (mənfi bir) yaradıldı. İndi hipervizor onun üzərində işləyir və qonaqlar Ring 0-da işləyir və CPU-ya imtiyazlı giriş əldə edirlər.

Bunlar. nəhayət:

  • Ring 0-da işləyən host
  • qonaqlar Ring 0 üçün işləyirlər
  • Ring -1 üzərində işləyən hipervizor

4) QEMU-KVM

KVM qonaqlara Ring 0-a giriş imkanı verir və QEMU-dan I/O-nu (qonaqların "gördüyü" və işlədiyi prosessor, disklər, şəbəkə, video, PCI, USB, serial portlar və s.) təqlid etmək üçün istifadə edir.

Beləliklə, QEMU-KVM (və ya KVM-QEMU) :)

KREDİTLƏRİN
Diqqəti cəlb etmək üçün şəkil
Şəkil qoruyucu üzüklər

P.S. Bu məqalənin mətni əvvəlcə Telegram kanalında dərc olunub @RU_Voip kanal üzvlərindən birinin sualına cavab olaraq.

Mövzunu düzgün başa düşmədiyim yerdə və ya əlavə edəcəyim bir şey varsa şərhlərdə yazın.

Təşəkkür edirik!

Mənbə: www.habr.com

Добавить комментарий