你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure Compute Gallery 中存储和共享资源

适用于:✔️ Linux VM ✔️ Windows VM ✔️ 灵活规模集 ✔️ 统一规模集

Azure Compute Gallery 可帮助围绕 Azure 资源(例如映像和应用程序)生成结构和组织。 Compute Gallery 提供:

  • 全局复制。1
  • 资源的版本控制和分组,以便于管理。
  • 支持可用性区域的区域中具有区域冗余存储 (ZRS) 帐户的高可用性资源。 ZRS 提供针对区域性故障的复原能力。
  • 具有本地冗余存储 (LRS) 的高级存储支持。
  • 在社区、订阅和 Active Directory 租户之间共享。
  • 使用每个区域中的资源副本缩放部署。

通过库,你可以与所有人共享你的资源。 或者,可以将共享限制为组织中的特定用户、服务主体或 Active Directory 组。 可以将资源复制到多个区域,以便更快地缩放部署。

1 Azure Compute Gallery 服务不是全局资源。 对于灾难恢复方案,最佳做法是在单独的区域中至少具有两个库。

映像

若要详细了解如何在 Azure Compute Gallery 中存储映像,请参阅在 Azure Compute Gallery 中存储和共享映像

VM 应用

尽管可以创建预安装了应用的虚拟机 (VM) 的映像,但每次应用程序变化时都需要更新映像。 将应用程序安装与 VM 映像隔开意味着无需在每次更改代码行后发布新的映像。

若要详细了解如何在 Azure Compute Gallery 中存储应用程序,请参阅 VM 应用程序

区域支持

所有公共区域都可以是目标区域,但某些区域要求客户完成请求过程才能获得访问权限。 若要请求将订阅添加到澳大利亚中部或澳大利亚中部 2 等区域的允许列表中,请提交访问请求

限制

使用 Azure Compute Gallery 部署资源时,适用以下限制:

  • 每个区域每个订阅最多可以有 100 个库。
  • 每个区域每个订阅最多可以有 1,000 个映像定义。
  • 每个区域每个订阅最多可以有 10,000 个映像版本。
  • 每个映像版本最多可以有 100 个副本。 然而,对于大多数用例,50 个副本应该足够了。
  • 映像大小应小于 2 TB;但你可以使用浅层复制来支持更大的映像大小(最高 32 TB)。
  • Azure Compute Gallery 资源不支持资源移动。

有关详细信息以及如何检查当前使用情况的示例,请参阅根据限制检查资源使用情况

扩展

使用 Azure Compute Gallery,可以指定你希望保留的副本数。 在多个 VM 部署方案中,可以将 VM 部署分散到其他副本。 此操作降低了单个副本重载阻碍实例创建过程的可能性。

使用 Compute Gallery,可以在规模集中部署最多 1,000 个 VM 实例。 你可以根据区域的规模需求,在每个目标区域中设置不同的副本数。 由于每个副本都是资源的副本,因此该方法有助于使用每个额外的副本线性扩展部署。

虽然我们了解没有两个资源或区域是相同的,但是,需要遵循下面有关如何在区域中使用副本的一般原则:

  • 对于并行创建的每 20 个 VM,我们建议保留一个副本。 例如,如果要使用区域中的同一映像同时创建 1,000 个 VM,建议至少保留映像的 50 个副本。
  • 对于并行创建的每个规模集,建议保留一个副本。

由于资源大小、内容和 OS 类型等因素,我们始终建议超额预配副本数。

显示如何缩放映像的关系图。

高可用性

Azure ZRS 针对区域中可用性区域的故障提供复原能力。 使用 Azure Compute Gallery 的正式版,可以选择将映像存储在具有可用性区域的区域中的 ZRS 帐户中。

你还可以为每个目标区域选择帐户类型。 默认存储帐户类型为 Standard_LRS,但你可以选择具有可用性区域的各区域的 Standard_ZRS。 有关 ZRS 的区域可用性的详细信息,请参阅 Azure 存储冗余

显示区域冗余存储的关系图。

复制

