Sanallaştırma teknolojileri, fiziksel bir sunucunun işlemci, bellek, depolama ve ağ kaynaklarının birden fazla bağımsız sanal sisteme ayrılmasını sağlar. Nested virtualization ise bu yapıyı bir katman daha ileri taşıyarak sanal bir makinenin içerisinde yeniden sanallaştırma yapılmasına olanak verir.

Basit bir ifadeyle fiziksel sunucu üzerinde çalışan sanal makine, kendi içerisinde başka sanal makineler çalıştırabilir. Türkçede “iç içe sanallaştırma” olarak da adlandırılan bu yöntem özellikle test ortamlarında, yazılım geliştirme süreçlerinde, eğitim laboratuvarlarında ve sanallaştırma altyapılarının denenmesinde kullanışlıdır.

Nested Virtualization Nasıl Çalışır?

Standart bir sanallaştırma mimarisinde fiziksel donanım üzerinde bir hypervisor bulunur. KVM, VMware ESXi ve Microsoft Hyper-V gibi teknolojiler, fiziksel kaynakların sanal makineler arasında paylaştırılmasını sağlayarak birbirinden bağımsız işletim sistemlerinin aynı donanım üzerinde çalışmasına imkân tanır.

Nested virtualization yapısında ise ilk hypervisor tarafından oluşturulan sanal makinelerden biri ikinci bir sanallaştırma katmanına ev sahipliği yapar. Böylece ortaya fiziksel sunucu, ana hypervisor, sanal makine, ikinci hypervisor ve onun üzerinde çalışan alt sanal makineler şeklinde katmanlı bir mimari çıkar.

Bunun gerçekleştirilebilmesi için işlemcinin donanımsal sanallaştırma özelliklerinin yalnızca fiziksel sunucuda etkin olması yeterli değildir. Intel VT-x veya AMD-V gibi özelliklerin ana hypervisor tarafından ilgili sanal makineye aktarılması da gerekir. Bu özellik aktarılmadığında ikinci seviyede çalışan hypervisor gerekli donanımsal sanallaştırma desteğini göremeyebilir.

Standart Sanallaştırmadan Farkı Nedir?

Normal sanallaştırmada oluşturulan sanal makineler doğrudan ana hypervisor tarafından yönetilir. İç içe sanallaştırmada ise sanal makinenin kendisi başka sanal sistemleri yöneten bir platform hâline gelir. Temel fark, sanallaştırma yeteneğinin konuk sisteme de sunulmasıdır.

Örneğin fiziksel bir sunucuda KVM kullanılarak Ubuntu sanal makinesi oluşturulabilir. Nested virtualization etkinleştirilmişse bu Ubuntu sistemi içerisinde tekrar KVM çalıştırılarak farklı Linux sanal makineleri oluşturulabilir. Benzer şekilde uygun yapılandırmalarla bir sanal makine içerisinde Hyper-V veya başka hypervisor çözümleri test edilebilir.

Nested Virtualization Nerelerde Kullanılır?

Test ve Geliştirme Ortamları

İç içe sanallaştırmanın yaygın kullanım alanlarından biri yazılım geliştirme ve altyapı testleridir. Sistem yöneticileri üretim ortamındaki fiziksel sunucuları değiştirmeden farklı hypervisor yapılandırmalarını, ağ senaryolarını ve işletim sistemi kurulumlarını deneyebilir.

Endüstriyel Ekmek Üretiminde Kalitenin Sessiz Bileşeni: Tava Kaplaması
Endüstriyel Ekmek Üretiminde Kalitenin Sessiz Bileşeni: Tava Kaplaması
İçeriği Görüntüle

Örneğin bir otomasyon sisteminin birden fazla sanal makine oluşturması gerekiyorsa fiziksel donanım tahsis etmek yerine nested yapı üzerinde laboratuvar ortamı hazırlanabilir. Test tamamlandığında alt sanal makineler kolayca silinebilir ve ortam yeniden oluşturulabilir.

Eğitim ve Sanallaştırma Laboratuvarları

VMware, KVM veya Hyper-V gibi platformlar konusunda eğitim alan kişilerin birden fazla fiziksel sunucuya erişmesi her zaman mümkün olmayabilir. Nested virtualization sayesinde tek bir ana sanal makine içerisinde kapsamlı bir laboratuvar kurulabilir.

Öğrenciler ve sistem yöneticileri sanal ağlar oluşturabilir, farklı işletim sistemleri kurabilir, snapshot senaryolarını deneyebilir ve çeşitli yönetim işlemlerini gerçek üretim altyapısını etkilemeden uygulayabilir. Özellikle uzaktan yürütülen teknik eğitimlerde bu yaklaşım kaynak kullanımını kolaylaştırır.

Hypervisor ve Altyapı Testleri

Yeni bir hypervisor sürümünü doğrudan fiziksel sunucuya kurmak belirli operasyonel riskler oluşturabilir. Bunun yerine desteklenen durumlarda ikinci seviyede bir sanallaştırma ortamı hazırlanarak kurulum ve yapılandırma süreçleri önceden denenebilir.

Ağ yapılandırmaları, sanal switch'ler, güvenlik politikaları ve otomasyon senaryoları bu ortam içerisinde test edilebilir. Böylece üretim sisteminde uygulanacak değişikliklerin olası sonuçları hakkında önceden fikir edinmek mümkün olur.

Donanım Gereksinimleri Neden Önemlidir?

Nested virtualization teknik olarak sanal makine içerisinde başka sanal makineler oluşturmayı mümkün kılsa da fiziksel kaynak ihtiyacını ortadan kaldırmaz. Aksine aynı kaynaklar birden fazla katmanda kullanılacağı için CPU ve RAM kapasitesinin dikkatli planlanması gerekir.

