Hyper-V CSV Disklerinde ki Sanal Makinelerin DPM ile Yedeklenmesinde Serialization İşlemi
Merhabalar,
Hyper-V sunucularımız üzerinde çalışan sanal makinelerin yedeklenmesinde çeşitli uygulama ve yöntemleri kullanabiliyoruz. Cluster ortamında çalışan sanal makinelerin yedeklenmesinde DPM 2010 kullandığımızda bazı sıkıntılar yaşanabiliyor. Bu sıkıntı tam olarak CSV volume de oluşan bir problem ve dpm log larında da “Failed to prepare a Cluster Shared Volume (CSV) for backup as another backup using the same CSV is in progress.” şeklinde bir hata ile karşılaşabiliyoruz. Bunun sebebini o sırada başka bir sanal makinenin yedeklenmesi ve bu nedenle DPM in vss kullanarak CSV volume ünü yedekleme için hazır hale getirememesi olarak belirtebiliriz. Bunun başlıca sebebi DPM üzerinde oluşturulan Protection Group içerisine konulan sanal makinelerin yedekleme işleminin aynı anda başlatılması. Bu problemin önüne geçmek için iki seçenek mevcut.
- Hardware VSS: Bu yöntem storage üreticisi tarafından destekleniyor ise Hardware VSS kullanmak ve bu sayede vss işlemini storage üzerinde tamamlayarak işlemin çok kısa sürmesini, dolayısıyla yedekleme işleminin problemsiz bir şekilde başlatılabilmesini ve tamamlanmasını sağlamak.
- Software VSS: Bu yöntemde ise Microsoft VSS writer hizmeti kullanılmaktadır. Ancak bu yöntem DPM üzerinde ki protection grubunda birden fazla sanal makine varsa hepsinin yedeklenmesi aynı anda başlatılacağı için problem oluşturacaktır. Bu problemi Serialization metodu ile engelleyebilmekteyiz. Bu metod sayesinde ilgili protection grubunda ki sanal makinelerin yedeklenme işlemleri sıra ile yapılacaktır.
Bu makalemde sizlere serialization yöntemi kullanılarak protection grubunda ki sanal makinelerin teker teker yedeklenmesi için yapılması gereken işlemleri anlatmaya çalışacağım.
CSV üzerinde serialization yöntemi iki adımda hayata geçirilebilmekte. Bunlar,
- Herbir node üzerinde ki sanal makinelerin sıralanması
- Herbir CSV volume üzerinde ki sanal makinelerin sıralanması
İlk adımda öncelikle DPM sunucusu üzerinde registry düzenlemesi yapılması gerekmekte. DPM sunucusunda regedit komutunu kullanarak registry editor ü açalım aşağıda ki key yok ise oluşturalım.
HKLM\Software\Microsoft\Microsoft Data Protection Manager\2.0\Configuration\MaxAllowedParallelBackups
Yukarıda ki yolda Microsoft Hyper-V isimli bir DWORD kaydı oluşturalım ve değer olarak 1 verelim. Kayıt oluşturulduğunda aşağıda ki şekilde görülecektir.
NOT: Bazı sistemlerde bu kayıt oluşturulmuş ve değeri 3 şeklinde olmuş olabilir. Bu durumda ilgili değeri 1 olarak belirlemek yeterli olacaktır.
NOT: Aşağıda ki script e http://technet.microsoft.com/en-us/library/ff634192.aspx adresinden ulaşılabilir.
İlgili anahtar oluşturulduktan sonra sıra CSV serialization işlemine geliyor. Bu işlem için aşağıda ki powershell kodunu DSConfig.ps1 ismi ile kayıt edelim.
# DSConfig.ps1
$infoText = “This script will generate the DatasourceGroups.xml file in the current path. Once this file is created merge it with the same file name under %programfiles%\Microsoft DPM\DPM\Config directory on the DPM server. Read the documentation for more details.”
echo $infoText
$header = “<?xml version=`”1.0`” encoding=`”utf-16`”?> `n <DatasourceGroup xmlns:xsi=`”http://www.w3.org/2001/XMLSchema-instance`” xmlns:xsd=`”http://www.w3.org/2001/XMLSchema`” xmlns=`”http://schemas.microsoft.com/2003/dls/GroupDatasourceByDisk.xsd`”>”
$footer = “</DatasourceGroup>”
import-module -name FailoverClusters
$dir = [guid]::NewGuid()
md $dir
$cluster = get-Cluster
$FQDN = $cluster.Name + “.” + $cluster.Domain
$res = get-clusterresource | where-object { $_.ResourceType.Name -eq “Virtual Machine Configuration”}
foreach ($r in $res)
{
$VmObj = Get-ClusterParameter -inputobject $r | where {$_.Name -eq “VmStoreRootPath”} # Identifies the CSV volume on which the VM is hosted.
$VmName = Get-ClusterParameter -inputobject $r | where {$_.Name -eq “VmId”}
$vol = $vmobj.Value.Split(“\”)[2] # $vol will return to us the Volume<number> of the CSV on which the VM resides.
$line = “<Datasource DatasourceName=`”” + $VmName.Value +”`”” + ” ProtectedServerName=`”” + $r.OwnerGroup.Name + “.”+ $FQDN +”`”” + ” WriterId=`”66841cd4-6ded-4f4b-8f17-fd23f8ddc3de`” />”
echo $line >> $dir\$vol # File VolumeX will contain entries for all VMs hosted on CSV VolumeX
}
echo $header > DataSourceGroups.xml
$filelist = dir $dir\*
$GroupEndString = “</Group>”
foreach ($file in $filelist)
{
$GroupBeginString = “<Group GroupName=`”” + $file.Name + “-” + $FQDN + “`”>” # Group name is kept VolumeX itself
echo $GroupBeginString >> DataSourceGroups.xml
type $file >> DataSourceGroups.xml # Consolidating groups pertaining to all the volumes.
echo $GroupEndString >> DataSourceGroups.xml
}
Remove-Item -Force -Recurse $dir
echo $footer >> DataSourceGroups.xml
Yukarıda ki script çalıştırıldığında cluster üzerinde ve CSV volume veya volume leri üzerinde bulunan sanal makinelerin listesini DataSourceGroups.xml isimli bir dosyanın içerisine eklemekte. İlgili dosyanın içeriği aşağıda ki gibi olacaktır.
NOT: Eğer script in çalıştırılmasına izin verilmiyor ise powershell için RemoteSigned izninin olduğundan emin olunmalıdır. Bunun için Set-ExecutionPolicy remotesigned komutunun çalıştırılıp çıkan soruya Yes denilmesi yeterli olacaktır.
NOT: DSConfig.ps1 dosyası çalıştırıldığında DataSourceGroups.xml dosyası script in çalıştırıldığı klasör içerisinde oluşturulacaktır.
NOT: CSV ortamına yeni bir sanal makinenin eklenmesi ya da var olan bir sanal makinenin çıkarılması gibi bir durum olduğunda bu script in tekrar çalıştırılarak sonucunda oluşan dosyanın eskisi ile yer değiştirilmesi gerekmektedir.
Elde edilen DataSourceGroups.xml dosyası DPM hizmeti veren sunucu üzerinde C:\Program Files\Microsoft DPM\DPM\Config altına kopyalanmalıdır. Kopyalama işleminin tamamlanmasının ardından eğer listede bulunan sanal makineleri içeren bir Protection Group bulunuyor ise bu grup modify seçeneği kullanılarak bir değişiklik olmasa bile bu sayede değişikliğin ilgili protection grupa da uygulanması sağlanmış olur.
NOT: Eğer DPM sunucusu ile birden fazla Hyper-V cluster yapısı yedekleniyor ise bu işlemin her cluster ortamında ki bir node üzerinde uygulanması gerekmektedir. Ancak bu işlem sonucunda birden fazla DataSourceGroups.xml dosyası oluşacağı için bu dosyaların birleştirilmesi gerekmektedir. Bu işlem için bir DataSourceGroupsçxml dosyası DPM sunucusunda ilgili yere kopyalandıktan sonra diğer dosyalarda ki <Group> </Group> arasında bulunan içerik kopyalanarak <DatasourceGroup> altına kopyalanmalıdır. Böylece DataSourceGroups.xml dosyası içerisinde bir <DatasourceGroup> içerisinde tüm cluster ortamlarında ki CSV volume lerinde bulunan sanal makinelerin listesi birden fazla <Group> </Group> altında birleşmiş olacaktır.
Bu işlemin ardından ilgili protection group yedekleme işlemine başladığında herbir sanal makinenin yedeklenme işleminin tamamlanması beklenerek ardından diğer sanal makinenin yedekleme işlemine geçilecektir. Yedekleme işlemi aşağıda ki gibi görüntülenecektir.
Bu makalemde sizlere serialization yöntemi kullanılarak protection grubunda ki sanal makinelerin teker teker yedeklenmesi için yapılması gereken işlemleri anlatmaya çalıştım.
Faydalı olması dileğimle…
1 Response
[…] makinelerinizi yedeklemek için serialization işleminin nasıl yapılacağına ilişkin makaleme http://www.mhakancan.com/hyper-v-csv-disklerinde-ki-sanal-makinelerin-dpm-ile-yedeklenmesinde-serial…adresinden […]