KVM/QEMU Ortamlarında Kapalı Kaynak Guest Sistemler İçin VirtIO Sürücü Enjeksiyonu

Donanım destekli sanallaştırma teknolojileri (Intel VT-x / AMD-V), modern altyapılarda minimum ek yük ile birden fazla işletim sistemini koşturmamıza olanak tanır. KVM (Kernel-based Virtual Machine) ve QEMU entegrasyonu, bu süreçte çekirdek seviyesinde (Type-1) bir hipervizör performansı sunar.

Ancak, yüksek performanslı girdi/çıktı (I/O) sanallaştırması sağlayan VirtIO standartlarını kullandığımızda, çekirdek yapısı gereği bu donanımları yerleşik olarak tanımayan kapalı kaynak misafir işletim sistemleri (Guest OS) kurulum aşamasında bir “kör nokta” ile karşılaşır.

Bu yazıda, emüle edilmiş yavaş disk arayüzleri (IDE/SATA) yerine yarı sanallaştırılmış (para-virtualized) VirtIO aygıtlarını kullanarak, kapalı kaynak bir misafir sistemi kurulum anında kesintiye uğramadan nasıl ayağa kaldırabileceğimizi inceleyeceğiz.

Sorun: Çekirdek Seviyesinde Depolama Kör Noktası

Sanal makineyi yapılandırırken depolama diskini en yüksek veri yolu hızı sunan VirtIO SCSI veya VirtIO Block olarak atadığımızda, ilgili kapalı kaynak misafir işletim sisteminin kurulum medyası boot edildiğinde disk seçim ekranında hiçbir depolama birimi görünmez.

Bunun nedeni, misafir sistemin kurulum aşamasındaki çekirdeğinin (kernel) KVM’in yarı sanallaştırılmış donanım köprülerine ait sürücülere varsayılan olarak sahip olmamasıdır. Çekirdek, depolama denetleyicisini (storage controller) tanımlayamadığı için arkasındaki sanal diski de haritalandıramaz.

Performans kaybına yol açan IDE/SATA emülasyonuna geri dönmek yerine, bu engeli kurulum aşamasında sürücü enjeksiyonu ile aşabiliriz.

Mimari Çözüm: Çift Sürücü (Dual-Drive) Metodu

Çözüm için hipervizör seviyesinde misafir sisteme aynı anda iki adet sanal salt okunur sürücü (CD-ROM) bağlamamız gerekir. Bu yapılandırma virt-manager arayüzü veya doğrudan ilgili XML konfigürasyonu üzerinden gerçekleştirilir.

  1. Birinci Aygıt (SATA CD-ROM 1): Kurulacak olan kapalı kaynak misafir işletim sisteminin orijinal kurulum kalıbı (ISO).
  2. İkinci Aygıt (SATA CD-ROM 2): Red Hat tarafından KVM için geliştirilen ve imzalanan açık kaynaklı donanım köprülerini barındıran virtio-win sürücü kalıbı (bu çalışma kapsamında virtio-win-0.1.285.iso kararlı sürüm kalıbı kullanılmıştır).

Bu çift sürücülü topoloji, kurulum medyası boot edildiğinde misafir sistemin hem kurulum dosyalarına hem de ihtiyaç duyduğu sürücü kütüphanesine aynı anda erişmesini sağlar.

graph TD
    A[KVM/QEMU Hipervizörü] --> B(Sanal Makine)
    B --> C[SATA CD-ROM 1: Kurulum Medyası]
    B --> D[SATA CD-ROM 2: VirtIO Sürücü ISO]
    B --> E[VirtIO SCSI veya Block Disk]
    C -->|Boot & Kurulum Başlangıcı| F{Disk Seçim Ekranı}
    F -->|Disk Görünmüyor| G[Sürücü Yükle / Load Driver]
    D -->|vioscsi.inf / viostor.inf Enjeksiyonu| G
    G -->|Tetikleme| H[VirtIO Storage Controller Aktif]
    H -->|Sonuç| I[Sanal Disk Görünür & Kuruluma Hazır]

Bypass Adımı: Kurulum Anında Sürücü Şırıngası

Misafir işletim sisteminin kurulum ekranında depolama alanı boş göründüğünde aşağıdaki adımlar sırasıyla uygulanır:

  1. Disk seçim ekranında bulunan “Sürücü Yükle” (Load Driver) seçeneğine tıklanır.
  2. Açılan dosya gezgininde ikinci sanal sürücü olarak bağladığımız virtio-win kalıbı hedef gösterilir.
  3. Aygıt veri yolu tipine göre ilgili dizine gidilir:
    • Sanal disk veri yolu VirtIO SCSI olarak yapılandırıldıysa, \vioscsi\ dizinindeki vioscsi.inf sürücüsü,
    • Sanal disk veri yolu VirtIO Block olarak yapılandırıldıysa, \viostor\ dizinindeki viostor.inf sürücüsü hedeflenir.
  4. İlgili ana klasör altında, misafir işletim sisteminin sürümünü ve mimarisini temsil eden alt dizine (Örn: [Sürücü_Adı]/[Sistem_Kod_Adı]/amd64) girilerek sürücü sisteme yüklenir.

Sürücü çekirdeğe manuel enjekte edildiği anda, hipervizör tarafından atanan sanal disk kurulum ekranında görünür hale gelir. Bu aşamadan sonra kurulum işlemi standart adımlarla tamamlanabilir.

Post-Install: Entegrasyon ve Optimizasyon

Kurulum başarıyla tamamlanıp misafir işletim sistemi ilk kez boot edildiğinde, sistem temel işlevlerle çalışacaktır ancak ekran çözünürlüğü kısıtlı, fare hareketleri kararsız ve ağ bağdaştırıcısı (Network Adapter) pasif durumdadır. Çünkü ağ ve grafik birimleri de yüksek performans için VirtIO mimarisine göre yapılandırılmıştır.

Masaüstü ortamına ulaştıktan sonra ikinci sanal sürücüde takılı duran kalıbın içerisindeki Guest Tools entegrasyon paketi çalıştırılır. Bu paket:

İşlem sonunda misafir sistem, bare-metal donanımın sunduğu kaynakları en verimli şekilde kullanabilecek seviyede optimize edilmiş olur.

Sonuç

Kapalı kaynak misafir işletim sistemlerini KVM/QEMU üzerinde konumlandırırken emülasyon kolaycılığına kaçmak, I/O performansında ciddi kayıplara yol açar. Çift sürücü yöntemiyle kurulum esnasında yapılan bu mikro enjeksiyon, sistemin çekirdek seviyesindeki engellerini aşarak izole test ortamlarımızda (sandbox) maksimum verim elde etmemizi sağlar.


Kaynaklar


İlgili:

EOF.