Örneğin ana sanal makineye 8 GB RAM atanmışsa bunun tamamını alt sanal sistemlere dağıtmak doğru değildir. Ana işletim sistemi ve ikinci hypervisor da bellek kullanacağı için belirli miktarda kaynak ayrılmalıdır. Çok sayıda alt sistem çalıştırılacaksa toplam RAM ihtiyacı hızlı biçimde artabilir.

İşlemci tarafında çekirdek sayısının yanında tek çekirdek performansı ve sanallaştırma özellikleri de önem taşır. Depolamada ise yalnızca kapasiteye bakmak yeterli değildir; çok sayıda sanal makinenin eş zamanlı disk işlemleri gerçekleştirmesi IOPS ihtiyacını artırabileceğinden SSD veya NVMe tabanlı depolama önemli bir avantaj sağlayabilir.

Performans Kaybı Olur mu?

Her sanallaştırma katmanı belirli bir ek yük oluşturur. Modern işlemcilerde bulunan donanımsal sanallaştırma özellikleri bu yükü önemli ölçüde azaltmasına rağmen nested yapının fiziksel sunucu üzerinde doğrudan çalışan sanal makinelerle tamamen aynı performansı vermesi beklenmemelidir.

Performans farkının büyüklüğü kullanılan hypervisor, işlemci mimarisi, depolama sistemi, ağ yapılandırması ve iş yüküne göre değişebilir. Özellikle yoğun disk erişimi, yüksek paket işleme kapasitesi veya sürekli yüksek CPU kullanımı gerektiren uygulamalarda ek sanallaştırma katmanının etkisi daha belirgin hâle gelebilir.

Bu nedenle iç içe sanallaştırma çoğunlukla laboratuvar, geliştirme ve test senaryolarında tercih edilir. Üretim ortamında kullanılacaksa performans beklentileri ölçülmeli ve gerçek iş yükünü temsil eden testler gerçekleştirilmelidir.

Ağ Yapılandırması Nasıl Planlanmalıdır?

Nested yapılarda ağ tarafı bazen CPU ve RAM planlamasından daha karmaşık olabilir. Alt sanal makinelerin internete veya yerel ağdaki diğer sistemlere erişebilmesi için NAT, bridge, routing veya sanal switch yapılandırmalarından biri kullanılabilir.

Seçilecek yöntem kullanılan ana hypervisor ve ağ altyapısına bağlıdır. Bazı ortamlarda MAC adresi değişiklikleri veya promiscuous mode gibi özelliklerin ayrıca etkinleştirilmesi gerekebilir. Bu nedenle yalnızca sanallaştırma desteğinin bulunması, tüm ağ senaryolarının otomatik olarak çalışacağı anlamına gelmez.

Nested Sunucu Seçerken Nelere Bakılmalı?

Bu tür bir altyapı kullanılacaksa sağlayıcının nested virtualization desteğini açık şekilde sunup sunmadığı kontrol edilmelidir. Her sanal sunucuda işlemcinin sanallaştırma özellikleri konuk sisteme aktarılmadığından standart bir sanal makine üzerinde ikinci hypervisor kurmak mümkün olmayabilir.

Kaynak planlaması yapılırken CPU çekirdeği, RAM miktarı, depolama performansı ve ağ kapasitesi birlikte değerlendirilmelidir. Nested sunucu seçenekleri araştırılırken Verunix tarafından sunulan yapı gibi sanallaştırma desteğinin konuk sisteme aktarılmasına yönelik çözümler, teknik gereksinimlerle karşılaştırılarak değerlendirilebilir.

  • İşlemcinin Intel VT-x veya AMD-V desteği kontrol edilmelidir.
  • Sanallaştırma uzantılarının konuk sisteme aktarılabildiğinden emin olunmalıdır.
  • Alt sanal makineler hesaba katılarak yeterli RAM ayrılmalıdır.
  • Yoğun disk işlemleri için depolama performansı değerlendirilmelidir.
  • Bridge, NAT ve yönlendirme ihtiyaçları önceden belirlenmelidir.
  • Kullanılacak ikinci hypervisorun nested çalışma desteği kontrol edilmelidir.

Güvenlik ve Kaynak Yönetimi

İç içe sanallaştırma kullanılırken alt sanal makinelerin de ayrı sistemler olduğu unutulmamalıdır. Güncelleme yönetimi, güvenlik duvarı kuralları, kullanıcı yetkileri ve uzaktan erişim servisleri her katmanda kontrollü biçimde yapılandırılmalıdır.

Ayrıca kaynakların kontrolsüz biçimde dağıtılması ana sanal makinenin kararsız hâle gelmesine neden olabilir. CPU, RAM ve disk kullanımına sınırlar koymak, özellikle birden fazla alt sistemin aynı anda çalıştığı ortamlarda daha öngörülebilir performans elde edilmesini sağlar.

Sonuç

Nested virtualization, sanal bir makine içerisinde yeniden sanallaştırma yapılmasını sağlayan esnek bir altyapı yöntemidir. Eğitim laboratuvarlarından yazılım geliştirmeye, hypervisor testlerinden karmaşık ağ senaryolarına kadar fiziksel donanım ihtiyacını azaltabilecek birçok kullanım alanına sahiptir.

Bununla birlikte her iş yükü için doğrudan tercih edilmesi gereken bir yöntem değildir. İşlemci desteği, RAM kapasitesi, disk performansı, ağ mimarisi ve ek sanallaştırma katmanının oluşturacağı yük birlikte değerlendirildiğinde nested virtualization, özellikle kontrollü test ve geliştirme ortamlarında oldukça işlevsel bir araç hâline gelir.