search
Categories
Sponsors
VirtualMetric Hyper-V Monitoring, Hyper-V Reporting
Archive
Blogroll

Badges
MCSE
Community

Cozumpark Bilisim Portali
Posted in Virtual Machine Manager | 1 Comment | 5,231 views | 21/01/2009 01:07

Daha önceki yazılarımdan bildiğiniz üzere, VMM template’lerini Windows sunucuları sysprep ettikten sonra yaratıyordum. Fakat bu işlemden sonra özellikle Server 2008’de hata almaya başladık. Öyle bir duruma geldi ki sunucuda mavi ekrana neden olan sorunlar oluşturabiliyor. Özellikle VMM deploy sırasında aşağıdaki hatayı alıyoruz.

Warning (10660) – Cannot install virtualization guest services on virtual machine SERVER because its virtual hard disks are generalized.

VMM’in konuyla ilgili tabiki yine çok general bir çözümü var.

Recommended Action – Install the virtualization guest services after the virtual machine has been customized.

Ne alaka? Zaten VMM servisleri kurulu olan bir makinada işlem yapıyoruz. Bu durumda bizden tekrar kurulum mu yapmamızı talep ediyorsun? Kurulumu meraktan tabiki yaptım fakat onda da hata verdi. Hata vermesinin nedeni sunucu üzerinde servislerin zaten yüklü olması. Bu durumda yapılacak iki şey kalıyor. Ya Server 2008’i bizim yerimize VMM sysprep’li hale getirecek ya da vm’i açmadan önce vm’in bulunduğu hostu, vmm üzerinden refresh edeceğiz. VMM üzerinden host’u refresh ettiğimizde:

untitled

Yukardaki gibi bir güncelleme oluyor sunucuda. Daha sonra vm’i başlattığımızda sorun olmadığını görüyoruz. Bu işlemlerin ardından şimdilik sunucu üzerinde deploy’dan kaynaklı bir mavi ekran hatası almadık. Kolay gelsin.

Düzeltme: Yukardaki durum, VHD’yi sysprep ettiğinizde karşılaşılan doğal bir durumdur. Mavi ekran gibi bir probleme sebep olmadığı görülmüştür. Fakat bilgi bütünlüğünü sağlamak için yazıyı düzeltmiyorum. Bilgilerinize..


Posted in Virtual Machine Manager | No Comment | 1,847 views | 19/01/2009 17:14

P2V dönüştürme işlemi, temelde kaynak olarak kullanılan sunucunun diskinin imajını alıp, işletim sisteminin ve sürücülerinin, Virtual Server donanımı ile uyumlu olacak şekilde düzenlenmesi ile gerçekleştirilmektedir. P2V işleminde, kullanabileceğiniz 2 yol vardır: Online ve Offline.

Online dönüştürme
Online dönüştürme işlemi, kaynak sunucuda restart işlemine gerek kalmadan yapılan bir işlemdir. VMM, Volume Shadow Copy servisi (VSS) ile application bazlı bir disk imajı oluşturur ve eş zamanlı olarak sanal sunucu haline getirerek, kaynak sunucunun yeniden başlatılmadan dönüştürülmesini sağlar. Online dönüştürme işlemi aşağıdaki 5 adımı kapsamaktadır:

Kaynak sunucuya VMM agent kurulması
Donanım bilgilerinin agent aracılığı ile öğrenilmesi
Disk imajının alınması
İşletim sistemi ve donanımın vm için uygun hale getirilmesi
Sanal makinanın oluşturulması

P2V işlemi sonrasında, dönüştürme işlemi için kaynak sunucuya yüklenen VMM agent, işlem sonrası kaldırılmaktadır. VMM agent, kurulumdan sonra SSL ve RemoteAdmin servisleri için firewall’da exception yaratmakta, kaldırma işlemi sonrası firewall ayarlarını eski haline getirmektedir.

VMM, dönüştürme sırasında, kaynak sunucudaki donanım, program, servis, hotfix bilgileri ile disk özelliklerini (dosya sistemi, partition bilgileri..) öğrenerek, bunları XML dosyası haline getirerek, VMM database’i içersinde makina ayarları olarak saklar. Disk imajının alınması sırasında aşağıdaki işlemler esastır:

