Hyper-V Sanal Disk Türleri

20.09.2015
6

Bir Hyper-V sanal makinesinin anatomisi ele alındığında üzerinde konuşulması gereken önemli parçalardan biri de virtual hard disk yani sanal disklerdir. Aslında Hyper-V’yi bir kenara bırakıp konuyu tüm sunucu sanallaştırma platformları açısından ele aldığımızda şöyle bir tanım yapmak mümkün: Sanal diskler, platformlar üzerindeki sanal makinelere depolama alanı sağlayan kapsüllenmiş (encapsulation) özel dosya formatlarıdır ve tıpkı fiziksel diskler gibi bir stracture’a, partition yapısına ve dosya sistemine sahiptirler. Hyper-V dünyasında sanal diskleri sınıflarken format ve tür (tip) olmak üzere iki açıdan ele alıyoruz. Bu yüzden sanal disk türlerine geçmeden önce sanal disk formatlarını anlamak gerekiyor.

Hyper-V Sanal Disk Formatları

Kısaca sanal makineler tarafından depolama alanı olarak kullanılan ve gerçek fiziksel diskler üzerinde konumlanmış dosya formatlarıdır. Sanal disk türüne göre değişmekle birlikte header, block allocation table, data blocks, footer gibi yapısal bölümlerin birleşiminden oluşurlar.

VHD Formatı

Geçmişte Windows Server 2008 Hyper-V ve Windows Server 2008 R2 Hyper-V’de tek bir sanal disk formatı yer aldı: VHD. Açılımı Virtual Hard Disk olan bu sanal disk formatı 2003 yılında Connectix şirketi tarafından geliştirildi ve daha sonra Microsoft’un satın almasıyla birlikte Microsoft Virtual PC, Virtual Server ve daha sonra ise Hyper-V platformlarında çalışan sanal makineler için kullanıldı. Sadece sanallaştırma için değil çeşitli Windows ve Windows Server sürümlerinde de VHD’lerle ilgili kullanımlar görebilirsiniz.

VHD formatlı sanal diskleri .vhd uzantılarından kolayca tanımak mümkün. Hala kullanımda olsa da özellikle power failure kaynaklı beklenmedik kapanma durumlarında corruption ihtimali olan, sadece NTFS dosya sistemi üzerinde host edilebilen ve mesela maksimum 2TB’a kadar kapasite sağlayabilen VHD formatı büyük oranda geride kaldığı için fazla kurcalamadan devam ediyoruz…

VHDX Formatı

Windows Server 2012’yle birlikte Hyper-V platformuna yeni bir sanal disk formatı dahil oldu: VHDX. VHD formatının yeni sürümü de diyebileceğimiz VHDX’ler günümüz zorlu iş yükleri için geliştirildiler ve VHD’lere kıyasla en belirgin özelliği daha fazla depolama alanı sağlayabilmeleri ki bir VHDX 64TB’a kadar genişleyebiliyor. Bu formatı .vhdx uzantısından tanıyabilirsiniz. Sahip olduğu log’lama mekanizması sayesinde özellikle power failure gibi beklenmedik kapanma durumlarında yaşanabilen bozulmalara karşı daha dayanıklıdır, hata durumlarında kendi structure’ını düzeltebilme yeteneğine sahiptir, gerektiğinde cutom metadata tutabilir, daha büyük block size ve 4KB logical sector destekler… Tüm bunların yanında ve özellikle dinamik olarak genişleyen sanal disk türü dikkate alındığında VHD’lere göre daha performanslıdır çünkü VHD’nin yapısal tasarımı (structural alignments) nedeniyle Dynamic ve Differencing türlerde yaşanan bazı performans kayıpları VHDX formatında optimize edilmiş ve önemli oranda ortadan kaldırılmıştır. VHD formatının evrim geçirmiş hali olarak da tanımlayabileceğimiz VHDX formatı Windows Server 2012 Hyper-V’den itibaren kullanılabilir ve varsayılan sanal disk formatı olarak gelir.

sanal-disk-vhd-vhdx-format

