Tag Archives: Hyper-V

Hyper-V Öneriler/Best Practise

  • Yapının sürekli büyüyen bir yapı olması da göz önünde bulundurularak fiziksel sunucuya kurulacak server işletim sistemi bu duruma göre uygun tercih edilmeli. Eğer sürekli büyüyen bir yapıysa ve ya çok fazla sanal makine kurulacaksa datacenter versiyon tercih edilmeli muhakkak
  • Sanal makine sayısının arttığı ve kritik işlemlerin (Exchange, APP, Web site gibi doğrudan kullanıcıları büyük oranda etkileyecek uygulamalar) çalıştığı yapılarda cluster yapısı tercih edilmeli.
  • Host olarak seçilecek fiziksel sunucuların donanım kaynakları ortamda kurulacak olan sanal makine adetleri, kullanılacak uygulamalar ve servisleri çok iyi tespit edilerek seçilmeli. Aksi halde kısa zamanda ciddi darboğazlar yaşanabilir.
  • SAN bağlantı modeli olarak ISCSI tercih edilirse chap şifresi muhakkak konulmalı. Aksi halde ciddi bir güvenlik açığı oluşuyor.
  • Sanal makinaların kullanacağı disklerin LUN yapısını da duruma göre iyi ayarlamak lazım. Çok fazla LUN oluşturmak ileride yapı büyüdükçe karmaşaya yol açacaktır. Bunu da mümkün olan en yönetilebilir şekilde yapmak ve sıkı bir dokümantasyon yapmak lazım. Aynı RAID diski üzerinde çok fazla LUN yapmanın disaster recovery bakımından pek bir anlamı yok ancak daha iyi yönetmek için bir –iki tane LUN oluşturup bunlardan birini sadece işletim sistemi diğerlerini de duruma göre yedeklemeler, sunucu uygulamaların dataları gibi işlerde kullanılabilir.
  • Oluşturulacak sanal makinaların donanım kaynağı kullanacağı uygulamaların harcayacağı kaynak ve IO değerlerine uygun donanım kaynağı ayrılmalı. Aksi durumda çok ciddi kaynak sorunları ortaya çıkar. Örneğin sadece yüzde 1’ lik bir cpu kullanan bir sunucu için 2 çekirdekli 2 cpu ayırmak çok mantıklı değil. Ya da aynı şeyi RAM ve Hdd için de söyleyebiliriz.
  • RAM modeli olarak muhakkak Dynamic memory kullanılmalı. Bu özellik çok büyük bir avantaj sağlıyor.
  • Tüm node’larda çalışan sanal makinaların takibinin yapılması gerekir. Aksi halde baş ağrıtan karmaşalar ortaya çıkacaktır.
  • Kurulacak işletim sistemlerinin microsoftun desteklediği işletim sistemleri yüklenirse daha faydalı olur. Özellikle Unix türevi işletim sistemleri kurulacaksa bu duruma kesinlikle dikkat edilmeli. Microsoftun hangi işletim sistemlerini desteklediğini Microsoftun bu konu için yayınladığı listelere bakılabilir. Kuracağınız işletim simtemi bu listede yer almıyorsa kurulmayacağı anlamına gelmez ancak bazı sorunlarda Microsoft destek vermeyebiliyor.
  • Cluster yapılarında network kartlardan birini Hyper-V’ nin yönetimsel işleri için ayırmalı. Mesela live ve quick migration işlemleri bu network kartı üzerinde yapılabilir.
  • Yeterli derecede network kartı bulunuyorsa bunları network teaming tercih edilmeli.
  • Snapshotlar gerek görülmedikçe alınmamalı. Alınacak snapshotları da çok iyi takip etmek lazım çünkü snaphotlar çok fazla disk alanı harcıyor.
  • Bazı backup yazılımları backup alırken makinayı save ediyor. Özellikle host üzerine backup yazılımı kurulacaksa bu durumu göz önünde bulundurmak gerekiyor. İlgili backup yazılımının bu özelliğinin devre dışı bırakılmalı.
  • Sanal makinalar üzerinde antivirüs kullanılması pek tavsiye edilmez ancak kullanmak zorunda kalınırsa şu dizinler devre dışı bırakılmalı;
      • c:\ProgramData\Microsoft\Windows\Hyper-v
      • Özel olarak belirlediğiniz sanal sistemlerin klasörleri
      • Sanal harddisklerin kurulu olduğu dizin.
      • Özel olarak belirlediğimiz sanal disk dizinleri
      • Snapshot dizinleri
      • Vmms.exe
      • Vmwp.exe