使用 Azure Compute Gallery 还可以自动将资源复制到其他 Azure 区域。 你可以根据组织的需要,将每个映像版本复制到不同的区域。 例如,始终在多个区域复制最新的映像,而只在一个区域提供所有旧映像。 此方法可帮助你节省存储成本。

创建资源后,可以更新该资源要复制到的区域。 复制到其他区域所需的时间取决于要复制的数据量以及版本复制到的区域数。 在某些情况下,此过程可能需要几个小时。

在复制过程中,可以查看其每个区域的状态。 在一个区域中完成映像复制后,可以在该区域中使用该资源部署 VM 或规模集。

显示跨区域复制映像的关系图。

Azure Compute Gallery 映像的受信任启动验证目前为预览版。 此预览版仅用于测试、评估和反馈目的。 建议不要将它用于生产工作负荷。

注册预览版时,即表示你同意补充使用条款。 此功能的某些方面可能会随着正式发布版本而更改。

发生变化的内容

从 API 2025-03-03 开始,所有新的 Compute Gallery 映像定义默认为:

  • hyperVGeneration: V2
  • SecurityType: TrustedLaunchSupported

可信启动验证的工作原理

当在 Compute Gallery 映像定义中指定 TrustedLaunchSupportedTrustedLaunchandConfidentialVMSupported 时,平台会自动验证映像是否支持受信任启动。 平台将验证结果添加到映像版本属性。 此作可确保如果验证成功,则使用这些映像的 VM 和规模集部署可以默认为“受信任的启动”。

如何启用预览版

若要尝试对 Compute Gallery 映像进行受信任启动验证,请完成以下步骤:

  1. 将受信任启动注册为默认功能
  2. 注册受信任启动验证预览版

启用这两项功能后,所有使用 Compute Gallery 映像版本并成功验证受信任的新 VM 和规模集部署默认为受信任启动安全类型。

以下部分比较了 Compute Gallery 映像中 VM 部署的当前行为和新行为,具体取决于受信任启动验证。

当前行为(在没有可信启动验证的情况下)

若要为 Compute Gallery 创建受信任启动支持的 Gen2 OS 映像定义,需要在部署中添加以下 features 元素:

"features": [
    {
      "name": "SecurityType",
      "value": "TrustedLaunchSupported"
    }
],
"hyperVGeneration": "V2"

受信任启动验证的新行为

如果部署满足以下任何条件,则默认情况下在新 Compute Gallery 映像定义上启用 TrustedLaunchSupported

  • API 版本 2025-03-03 或更高版本用于 Microsoft.Compute/galleries 资源
  • 缺少 SecurityType 功能
  • SecurityType 功能的 null

此外,Azure 平台会触发对 OS 映像的验证,以确保其支持受信任启动功能。 验证至少需要一小时。 结果可用作映像版本属性:

"validationsProfile": {
  "executedValidations": [
      {
        "type": "TrustedLaunch",
        "status": "Succeeded",
        "version": "0.0.2",
        "executionTime": "2025-07-10T21:27:33.0113984+00:00"
      }
    ],
}

可以选择通过将 Standard 设置为 features 下的 SecurityType 的值,明确绕过新 Compute Gallery 映像定义的默认值:

"features": [
    {
      "name": "SecurityType",
      "value": "Standard"
    }
],
"hyperVGeneration": "V2"

共享

在 Azure Compute Gallery 中共享映像有三种主要方式,具体取决于要与哪些用户共享:

共享对象: 人员 服务主体 特定订阅或租户中的所有用户 与 Azure 中的所有用户公开共享
基于角色的访问控制 (RBAC) 共享
RBAC + 直接共享库
RBAC + 社区库

注意

可以使用具有读取权限的映像来部署虚拟机和磁盘。

使用直接共享库时,映像将广泛分发给订阅或租户中的所有用户。 社区库公开分发映像。 共享包含知识产权的图像时,请谨慎使用以防止广泛分发。

RBAC

由于库、定义和版本都是资源,因此可以使用内置 Azure RBAC 角色共享它们。 使用 Azure RBAC 角色时,可与其他用户、服务主体和组共享这些资源。 甚至可以与创建资源的租户之外的个人共享访问权限。

