«

»

Jan 21

Hyper-V Ortamında Differencing Disk Kullanarak Şablon Sanal Makineden Yeni Sanal Makine Oluşturulması

Merhabalar;

Hyper-V ortamında kullanılacak sanal makinelerin işletim sistemlerinin her seferinde yeniden kurulması ve güncellemelerinin yapılması zaman kaybettirici olacaktır. Bu problemin üstesinden gelebilmek için çeşitli yöntemler mevcut (WDS, SCCM ya da SCVMM gibi). Bu makalemde sizlere önceden işletim sistemi kurulumu ve güncellemeleri yapılarak hazırlanan şablon sanal makinenin diskini ve sanal disk tipleri içerisinden Differencing Disk tipini kullanarak yeni sanal makineler oluşturmayı anlatmaya çalışacağım. Yapılacak işlemi kısaca özetlemek gerekirse;

  • Temel özelliklere sahip yeni bir sanal makine oluşturuyoruz

o    256 Mb bellek

o    1 sanal işlemci

o    20 Gb Dynamic tipinde disk (Kurulacak işletim sistemine göre değişiklik gösterebilir.)

o    External Network switch ine bağlı olacak şekilde ayarlanmış olan Network Adapter

  • Bu sanal makineye belirlediğimiz işletim sistemini kuruyor ve gerekli tüm güncellemelerini yapıyoruz. Dilersek hazır olmasını istediğimiz uygulamaları (Office gibi) da kurabiliriz.
  • Şablon sanal makineyi kapatıp yeni oluşturduğumuz sanal makinemize bu diski ana disk olarak kullanmasını ve yapılacak tüm değişikliklerin yeni bir sanal disk dosyasına yazılmasını sağlıyoruz.
  • Gerekli tüm işlemleri tamamladığımızda ana disk ile değişikliklerin tutulduğu diski yeni bir sanal disk ismi kullanarak birleştiriyor ve sanal makinemize bu yeni oluşturulan disk dosyasını bağlıyoruz.
  • Böylece sıfırdan kurulum ve güncelleme işlemleri ile uğraşmadan çok daha hızlı bir şekilde yeni sanal makine oluşturma işlemini tamamlamış oluyoruz.

Yapılacak işlemleri kısaca özetlediğimize göre artık işin pratik kısmına geçebiliriz.

Öncelikle şablon olarak kullanmak istediğimiz işletim sistemi için yeni bir sanal makine oluşturalım. Bu işlemi Hyper-V Manager konsolunda Actions bölümünde bulunan New linkine tıkladığımızda açılan Virtual Machine seçeneğini seçerek yapabiliriz. Oluşturma sırasında sanal makinemizin şablon olarak kullanılacağı düşünülerek isimlendirmesinin buna göre yapılması uygun olacaktır. Windows Server 2008 R2 işletim sistemi kullanılması sebebiyle 2008R2Template ismini kullandım (Hatta bu isimlendirme de Standard, Enterprise gibi işletim sistemi sürümünüde belirtmek faydalı olacaktır).

NOT: Sanal makinemizin disk dosyasının ismi aşağıda ki ayarlar bölümü ile ilgili ekran görüntüsünde de görüleceği üzere 2008R2Template_C.vhd şeklindedir.

NOT: Sanal makinemizin donanım özellikleri aşağıda ki gibidir.

Sanal makinemiz üzerine işletim sistemi kurulumunu ve güncellemelerini tamamladıktan sonra sıra geldi benzersiz (unique) hale getirmeye. Bu işlemin amacı şablon sanal makine ile diskini kullanarak oluşturacağımız yeni sanal makinelerin aynı SID (security identifier) değerine sahip olmasını engellemektir. Aynı SID ye sahip olan işletim sistemleri etki alanı ortamında çeşitli sıkıntılara sebep olabiliyorlar.

