Birkaç yıldır evimde, kişisel sistemlerimde de masaüstü sanallaştırma kullanıyorum. Bu artık kurumsal anlamda masaüstü sanallaştırmaya uygulanabilir hale de geldi. Hem de ücretsiz. 🙂 Henüz şöyle derli toplu bir proje haline getirmedim ama paylaştığım ipuçlarıyla elle tutulur bir sanallaştırma ortamı kurabilirsiniz.
Baş not: Bu yazıya başlarken teknik ayrıntıya girmeyip kısa tutayım demiştim ama kurumsal uygulama öngörü başlığı uzayıverdi. 🙂
Evde niye sanal makina kullanıyorum?
Tamamen yönetim kolaylığı amaçlı evdeki sanal makina kullanımım. İşin başlangıcı uzun süre Linux/Mac OS kullanmama dayanıyor. Çoluk çocuk yokken birazcık da bilgisayar oyunu oynardım. İşte Steam‘in indirimlerinden eski oyunları alıp bitirecek kadar. E oyunlar Windows’ta çalışıyor, ben Linux/Mac OS takılıyorum. Oyun oynamayı her istediğimde bilgisayarı kapat, Windows’u aç, oyunu oyna, sıkılınca tekrar kapatıp Linux’a dön. Öf. 🙂
Bununla da bitmiyordu. O Windows sistem (veya kurcalayıp durduğum Linux/Mac OS) ara ara karışıyordu ve bazen burnumu soktuğum yerden kurtarmak için sistemi baştan kurmam gerekebiliyordu. Bilen bilir, sıfır kurulumun en kolay kısmı sistemi kurmaktır. Ondan sonra kullanılan programları kurma, ayarları tekrar yapma faslı başlar. Gündüz çalışıyorsunuz, sosyal hayatınız var, kalan vakitte o fasıl haftalar sürebilir.
Sanallaştırınca açılan kapının arkasında şunlar var:
- Bilgisayarı kapatıp açmaya gerek kalmadan birden fazla işletim sistemini kullanabilmek (tabii ki!)
- Disk yönetimi fena halde basitleşti. Windows’a ayırdığım disk alanı mı bitti? Şak, al sana 100GB daha, D:\ bölümü yaparsın. Linux’ta /usr bölümünü kurarken az mı vermişim? Tak, bir 50GB da sana.
- Yedeklemeler çok kolaylaştı. Apple kullanıcılarının aşina olduğu “Time Machine” kılıklı yedeklerim var. Örneğin “5 Mayıs gününe dönmek istiyorum” dedikten birkaç dakika sonra sistemi o günkü haliyle açabiliyorum. Üstelik fazla ekstra yer kaplamıyor.
- Bir şey deneyeceğim zaman yeni “bilgisayar” oluşturmak birkaç dakika sürüyor. Nefis.
- Farklı işler için farklı sistemler kullanabiliyorum. Bir ara aktif olarak kullandığım dört-beş tane vardı. Birinde sadece oyun, öbüründe bazı programlar, bir diğeri sadece normal masaüstü kullanımı…
Yazılım
Reçeteyi veriyorum, anahtar kelimeleri not alın.
- Taban sistem, yani sanallaştırma konağı Debian Linux
- Libvirt ile KVM sanallaştırma işlerini üstleniyor
- Ağ köprüsü (bridged networking) basit bir ağ ayarı sağlıyor
- Sanal makina görüntü dosyaları ZFS üzerinde
- Grafik arayüz: XFCE modern bilgisayarlar için yeteri kadar hafif
- Sanal makinaların grafik arayüzle yönetimi: Virt-Manager
- Dosya düzenleme için editör tercihim Emacs
- 3 boyutlu yazılım kullanmak için de GPU Passthrough yapılıyor
İlk başta Xen kullanmıştım. Sonradan Linux çekirdeğine aşinalığım nedeniyle KVM’ye geçtim. Yazılım altyapısında Linux gerekli her şeyi sağlıyor. Evde kullandığım için bir bileşen hariç hepsi açık kaynak, o bir tanesi de ücretsiz. İşletim sistemim Debian 9 – Stretch. Şu rehberi takip ederek kurabilirsiniz. Bu kadarını da anlatmayayım. 🙂
Ben basit olsun, ben elle kurayım istediğimden net-install tabir edilen en küçük kurulumu yapıyorum. Yaptıktan sonra elinizde fazla bir şey olmuyor. 🙂 Siz tam kurulum vb. yaptıysanız burada anlattıklarımın bazıları zaten kurulu olabilir. Benim kurulumumda ilk işim Emacs kurmak. Kolayıma geliyor o editör.
Bu “taban” sistem mümkün olduğunca sabit kalacağı için basitlik adına elle ağ köprüsü yapmayı tercih ediyorum. /etc/network/interfaces dosyasını düzenleyerek. En basit haliyle ilgili Debian rehberini takip ederek bunu da halledebilirsiniz.
Dosya kurcalamışken Debian’ın non-free ve contrib depolarını da aktifleştirin.
Dosya sistemi olarak ZFS kullanıyorum demiştim. Donanım başlığında anlatacağım onu. Siz şimdilik ZFS’i kurun.
Bunu iş edinmeyecekseniz bir grafik arayüz de iyi olur. XFCE hem çoğunuz için tanıdık, hem de modern bilgisayarlar için oldukça hafif.
Sanallaştırma kısmına geldik. KVM demiştim değil mi? Bu rehberi takip ederken kendi kullanıcınızı iki gruba eklemenizi söylüyor, onu atlamayın. Yine rehberde önerilen grafik arayüzlerden Virt-Manager’ı kurun. Komut satırı işlerine ileride girersiniz.
Bu aşamada artık düzgün bir sanal makina kurmaya hazırsınız. Kurduğunuz sanal makinalara komut satırından (kabuktan) bağlanabileceğiniz gibi, masaüstü oturumları da tercih edebilirsiniz (Windows sana diyorum!).
Burada iki ayrı mevzu var. Birincisi “normal” uzak masaüstü bağlantıları. Windows’un kendi uzak masaüstü sistemi hiç fena değil ama ben NoMachine‘i daha başarılı buluyorum. Açık kaynak değil ama ücretsiz versiyonu var. Ücretli kurumsal çözümleri de dikkate değer. Windows, Linux, Mac OS, Android, iOS diye uzayan bir işletim sistemi desteği de bulunuyor. Açık kaynakta kalmak isterseniz X2Go ihtiyacınızı karşılayacaktır. Ama çoğunluğun NoMachine tercih edeceğini düşünüyorum ve benim tavsiyem de o. Kişisel olarak; Windows’lara NoMachine, Linux’larıma X2Go ile bağlanıyorum. Çok kafa yorduğumdan değil, tamamen alışkanlıktan.
Ancak bu uzak masaüstü bağlantılarıyla 3 boyutlu grafik kullanımı pek olmuyor. Yani oyun oynamak veya CATIA gibi 3 boyut tasarım yazılımlarını kullanmak istiyorsanız önce yukarıda bahsettiğim VGA Passthrough ile ekran kartınızı sanal makinanıza bağlamanız gerekiyor.
Bunu yaptıktan sonra basit çözüm ekran kartının çıkışına monitörünüzü bağlamak. Sanal bilgisayarınızı başlattığınız zaman görüntüsü monitöre gelecek. Bilgisayarınız masanızın yanındaysa oyun oynamak veya profesyonel 3 boyut tasarıma dalmak için bu yeterli. Eğer bilgisayarınız uzaktaysa NICE DCV çözümünü tavsiye ediyorum. Bu aynı zamanda kurumsal iş istasyonu amaçlı güzel bir çözüm. Uzak masaüstünden 3 boyut işler için ideal.
Donanım
Teknoloji yazarlığı günlerim geride kaldığından son teknolojinin detaylarını bilmiyorum (onun için Teknoseyir‘e bakacaksınız) ama ben bu sistemi oluştururken son kullanıcı için mantıklı olan AMD platformuydu. Sebebi IOMMU. Bu aynı zamanda VirtualBox kurup anında oyun ortamlarına akamama sebebiniz.
IOMMU AMD ve Intel’de farklı isimlerle geçiyor. Bizim amaçlarımız dahilinde getirisi, fiziksel bir donanımı, özel olarak ekran kartını, sanal makinaya gerçekten bağlı bir donanım gibi gösterebilmemize olanak sağlaması. Ben sistemi kurduğumda Intel ve NVIDIA bu işe sadece kurumsal odaklı, profesyonel ürünlerinde izin veriyordu. Bir başka deyişle sanal makinada oyun oynamak için Intel Xeon sistem üzerine en az orta seviye NVIDIA Quadro koymanız gerekiyordu. Quadro ile oyun tecrübesi için söyleyebileceğim tek şey, parasına bakmayın oyun kartı değil o.
Bu durumda eski Intel tabanlı sistemimi satıp şöyle bir sistem kurdum:
- GIGABYTE GA-990FXA-UD3 anakart, revizyon 4. IOMMU desteğini doğrulayabildiğim birkaç modelden biri. Aynı zamanda 4 tane ekran kartı da takabiliyorum.
- AMD FX-8320 işlemci. Azıcık overclock etmiş olabilirim. 😉 Yine sanal makinaya ekran kartını göstermem için gerekliydi. Diğer taraftan, mimarisi sanallaştırmaya gayet uygun.
- XFX Radeon HD 6850 ekran kartı. Bu kart oyun oynamak için kullandığım sanal makinaya bağlanıyor.
- AMD Radeon HD 3450 ekran kartı. Çok elzem sayılmaz, sadece konak (ana) makina için kullanıyorum.
- 16GB RAM. Birden fazla sanal makina da olsa tek ben kullandığımdan yeterli geldi.
- 1TB Western Digital Caviar Black ve 128GB SSD.
- KVM anahtarlayıcı. Tek düğmeyle makinalarım arasında geçiş için.
- İyi bir kasa, düzgün bir güç kaynağı, iki monitörüm, Logitech Wave, falan-filan.
İşletim sistemi SSD üzerinde kurulu. Bu SSD’nin bir kısmı ZFS için önbellek vazifesini de üstleniyor. Mekanik diskin tamamı ise ZFS için kullanılıyor. Yeni sanal makina oluşturmak istediğimde ZFS’ten onun için bir dataset ayırıyorum ki gelecekte işim düşerse kolaylık olsun.
3 Boyut için ekran kartınız önemli ve NVIDIA son kullanıcı ürünlerinde (oyun amaçlı, GeForce ekran kartlarında) sanal makinaya gösterilmesine izin vermiyor. Gördüğüm kadarıyla bu durum kartların teknik özellikleriyle ilgili değil. Sürücüyü kurana kadar sorun yok. Sürücüyü kurduğunuzda eğer sanal makinada çalıştığını anlarsa ekran kartını kapatıveriyor.
Kullandığım AMD ekran kartları sanallaştırmada daha düzgün çalışıyordu. Bir tek FLR diye bir şey var, Function Level Reset. Sorun yaşarsanız bunda yaşarsınız. Yaşadığınız sorun da sanal makinayı kapattıktan sonra açmakta zorlanmak olur. Bazen konağı tamamen yeniden başlatmak gerekebiliyordu.
Kurumsal masaüstü sanallaştırmaya uygulanması
Aslında daha bile kolay. Intel iş sınıfı ürünlerinde yukarıda andığım “IOMMU” mevzuunu sağlıyor. Spesifikasyon dokümanlarında “VT-d” veya Intel Virtualization Technology for Directed I/O olarak göreceksiniz. Yine de tedarikçiden sanallaştırmayla ilgili teyidi almakta fayda var.
Böyle bir şeylere yatırım yapmadan önce test ve çalışanlarınızı eğitmek amacıyla ufak başlayabilirsiniz. Ben yine GIGABYTE’ın ürünlerine baktım (almadım ama). GIGABYTE MW50-SV0 üç tane PCIe yuvası taşıyor. Yani “normal” sanallaştırmaya ek olarak 3 kullanıcıya kadar iş istasyonu sanallaştırması deneyleri de yapabilirsiniz. Belleği bol tutup işlemciyi düzgün seçerseniz epeyce fazla sayıda kullanıcıyı kaldırır bu. Açıkçası kurumsal sanallaştırma işlerini ilerletmeye karar verirsem eve alırım ben bundan.
Nihai hedefiniz iş istasyonu sanallaştırması ise GIGABYTE’ın barebone sistemlerine gözatmanızı öneririm. Ben G250-G50‘yi düşünmüştüm. 8 tane ekran kartı takılabiliyor. Yani 8 iş istasyonunu sanallaştırabilirsiniz. Anakart önerisinde olduğu gibi bunda da 8 iş istasyonuna ek olarak işlemci ve belleğinize bağlı sayıda normal uzak sanallaştırma uygulayabilirsiniz.
Her iki ürüne de 2017’de bakmıştım. Yeni modelleri çıkmış veya daha mantıklı seçenekler gelmiş olabilir. GIGABYTE’ın barebone sunucuları için PCG Bilgisayar‘la iletişime geçmiştim. Bir görüşmekte fayda var.
İşlemcide çekirdek sayısı önemli. Üçyüz MHz az olsun çekirdeği bol olsun. Unutmayın, yaptığınız iş tek donanımda çok sayıda kullanıcıyı çalıştırıp bu arkadaşların işlemciye aynı anda %100 yüklenmeyeceklerine güvenmek. Ben şimdiye kadar 3 kat gibi bir ölçeklendirmeyi güvenli buldum, ötesini test etme olanağım olmadı. Yani sanallaştırmaya 10 çekirdek ayırdıysam, 30 “çekirdeklik” kullanıcıya atadığım zaman sorun olmayacağına inanıyorum. Biraz lükse kaçtım bu arada, sanal makinalara 4’er çekirdek veriyorum. 😀 Çekirdek sayısını hesaplarken mümkünse 2-3 tanesini sanallaştırıcı işletim sisteminize ayıracağınızı düşünün. O garibim bir sürü kullanıcının disk, ağ vb. erişimlerini de yönetecek.
İş istasyonu sanallaştırması için kaynağınız varsa anakart soketlerini doldurma yoluna gidin. Amacınız kullanabileceğiniz PCIe kanal sayısını artırmak çünkü takacağınız ekran kartları sistemin kalanıyla PCIe üzerinden iletişim kuracak. Aynı zamanda toplam bellek kanal genişliğinizi de artırmış olacaksınız.
Bellek demişken; ne kadar çok o kadar iyi tabii ki ama sanal makinalara ayırdığım belleğin 2-3 kata kadar ölçeklenebileceği görüşündeyim. Evde sanal makinalara 12GB kadar bellek ayırıyorum ve herbiri 8’er GB belleğe sahip 3-4 makina aynı anda çalışabiliyor. Elbette tıpkı işlemci gibi bunda da herkesin belleğini ağzına kadar doldurmayacağını öngörüyoruz. İş istasyonu sanallaştırmasında en fazla 1.5 kata kadar çıkın. Hatta çıkmasanız daha iyi, koskoca iş istasyonu masrafından kurtuldunuz azıcık bellek atıverin. 🙂
Depolama altsisteminde 3 adet SSD ve depolama planlarınıza bağlı sayıda nearline-enterprise SATA diskler gayet yeterli. Niye bunu önerdiğimi daha önceki blog yazımda görebilirsiniz. SSD’lerin hikmeti iki tanesini ZFS’e önbellek olarak kullanmak. ZFS’in “sık kullanılanı önbellekleme” stratejisi sayesinde kullanıcılarınızın ortak kullandığı veri (RAM’den düşse bile) SSD üzerindeki önbellekte muhtemelen sürekli kalacaktır. Üçüncü SSD ise ana işletim sistemini geri kalanlardan ayırmak amaçlı. Bu arada, ZFS’in deduplication özelliğini açmayın ve mümkünse ana belleğinizden (RAM’den) en azından 8 GB kadarını işletim sistemine ayırın. ZFS bellek konusunda açgözlü olabiliyor.
Eğer NVIDIA ekran kartlarıyla iş istasyonu sanallaştırması yapacaksanız dikkat edin, alt seviye Quadro’larda bu özelliği bulamabilirsiniz. NVIDIA bu konuda biraz kaçak güreşiyor gibi geliyor bana. Tıpkı oyun kartlarına yaptığı gibi, alt seviye Quadro’larda da sürücüyü kurduğunuz zaman, eğer sürücü sanal makinada olduğunu anlarsa kartı devredışı bırakıyor. K1200’ü yapamadım. M2000 çalıştı. KVM’de sürücüyü kandırarak kurtarma şansınız olabilir, NVIDIA’nın bazı sürücüleriyle yapanlar var. Ben son 7-8 ay içinde çıkmış olan sürücülerle beceremedim. Her halükarda, kurumsal ortamda bunu istemezsiniz, bana güvenin. Bugün yaptınız diyelim, yarın öbür gün NVIDIA zorlayıp gelecek sürücülerinde engellerse yaptığınız ekran kartı yatırımı boşa gider. AMD tarafında ise son kullanıcı oyun kartlarının tersi bir durumla karşılaştım: Sanallaştırma odaklı sattıkları iş istasyonu kartları farklı bir ürün grubu. 🙂 Yani şu makinadaki kartı çıkarayım buna takıp sanallaştırayım diyemeyebilirsiniz.
İş istasyonu sanallaştırmasında bir de uzak masaüstü yazılımına ihtiyacınız olacak. CAD gibi 3 boyutlu çizimin olayı o grafikleri ekran kartına çizdirip ekrana çıkarttırmak. En ucuz ekran kartı bile o işi pahalı bir işlemciden daha iyi yapıyor. Ama normal uzak masaüstü çözümleri görüntüyü ekran kartına değil işlemciye çizdirip aktarıyor. Kısacası o uçağı VNC ile zor tasarlarsınız. 🙂 NICE DCV ile çalıştım ben. Grafik kartının çalıştığı sunucuyu lisanslandırıyorlar. Yani 8 tane iş istasyonunu 13 kullanıcının ortak kullanımına sunacaksanız, 8 tane DCV lisansı almanız yetiyor.
İş istasyonu sanallaştırma dışında ben olsam NoMachine tercih ederim. Hem tatminkar, hem de kurumsal çözümlerindeki vaatleri güzel, eliniz alışsın.
Yine uzun bir yazı oldu. 🙂 Zamanla bu yazıda geçenleri kendi makalelerinde detaylandırırım belki. İnternet günlüğü bu, belli mi olur?