QEMU-KVM operasyonunun genel prensipleri

QEMU-KVM operasyonunun genel prensipleri

Şu anki anlayışım:

1)KVM

KVM (Çekirdek Tabanlı Sanal Makine), Linux işletim sistemi üzerinde modül olarak çalışan bir hipervizördür (VMM – Sanal Makine Yöneticisi). Bazı yazılımları var olmayan (sanal) bir ortamda çalıştırmak ve aynı zamanda bu yazılımın üzerinde çalıştığı gerçek fiziksel donanımı bu yazılımdan gizlemek için bir hipervizöre ihtiyaç vardır. Hiper yönetici, fiziksel donanım (ana bilgisayar) ile sanal işletim sistemi (konuk) arasında bir "aralayıcı" görevi görür.

KVM, Linux çekirdeğinin standart bir modülü olduğundan, gerekli tüm özellikleri çekirdekten alır (bellek yönetimi, zamanlayıcı vb.). Ve buna göre, sonuçta tüm bu faydalar misafirlere gidiyor (çünkü misafirler Linux işletim sistemi çekirdeği üzerinde/içinde çalışan bir hipervizör üzerinde çalışıyorlar).

KVM çok hızlıdır ancak sanal bir işletim sistemini çalıştırmak tek başına yeterli değildir, çünkü... Bu, G/Ç öykünmesini gerektirir. G/Ç için (CPU, diskler, ağ, video, PCI, USB, seri bağlantı noktaları vb.) KVM, QEMU'yu kullanır.

2) QEMU

QEMU (Hızlı Emulator), bir mimari için tasarlanmış işletim sistemlerini diğerinde (örneğin, ARM -> x86) çalıştırmanıza olanak tanıyan, çeşitli cihazlara yönelik bir emülatördür. QEMU, işlemciye ek olarak çeşitli çevresel aygıtları taklit eder: ağ kartları, HDD, video kartları, PCI, USB vb.

Bu gibi çalışır:

Talimatlar/ikili kod (örneğin ARM), TCG (Tiny Code Generator) dönüştürücü kullanılarak platformdan bağımsız ara koda dönüştürülür ve daha sonra bu platformdan bağımsız ikili kod, hedef talimatlara/koda (örneğin, x86) dönüştürülür.

ARM –> ara_kod –> x86

Temel olarak, Intel VT-x (Intel Sanallaştırma Teknolojisi) / AMD SVM'yi (AMD Güvenli Sanal Makine) desteklemeyen eski işlemci modellerinde bile sanal makineleri herhangi bir ana bilgisayarda QEMU üzerinde çalıştırabilirsiniz. Ancak bu durumda, yürütülen ikili kodun TCG (TCG bir Tam Zamanında derleyicidir) kullanılarak anında iki kez yeniden derlenmesi gerekmesi nedeniyle çok yavaş çalışacaktır.

Onlar. QEMU'nun kendisi çok havalı ama çok yavaş çalışıyor.

3) Koruma halkaları

QEMU-KVM operasyonunun genel prensipleri

İşlemcilerdeki ikili program kodu bir sebepten dolayı çalışır, ancak en ayrıcalıklı olandan (Halka 0), en sınırlı, düzenlenmiş ve “somunları sıkılmış” olana kadar farklı veri erişim seviyelerine sahip farklı seviyelerde (halkalar / Koruma halkaları) bulunur. ” (Zil 3).

İşletim sistemi (OS çekirdeği) Ring 0 (çekirdek modu) üzerinde çalışır ve herhangi bir veri ve cihazla istediğini yapabilir. Kullanıcı uygulamaları Ring 3 düzeyinde (kullanıcı modu) çalışır ve istediklerini yapmalarına izin verilmez, bunun yerine belirli bir işlemi gerçekleştirmek için her seferinde erişim talep etmeleri gerekir (böylece kullanıcı uygulamaları yalnızca kendi verilerine erişebilir ve "alamazlar"). başkasının sanal alanına). Halka 1 ve 2 sürücülerin kullanımına yöneliktir.

Intel VT-x / AMD SVM'nin icadından önce hipervizörler Ring 0'da, konuklar da Ring 1'de çalışıyordu. Ring 1, işletim sisteminin normal çalışması için yeterli haklara sahip olmadığından, konuk sistemden yapılan her ayrıcalıklı çağrıda, hiper yöneticinin bu çağrıyı anında değiştirmesi ve Ring 0'da yürütmesi gerekiyordu (tıpkı QEMU'nun yaptığı gibi). Onlar. konuk ikili DEĞİL doğrudan işlemci üzerinde yürütüldü ve her seferinde anında birkaç ara değişiklik yapıldı.

Ek yük önemliydi ve bu büyük bir sorundu ve ardından işlemci üreticileri birbirlerinden bağımsız olarak konuk işletim sistemi kodunun çalıştırılmasına izin veren genişletilmiş bir talimat seti (Intel VT-x / AMD SVM) yayınladılar DOĞRUDAN ana işlemcide (daha önce olduğu gibi maliyetli ara adımları atlayarak).

Intel VT-x / AMD SVM'nin gelişiyle, özel bir yeni Halka düzeyi -1 (eksi bir) oluşturuldu. Artık hipervizör onun üzerinde çalışıyor ve misafirler de Ring 0'da çalışıyor ve CPU'ya ayrıcalıklı erişim elde ediyorlar.

Onlar. sonunda:

  • Ana bilgisayar Ring 0'da çalışıyor
  • konuklar Ring 0'da çalışıyor
  • hiper yönetici Ring -1'de çalışır

4) QEMU-KVM

KVM, konuklara Ring 0'a erişim sağlar ve G/Ç'yi (misafirlerin "gördüğü" ve üzerinde çalıştığı işlemci, diskler, ağ, video, PCI, USB, seri bağlantı noktaları vb.) taklit etmek için QEMU'yu kullanır.

Dolayısıyla QEMU-KVM (veya KVM-QEMU) :)

KREDİ
Dikkat çekmek için resim
Koruma halkalarının resmi

Not: Bu makalenin metni ilk olarak Telegram kanalında yayınlanmıştır. @RU_Voip Kanal katılımcılarından birinin sorusuna yanıt olarak.

Konuyu doğru anlamadığım veya ekleyeceğim bir şey varsa yorumlara yazın.

Teşekkürler!

Kaynak: habr.com

Yorum ekle