NOT: SID değerine kullanıcı, grup ve bilgisayarlar sahip olabilir. Sistemin iç işleyişinde bu nesnelerin isimleri yerine sahip oldukları SID numaraları kullanılır. Dolayısıyla bu değer onların kimlikleridir ve tekil olmak zorundadır.

NOT: Hazırlanan şablonun etki alanına dahil edilmesine gerek yoktur. Çünkü sysprep işlemi sırasında bu kontrol edilmekte ve eğer sistem etki alanına dahil ise çıkartılmaktadır.

Windows Server 2003, Windows Server 2003 R2 ve Windows XP işletim sistemleri için Sysinternals firmasının NewSid uygulamasını kullanarak SID değeri değiştirilebilmekte idi ancak Windows Server 2008 R2 ya da Windows 7 işletim sistemleri için uygulamanın desteği bulunmamakta ve denendiğinde de çeşitli sıkıntılara neden olabilmekte. Dolayısıyla başka bir yöntem kullanmalıyız. Bu yöntem WDS (Windows Deployment Services) ya da System Center Configuration Manager uygulamaları ile ağ üzerinden işletim sistemi dağıtanların oldukça yakından tanıdığı ve işletim sistemi ile birlikte gelen Sysprep (System Preparation) uygulamasını kullanarak işletim sisteminin genelleştirilmesidir. Bu işlem sırasında işletim sistemi üzerinde yapılan düzenlemelerin bazıları aşağıda ki gibidir.

  • Kullanıcı ve Bilgisayar bazlı spesifik datalar temizlenir.
  • Registry üzerinde düzenlemeler yapılır.
  • Lisans bilgileri sıfırlanır.

Bu işlemi gerçekleştirmek için şablon olarak hazırladığımız Windows Server 2008 R2 sanal makinemizde Startà Search bölümüne c:\Windows\system32\sysprep\sysprep.exe yazıp Enter a basarak Sysprep uygulamamızı çalıştıralım. Karşımıza aşağıda ki ekran gelecektir.

System Preparation Tool ekranında Generalize seçeneğini işaretleyip artık bu işletim sistemi üzerinde herhangi bir değişiklik yapmayacağımızdan Shutdown Options bölümünü Shutdown olarak düzenleyip OK diyerek işlemi başlatalım. İşlem tamamlandıktan sonra sanal makine kapanacaktır.

Sanal makinemiz kapandıktan sonra disk dosyasını kullanarak yeni bir sanal makine oluşturma işlemine başlayabiliriz. Ancak öncelikle şablon makinemizin disk dosyasını korumaya almamız gerekiyor. Bu amaçla şablon sanal makinemizin klasöründe bulunan 2008R2Template_C.vhd sanal disk dosyasına sağ tıklayıp özelliklerini açalım. Karşımıza çıkan dosya özellikleri bölümünde dosyayı Read-only olarak belirleyerek yazmaya karşı korumaya alalım. İlgili ekran görüntüsü aşağıdadır.

NOT: Hyper-V sunucunuzun ayarlarına göre vhd dosyanın yeri değişiklik gösterebilir.

NOT: Vhd dosyası Read-only olarak belirli iken sanal makine açılmak istenirse dosyaya yazılamayacağından sanal makinenin başlatılamadığına dair hata alınacaktır. Sanal makineyi tekrar çalıştırabilmek için vhd dosyasının özelliklerinde Read-only seçeneğinde ki işareti kaldırmak yeterli olacaktır.

Şablon olarak kullanacağımız sanal diskin ayarlarını tamamladıktan sonra artık bu diski kullanarak yeni sanal makinemizi oluşturabiliriz.

Hyper-V Manager konsolumuzda Actions bölümünde bulunan New linkine tıkladığımızda açılan menüde Virtual Machine seçeneğini seçelim. Karşımıza yeni sanal makinemizi oluşturacağımız sihirbaz gelecektir. İlk ekranı Next diyerek geçtikten sonra karşımıza sanal makinemizin adını ve dosyalarının tutulacağı yeri belirlediğimiz ekran gelecektir. Yeni sanal makinemizin adı MHCLABSSQL olduğundan isimlendirme ve disk üzerinde ki yerini buna göre ayarlıyoruz. Ekran görüntüsü aşağıda ki gibidir.

