Virtualization – Sanallaştırma
Sanallaştırma, bir fiziksel sunucunun donanım kaynaklarını yazılım katmanlarıyla bölerek birden fazla bağımsız sanal makinenin aynı donanım üzerinde çalışmasını sağlayan teknolojidir. Bu yazıda hipervizör türlerini, VT-x/AMD-V donanım desteğini ve bulut bilişimle ilişkisini ele alıyorum.
Geçen yazımda bulut bilişimi NIST tanımı çerçevesinde özetlemiş, bulutun arkasındaki en önemli teknolojinin sanallaştırma (virtualization) olduğunu söylemiştim. Bu yazıda sanallaştırmayı tek başına bir konu olarak ele alacağım: tarihi, türleri, hipervizör mimarileri, Intel VT-x ve AMD-V gibi donanım destekleri ve kurumsal kullanım senaryoları. Yazının sonunda bulut bilişimle nasıl iç içe geçtiğini de kısaca toparlayacağım.
Sanallaştırma nedir?
Sanallaştırma, kabaca, bir fiziksel kaynağın (sunucu, depolama, ağ) yazılımla soyutlanarak birden fazla mantıksal kopya halinde sunulması demek. En yaygın kullanımı sunucu sanallaştırmasıdır: tek bir fiziksel x86 sunucusunu, hipervizör adı verilen bir yazılım katmanı sayesinde onlarca sanal makineye (VM) bölüp her birinde ayrı işletim sistemi çalıştırabiliyoruz.
Aslında kavramın kökleri 1960’lara, IBM’in CP/CMS sistemine kadar gidiyor. Anaçatı (mainframe) dünyasında sanallaştırma onlarca yıldır var. Ama x86 mimarisinde olgunlaşması, VMware’in 1999’da Workstation’ı, ardından 2001’de ESX Server’ı çıkarmasıyla başladı. AMD ve Intel’in 2005-2006’da donanım sanallaştırma eklentilerini piyasaya sürmesiyle birlikte sanallaştırma, üretim ortamı için gerçek anlamda hazır hale geldi. 2010 itibarıyla kurumsal veri merkezlerindeki x86 sunucularının yarısından fazlasının sanallaştırılmış olduğu konuşuluyor; bu pay önümüzdeki yıllarda hızla artacak gibi görünüyor.
Sanallaştırma türleri
Teknik olarak üç ana yaklaşımdan söz edilir.
Tam sanallaştırma (Full virtualization)
Hipervizör, donanımı eksiksiz şekilde taklit eder ve misafir (guest) işletim sistemi, üzerinde sanal makinede çalıştığının farkında bile değildir. VMware ESX’in ilk sürümleri, donanım desteği olmadığı dönemde, “binary translation” tekniğiyle x86’nın sanallaştırmaya uygun olmayan komutlarını çalışma zamanında yeniden yazarak tam sanallaştırma sundu. Bugün de Intel VT-x / AMD-V destekli sistemlerde tam sanallaştırma standart yaklaşım.
Paravirtualization
Misafir işletim sistemi, sanallaştırıldığının farkındadır ve hipervizörle özel arayüzler üzerinden konuşur. Xen’in ilk yıllardaki yaklaşımı buydu; Linux çekirdeğinde paravirt için yamalar gerekiyordu. Donanım desteği yaygınlaştıkça paravirtualization tekil olarak daha az tercih edilir oldu, ama disk ve ağ sürücülerinde (Xen PV drivers, virtio) hâlâ performans için kullanılıyor.
Donanım destekli sanallaştırma (Hardware-assisted virtualization)
Intel’in VT-x (2005) ve AMD’nin AMD-V (2006) eklentileri, CPU’nun içine sanallaştırma için yeni bir ayrıcalık katmanı (root mode) ekledi. Böylece hipervizör, misafir işletim sisteminin ayrıcalıklı komutlarını yakalayıp güvenli biçimde işleme alabiliyor; binary translation gibi yazılımsal yamalara gerek kalmıyor. 2008’de Intel’in EPT (Extended Page Tables) ve AMD’nin RVI ile sunduğu ikinci nesil donanım desteği, bellek sanallaştırmasındaki maliyetleri de büyük ölçüde aşağı çekti.
Bugün piyasadaki tüm ciddi hipervizörler (ESXi, Hyper-V, Xen, KVM) VT-x veya AMD-V kullanır. Üretim ortamı kuracaksanız sunucunuzun BIOS’unda bu özelliğin açık olduğundan emin olun; gözden kaçan bir ayar nedeniyle performans yarı yarıya düşebiliyor.
Hipervizör türleri
Hipervizörler iki ana kategoriye ayrılır.
Type 1, Bare-metal hipervizör
Doğrudan donanım üzerine kurulur; altında bir konak işletim sistemine ihtiyaç duymaz. Veri merkezi sanallaştırması için tercih edilen mimari budur. Başlıca örnekler:
- VMware ESXi (vSphere 4), Kurumsal pazarın açık ara lideri. vCenter ile yönetim, vMotion ile canlı göç, HA ve DRS gibi olgun özellikler sunuyor.
- Citrix XenServer, Açık kaynak Xen üzerine inşa edilmiş ticari ürün. Telekom ve servis sağlayıcı kanadında güçlü.
- Microsoft Hyper-V, Windows Server 2008 ile gelen, R2 sürümünde canlı göç desteği kazanan çözüm. Microsoft odaklı kurumlarda hızlı yer ediniyor.
- KVM (Kernel-based Virtual Machine), Linux çekirdeğine entegre, donanım sanallaştırması bekleyen modern bir Type 1 yaklaşımı. RedHat’in 2008’de Qumranet’i satın almasının ardından yatırım yaptığı yol. RHEL 5.4 ile birlikte resmi olarak destekleniyor.
Type 2, Hosted hipervizör
Mevcut bir işletim sistemi (Windows, macOS, Linux) üzerine kurulur. Genellikle masaüstünde, geliştirme ve test amaçlı kullanılır.
- VMware Workstation / Fusion, Geliştiricilerin standart aracı.
- Oracle VirtualBox, Sun’ın açık kaynak olarak yayımladığı, geçen yıl Oracle satın alımıyla biraz tartışılan ama hâlâ ücretsiz kalan çözüm.
- Parallels Desktop, Mac kullanıcılarının Windows için tercih ettiği ürün.
Pratikte sınırlar kesin değil. Hyper-V, kurulduğunda Windows Server’ı bir tür yönetim partition’ı haline getirip kendisi alta yerleşir; teknik olarak Type 1 sayılır ama görünüşü Type 2’yi andırır. KVM da bir Linux çekirdek modülüdür ama performans açısından Type 1 davranır.
Sanallaştırılan kaynaklar
CPU
Hipervizör, fiziksel çekirdekleri sanal CPU’lara (vCPU) eşler ve zaman paylaşımı yapar. Modern hipervizörlerde NUMA farkındalığı, CPU affinity ve “scheduler” optimizasyonları kritik. Bir sanal makineye 8 vCPU vermek, her zaman daha hızlı çalışacağı anlamına gelmez; aksine fiziksel sunucuda 8 çekirdeğin aynı anda boşa çıkmasını beklemek “co-scheduling” gecikmesi yaratabilir.
Bellek
Bellek sanallaştırması, EPT/RVI gibi donanım destekleriyle birlikte iki seviyeli sayfa tablosu üzerinden çalışır. Hipervizörün başvurduğu üç temel teknik var: memory ballooning (boştaki sayfayı geri toplamak), transparent page sharing (aynı içerikli sayfaları birleştirmek; özellikle aynı OS’tan onlarca VM’in çalıştığı VDI senaryolarında çok etkili) ve memory compression / swap. Bunlar overcommit (taahhüt edilen toplam belleğin fiziksel bellekten fazla olması) senaryosunu mümkün kılar.
Depolama
Sanal diskler, fiziksel depolama üzerinde dosya (VMware’de VMDK, Hyper-V’de VHD) veya blok aygıt olarak tutulur. Kurumsal ortamda VM’ler genellikle bir SAN/NAS üzerinde, paylaşımlı bir veri deposunda (VMFS, NFS) durur; vMotion ve HA gibi özelliklerin çalışabilmesi için bu paylaşımlı depolama şart.
Ağ
Sanal anahtarlar (vSwitch), sanal makineleri birbirine ve fiziksel ağa bağlar. VLAN, link aggregation, sürüş tabanlı QoS gibi özellikler artık standart. Sanal makinelerin daha düşük gecikmeyle ağa erişebilmesi için SR-IOV (Single Root I/O Virtualization) gibi donanım teknolojileri yaygınlaşıyor.
Kurumsal kullanım senaryoları
Sanallaştırmayı kurumsal dünyada bu kadar değerli yapan, sadece “bir sunucuda çok VM çalıştırmak” değil. Asıl kazançlar şunlar:
- Sunucu konsolidasyonu: İşlem yükü düşük onlarca fiziksel sunucu, birkaç güçlü ana bilgisayara taşınınca enerji, alan ve donanım maliyetlerinde ciddi tasarruf sağlanıyor. Çoğu projede %60-80 sunucu sayısı azalması rapor ediliyor.
- İş sürekliliği ve felaket kurtarma (DR): vMotion, HA, Site Recovery Manager gibi araçlar, fiziksel sunucu arızasında sanal makineleri otomatik olarak başka bir ana bilgisayarda ayağa kaldırıyor. Bunu fiziksel sunucularla yapmak yıllarca pahalı clustering ürünleri gerektiriyordu.
- Geliştirme ve test ortamları: Geliştirici dakikalar içinde tertemiz bir Windows veya Linux ortamı oluşturup snapshot alabiliyor, testi bitince geri dönebiliyor. Yazılım yaşam döngüsünü ciddi şekilde hızlandırıyor.
- VDI (sanal masaüstü altyapısı): Citrix XenDesktop, VMware View gibi ürünlerle son kullanıcı masaüstleri veri merkezinde merkezi şekilde tutuluyor. Hassas verilerin masaüstü cihazlarda durmaması büyük bir güvenlik kazancı.
- Eski uygulamaların korunması: Artık üretilmeyen donanımla çalışan eski uygulamalar P2V (physical to virtual) araçlarıyla taşınıp uzun süre yaşatılabiliyor.
Sanallaştırma ve bulut bilişim
Bulut bilişimin “elastik” ve “self-servis” özellikleri sanallaştırma olmadan pratikte mümkün değil. AWS EC2, altında Xen kullanıyor. Rackspace Cloud Servers da öyle. Microsoft Azure ise içselleştirilmiş bir Hyper-V türevine dayanıyor. Yani bir IaaS sağlayıcısının portalından “yeni sunucu” düğmesine bastığınızda, arka planda hipervizör yeni bir VM’i kaynak havuzundan size tahsis ediyor.
Ama sanallaştırmayı kurmak başka şey, bulut sunmak başka şey. Bulut için sanallaştırmanın üzerine bir yönetim ve provizyon katmanı şart: VMware vCloud Director, Citrix’in cloud ürünleri, açık kaynak tarafta Eucalyptus ve OpenNebula bu katmanı sağlıyor. Bu konuya ayrı bir yazıda eğileceğim.
Kapanış
Sanallaştırma artık veri merkezi kuran her ekibin standart aracı. 2010 itibarıyla artık soru “sanallaştıralım mı?” değil, “hangi hipervizörü, hangi donanım üzerinde, hangi yönetim katmanıyla seçelim?” Türkiye’de KOBİ tarafı henüz bu olgunluğa erişmedi; özellikle ücretsiz Hyper-V Server ve VMware vSphere Hypervisor (ESXi’nin ücretsiz sürümü) bu segmente güzel bir giriş kapısı olabilir. Test ortamlarınızda VirtualBox veya VMware Workstation ile başlayıp adım adım üretime taşımanızı tavsiye ederim. Sorularınız olursa yorumlardan ulaşabilirsiniz.