Azure迁移托管磁盘虚拟机到新账号下

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Azure迁移托管磁盘虚拟机到新账号下相关的知识,希望对你有一定的参考价值。

先决条件:

导出托管磁盘VHD文件到存储账户时,需要关闭虚拟机操作。同时,请您记录好哪些是OS磁盘,哪些是数据磁盘。

官方参考文档: https://docs.azure.cn/zh-cn/articles/azure-operations-guide/virtual-machines/aog-virtual-machines-howto-export-managed-disks
https://docs.azure.cn/zh-cn/storage/common/storage-use-azcopy
https://docs.azure.cn/zh-cn/virtual-machines/windows/create-managed-disk-ps
https://docs.azure.cn/zh-cn/articles/azure-operations-guide/virtual-machines/aog-virtual-machines-managed-disks-qa-os-cannot-create-vm

需要安装Azure Powershell 模块,可参考https://docs.azure.cn/zh-cn/powershell-install-configure

具体步骤:

步骤一:导出托管磁盘VHD到原订阅存储账户下(旧订阅)

#登录Azure Account
Add-AzureRmAccount -EnvironmentName AzureChinaCloud

# 设置订阅ID(如此账户下只有一个订阅,此步骤可省略)
$subid = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ###替换为您的订阅ID
Select-AzureRmSubscription -SubscriptionID $subid

#将目标存储账号的信息赋予变量
$destStorageAccount = Get-AzureRmStorageAccount -ResourceGroupName <Resource Group Name for Dest Storage Account> -Name <Dest Storage Account Name>;

#获取托管磁盘的拷贝权限
$diskAccess = Grant-AzureRmDiskAccess -ResourceGroupName <Resource Group Name for Managed Disk> -DiskName <Managed Disk Name> -DurationInSecond 36000 -Access Read;

#将托管磁盘导出成VHD拷贝到目标存储账户,vhds为存储账户中的container名称
Start-AzureStorageBlobCopy -AbsoluteUri $diskAccess.AccessSAS -DestContainer "vhds" -DestContext $destStorageAccount.Context -DestBlob <Dest VHD Name>;

#查看拷贝进度
get-AzureStorageBlobCopyState -Blob <Dest VHD Name> -Container"vhds" -Context $destStorageAccount.Context -WaitForComplete

步骤二:从原有订阅存储账户下的VHD文件复制到新Azure账户订阅的存储账户下

#安装、使用AzCopy将原有存储账户下的VHD文件复制到新Azure账户订阅下的存储账户https://docs.azure.cn/zh-cn/storage/common/storage-use-azcopy
AzCopy /Source:https://sourceaccount.blob.core.chinacloudapi.cn/mycontainer1 /Dest:https://destaccount.blob.core.chinacloudapi.cn/mycontainer2 /SourceKey:key1 /DestKey:key2 /Pattern:abc.txt

步骤三:从存储帐户中的非托管磁盘创建托管数据磁盘(新订阅)

#将资源组,位置,托管数据磁盘的名称,非托管磁盘的URL赋予变量
$rgName = "myResourceGroup"
$location = "China North"
$diskName = "myDisk"
$vhdUri = "https://mystorageaccount.blob.core.chinacloudapi.cn/vhds/myDisk.vhd"

#创建托管数据磁盘
$disk1 = New-AzureRmDisk -DiskName $diskName -Disk (New-AzureRmDiskConfig -AccountType StandardLRS -Location $location -CreateOption Import -SourceUri $vhdUri) -ResourceGroupName $rgName

步骤四:更改OS托管磁盘的OsType,从而能够使用Portal上的“创建VM”按钮创建虚拟机(新订阅)

#查询托盘磁盘信息,缺失 OsType 的托管磁盘会被视作是数据磁盘,需要更新该托管磁盘的 OsType 来赋予正确的键值
Get-AzureRmDisk -ResourceGroupName "<资源组名称>" -DiskName "<托盘磁盘名称>"

#将托盘磁盘信息赋予给变量
$Disk = Get-AzureRmDisk -ResourceGroupName "<资源组名称>" -DiskName "<托盘磁盘名称>"

#输入托盘磁盘的 OsType
$Disk.OsType = "Linux" <-根据虚拟机 OS 类型选择 Windows 或者 Linux

#手动更新托盘磁盘的信息
Update-AzureRmDisk -ResourceGroupName "<资源组名称>" -DiskName "<托盘磁盘名称>" -Disk $Disk

在 Azure 门户 上重新查看该托盘磁盘的信息,可以看到 “创建 VM” 的按钮了,继续创建虚拟机了。

以上是关于Azure迁移托管磁盘虚拟机到新账号下的主要内容,如果未能解决你的问题,请参考以下文章

Azure上A/D系列虚拟机到DS系列迁移

Azure Site Recovery批量迁移本地虚拟机到云端

Azure复制虚拟机--托管磁盘

Azure虚拟机的磁盘管理

迁移虚拟机到AWS EC2的两种方式

VDI跨池迁移后DDC电源管理异常