Düzenlemelerimizi yaptıktan sonra Next diyerek ilerleyelim. Karşımıza sanal makinemizin bellek boyutunu ayarlayacağımız ekran gelecektir. Burayı ihtiyacımız ve sunucumuzun kapasitesini göz önünde bulundurarak belirledikten sonra (Bu senaryo için 512 Mb olarak belirlendi) Next diyerek ilerleyelim. Karşımıza sanal makinemizin ağ bağlantısını belirleyeceğimiz ekran gelecektir. Bu bölümü de ihtiyacımız doğrultusunda belirledikten sonra (external network olarak belirlendi) Next diyerek ilerleyelim. Karşımıza sanal makinemize disk bağlayacağımız ekran gelecektir. Differencing disk tipini kullanmak istediğimizden bu bölümü “Attach a virtual disk later” seçeneğini seçerek geçmeliyiz. Ekran görüntüsü aşağıda ki gibidir.

Next diyerek ilerlediğimizde oluşturulacak sanal makinemizin özelliklerini görebileceğimiz özet ekranı karşımıza gelecektir. Ekran görüntüsü aşağıda ki gibi olacaktır.

Sanal makinemizi oluşturduk ancak henüz diski yok. Hyper-V Manager konsolunda sanal makinemize çift tıklayarak konsol ekranını açalım ve Fileà Settings yolunu izleyerek ya da Ctrl + O klavye kısa yolunu kullanarak ayarlar penceresini açalım. Açılan pencerede IDE Controller 0 bölümüne gelelim. Ekran görüntüsü aşağıda ki şekilde olacaktır.

Bu ekranda Hard Drive seçeneği seçili durumda iken Add butonuna tıklayarak sanal makinemize yeni bir disk ekleme işlemine başlayalım. Bu işlemin ardından ekran görüntüsü aşağıda ki gibi olacaktır.

Burada New butonuna tıklayarak vhd dosyamızı oluşturmaya başlayalım. Karşımıza New Virtual Hard Disk Wizard ekranı gelecektir. Karşılama ekranını Next diyerek geçelim. Ekleyebileceğimiz disk tiplerinin (Fixed size, Dynamic expanding ve Differencing) bulunduğu ekran da Differencing tipini seçelim. Ekran görüntüsü aşağıdaki gibidir.

Next diyerek ilerlediğimizde bizden diskimize ismini ve duracağı yeri belirleyeceğimiz ekran gelecektir. Diskimizin ismini MHCLABSSQL.vhd olarak belirleyelim. Aslında dosya ismine bakıldığında anlaşılabilir olması açısından dosya isminin sonuna hangi sürücü olduğunu belirtmeyi (MHCLABSSQL_C.vhd) daha uygun buluyorum ancak burada oluşturacağımız disk bizim için bir basamak teşkil edeceğinden şu an için bu tarz bir isimlendirme yapmıyoruz. Ancak işlemlerimizi tamamladığımızda isimlendirmeyi de değiştireceğiz. İlgili ekran görüntüsü aşağıdadır.

Sanal makinemizin diskini belirledikten sonra Next diyerek ilerleyelim. Karşımıza ana disk olarak kullanacağımız diski seçeceğimiz ekran gelecektir. Burada seçeceğimiz disk az önce şablon olarak hazırladığımız sanal makinemizin diski olacak. Böylece sanal makinemizi açtığımızda öncelikle şablon makinemizin diski kullanılarak sistem açılacak ve ardından yapılan tüm değişiklikler yeni oluşturulan diske yazılacaktır. Burada 2008R2Template isimli sanal makinemizin klasöründe bulunan 2008R2Template_C.vhd dosyasını gösteriyoruz. İlgili ekran görüntüsü aşağıda ki gibidir.

