今天主要是讲Azure VM如何从地理区域A迁移到地理区域B的过程。

应用场景:同一订阅下的存储A中的vhd复制到存储B中。A复制到B, 只需要用到A的vhd链接。

目前有一台azure vm在中国东部,存储账号也是中国东部。

p_w_picpath

我们假设我们要把VM迁移到中国北部,按照一般的想法和做法,是直接就保留磁盘再删除虚拟机的动作。

p_w_picpath

p_w_picpath

可以在磁盘那边看到我们保留下来的磁盘vhd文件(需要等候几分钟,因为azure存储是有缓存的);

p_w_picpath

新建虚拟机(注意:位置显示的是中国东部,我们继续试下能否创建vm处于北部的)

p_w_picpath

不能创建北部的虚拟机;

p_w_picpath

我想大家都明白了,主要是虚拟机vhd文件处在的存储位置是中国东部,所以关联vm的vhd也只能是东部的区域位置。

p_w_picpathp_w_picpath

我们如何将虚拟机从东部迁移到北部呢,重点就是迁移vhd的存储位置。因为Azure的存储blob默认是地域冗余的。

p_w_picpath

来了,扯淡就到这了,我们开始迁移vhd吧。

首先,没用过Windows Azure Powershell的小伙伴,麻烦下载链接:https://www.microsoft.com/web/handlers/webpi.ashx/getinstaller/WindowsAzurePowerShell.3f.3f.3fnew.appids

1.打开Microsoft Azure Powershell,输入Get-AzurePublishSettingsFile -Environment AzureChinaCloud,来获取Azure的订阅账号信息;

p_w_picpath

p_w_picpath

2.导入刚才的文件;

输入:import-AzurePublishSettingsFile “****.publishsettings”

p_w_picpath

3.需要在不同区域位置存储账号(东部和北部)vhds容器配置公共容器;

p_w_picpath

4.定义要迁移到中国北部存储账号名称以及密钥;

输入:$context = New-AzureStorageContext -StorageAccountName " StorageAccountName " –storageaccountkey "storageaccountkey " -endpoint "core.chinacloudapi.cn"

PS:命令的-endpoint "core.chinacloudapi.cn" 表明指定到中国区Azure,如果不指定,会指向global azure。

p_w_picpath

p_w_picpath

5.从东部的存储blob迁移到北部的存储blob

输入:Start-AzureStorageBlobCopy -SrcUri URL -DestContainer vhds(容器名字不要搞错了) -DestBlob copy.vhd(要重新命名的) -DestContext $context

SrcUri 就是刚才虚拟机vm的存储url

p_w_picpath

p_w_picpath

速度很快,基本是秒迁移的。

6.迁移完vhd,我们就要把刚才的vhd创建到磁盘;

p_w_picpath

噔噔,这么操作会报错的。报错是租约凭据冲突。

p_w_picpath

p_w_picpath

为什么呢。我咨询过世纪互联的support,得到的答复是缓存导致。但是真实的情况是这样的么?我足足试过等了半个多小时等候所谓缓存去除时间,后来我自己尝试自己的办法,解决了这个问题。

我个人看法是vhd有一个唯一的标识码,当vhd还是处于磁盘或者镜像的时候,其实azure已经把这个唯一标识给了磁盘vhd,除非是这个vhd不作为一个磁盘或者镜像,才可以新建,于是乎,我就保留关联vhd。

p_w_picpath

p_w_picpath

终于可以新建磁盘了

p_w_picpath

新建虚拟机

p_w_picpathp_w_picpath