Azure Azure Storage

Managed Disk Kullanan Virtual Machine’lerin Region’lar Arası Taşınması

Avatar
Written by Emre Martin

Çeşitli sebeblerden dolayı Managed Disk kullanan Azure VM’lerinizi region’lar arası taşımak isteyebilirsiniz. Azure Managed Disk’ler Azure IaaS VM’nin disk yönetimini, VM diskleriyle ilişkili depolama hesaplarını yöneterek basitleştirir, ancak bu durum, farklı region’larda managed diskler oluşturmak için depolama hesaplarında VHD dosyalarının kullanılmasını da engeller.

Azure Managed Disk

Peki Managed Disk Kullanan VM’leri Region’lar arası nasıl taşıyabiliriz ? 

Managed Disk VM Migration Checklist:

1. Virtual Machine Snapshot’ının alınması
2. Hedef Region’da Storage Account ve Container oluşturulması
3. Snapshot’un hedef Storage Account’a VHD olarak kopyalanması
4. Kopyalanan VHD’den VM Disk oluşturulması
5. Hedef lokasyonda (West Europe) VM’in Oluşturulması

West Europe Region’ina taşınmak istenen Virtual Machine:

http://emremartin.com/wp-content/uploads/2018/10/ManagedDiskMigration1-1024x393.png

Değişkenler:

$ResourceGroupName = “RG_EmreMartin”
$Sourcelocation = “West US”
$Vmname =”VMPROD001″
$NewVmName =”VMPROD002″
$skuName =”Standard_LRS”
$TargetLocation =”West Europe”
$StorageAccount =”vmprod001migration”
$DiskSize =”128″
$StorageType =”Standard_LRS”
$Vmsize = “Standard_A1”
$virtualNetworkName =”RG_EmreMartin”

Notes:

$NewVmName : Taşınacak VM ismi farklı olmak zorundadır . Aynı ismi kullanmak istiyorsanız işlemlere başlamadan önce Virtual Machine’i  portal üzerinden “Deleted” yaparak komut setlerindeki $NewVmName parametresini $Vmname ile değiştirmeniz gerekmektedir.

$virtualNetworkName: Benim ortamında taşınacak VM mevcut Virtual Network’e dahil edilecektir. Taşıma işlemlerine başlamadan önce ilgili region’da bir Virtual Network oluştuduğunuza emin olun.

PowerShell ile AzureRM Account’ımıza login olarak çalışmayı yapacağımız Subscription’i seçiyoruz.

Login-AzureRmAccount

Select-AzureRmSubscription -SubscriptionId 97037a45-XXXXXXXXX

1. Virtual Machine Snapshot’ının alınması

$vm = get-azurermvm -ResourceGroupName $resourceGroupName -Name $vmName
$snapshot = New-AzureRmSnapshotConfig -SourceUri $vm.StorageProfile.OsDisk.ManagedDisk.Id -Location $Sourcelocation -CreateOption copy
New-AzureRmSnapshot -Snapshot $snapshot -SnapshotName “$vmname.SnapShot” -ResourceGroupName $resourceGroupName

2. Hedef Region’da Storage Account ve Container oluşturulması

New-AzureRmStorageAccount -ResourceGroupName $resourceGroupName -Name $StorageAccount -SkuName $skuName -Location $TargetLocation | New-AzureStorageContainer -name vhds -Permission Container
$storageAccountKey=(Get-AzureRmStorageAccountKey -ResourceGroupName $resourceGroupName -AccountName $StorageAccount).Value[0]

#SAS Key ve Storage Context oluşturulması

$sas=(Grant-AzureRmSnapshotAccess -ResourceGroupName $ResourceGroupName -SnapshotName $snapshotName -Access Read -DurationInSecond 7200)
$destinationContext = New-AzureStorageContext –StorageAccountName $StorageAccount -StorageAccountKey $storageAccountKey

3. Snapshot’un hedef Storage Account’a VHD olarak kopyalanması

Start-AzureStorageBlobCopy -AbsoluteUri $sas.AccessSAS -DestContainer vhds -DestContext $destinationContext -DestBlob “$StorageAccount.vhd”

Yukarıdaki komut ile VHD kopyalama işlemini başlattıktan sonra diğer adımlara geçmeden kopyalama işleminin tamamlandığına (Success) emin olunuz. Kopyalama durumunun kontrol etmek için:

Get-AzureStorageBlobcopystate -Container vhds -blob “$StorageAccount.vhd” -Context $destinationContext

Managed Disk Kullanan Virtual Machine'lerin Region'lar Arası Taşınması

4. Kopyalanan VHD’den VM Disk oluşturulması

$sourceVHDURI=(Get-AzureStorageBlob -blob $StorageAccount.vhd -context $destinationContext -Container vhds).ICloudBlob.uri.AbsoluteUri
$diskConfig = New-AzureRmDiskConfig -AccountType $storageType -Location $TargetLocation -CreateOption Import -StorageAccountId $storageAccountId -SourceUri $sourceVHDURI
New-AzureRmDisk -Disk $diskConfig -ResourceGroupName $resourceGroupName -DiskName $StorageAccount

*Dilerseniz oluşturmuş olduğumuz diski (Unmanaged) daha sonra Managed Disk’e çevirebilirsiniz.

https://docs.microsoft.com/en-us/azure/virtual-machines/windows/convert-unmanaged-to-managed-disks

5. Hedef lokasyonda (West Europe) Virtual Machine Oluşturulması

#Mevcut Virtual Network’in Tanımlanması
$virtualNetwork = Get-AzureRmVirtualNetwork -ResourceGroupName $resourceGroupName -Name $virtualNetworkName

#NIC ve Public IP ‘nin oluşturulması

$publicIp = New-AzureRmPublicIpAddress -Name “$vmname.ip” -ResourceGroupName $ResourceGroupName -Location $targetlocation -AllocationMethod Dynamic
$networkInterface = New-AzureRmNetworkInterface -ResourceGroupName $resourceGroupName -Name “$vmname”-Location $targetlocation -SubnetId $virtualNetwork.Subnets[0].Id -PublicIpAddressId $publicIp.Id

Virtual Machine’in Hazırlaması

$destinationContext = New-AzureStorageContext –StorageAccountName $StorageAccount -StorageAccountKey $storageAccountKey
$vmConfig = New-AzureRmVMConfig -VMName $NewVmName -VMSize $Vmsize
$blob=Get-AzureStorageBlob -Container vhds -Context $destinationContext -Blob $blobname
$diskid=$blob.ICloudBlob.Container.Uri.AbsoluteUri
$VHDurl=”$diskid/$StorageAccount.vhd”
$vmConfig = Set-AzureRmVMOSDisk -VM $vmConfig -Name “$StorageAccount.vhd” -VhdUri $VHDurl -CreateOption Attach -Windows
$vmConfig = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $networkInterface.Id

6. Azure Virtual Machine’nin Oluşturulması

$vm = New-AzureRmVM -VM $vmConfig -Location $targetlocation -ResourceGroupName $resourceGroupName

West Europe Region’ina taşınan Virtual Machine:

Azure Managed Disk Migration Between Region

Faydalı olması dileğiyle.

Managed Disk Kullanan Virtual Machine’lerin Region’lar Arası Taşınması

Managed Disk Migration Between Regions.

 

Yazar Hakkında

Avatar

Emre Martin

Cloud Solutions Architect