Şablon diskimizin yerini gösterip Next diyerek ilerlediğimizde karşımıza yapılacak işlemin bilgilerinin bulunduğu özet ekranı gelecektir. Finish diyerek işlemi tamamlayalım. Sanal makinemizin özelliklerine geri dönüp diske baktığımızda MHCLABSSQL.vhd dosyasını göreceğiz. Inspect butonuna tıkladığımızda karşımıza gelen ekrandan aslında bu dosyanın differencing disk olduğunu ve ekranda bir Inspect butonu daha olduğunu görebiliriz. Burda ki Inspect butonuna tıkladığımızda ise karşımıza şablon diskimiz ile ilgili bilgi gelecektir. Ekran görüntüleri aşağıda ki gibidir.

Diskimizi hazırladığımıza göre sanal makinemizi başlatalım. Şablon olarak hazırladığımız sanal makinemizde sysprep çalıştırdığımız için MHCLABSSQL sanal makinemizi başlattığımızda karşımıza “Setup is updating registry settings” ifadesi ile sistem de gerekli registry düzenlemelerinin yapıldığını belirten siyah ekran gelecektir. Registry işleminin tamamlanmasının ardından ilk kurulum sırasında sorulan ve sanal makinemizin Region (bölgesel ayarlar), Time/Currency (zaman ve para birimi) ve Keyboard Layout (klavye dili) ayarlarını yaptığımız ekran gelecektir.

Burada gerekli düzenlemeleri yapıp Next diyerek ilerlediğimizde lisans koşulları ile ilgili ekran gelecektir. Burada da lisans anlaşmasını kabul ettiğimizi belirten “I accept the license terms” kutusunu işaretleyip Next diyerek ilerlediğimizde ayarlamalar tamamlanıp sistem açılacak ve bizden Administrator kullanıcısı için parola belirlememizi istenecektir. Parolamızı belirleyip işletim sistemini açalım. Sysinternals ekibinin programcıklarından birisi olan ve makinenin SID sini öğrenebileceğimiz PsGetsid uygulamasını kullanarak 2008R2Template ve MHCLABSSQL sanal makinelerinin SID lerine baktığımızda her ikisinin farklı olduğunu görebiliriz. İlgili ekran görüntüleri aşağıdadır.

NOT: PsGetsid uygulamasının da içinde bulunduğu PSTools Suite paketini http://technet.microsoft.com/tr-tr/sysinternals/bb896649%28en-us%29.aspx adresinden indirebilirsiniz.

Eğer şablon olarak kullanacağımız sanal makine de sysprep işlemini yapmamış olsaydık bu şablon disk kullanılarak oluşturulacak olan her bir sanal makinenin SID si aynı olacaktı.

Yeni sanal makinemizde gerekli düzenlemeleri yaptıktan sonra (Makine adının değiştirilmesi ve etki alanına katma gibi) sanal makinemizin kendi diskini oluşturabiliriz. Bu işlem için MHCLABSSQL isimli sanal makinemizi kapatıp ayarlar penceresini açalım ve IDE Controller 0 altında bulunan diskimize gelelim. Burada Edit butonuna tıklayarak “Edit Virtual Hard Disk Wizard” sihirbazını açalım. Normal sanal disk işlemlerinde bu sihirbazı kullanarak aşağıda ki işlemleri gerçekleştirebiliriz.

  • Compact: Sanal disk üzerinde veriler silindiğinde vhd dosya boyutu küçülmeyecektir. Ancak bu işlem ile disk üzerinde ki boş alanlar silinerek dosya boyutu küçültülebilir.
  • Convert: Sanal diskimizi Dynamic tipinde belirlediysek Fixed tipine bu seçeneği kullanarak çevirebiliriz.
  • Expand: Sanal diskimizde işletim sistemi ya da dosyalar için yer kalmadığında kapasitesini dolayısıyla vhd dosyasının boyutunu buradan büyütebiliriz.

