在使用Azure VM的过程中,我们可能会遇到移动虚拟机的需求,比如从区域A移动到区域B去,甚至有可能需要跨订阅的对虚拟机进行迁移。在以前我们通过Azcopy可以很方便的完成存储的迁移,今天我们要分享的是通过Azure Storage Explorer来完成存储迁移,再通过Azure PowerShell快速的完成其他资源的迁移。

首先,我们需要在Azure Storage Explorer里面添加不同订阅的帐户。然后找到源虚拟机的VHD文件,右键选择copy。

然后我们直接在目标存储帐户对应的blob容器中进行粘贴。

我们可以在下方看到存储迁移的进度,也可以通过PowerShell更直观的看到VHD的移动进展。

然后在存储帐户中找到Blob存储,找到对应的VHD文件,并复制它的URL。

接下来就要用到我们的PowerShell了,如果没有安装,请在以下地址下载最新版Azure PowerShell:
https://github.com/Azure/azure-powershell/releases

关于更多安装和使用Azure PowerShell的文章请浏览:
http://reinember.blog.51cto.com/2919431/1857099

然后我们通过PowerShell 完成登录,这里我的环境还是国内由世纪互联提供的Azure服务。
Login-AzureRmAccount -EnvironmentName azurechinacloud

然后我们提前定义以下变量信息:
$VMNAME = "虚拟机名称"
$RG="资源组"
$VNETNAME=$RG+"-VNET"
$SUBNETNAME=$RG+"-SUBNET"
$NSGNAME=$RG+"-NSG"
$OSDN = $VMNAME + "_OSDisk"
$OSDU = "https://rstorageaccount.blob.core.chinacloudapi.cn/vhds/XXXXXXXXXXXXXXXXX.vhd"
$LOC="China North"
以上信息的命名是自定义的,其中OSDU是我们前面复制的VHD的URL地址。

然后我们通过以下命令来重建虚拟网络:
$vnet=New-AzureRmVirtualNetwork -Name $VNETNAME -ResourceGroupName $RG -Location $LOC -AddressPrefix 11.0.0.0/24

通过以下命令重建网络安全规则:(可以使用多条此命令添加多个规则)
$nsgrule = New-AzureRmNetworkSecurityRuleConfig -Name RDP -Description "Allow RDP" -Access Allow -Protocol Tcp -Direction Inbound -Priority 100 -SourceAddressPrefix Internet -SourcePortRange -DestinationAddressPrefix -DestinationPortRange 3389

然后使用以下命令重建网络安全组:
$nsg = New-AzureRmNetworkSecurityGroup -ResourceGroupName $RG -Location $LOC -Name $NSGNAME -SecurityRules $nsgrule

重新添加子网配置:
Add-AzureRmVirtualNetworkSubnetConfig -Name $SUBNETNAME -VirtualNetwork $vnet -AddressPrefix 11.0.0.0/24 -NetworkSecurityGroup $nsg

完成子网配置:
$vnet=Set-AzureRmVirtualNetwork -VirtualNetwork $vnet

通过以下命令获取子网ID:
$subnet = Get-AzureRmVirtualNetworkSubnetConfig -Name $SUBNETNAME -VirtualNetwork $vnet
可以通过以下命令检查输出结果:
$subnet.id 

重新为虚拟机创建公网IP地址,当然这是按需创建的,在此命令中我们可以指定是创建动态公网地址还是静态公网地址,通过AllocationMethod参数进行控制。
$pip =New-AzureRmPublicIpAddress -Name $VMNAME"-PIP" -ResourceGroupName $RG -Location $LOC -AllocationMethod Static -IpAddressVersion IPv4 -Force

重新为虚拟机创建网络接口卡,也就是虚拟机的网卡。需要使用到我们前面已经创建好的子网、公网IP地址以及网络安全组信息。
$nic = New-AzureRmNetworkInterface -Name $VMNAME"-NIC" -ResourceGroupName $RG -Location $LOC -SubnetId $subnet.id -PublicIpAddressId $pip.id -NetworkSecurityGroupid $nsg.id

一切就绪,将所有配置信息全部添加到我们虚拟机的配置信息中,其中VMSize是可以自己控制的,如果不清楚当前区域有哪些虚拟机大小,可以通过Get-AzureRmVMSize命令来查看。
$vmconfig = New-AzureRmVMConfig -VMName $VMNAEME -VMSize Standard_D2 |Set-AzureRmVMOSDisk -Name $OSDN -VhdUri $OSDU -CreateOption Attach -Windows | Add-AzureRmVMNetworkInterface -Id $nic.id -Primary

最后一步当然是创建虚拟机了,通过新建虚拟机命令,完成虚拟机的迁移重建,这里我没有截图,完成之后会有一个返回创建成果的显示:
New-AzureRmVM -ResourceGroupName $RG -Location $LOC -VM $vmconfig

完成之后,就可以在管理门户中,查看虚拟机的状态了,如果是正在运行,那就已经迁移完成了,整个过程还是非常简单的,可以快速、跨地域的完成虚拟机迁移,再也不用担心虚拟机位置不能变的问题了。

本文转自 reinxu 51CTO博客,原文链接:http://blog.51cto.com/reinember/2045558,如需转载请自行联系原作者

Azure运维系列10:跨订阅迁移ARM虚拟机相关推荐

  1. Azure运维系列 3:善用Azure捕获功能事半功倍

    在使用虚拟机的过程中,肯定会使用到虚拟机模板,从而简化我们的日常操作.如果没有虚拟机模板可能需要花费很多的时间来创建多个相同环境的虚拟机,所以在使用Azure的时候我们会发现Azure本身已经有不少的 ...

  2. Azure运维系列 4:安装和使用Azure PowerShell管理云

    前面讲到了很多的管理方式,包括Azure中国最近更新的预览版管理门户和Azure云助理,都是非常不错的管理Azure的方式,今天我们再来介绍一种更加高效的管理方式Azure PowerShell.熟悉 ...

  3. linux 运维高级脚本生成器,Linux运维系列,Shell高级脚本自动化编程实战

    课程文件目录: Linux自动化运维系列 Shell高级脚本自动化编程实战 [6.1G] ┣━━01.Shell基础概述 [315.1M] ┃ ┣━━1-1 Shell脚本体系概述.mp4 [154. ...

  4. linux pv命令,linux运维系列pv指令

    原标题:linux运维系列pv指令 Linux运维相对于其他的工作来说要简单一些,因为它不需要掌握那么多的编程语言,不需要进行技术开发,是很多学历不高但是想转行IT业人员的不错的选择,今天荣新科技就来 ...

  5. 猿创征文 | DevOps运维的10个日常使用工具分享

    猿创征文 | DevOps运维的10个日常使用工具分享 一.DevOps介绍 1.DevOps的简介 2.个人分享的10个工具导航 二.jenkins 1.jenkins介绍 2.jenkins的优点 ...

  6. 【Linux 运维系列】Ubuntu 运维总结

    [Linux 运维系列]Ubuntu 运维总结 [1]Ubuntu 更新源 各版本源地址查询 阿里源 : https://developer.aliyun.com/mirror/ubuntu 清华源 ...

  7. 自动化运维系列之Cobbler (资源)

    2019独角兽企业重金招聘Python工程师标准>>> 下图为开源自动化运维体系链: 1.cobbler实现自动装机 2.saltstack实现工程自动化配置 3.kubernete ...

  8. django项目转pyc_Python自动化运维系列:Django搭建小博客

    如何使用Django和Python怎么搭建一个小博客呢? 这是一个简单而困难的问题.简单的原因是,只要做过一次,基本上就能做到举一反三: 困难的原因是有没有用心和耐心去完成这个实验. 如果你成功了,那 ...

  9. Office365跨订阅迁移邮箱-批量导出用户PST文件

    之前我有文章提到怎么通过PST去实现跨林的Exchange数据迁移,那么我们在实际工作中会遇到客户使用Office365,由于某种原因公司要剥离或者要收购其他公司,涉及到要做Office365订阅迁移 ...

最新文章

  1. Angular:Promise.all()的具体应用
  2. python博客开发教程_Django 博客开发教程 12 - 评论
  3. python tensorflow 智能家居_TensorFlow平台下的视频目标跟踪深度学习模型设计
  4. 数据科学的发展_数据科学的发展与发展
  5. 第一百五十二期:白话Entity Framework Core数据验证
  6. python3怎么使用qstring_PyQt的QString和python的string的区别
  7. matlab中prod函数、mean函数、median函数——小白MAT LAB学习笔记
  8. 验证下《指数基金投资指南》中的策略是否有效
  9. Beer Mugs(思维)
  10. python统计词频瓦尔登湖_点评《瓦尔登湖》
  11. HDU6069(区间筛)
  12. 商业插画师走尺印象:只为做生活的设计师
  13. 怎样下载苹果 Apple Store 官方 APP 里的限时免费应用福利?
  14. vs c语言打印心形情书,最美C语言情书(输出心形图案).doc
  15. Ubuntu18.04下 安装SMPlyer视频播放器 设置倍速播放
  16. 日本计划建造世界上速度最快的超级计算机
  17. 力扣417题太平洋大西洋水流问题
  18. 腰肌劳损患者自我保健方法
  19. Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached
  20. luogu P1373 小a和uim之大逃离

热门文章

  1. flask secure_filename 不能识别中文名的解决办法
  2. CLion使用WSL的cmake报错解决: configure_file Problem configuring file Call Stack (most recent call first):
  3. 报错解决:undefined reference to `snappy::MaxCompressedLength(unsigned long)'
  4. mybatis 报错最终解决 :argument type mismatch
  5. 命令模式的优点?_一篇目录复习完设计模式
  6. 【NIO】Selector
  7. 在CentOS8下安装docker遇到的containerd.io >= 1.4.1解决方法
  8. 指针 与 swift 中的引用
  9. jlinkarm目标程序和boot文件一起刷_华硕游戏手机Rog2代ROOT后wifi不能开启-刷回官方系统实用教程...
  10. linux windows并发模型,Linux并发服务器模型四 -- poll