Eğer isterseniz aynı platform üzerinde hem VHD hem de VHDX formatlı sanal diskler oluşturup sanal makinelere bağlayabilirsiniz. Hatta bu farklı iki formatı aynı sanal makine üzerinde bile kullanmak mümkün ancak eğer Hyper-V platformunuz VHDX formatını destekliyorsa sanal makineleriniz için mutlaka VHDX formatını tercih edin.

Hyper-V Sanal Disk Türleri

VHD ve VHDX formatları kendi içlerinde Sabit (fixed), Dinamik (dynamic) ve Fark (differencing) olmak üzere üç sanal disk türü barındırır. Her bir sanal disk türü kendine has karakteristik özelliklere sahiptir ve çeşitli amaçlar için kullanılırlar.

sanal-disk-vhd-vhdx-turler

Sabit Boyutlu Sanal Diskler (Fixed Size)

Fixed Size yani sabit boyutlu disk türünde oluşturulan sanal diskler, henüz içlerinde herhangi bir veri olmasa dahi belirtilen kapasiteyi en başta fiziksel depolama alanı üzerinde rezerve ederler. Bu türdeki sanal diskler içerisine yazılacak verilerin fiziksel disk üzerindeki hangi sektör aralığında yer alacağı en başından bellidir ve bu sayede diğer türlere göre daha performanslı bir depolama erişimi sunarlar. Her ne kadar VHDX formatı ile birlikte Dynamically Expanding diskler aradaki farkı önemli oranda kapanmış olsa da Fixed Size sanal diskler hala Hyper-V platformu üzerinde önerilen en performanslı sanal disk türüdür.

fixed-size-vhdx

Henüz içerisinde herhangi bir veri yer almayan örneğin 4TB kapasiteli bir Fixed Size VHDX oluşturmak istediğinizde .vhdx dosyasının konumlanacağı fiziksel disk katmanında en az 4TB boş alana ihtiyacınız olacaktır. Fixed Size türde sanal disk oluşturma işlemi sırasında fiziksel sektörler rezerve edilir ve işlem sonunda fiziksel disk üzerinde 4TB kapasiteli bir VHDX dosyası oluşur.

  • İlk oluşturulma işlemi diğer türlere daha uzun sürer.
  • Yoğun disk aktiviteleri için önerilir çünkü diğer sanal disk türlerine göre daha performanslıdır.
  • Fixed size vhdx’lere veri yazıldıkça veya silindikçe VHDX dosya boyutu değişmez.
  • Bana göre en büyük dezavantajı fiziksel depolama alanı kullanımını verimsizleştirmesidir çünkü doğası gereği aslında sanal makine tarafından henüz kullanılmayan depolama alanını da sanal makine için rezerve eder. Diğer taraftan bakıldığında ise kontrollüdür çünkü sanal disklerin plan dışı genişlemesi yüzünden fiziksel depolama alanının taşması gibi takip gerektiren durumları ortadan kaldırır.
  • Özellikle platform seviyesinde alınan yedek boyutunu ciddi anlamda şişirip yedekleme yatırımınızı gözden geçirmenize neden olabilir :) Mesela başlangıçta 150GB kapasiteye ihtiyaç duyan ve 6 ay içerisinde 300GB’a genişleyeceği tahmin edilen bir fixed size vhdx’i en başta geniş geniş 500GB olarak oluşturursanız, host level yedek alırken uzun süre boş yere yedeklemiş olursunuz. Aslında içerisinde veri olmayan bu bölüm hem yedekleme alanını tüketir hem de yedekleme süresini uzatır. Bu yüzden eğer fixed size vhdx’ler kullanıyorsanız başlangıç kapasitelerini düşük tutun ancak sanal işletim sistemi içerisinden de disk dolma ihtimaline karşı volume size’ları mutlaka takip edin. Veya alternatif olarak sanal işletim sistemi içerisinden yedek almayı değerlendirebilirsiniz ki bu yöntem genellikle uygulama yedekleme için kullanılır.
  • Bir fixed size vhdx’i sanal makine çalışır durumdayken kolayca genişletebilirsiniz. Bu sırada fiziksel diskte yeteri kadar boş alan olması gerektiğini unutmayın. Aksi durumda genişleyemez.
  • Yapıya göre değişmekle birlikte fixed size vhdx’ler genellikle yüksek boyutlu dosyalardır ve çoğaltırken, farklı bir alana taşırken veya örneğin Hyper-V Replica ile DRC’ye replike ederken biraz can sıkıcı olabilirler çünkü aslında boş olan ama yer kaplayan alanlar paçanızı bırakmaz.
  • Pek dikkat edilmez ama aklınızda bulunsun: Eğer fixed size vhdx ile çalışan bir sanal makine üzerinde Checkpoint alırsanız o noktada bir zincir oluşumu başlar ve ucuna aslında Dynamically Expanding sanal disk türüne çok benzeyen ama uzantısı AVHDX olan bir  Differencing disk bağlanır. Checkpoint sanal makine üzerinde durduğu sürece hem zincir yapısındaki ufak gecikme sebebiyle, hem de Dynamically Expanding sanal disk türünün Fixed Size türe oranla biraz daha yavaş kalması nedeniyle performans kayıpları yaşanabilir.
  • Fixed size sanal diskler, sadece VHD formatını kullanabilen belirli Hyper-V sürümlerine kadar Exchange Server gibi, SQL Server gibi birçok önemli iş yükü için resmi olarak desteklenen tek sanal disk türüydü. Windows Server 2012 Hyper-V ile birlikte bu durum ortadan kalkmış olsa da aklınızın bir köşesinde bulunsun, iş yükünün desteklediği veya önerdiği disk türlerine göz atmak her zaman iyi bir fikirdir.

