Hangi Nesil Sanal Makine Kullanılmalı

By | 30 November 2016

Windows Server 2012 R2 ile birlikte yeni nesil sanal makineler ile tanıştık ve bu sanal makineleri Generation 2 olarak adlandırdık. Generation 1 sanal sunucuları Generation 2 sanal sunucuları ile birlikte aynı platform aynı Hyper-V host üzerinde çalışabildiler ve bu özellik Windows Server 2016 ile birlikte devam etmekte. Generation 2 sanal sunucuları ile ilk tanıştığımızda bizlere aktarılan bilgi aşağıdaki gibidir.

“Generation 2 sanal sunucuları Generation 1 sanal sunucularına göre daha hızlı ve daha güvenli çalışmaktadır”

Fakat, yukarıda bizlere aktarılan bilginin tam tersi bir durumu müşterimde gözlemlemekteyim. Birinci nesil sanal işletim sistemleri kullanımı, ikinci nesil işletim sistemlerine göre daha fazla kullanılmakta.

Bu orantısızlığın nedeni nedir, geçmişten beri kullanılan Generation 1 sanal makinelerinin Generation 2 sanal makinelerine dönüştüremediğimiz için mi, Generation 2 sanal makinelerini çok fazla tanımadığımız için yeteneklerini bilmiyor muyuz?

Bu makalemiz içinde sanal makine nesilleri arasındaki farklar nelerdir, hangi nesli sanal makineyi neden tercih etmeliyiz, hangi sanal makineleri Generation 1 veya Generation 2 sanal makinesinde kullanamayız sorularını ve fazlasını bu makale içinde paylaşmaya çalışacağım.

Makale içinde Generation ismi “nesil” olarak adlandırılacaktır. Makalemiz içinde bulunan alt başlıklarımıza aşağıdan ulaşabilirsiniz.

Choose the Generation of This Virtual Machine

Choose the Generation of This Virtual Machine

Specify Generation bölümü ile Windows Server 2012 R2 ile birlikte tanıştık ve o günden itibaren 2nci nesil Sanal Makineleri oluşturmaya başladık. Bu gün, Windows Server 2016 ile birlikte ikinci nesil sanal makineleri ve birinci nesil sanal makineleri aynı Hyper-V Host üzerinde barındırabilmekteyiz.

Hyper-V Yeteneklerininin Nesillere Göre Uygulanması

Sanallaştırma platformunun bir çok avantajları bulunmakta ve bu avantajlar sanal makinenin sahip olduğu işletim sistemi ve nesillere göre farklılık göstermektedir. Her yeteneği, her sanal makineye uygulayamamaktayız.

[table id=Hyper-VYeteneklerinininNesillereGreUygulanmas /]

Sanal işletim Sistemlerinin Desteklemiş Olduğu Nesiller

Bir örnek ile açıklayalım, Microsoft Windows Server 2016 yeniliklerinde

“bir sanal makineye artık 240 adet sanal işlemci atayabilirsiniz dedi.

Evet doğru. Ama bir sanal makineye 240 adet sanal işlemci atayabilmemiz için sanal işletim sisteminin (Guest OS) Windows Server 2016 ve Nesil 2 olmak zorunda. Teknik dokümanlarda Windows Server 2012 sanal makineye en fazla 64 adet sanal işlemci bağlayabilmekteyiz. Teknik dokümanları iyi analiz ettiğimiz zaman bu söylemin yanlış olmadığını ama alt kırılışlarının olduğunu görebilmekteyiz.

[table id=SanalletimSistemlerininDesteklemiolduuSanalMakineNesilleri /]

Nesillere Göre Sanal Makinelerin başlaması

Farklı nesillere sahip sanal makinelerin ilk açılış yöntemleri sahip olduğu nesillere göre farklılık göstermektedir. PXE Boot teknolojsi ile bir sanal makine açılıyorsa eğer nesil 1 farklı nesil iki farklı yöntem uygulanmaktadır.

Virtual Machine Hardware

Virtual Machine Hardware

PXE boot özelliğini kullanıp bir sanal makineyi açmak istediğimiz zaman Nesil 2 sanal makineleri standart network kartı kullanırlarken Nesil 1 sanal makineleri Legacy network kartı kullanmaktadırlar.

SCSI Controller üzerinden bir sanal makineyi açmak istediğimiz zaman Nesil 2 sanal makineleri kullanmamız gerekmektedir ve sadece VHDX sanal disk türlerini desteklemektedir.

IDE Controller veya Sanal Floppy (VFD) üzerinden bir sanal makineyi açmak istediğimiz zaman Nesil 1 sanal makinesi kullanmamız gerekmektedir.

Boot diski üzerinde 2 TB üzeri bir alana ihtiyacımız varsa Nesil 2 Sanal makinesi kullanmamız gerekmektedir. Nesil 1 Sanal makineleri 2040GB sanal disk desteklerken nesil 2 sanal makineleri 64 TB kullanabilmektedir.

