Prinsip operasi umum QEMU-KVM

Prinsip operasi umum QEMU-KVM

Pemahaman saya saat ini:

1) KVM

KVM (Kernel-based Virtual Machine) adalah hypervisor (VMM – Virtual Machine Manager) yang berjalan sebagai modul pada sistem operasi. LinuxHypervisor diperlukan untuk menjalankan perangkat lunak di lingkungan yang tidak ada (virtual) sambil menyembunyikan perangkat keras fisik sebenarnya tempat perangkat lunak tersebut berjalan dari perangkat lunak itu sendiri. Hypervisor bertindak sebagai "lapisan" antara perangkat keras fisik (host) dan sistem operasi virtual (guest).

Karena KVM adalah modul kernel standar Linux, ia mendapatkan semua fasilitas yang diperlukan dari kernel (manajemen memori, penjadwal, dll.). Dan, karenanya, semua manfaat ini pada akhirnya diperoleh oleh mesin virtual (karena mesin virtual berjalan di atas hypervisor, yang berjalan di dalam kernel sistem operasi). Linux).

KVM sangat cepat, tapi itu saja tidak cukup untuk menjalankan OS virtual, karena... Ini memerlukan emulasi I/O. Untuk I/O (CPU, disk, jaringan, video, PCI, USB, port serial, dll.) KVM menggunakan QEMU.

2) KEMU

QEMU (Quick Emulator) adalah emulator untuk berbagai perangkat yang memungkinkan Anda menjalankan sistem operasi yang dirancang untuk satu arsitektur di arsitektur lain (misalnya, ARM -> x86). Selain prosesor, QEMU mengemulasi berbagai perangkat periferal: kartu jaringan, HDD, kartu video, PCI, USB, dll.

Ini bekerja seperti ini:

Instruksi/kode biner (misalnya, ARM) diubah menjadi kode perantara yang tidak bergantung pada platform menggunakan konverter TCG (Tiny Code Generator) dan kemudian kode biner yang tidak bergantung pada platform ini diubah menjadi instruksi/kode target (misalnya, x86).

ARM –> kode_perantara –> x86

Pada dasarnya, Anda dapat menjalankan mesin virtual di QEMU di host mana pun, bahkan dengan model prosesor lama yang tidak mendukung Intel VT-x (Intel Virtualization Technology)/AMD SVM (AMD Secure Virtual Machine). Namun, dalam kasus ini, ini akan bekerja sangat lambat, karena fakta bahwa kode biner yang dieksekusi perlu dikompilasi ulang dua kali dengan cepat, menggunakan TCG (TCG adalah kompiler Just-in-Time).

Itu. QEMU sendiri sangat keren, tetapi bekerja sangat lambat.

3) Cincin pelindung

Prinsip operasi umum QEMU-KVM

Kode program biner pada prosesor bekerja karena suatu alasan, tetapi terletak pada level yang berbeda (cincin / Cincin perlindungan) dengan tingkat akses data yang berbeda, dari yang paling istimewa (Ring 0), hingga yang paling terbatas, teregulasi, dan “dengan mur yang dikencangkan ” (Dering 3).

Sistem operasi (kernel OS) berjalan pada Ring 0 (mode kernel) dan dapat melakukan apapun yang diinginkan dengan data dan perangkat apa pun. Aplikasi pengguna beroperasi pada level Dering 3 (mode pengguna) dan tidak diperbolehkan melakukan apa pun yang mereka inginkan, melainkan harus meminta akses setiap kali melakukan operasi tertentu (dengan demikian, aplikasi pengguna hanya memiliki akses ke datanya sendiri dan tidak dapat “mendapatkan ke dalam” kotak pasir orang lain). Dering 1 dan 2 dimaksudkan untuk digunakan oleh pengemudi.

Sebelum penemuan Intel VT-x / AMD SVM, hypervisor berjalan di Ring 0, dan guest berjalan di Ring 1. Karena Ring 1 tidak memiliki hak yang cukup untuk pengoperasian normal OS, dengan setiap panggilan istimewa dari sistem tamu, maka hypervisor harus mengubah panggilan ini dengan cepat dan menjalankannya pada Dering 0 (seperti yang dilakukan QEMU). Itu. biner tamu TIDAK dieksekusi langsung pada prosesor, dan setiap kali melalui beberapa modifikasi perantara dengan cepat.

Overheadnya signifikan dan ini merupakan masalah besar, dan kemudian produsen prosesor, secara independen satu sama lain, merilis serangkaian instruksi tambahan (Intel VT-x / AMD SVM) yang memungkinkan eksekusi kode OS tamu SECARA LANGSUNG pada prosesor host (melewati langkah perantara yang mahal, seperti yang terjadi sebelumnya).

Dengan munculnya Intel VT-x / AMD SVM, Ring level -1 baru khusus (minus satu) telah dibuat. Dan sekarang hypervisor berjalan di atasnya, dan para tamu berjalan di Ring 0 dan mendapatkan akses istimewa ke CPU.

Itu. pada akhirnya:

  • tuan rumah berjalan di Dering 0
  • tamu bekerja di Dering 0
  • hypervisor berjalan di Ring -1

4) QEMU-KVM

KVM memberi tamu akses ke Ring 0 dan menggunakan QEMU untuk meniru I/O (prosesor, disk, jaringan, video, PCI, USB, port serial, dll. yang “dilihat” dan digunakan oleh tamu).

Oleh karena itu QEMU-KVM (atau KVM-QEMU) :)

KREDIT
Gambar untuk menarik perhatian
Gambar cincin Perlindungan

PS Teks artikel ini pertama kali diterbitkan di saluran Telegram @RU_Voip sebagai jawaban atas pertanyaan dari salah satu peserta saluran.

Tulis di komentar jika saya kurang memahami topiknya dengan benar atau jika ada yang ingin ditambahkan.

Terima kasih!

Sumber: www.habr.com

Beli hosting yang andal untuk situs dengan perlindungan DDoS, server VPS VDS 🔥 Beli hosting website andal dengan perlindungan DDoS, server VPS VDS | ProHoster