Dinamik Olarak Genişleyen Sanal Diskler (Dynamically Expanding)

Dynamically Expanding yani dinamik olarak genişleyen sanal disk türü, oluşturulma anında belirtilen kapasiteyi rezerve etmez ve zamanla içerisine veri yazıldıkça ulaşabileceği maksimum boyuta kadar genişleyebilir. Genellikle yazma işlemi rastgele zamanlarda gerçekleşeceği için verilerin fiziksel disk üzerinde yer alacağı alanlar belirsiz ve dağınıktır. Her ne kadar VHDX formatıyla birlikte bu etki önemli oranda ortadan kaldırılmış olsa da hala yapısı gereği Fixed Size VHDX’ten geride kalır; ama yine de yeterince performanslıdır ve birçok iş yükü tarafından resmi olarak desteklenir.

dynamic-vhdx

Henüz içerisinde herhangi bir veri yer almayan 4TB kapasiteli bir Dynamically Expanding VHDX oluşturduğunuzda .vhdx dosyasının boyutu yaklaşık 3-4mb civarındadır ve bu aşamada fiziksel disk kapasitesinin teknik olarak bir önemi yoktur. Ancak bu vhdx dosyası içerisine veri yazıldıkça büyür ve başta belirlediğiniz örneğin 4TB’a kadar genişleyebilir; bu noktada da genişleyebileceği fiziksel alana ihtiyaç duyar.

  • Oluşturulma süresi oldukça kısadır. 1-2 saniye diyelim.
  • Genellikle fazla yoğun olmayan disk aktiviteleri için önerilir ve yeni sürümlerde canlı ortamda kullanımı da desteklenir.
  • Dynamically Expanding vhdx dosyaları veri yazıldıkça genişler ancak veri silindikçe daralmaz. Bu yüzden içerisinden önemli ölçüde veri silinmiş Dynamically Expanding vhdx’leri daraltmak için Optimize-VHD işlemi uygulamak gerekir. Mesela maksimum size’ı 500GB olan bir Dynamically Expanding sanal disk içerisinde 200GB veri yer alıyor ve vhdx dosyasının boyutu da yaklaşık 200GB. Sanal disk içerisine 100GB daha veri yazdığınızda vhdx dosyasının boyutu yaklaşık 300GB’a ulaşır. Ardından 100GB veri sildiğinizde sanal işletim sistemi içerisinden bakıldığında ilgili volume için kullanılan alan 200GB göründüğü halde fiziksel disk üzerindeki vhdx dosyasının boyutu 200GB’a gerilemez ve 300GB yer kaplamaya devam eder. Çözüm belirli zamanlarda Optimize-VHD uygulamak.
  • Fiziksel depolama alanını daha verimli kullanmanıza yardımcı olur ancak plansız büyüdükleri taktirde fiziksel depolama alanını taşırma ve içerisinde çalışan tüm sanal makineleri bir anda durdurma ihtimalleri vardır. Bu yüzden Dynamically Expanding sanal disklerin maksimum kapasiteleri iyi belirlenmeli ve fiziksel depolama katmanı ani genişlemelere karşı mutlaka izlenmelidir. Mesela bu işi takip etmek için Get-HypervReport.ps1’in Storage Overcommitment özelliğini kullanabilirsiniz.
  • Bu türdeki bir sanal diskin VHDX dosya boyutu Fixed Size VHDX’e göre genelde daha düşük olur ve host level yedekleme sırasında daha az yer kaplar ve büyük ihtimalle daha kısa sürede yedeklenir.
  • Bir Dynamically Expanding vhdx’i sanal makine çalışır durumdayken kolayca genişletebilirsiniz.
  • Eğer dynamically expanding vhdx ile çalışan bir sanal makine üzerinde Checkpoint alırsanız o noktada bir zincir oluşumu başlar ve ucuna aslında Dynamically Expanding sanal disk türüne çok benzeyen ama uzantısı AVHDX olan bir  Differencing disk bağlanır. Checkpoint sanal makine üzerinde durduğu sürece performans açısından yaşanabilecek en önemli olumsuzluk zincir yapısından kaynaklı gecikme olabilir.
  • Windows Server 2012 Hyper-V ve sonraki sürümlerde önemli iş yüklerinin neredeyse tamamı dynamically expanding vhdx’ler üzerinde resmi olarak desteklenir.