Not: Bu dizinler değişebilir. Her defasında hangi dizinlerin devre dışı bırakılması gerektiği detaylıca araştırılmalı.

Hyper-V Teknolojisi

Hyper-V Temel Yapısı ve Tanımı

Hyper-V Nedir: Hyper-V, Microsoft’un ilk olarak Viridian kod adıyla duyurduğu ve daha sonra 2008 yılında Hyper-V adıyla piyasaya sürdüğü x64 tabanlı sunucu sanallaştırma platformunun adıdır ve aynı zamanda Microsoftun sanallaştırma hypervisor’unun adıdır.

Kısa Tarihi: Microsotf sanallaştırma dünyasına ilk olarak 2003 yılında masaüstü sanallaştırma olan Virtual PC ile giriş yaptı. Daha sonra sunucu tarafı için 2005 yılında Virtual Server 2005 ürününü sundu. Virtual Server 2005 mimarisi üzerinde yaptığı geliştirmeyle 2008 yılında Hyper-V adıyla yepyeni bir platform sunmuş oldu. Hyper-V, 2008 yılından günümüze kadar yeni özellikler eklenerek ve açıkları kapatılarak sürekli geliştirilmektedir. Son sürümü Windows Server 2012 R2’ dir. Normalde masaüstü versiyonu için virtual pc kullanılmaktaydı ancak Windows 8’le beraber Hyper-V client adıyla masaüstü versiyonda da kullanılmaya başlandı. Yani bir nevi virtual pc’nin de yerini almış oldu. Ancak adı Hyper-V clientdır.

Yapısı ve Çalışma Mantığı: Hyper-V Windows server tabanlı işletim sistemleri içerisinde bir role olarak gelir. Kurulum ve kullanımı sunucu işletim sistemi aracılığıyla gerçekleşir. Kurulumu ve kullanımının bir işletim sistemi aracılığıyla gerçekleşmesi onun Type 2 mimarisi olduğu izlenimi verir ancak Type 2 değildir çünkü işletim sistemiyle olan ilgisi sadece donanımın driverlarıdır.

Kurulum gerçekleştirildikten sonra doğrudan donanım katmanına geçer ve işletim sistemine driver kullanımı dışında hemen hemen hiç ihtiyaç duymaz. Bu özelliğinden dolayı Type 1’ in micro-kernelized kategorisine girer. Çalışma mantığını tam olarak şu şekilde özetleyebiliriz; Suncu üzerinde Hyper-V rolünü aktif ettikten sonra hypervisor kodu donanım katmanı üzerine yerleşir. Hypervisor çekirdeği (kernel) donanım katmanına yerleştiği için artık Type 1 mimariye dönmüş oluyor. Bu aşamadan sonra fiziksel sunucu üzerinde kurulu olan Windows server 2008 ya da 2012 parent partition adını alarak bir nevi sanal makinaya yani Hyper-V’nin bir sanal makinasına dönüşür. Artık bu aşamadan sonra yapı aşağıdaki diagramda da görüldüğü gibi şu şekilde değişmiştir; Donanım katmanının hemen üzerinde hypervisor katmanı, hypervisor katmanı üzerinde de biri parent partition isimli fiziksel sunucu üzerine kurulu olan işletim sistemi diğeri de child partition adını alan hyper-v üzerine kurulan sanal makinalarımızdır. Bu aşamada parent partition’daki işletim sistemimiz de bir sanal makinaya dönüştüğü için desteklediği max. cpu adeti artık 64 adettir. Bu aşamadan sonra parent ve child partitionlardan gelen tüm işlemci ve ram istekleri vmbus aracılığıyla hypervisora yönlendirilir ve hypervisor üzerinden de donanıma aktarılır.

Featured image