Her NTFS bölümü için farklı bir VSS imajının alınması. Eğer VHD formatını, dynamic olarak seçtiyseniz, sadece hdd’deki dolu kısımlar alınacaktır.
Veriler VMM ile Background Intelligent Transfer Servisi (BITS) kullanılarak aktif bir şekilde transfer edilir.
Her fiziksel disk, farklı bir sanal disk olarak oluşturulur.
Sanal disk ve sanal sunucu oluşturma işlemi gerçekleştirilir.

Offline Dönüştürme
Offline P2V işlemi, Windows 2000 Server ailesi için tek dönüştürme seçeneğidir. Çünkü bu sürümlerde VSS desteklenmemektedir. Bu nedenle daha farklı bir yol izlenmekte. Özellikle Online dönüştürme işleminin aksine, dönüştürme işlemini gerçekleştiren Windows PE, sunucudaki bir donanımı tanımadıysa, tanınmayan donanım sürücüleri, işlemi gerçekleştiren kullanıcı tarafından sağlanmalıdır. Offline dönüştürme işlemi de 4 adımdan oluşmaktadır.

VMM Agent kurulumu. Kaynak makinaya, agent kurulumunu VMM yapmaktadır.
VMM agent, kaynak makina üzerine Windows PE imajı atıp, Win PE üzerinden boot olacak şekilde sunucuda ayarlamalar yapar. Netice olarak, kaynak sunucu Windows PE üzerinden boot olacaktır.
Daha sonra VMM, fiziksel diskleri imajlamaya başlar.
Sonrasında Online dönüştürme işleminde olduğu gibi Virtual Machine yaratma süreci başlar.

Yukardaki adımları ve açıklamaları Technet üzerinden Türkçeleştirmeye çalıştım. Cümle bozuklukları ve çeviri hataları varsa eğer kusura bakmayınız. Kolay gelsin.

Kaynak: http://technet.microsoft.com/en-us/library/bb963740.aspx


Posted in Virtual Machine Manager | No Comment | 1,830 views | 19/01/2009 16:01

VMM ile fiziksel bir sunucuyu, sanal bir sunucu haline getirebildiğimizi belirtmiş, senaryoda eski bir Celeron işlemcili sunucu, VM haline getirmiştik. Şimdi bu işlem için desteklenen işletim sistemlerinin listesini eklemek istiyorum.

Windows Server 2008 (32-bit)
Windows Server 2008 (64-bit)
Windows Server 2003 (32-bit) SP1 ya da sonrası
Windows Server 2003 (64-bit) SP1 ya da sonrası
Windows 2000 Server SP4 ya da sonrası (Sadece Offline P2V)
Windows 2000 Advanced Server SP4 ya da sonrası (Sadece Offline P2V)
Windows XP Professional (32-bit) SP2 ya da sonrası
Windows XP Professional (64-bit) SP2 ya da sonrası
Windows Vista Service Pack 1 (32-bit)
Windows Vista SP1 ya da sonrası (64-bit)

Dikkat edeceğiniz üzere Windows NT Server 4.0 işletim sistemi VMM tarafından desteklenmiyor. Fakat yine de Microsoft Virtual Server 2005 Migration Toolkit (VSMT) ile Windows NT Server 4.0 işletim sistem sistemini sanal sunucu haline getirebilirsiniz.

Kaynak: http://technet.microsoft.com/en-us/library/cc917954.aspx


Posted in Virtual Machine Manager, Windows Powershell | No Comment | 2,035 views | 19/01/2009 08:30

VMM üzerindeki bir sanal sunucuyu, aynı hyperv’nin farklı bir hdd’sine ya da tamamen farklı bir hyperv’ye taşıyabilmekteyiz. Farklı bir Hyperv’ye taşıması işlemi sırasında sunucuyu “save state” ile dondurmakta, taşıma işlemi bittikten sonra geri açmaktadır. HDD’ler arasındaki taşıma işlemi de bazı nedenlerden dolayı işimize yaramaktadır. Örneğin VM klasör isimleri değiştirilememektedir. Yani ilk kurulum sırasında klasör ismi olarak ne verdiyseniz, o şekilde kullanmaya devam edersiniz. Fakat migrate işlemi ile bu sorunu da aşabilirsiniz. Farklı bir HDD’ye taşırken, VM’e farklı bir isim verebilir ve bu klasör isminin değişmesini sağlayabilirsiniz. Şimdi migrate için Powershell üzerindeki taşıma scriptine göz atalım.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# ------------------------------------------------------------------------------
# Migrate Virtual Machine Wizard Script
# ------------------------------------------------------------------------------
# Script generated on 18 Ocak 2009 Pazar 20:23:34 by Virtual Machine Manager
#
# For additional help on cmdlet usage, type get-help <cmdlet name>
# ------------------------------------------------------------------------------
 