用户获得对资源版本的访问权限后,便可使用该权限来部署 VM 或虚拟机规模集。 以下是一个共享矩阵,可以帮助你了解用户有权访问哪些内容:

与用户共享 Compute Gallery 图像定义 映像版本
Compute Gallery
图像定义

我们建议在库级别共享,以获得最佳体验。 建议不要共享单独的映像版本。 有关 Azure RBAC 的详细信息,请参阅分配 Azure 角色使用 RBAC 共享

直接与租户或订阅共享

可以为特定的订阅或租户提供对直接共享库的访问权限。 与租户和订阅共享库使它们能够对你的库进行只读访问。 有关详细信息,请参阅与订阅或租户中的所有用户共享库

重要注意事项

  • 直接共享库的功能目前处于预览阶段,并受 Azure Compute Gallery 预览条款的约束。

  • 若要在预览期间将图像发布到直接共享库,需要注册预览版。 从直接共享库创建 VM 的功能将对所有 Azure 用户开放。

  • 在预览版期间,需要新建一个库,并将 sharingProfile.permissions 属性设置为 Groups。 使用 Azure CLI 创建库时,请使用 --permissions groups 参数。 不能使用现有库,当前无法更新该属性。

  • 当前无法从另一个租户与你共享的映像创建灵活的虚拟机规模集。

限制

在预览版期间:

  • 只能与预览版中的订阅共享。

  • 最多可以共享 30 个订阅和 5 个租户。

  • 直接共享库不能包含加密的映像版本。

  • 只有订阅所有者、分配到 Compute Gallery 且在订阅或库级别共享管理员角色的用户或服务主体,才能启用基于组的共享。

要与所有 Azure 用户共享库,可以创建社区库。 拥有 Azure 订阅的任何人都可以使用社区库。 创建 VM 的人员可以使用 Azure 门户、REST API 或 Azure CLI 浏览与社区共享的图像。 向社区共享图像是 Compute Gallery 的一项新功能。

可以将映像库公开,并与 Azure 客户共享。 当图库被标记为社区图库时,其中的所有映像都将作为 Microsoft.Compute/communityGalleries 中的一种新资源类型,供所有 Azure 客户使用。 Azure 客户可以查看映像库,并使用它们创建虚拟机。 该类型 Microsoft.Compute/galleries 的原始资源仍属于您的订阅并保持私有。

有关详细信息,请参阅使用社区库共享映像

活动日志

活动日志显示库、映像或版本上的最近活动。 此信息包括任何配置更改以及创建和删除项的时间。

可以在 Azure 门户中查看活动日志,或创建诊断设置,将日志发送到 Log Analytics 工作区。 在工作区中,可以查看一段时间内的事件,或使用其他收集的数据对其进行分析。

下表列出了一些与活动日志中库操作相关的示例操作。 有关可能的日志条目的完整列表,请参阅 Microsoft.Compute 资源提供程序选项

Operation 说明
Microsoft.Compute/galleries/write 创建新的库或更新现有库
Microsoft.Compute/galleries/delete 删除库
Microsoft.Compute/galleries/share/action 共享具有不同范围的库
Microsoft.Compute/galleries/images/read 获取库映像的属性
Microsoft.Compute/galleries/images/write 创建新的库映像或更新现有库映像
Microsoft.Compute/galleries/images/versions/read 获取库映像版本的属性

计费

使用 Azure Compute Gallery 服务不会产生额外的费用。 但是,需要为以下资源付费:

  • 每个副本的存储成本。 对于映像,存储成本按快照收取。 它基于映像版本占用的大小、映像版本的副本数以及版本复制到的区域数量。
  • 将第一个资源版本从源区域复制到目标区域的网络出口费用。 后续副本将在区域内进行处理,因此不会产生额外的费用。

