Hyper-V Üzerinde ki Sanal Makineleri Oluşturan Dosyalar ve Görevleri
Sanal makinelerimizin adı üstünde sanal olduklarını sadece biz biliyoruz. Ancak onlar sadece kendilerine ait oldukları bir donanım üzerinde çalıştıklarını düşünüyorlar. Bu nedenle sanal makinelerin öncelikle bir anakarta ihtiyacı vardır ki bu Intel 440BX dir. Sanal makinelerimiz simüle edilen bir anakart kullanmaktadırlar. Benzer şekilde bu anakart üzerinde bulunan bios, pci, isa, floppy ve ide, scsi controller gibi yazılımsal ve donanımsal parçalarda simüle edilmektedir.
Bu makalemde sizlere Hyper-V üzerinde çalışan sanal makinelerimizi oluşturan dosyaların neler olduğuna ve görevlerini anlatmaya çalışacağım. Ancak buna geçmeden önce sanal makinelerimizin dosyalarının nerede saklandığını genel hatlarıyla inceleyelim. Sanal makinelerimize ait dosyalar iki alanda tutulur. Varsayılan olarak her bir sanal makineye ait ayar dosyaları %programdata%\Microsoft\Windows\Hyper-V klasörünün altında tutulurken disk dosyaları ise varsayılan olarak %users%\Public\Documents\Hyper-V\Virtual Hard Disks klasörünün altında tutulur. Performans ve güvenlik amacıyla bu klasörlerin yerlerinin sistem diski yerine yedekli çalışan bir disk alanına kaydırılması önerilmektedir. Bu öneriler ışığında test sistemimi ilgili klasörleri sistem diski dışında ki D:\Hyper-V\Virtual Machines ve D:\Hyper-V\Virtual Hard Disks klasörleri olacak şekilde ayarladım. Sanal makinelerimizin üzerinde aldığımız snapshot diskleri de D:\Hyper-V\Virtual Hard Disks altında tutulacaktır (Bu özellik Windows Server 2008 R2 ile birlikte geldi). Tabi D sürücüsünde oluşturduğumuz Hyper-V klasörü üzerinde System hesabının ve Administrators grubunun tam erişim yetkisinin olması gerekmektedir. Bu yapılandırma işlemini Hyper-V Manager konsolunda Hyper-V Settings linki altından yapabiliriz. İlgili düzenlemeler yapıldıktan sonra karşımıza aşağıda ki ekran görüntüleri gelecektir.
Sanal makinelerimizde snapshot aldığımızda bu işlem nedeniyle oluşan ikinci disk (differencing disk olarak oluşturulur) sanal makinenin diski ile aynı yerde tutulurken diğer dosyalar (sanal makinenin snapshot alındığı anda ki donanım bilgilerini içeren xml dosyası ve sanal makinenin o anki belleğini içeren vsv dosyası) D:\Hyper-V\Virtual Machines\Snapshots klasöründe tutulmaktadır. Bu ayarı sanal makinelerimizin Settings bölümünde ayarlarında görebiliriz. Aşağıda ki ekran görüntüsü bu konuda açıklayıcı olacaktır.
Buraya kadar konuştuğumuz varsayılan yapı idi. Eğer oluşturacağımız sanal makineye ait her dosyanın ilgili sanal makinenin adı ile oluşturulmuş olan bir klasör içerisinde tutulmasını istersek sanal makinemizi oluştururken “Store the virtual machine in a different location” seçeneğini işaretleyip Ardından sanal makinemizin ve tüm dosyalarının tutulacağı klasörü de Location bölümüne girip Next diyerek devam etmeliyiz. Ekran görüntüsü aşağıda ki gibi olacaktır.
Yukarıda ki ekran görüntüsüne göre VFORCETMG sanal makinesinin dosyaları VFORCE.COM klasörü altında oluşturulacak olan VFORCETMG klasörü altında tutulacaktır. Sanal makinemizin bellek ve network ayarlarını yaptıktan sonra karşımıza gelen disk oluşturma bölümünde diskimiz için bir boyut belirledikten sonra Location bölümüne dokunmadan Next diyerek ilerleyelim. Ekran görüntüsü aşağıda ki gibidir.
Finish diyerek sanal makinemizi oluşturduğumuzda ortaya çıkan klasör yapısı aşağıda ki şekilde görülecektir.
Eğer sanal makinemiz üzerinde snapshot alırsak Virtual Machines klasörü ile aynı seviyede Snapshots isimli bir klasör oluşturularak ilgili dosyalar da bu klasörün içerisinde tutulacaktır. Böylece sanal makinemiz ile ilgili tüm dosyalar bir klasör yapısı içerisinde kalacaktır. Yaptığımız işlem aslında Hyper-V Manager konsolundan yapılan Export işlemi ile oluşturulan yapının benzeri olacaktır.
Anakartımız olduğuna göre birde bios olmalı. Hyper-V de ki sanal makinelerimizin Bios ayarlarına ilgili sanal makinemizin Settings bölümünden bakabiliriz. Bios da düzenleme yapabileceğimiz iki seçenek var. Bunlar açılışta Numlock tuşunun açık hale getirilmesi ve sanal makinemizin boot sırasında kullanacağı donanım sıralamasıdır. Sanal makinemizin bios nuda içeren ayarlar GUID.xml adlı dosyada saklanmaktadır. Aşağıda Hyper-V sunucumuz üzerinde ki sanal makinelerimizi oluşturan dosyalar ve görevlerine maddeler halinde bakalım.
- GUID.xml: Hyper-V üzerinde çalışan her sanal makinenin ayarları (Sanal makinenin Settings bölümünde yaptığımız ayarlar), sanal makine ilk oluşturulduğunda otomatik olarak belirlenen ve tek olan GUID (Global Uniqe ID) ile birlikte guid.xml dosyası içerisinde saklanır. Dosyayı internet explorer ya da notepad ile açıp görüntüleyebiliriz. Bu dosya içerisinde sanal makinenin anakartının seri numarası, işlemci sayısı, disk dosyasının yeri, bellek büyüklüğü, ağ kartı, mac adresi vb donanımsal bilgilerin yanı sıra başka ayarlarda saklanmaktadır. Bu dosya Hyper-V Settings bölümünde Virtual Machines başlığı altında belirtilen alanda tutulur. Sanal makinelerimize ait guid.xml dosyalarının ekran görüntüsü aşağıda ki gibi olacaktır.
- GUID.bin: Dosyamız Hyper-V Settings bölümünde Virtual Machines başlığı altında belirtilen alanda sanal makineye atanmış olan GUID ile oluşturulan klasörün içerisinde bulunur. Bu dosya sanal makinemizin çalıştığı anda kullandığı belleği içerir. Dolayısıyla sanal makine kapatıldığında silinir.
Ancak sanal makinemiz üzerinde snapshot var ise snapshot alındığı anda sanal makinemizin kullandığı belleği içeren kopyası sanal makinemiz ayarlarından görebileceğimiz Snapshot File Location altında sanal makineninkinden farklı bir GUID ile guid.bin dosyası içerisinde saklanır. Sanal makine kapatılsa dahi bu dosya silinmez. Dosya ancak snapshot silindiğinde silinecektir. - GUID.vsv: Bu dosya sanal makinemiz kayıt Save komutu ile kayıt edip kapattığımızda ya da snapshot aldığımızda kullanılan bir dosyadır. İçeriğinde ise sanal makinemizin o anki durumu hakkında bilgi içermektedir. Böylece sanal makinemizi Start komutu ile açtığımızda guid.bin ve guid.vsv dosyaları kullanılarak işlerimize kaldığımız yerden devam edebilmemiz sağlanır. Dosya sanal makine kapatıldığında silinir.
Eğer sanal makinemiz üzerinde snapshot var ise snapshot alındığı anda guid.vsv dosyasının o anki halini içeren kopyası sanal makinemiz ayarlarından görebileceğimiz Snapshot File Location altında sanal makineninkinden farklı ve tek olan bir GUID ile guid.vsv dosyasında saklanır. Bu dosya içerisinde sanal makinemizin snapshot alındığı anda ki donanımlarının ve ayarlarının neler olduğu bulunmaktadır. Dolayısıyla sanal makine kapatılsa dahi bu dosya silinmez. Dosya ancak snapshot silindiğinde silinecektir. - SanalMakineAdı.vhd: Bu dosya sanal makinemizin kullandığı disktir. Eğer sanal makinemizin diski fixed disk haline getirilmediyse Windows Explorer ile baktığımızda burada göreceğimiz dosya boyutu yanıltıcı olacaktır. Sanal makinelerimizin diskleri Hyper-V Settings bölümünde Virtual Harddisks başlığı altında belirtilen alanda saklanmaktadır. Sanal diskler en fazla 2 TB kapasiteye sahip olabilir. Sanal makinelerimizin kullandığı üç farklı disk türü vardır. Bunlar;
- Fixed Disk: Sanal makinemizi diski daha sonra ekle diyerek oluşturduktan sonra özelliklerinden yeni disk ekle seçeneği ile sanal makinemize ekleyebiliriz. Bu disk tipinde başta belirlediğimiz disk boyutunun tamamı oluşturulur. Bu tip diskler dinamik disklere oranla çok daha performanslıdırlar. Eğer başta atanan boyut büyük gelirse Dynamic Disk e çevrilip çeşitli araçlar kullanılarak diskin ilk boyutu küçültülebilir.
- Dynamic Disk: Sanal makinemizi oluştururken disk de oluşturduysak otomatik olarak Dynamic Disc formatında olacaktır. Sanal makinenin diski için kullanılmak istenen alandan çok daha az bir alan kaplar ve belirlenen boyuta ulaşana kadar büyür. Dilenirse daha sonra fixed disk şekline çevrilebilir. Performansı fixed disk türüne göre daha düşüktür. Ayrıca disk dosyası veri yazıldıkça büyüyeceğinden fiziksel diskin fragmante olmasına sebep olur ve bu da performansı olumsuz etkiler. Dinamik disk kullanımında ki başka bir problem de yetersiz disk alanı sorunudur. Bu tarz bir sorun ile karşılaşmamak için sanal makinelerin disklerinin barındırıldığı bölüm üzerinde boş disk alanı mutlaka kontrol edilmelidir. Aslında Microsoft bunu da düşünmüş ve belli aralıklarla disk üzerinde ki boş alan taranır. Eğer boş alan 2 Gb ın altına düşmüş ise Event Log a Warning mesajları düşmeye başlar. Eğer boş alan 200 Mb nin altına düştüyse o disk alanını kullanan sanal makineleriniz veri kaybı yaşamamanız için sistem tarafından otomatik olarak durdurulur ve “Paused Critical” olarak etiketlenirler. Dinamik diskler dilendiğinde fixed disk e çevrilebilir.
- Differencing Disk: Bu disk tipini örnek ile açıklamak en doğrusu olacak. Örneğin kendinize içerisinde işletim sistemi ve uygulamaların hazır olduğu bir sanal disk oluşturdunuz. Ardından bu sanal disk üzerinden yeni makineler oluşturmak istiyorsunuz. Burada devreye Differencing Disk giriyor. Yeni sanal makinenizi oluşturuyorsunuz ve disk olarak Differencing Disk ekliyorsunuz ve bu diskin sahibi olarak da önceden hazırlamış olduğumuz diski gösteriyoruz (Bu işlemden önce esas diskimizin başına bir aksilik gelmemesi için diskimizi Read-Only konumuna getirmemiz faydalı olacaktır). İstediğimiz kurulumları yaptıktan sonra dilersek Differencing diski sahibi olan disk ile birşelştirebileceğimiz gibi (Merge) bu diskten yeni bir vhd dosyası da üretebiliriz. Differencing diskler de dynamic diskler gibi diskte az alan kaplarlar ve veri yazıldıkça büyürler ki bu depolama alanında ki boş yer miktarının kontrol edilmesini gerektirmektedir.
- Physical Disk (Passthrough Disk): Sanal makinemizin sanallaştırma sunucumuz üzerinde ki fiziksel diski ya da SAN gibi bir depolama birimi üzerinde ki LUN u kullanmasını sağlayabiliriz. Bu işlemin avantajları yanında dezavantajları da vardır. Avantajlarından başlayacak olursak; sanal disklerimizde bulunan 2TB lik sınır burada ortadan kalkmaktadır. Diskin boyut sınırı sadece sanal makinemiz üzerine kuracağımız işletim sisteminin sınırlarına bağlı olacaktır. Ayrıca fiziksel diskler diğer tüm sanal disk türlerinden çok daha performanslıdırlar. En büyük dejavantajlarından biri ise snapshot imkanımızın ortadan kalkmasıdır. Dikkat edilmesi gereken önemli noktalardan biriside sanal makinenize atadığınız fiziksel diskinizin sanallaştırma sunucunuz üzerinde “offline” modunda bulunmasıdır. Eğer disk sanallaştırma sunucusu üzerinde “online” durumuna getirilirse bu durum o diski kullanan sanal makine de veri kayıpları yaşanmasına neden olabilir.
- SanalMakineAdı_GUID.avhd: Bu dosya ise sanal makinemiz üzerinde snapshot işlemini gerçekleştirdiğimizde makineye bağlı olan herbir disk için differencing disk tipinde ayrı birer .avhd dosyası oluşturulur. Bu dosya oluşturulduktan sonra esas disk dosyamız olan SanalMakineAdı.vhd dosyası Read-Only haline getirilir. Dosyanın adında ki GUID ile sanal makinemizin GUID i aynı olmayacaktır. Dosya sanal makinemizin gerçek disk dosyası olan SanalMakineAdı_GUID.vhd ile birlikte aynı klasör içerisinde tutulur (Windows Server 2008 Hyper-V üzerinde ise bu dosya Snapshot File Location içerisinde tutuluyordu). Snapshot silinmek istendiğinde SanalMakineAdı.vhd tekrar yazılabilir hale getirilir ve SanalMakineAdı_GUID.avhd dosyasının içeriği SanalMakineAdı.vhd dosyasına eklenerek birleştirilir ardından da silinir.
Aslında sanal makinelerimizin dosya isimlerinin GUID.xml formatında oluşturulması Windows gezgini ile sanal makinelerimize ve dosyalarına baktığımızda aşağıda ki şekilde görüntü oluşması sebebiyle makinelerin birbirinden ayırt edilmesi neredeyse imkânsız hale geliyor.
Bunu çözmek ve sanal makinelerimizi powershell kullanarak yönetmek için http://pshyperv.codeplex.com/releases/view/38769 adresinden PsHyperV_Install.ZIP modülünü indirip kurmamız yeterli olacaktır. İndirdiğimiz dosyayı açalım ve içerisinde ki dosyaları C:\Windows\System32\WindowsPowerShell\v1.0\Modules klasörünün altında oluşturacağımız HyperV klasörünün içerisine kopyalayalım. Taskbar da bulunan PowerShell ikonuna sağ tıklayalım ve Import System Modules seçeneğine tıklayayarak PowerShell i çalıştıralım. Karşımıza çıkan uyarıya Yes diyerek devam edelim. Bu işlem sayesinde PowerShell açılırken tüm sistem modülleri ve bizim Hyper-V modülümüzde otomatik olarak yüklenmiş olacaktır. Bu modül ile birlikte kullanabileceğimiz komutlar için de http://pshyperv.codeplex.com/releases/view/38769#DownloadId=101935 adresinde ki PSHyperv-R2 belgesinden faydalanbilirsiniz.
Get-VM | format-table –property name, elementname
Yukarıda ki komutu yazdığımızda çıktısı aşağıda ki gibi olacaktır. Böylece hangi GUID in hangi sanal makineye ait olduğunu rahatlıkla görebiliriz.
Bu makalemde sizlere Hyper-V üzerinde çalışan sanal makinelerimizi oluşturan dosyaların neler olduğuna ve görevlerini anlatmaya çalıştım.
Faydalı olması dileğimle…
M. Hakan CAN
Hakan hocam ellerine sağlık çok değerli bir makale olmuş.