Piyasada birçok Sanallaştırma sistemi bulunuyor, bu sistemlerin hemen hemen hepsinin ücretsiz ama limitli varyasyonlarını bulmakta mümkün. Benim sanallaştırma sistemleri arasında en çok sevdiğim program ise VirtualBox sistemi. VitualBox aslında uzun zamandır sunucu sistemi olarak çalışabilse de çok kısa süre önce 4.* versiyonu ile eklenen özellikler sayesinde piyasa da para ile sunulan birçok özelliği server tarafından ücretsiz olarak vermeye başladı. Bu özelliklerin içinde en etkin olanı özellikle, test sistemleri ile uğraşanlar, önemli sistem yapılarında sürekli değişiklikler yapanlar ve programcılar için önemli olan klonlama özelliği. VirtualBox tarafında link ve full olarak iki ayrı klon sistemi bulunuyor ama bunlar hakkında bu yazıda fazla durmayacağım virtualbox masa üstü sistemi için daha önce yazmış olduğum “ http://www.cozumpark.com/blogs/virtualization/archive/2011/10/23/virtualbox-4-1-2.aspx “ makalesini okuyarak daha fazla bilgi alabilirsiniz.
Normalde VirtualBox sistemi masa üstü sistemler için dizayn edilmiş olarak gözükmektedir, aslında VirtualBox sistemi masa üstü sistemler değil sunucular için tasarlanmış ama masa üstü için bir gui ( Masa üstü, Grafik Arayüz. ) yazılmış bir sistem. Ve sanıldığının aksine herhangi bir grafik ekrana ihtiyaç duymamaktadır.
VirtualBox sistemi tamimiyle ücretsiz olduğu için hem desktop versiyonu ( Vmware Workstation ) ya da server versiyonu ( Vmware ESXI, Microsoft HyperV, Xen ya da Qemu bazlı Serverler ) tüm özellikleri aynı olarak gelmektedir. BU şekilde he masa üstü şahsi sanallaştırma yaparken hem de şirket bazında sanallaştırma yaparken tekrar tekrar sistem öğrenmeye gerek yoktur. Ubuntu server üzerinde kullandığım ve hali hazırda bulunan Hyper-V 2008 sunucularımı kısa sürede değiştireceğim VirtualBox Server sistemi aslında özel olarak server olarak üretilmiş bir versionu değil masa üstünde kullandığımı versiyonun gui si olmayan server sistemi üzerine yüklenmiş halidir. Peki Gui si olmayan bir sistemi nasıl yöneteceğiz ?
Birinci sistem SSH Forvarding kullanmak ki bu sistem için yönetim yaptığınız sisteminde Linux olması gerekiyor ya da NX istemci yüklü bir Windows işletim sistemi. Aslında bu yapı daha çok güçsüz bir leptop ile evinizde bulunan güçlü bir sistemi test amaçlı olarak sanal sistem deposu ve kaynağı haline getirme usulüne dayanıyor. Firma bazında kullanmaya uygun değil, sonuçta SSH ekranı kapatılınca çalışan tüm sanal sistemlerde kapanıyor, aslında yapılan işlem sunucu üzerinde bulunan Virtualbox sisteminin guisini kendi sisteminiz üzerinde çalıştırmak. Daha çok program kullanıcıların ya da testcilerin kullanacağı bir yapı, hem masa üstü rahatlığını bırakmıyorsunuz hemde kullandığınız sistemin kaynaklarını tüketmediğiniz için ekran kaydı yada multi virtual guest çalıştırma imkanınız oluyor.
* Linux kullanan sistem yöneticileri için ssh -X bağlandığınız sunucuya SSHforvarding ile bağlanmanızı sağlayacaktır.
İkinci sistem olarak biraz daha benim gibi Linux tarafına ilgi duyan ve shell ile oynamayı sevenler için guestlerin shell üzerinde çalıştırılmasına dayanan bir sistem. Bu sistemde sorun çalıştırılacak olan guestlerin background kısmında çalıştırılması gerekliliği. VirtualBox bunun için her türlü alt yapıya sahip. Yükleme esnasında gelen “ vboxheadless “demonu sayesinde virtual guestler “virtulabox” demonu yerine “ vboxheadless” demonu ile back ground kısmında çalıştırılabiliyor. Peki Guestlere nasıl ulaşacağız ? Aslında yukarıda verdiğim makalede bunun nasıl yapılacağı anlatılıyor ama VRDP sisteme bir göz atmanızı tavsiye ederim. VRDP sisteminizde hiçbir özel yönetim programı olmadan RDP protokolü üzerinden sanal sistemlerinize bağlanmanızı sağlıyor, tabi buarada bshi geçen RDP gibi bir masa üstü üstü sistemi yanında guestlerin bios ayarlarını yapabileceğiniz restart edebileceğiniz özel bir ekranla geliyor.
Üçüncü kısım birinci ve ikinci kısımların her ikisini de kapsayan hali hazırda bu makalenin konusu olan WebGui kullanarak sistemleri yönetmek üzerine dayanıyor. Daha önceki makalemde bahsettiğim ama üzerinde durmadığı PhpVirtualBox arayüzü masa üstü sistemde bulunan tüm özelliklerin yanında daha birçok özelliği de yanında getiriyor. Geliştirime sayfasının linki “ http://code.google.com/p/phpvirtualbox/ “ şeklindedir. Web sayfası üzerinden yönetimin bir artısı da birden fazla sistemi tek bir Web sayfasından yönetebilmeniz özellikle datacenter vb.. işlerde olup sanallaştırma ihtiyaçları duyanlar için vazgeçilmez bir özellik.
Olası sistemlerin nelere olduğunu öğrendikten sonra Ubuntu server yapısı üzerinde Web arayüzü ile yönetilen bir VirtualBox server kurulumuna geçelim.
Öncelikli olarak neden Linux ve neden Ubuntu sorularına cevap vermek isterim. Bilindiği gibi işletim sistemi piyasasında birçok version olsa da bunların arasında çok ciddi olan üç sistem var. Windows işletim sistemleri, BSD core temelli dağıtımlar ve Linux core temelli dağıtımlar. Kesinlikle maksattım yönlendirme ve kötüleme olmadan Linux ve BSD temelli dağıtımların sunucu pazarında tartışılmaz stabilite üstünlükleri oldu kabul gören bir geçektir. Her ne kadar BSD korunun Linux kora göre daha iyi bir alternatif olduğunu düşünsem de Linux bazlı dağıtımları kullanmayı daha çok sevmekteyim. Linux bazlı dağıtımlar aynı zamanda ücretsizdir ve birçok getirileri vardır. Bu getirilerin konumuzla alakalı olan en büyüğü Linux sistemleride ağ üzerinde açılmış paylaşımların Linıx korun disk sürücü yerine her bir sürücüyü bir dizine bağlamasından gelen ağ paylaşım alanlarını disk olarak kullanabilmesi gelmektedir. Burada bahsi geçen ağ paylaşımları Windows üzerinde bir CIFS ( Windows Dosya Paylaşım ) sistemi olabileceği gibi Linux yada BSD bazlı bir sistemde oluşturulmuş olan NFS de olabilir. Tabi ISCSI gibi sistemlerde buna dahildir. Bilindiği gibi Windows işletim sistemleri 9x koru bırakmasından sonra tamam ile NTFS sistemine geçmiş fakat NTFS sisteminin hem masa üstünde hemde server tarafında kullanılmasından doğan bir çok sorunla baş etmek durumunda kalmıştır. Hatta ve hatta durumun çok iyi farkında olan Microsoft NTFS sistemi yerine Windows Vista ile beraber çıkartmayı düşündüğü yeni disk sistemin ide Widnows 8 betalarında bile çıkartamamıştır. Peki Linux disk format sistemlerinden EXT3 ve EXT4 sistemini bu kadar özel kılan nedir ? EXT3 ve EXT4 sanıldığının ve bilindiğinin aksine Defrag gerektirmeyen sistemler değildir ( Bknz. http://en.wikipedia.org/wiki/Ext4 ). Onlarda Defrag gerektiriler fakat hem yazım alanı ayarlaması yapabilmelerinden hemde online defrag yapmalarından dolayı ek işlem gerektirmeden işletim sürecinde bunu yapabilirler. Bilindiği üzere sisteminiz diskinizin hızı ile doğru orantılı olarak çalışır ve sanallaştırma yapıyorsanız en büyük darbugaz disklerinizden oluşacaktır, işte burada EXT4 sistemi devreye girerek bu sorunu biz nebzede çözmektedir. Bu arada aynı web arayüzü Windows üzerinde de kullanılabilir. Ubuntuyu sistem olarak seçmemin nedeni oldukça fazla dokümanı olması ve sistem sorunlarında kolay çözümler bulunabilmesi. Aynı şekilde isteyen arkadaşlar aynı komutlar ve yüklemelerle sistemi Debian dağıtımında kullanabilir elbette isteyen olursa Debianın BSD çekirdekli versiyonunda da aynı yapıyı kurabilir.
Konuyu fazla değiştirmeden kurulu olan ubuntu sunucumuzun üzerine sistemi nasıl entegre edeceğimize geçelim.
Öncelikli olarak VirtualBox Oracle versiyonunu kullanacağız ve direk indirip paketi yüklemek yerine depolara ekleyerek güncellemeleri de depolardan yapmanın rahatını yaşayabiliriz. “ https://www.virtualbox.org/wiki/Downloads “ sayfasında birçok farklı işletim sistemi için version bulunmaktadır. Biz ubuntu 11.10 64 Bit Server sistemine entegre edeceğimiz için “ deb http://download.virtualbox.org/virtualbox/debian oneiric contrib
“ ilgili depoyu kullanacağız. /home/kullanıcı klasörü/ içindeyken.
su su
sudo echo deb http://download.virtualbox.org/virtualbox/debian oneiric contrib >> /etc/apt/sources.list
wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add –
apt-get update
apt-get install virtualbox-4.1
Bu kısımdan sonra X11 kütüphaneleri ile birlikte VirtualBox sistemi ortalama 400MB toplam boyut ile sistemi yüklenecektir. X11 kütüphaneleri yüklenirken herhangi bir GUI yüklenmeyecektir, sadece sistemin çalışması için gereken kütüphaneler yüklenecek ve sistem stabilitesine herhangi bir zararı yoktur.
Sistemde kurulacak olan guestlere USB2.0 ve VRDP yetisi vermek için mutlaka genişleme paketi kurulmalıdır. Aksi taktirde Web ara yüzünden istemcilerin ara yüzüne ulaşamazsınız.
sudo chmod 744 /usr/lib/virtualbox/VBoxExtPackHelperApp
sudo /usr/lib/virtualbox/VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.1.6-74713.vbox-extpack
Komutları ile sistemimize genişleme paketini yüklemiş oluyoruz.
Dosyaların sistemimize kurulmasından sonra PHP tabanlı arayüzün sistemimizde çalışabilmesi için apache ve php programlarına ihtiyacımız bulunmaktadır.
apt-get install apache2 php5
/etc/init.d/apache2 restart
Komutu ile apache ve php programlarının sistemimize yüklenmesini ve son verilen apache2 restart ile birlikte çalışmalarını sağlamış oluyoruz. ( Sistemi restart etmek yerine demonu restart etmek yeterli. )
Sisteme php tabanlı arayüzün kurulması için alttaki adımları izleyebilirsiniz,
apt-get install unzip
wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.1-5.zip
unzip phpvirtualbox-4.1-5.zip
mv phpvirtualbox-4.1-5 /var/www/virtualgui
chown -R www-data:www-data /var/www/virtualgui/
exit
vboxwebsrv -b —host IP addresi
Bu adımsan sonra http://sunucu ip adresi/virtualgui linki ile arayüze ulaşabilirsiniz. Benim virtualgui olarak seçtiğim dizin yerine siz başka bir isim kullanabilirsiniz. IP Adresi olarak geçen kısım gui ye ulaşmak istediğiniz ethernet arayüzünün adresidir. Normal –host kısaltılması kullanılmadan da ulaşılabilir fakat aynı anda birçok sunucuyu tek arayüzden yönetecekseniz bu şekilde kullanılmalıdır. Arada kullandığım exit ibaresi yüklemeler esnasında ilk başta sudo su ile root olarak çalışmaya başladığım için root modundan çıkıp normal moda dönmek içindir. Hali hazırda biraz sonra php arayüzün ayarlarını yaparken sistem kullanıcı bilgilerini vermek durumundayız bu nedenle demonu normal bir kullanıcıda çalıştırmakta yarar var. Demonun sistem kapatılıp açıldığında çalışmıyor bu nedenle ilgili komutu crontab üzerine @reboot ile girerek her açılışta otomatik çalışmasını sağlayabilirsiniz. chwon komutu ile dosyaların haklarını www-data kullanıcı ve gurubuna vermemin nedeni standart yüklemede bir değişiklik yapılması ise apache web sunucunun bu kullanıcılar ile çalışmasıdır ve apache sunucunun bu dosyaları okuyup çalıştırma hakkı olmalıdır. Yükleme ile ilgili uyarılara son olarak “vboxwebsrv -b —host” komutunda bulunan — ibaresi aslında iki çizgidir, kopyalayıp yapıştırınca – tek çizgi gibi olacaktır, konsolda Düzeltmeniz gerekebilir. Tüm bu kurulumlar sorunsuz şekilde tamamlandı ise artık php arayüzün ayarlarına geçebiliriz.
* Birden fazla sunucu kullanılmayacak ve tek bir sunucu kullanılacak ise bu durumda host ibaresinde ethernet IP adresi yerine 127.0.0.1 kullanılmalıdır. Aksi takdirde sisteme bağlanılamaz. Multi sistem yönetilirken 127.0.0.1 yerine ethernet IP vermeniz ve aynı sunucudan birden fazla sistemi yönetmeniz sorun oluşturmaz.
sudo cp /var/www/virtualgui/config.php-example /var/www/virtualgui/config.php
Komutu ile kendimize hem bir config dosyası oluşturuyoruz ( örneği kopyalamak yeterli ) hemde asıl dosyanın bir yedeği ( example ) elimizde olmuş oluyor.
sudo nano /var/www/virtualgui/config.php
nano bir metin editörüdür aynı micrsooft tarafında bulunan edit komutuna benzer ama çok daha fazla gelişmiştir. Debian temelli dağıtımlarda yüklü olarak gelmektedir ve vi gibi kullanımı zor bir editöre istinaden oldukça kolaydır.
Config dosyası içinde değiştirilecek olan satırlar alttaki gibidir.
var $username = ‘Sistemde vboxwebsrv demonun çalıştırıldığı kullanıcının adı’;
var $password = ‘Sistemde vboxwebsrv demonun çalıştırıldığı kullanıcının şifresi’;
var $consoleHost = ‘IP addresi‘,
Baş kısmında bulunan diyez işaretini kaldırın ve ethernet arayüzünüzün IP adresini yazın. Bu şekilde web arayüzü sistemlerinize bağlanabilir ve ek bir sisteme gerek kaladan yönetebilirsiniz. Bu sistem VRDP ile çalışmaktadır bu nedenle sistemde genişleme paketi yüklü olmalıdır. Sisteme eğer ki uzak erişim sağlıyor ve aynı konumda değil iseniz internet cihazınızdan VRDP portunu ( default 3389 dur faakt birden fazla guestte aktif ise port değiştirilebilir, yada guest çalışırken değiştirilip aynı port kullanılabilir. ) sistemin yerel IP adresine natlamalı ve bu kısımda internet IP adresini kullanmalısınız. Aslında burada yazdığınız IP web arayüzünde değiştirilebiliyor ama kolaylık olsun diye yazarsanız ilk bu IP adresi geliyor. Sistemde birden fazla guest aynı VRDP portunu kullanıyor ise ilk aktif edilen guest dışındakilerde consol iconu deaktif olacaktır.
var $previewWidth = 180;
Burada bahsi geçen gui arayüzünden VirtualGuestleri izleyeceğiniz ekranın boyutudur. Kullanım için olmadığına göre çok büyütmeye gerek yok ama sistemi izlemek istiyorsanız da değeri en az 640 olarak değiştirin.
#var $hostMemInfoShowFreePct = true;
Baş kısmında bulunan diyez işaretini kaldırın, kullanılan sistem memorisini gördüğünüz alanda % gırafik kısmında % lik değerler verecektir.
#var $enableGuestAdditionsVersionDisplay = true;
Baş kısmında bulunan diyez işaretini kaldırın. Bu şekilde sistemde kullanılan VirtualGuestlerinizin üstünde yüklü olan uyumluluk yazılım ve sürücülerinin versiyonunu görebilirsiniz. Sistem güncellemesinde yada guestin yedeğini alıp başka bir sisteme yüklediğinizde oldukça ihtiyaç duyulabilecek bir yapı.
#var $enableAdvancedConfig = true;
Baş kısmında bulunan diyez işaretini kaldırın. Bu şekilde gui aracılığı ile birçok gelişmiş ayarlama yapabilirsiniz. Birçok ek özellik getirmekte bu nedenle “ http://code.google.com/p/phpvirtualbox/wiki/AdvancedSettings “ilgili linki okumanızı tavsiye ederim.
Sisteminiz sorunsuz şekilde kuruldu ise web arayüzünün tek bir sistemde çalışması durumunda kullanıcı adı admin şifresi admin dir . Bu şifre değiştirilebilir sisteme birden fazla kullanıcı tanımlanabilir. Sistemde birden fazla kullanıcı kullanılıyor ise sistem kullanıcı adı ve şifresi kullanılmalıdır ve alttaki gibi bir görüntü almalısınız.
Bir sistem üzerinden birden çok yapıyı yönetmek oldukça kolay. Hatta bir web sunucu üzerinde barındırılan bir PhpVirtualbox ile uzak ve yakın birçok sistem tek bir ekrandan yönetilebilir. Her sunucu kendi yönetim paneline sahip olabileceği gibi merkezi bir yönetimle de aynı anda çalışabilmektedir.
Yönetici olarak çalışacak olan ana sistemde conf dosyası alttaki gibi tekrar düzenlenmelidir.
Vboxwebserv -b —host Ethernet IP adresi
var $location = ‘http://Ethernet IP Adresi:18083/’;
Eğer sunucunun kendisinde sanallaştırma yapılmıyor ise yukarıdaki iki satır gerekli değildir. Alttaki örnekte üç ayrı sunucunun yönetimi tek bir sistemde toplanmıştır.
var $servers = array(
array(
‘name’ => ‘VM1-Master’,
‘username‘ => ‘sistem kullanıcı adı’,
‘password‘ => ‘sistem kullanıcı şifresi’,
‘location‘ => ‘http://Sunucu Ulaşım IP adresi:18083/’,
),
array(
‘name’ => ‘VM2-Master’,
‘username‘ => ‘sistem kullanıcı adı’,
‘password‘ => ‘sistem kullanıcı şifresi’,
‘location‘ => ‘http://Sunucu Ulaşım IP adresi:18083/’,
),
array(
‘name’ => ‘VM3-Master’,
‘username‘ => ‘sistem kullanıcı adı’,
‘password‘ => ‘sistem kullanıcı şifresi’,
‘location‘ => ‘http://Sunucu Ulaşım IP adresi:18083/’,
),
);
Daha ayrıntılı bilgi ve gelişmiş ayarlar için “ http://code.google.com/p/phpvirtualbox/wiki/MultipleServerConfiguration “ linkini ziyaret edebilirsiniz. Array kısmında bulunan değerlerin açıklamaları alttaki gibidir.
‘name’ => ‘VM3-Master’, # Sunucunun web arayüzünde gözükecek olan adıdır ne yazıldığı çok önem arz etmez.
‘username‘ => ‘sistem kullanıcı adı’, # Sunucunun çalıştığı sunucuda bulunan ve sunucuyu çalıştıran kullanıcının adı. ( Standart kullanıcı olan admin değil, Linux üzerindeki kullanıcı. )
‘password‘ => ‘sistem kullanıcı şifresi’, # Sunucunun çalıştığı sunucuda bulunan ve sunucuyu çalıştıran kullanıcının şifresi . ( Standart şifres olan admin değil, Linux üzerindeki kullanıcı şifresi. )
‘location‘ => ‘http://Sunucu Ulaşım IP adresi:18083/’, # sunucuya ulaşılacak olan IP adresi. Sunucu bu IP adresi ile çalıştırılmalıdır.
Bu işlemleri doğru olarak bitirdi iseniz alttaki gibi bir ekran karşınıza çıkmalıdır.
İşim gereği bu tür sistemler üzerinde özel bir profesyonellik kazanamıyorum ama müşterilerimizden önce bu sistemlerin hemen hemen hepsini araştırır, doküman hazırlar zafiyet ve kararlı kısımlarını öğreniriz. Bu şekilde daha müşterilerimiz bu tür sistemlere geçmeden biz olası sorunlara hazır oluruz. Şunu söylemek isterimdeki bir ağ sistemleri danışmanı olarak, ağ sistemleri ve işletim sistemlerinde bu güne kadar bana en az sorun çıkartan sanallaştırma yazılımı VirtualBox olmuştur.
Sistemin temel bir sorunu bulunuyor buda memory ile ilgili olan kısmı. Sistem Dynamic memory sistemi kullanılmıyor bu nedenle guestlere atayacağınız hafıza o guest için sabittir ve sistem kaynağından ayrılmıştır. Toplamda verdiğiniz hafıza toplam sistem kaynağını geçse de guestler çalışacaktır ta ki toplamda kullandıkları hafıza mikatarı gerçekten sistem hafıza toplamını geçene kadar, bu durumda guestler guru meditasyonu adı verilen bir bekleme moduna yada otomatik kapanma moduna geçiyorlar sistemde yeterli hafıza olursa yeterli guest kapatılınca sistemde diğer guestler çalışmaya devam ediyor. Fakat VirtualBox hali hazırda bir çözümü var fakat aryüzde yok umarım ilerki versionlarda arayüze eklenir. Bu sistem şu şekilde çalışıyor, gueste ne kadar ram atarsanız atayın eğer guestlerin gerçek hafıza kullanımı toplam sistem kaynağından fazla olursa ballon teknolojisi sayesinde eğer guestte aktifse ayarlanmış olan hafıza miktarına kendisini otomatik olarak çekiyor. Kullanım arayüzde olmadığı için konsoldan guest kapalı iken
,
VBoxManage modifyvm “VM name” —guestmemoryballoon <n>
Örnek,
VBoxManage modifyvm “WindowsXp” —guestmemoryballoon 256
Bu duruma göre WindowsXP adlı guest sistem hafıza aşımı olursa kendisini 256 MB memorye çekecektir. Bunun dışında birde Page Fussion teknolojisi var ama hem karmaşık bir yapı hemde sorunlara neden olabiliyor. Sistem sistem kaynağında aynı adreslemeleri kullanan guteslerin adreslerini hesaplayarak aynı hafıza alanını iki gueste kullandırarak gereksiz yükü ortadan kaldırıyor fakat özellikle uyarı yapılmıştır ki CPU tüketimi arttırabilir.
VBoxManage modifyvm “VM name” —pagefusion on
Örnek
VBoxManage modifyvm “WindowsXP” —pagefusion on
Daha çok bir sistemin birden fazla klonun aynı sistemde çalıştırılmasında olumlu sonuçlar verebilir. Daha ayrıntılı bilgi için VirtualBox Yardım dokümanı “ 4.8. Memory overcommitment “ bakılabilir.
* Her iki hafıza kontrol sistemide 64 bit sistemlerde çalışmaktadır ve MacOsX üzerinde çalışmamaktadır.
Bahsi geçen makale VirtualBox 4.1.6, Ubuntu Server 11.10 64Bit, PhpVirtualBox 1.5 sürümlerini kapsamaktadır. Yeni çıkacak versiyonlar da olası bir değişiklik olursa ise yorumlar kısmına ekleyeceğim.