如您需要技术咨询、解决方案定制、故障排除、运维监控等服务,可联系ericwcn#at#163.com。

跨存储账户、跨区域(东部/北部)迁移磁盘和虚拟机

云计算 立杰 394℃ 0评论

在使用Windows Azure的过程中,由于上海世纪互联机房UPS火灾,导致部分虚拟机运行故障,由于Azure无法确定故障的修复时间,因此在故障发生后决定紧急将虚拟机和磁盘进行迁移。
本案例中具体涉及了跨存储账户、跨区域复制磁盘镜像VHD文件,并进行重新部署。所有操作需要在Azure Powershell中完成,将磁盘镜像从“东部(上海)”迁移到“北部(北京)”。

获取用于 Windows 和 Linux 的 Windows PowerShell cmdlet 和命令行工具,请前往这里下载

1.获取Azure订阅文件publishsettings

在Powershell中运行如下命令,在打开的网页中登录并下载订阅文件,重命名为:Azure-credentials.publishsettings

Get-AzurePublishSettingsFile –Environment AzureChinaCloud

2.将订阅导入Powershell

Import-AzurePublishSettingsFile D:\Azure-credentials.publishsettings

storage-1

3.如果您管理多个订阅,确认当前默认选择的订阅号

Get-AzureSubscription -Default

storage-2

注意:我这里有个问题是我下载的订阅文件是拥有权限的子账号,但导入Powershell中显示的订阅名称是父账号。
如果需要切换当前订阅号,请使用如下命令:

Select-AzureSubscription -SubscriptionName "订阅名称"

 

4.在Web控制台创建目标区域的存储账户

依次打开:控制台->存储空间->新建
storage-3

5.将订阅号与目标存储账户进行绑定

Set-AzureSubscription -SubscriptionName "目标订阅号" -CurrentStorageAccountName "pdsnorth1"

6.创建目标区域存储账户管理访问密钥

依次打开:控制台->存储空间->存储账户名称(pdsnorth2)->管理访问密钥
记录当前页面中的存储账户名、主访问密钥

Get-AzureStoragekey -StorageAccountName pdsnorth2
注意:Powershell获取存储账户管理访问密钥,需要先将该存储帐户与当前默认订阅号中的“CurrentStorageAccountName”进行绑定。

在Web管理界面中,获取Access Key:
storage-accesskey

7.获取默认订阅号管理的VM,并获取VM系统磁盘URL

查看所有可管理的虚拟机

Get-azureVM

storage-4-2

#获取VM系统盘URL
Get-AzureVM -Servicename 云服务名称 -Name 虚拟机名称 |Get-AzureOSDisk

storage-5

8.开放源区域存储账户公开访问权限

为了在Powershell中从源存储账户负载磁盘VHD文件不用输入访问密钥,需要编辑存储账户中的容器元数据,使其成为公共容器。
依次打开:控制台->存储空间->存储账户账户名称->容器->编辑,在“容器元数据”->“访问”数据元修改成“公共容器”

注意:使用前需现将存储账户与当前默认订阅号进行绑定,否则无法获取信息。
获取存储账户下的所有容器:

Get-AzureStorageContainer

storage-6

修改容器属性:(如果对应容器的PublicAccess = Off才需要修改为Container)

Set-AzureStorageContainerAcl -Permission Container -Name vhds

 

9.配置目标存储账户访问凭证

为了能够通过Powershell访问Azure存储帐号,需要将上文获取的存储帐号的KEY在下面的命令中进行替换

$ObjectContext = New-AzureStorageContext -StorageAccountName <存储账号B的名称> -StorageAccountKey <存储账号B的管理访问密钥> -Environment AzureChinaCloud

10.复制磁盘到目标存储账户

#开始复制磁盘
Start-AzureStorageBlobCopy –SrcUri <需要复制VM系统盘URL> -DestContainer <目标存储账户名称> -DestBlob 复制后的磁盘名称.vhd -DestContext $ObjectContext
#例如:
Start-AzureStorageBlobCopy –SrcUri https://xxxxxx.blob.core.chinacloudapi.cn/vhds/monitor-2015-04-16.vhd -DestContainer pdsnorth2 -DestBlob edsmonitor-disk1-2015-04-16.vhd -DestContext $ObjectContext

#获取复制进度
Get-AzureStorageBlobCopyState -Blob 复制后的磁盘名称.vhd -Container pdsn1 -Context $ObjectContext
#例如:
Get-AzureStorageBlobCopyState -Blob edsmonitor-disk1-2015-04-16.vhd -Container pdsnorth2 -Context $ObjectContext

storage-8

11.从VHD文件创建磁盘

在创建虚拟机时,需要从复制后的vhd文件创建磁盘,才可以在创建虚拟机的时候选择该磁盘创建虚拟机。
依次打开:虚拟机->磁盘->创建,通过文件URL创建磁盘
storage-9

12.创建虚拟机

从创建的磁盘,新建虚拟机即可正常启动系统。

转载请注明:知识库 » 跨存储账户、跨区域(东部/北部)迁移磁盘和虚拟机

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址