捕获arm非托管磁盘虚拟机,并进行还原

Posted 铭的随记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了捕获arm非托管磁盘虚拟机,并进行还原相关的知识,希望对你有一定的参考价值。

 

背景:非托管磁盘虚拟机“hlmcen69n1”,附加了一块100GB的数据磁盘。由于arm非托管磁盘机器无法通过Portal界面直接“Capture”,故只能通过命令行的方式进行捕获并还原,以下是通过Powershell命令进行的操作

 

1.在虚拟机内部执行一般化的操作【Linux机器:waagent -deprovision+user; Windows机器:sysprep】,本文以Linux机器为例进行说明

Linux机器:

 

Windows机器:

 

2.在Portal界面关闭该虚拟机,以便释放资源

 

 

 3.通过Azure Powershell对虚拟机执行“Generalized”标记

PS C:\\Users\\he.liming> Set-AzureRmVM -ResourceGroupName hlmrgn -Name hlmcen69n1 -Generalized
OperationId :
Status      :
StartTime   :
EndTime     :
Error       :

 

4.执行完一般化的操作后,虚拟机就无法启动了

 

 

 5.执行以下命令,捕获虚拟机【目前测试,捕获完成后,原虚拟机也未被删除】

PS C:\\Users\\he.liming> Save-AzureRmVMImage -ResourceGroupName hlmrgn -Name hlmcen69n1 -DestinationContainerName “vhdscature” -VHDNamePrefix "capture"
OperationId :
Status      : Succeeded
StartTime   : 2017/9/26 17:32:24
EndTime     : 2017/9/26 17:32:25
Error       :

 

6. 执行完上述操作后,原虚拟机使用的存储账号中会生产一个container,名称为“system”,在该容器的下级目录中可以找到捕获后生成的VHD文件【包含数据磁盘及操作系统磁盘】及json文件

 

7.将上述脚本文件download到本地,查看其内容

    a.可以根据需求,更改存储账号,容器及OSdisl名称

    b.注意到Json脚本中有一个参数为“networkInterfaceId”,需要事先创建一个网络接口,并将其对应的资源ID拷贝出来,待创建虚拟机时使用【备注:创建网络接口时,默认情况下public IP是Disabled,最好手动Enabled,否则创建的虚拟机没有公网IP】

 

  c.可以通过json脚本修改虚拟机size

 

 8.使用调整过的json模板创建新的机器"hlmcen69n2"

PS C:\\Users\\he.liming> New-AzureRmResourceGroupDeployment -ResourceGroupName hlmrgn -TemplateFile "C:\\Users\\he.liming\\Desktop\\capture-hlmcen69n1.json"

cmdlet New-AzureRmResourceGroupDeployment at command pipeline position 1
Supply values for the following parameters:
(Type !? for Help.)
vmName: hlmcen69n2
adminUserName: stone
adminPassword: ************
networkInterfaceId: /subscriptions/******/resourceGroups/hlmrgn/providers/Microsoft.Network/networkInterfaces/hlmcen69n2-nic


DeploymentName          : capture-hlmcen69n1
ResourceGroupName       : hlmrgn
ProvisioningState       : Succeeded
Timestamp               : 2017/9/27 2:27:18
Mode                    : Incremental
TemplateLink            :
Parameters              :
                          Name             Type                       Value
                          ===============  =========================  ==========
                          vmName           String                     hlmcen69n2
                          vmSize           String                     Standard_A1
                          adminUserName    String                     stone
                          adminPassword    SecureString
                          networkInterfaceId  String                  /subscriptions/******/resourceGroups/hlmrgn/providers/Microsoft.Network/networkInterfac

Outputs                 :
DeploymentDebugLogLevel :

 

 9.新部署的机器“hlmcen69n2”,可以成功连接使用,并且数据磁盘也会成功还原

 

以上是关于捕获arm非托管磁盘虚拟机,并进行还原的主要内容,如果未能解决你的问题,请参考以下文章

42.从非托管磁盘创建虚拟机

CentOS7.3托管磁盘虚拟机扩容数据磁盘

虚拟机删除以后,主机磁盘空间没有还原。

托管代码和非托管代码

Azure之批量创建虚拟机(托管磁盘)

Azure运维系列11:Azure托管磁盘转非托管磁盘