Fark Tutan Sanal Diskler (Differencing)

Differencing yani fark tutan sanal diskler, çeşitli senaryolarda sadece fark tutuma amacıyla kullanılan bir sanal disk türüdür. Parent-Child ilişkisiyle çalışırlar yani bu sanal disk türü çalışabilmek için mutlaka bir ana sanal diske (parent vhdx) ihtiyaç duyar. Fiziksel diske yazılma karakteristiği hemen hemen Dynamically Expanding sanal diskler ile aynıdır. Bu sanal disk türünü VDI senaryolarında sıkça görebilirsiniz.

differencing-vhdx

Mesela içerisinde işletim sistemi ve uygulamalar yüklü bir dynamically expanding vhdx oluşturdunuz. Bunu gold image olarak düşünün ve aynı imajı kullanmasını istediğiniz 5 farklı kişi var. VHDX dosyasını 5 ayrı noktaya kopyalayıp 5 ayrı sanal makineye bağlamak seçeneklerden biri olabilir ama tek parent vhdx’e birden fazla differencing vhdx bağladıktan sonra bunları sanal makinelere atamak da oldukça iyi bir seçenektir. Her bir sanal makine kullanıcısı tarafından modifiye edilen veri, o sanal makineye bağlı differencing vhdx içerisinde tutulur ve böylece arka plandaki parent vhdx içeriği her zaman korunmuş olur. Ayrıca 5 adet VHDX kopyaladığınızda ortaya çıkacak depolama alanı tüketimini da ortadan kaldırmış olursunuz.

  • Çalışabilmek için bir parent vhdx’e ihtiyaç duyar.
  • Bir parent vhdx’e birden fazla differencing vhdx bağlanabilir.
  • Oluşturulma süresi oldukça kısadır.
  • Genellikle fazla yoğun olmayan disk aktivitelerinde ve VDI senaryolarında kullanılır.
  • Birçok açıdan Dynamically Expanding karakteristiği taşır.
  • Yoğun disk aktivitesi gerçekleştiren sistemler ve kritik iş yükleri için önerilmez.