例如,假设:

  • 你有一个 127 GB 的 OS 磁盘映像,它只占用了 10 GB 的存储空间,并且你有一个 32 GB 的空数据磁盘。 每个映像的占用大小仅为 10 GB。
  • 将映像复制到三个区域,每个区域有两个副本。 总共有六个快照,每个快照使用 10 GB。

在此示例中,将根据 10 GB 的占用大小向你收取每个快照的存储成本。 你将为要复制到另外两个区域的第一个副本支付网络流出量费用。

有关每个区域中快照定价的详细信息,请参阅托管磁盘定价。 有关网络流出量的详细信息,请参阅带宽定价

最佳做法

  • 为了防止映像被意外删除,请在库级别使用资源锁。 有关详细信息,请参阅 锁定 Azure 资源来保护基础结构

  • 在可用的位置中使用 ZRS,实现高可用性。 创建映像或 VM 应用程序的版本时,可以在复制选项卡中配置 ZRS。 有关哪些区域支持 ZRS 的信息,请参阅 Azure 区域列表

  • 为生产映像保留至少三个副本。 对于并行创建的每 20 个 VM,我们建议保留一个副本。

    例如,如果同时创建 1000 台 VM,应保留 50 个副本。 (每个区域最多可以有 50 个副本。)若要更新副本计数,请转到库并选择映像定义>映像版本>更新复制

  • 为生产和测试映像维护单独的库, 不要将它们放在单个库中。

  • 对于灾难恢复方案,在单独的区域中至少具有两个库。 你仍然可以在其他区域中使用映像版本,但如果一个库所在的区域出现故障,则无法创建新的库资源或更新现有库资源。

  • 创建映像定义时,使发布者产品/服务SKU 与 Azure 市场映像保持一致,以便轻松地识别 OS 版本。

    例如,如果要从 Azure 市场自定义 Windows Server 2019 映像并将它存储为计算库映像,请使用在 Azure 市场映像中使用的同一发布者产品/服务SKU

  • 如果要在 VM 或规模集创建期间排除特定映像版本,请在发布映像时使用 excludeFromLatest。 请参阅库映像版本 - 创建或更新

  • 如果要排除特定区域中的版本,请使用 regionalExcludeFromLatest,而不是全局 excludeFromLatest。 可以同时设置全局和区域 excludeFromLatest 标志,但区域标志优先。

      "publishingProfile": {
        "targetRegions": [
          {
            "name": "brazilsouth",
            "regionalReplicaCount": 1,
            "regionalExcludeFromLatest": false,
            "storageAccountType": "Standard_LRS"
          },
          {
            "name": "canadacentral",
            "regionalReplicaCount": 1,
            "regionalExcludeFromLatest": true,
            "storageAccountType": "Standard_LRS"
          }
        ],
        "replicaCount": 1,
        "excludeFromLatest": true,
        "storageAccountType": "Standard_LRS"
      }
    
  • 为防止意外删除复制的区域并防止出现中断,在映像版本上将 safetyProfile.allowDeletionOfReplicatedLocations 设置为 false。 还可以在 Azure CLI 中使用 allow-replicated-location-deletion 来设置此属性。

    {
    "properties": { 
      "publishingProfile": { 
        "targetRegions": [ 
          { 
            "name": "West US", 
            "regionalReplicaCount": 1, 
            "storageAccountType": "Standard_LRS", 
            // encryption info         
          }
        ], 
         "replicaCount": 1, 
         "publishedDate": "2018-01-01T00:00:00Z", 
         "storageAccountType": "Standard_LRS" 
      }, 
      "storageProfile": { 
         "source": { 
           "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Compute/images/{imageName}" 
        }, 
      }, 
      "safetyProfile": { 
         "allowDeletionOfReplicatedLocations" : false 
       }, 
    }, 
    "location": "West US", 
    "name": "1.0.0" 
    } 
    
  • 若要在终止支持日期之前阻止删除映像,请设置 BlockDeletionBeforeEndOfLife。 此功能有助于防止意外删除。 blockdeletionbeforeendoflife在 REST API 中使用 设置。

SDK 支持

以下 SDK 支持创建库:

模板

可以使用快速启动模板创建 Azure Compute Gallery 资源: