VMware, QEMU veya Bochs gibi bir programı kullandıysanız, sanal makine kavramına aşinâsınız demektir. Şayet bu konuda bilginiz yoksa, ilerleyen paragraflarda gerekli açıklamaları bulabilirsiniz. Bugün ki yazımızda Sanal Makine kavramını ve bu kavrama yeni bir soluk getiren Xen'i inceleyeceğiz.
Sahip olduğumuz bilgisayar, çeşitli katmanlardan oluşmuştur. En alt katmanda donanım bulunmaktadır. Bunun bir üstünde işletim sistemi çekirdeği bulunur. Çekirdeği işletim sisteminin kalbi olarak düşünebiliriz. Çekirdek üzerinde, UNIX tabanlı işletim sistemlerinde shell ( kabuk ) bulunur. Daha üst bir katmana çıkarsanız, görsel arayüzle karşılaşırsınız. Her zaman shell veya bir grafiksel kullanıcı arayüzü ( GUI - Graphical User Interface ) olması gerekmez, yapı değişiklik gösterebilir. Görsel arayüz veya shell olsun olmasın, işletim sisteminin âsli görevi, donanımla yazılım arasında bir köprü oluşturmaktır. İşletim sisteminin kendisi de bir yazılımdır ve donanım kaynaklarıyla, yazılım kaynaklarını yönetir. İşletim sistemlerine dair söylenebilecek yüzlerce şey bulunuyor. Ancak konumuz işletim sistemi değil ve buna girmeyeceğiz. ( Zaten girersek, çıkabileceğimizi sanmıyorum. )
Şimdi sahip olduğumuz bilgisayara geri dönelim ve işletim sistemi olarak ne kullandığımıza bakalım. Örneğin ben bir Linux dağıtımı olan Ubuntu'yu tercih ediyorum. Yazıyı okuyan çoğu kişiyse, muhtemelen Windows ailesinden bir şeyler kullanıyordur. Bazıları bilgisayarına birden fazla işletim sistemi yüklemiştir ve açılışta belirttiği işletim sistemiyle çalışıyor olabilir. Ama sonuçta bir bilgisayarda kullandığınız işletim sistemi aynı anda iki tane değildir. Sadece Windows veya Unix tabanlı bir işletim sistemi kullanırsınız. Eğer aynı anda farklı işletim sistemlerini kullanabilmek isterseniz, o zaman iş değişir.
Bilgisayarınızda bir işletim sistemi yüklüyken, bir başka işletim sistemini kullanmanız mümkündür. Bilgisayarınız içinde sanal bir bilgisayar oluşturursunuz ve dilediğiniz gibi yeni bir işletim sistemini, var olan yapı içinden kullanabilirsiniz. Örneğin Windows içinden Linux; Linux içinden Solaris kullanabilmek bu sayede mümkündür.
Bilgisayarınızda sanal makine kurup, yeni işletim sistemi yüklemek isterseniz, VMware, QEMU veya Bochs gibi bir programı kullanabilirsiniz. Bunların arasında, kullanımı nispeten kolay birini arıyorsanız, VMWare'i deneyebilirsiniz.
VMware | Bochs | QEMU |
http://www.vmware.com | http://bochs.sourceforge.net | http://www.qemu.com |
Sanal makineleri insanlar genelde, işletim sistemlerini bozmadan, başka işletim sistemlerini deneyebilmek için kullanmaktadırlar. Örneğin yeni bir Linux dağıtımı çıktığında, birçok arkadaşımın VMWare'e saldırıp, Windows üzerinden Linux kullanmaya çalıştığını bilirim. Ama bu işin ticari olarak önemsiz bir boyutudur.
Sanal makinelerin temelde var olma amacı maliyeti düşürmektir. Kritik bir ağ testi yapacaksanız, fiziksel bir ortamda çalışmaktansa, kontrolü daha kolay sanal bir ortamı tercih edersiniz. Bunun dışında, bir hosting firmasıysanız, bir makine üzerine çok sayıda işletim sistemini sanal olarak kurarsınız ve Sanal Özel Sunucu ( VPS - Virtual Private Server ) hizmeti vermeye başlarsınız. Tek bir makineyi, 7-8 kişiye ayrı ayrı pazarlayabilmek sanal makine teknolojisi sayesinde mümkündür. Herkes kendisine özel bir bilgisayar varmışcasına işlerini görmektedir ama aslında kullandıkları, sizin kurmuş olduğunuz sanal bir bilgisayardan başka bir şey değildir.
Sanal makinelerde ki en büyük sıkıntı, çalışma hızının düşüklüğüdür. Normalde son derece hızlı çalışacak bir işletim sistemi, oldukça yavaşlar. Üstelik performans kaybı, kullandığınız temel işletim sisteminde de yaşanır. Eğer güçlü bir bilgisayarınız yoksa, bu yavaşlığı son raddesine kadar hissedersiniz. Yavaş bir makinede kullanılan sanal makine, sizi çileden çıkartabilir.
Yeni bir yaklaşım: Xen!Pesimist birisiyimdir. Mucize vaadiyle çıkan bir şeylerin beni etkilediği pek olmaz. Ama bu yazıyı yazmamın tek nedeni Xen'di. Çünkü bizzat deneyip, sanal makinelerde yeni bir döneme girdiğimizi gözlerimle gördüm. Xen şu ana kadar kullandığım hiçbir sanal makine gibi değildi. 4 yaşında ki bilgisayarımda, aynı anda iki Linux dağıtımı çalıştırıyordum. Üstelik hızda rahatsız eden bir yavaşlama yoktu. |
Xen, Cambridge Üniversitesi'nden çıkan bir proje. Cambridge üniversitesi, 1209 yılında kurulmuş ve aralıksız eğitim verenler listesinde tarihin en eski beşinci üniversitesi. Teknolojik anlamda dünyaya birçok katkısı olduğu gibi, Xen projesi de yine onlara ait. Ama sahiplenmek yerine projeyi GPL ile yayınlayıp, bilginin önünü açmışlar. Batı üniversiteleri bu kadar uç şeyler yaparken, bizlerin bu kadar geriden takip etmesi gerçekten çok acı! Neyse; eğitimimizde ki zayıflıkları şimdilik bir kenara bırakıp, Xen'e dönelim.
Normalde, VMWare vb. programlar sanal makineleri, tam sanallaştırma (Full Virtualization), emülasyon (Emulation) yöntemleriyle sunarlar. Bu sistemlerde sanal makine, direkt donanıma ulaşır gibi davranmaktadır. Xen ise Paravirtualization adında bir teknik kullanmaktadır. Paravirtualization'da, misafir işletim sistemi ( Örneğin; Windows üzerine kurulmuş Linux ) sanal bir makine olduğunun farkındadır. Donanımı simule etmek yerine özel bir uygulama arayüzüyle ( Application Programming Interface - API ) çalışır. Paravirtualization'in gerçekleşebilmesi için işletim sisteminde modifiye edilmesi gerekir.
Teknik terimlere boğulmayalım. Benim de sanal makineler konusunda uzmanlığım bulunmuyor, o yüzden bir noktadan sonra açıklamalarım yetersiz gelecektir. Paravirtualization, emulation vs... çok fazla aklımızı bulandırmandan, kısaca Xen'in hayatımıza nasıl bir etkisi olacağına gelelim: Hız!
Günümüzde yaygın olarak kullanılan sanal makine araçları daha önce de belirttiğim gibi, büyük bir yavaşlamaya neden oluyor. Yapılan Benchmark testlerine göre, Xen rakiplerine hiç benzemiyor. Ekstra olarak kurduğunuz işletim sistemi, sadece %2 ile %8 arasında performans kaybına neden oluyor. Mucizelere inanmayan biri olarak, bunun bir mucize olduğunu söyleyebilirim. Xen, yapılan bütün testlerde, rakiplerine fark atıyor. Ubuntu üzerine kurduğum ikinci bir Ubuntu'yla bizzat denediğimi ve bu farkı gördüğümü bir kez daha belirtmemde fayda var.
Xen'i indirmek için XenSource sitesindeki Product Downloads kısmını kullanıyoruz. Burada çeşit çeşit indirme bağlantısı göreceksiniz. Hatta Xen'i Çalıştırılabilir (Live) CD olarak bile bulmak mümkün. Bu sayede konfigurasyon, yükleme vs. derdi olmadan Xen'i kullanabiliyorsunuz. Yüklemek isteyenler içinse, çeşitli işletim sistemlerine uygun olan paketleri bulabilirsiniz. Bu arada ufak bir not düşelim, XenSource, Xen projesini ticari ortamda sürdürmek için kurulmuş bir firma ve Intel, RedHat, Microsoft, AMD ve Novell firmalarıyla işbirliği içinde.
Xen'in kurulumu, işletim sisteminden işletim sistemine farklılık gösterecektir. Örneğin benim Ubuntu'da Xen'i kurup, kullanmak için yararlandığım, How to set up Xen 3.0 from binaries in Ubuntu 6.06 (Çalıştırılabilir dosyalardan, Xen 3.0'i Ubuntu'da nasıl ayarlarsınız) isimli yazı sadece Ubuntu içindir. Kullanmakta olduğunuz işletim sistemine göre, Google'a göz atmanız gerekecetir.
Ne yaparsanız yapın, Xen'in zahmetli bir kurulumu olduğunu aklınızdan çıkartmayın. Ayrıca Windows kullanıyorsanız, Xen'i, kullanabileceğinizden emin değilim. Xen işletim sistemlerinde modifiye yapılmasını gerektiren bir yazılım. Ancak Microsoft'un politikaları, Windows'u modifiye etmeye yönelik her türlü girişimi, son derece katı kurallarla yasaklamaktadır. Dolayısıyla Windows ile Xen'i kullanmak mümkün görünmüyor. Son nesil işlemcelerde bulunan Intel VT-x ve AMD Pacifica teknolojileriyle, Xen 3.0, işletim sistemini modifiye etmeden, çalışabildiğini söylüyor. Bu sayede Windows'ta Xen'i kullanmak mümkünmüş. Denemediğim için yorum yapamıyorum...
Xen'in kendi sitesinden alınmış ekran görüntülerini aşağıda görebilirsiniz:
Xen mucizevi bir başarı olsa da, elbette ciddi sıkıntılar mevcut. En başta, Xen'i yükleyip kullanabilmek için normalin üstünde bir bilginizin olması lâzım. Xen ne yazık ki, VMWare veya Qemu gibi kolay kullanılabilir bir yapıya sahip değil. Onlara kıyasla daha zahmetli kurulum ve kullanım aşamalarının sizi beklediğini söyleyebilirim.
Xen'le ilgili bir diğer problem, Paravirtualization'dan kaynaklanıyor. Paravirtualization, hem Xen'in başarı noktası, hem de bir sıkıntısı. Xen yüksek performansını Paravirtualization'a borçlu. Ancak Paravirtualization, daha önce de bahsettiğimiz gibi, işletim sistemlerinde modifiye gerektiriyor. Linux vb. açık kaynak kodlu işletim sistemleri için bir sorun yok ancak kapalı işletim sistemleri problem yaratıyor. Çünkü modifiye edilip, Xen'le kullanılabilmesi teknik ve yasal olarak engelleniyor. Kapalı kodlar, Xen'de en büyük sorun kaynağı. Bundan bazı donanımlarınızda nasibini alıyor. Örneğin Nvidia ekran kartının sürücüleri kapalı olduğundan Xen'de çalışmıyor ve Xorg default sürücülerini kullanmak zorunda kalıyorsunuz.
Kapalı kaynak kodla ilgili sorunlar elbette ki Xen'in geliştiricilerinden kaynaklanmıyor. Aksine, ürünlerini kapalı kaynak sunanlar suçlu! Keşke yeni teknolojilerin, özgür yazılımlara neden bu kadar hızlı adapte olduğunu başkaları da anlayabilseydi ve bahsettiğimiz olumsuzlukları hiç yaşamasaydık.
Sanal makineler, bilgisayar dünyasında kritik bir ihtiyaç. Hosting firmaları için hayati önem taşıyorlar. Test yapanlar, sistem kuranlar için de benzer durumlar söz konusu. Ancak mevcut yapıdaki sanal makineler yavaşlar ve bu ciddi bir sorun. Bu nedenle, sanal makinelerin gelişmesi şart. Ve bu gelişmede, Xen kilit bir rol oynayacaktır.
SuSE, Xen'i kernel içersine gömeceğinin duyurusunu yaptı. RedHat'ta Xen'e destek verenler arasında olmasına rağmen, bunun erken olduğunu söylüyor. Kapalı kaynak tarafına bakarsak, Nvidia, gelen eleştiriler doğrultusunda, Xen'i destekleyecek bir sürücü hazırlayacağını açıkladı. VMWare, performans ve güvenlik nedenleriyle, Xen'in kullandığı Paravirtualization tekniğini, Linux için gerçekleştireceğini duyurdu. Bütün bunları değerlendirdiğimizde, Xen'in önemli bir noktaya geleceğini anlamak zor değil!