Sanal makine çalışır durumdayken VHDX i büyütmek istersek eğer nesil 2 sanal makinesi kullanmamız gerekmektedir.

Nesil 2 sanal makinemizi Fiziksel CD/DVD sürücüsü üzerinden açmak istediğimiz zaman bu desteklenmemektedir. Bu özellik sadece Nesil 1 sanal makinelerinde bulunmaktadır. Nesil 2 sanal makineleri ISO dosyası üzerinden Boot ettirebilmekteyiz.

Secure Boot Security

Secure Boot Security

Sanal makinelerimiz üzerinde Secure Boot özelliğini kullanmak ve ilk açılışı sırasında UEFI veri tabanının yetkisiz firmware güncelleştirmeleri ve zararlı yazılımlar tarafından bozulmasını engellemek istiyorsak, Nesil 2 sanal makinesini kullanmamız gerekmektedir. Sanal Makinemizin barınmış olduğu Hyper-V Host un Secure Boot veya UEFI firmware desteklemesi gerekli değildir. Bu gereksinimi Hyper-V Host nesil iki sanal makineye sanal firmware ile sağlayacaktır.

Set-VMFirmware -Vmname <TestVM> -EnableSecureBoot Off

Yukarıda bulunan PowerShell komutu ile sanal makine bazlı Secure Boot özelliğini kapatabilirsiniz.

Windows Server 2016 ve Windows 10 sanal işletim sistemlerinde Virtualization Based Security kullanmak istersek Nesil 2 sanal makine olması öncelikli gereksinimdir.

Nesiller Arası Sanal Aygıt Desteği

Nesil 1 ve Nesil 2 üzerinde ihtiyaç duyulan bütün sanal kaynaklar bulunmaktadır. Nesil 1 de bulunan kaynaklar Nesil 2 sanal makinede yenisi ile yer değiştirmiştir ve geliştirilmiştir. Aşağıdaki tablo içinde bu bilgi bulunmaktadır.

Set-VMComPort –VMName <TestVM> 1 \\.\pipe\TestPipe

Ek olarak Nesil 2 sanal makineleri üzerinde COM portunu kullanmak isterseniz Secureboot özelliğini kapattıktan sonra Yukarıda bulunan PowerShell komutu ile sanal makine bazlı com port atayabileceksiniz. Atamış olduğunuz com port Hyper-V Manager da görülmeyecektir.

Virtual Machine Generation Hardware

Virtual Machine Generation Hardware

[table id=SanalMakineNesillerArasAygtDestei /]

Nesil 2 Sanal makineleri öncelikli olarak IP Version 4 kullanmaktadır ve IP Version 6 desteklemektedir.

Set-VMFirmware -VMName <TestVM> -IPProtocolPreference IPv6

Yukarıda bulunan PowerShell komutu ile sanal makine bazlı Ipv6 ı öncelikli duruma getirebilmekteyiz.

Convert-VMGeneration ile Sanal Makine Nesil Dönüştürme İşlemi

Makalemizde nesil 1 ve nesil 2 sanal makineleri arasındaki farkı anlattık. Sanal makinelerimiz içinde bulunan işletim sistemi destekliyorsa benim önerim nesil 1’den nesil 2 ye yükseltme işlemlerini planlamanızdır.

Makalemizin bu bölümünde nesil 1 sanal makinesinde çalışan Windows Server 2012 işletim sistemimizin sanal makinesinesi Nesil 2 olarak güncelleştireceğiz.

Kullanacak olduğumuz PowerShell aracı Convert-VMGeneration dir. Bu araç Windows Server 2012 R2 ve Windows 8 için dizayn edilmiştir. İşlemleri gerçekleştirecek olduğum Hyper-V Host Windows Server 2016 üzerinde çalışmaktadır.

Generation 1 Virtual Devices

Generation 1 Virtual Devices

Sanal makinemiz üzerinde bulunan sanal kaynakları kontrol ediyoruz. Dönüştürecek olduğumuz sanal makinemiz nesil 1 sanal makinesi ve nesil 1 sanal makinesinin sahip olduğu sanal kaynaklar işletim sistemine yansıtılmış durumda.

REAgentC Command

REAgentC Command

Dönüştürecek olduğumuz sanal makinemiz üzerinde reagentc özelliğini kapalı duruma getirmemiz gerekmektedir. Eğer reagentc özelliğini kapatmazsak Convert-VMGeneration aracını – IgnoreWinRE seçimi ile kullanmamız gerekmektedir.

Reagentc / Disable komutu ile Windows Recovery Environment özelliğini kapalı duruma getirmiş oluyoruz. Dönüşüm işlemi tamamlandıktan sonra Reagentc / Enable komutu ile tekrardan aktif duruma getirmemiz gerekmektedir.

GET-VM | Format-List

GET-VM | Format-List

Windows Server 2016 Hyper-V Host üzerinde VM01 sanal sunucumuz kapalı durumda ve nesil 1 dir.

Convert-VMGeneration Powershell

