欢迎光临
我们一直在努力

创建由 Azure Arc 启用的 Azure Local 虚拟机

未经同意,请勿转载!

TL;DR:在 Azure Local(基于 Azure Stack HCI 构建的本地分布式基础设施)上创建由 Azure Arc 启用的虚拟机,本质是把本地 Hyper-V 工作负载纳入 Azure 的管理平面;Azure Local VM 的创建本身不依赖 Azure Arc——是否启用 Guest Management 仅决定 VM 是否同时具备 Arc-enabled server 的扩展能力(Azure Policy、Update Manager、Defender for Cloud 等),不影响 VM 能否创建、能否运行、能否被本地工具运维。本文按四个章节展开:概念边界 → 创建前准备 → 创建路径 → 之后运维。

术语约定:本文首次使用 Azure Local VM(亦称 Azure Local VMs enabled by Azure Arc)这一微软官方表述,统一简称为 Azure Local VM,不再混用"Arc VM / Arc-enabled VM"等其他变体。


全局视图

第一章确立"是什么 / 不是什么"以及 Arc 的边界;第二章按四前置资源 + 五维准备搭起执行清单;第三章用五种路径把 VM 创建出来;第四章把 Guest Management 启用、日常管理与责任边界收口。


第一章:概念边界与 Azure Arc 的作用范围

目标读者:刚接触 Azure Local 的架构师、评估团队、技术决策者。

核心问题:Azure Local VM 究竟是什么?是不是必须启用 Azure Arc 才能用?两个 Agent 怎么区分?

§1.0 总体架构图(强烈推荐先看)

本节是整篇文章最应该出现的一张图——先看这一张图,再看后续 §1.1~§1.7 详细组件说明,能让 Azure Local VM 的运行机制一次看清。

关键识别:

  • 红色框(Arc Resource Bridge):Azure Local VM 作为 ARM Resource 存在的必需基础设施
  • 蓝色框(Custom Location):ARM 把请求路由到本地的目标
  • 黄色框(Azure Local 平台栈):VM 运行所在的底层平台
  • 淡蓝框(Guest Agent 层):VM 与 Azure / Azure Arc 通信的代理——其中 mocguestagent 必须,Connected Machine Agent 可选

架构视角:自上而下,依次是"Azure 控制平面 → Arc 基础设施 → 本地管理集群 → Azure Local 平台栈 → Hyper-V → VM → Guest Agent"。8 层关系一旦读懂,§1.1~§1.7 详细组件说明都只是这张图各层的展开。


§1.1 一句话定义

按 微软官方文档(What is Azure Local VM management) 口径:

Azure Local VM management enables IT admins to provision and manage Windows and Linux VMs hosted in an on-premises Azure Local environment.

Azure Local VM 是运行在 Azure Local 上的、通过 Azure Arc 资源桥(Arc resource bridge)以 Azure 资源形式呈现的虚拟机。它由 Azure Local 平台承载(底层仍是 Hyper-V + Failover Cluster + Azure Stack HCI OS),由 Azure Arc 提供 Azure 一致性的管理体验。

§1.2 Azure Local VM 不是什么

这是企业评估阶段最常见的误解来源——明确以下"不是什么"是划清边界的捷径:

误读

准确表述

Azure Local VM = 公有云 Azure VM

不是。Azure Local VM 始终运行在客户数据中心;它获得的是 Azure 的管理一致性,不是 Azure 的物理资源。它在 Azure 侧表现为 ARM Resource,类型为 Microsoft.AzureStackHCI/virtualMachineInstances,而不是 Azure 中"运行在 Azure 数据中心的 Azure VM"那种 ARM Resource 类型。

创建 Azure Local VM 完全不依赖 Azure Arc

不是这一简化表述。从 Azure 端创建 / 删除 / 启停 / 状态查询 Azure Local VM 依赖 Azure Arc Resource Bridge + Custom Location + mocguestagent 这一整套 Azure Arc 基础设施。详见 §1.5。

Azure Local VM = Edge Region

不是。Edge Region 专指公有云的 Azure Edge Zone,与 Azure Local 是不同抽象层级的事物。

第一类 Azure 资源 / 一级资源 / First-class Resource

不是。微软官方未使用 "First-class Resource" 这一术语描述 Azure Local VM。微软对 Azure Local VM 的官方表述接近"纳入 Azure 资源管理体系,与 Azure 其他资源保持一致的管理体验"——这是体验描述,不是 first-class 断言。

Hybrid Machine 类型

不是当前主流表述。微软当前主流表述倾向 Arc-enabled machine / Arc-enabled server,"Hybrid Machine" 在较新文档中较少使用。

§1.3 Azure Local VM 管理的关键组件

按 官方 overview 文档 表述,Azure Local VM 管理由多个组件协同支撑。理解整个 Azure Local 平台栈是理解 VM 管理组件的前提。

§1.3.0 Azure Local 平台栈(VM 管理的运行环境)

Azure Local 平台的组成远超"HCN + Hyper-V"。下表是完整平台栈——不仅仅是 VM 管理组件,还包括 Azure Local 实例本身的所有支撑组件:

组件

角色

操作系统层

Azure Stack HCI OS

每节点的宿主操作系统

虚拟化层

Hyper-V

第一类虚拟机监控器,承载 Guest VM

集群层

Failover Cluster

故障转移与高可用

存储层

Storage Spaces Direct(S2D)+ ReFS + BitLocker

分布式存储

网络层

SDN(Software Defined Networking)

包括 Network Controller、Load Balancer、Gateway 等(取决于部署模式)

Azure Arc 基础设施层

Arc Infrastructure / Arc Resource Bridge

用于 Azure 控制平面延伸到本地(不是 VM 本身的依赖,是 Arc 集成的基础)

多服务管理层

MOC(Microsoft On-premises Cloud)

Azure Local 内部的多服务管理层

资源提供程序层

Resource Providers(Compute RP / Storage RP / Network RP / Gallery RP / Upgrade RP 等)

Azure Local 平台内的资源提供程序,VM 通过 Compute RP 暴露

客户机代理层

Cloud Agent(mocguestagent)/ Guest Agent

Guest OS 内运行,与平台通信

运维管理层

Azure Local Management Services / Azure Config Agent

平台自身的更新、合规、遥测

重要:Azure Local 平台栈远远不止"Hyper-V + FC + HCI OS"。VM 管理工作负载依托在这一整套平台栈上,理解这一点有助于理解为何某些操作(如 ARM 层资源映射)依赖 Arc Infrastructure 与 Compute RP。上述平台栈中,只有 Compute Resource Provider、Arc Resource Bridge、Management Cluster 等组件直接参与 Azure Local VM 生命周期管理;其余组件属于 Azure Local 平台运行基础设施,为 VM 管理提供底层能力。

§1.3.1 VM 管理四大关键组件

按 官方 overview 文档 表述,Azure Local VM 管理由下列四大关键组件协同支撑:

组件

角色

部署时机

适用版本

Azure Arc resource bridge

预打包虚拟设备(本地 VM),承载一个 Arc-enabled K8s 集群;包含 MOC、Compute RP、多个 Kubernetes cluster extension;作为"本地管理集群"

Azure Local 2405/250x 以后部署流程中通常自动创建;早期版本(2311 之前)需独立部署

详见当前 OEM Support Matrix 与官方文档

Custom Location

表示 Azure Local 实例的 Azure 资源;ARM 创建请求通过它路由到本地 Arc Resource Bridge

在 Azure Local 部署时创建;或在 Arc Resource Bridge 部署时自动关联

各版本

Infrastructure logical network

Azure Local 基础设施组件使用的管理网络——包括 Arc Resource Bridge、本地管理集群、MOC、Resource Providers、Kubernetes cluster extension 等

Azure Local 部署时自动创建

各版本

Kubernetes cluster extension

安装在 Arc resource bridge 内 K8s 集群上的多个扩展;实现 VM 生命周期核心业务逻辑(电源操作、磁盘 / 网卡挂载、GPU 分配)