Hyper-V Teknik Özellikleri: Hyper-V’ nin 10’larca özelliği var ve her biri de başlı başına bir makale konusudur. Ben aşağıya sadece en önemli bulduklarımdan birkaç adetini kısa kısa aktarıyorum;

  • Host başına 320 Logical Processor desteği.
  • Host başına 4TB RAM desteği.
  • Standalone Host başına 1000 sanal makine desteği.
  • Hyper-V Failover Cluster başına 64 node desteği.
  • Hyper-V Failover Cluster başına 4000 sanal makine desteği.
  • Sanal makine başına 64 vCPU (sanal işlemci) desteği.
  • Sanal makine başına 1TB RAM desteği.
  • *Dynamic Memory
  • Canlı Snapshot Merge desteği.
  • Hyper-V Replica.
  • *Sanal makineler için NUMA desteği.
  • Eş zamanlı, canlı ve sınırsız Live Migration desteği.
  • Failover Cluster ve Shared Storage olmaksızın Live Migration desteği.
  • Live Storage Migration desteği.
  • Failover Cluster ve Shared Storage olmaksızın Live Storage Migration desteği.
  • Failover Cluster’da sanal makine failover önceliklendirme desteği.

*Dynamic Memory: Bu özellik Hyper-V’ de yeni olduğu için ayrıca açıklama gereği hissediyorum. Normal şartlarda sanal makine için belirlediğimiz RAM miktarını sistem olduğu gibi o makinaya ayırır ve başka bir iş için kullanmaz. Ancak dinamik bellek’de belirlediğimiz RAM miktarının tamamını aktarmaz sadece kullandığı kadarını aktarır. Biz RAM ayarlarından max. ve min. değerlerini girerek sistemin alabileceği min. ve max. RAM miktarını belirlemiş oluyoruz. Örn: Min. değeri 512 MB, max. değeri 1024 olan bir RAM hiçbir zaman 512’ nin altına düşmeyecektir ve 1024’ ün üstüne çıkmayacaktır. Ve o anda sadece 600 MB ihtiyacı varsa aldığı miktar sadece 600 MB olacaktır. Bunun üzerine bir 100 MB’a daha ihtiyaç duyduğunda sistem ona bir 100 MB daha aktaracak ve 100 MB’a olan ihtiyacı bittiğinde sistem ondan 100 MB’ı geri alacaktır.

*NUMA: Bu özellik de yeni olduğu için açıklama gereği duyuyorum. Tam açıklaması ‘Non-Uniform Memory Access’ ve Türkçesi Düzensiz Bellek Erişimi’ olan NUMA çoklu işlemcili platformlarda işlemcinin kullanacağı RAM’i belirleyen bir işlemci özelliğidir. Anakart üzerinde 2 adet işlemci ve 3 adet RAM slotu olsun. İşlemcinin hangi RAM’ e öncelikle erişeceği belirlenir. İşlemci artık RAM’ e ihtiyaç duyduğunda ilk önce kendisine ayrılan RAM slotuna gider eğer orada yer yoksa sonraki slotlara gider.

Hyper-V Terminolojsi

Açıklama: Özellikle Hyper-V’de en sık kullanılan kavramları aşağıya açıklamalarıyla aktarmaya çalıştım. Ancak bu kavramların tamamı sadece Hyper-V’ye özgü değildir. Çoğu kavramlar sanallaştırma dünyasında kullanılan genel kavramlardır.

Mantıksal İşlemci Nedir: Sanallaştırma dünyasında işlemcinin çekirdeği mantıksal işlemciye denk gelir.  Örneğin 8 çekirdekli bir adet işlemciniz varsa bu 8 adet mantıksal işlemciye denk gelir ve eğer bir de CPU’da hyper-threading özelliği aktifse bu sayı 16 adet mantıksal işlemciye denk gelir.

VCPU(Sanal İşlemci): Hyper-V tarafındaysa 1 adet mantıksal işlemci bir adet VCPU’ya denk geliyor. Diyelim ki fizikselde her biri 8 çekirdekten oluşan 4 soket CPU bulunmakta. Bu durumda 8*4=32 yaptığı için sanal tarafta toplamda 32 adet işlemci ya da sanal adıyla VCPU gözükür. Bu yüzden Hyper-V’de işlemciyi fizikselde olduğu gibi işlemci ve core sayısı olarak değil sadece işlemci yani soket olarak atayabilirsin.

Parent Partition – Child Partition: Hyper-V mimarisinde fiziksel sunucu üzerinde bulunan ve hyper-v’ nin üzerinde kurulduğu işletim sistemidir. Bu Windows server 2008 ve ya 2012 olabilir. Hyper-V rolü aktif edildikten sonra artık sanal bir makine gibi çalışmaya başlıyor. Tüm sanal makinalar aslında bir nevi bu partition üzerinde oluşuyor. oluşturduğumuz sanal makinelerde child partition olarak adlandırılmaktadır.

Windows Hypervisor: Sanallaştırmanın temelini oluşturan hypervisor’ un Windows tarafındaki ismi. Yani Microsoft Hyper-V’ nin çekirdeğinin adıdır.

Partition: Windows Hypervisor üzerinde birbirinden izol şekilde çalışan tüm parçalara ve ya işletim sistemlerine partition denir. Hyper-V’ de temelde iki tip partition vardır. Bunlar; Parent Partition ve Child Partition’ dur.

Parent Partition: Bazı yerlerde root partition olarak da geçer. Fiziksel ortama kurulan Windows server 2008 ya da 2012 üzerindeki hyper-v rolü çalıştırıldıktan sonra fiziksel ortama kurulmuş Windows serverlar’ da artık bir nevi sanal sunucu durumuna girmiş oluyor. Bu sunucular da artık hypervisor üzerinde çalışmakta. Hatta biz suncuyu ilk çalıştırdığımızda devreye ilk Windows hypervisor girer ardından bu işletim sistemi çalışır. İşte bu sunucuya Parent Partition denir. Temel görevi child partitionların yaratılması ve yönetilmesinde aracılık yapmak ve ayrıca yine child’lardan gelen işlemci ve ram dışındaki donanım isteklerini ilgili donanımlara iletir.  Bu partition ayrıca şu isimlerle de anılır;

Parent Guest OS, Parent OS, Fiziksel İşletim Sistemi

Child Partition:

En sade haliyle anlatmak gerekirse; Bizim hyper-v içerisinde new diyerek oluşturduğumuz sanal makinalardır. Teorik olarak parent partitionlarla aynıdır ancak bu makinalar child partitonlar oluşturamazlar. Bunlar hypervisor üzerinde birbirinden bağımsız çalışan sanal makinalardır.

Virtualization Stack: Sanallaştırma mimarisinde sanallaştırma işlemlerinin tamamının yapıldığı ve yönetildiği katmandır. Sanallaştırma mimarisini donanım, parent partition, hypervisor, virtualization stack, child partition diye katmanlara ayrılır. Bu durumda yapılan tüm işlemler bu katmanların birinde gerçekleşmekte. Virtualization Stack katmanında da VM Worker Process (Sanal makine işlemleri), VM Services (Sanal makine servisleri), WMI Sağlayıcıları, Kullanıcı ara yüzleri, Yönetim servisleri, Emulated Devices gibi bize en yakın ve en fazla kullandığımız işlemlerin gerçekleştirildiği katmandır diyebilirz.

Child Machine: Virtualization mimarisinde child partition içerisinde yaratılan her biri bir diğerinden izole edilmiş halde olan bağımsız sanal donanımlardır. Biz gerçek hayatta nasılki işletim sistemi kurmak için hdd, işlemci, ram gibi donanımları bir araya getirip adına bilgisayar, kasa dediğimiz makineler oluşturuyorsak işte bunlar da sanal ortamdaki kasalardır diyebiliriz.

Guest OS: Child machine üzerine kurulan sanal işletim sistemlerine verilen isimdir. Bunun dışında Host OS kavramı da sık sık kullanılır ancak type 1 mimarisinde bu kavram kullanılmaz. Host OS kavramı Type 2 mimarili yapılardaki işletim sistemleri için kullanılır.

Virtual Service Provider: VCP, ve VSP olarak da adlandırılan bu servis sanal makinaların gerçek donanımlara erişmesi işini görür. Sadece parent partition üzerinde bulunur ve temel görevi child partitionlardan gelen donanım isteklerini donanımlara iletir.

VSC: Açılımı Virtual Service Client/Consumer’ dır. Sadece child partitionlarda bulunur ve temel görevi sanal işletim sistemlerinden gelen donanım isteklerini VCP’ ye iletmek ve gelen cevabı sanal işletim sistemine iletmektir.

VMBus: Parent partition üzerindeki VSC ve Child partition üzerindeki VCP’ lerin iletişimini sağlayan protokulun adıdır.