Ancak sanal makinemizin diski Differencing tipinde olduğundan karşımıza gelecek ekran aşağıda ki gibi olacaktır.

Bizim amacımız differencing disk üzerinde az önce yapmış olduğumuz değişiklikleri (bilgisayar adını değiştirmek ve etki alanına almak gibi) şablon olarak kullandığımız sanal diske ya da yeni oluşturulacak olan sanal disk üzerinde birleştirmek. Bu nedenle yukarıda ki ekranda Merge (Birleştir) seçeneğini seçtikten sonra Next diyerek ilerleyelim. Karşımıza, sanal diskleri birleştirme işlemini şablon diskin üzerinde ya da yeni bir sanal disk oluşturarak yapabilmemizi sağlayacak seçeneklerin bulunduğu ekran gelecektir. Bu ekranda varsayılan olarak “To the parent virtual hard disk” seçeneği seçilidir.

NOT: “To the parent virtual hard disk” seçeneği seçilerek devam edilir ise yapılan tüm değişiklikler şablon diskin üzerine yazılacaktır (şablon diskin Read-only özelliği kaldırılmalıdır). Dolayısıyla şablon disk değişmiş olacaktır. Bunun olmasını istemediğimizden “To a new virtual hard disk” seçeneği ile devam edilmelidir.

“To a new virtual hard disk” seçeneğini kullanarak sanal diskimize vereceğimiz ismi (MHCLABSQL_C.vhd) belirleyelim ve ardından diskimizin Dymanic ya da Fixed tipinde olmasına kara verelim. İlgili ekran görüntüsü aşağıdadır.

NOT: Ürün (Production) ortamında kullanılacak sanal makinelerin disklerinin Fixed tipinde olması önerilmektedir.

Next diyerek devam ettiğimizde karşımıza yapılacak işlerin özetinin bulunduğu ekran gelecektir. Burada da Finish butonuna tıklayarak işlemi başlatalım. Bu işlem disk boyutuna göre bir miktar zaman alacaktır. İşlemin tamamlanmasının ardından sanal makinemizin dosyalarının bulunduğu klasörde MHCLABSSQL_C.vhd isimli sanal diskimiz oluşturulmuş olacak. Ekran görüntüsü aşağıda ki gibidir.

NOT: MHCLABSSQL.vhd dosyasının boyutu oldukça küçük olduğu görülecektir. Bunun sebebi MHCLABSSQL.vhd isimli sanal diskin sadece yeni sanal makine üzerinde yapılan değişiklikleri içermesidir.

Artık yeni oluşturduğumuz diski sanal makinemize bağlayabiliriz. Bu işlem için MHCLABSSQL sanal makinemizin özelliklerinde disk bölümüne MHCLABSSQL.vhd yerine MHCLABSSQL_C.vhd yazmamız yeterli olacaktır (dilenirse Browse butonuna tıklanarak da yeni disk bağlanabilir). Bu değişikliğin ardından sanal makinemiz sorunsuz açılacaktır. MHCLABSSQL.vhd isimli dosyamızı artık silebiliriz. Yapılan işlem ile ilgili ekran görüntüleri aşağıdaki gibidir.

Bu makalemde sizlere önceden işletim sistemi kurulumu ve güncellemeleri yapılarak hazırlanan şablon sanal makinenin diskini ve sanal disk tipleri içerisinden Differencing Disk tipini kullanarak yeni sanal makineler oluşturmayı anlatmaya çalıştım.

Faydalı olması dileğimle…

M. Hakan CAN

Permanent link to this article: http://www.mhakancan.com/hyper-v-ortaminda-differencing-disk-kullanarak-sablon-sanal-makineden-yeni-sanal-makine-olusturulmasi/

2 comments

  1. TARIK

    HOCAEM ELİNİZE SAĞLIK ALLAH RAZI OLSUN.

    1. M. Hakan CAN

      Rica ederim…

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>