SaltStack常用组件使用 SaltStack配置文件说明 轻量级DNS、DHCP服务软件DNSMASQ 千万级PV(日)的移动应用架构如何实现 高效运维最佳实践-运维自动化之殇 Ubuntu 14.04 Linux如何配置静态IP地址和DNS服务器 ELK 常见错误与解决办法 Elasticsearch 集群配置管理常用操作 常用数字证书格式相互转换-OpenSSL/Keytool/Jks2pfx ELK 综合日志归档分析系统(2)-Logstash安装配置 Elasticsearch之Shield认证与权限管理 ELK 综合日志归档分析系统(1)-Elasticsearch-Redis安装配置 Redmine 3.2 安装配置指南 CentOS6 大型web系统数据缓存设计 Redis 集群方案 Linux 内核TCP优化详解 SaltStack初始化安装配置 OpenLDAP常用操作 OpenLDAP统一身份认证 [CentOS6/7] 构建Linux Skype Message消息推送API服务(Zabbix集成告警) Tomcat 生产服务器性能优化 Zabbix结合iptables监控网络流量 Linux操作系统环境配置与优先级问题 深入 NGINX: 我们如何设计性能和扩展 Windows SQL Server 性能计数器详细说明 Windows性能计数器说明 Ubuntu安装openntpd报错:Starting openntpd: /etc/openntpd/ntpd.conf: Permission denied locale: Cannot set LC_ALL to default locale: No such file or directory OpenSSL拆解p12证书公约和私钥 Linux sar 统计系统性能(网卡、内存和交换空间、CPU资源等) Linux Shell /dev/null 2>&1 含义 Windows 2003操作系统网络不通 构建私有yum安装源镜像站点(openstack) CentOS6/RedHat6新增网卡识别问题 Ubuntu 14.04 Server优化与使用问题解决 Redhat/CentOS6系统使用ntfs-3g挂载NTFS分区 Linux GPT挂载超过2TB磁盘 Linux系统性能优化、测试和监控工具梳理 修复WIN2003远程桌面服务无法访问 解决CentOS“Zabbix discoverer processes 75% busy”的问题 REHL/CentOS安装phpMyadmin

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

2015年12月08日

在使用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.创建虚拟机

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

转载请注明:自动化运维 » 跨存储账户、跨区域(东部/北部)迁移磁盘和虚拟机