$VirtualNetworkAdapter = Get-VirtualNetworkAdapter -VMMServer localhost -All | where {$_.ID -eq "042af40a-afa9-4c07-8458-be08efa24eae"}
 
Set-VirtualNetworkAdapter -VirtualNetworkAdapter $VirtualNetworkAdapter -RunAsynchronously -VirtualNetwork "RHNetwork" -NetworkTag "" -NetworkLocation "" -JobGroup fdef0e55-5bac-4033-969a-adb8a8277f8a -VLanEnabled $false
 
$VM = Get-VM -VMMServer localhost -Name "VM0000" | where {$_.VMHost.Name -eq "hyperv9.radore.net"}
$VMHost = Get-VMHost -VMMServer localhost | where {$_.Name -eq "hyperv4.radore.net"}
 
Move-VM -VM $VM -VMHost $VMHost -Path "C:\Hyper-V" -RunAsynchronously -UseLAN -JobGroup fdef0e55-5bac-4033-969a-adb8a8277f8a

Yukardaki script’te, VM0000 isimli makina, hyperv4 isimli sunucudan, hyper9 isimli sunucunun C:\Hyper-V dizinine, RHNetwork ağına sahip olacak şekilde taşınmaktadır. Yani bu script ile ilgili değişkenlerin değişmesini sağlayacak bir panel yardımı ile VMM’e gerek kalmadan taşıma işlemi yaptırabiliriz. Kolay gelsin.


Posted in Windows Powershell, Windows Server | No Comment | 9,604 views | 18/01/2009 13:11

Bir önceki uygulamada, Powershell ile bir sayının karekökünün nasıl bulunabildiğini göstermiştim. Fakat şimdiki bölümde, for döngüsünü yayınladığım karekök bulma uygulamasını, PS’de yani Powershell’de nasıl çalıştırabileceğimize göz atacağız. Powershell’in genel olarak uygulama uzantısı .ps1’dir. Notepad içine karekök bulma uygulamasına ait kodları yapıştırır, sonrasında uzantısı .ps1 olacak şekilde kaydederseniz, bundan sonra .ps1 uzantılı uygulamayı ps’ye atmak kalır sadece. Ben az önceki uygulamanın adını karekok.ps1 yapıyorum. Şimdi Powershell üzerinde uygulamayı çalıştırmaya çalışalım. Uygulama çalıştırmak için karekok.ps1 dosyasının olduğu dizine geçiyoruz. Sonrasında PS’de .\karekok.ps1 yazıyoruz. Fakat bir hata mı aldık? PS üzerinde daha önce bir işlem yapmadıysanız, hatta PS’yi ilk açışınız ise bu uygulamayı çalıştırmaya çalışırken karşınıza kırmızı hata yazılarının olduğu bir ekran çıkacaktır. Yalnız bu bize, kodlarda hata olduğunu söylemliyor. Biraz daha dikkatli inceleyelim hatayı.

powershell1

Hatayı daha iyi inceleyebilmemiz için ekran çıktısını aşağıya yazıyorum.

File C:\Users\Administrator\Desktop\karekok.ps1 cannot be loaded because the execution of scripts is disabled on this system. Please see “get-help about_signing” for more details.
At line:1 char:13

Hatada bize execution of scripts is disabled diyor. Gerçekten de böyle bir durum söz konusu. Normalde Powershell’de default olarak “ExecutionPolicy” Restricted haldedir. PS’de Get-ExecutionPolicy komutunu çalıştırdığınızda “Restricted” yazdığını göreceksiniz. Bu yüzden imzasız olan uygulamalar, PS üzerinde çalışmamaktadır. Şimdi bizimki gibi uygulamaların da çalışabilmesi için bu sınırlamayı biraz değiştirelim. Bunun için PS’de aşağıdaki komutu yazalım.