Convert-VMGeneration Powershell

.\Convert-VMGeneration.ps1 -vmname “VM01” -Path c:\gen2path –nopsversioncheck

Yukarıda bulunan PowerShell komutu ile Nesil1’ den Nesil 2 dönüşümüne başlıyoruz.

-Path opsiyonunu girmenizi şiddetle tavsiye etmekteyim. Powershell içinde bulunan bu opsiyon nesil 1 olarak yapılandırılmış sanal makinenin mevcut vhd si üzerinde bir değişiklik yapmadan belirtmiş olduğumuz konuma nesil 2 olarak dönüştürmektedir. Dönüşüm sırasında yaşayacak olduğumuz herhangi bir probleme karşı bu seçenek ile elimizde bir yedek bulunmakta.

–nopsversioncheck opsiyonu ise mevcut Power Shell komutları Windows Server 2012 R2 işletim sistemi yazılmıştır. Windows server 2016 Hyper-V üzerinde bu komutu çalıştırırken kullanmamız gerekmektedir.

Virtual Machine Conversion Utility

Virtual Machine Conversion Utility

Sanal makinemizin sahip olduğu sanal disk boyutuna ve sahip olduğumuz Hyper-V disklerinin hızına bağlı olarak işlem belirli bir zaman alacaktır ve bu süre kesintili bir süre olacaktır.

Convert-VMGeneration.ps1 scripti gerekli dönüşümü gerçekleştirdi. Yapmış olduğu ve şimdi gerçekleşen işlemlere odaklanalım.

VM01 isimli sanal sunucunun Nesil 1 olarak yapılandırılmış olan mevcut C:\Lab\VM01.vhdx yolunda bulunan sanal diskini i Nesil 2 olarak belirtmiş olduğumuz dizine dönüştürdüğünü görebilmekteyiz.

Sanal makinemiz kapalı olmuş olsa bile Hyper-V sanal sunucu üzerinde yani sanal sunucunun sahip olduğu vhdx üzerinde gerekli dönüşümü yapabilmekledir. Scriptin desteklemiş olduğu işletim sistemi Windows Server 2012 ve Windows 8 üstü olma nedeni budur. Daha önceki işletim sistemlerine Hyper-V kapalı durumda olan sanal makine disklerine müdahale edemiyor.

Scripti kullanırken -path komutunu kullanmayı şiddetle önermemdeki neden bu değişikliktir.

ignoring Virtual Device

ignoring Virtual Device

Scriptin yapmış olduğu bir diğer dönüşüm Nesil 1 üzerinde bulunan fakat nesil 2 üzerinde bulunmayan sanal aygıtların dönüşümünü yapmasıdır. Legacy Network Adapter ve IDE aygıtları Nesil 2 sanal makineleri üzerinde çalışmamaktadır. Script sanal sunucu üzerinde bulunan sanal aygıtları da değiştirmektedir.

Generation 1 IDE Controller

Generation 1 IDE Controller

Nesil 2 olarak dönüşüme uğrayan sanal makinemizin yeni donanımını görmekteyiz. Belirtmiş olduğumuz dizin altında sanal makinemizin sanal disklerini görebilmekteyiz.

Generation 2 SCSI Controller

Generation 2 SCSI Controller

Nesil 1 olarak dönüşüme uğrayan sanal makinemizin mevcut donanımı ise bizler el-ile silene kadar saklanacaktır. Belirtmiş olduğumuz dizin altında sanal makinemizin sanal disklerini görebilmekteyiz.

Generation 2 Virtual Devices

Generation 2 Virtual Devices

Nesil 2 olarak değişime uğrayan sanal makinemizin işletim sistemindeki değişimi görebilmekteyiz. Aygırlarımız değişmiştir.

Generation Virtual Machine

Generation Virtual Machine

Convert-VMGeneration.ps1 aracı mevcut sanal makineyi silmemektedir. Bütün kontroller yapıldıktan sonra dönüşüme uğrayan sanal makineyi sizler silmelisiniz. Fakat her iki sanal makineyi eş zamanlı açmamanız gerekmektedir. Çünkü dönüşüme uğrayan nesil 1 sanal makine ile dönüştürülen nesil 2 sanal makinesi aynı MAC adresine sahiptir ve sanal işletim sisteminde bulunan IP adresi değişmemiştir. Bu sistemin çalışmasına etki edecektir.

Nesil 1 sanal makineden Nesil 2 sanal makineye dönüşümü Convert-VMGeneration.ps1 aracı ile yapabildiğimiz gibi Windows Server üzerinde bulunan Bare Metal Recovery yedekleme çözümü veya kurumunuz içinde bulunan yedekleme yazılımlarıyla da yapabilirsiniz. Yapacak olduğunuz dönüştürme işlemleri sanal makine seviyesinde farklılık gösterecektir. Eğer nesil 1 sanal makinesi bir Guest Cluster’a sahipse başka çözümler uygulamak mümkündür.

Leave a Reply

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