Tüm bunlara ek olarak şunu sakın unutmayın: Hyper-V sanal disk türlerini tek başına harikalar yaratamaz! Sanal disklerin konumlandığı fiziksel depolama katmanının da doğru kurgulanmış olması performanslı sanal disk aktiviteleri açısından oldukça önemlidir.

Yorumlar (6)

  1. Cem KIZIL

    Ellerine sağlık hocam harika bir makale olmuş.

  2. Ömer

    Ellerinize sağlık, çok güzel anlatmışınız.

  3. ibrahim bayraktar

    Hocam merhaba,
    Bare Metal Server üzerinde, Server 2012 R2 Std. işletim sistemi kurulu. Bu sistem üzerinde yer alan ve total size 3 TB. içinde de 1,8 TB data bulunan D Partition’ı yeni yaratmış olduğum Hyper-V makinesine ek sanal disk olarak bağlamak istiyorum.
    Sorum şudur ki; D içinde yer alan 1,8 TB’lık data kaybolmadan ve yüksek performans alma hedefiyle bu Partition’ı nasıl yeni Hyper-V makineme bağlayabilirim?
    Şimdiden çok teşekkür eder, başarılarınızın devamını dilerim.
    İbrahim Bayraktar

  4. Serhat AKINCI

    ibrahim bayraktar – Pass-through disk olarak bağlayabilirsin. Pass-through diskler temelde VHD’ler gibi olmadığı için yukarıdaki yazıda yer almıyor.

    Bir Hyper-V Host üzerindeki fiziksel diski, içerisinde veri (partition/data) olsa dahi, doğrudan ve içerisindeki veriye zarar vermeden bir VM’e bağlamak mümkün. Hyper-V terminolojisinde buna pass-through disk diyoruz. Uygulama adımları basitçe aşağıdaki gibi.

    1) Öncelikle ilgili fiziksel disk içerisindeki partition’lara access olmadığından emin ol. (açık dosyalar, o sürücüde çalışan uygulamalar olmasın)
    2) Host üzerinde ilgili diski “offline” konuma çek. (diskmgmt.msc’den yapabilirsin)
    2) VM’i kapat, yeni bir “hard disk” ekle ve bir VHD göstermek yerine hemen alt bölümdeki “physical hard disk” seçeneği ile az önce offline’a çekilen diski göster. (Host üzerindeki offline diskler burada listelenir)
    3) VM’i başlat, bu sefer Guest OS içinde yine diskmgmt.msc ile diski “online” konuma çek. Ardından partition’lar VM içerisinde erişilebilir olur. (Eğer sürücü harfi çakışması olur ise manuel olarak sürücü harfi atayabilirsin)

    Not: Fiziksel disk seviyesinde uygulanan bir özellik olduğu için aynı fiziksel disk içindeki D: E: F: gibi tüm partition’lar VM’e bağlanmış olur. Bu yüzden mesela Host OS (C:) ve data (D:) sürücüleri aynı fiziksel disk üzerinde ise, sadece D: sürücüsünü bu şekilde aktarma şansın yok. Bu durumda D: içeriğini bir VHDX’e kopyalayarak bağlamak en mantıklısı olacaktır.

    Ayrıca unutma:
    – Pass-through diskler Host üzerinde sabit olduğu için bağlı olan VM’in de mobility’sini etkiler; birçok durumda VM’i LM/QM gibi aktarım teknolojileriyle farklı Host’lara taşıyamazsın.
    – Başlamadan önce mümkünse yedek al.

  5. Şahin

    Hocam Optimize-VHD yi nasıl uygularız bu sorunu ben çok yaşıyorum veri atıyorum vhd diski büyüyor ama siliyorum düşmüyor buda fizikselde çok yer kaplamasına neden oluyor.

  6. numan bil

    Elinize sağlık, anlatımınız çok başarılı.

Yorum Ekle

* Gerekli

* Gerekli

* Tercihen