【问题标题】:Copy Custom VM image from one resource group to other (in same subscription)将自定义 VM 映像从一个资源组复制到另一个(在同一订阅中)
【发布时间】:2017-03-14 16:32:14
【问题描述】:

我正在尝试使用用于 .net 的 Azure 资源管理库从自定义 VM 映像创建模板部署。可以通过使用上述库创建资源组并部署所需资源(使用模板文件)来实现该目标。要求在删除资源组时,我还需要删除在资源组中创建 VM 时创建的 Vhd。但是如果我删除资源组,则不会删除 vhd 文件,因为它是在不同的资源组中创建的(因此存在不同的存储帐户,存在 vm 映像)并且事实上,自定义 vm 映像需要在创建时存在将托管您的虚拟机的 vhd 的相同存储帐户。我无法删除包含自定义图像的存储帐户。那么,有没有一种方法可以使用 .Net 的资源管理库将自定义图像 (vhd) 从存储帐户复制到我新创建的资源组的存储帐户? 或者是否有任何其他解决方法可以在不删除自定义 vm 映像的情况下删除创建的 vm 的 vhd??

【问题讨论】:

    标签: azure azure-resource-manager azure-sdk-.net


    【解决方案1】:

    使用 Microsoft Azure 存储资源管理器

    复制/粘贴 VHD

    存储帐户 A\Blob 容器\上传

    存储帐户 B\Blob Containers\uploads

    【讨论】:

      【解决方案2】:

      在模板部署期间无法复制 blob,目前提供的存储资源不支持模板部署期间的数据平面操作。您可以将其分解为多个部署,例如:

      1. 将新 VM 的存储帐户部署到新资源组中
      2. 运行代码以将 VHD 的自定义映像复制到新资源组中的新存储帐户
      3. 将 VM 部署到新资源组

      但是 - 如果您通过代码执行此操作,最简单的方法可能是在删除包含 VM 的资源组之前获取操作系统 VHD 的 URI。然后在删除该 RG 后,删除该 blob。此 PowerShell 代码将为您提供 VM 的 vhd blob 的 uri(.net SDK 将类似)。

      (Get-AzureRmVm -ResourceGroupName [name of RG]).StorageProfile.OsDisk.Vhd.Uri
      

      如果您在 RG 中有多个 VM,那么您将获得一个数组,您可以对其进行迭代。

      【讨论】:

      • 是的,有道理。我正在考虑的另一种方法可能是创建一个不同的容器(在包含 vm 基本映像的存储帐户中)并将创建的 vm(来自基本映像)的 vhd 保存到该容器中,并在需要时删除该容器..跨度>
      • 这实际上是我为我的一些人所做的,需要存储帐户和 VM 位于同一位置,这可能意味着保留基本映像的多个副本。
      • @bmoore-msft 你能给我一些关于以下问题的指导吗? stackoverflow.com/questions/42933466/…
      • 看起来已经有了很好的反应 - 如果由于某种原因这不起作用,请 lmk...
      【解决方案3】:

      另一种可能的解决方法是将 vhd 文件从存储帐户下载到本地文件系统,然后删除容器或存储帐户,随心所欲。然后将本地系统上的这个 vhd 文件推送到您新创建的 azure 存储帐户,

      Add-azureRmVhd -Destination 'newstorageaccounturi' -LocalFilePath 'C:\users....\' -NumberOfUploaderThreads 5
      

      虽然,我不明白你为什么要删除这个创建的虚拟机的vhd?您要为其附加不同的磁盘吗?

      【讨论】:

      • 实际上在我的场景中,虚拟机将在特定时间后被删除,如果它的 vhd 没有被删除,那么从长远来看,它会增加存储成本,因为要创建的虚拟机太多并删除。
      猜你喜欢
      • 1970-01-01
      • 2021-09-30
      • 2020-03-28
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多