Azure Local 部署时自动安装

各版本

§1.4 Azure Local VM 总体架构图(强烈推荐先看这一张)

这是理解 Azure Local VM 工作原理的总览图——从用户操作入口到 Guest OS 自下而上分八层。强烈建议先看这一张图,再看后续组件介绍。

图的阅读顺序:

核心问题

① Azure ARM

资源建模:VM 在 Azure 侧是 ARM Resource,类型为 Microsoft.AzureStackHCI/virtualMachineInstances

② Custom Location

路由:ARM 把针对 Azure Local 实例的请求路由到本地的 Arc Resource Bridge

③ Arc Resource Bridge

本地 K8s 集群:包含 MOC + Compute RP + 内置 K8s extension

④ 本地管理集群

业务逻辑:电源操作 / 磁盘 / 网卡 / GPU 挂载

Azure Local 平台栈

平台运行时:底层不止 HCI OS,而是含 SDN / RP / Cloud Agent 等完整栈

⑤ Hyper-V

虚拟化引擎:vCPU / vRAM / vTPM / 虚拟 NIC / 虚拟磁盘

 ⑥ VM

Guest OS:实际工作负载

 Guest Agent

双向通信:mocguestagent(必须)+ Connected Machine Agent(可选)

§1.5 必备小节——精确理解 Azure Arc 与 Azure Local VM 的依赖关系

单独列出,是因为企业实施过程中最容易被误解。"Azure Local VM 不依赖 Azure Arc 也能跑"是一种不准确的简化——准确的关系需要把 "Azure Arc" 拆解成至少三个独立组件理解。

§1.5.1 一个常见误区

