Prinsip operasi umum QEMU-KVM

Prinsip operasi umum QEMU-KVM

Pamahaman kuring ayeuna:

1) KVM

KVM (Mesin Virtual basis Kernel) nyaéta hypervisor (VMM - Manajer Mesin Virtual) ngajalankeun salaku modul dina OS Linux Ubuntu. A hypervisor diperlukeun guna ngajalankeun sababaraha software dina non-existent (virtual) lingkungan jeung dina waktos anu sareng nyumputkeun tina software ieu hardware fisik nyata nu software ieu ngajalankeun. Hypervisor bertindak salaku "spacer" antara hardware fisik (host) sareng OS virtual (tamu).

Kusabab KVM mangrupikeun modul standar tina kernel Linux, éta nampi sadaya barang anu diperyogikeun tina kernel (manajemén mémori, scheduler, jsb.). Sareng sasuai, dina tungtungna, sadaya kauntungan ieu nuju ka sémah (saprak sémah damel dina hypervisor anu dijalankeun dina / dina kernel Linux OS).

KVM gancang pisan, tapi ku nyalira éta henteu cekap pikeun ngajalankeun OS virtual, sabab ... Ieu merlukeun I / O emulation. Pikeun I / O (CPU, disk, jaringan, video, PCI, USB, palabuhan serial, jeung sajabana) KVM migunakeun QEMU.

2) QEMU

QEMU (Emulator Gancang) mangrupikeun émulator pikeun sababaraha alat anu ngamungkinkeun anjeun ngajalankeun sistem operasi anu dirancang pikeun hiji arsitéktur anu sanés (contona, ARM -> x86). Salian prosesor, QEMU niru sababaraha alat periferal: kartu jaringan, HDD, kartu vidéo, PCI, USB, jsb.

Gawéna sapertos kieu:

Parentah / kode binér (contona, ARM) dirobah jadi kode platform-independen panengah ngagunakeun TCG (Tiny Code generator) converter lajeng kode binér platform-independen ieu dirobah jadi instruksi target / kode (contona, x86).

ARM -> kode_tengah -> x86

Intina, anjeun tiasa ngajalankeun mesin virtual on QEMU on host wae, sanajan kalawan model processor heubeul nu teu ngarojong Intel VT-x (Intel Virtualization Téhnologi) / AMD SVM (AMD Mesin Virtual Aman). Sanajan kitu, dina hal ieu, éta bakal dianggo lambat pisan, alatan kanyataan yén kode binér executing perlu recompiled on laleur dua kali, ngagunakeun TCG (TCG mangrupakeun Just-in-Time compiler).

Jelema. QEMU sorangan mega cool, tapi jalan lambat pisan.

3) cingcin panyalindungan

Prinsip operasi umum QEMU-KVM

Kode program binér dina prosesor jalan pikeun alesan, tapi perenahna di tingkat béda (cingcin / Protection cingcin) kalawan tingkat béda aksés data, ti nu paling istiméwa (Ring 0), mun paling kawates, diatur sarta "kalawan kacang tightened. ” (Cingcin 3).

Sistem operasi (kernel OS) dijalankeun dina Ring 0 (mode kernel) sareng tiasa ngalakukeun naon waé anu dipikahoyong sareng data sareng alat naon waé. Aplikasi pangguna beroperasi dina tingkat Ring 3 (mode pangguna) sareng henteu diidinan ngalakukeun naon waé anu dipikahoyong, tapi kedah nyuhunkeun aksés unggal waktos pikeun ngalakukeun operasi khusus (ku kituna, aplikasi pangguna ngan ukur gaduh aksés kana datana nyalira sareng henteu tiasa "meunangkeun aksés ka aksés ka aranjeunna. kana” sandbox batur). ring 1 jeung 2 dimaksudkeun pikeun pamakéan ku drivers.

Sateuacan penemuan Intel VT-x / AMD SVM, hypervisors dijalankeun dina Ring 0, sareng sémah dijalankeun dina Ring 1. Kusabab Ring 1 teu gaduh hak anu cukup pikeun operasi normal tina OS, kalayan unggal telepon anu istimewa tina sistem tamu, hypervisor kapaksa ngaropea panggero ieu dina laleur jeung ngaéksekusi eta on Ring 0 (teuing kawas QEMU teu). Jelema. binér tamu NOT ieu dieksekusi langsung dina processor, sarta unggal waktu indit ngaliwatan sababaraha modifikasi panengah on laleur nu.

Overhead éta penting sareng ieu mangrupikeun masalah anu ageung, teras produsén prosésor, masing-masing, ngarilis set petunjuk anu diperpanjang (Intel VT-x / AMD SVM) anu ngamungkinkeun ngalaksanakeun kode OS tamu. LANGSUNG dina processor host (bypassing sagala ongkos panengah ongkosna mahal, sakumaha ieu kasus saméméhna).

Kalayan mecenghulna Intel VT-x / AMD SVM, tingkat Ring anyar khusus -1 (minus hiji) didamel. Tur ayeuna hypervisor dijalankeun dina eta, sarta sémah ngajalankeun on Ring 0 sarta meunang aksés husus ka CPU.

Jelema. ahirna:

  • host dijalankeun dina Ring 0
  • sémah dianggo dina Ring 0
  • hypervisor dijalankeun dina Ring -1

4) QEMU-KVM

KVM méré sémah aksés ka Ring 0 sarta ngagunakeun QEMU mun emulate I / O (processor, disk, jaringan, video, PCI, USB, palabuhan serial, jeung sajabana yén sémah "tingali" na dianggo kalayan).

Janten QEMU-KVM (atanapi KVM-QEMU) :)

sks
Gambar pikeun narik perhatian
Gambar cingcin Protection

PS Téks artikel ieu asalna diterbitkeun dina saluran Telegram @RU_Voip salaku jawaban kana patarosan ti salah sahiji pamilon saluran.

Tulis dina koméntar dimana kuring henteu ngartos topik anu leres atanapi upami aya anu badé nambihan.

Hatur nuhun!

sumber: www.habr.com

Tambahkeun komentar