1
Set-ExecutionPolicy RemoteSigned

Bu komut sonrasında Get-ExecutionPolicy yaptığımızda, artık Restricted yerine RemoteSigned yazdığını göreceksiniz. Ekran çıktısına bakalım:

powershell2

Şimdi bir sorunumuz kalmamış gibi görünüyor. RemoteSigned nedir, ne işe yarar, faydaları zararları nedir derseniz, bu konuya da bir sonraki makalede değineceğim. Çünkü şuanki konuda amacımız, uygulamamızı çalıştırmak. Bundan sonra yapmanız gereken, tekrar .\karekok.ps1 demek ve programın size doğru karekökü verdiğini izlemek. RemoteSigned ile bundan sonraki uygulamalarımızı çalıştırabilir hale geleceğiz. Bir sorun ile karşılaşırsanız sormaktan çekinmeyin. Kolay gelsin.

Not: Bazen aşağıdaki gibi yapmanız gerekebilir:

Set-ExecutionPolicy Unrestricted

Böylece kendi yazdığınız tüm Powershell scriptleri sorunsuz bir şekilde çalışacaktır.


Posted in Windows Powershell, Windows Server | No Comment | 2,392 views | 18/01/2009 12:06

Madem Powershell öğrenmeye başladık, biraz işin matematik kısmına girelim. Aslında Powershell matematik amaçlı yapılmış bir şey değil fakat dört işlem yapabiliyorsak, matematiksel işlemleri de yaptırabiliriz kendisine. Sanırım Powershell’de böyle bir işlem yaptırmış kişi daha yoktur ya da ben bulamadım. Yalnız ilginizi çekecek bir çalışma olabilir bu. Hiç değilse 13’ün 1000 iterasyon ile bulunan karekökünün 3,60555127546399 olduğunu görmek, hoşuma gitti benim. Haydi başlayım.

1
2
3
4
5
6
7
8
9
$kokubulunacaksayi=13
$ilkdeger=2
$iterasyon=1000
For ($i=0;$i –lt $iterasyon;$i++) {
$sonuc=$kokubulunacaksayi/$ilkdeger
$kok=($ilkdeger+$sonuc)/2
$ilkdeger=$kok
}
$kok

$kokubulunacaksayi olan değişkene 13 dedim. İşleme başlamak için bir tane ilk değer girmek gerekiyor. Bana en mantıklı yol, 13’ün yarısıyla başlamak gibi geldi. Bu yüzden $ilkdeger değişkeni için 2 verdim. Böylece yarısıyla başlayıp, aritmek ortalama ile devam edeceğiz. Sonrasında bir iterasyon sayısı belirlemem gerekiyor. Ne kadar büyük iterasyon sayıları verirsek, bulacağımız sonuç da o kadar yakın çıkacak. For döngüsünü biraz dikkatli inceleyelim. $i değeri 0’dan başlıyor ve 1000 olana kadar devam ediyor. Değerlerimiz 1’er 1’er artıyor. $kok işleminde çıkan sonuç ile $ilkdeger’in aritmetik ortalamasını alıyoruz ve $ilkdeger=$kok ile, $ilkdeger değerinin artık $kok olarak işleme girmesini sağlıyoruz. Tabiki 1000 işlem sonundaki sonucu görebilmek için de döngü sonuna $kok değişkenini koyuyoruz ve bize sonucu vermesini istiyoruz. Burada aslında sizlere for döngüsünü göstermeye çalıştığım. Bir sonraki bölümde while döngüsünü de göreceğiz ve aslında Virtual Machine Manager yani VMM için yazacağımız ufak çaplı scriptlere temel oluşturmuş olacağız. For döngüsüyle yapabilecekleriniz, hayal gücünüzle sınırlı. Kolay gelsin.


Posted in Virtual Machine Manager, Windows Powershell | No Comment | 1,733 views | 17/01/2009 19:15