v1.x 版本本文曾表述为"Azure Arc 让 Azure Local VM 多了一些 Azure 能力,但 Azure Local VM 本身不靠 Arc 也能跑"。这一表述意图对,但存在以下两个层次的偏差:

  • 读者容易理解为"Azure Arc 整体是可选的"——而实际上 Azure Local VM 作为 Azure ARM Resource 的存在,依赖 Arc Resource Bridge + Custom Location + mocguestagent 这一整套 Azure Arc 基础设施。
  • 不区分"VM 创建 / 运行 / 在 Azure 侧可见"三类问题——它们对 Arc 各组件的依赖并不相同。
  • §1.5.2 Arc 组件的三层拆分(关键)

    为消除歧义,把"Azure Arc"按 Azure Local VM 场景拆分为三层独立组件,并标明各自对 VM 创建 / 运行 / Azure 可见性的依赖关系:

    Arc 组件

    是否为 Azure Local VM 的必要组件

    控制平面归属

    角色

    Azure Arc Resource Bridge(含其内置的 Arc-enabled K8s 集群 + Kubernetes cluster extension)

    ✅ 是——Azure Local VM 作为 ARM Resource 生命周期管理的必要基础设施

    Azure Arc 控制平面(本地部署)

    Custom Location 把 ARM 创建请求路由到 Arc Resource Bridge,由其内置的 K8s 集群 + Kubernetes cluster extension 实现 VM 创建 / 删除 / 启停等核心生命周期

    mocguestagent(Azure Local 平台 Guest Agent)

    ✅ 是——VM 创建时自动部署,是 Azure Local 平台与 Guest OS 之间的通信代理

    Azure Local 平台(非 Azure Arc 控制平面)

    平台 ↔ Guest 通信;提供 VM 配置、状态、心跳信号给 Arc Resource Bridge

    Azure Connected Machine Agent(Guest Management)

    ❌ 否——创建完成后可选启用的扩展能力

    Azure Arc 控制平面(Guest 侧)

    在 Guest OS 内执行 Azure Policy、Update Manager、Defender for Cloud 等 Azure 托管扩展

    Custom Location

    ✅ 是——ARM 路由目标

    Azure Arc 控制平面

    把针对 Azure Local 实例的 ARM 请求路由到 Arc Resource Bridge

    az stack-hci-vm CLI 扩展

    是工具,非依赖

    Azure 控制平面

    创建 / 查询 VM 的客户端工具链

    §1.5.3 三类问题对各层组件的依赖

    问题

    是否依赖 Arc Resource Bridge

    是否依赖 mocguestagent

    是否依赖 Connected Machine Agent

    创建 VM(Azure 侧)

    ✅ 必须

    ✅ 自动部署

    ❌ 不需要

    运行 VM(Guest OS 层面)

    不依赖(一旦创建完成)

    ✅ 用于平台 ↔ Guest 心跳

    ❌ 不需要

    VM 在 Azure 门户可见

    ✅ 必须(无 Bridge 无 ARM Resource)

    间接(影响生命周期信号)

    间接(Guest Management = Connected 才完全呈现)

    Azure RBAC 控制 VM 操作

    ✅ 必须(控制的是 ARM Resource)

    不依赖

    不依赖

    Azure Policy Guest Configuration

    不依赖

    不依赖

    ✅ 必须

    Azure Update Manager 打补丁

    不依赖

    不依赖

    ✅ 必须

    Defender for Cloud 扫描

    不依赖

    不依赖

    ✅ 必须

    §1.5.4 关键结论
    • "Azure Local VM 不依赖 Azure Arc" 是不准确的简化表述——准确说法应避免把 "Azure Arc" 作为单一概念;
    • Azure Local VM 的运行(Guest OS 工作负载能否运行)依赖 Azure Local 平台(Hyper-V + Failover Cluster + SDN + S2D + Azure Stack HCI OS + Arc Infrastructure 等整套平台栈,详见 §1.3.1);
    • Azure Local VM 的 Azure 资源生命周期(能否从 Azure 端创建 / 删除 / 启停 / 状态查询)依赖 Arc Resource Bridge + Custom Location + mocguestagent 这一整套 Azure Arc 基础设施;
    • Azure Local VM 的 Azure 侧扩展能力(Azure Policy、Update Manager、Defender for Cloud)依赖 Azure Connected Machine Agent(Guest Management),这是可选的;
    • Guest Management 是创建之后的选择(按 官方文档 表述),启用需 Azure Local 2311.2 或更高版本;
    • 禁用 Guest Management 不影响本地运维——客户仍可通过 WAC、Hyper-V Manager、Failover Cluster Manager 或 PowerShell 继续管理 VM;仅失去 Azure 侧扩展能力;
    • 深入细致看:Azure Local VM 本质是运行在 Azure Local 平台上的、本地 Guest OS 工作负载,通过 Azure ARM 暴露资源视图——其 ARM Resource 生命周期由 Arc Resource Bridge 管理,Guest OS 工作负载由 Hyper-V + Failover Cluster 管理,这两层可以解耦(Azure 连接受影响时本地仍能跑,平台故障时 Azure 可见但 Guest 不可达)。

    一句话:"Arc Resource Bridge 负责把 Azure Local VM 映射为 Azure ARM Resource;mocguestagent 负责 Guest OS 与 Azure Local 平台之间的通信;Azure Connected Machine Agent 负责 Guest OS 与 Azure Arc 服务之间的通信。"三层各司其职。

    §1.6 两个 Agent 的严格区分

    这是另一个企业实施过程中容易混淆的点。

    §1.6.1 一表区分

    维度

    Guest Agent(mocguestagent)

    Azure Connected Machine Agent

    别称

    VM guest agent

    Arc agent

    来源

    Azure Local 平台在 VM 创建时自动部署

    Guest Management 启用时安装

    部署时机

    VM 创建过程中或创建后立即部署

    mocguestagent 运行后,通过 az stack-hci-vm update –enable-agent true 触发

    职责

    Azure Local 平台 ↔ Guest 通信;提供 VM 配置、状态、生命周期信号

    Azure Arc 控制平面 ↔ Guest 通信;承载 VM 扩展执行(Guest Configuration、Update Manager 等)

    部署位置

    客户机(Guest OS)内部

    客户机(Guest OS)内部

    验证方式

    az stack-hci-vm show → instanceView.vmAgent.statuses[].displayStatus = Connected

    Azure 门户 VM Overview → Configuration → Guest Management = Enabled (Connected)

    控制平面归属

    Azure Local 平台

    Azure Arc 控制平面

    §1.6.2 三条铁律
    • mocguestagent 与 Connected Machine Agent 不是同一组件,职责不重叠,不能互相替代;
    • 顺序关系:mocguestagent 必须在 VM 内运行(Connected),才能触发 Guest Management 启用安装 Connected Machine Agent;
    • Windows Server 2012 / 2012 R2 不支持 mocguestagent(缺 Hyper-V sockets 支持,按 Microsoft Learn 关于 Hyper-V sockets 表述),因此也不支持 Guest Management。
    §1.6.3 Guest Management 启用顺序
  • Azure Local 实例必须运行 2311.2 或更高版本;
  • mocguestagent 已在 VM 内运行(状态 Connected);
  • 执行 az stack-hci-vm update –enable-agent true;
  • 在 Azure 门户验证 Configuration → Guest Management = Enabled (Connected)。
  • 一句话:"mocguestagent 让 Azure Local 看到 VM;Connected Machine agent 让 Azure Arc 控制 VM。"

    §1.7 本章小结

    • Azure Local VM 是 Azure Local 平台承载的、以 Azure 资源形式呈现的虚拟机;
    • Azure Local VM 创建依赖 Arc Resource Bridge + Custom Location + mocguestagent(Azure Arc 基础设施层);Guest Management 是创建之后的可选扩展能力;
    • 两个 Agent(mocguestagent 与 Connected Machine Agent)职责不重叠,按顺序部署;
    • 后续章节按"准备 → 创建 → 运维"展开。

    第二章:创建前的资源准备工作

    目标读者:将开始动手实施 Azure Local VM 的运维工程师、平台团队。

    核心问题:在点"创建"按钮或跑 az stack-hci-vm create 之前,需要在 Azure 侧、本地侧、镜像侧、网络侧、工具侧分别准备什么?四个前置资源应按什么顺序准备?

    §2.1 五维准备清单

    按 官方文档(Azure Local VM management prerequisites) 口径,把准备工作拆成五个维度:

    维度

    核心项

    验证方式

    Azure 侧

    有效订阅、适当 RBAC、订阅所在区域在支持清单

    System requirements

    本地侧

    已部署 / 已注册的 Azure Local 实例、Arc 连接已 Connected、Custom Location 与 Arc resource bridge 在当前 Azure Local(2405/250x 以后)部署流程中通常自动创建——以前版本需要 Deploy Cluster → Deploy Arc Resource Bridge → Create Custom Location 三步分开操作

    Azure Local 资源页 Overview > Server

    镜像侧

    至少 1 个 VM image(Marketplace / Storage Account / Local Share),en-us 语言 VHD

    az stack-hci-vm image list

    网络侧

    Logical Network / NIC / 防火墙出站规则满足 Required firewall URLs

    防火墙规则审计

    工具侧

    Azure CLI + stack-hci-vm 扩展(远程路径),或直接连到 Azure Local 实例(部署时已自动安装)

    az extension list

    §2.2 Azure 侧准备

    §2.2.1 订阅与区域
    • 订阅类型不限——文档列出的可选类型包括 Free(学生 / Visual Studio 订阅)、Pay-as-you-go、EA、CSP;
    • 订阅所在区域必须出现在 System requirements for Azure Local 的支持区域清单中;
    • 所有 Azure Local VM 相关实体(Azure Local 实例、Arc resource bridge、Custom Location、VM operator、VM、Arc for Servers guest management)必须注册 / 创建在同一个 Azure 区域(可在同一区域的不同资源组中);
    • 资源组间不需要在同一资源组,但资源组不可移动—— Azure Local VM 及其关联资源不支持移动到其他资源组。
    §2.2.2 RBAC 角色
    • 详见 RBAC roles for Azure Local VM management;
    • 内置 RBAC 角色覆盖 VM 创建、删除、扩展管理等不同操作;建议为不同团队(平台运维 / 应用 owner)分配不同角色。
    §2.2.3 不应忽视的配额约束

    按官方 overview 表述,Azure 订阅与服务存在配额限制——Azure Local VM 同样受 Azure 配额约束。具体配额数字以 Azure subscription and service limits 当期为准。

    §2.3 本地侧准备

    §2.3.1 必备的先决状态
    • Azure Local 实例已部署、已注册(按 Azure Local 部署文档);
    • Azure Local 资源页 Overview > Server 中 Azure Arc 显示为 Connected;
    • 同一 Overview 页面应能看到 Custom Location 与 Azure Arc resource bridge 自动创建的资源条目。
    §2.3.2 Arc Resource Bridge 的版本演进

    Arc Resource Bridge 的部署方式随 Azure Local 版本演进发生了变化——这一点对早期版本升级尤其重要:

    Azure Local 版本

    Arc Resource Bridge 部署方式

    2503 / 2504 以后

    通过 Azure Local 部署向导通常自动创建;与 Cluster 部署、原生集成

    2405

    同样通过部署向导自动创建,但有少量已知差异(详见当期 OEM Support Matrix)

    2311 及更早

    Arc Resource Bridge 独立部署(先部署 Cluster,再单独通过 Azure Arc 流程创建 Bridge),Custom Location 手动创建并关联

    历史背景:早期 Azure Local 与 Arc Resource Bridge 是两个独立运维对象——这种"先 Cluster 后 Bridge"的分阶段部署流程与 250x 版本之后的统一部署有显著差异。本文假定读者使用的版本在 2405 之后;如使用更早版本,请参考当期官方部署文档的具体步骤。

    §2.3.3 关于 Arc Resource Bridge 的删除警告

    按 官方文档 的 Important 提示:

    Azure Arc resource bridge 是 Azure Local VM 管理关键组件,不应删除,除非重新镜像或下线整个 Azure Local 实例。删除 Arc resource bridge 会丢失 Azure 控制平面(但本地工作负载仍可通过 WAC / Hyper-V / PowerShell 访问)。

    如果确实需要删除 Arc resource bridge,必须先删除所有 Azure Local 工作负载资源:

    • Azure Local VM
    • AKS Arc 集群
    • VM images
    • Storage paths
    • Logical networks
    • Network interfaces
    • Virtual hard disks
    • Network security groups

    删除顺序:先工作负载资源 → 再 Arc resource bridge → 最后 Custom Location。

    §2.4 镜像侧准备

    §2.4.1 三种镜像来源

    来源

    适用场景

    关键约束

    Azure Marketplace 镜像

    标准操作系统(Windows Server / Windows Client / Ubuntu LTS 等)

    联网环境;按需下载到本地

    Azure Storage Account 镜像

    企业自定义镜像、私有镜像分发

    需要 Azure 存储账户

    本地共享镜像

    Disconnected Operations / 气隙场景

    需存放在 Cluster Shared Volume,可被所有节点访问

    §2.4.2 镜像语言约束

    按 官方 prerequisites 文档 表述:

    VM image 必须使用 en-us 语言 VHD;其他语言 VHD 在微软当前文档中未明示支持。

    §2.4.3 Windows Server 2012 / 2012 R2 的特殊约束
    • 通过 Azure 门户创建 VM 不支持 Windows Server 2012 / 2012 R2 镜像;
    • 仅能通过 Azure CLI 创建 VM;
    • Windows Server 2012 / 2012 R2 VM 启用 Guest Management 时会失败(缺 Hyper-V sockets 支持);
    • 其余 Guest OS 是否支持 Guest Management,依 Microsoft Learn 关于 Hyper-V sockets 的当期表述。

    §2.5 网络侧准备

    §2.5.1 基础设施逻辑网络(Infrastructure Logical Network)说明

    关键提醒:Infrastructure Logical Network 不只是给 Arc Resource Bridge——还承载 MOC、Kubernetes cluster extension、Compute / Storage / Network 等 Resource Provider 等基础服务。

    Azure Local 部署时自动创建的 Infrastructure logical network 是平台层管理网络,不仅仅是给 Arc Resource Bridge 单独使用。按 官方 requirements 文档 与 requirements-overview,Infrastructure logical network 实际承载以下 Azure Local 内部组件:

    使用方

    是否使用 Infrastructure logical network

    Arc Resource Bridge

    Azure Local 本地管理集群(K8s cluster extension)

    MOC(Microsoft On-premises Cloud)组件

    Azure Local 资源提供程序(Compute / Storage / Network RP 等)

    Cloud Agent(mocguestagent 推送 / 状态收集)

    ✅(间接)

    理解要点:Infrastructure logical network 是 Azure Local 平台基础设施的内部通信网络——与 VM 的 Logical Network(VM 业务网络,§2.7.3)是两个完全独立的网络。把两者混淆会导致错误地把 VM 业务流量放进 Infrastructure 网络,引发安全风险。

    §2.5.2 防火墙出站

    按 Required firewall URLs for Azure Local deployments 文档,确保本地实例与 Azure Arc 通信所需的所有出站 URL 开放。

    §2.5.3 Disconnected Operations 的网络限制

    按 Disconnected operations 文档:

    • 不支持 Proxy 服务器用于出站;
    • 仅 Logical networks 可以浏览使用,门户中可能不会完整加载;
    • Network interfaces 在该模式下仅支持 Azure CLI 创建(不支持门户)。

    §2.6 工具侧准备

    §2.6.1 直接连接到 Azure Local 实例
    • 部署 Azure Local 时已自动安装 Azure CLI 与 stack-hci-vm 扩展;
    • 无需额外操作;
    • 适用一次性 / 调试场景。
    §2.6.2 远程访问

    需在客户端准备:

    工具

    版本要求

    安装

    Azure CLI

    最新版(按当期官方文档)

    Install Azure CLI

    stack-hci-vm 扩展

    与目标 Azure Local 实例匹配

    az extension add –name stack-hci-vm –version "<version>"

    Azure PowerShell(视场景)

    与 CLI 配合或替代

    Install-Module Az

    Terraform(IaC 路径)

    满足 示例 Terraform 配置 的版本组合

    Terraform 官方安装

    §2.6.3 远程登录 Azure CLI

    az login –use-device-code
    az account set –subscription <Subscription ID>

    §2.7 四个前置资源——按顺序准备

    按 官方推荐路径,创建 VM 之前需要按顺序准备 4 个前置资源:

    顺序

    资源

    关键作用

    创建后不可改字段

    1

    Storage Path

    把 CSV 路径暴露为 Azure 资源

    删除前必须先删 VM / Image / Disk

    2

    VM Image

    VM 创建时拷贝镜像(更新 Image 不影响已建 VM)

    同名 Image 创建会失败

    3

    Logical Network

    取代旧版 Virtual Network(2311.2 起)

    Default gateway / IP pools / IP address space / VLAN ID / Virtual switch name

    4

    Network Interface

    关联到 Logical Network,可选静态或动态 IP

    添加静态 IP NIC 必须在 VM 创建前完成

    §2.7.1 Storage Path:ARM Resource <-> CSV 的映射

    Storage Path 是把 CSV 文件夹(物理路径)暴露为 Azure 侧 ARM Resource 的抽象层——理解这一点对后续 VM 部署与运维至关重要。

    映射关系:

    概念

    物理 / 逻辑层

    Azure 侧体现

    Cluster Shared Volume(CSV)

    S2D 提供的共享卷,每节点可见

    物理路径

    Storage Path

    一个 CSV 上的"子目录"

    ARM Resource(Microsoft.AzureStackHCI/storagecontainers)

    Azure Local VM 工作文件(OS 磁盘 + 数据磁盘)

    Storage Path 下的文件

    通过 VM ARM Resource 反向引用 Storage Path

    • 路径示例:C:\\ClusterStorage\\UserStorage_1\\VMPath(物理 CSV 上的子目录)
    • 不指定时:Azure Local 会自动选择高可用存储路径
    • 删除顺序:删除 Storage Path 前,需先删除该路径上的所有 VM / Image / Data disk
    §2.7.2 VM Image
    • VM Image 是快照式资源——VM 创建时会拷贝 Image,更新 Image 不会影响已创建的 VM(微软对此场景的术语:Copy-on-create——Image 始终为冻结快照)
    • 重名 Image 创建会失败
    • 删除 Image 不会导致已部署的 VM 被删除
    §2.7.3 Logical Network
    • 自 Azure Local 2311.2 起,Logical Network 取代了 Virtual Network
    • 旧版本创建的 Virtual Network 不能用于 2311.2 及之后版本——必须手动删除
    • 创建后以下字段不可更新:
      • Default gateway
      • IP pools
      • IP address space
      • VLAN ID
      • Virtual switch name
    §2.7.4 Network Interface
    • 关联到 Logical Network;可选静态或动态 IP
    • 创建 VM 之后不支持添加静态 IP 的 NIC——多 NIC / 静态 IP 必须在 VM 创建前完成
    • 创建 VM 时至少需要一个 NIC——否则 Guest Management 无法启用

    §2.8 本章小结

    • 创建前的准备涉及 Azure 侧、本地侧、镜像侧、网络侧、工具侧 5 个维度;
    • 四个前置资源(Storage Path → VM Image → Logical Network → NIC)必须按官方推荐顺序准备;
    • 部分 Logical Network 字段创建后不可更改,应在创建前一次性规划好;
    • 后续章节开始创建 VM。

    第三章:创建 Azure Local VM 的实操路径

    目标读者:动手创建 VM 的运维工程师、自动化脚本作者。

    核心问题:应该用 Portal / CLI / ARM / Bicep / Terraform 中的哪一种?Trusted Launch、动态内存、Windows Server 2012 这些特殊选项怎么用?

    §3.0 关键背景:Azure Local VM 作为 ARM Resource

    在动手创建之前,需要再次强调:Azure Local VM 在 Azure 端是一个 ARM Resource,而不是 Azure 数据中心的 Azure VM。

    • ARM Resource 类型:Microsoft.AzureStackHCI/virtualMachineInstances
    • 资源提供程序 namespace:Microsoft.AzureStackHCI
    • Microsoft 官方未使用 "First-class Resource" 描述 Azure Local VM——本文沿用微软的 "Azure 资源 / ARM Resource" 表述,不使用 first-class 等社区化叫法(避免被引用扩散)
    • 资源所在 region:与 Azure Local 实例所在的 region 一致(详见 §2.2.1)
    • 跨订阅 / 跨资源组约束:Azure Local VM 及其关联资源(NIC / Image / Storage Path / Data Disk)不支持跨资源组移动——ARM 层限制。

    理解这点的意义:从 Azure 端操作 Azure Local VM(无论是 Portal / CLI / ARM 模板 / Bicep / Terraform)都是针对一个 ARM Resource 发请求;ARM 把请求通过 Custom Location 路由到本地 Arc Resource Bridge,再由本地 K8s cluster extension 转化为对 Hyper-V / Failover Cluster 的调用。Azure 端看到的是 ARM Resource,Guest OS 内看到的是普通虚拟机——这两个视图需要在 §4.3 速查里区分清楚。

    §3.1 五种创建路径对比

    按 官方文档 口径,Azure Local VM 支持 5 种创建路径:

    路径

    适用场景

    前置资源强制项

    自动化能力

    Azure Portal

    一次性创建、图形化、探索性

    RBAC + Image + Custom Location

    单次操作

    Azure CLI

    脚本化、CI/CD、调试

    RBAC + Image + Custom Location + NIC + stack-hci-vm 扩展

    ARM 模板

    跨环境复用、标准化部署

    RBAC + Image + Custom Location + Logical Network + 模板

    高(声明式)

    Bicep 模板

    类型安全 IaC、模块化

    RBAC + Image + Custom Location + Logical Network + 模板

    高(声明式 + 类型安全)

    Terraform

    多云一致 IaC、与现有 Terraform 工作流集成

    RBAC + Image + Custom Location + Logical Network + Terraform + Git

    高(声明式 + 状态管理)

    §3.2 通用参数

    不管走哪条路径,Azure Local VM 创建时的参数集合大体相同。按 官方文档 表格:

    参数

    含义

    备注

    name

    VM 名称

    遵循 Azure 资源命名规则

    admin-username / admin-password

    客户机凭证

    按 Azure 资源命名规则

    image / image-name

    镜像引用

    Image Resource ID 或名称

    location

    Azure 区域(ARM 路由来源)

    必须与订阅所在区域一致

    resource-group

    资源组

    建议与 Azure Local 实例同组

    subscription

    订阅 ID 或名称

    与 VM 同区域

    custom-location

    Custom Location Resource ID

    必填

    authentication-type

    all / password / ssh

    Windows 默认 password;Linux 默认 SSH 公钥

    nics

    NIC 名称或 ID

    至少 1 个,否则 Guest Management 不能启用

    memory-mb / processors

    内存 / vCPU

    不指定时使用默认

    storage-path-id

    Storage Path Resource ID

    不指定时自动选高可用路径

    proxy-configuration

    代理服务器配置(可选)

    按需

    §3.3 Azure CLI 路径详解

    Azure CLI 是最常用的路径——它介于 Portal 与 ARM 模板之间,可脚本化、可调试。

    §3.3.1 登录与订阅选择

    az login –use-device-code
    az account set –subscription <Subscription ID>

    §3.3.2 设置参数(PowerShell 风格示例)

    $vmName = "local-vm"
    $subscription = "<Subscription ID>"
    $resource_group = "local-rg"
    $customLocationName = "local-cl"
    $customLocationID = "/subscriptions/$subscription/resourceGroups/$resource_group/providers/Microsoft.ExtendedLocation/customLocations/$customLocationName"
    $location = "eastus"
    $computerName = "mycomputer"
    $userName = "local-user"
    $password = "<Password for the VM>"
    $imageName = "ws22server"
    $nicName = "local-vnic"
    $storagePathId = "/subscriptions/$subscription/resourceGroups/local-rg/providers/Microsoft.AzureStackHCI/storagecontainers/local-sp"

    §3.3.3 创建标准 VM

    az stack-hci-vm create \\
    –name $vmName \\
    –resource-group $resource_group \\
    –admin-username $userName \\
    –admin-password $password \\
    –computer-name $computerName \\
    –image $imageName \\
    –location $location \\
    –authentication-type all \\
    –nics $nicName \\
    –custom-location $customLocationID \\
    –hardware-profile memory-mb="8192" processors="4" \\
    –storage-path-id $storagePathId

    成功创建标志:输出中 provisioningState = succeeded。

    §3.3.4 Trusted Launch:与 Hyper-V VM 的关键区别

    Trusted Launch 是 Azure Local VM 与"裸 Hyper-V VM"的显著区别之一——许多企业决定迁移到 Azure Local VM 时,Trusted Launch 是重要驱动。

    Trusted Launch 能力清单(按 trusted-launch-vm-overview):

    能力

    机制

    提供的安全保证

    Secure Boot(安全启动)

    启用 UEFI 安全启动链

    防止 Guest OS 启动阶段被 rootkit 注入

    vTPM(虚拟 TPM)

    在 Hypervisor 层提供虚拟 TPM 2.0 芯片

    提供硬件级密钥存储、BitLocker 支持、Attestation

    Measured Boot(度量启动)

    启动链上每个组件的 hash 上报

    可在云端验证启动完整性

    BitLocker 支持

    通过 vTPM 实现

    Guest OS 内的 BitLocker 自动启用

    重要:Secure Boot + vTPM 必须同时启用才能称为 Trusted Launch——单独启用任何一个不算 Trusted Launch。

    §3.3.4.1 创建 Trusted Launch VM

    Trusted Launch 是一种安全类型——创建命令需显式指定 –security-type "TrustedLaunch":

    az stack-hci-vm create \\
    –name $vmName \\
    –resource-group $resource_group \\
    –admin-username $userName \\
    –admin-password $password \\
    –computer-name $computerName \\
    –image $imageName \\
    –location $location \\
    –authentication-type all \\
    –nics $nicName \\
    –custom-location $customLocationID \\
    –hardware-profile memory-mb="8192" processors="4" \\
    –storage-path-id $storagePathId \\
    –enable-secure-boot true \\
    –enable-vtpm true \\
    –security-type "TrustedLaunch"

    创建后验证(Trusted Launch):

    # 1. 找到 VM 所在节点
    Get-ClusterGroup $vmName

    # 2. 在该节点上执行
    (Get-VM $vmName).GuestStateIsolationType
    # 应返回 TrustedLaunch

    Trusted Launch 关键运营约束(按 trusted-launch-vm-overview):

    约束

    说明

    VM Guest State Protection Key

    必须手动备份——无此 Key 无法启动恢复后的 VM

    实时迁移加密

    实时迁移网络默认不加密,强烈建议使用 IPsec 等网络层加密

    备份策略

    备份所有 VM 文件 + VM Guest State Protection Key

    跨实例恢复

    Trusted Launch VM 恢复到不同 Azure Local 实例后,不再归 Azure Arc 控制平面管理,只能通过本地工具管理

    Guest Attestation

    自定义镜像因未验证,不会启用 Guest Attestation

    VM 克隆 / 复制

    不支持(会导致管理错误或启动失败)

    §3.3.5 VM Placement(亲和性 / 反亲和性 / 故障域)

    VM Placement 是 Azure Local VM 的高可用调优机制——许多企业在生产环境中关心"哪些 VM 应该共置 / 哪些 VM 应该分散"。按 官方 VM placement overview 文档,Azure Local VM 支持以下放置策略:

    放置策略

    用途

    Affinity(亲和性)

    把多个 VM 强制放在同一节点——适用低延迟通信场景(数据库主备)

    Anti-affinity(反亲和性)

    把多个 VM 强制分散在多节点——适用同一应用多实例,避免单点故障

    Placement(自定义放置)

    把多个 VM 显式指定在不同节点/特定硬件域

    控制平面

    说明

    配置粒度

    节点、故障域(Fault Domain)、集群

    故障域(Fault Domain)

    Azure Local 通过 Rack Awareness 抽象的硬件拓扑域(rack / chassis / 节点)——VM Placement 可按 Fault Domain 配置

    生产建议(推荐):关键应用的多实例(如 Web Farm、SQL AlwaysOn AG)建议配置 Anti-affinity 跨节点 + 跨 Fault Domain——避免单硬件故障导致整组不可用。

    详细参数与配置示例见 官方 VM placement 配置文档。

    §3.3.6 创建动态内存 VM

    动态内存允许 VM 在指定范围内动态调整内存:

    az stack-hci-vm create \\
    –name "my_dynmemory" \\
    -g "my_registration" \\
    –admin-username "admin" \\
    –admin-password "<password>" \\
    –custom-location "<customLocationID>" \\
    –location "eastus" \\
    –image "<imageResourceID>" \\
    –hardware-profile vm-size="Custom" processors=1 \\
    memory-mb=1024 \\
    maximum-memory-mb=2048 \\
    minimum-memory-mb=1024 \\
    target-memory-buffer=20 \\
    –enable-agent true \\
    –nics "dynnic"

    约束:minimum-memory-mb ≤ memory-mb ≤ maximum-memory-mb。

    §3.3.7 GPU Assignment(DDA / GPU Partition)

    Azure Local VM 支持 GPU 工作负载,按当前硬件 / 操作系统支持分为两大模式:

    模式

    机制

    适用场景

    硬件依赖

    DDA(Discrete Device Assignment,整卡分配)

    整块 GPU 直通给单 VM

    高性能计算、深度学习训练、推理

    NVIDIA Tesla / RTX 系列支持 SR-IOV / SR-IOV-like 直通

    GPU Partition(GPU-P,vGPU 软件切片)

    NVIDIA vGPU Manager 把单卡切成多份 VM 共享

    VDI、虚拟桌面、多 VM 推理

    NVIDIA vGPU 授权卡(L4 / L40S / RTX PRO 等)

    详细机制差异(按 NVIDIA vGPU Manager 调度):

    • DDA:PCIe 直通,单 VM 独占整卡——性能损耗最低但单 VM 占用整卡。
    • GPU-P:基于 vGPU Manager 的时间分片 + 显存隔离调度(不是硬件级 MIG)——一张卡切 N 份 partition,每个 partition 独立 vGPU driver。
    • MIG(Multi-Instance GPU):仅在 NVIDIA A100 / H100 等数据中心 GPU 上可用,Azure Local 当前未集成 MIG 生命周期管理——通过 DDA 直通给 VM 后由 Guest OS 内手动配置 MIG。

    配置命令(GPU-P 模式示例):

    # 1. 在 Host 上安装 NVIDIA vGPU Manager + driver
    # 2. 通过 Windows Admin Center 创建 GPU-P partition
    # 3. 通过 Azure CLI 在 VM 创建时指定 partition
    az stack-hci-vm create \\
    –name "my-gpuvm" \\
    -g "my-rg" \\
    –custom-location "<customLocationID>" \\
    –location "eastus" \\
    –image "<imageResourceID>" \\
    –hardware-profile vm-size="Custom" processors=4 memory-mb=8192 \\
    –gpus "<gpu-partition-id>"

    具体支持的卡型与 partition 数取决于硬件——按当期 OEM Support Matrix 与 NVIDIA vGPU 兼容性列表为准;Azure Local 当前不集成 MIG 生命周期管理(如需 MIG 需在 Guest OS 内手动配置)。

    §3.3.8 Windows Server 2012 / 2012 R2 特殊路径
    • 通过 Azure Portal 不支持;
    • 仅能通过 Azure CLI 创建;
    • 创建之后不支持启用 Guest Management(缺 Hyper-V sockets 支持);
    • 额外 CLI 参数详见 官方文档对应小节。

    §3.4 Azure Portal 路径

    Portal 路径适合一次性创建与图形化探索:

  • 进入 Azure Local 资源页;
  • 选择 Virtual machines → Create;
  • Basics:选择订阅 / 资源组 / VM 名称 / Custom Location / VM 大小;
  • Disks:按需添加数据盘(受 VM Size 限制);
  • Networking:选择 Logical Network + NIC(可在此创建);
  • Management:选择 Security Type(Standard / Trusted Launch);
  • Advanced:配置 Guest OS 更新策略、时区等;
  • Review + Create 验证并创建。
  • Portal 路径与 Trusted Launch 的小陷阱:

    按 FAQ 表述——Trusted Launch 在门户中仅显示其支持的镜像列表;不支持 Trusted Launch 的镜像(包括自定义镜像)在下拉列表中显示为空白。

    §3.5 ARM 模板路径

    示例 ARM 模板 可从 GitHub 快速启动模板库下载。

    前置资源要求:RBAC + Image + Custom Location + Logical Network(ARM 路径强制)。

    适用场景:跨环境复用、标准化部署、多资源一并部署。

    §3.6 Bicep 模板路径

    示例 Bicep 模板 在 ARM 模板基础上提供类型安全与模块化能力。

    前置资源要求:与 ARM 模板一致。

    适用场景:长期 IaC 演进、模块化复用、代码可读性优先。

    §3.7 Terraform 路径

    示例 Terraform 配置 在 azapi / azurerm providers 之上封装 Azure Local VM 资源。

    前置资源要求:RBAC + Image + Custom Location + Logical Network + Terraform + Git。

    适用场景:多云一致 IaC、与现有 Terraform 工作流集成、状态管理需求。

    §3.8 创建时的通用注意事项

    按 官方文档 顶部 Note 提示:

    • 空 DVD 驱动器:创建过程中会生成两个 DVD 驱动器;ISO 文件在创建成功后被移除,但空驱动器可能仍可见——Windows VM 通过 Device Manager 卸载;Linux VM 按具体发行版处理。
    • 跨资源组引用:当被引用的资源(Disk / NIC / Image / Storage Path)在不同资源组时,必须传递完整 Resource ID。
    • 存储路径不指定时:Azure Local 自动将工作负载(VM / Image / 非 OS 数据盘)放在高可用存储路径。
    • Guest Management 默认启用:通过 Portal / CLI 创建的 VM 默认启用 Guest Management;如创建过程失败,可按第四章流程恢复。

    §3.9 本章小结

    • Azure Local VM 支持 5 种创建路径——按自动化能力与场景选择;
    • Trusted Launch 必须 Secure Boot + vTPM 一起启用,并需要手动备份 VM Guest State Protection Key;
    • 动态内存必须在 minimum ≤ memory ≤ maximum 范围内;
    • Windows Server 2012 / 2012 R2 镜像仅 CLI 路径可用;
    • 创建后 Guest Management 默认启用;如失败,按第四章流程恢复。

    第四章:创建之后的 Guest Management 与运营管理

    目标读者:负责 VM 全生命周期运营的运维工程师、可靠性团队。

    核心问题:Guest Management 失败了怎么恢复?不同异常状态如何应对?哪些能力依赖 Arc、哪些不依赖?运营中遇到 FAQ 怎么办?

    §4.1 Guest Management 启用与验证流程

    第四章以异常恢复为重点——按 manage-arc-virtual-machines 文档口径整理。

    §4.1.1 默认状态

    通过 Azure Portal 或 Azure CLI 创建的 VM 默认启用 Guest Management;如创建过程中失败,按下列流程在创建之后重新启用。

    §4.1.2 验证 Guest Agent 状态

    az stack-hci-vm show \\
    –name "<VM name>" \\
    –resource-group "<Resource group name>"

    输出片段中 instanceView.vmAgent.statuses[].displayStatus:

    状态

    含义

    下一步

    Connected

    Guest Agent 运行中

    进入 §4.1.4 启用 Guest Management

    Connecting

    Guest Agent 尚未运行

    按 §4.1.3 恢复

    null(statuses 为空数组)

    Guest Agent ISO 缺失

    按 §4.1.3 挂载 ISO

    §4.1.3 异常状态恢复

    状态为 Connecting(ISO 已挂载但未安装):

    • Windows VM:

    $d = Get-Volume -FileSystemLabel mocguestagentprov
    $p = Join-Path ($d.DriveLetter + ':\\') 'install.ps1'
    powershell $p

    • Linux VM:

    sudo — sh -c 'mkdir /mociso && mount -L mocguestagentprov /mociso && bash /mociso/install.sh && umount /mociso && rm -df /mociso && eject LABEL=mocguestagentprov'

    状态为 null(ISO 缺失):

    az stack-hci-vm update \\
    –name "<VM Name>" \\
    –resource-group "<Resource group name>" \\
    –enable-vm-config-agent true

    挂载 ISO 后等待状态变为 Connecting,再按上述流程执行安装。

    §4.1.4 启用 Guest Management

    确认 Guest Agent 状态为 Connected 后执行:

    az stack-hci-vm update \\
    –name "mylocal-vm" \\
    –enable-agent true \\
    –resource-group "mylocal-rg"

    等待若干分钟后验证。

    §4.1.5 门户验证

    Azure Local → Virtual machines → 选择 VM → Overview → Properties → Configuration → Guest management 应显示 Enabled (Connected)。

    §4.1.6 不支持 Guest Management 的情形

    按官方文档:

    • Windows Server 2012 / 2012 R2(缺 Hyper-V sockets 支持);
    • 不支持 Hyper-V sockets 的任何 Guest OS。

    §4.2 全生命周期管理能力

    按 manage-arc-virtual-machines 文档,口径覆盖 VM 全生命周期操作:

    操作

    入口

    Start / Stop / Restart / Delete

    Azure Portal 或 az stack-hci-vm

    Pause / Resume

    Azure Portal 或 az stack-hci-vm pause / start

    查看属性

    Azure Portal Overview → Properties

    实时迁移

    仅本地工具:Failover Cluster Manager 或 Windows Admin Center

    软件更新

    Azure Update Manager(Azure Local VM 免费)

    Guest Configuration

    Azure Policy(Guest Management 启用后)

    §4.3 三层依赖速查:平台层 / Azure 资源层 / Arc 扩展层

    与 §1.5 呼应,本节是 §1.5 的运营视角速查版。按"管理动作 → 属于哪一层依赖"组织——而不是简单地二分"依赖 vs 不依赖"。三层定义为:

    • 平台层:Azure Local 平台的本地能力(Hyper-V / FC / WAC / PowerShell)
    • Azure 资源层:通过 Arc Resource Bridge + Custom Location + mocguestagent 实现的 Azure 端可见性 / 治理
    • Arc 扩展层:通过 Azure Connected Machine Agent 实现的 Guest OS 内 Azure 扩展执行

    管理动作

    平台层<br/>(仅 Azure Local)

    Azure 资源层<br/>(依赖 Arc Resource Bridge)

    Arc 扩展层<br/>(依赖 Connected Machine Agent)

    Hyper-V 引擎运行

    Failover Cluster HA 故障转移

    实时迁移(FCM / WAC)

    本地 Hyper-V Manager 运维

    PowerShell 本地运维(创建 / 启停 / 查状态)

    ✅(资源层映射)

    VM 创建 / 启动 / 停止 / 暂停 / 删除(Azure 门户 / CLI)

    Logical Network / NIC 接入客户网络

    Cluster Shared Volume 存储

    实时迁移存储路径(VM storage live migration)

    ❌(按 FAQ:Azure 资源侧不支持)

    Azure 门户可见 VM(作为 ARM Resource)

    Azure RBAC 控制 VM 操作

    ✅(控制的是 ARM Resource,不是 Guest OS)

    Azure Policy Guest Configuration

    Azure Update Manager(更新 Azure Local VM)

    ✅(按 FAQ 免费,但需 Arc-enabled 状态纳入)

    Defender for Cloud 扫描

    Change Tracking / Inventory

    软删除保护(Portal 可恢复)

    Azure 配额 / 计费计入订阅

    关键阅读提示:

  • 平台层 ≠ 不用 Azure Arc——平台层是 Azure Local 本地的能力;不依赖 Arc 是因为它根本不经过 Azure 控制平面,与 §1.5 的"Azure Local VM 由本地 Hyper-V 引擎承载"一致。
  • Azure 资源层的"创建"与"启停"耦合在 Arc Resource Bridge + mocguestagent——即使不使用任何 Guest Management 扩展,从 Azure 端创建 / 启停 VM 都需要 Arc Resource Bridge + mocguestagent。这是 §1.5.2 强调的核心点。
  • Azure RBAC 控制的对象是 ARM Resource(VM 在 Azure 侧的表达),不是 Guest OS 内部进程——RBAC 不能用于控制 Guest OS 内的应用权限,需 Guest OS 内自身账号 / Active Directory 控制。
  • "扩展层"专属 Azure Policy / Update Manager / Defender for Cloud——这些动作必须在 Guest OS 内执行,因此必须 Connected Machine Agent 已部署。
  • §4.4 已知限制与 FAQ 速查

    本节汇总 FAQ 与 overview 中的官方表述,按"客户最关心"维度组织。

    §4.4.1 资源与生命周期限制
    • 仅 IPv4:Azure Local VM 不支持 IPv6 地址;
    • Logical Network 字段不可改:Default gateway / IP pools / IP address space / VLAN ID / Virtual switch name 均不可改;
    • 资源组不可移动:Azure Local VM 及其关联资源(NIC / Disk 等)不支持跨资源组移动;
    • VM 内部或本地工具改动不反映到 Azure:通过 VM 内部或本地工具修改的 IP、数据盘配置等不会同步到 Azure 资源视图;
    • VM 克隆 / 复制不支持:当前不支持 VM cloning 或 VM copying;
    • 逻辑网络 DNS / Gateway IP 不能作为 VM IP:Logical Network 上配置的 DNS 服务器 IP 与 Gateway IP 不能用于 VM。
    §4.4.2 操作系统与镜像限制
    • Windows Server 2012 / 2012 R2:仅 CLI 创建路径可用,不支持 Guest Management;
    • VM Image 必须 en-us 语言;
    • Trusted Launch 仅支持部分 Marketplace 镜像:自定义镜像在 Trusted Launch 下不启用 Guest Attestation;
    • Disconnected Operations 仅支持本地共享镜像:Marketplace / Azure Storage Account 镜像在 Disconnected 模式下不可用。
    §4.4.3 网络与 SDN 限制
    • SDN 不支持 Azure Portal 创建的 VM:SDN 在 Azure Local 上的能力详见 SDN 技术参考;
    • Trusted Launch 实时迁移流量默认不加密:强烈建议部署 IPsec 等网络层加密。
    §4.4.4 Azure Arc 资源桥(Arc Resource Bridge)相关
    • 不应删除:除非重新镜像或下线整个 Azure Local 实例;
    • 删除顺序:先删工作负载资源 → 再 Arc resource bridge → 最后 Custom Location;
    • 删除 Arc resource bridge 会丢失 Azure 控制平面(但不影响本地工作负载,仍可通过 WAC / Hyper-V / PowerShell 访问);
    • 删除 Image 不会删除已部署的 VM;
    • 更新 Image 不会影响已创建的 VM——VM 创建时拷贝 Image。
    §4.4.5 计费相关
    • Azure Local VM 管理(Portal / CLI)不收费;
    • 部分 VM 扩展可能收费——按当期微软计费说明;
    • Azure Update Manager 更新 Azure Local VM 不收费;
    • 独立启用 Arc 的服务器(非 Azure Local VM 体系创建)按 Azure Arc-enabled servers 标准收费。
    §4.4.6 "官方没说的"事项

    按本文写作纪律——官方没写的,不要写——以下事项本文不妄言:

    • 不同 azloc 版本之间的具体功能差异(以当期微软官方文档为准);
    • Arc resource bridge 的 HA 节点数(具体以当期 OEM Support Matrix 与官方文档为准);
    • 任何具体的 VM 数量上限(按当期文档表述随版本演进变化);
    • 任何具体的网络性能 / IOPS 数字(按当期 OEM Support Matrix 与官方文档为准);
    • 任何"412%" / "13%" 等未官方权威的量化数字。

    §4.5 责任边界——三方角色

    这是企业实施过程中容易模糊的最后一节。按照"三层原则(官方硬要求 / 工具默认 / 企业最佳实践)+ 微软推荐 ≠ 微软强制"的口径整理。

    §4.4.6 Azure RBAC 控制对象的精确范围(常被误解)

    上一节"双栏速查"里的 "Azure RBAC 控制 VM" 容易让读者误以为 RBAC 可以控制 Guest OS 内的应用权限。这一节单独点明 RBAC 的精确控制对象。

    控制对象

    治理机制

    Azure ARM Resource(VM 在 Azure 侧的表达)

    ✅ Azure RBAC 控制

    Guest OS 内的本地账号 / 应用权限

    ❌ Azure RBAC 不能控制

    Guest OS 内的 AD Domain 账号

    ❌ Azure RBAC 不能控制——需 AD 自身 RBAC

    Guest OS 内的 Service Principal / Managed Identity(Guest 侧)

    ❌ 与 Azure RBAC 不同维度

    典型误解:

    • ❌ "我给 VM 分配了 Owner 角色,我可以登录 Guest OS"——错。Owner 角色控制的是 Azure 侧资源操作(删除 VM、修改 VM 配置等),不提供 Guest OS 登录能力。
    • ✅ 想登录 Guest OS:需 Guest OS 内的本地账号 / AD Domain 账号——与 Azure RBAC 完全无关。

    Azure RBAC 控制的是 ARM Resource,不是 Guest OS——这是 §1.5 / §4.3 双栏速查里 "Azure RBAC 控制 VM" 一栏的精确说法。

    §4.4.7Guest Management 与 Connected Machine Agent 的精确区分(常被等同)

    §1.6 已经从 "Agent 维度" 区分。本节从 "Guest Management 概念维度" 再强调一次——这是 §1.6 的补充视角。

    很多企业实施过程中把 Guest Management 与 Azure Connected Machine Agent 等同。这是一种简化——并不完全准确:

    概念

    准确的等价/包含关系

    Guest Management

    是 Azure 侧 VM 资源的配置项(布尔值:Enabled / Disabled);包含 Azure Connected Machine Agent + Guest VM Extensions + 与 Azure Arc 的 Integration

    Azure Connected Machine Agent

    是 Guest OS 内的 Agent 进程——Guest Management 启用时的一部分

    Guest VM Extensions

    是 Azure 通过 Connected Machine Agent 在 Guest OS 内部署的扩展(如 Azure Policy、Update Manager、Defender for Cloud)——也是 Guest Management 的一部分

    Azure Arc Integration

    是 Guest Management 启用后 Azure 端 / Guest 端双向联动的体现——例如 Azure 端看到 VM 状态、Guest 端接收 Azure 配置

    关系图:

    这意味着:

    • ✅ "禁用 Guest Management" = Connected Machine Agent 不安装 + 不下发任何 Guest VM Extensions
    • ⚠️ 但 "Agent 进程已安装" ≠ "Guest Management Enabled"——例如 WS2012 / WS2012 R2 上 Connected Machine Agent 可手动安装(理论上),但 Guest Management 这个 Azure 侧配置项的状态仍受 Azure Local 平台侧管控
    • ⚠️ "Guest Management 已启用" ≠ "Azure 端看到 Guest OS 完整状态"——还依赖 Agent 实际心跳 / 已上报遥测

    一句话:"Guest Management 是一个 Azure 侧配置项 / 一个能力集合;Connected Machine Agent 是其中一个 Agent 进程——把两者等同会丢失 Azure VM Extensions 与 Arc Integration 这两块内容。"

    §4.5.1 三方角色分工

    角色

    职责范围(官方硬要求 / Portal 默认行为 / 企业最佳实践)

    微软 / Azure Arc

    Azure 资源表示、扩展生命周期编排、Azure RBAC、Update Manager、Defender 等托管服务

    OEM / 硬件

    Azure Local 集成系统的硬件保修、Support Matrix、iDRAC / OpenManage 等硬件管理平面

    客户 / 企业

    Azure Local 实例物理部署、Host OS、网络与存储拓扑、VM 应用与数据、本地安全策略、备份与恢复

    §4.5.2 实施建议(推荐,非强制)

    场景

    建议

    资源组规划

    推荐把 Azure Local VM 及其关联资源(NIC / Disk / Image / Storage Path)与 Azure Local 实例放在同一资源组——便于权限管理与成本核算

    镜像命名

    推荐 VM Image 命名带版本号(如 ws22server-2026q2)——便于后续更新识别

    网络规划

    推荐 Logical Network 创建前一次性确认 gateway / VLAN / VM switch / IP pool —— 创建后无法修改

    Trusted Launch 备份

    推荐使用 Trusted Launch 后立即手动备份 VM Guest State Protection Key

    实时迁移加密

    推荐在实时迁移网络部署 IPsec 加密(不仅是 Trusted Launch VM,建议覆盖所有 VM)

    Guest Management 启用顺序

    推荐先确认 mocguestagent 状态为 Connected,再 enable-agent true

    Disconnected Operations

    仅在 Azure 不可达场景使用,需要预先评估 Marketplace 镜像不可用的限制

    VM 镜像同名

    推荐避免重复命名——同名 Image 创建会失败

    §4.6 术语速查

    术语

    含义

    Azure Local

    微软基于 Azure Stack HCI 构建的本地分布式基础设施解决方案,由 Azure Arc 启用

    Azure Local VM

    运行在 Azure Local 上的虚拟机,作为 Azure 资源呈现,由 Azure Arc 启用

    Azure Arc resource bridge

    Azure Local 上的预打包虚拟设备,承载 Arc-enabled K8s 集群,作为本地管理集群

    Custom Location

    表示 Azure Local 实例的 Azure 资源,作为 ARM 的路由目标

    Logical Network

    代表客户物理网络的 Azure 资源抽象(取代旧版本 Virtual Network)

    Network Interface

    关联到 Logical Network 的 VM 网卡,可选静态 / 动态 IP

    Storage Path

    Cluster Shared Volume 路径的 Azure 资源抽象

    VM Image

    VM 创建时使用的镜像快照

    mocguestagent

    Azure Local 平台 Guest Agent,与平台通信

    Azure Connected Machine agent

    Azure Arc Guest Agent,启用 Guest Management 时安装

    Guest Management

    通过安装 Connected Machine agent 让 VM 具备 Azure 扩展能力

    Trusted Launch

    安全启动 + vTPM 的 VM 安全类型

    Disconnected Operations

    Azure 不可达场景下的 Azure Local 运行模式(仅适用部分功能)

    §4.7 本章小结

    • Guest Management 默认启用;异常状态可按 Connecting / null 两种情形恢复;
    • 实时迁移只能通过本地工具(FCM / WAC);Azure Local VM 的 VM storage live migration 不支持;
    • 不依赖 Arc 的能力与依赖 Arc 的能力泾渭分明——运营时可按 §4.3 速查对照;
    • "微软推荐 ≠ 微软强制",实施建议用"推荐 / 建议"措辞,而非"必须 / 不能";
    • 责任边界按三角色(微软 / OEM / 客户)分配。
    • 本篇文章与博客内一篇文章内容上有一些重复,是修订的另外一个版本。

    附录 A:参考链接

    • Create Azure Local Virtual Machines Enabled by Azure Arc
    • What is Azure Local VM management
    • Azure Local VM management prerequisites
    • Manage Azure Local VMs enabled by Azure Arc
    • Azure Local VMs Enabled by Azure Arc FAQ
    • Overview for Trusted launch for Azure Local VMs enabled by Azure Arc
    • Disconnected operations with Azure Local VMs enabled by Azure Arc
    • System requirements for Azure Local
    • Required firewall URLs for Azure Local deployments
    • Azure Arc resource bridge overview
    • RBAC roles for Azure Local VM management
    • 示例 ARM 模板:aka.ms/hci-vmarmtemp
    • 示例 Bicep 模板:aka.ms/hci-vmbiceptemplate
    • 示例 Terraform 配置:terraform-azurerm-avm-res-azurestackhci-virtualmachineinstance

    附录 B:版本与原则说明

    • 文档版本基线:本文对应微软官方文档 azloc-2606(2026 年 6 月),对版本相关的具体数字、限制、能力范围,以当期微软官方文档为准。
    • 三层原则:本文对"必须 / 不能"措辞仅用于微软官方硬要求;对 Portal / 工具默认行为用"默认";对企业最佳实践用"建议 / 推荐"。

    文档维护说明:本文对应微软官方文档版本 azloc-2606(2026 年 6 月);本文不替代微软官方文档,仅作为企业架构师评估与实施 Azure Local VM 时的中文参考材料。

    赞(0)
    未经允许不得转载:171主机测评 » 创建由 Azure Arc 启用的 Azure Local 虚拟机
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址