如何使用" Specialized"捕获Azure VM映像VM创建类型使用电源shell?或如何创建RM VM的专用映像?

时间:2016-12-21 09:46:27

标签: image azure virtual-machine azure-resource-manager azure-powershell

我知道有两种类型的虚拟机映像,一般化和专业化。

  1. 如果操作系统已通用 /取消配置,则必须关闭虚拟机才能将其捕获为VM映像。将VM捕获为VM映像后,将自动删除虚拟机。

  2. 如果操作系统专用,则可以在虚拟机运行或关闭时捕获虚拟机。捕获的虚拟机保持不变。如果需要应用程序一致性或跨磁盘捕获,我们建议在捕获VM映像之前关闭虚拟机。

  3. 这里我试图捕获图像而不关闭VM(专业化)。 我有以下代码使用PowerShell捕获图像。

    Save-AzureRmVMImage -ResourceGroupName $rgame -VMName $vmname  -DestinationContainerName $container -VHDNamePrefix $vhdname
    

    但上面的代码会抛出错误,如下所示

    Save-AzureRmVMImage : Capture operation cannot be completed because the VM is not generalized.
        ErrorCode: OperationNotAllowed
        ErrorMessage: Capture operation cannot be completed because the VM is not generalized.
        StatusCode: 409
    

    我发现我可以使用 Set-AzureRmVM

    将VM设置为广义
    Set-AzureRmVM -ResourceGroupName 'CaptureVmImageRG' -Name 'CaptureVmImage' -Generalized 
    

    无论如何,我可以将VM设置为专业化并捕获图像。有人可以提供一个有效的Powershell命令来创建一个专门捕获正在运行的VM以备份'时间点'目的,或任何其他机制,例如资源探索者。

    提前致谢。

1 个答案:

答案 0 :(得分:1)

命令Save-AzureRmVMimage和Set-AzureRmVM用于捕获通用图像。在运行两个cmdlet之前,您应该登录到VM并使用Sysprep来准备硬盘。

在ARM模式下,对于Specialized图像,我认为您不需要使用cmdlet来捕获图像。 您可以将VHD复制到另一个存储帐户。复制的VHD是专用图像。您可以使用VHD重新创建包含数据的新VM。 根据我的知识,您最好在VM停止时复制VHD。更多信息请参阅article

我认为使用Azure恢复服务保险库是一种更好的解决方案。 Azure支持自动备份VM,无需停止VM。您可以轻松恢复VM。更多信息请参阅article