Bildiğiniz gibi VMM’deki P2V ile yani Physical Server to VM özelliği ile fiziksel sunucularınızı VM haline getirebiliyorsunuz. Aşağıdaki senaryoda, Celeron işlemcili, 256 mb ram ve 80 gb hdd’li, üzerinde external bir ethernet kartı olan Gigabyte marka bir anakarta sahip eski bir sunucuyu, VM0000 isimli bir VM’e çevirmekteyiz. VM0000 isimli sanal sunucumuz, hyperv9 isimli sunucumuzun E:\DATA klasörüne açılacak. Aşağıdaki kodlarda geçmekte olan 71.72.73.74 nolu ip, source makinanın yani Celeron işlemcili makinanın ip adresi. Şimdi Powershell üzerinden nasıl P2V işleminin gerçekleştiğini görelim.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# ------------------------------------------------------------------------------
# Convert Physical Server (P2V) Wizard Script
# ------------------------------------------------------------------------------
# Script generated on 17 Ocak 2009 Cumartesi 15:18:03 by Virtual Machine Manager
#
# For additional help on cmdlet usage, type get-help <cmdlet name>
# ------------------------------------------------------------------------------
 
$Credential = get-credential
 
New-MachineConfig -VMMServer localhost -SourceComputerName "71.72.73.74" -Credential $Credential
 
$VMHost = Get-VMHost -VMMServer localhost | where {$_.Name -eq "hyperv9.radore.net"}
$VirtualNetwork = Get-VirtualNetwork -VMMServer localhost | where {$_.ID -eq "62979deb-730b-448e-9584-dc2431cae46a"}
$MachineConfig = Get-MachineConfig -VMMServer localhost | where {$_.Name -eq "71.72.73.74"}
 
New-P2V -VMMServer localhost -VMHost $VMHost -RunAsynchronously -JobGroup 8c4cf729-baad-4428-a429-5e24a119da45 -SourceNetworkConnectionID "00:02:44:5F:B0:49" -PhysicalAddress "00:02:44:5F:B0:49" -PhysicalAddressType Static -VirtualNetwork $VirtualNetwork -MachineConfig $MachineConfig
 
$VMHost = Get-VMHost -VMMServer localhost | where {$_.Name -eq "hyperv9.radore.net"}
$MachineConfig = Get-MachineConfig -VMMServer localhost | where {$_.Name -eq "71.72.73.74"}
 
New-P2V -VMMServer localhost -VMHost $VMHost -RunAsynchronously -JobGroup 8c4cf729-baad-4428-a429-5e24a119da45 -VolumeDeviceID "C" -Dynamic -IDE -Bus 0 -LUN 0 -MachineConfig $MachineConfig
 
$Credential = get-credential
$VMHost = Get-VMHost -VMMServer localhost | where {$_.Name -eq "hyperv9.radore.net"}
$MachineConfig = Get-MachineConfig -VMMServer localhost | where {$_.Name -eq "71.72.73.74"}
 
New-P2V -Credential $Credential -VMMServer localhost -VMHost $VMHost -Path "E:\DATA" -Owner "VMM\Administrator" -RunAsynchronously -JobGroup 8c4cf729-baad-4428-a429-5e24a119da45 -Trigger -Name "VM0000" -MachineConfig $MachineConfig -CPUCount 1 -MemoryMB 512 -RunAsSystem -StartAction NeverAutoTurnOnVM -StopAction SaveVM

Dikkat edeceğiniz üzere CPUCount 1, yani tek CPU’lu. Bunun yanında 256 mb olan sunucu ram’ini, VM için 512 mb yapmış durumdayız. Source sunucunun, administrator kullanıcı şifresi, “get-credential” komutu ile çekiliyor. Bu komutu powershell üzerinden inceleyebilirsiniz. Yukardaki komutların, size fikir vereceğini düşündüğüm için yazma gereği hissettim.

Yaptığım aktarma sonucu, Celeron işlemcili makina, hiç sorun çıkarmadan, 15 dk içersinde VM haline getirildi. Celeron işlemcili sunucunun 80 gb olan hdd’si, vds olarak E:\DATA klasöründe şuan için sadece 3 gb’lık bir yer kaplıyor. Aktarma sonrasında source sunucuda bir kapanma olmadı ya da aktarma sırasında kesinti yaşamadı. Aktarım sonucu, VM’e baktığımızda, çalışan FTP server (Filezilla Server) çalışmaya devam ediyordu. Yaşadığım tek problem, iki sunucu da aynı ip’ye sahip olduğu için ip çakışması oldu. Bir sonraki makalede, size GUI üzerinden adımları göstereceğim. Görüşmek üzere. Kolay gelsin.