部署虚拟 Azure Stack HCI 版本 23H2 系统

适用于:Azure Stack HCI 版本 23H2

本文介绍如何在 Windows Server 2022 上运行 Hyper-V 的主机系统上部署虚拟化的单一服务器或多节点 Azure Stack HCI 版本 23H2,Windows 11或更高版本操作系统 (操作系统) 。

需要 Azure Stack HCI 虚拟部署的管理员权限,并且应熟悉现有的 Azure Stack HCI 解决方案。 部署可能需要大约 2.5 小时才能完成。

重要

Azure Stack HCI 版本 23H2 的虚拟部署仅用于教育和演示目的。 Microsoft 支持部门不支持虚拟部署。

先决条件

下面是虚拟部署的硬件、网络和其他先决条件:

物理主机要求

下面是成功部署 Azure Stack HCI 版本 23H2 的最低要求。

在开始之前,请确保:

  • 可以访问在 Windows Server 2022、Windows 11 或更高版本上运行 Hyper-V 的物理主机系统。 此主机用于预配虚拟 Azure Stack HCI 部署。

  • 你有足够的容量。 运行虚拟机或容器等实际工作负荷需要更多的容量。

  • 用于虚拟部署的物理硬件满足以下要求:

    组件 最小值
    处理器 Intel VT-x 或 AMD-V,支持嵌套虚拟化。 有关详细信息,请参阅 我的处理器是否支持 Intel® 虚拟化技术?
    内存 对于单个虚拟节点部署,物理主机必须至少具有 32 GB RAM。 虚拟主机 VM 应至少具有 24 GB RAM。

    对于两个虚拟节点部署,物理主机必须至少有 64 GB RAM。 每个虚拟主机 VM 应至少有 24 GB RAM。
    主机网络适配器 单个网络适配器。
    存储 SSD) (1 TB 固态硬盘。

虚拟主机要求

在开始之前,请确保每个虚拟主机系统都可以专用于以下资源来预配虚拟化的 Azure Stack HCI 系统:

组件 要求
虚拟机 (VM) 类型 启用了安全启动和受信任的平台模块 (TPM) 。
vCPU 四个核心。
内存 至少为 24 GB。
网络 至少两个连接到内部网络的网络适配器。 必须启用 MAC 欺骗。
启动磁盘 一个用于从 ISO 安装 Azure Stack HCI 操作系统的磁盘。
用于存储空间直通的硬盘 六个动态扩展磁盘。 最大磁盘大小为 1024 GB。
数据磁盘 至少 127 GB。
集成中的时间同步 已禁用。

注意

以下是成功部署 Azure Stack HCI 版本 23H2 的最低要求。 运行虚拟机或容器等实际工作负载时,增加虚拟核心和内存等容量。

设置虚拟交换机

在虚拟环境中部署 Azure Stack HCI 时,可以使用现有网络并使用来自该网络的 IP 地址(如果可用)。 在这种情况下,只需创建一个外部交换机,并将所有虚拟网络适配器连接到该虚拟交换机。 虚拟主机将连接到物理网络,无需任何额外的配置。

但是,如果计划在其中部署 Azure Stack HCI 虚拟环境的物理网络在 IP 上很少,则可以创建启用了 NAT 的内部虚拟交换机,以将虚拟主机与物理网络隔离,同时保持与 Internet 的出站连接。

下面列出了这两个选项的步骤:

使用外部虚拟交换机进行部署

在物理主机计算机上,运行以下 PowerShell 命令以创建外部虚拟交换机:

New-VMSwitch -Name "external_switch_name" -SwitchType External -NetAdapterName "network_adapter_name" -AllowManagementOS $true

在启用内部虚拟交换机和 NAT 的情况下进行部署

在物理主机计算机上,运行以下 PowerShell 命令以创建内部虚拟交换机。 使用此交换机可确保隔离 Azure Stack HCI 部署。

New-VMSwitch -Name "internal_switch_name" -SwitchType Internal -NetAdapterName "network_adapter_name" 

创建内部虚拟交换机后,会在主机上创建新的网络适配器。 连接到此内部交换机网络后,必须将 IP 地址分配给此网络适配器,才能成为虚拟主机的默认网关。 还需要定义虚拟主机连接的 NAT 网络子网。

以下示例脚本创建具有前缀192.168.44.0/24的 NAT 网络HCINAT,并使用主机上的 接口将 192.168.44.1 IP 定义为网络的默认网关:

#Check interface index of the new network adapter on the host connected to InternalSwitch:
Get-NetAdapter -Name "vEthernet (InternalSwitch)"

#Create the NAT default gateway IP on top of the InternalSwitch network adapter:
New-NetIPAddress -IPAddress 192.168.44.1 -PrefixLength 24 -InterfaceAlias "vEthernet (InternalSwitch)"

#Create the NAT network:
New-NetNat -Name "HCINAT"-InternalIPInterfaceAddressPrefix 192.168.44.0/24

Create虚拟主机

Create VM 作为具有以下配置的虚拟主机。 可以使用 Hyper-V 管理器或 PowerShell 创建此 VM:

按照以下步骤使用 PowerShell cmdlet 创建名为 Node1 的示例 VM:

  1. 创建 VM:

    New-VHD -Path "your_VHDX_path" -SizeBytes 127GB
    New-VM -Name Node1 -MemoryStartupBytes 20GB -VHDPath "your_VHDX_path" -Generation 2 -Path "VM_config_files_path"
    
  2. 禁用动态内存:

    Set-VMMemory -VMName "Node1" -DynamicMemoryEnabled $false
    
  3. 禁用 VM 检查点:

    Set-VM -VMName "Node1" -CheckpointType Disabled
    
  4. 删除在上一步中创建 VM 期间创建的默认网络适配器:

    Get-VMNetworkAdapter -VMName "Node1" | Remove-VMNetworkAdapter
    
  5. 使用自定义名称将新的网络适配器添加到 VM。 此示例将添加四个 NIC,但如果需要,只能添加两个 NIC。 使用四个 NIC 可以测试两个网络意向 (Mgmt_ComputeStorage 例如) ,每个 NIC 有两个 NIC:

    Add-VmNetworkAdapter -VmName "Node1" -Name "NIC1"
    Add-VmNetworkAdapter -VmName "Node1" -Name "NIC2"
    Add-VmNetworkAdapter -VmName "Node1" -Name "NIC3"
    Add-VmNetworkAdapter -VmName "Node1" -Name "NIC4"
    
  6. 将所有网络适配器附加到虚拟交换机。 指定所创建的虚拟交换机的名称,无论它是没有 NAT 的外部交换机,还是具有 NAT 的内部交换机:

    Get-VmNetworkAdapter -VmName "Node1" |Connect-VmNetworkAdapter -SwitchName "virtual_switch_name"
    
  7. 在 VM Node1上的所有网络适配器上启用 MAC 欺骗。 MAC 地址欺骗是一种技术,它允许网络适配器通过更改其媒体访问控制 (MAC) 地址来伪装成另一个适配器。 在计划使用嵌套虚拟化的方案中,这是必需的:

    Get-VmNetworkAdapter -VmName "Node1" |Set-VmNetworkAdapter -MacAddressSpoofing On
    
  8. 为多节点部署启用中继端口 (,仅对 VM Node1上的所有网络适配器启用) 。 此脚本将特定 VM 的网络适配器配置为在中继模式下运行。 这通常用于希望允许多个虚拟局域网 (VLAN) 通过单个网络适配器进行通信的多节点部署:

    Get-VmNetworkAdapter -VmName "Node1" |Set-VMNetworkAdapterVlan -Trunk -NativeVlanId 0 -AllowedVlanIdList 0-1000
    
  9. Create新的密钥保护程序并将其分配给 Node1。 这通常在 Hyper-V 中设置受保护的构造的上下文中完成,Hyper-V 是一项安全功能,可保护 VM 免受未经授权的访问或篡改。

    执行以下脚本后, Node1 将为其分配一个新的密钥保护程序。 此密钥保护程序保护 VM 的密钥,帮助保护 VM 免受未经授权的访问或篡改:

    $owner = Get-HgsGuardian UntrustedGuardian
    $kp = New-HgsKeyProtector -Owner $owner -AllowUntrustedRoot
    Set-VMKeyProtector -VMName "Node1" -KeyProtector $kp.RawData
    
  10. Node1启用 vTPM。 通过在 VM 上启用 vTPM,可以在 VM 上使用 BitLocker 和其他需要 TPM 的功能。 执行此命令后, Node1 将启用 vTPM,前提是主机的硬件和 VM 的配置支持此功能。

    Enable-VmTpm -VMName "Node1"
    
  11. 将虚拟处理器更改为 8

     Set-VmProcessor -VMName "Node1" -Count 8
    
  12. Create用作存储空间直通启动磁盘和硬盘的额外驱动器。 执行这些命令后,将在 目录中创建 C:\vms\Node1 六个新的 VHDX,如以下示例所示:

     new-VHD -Path "C:\vms\Node1\s2d1.vhdx" -SizeBytes 1024GB
     new-VHD -Path "C:\vms\Node1\s2d2.vhdx" -SizeBytes 1024GB
     new-VHD -Path "C:\vms\Node1\s2d3.vhdx" -SizeBytes 1024GB
     new-VHD -Path "C:\vms\Node1\s2d4.vhdx" -SizeBytes 1024GB
     new-VHD -Path "C:\vms\Node1\s2d5.vhdx" -SizeBytes 1024GB
     new-VHD -Path "C:\vms\Node1\s2d6.vhdx" -SizeBytes 1024GB
    
  13. 将驱动器附加到为 VM 新建的 VHDX。 在这些命令中C:\vms\Node1,六个 VHD 位于 目录中,并通过 命名s2d1.vhdxs2d6.vhdx的 VHD 将添加到 Node1。 每个命令都会 Add-VMHardDiskDrive 向 VM 添加一个 VHD,因此使用不同的参数值重复该命令六次 -Path

    之后,VM Node1 上附加了六个 VHD。 这些 VHDX 用于在 VM 上启用 azure Stack HCI 部署所需的存储空间直通:

     Add-VMHardDiskDrive -VMName "Node1" -Path "C:\vms\Node1\s2d1.vhdx"
     Add-VMHardDiskDrive -VMName "Node1" -Path "C:\vms\Node1\s2d2.vhdx"
     Add-VMHardDiskDrive -VMName "Node1" -Path "C:\vms\Node1\s2d3.vhdx"
     Add-VMHardDiskDrive -VMName "Node1" -Path "C:\vms\Node1\s2d4.vhdx"
     Add-VMHardDiskDrive -VMName "Node1" -Path "C:\vms\Node1\s2d5.vhdx"
     Add-VMHardDiskDrive -VMName "Node1" -Path "C:\vms\Node1\s2d6.vhdx"
    
  14. 禁用时间同步:

    Get-VMIntegrationService -VMName "Node1" |Where-Object {$_.name -like "T*"}|Disable-VMIntegrationService
    
  15. 启用嵌套虚拟化:

    Set-VMProcessor -VMName "Node1" -ExposeVirtualizationExtensions $true
    
  16. 启动 VM:

    Start-VM "Node1"
    

在虚拟主机 VM 上安装 OS

完成以下步骤,在虚拟主机 VM 上安装和配置 Azure Stack HCI OS:

  1. 下载 Azure Stack HCI 23H2 ISO安装 Azure Stack HCI 操作系统

  2. 更新密码,因为这是第一次启动 VM。 确保密码满足 Azure 复杂性要求。 密码至少为 12 个字符,包括 1 个大写字符、1 个小写字符、1 个数字和 1 个特殊字符。

  3. 更改密码后,将自动加载服务器配置工具 (SConfig) 。 选择退出到命令行的选项 15 ,并从那里运行后续步骤。

  4. 运行以下命令启动 SConfig:

      SConfig
    

    有关如何使用 SConfig 的信息,请参阅 使用服务器配置工具进行配置 (SConfig)

  5. 将主机名更改为 Node1。 在 SConfig 中使用 选项2Computer name执行此操作。

    主机名更改会导致重启。 当系统提示重启时,请输入 Yes 并等待重启完成。 SConfig 再次自动启动。

  6. 在物理主机上,运行 Get-VMNetworkAdapterForEach-Object cmdlet,通过将分配的 MAC 地址映射到来宾 OS 上的相应网络适配器来配置 VM Node1 的四个网络适配器名称。

    1. cmdlet Get-VMNetworkAdapter 用于检索 VM 上每个 NIC 的网络适配器对象,其中 -VMName 参数指定 VM 的名称,参数 -Name 指定网络适配器的名称。 MacAddress然后访问网络适配器对象的 属性以获取 MAC 地址:
    Get-VMNetworkAdapter -VMName "Node1" -Name "NIC1"
    
    1. MAC 地址是十六进制数字的字符串。 cmdlet ForEach-Object 用于通过按特定间隔插入连字符来设置此字符串的格式。 具体而言, Insert 字符串对象的 方法用于在字符串中的第 2 个、第 5 个、第 8 个、第 11 个和第 14 个位置插入连字符。 然后, join 使用 运算符将生成的字符串数组连接到单个字符串中,每个元素之间有空格。

    2. 对 VM 上的四个 NIC 中的每一个重复这些命令,每个 NIC 的最终格式化 MAC 地址存储在单独的变量中:

    ($Node1finalmacNIC1, $Node1finalmacNIC2, $Node1finalmacNIC3, $Node1finalmacNIC4).
    
    1. 以下脚本输出每个 NIC 的最终格式化 MAC 地址:
    $Node1macNIC1 = Get-VMNetworkAdapter -VMName "Node1" -Name "NIC1"
    $Node1macNIC1.MacAddress
    $Node1finalmacNIC1=$Node1macNIC1.MacAddress|ForEach-Object{($_.Insert(2,"-").Insert(5,"-").Insert(8,"-").Insert(11,"-").Insert(14,"-"))-join " "}
    $Node1finalmacNIC1
    
    $Node1macNIC2 = Get-VMNetworkAdapter -VMName "Node1" -Name "NIC2"
    $Node1macNIC2.MacAddress
    $Node1finalmacNIC2=$Node1macNIC2.MacAddress|ForEach-Object{($_.Insert(2,"-").Insert(5,"-").Insert(8,"-").Insert(11,"-").Insert(14,"-"))-join " "}
    $Node1finalmacNIC2
    
    $Node1macNIC3 = Get-VMNetworkAdapter -VMName "Node1" -Name "NIC3"
    $Node1macNIC3.MacAddress
    $Node1finalmacNIC3=$Node1macNIC3.MacAddress|ForEach-Object{($_.Insert(2,"-").Insert(5,"-").Insert(8,"-").Insert(11,"-").Insert(14,"-"))-join " "}
    $Node1finalmacNIC3
    
    $Node1macNIC4 = Get-VMNetworkAdapter -VMName "Node1" -Name "NIC4"
    $Node1macNIC4.MacAddress
    $Node1finalmacNIC4=$Node1macNIC4.MacAddress|ForEach-Object{($_.Insert(2,"-").Insert(5,"-").Insert(8,"-").Insert(11,"-").Insert(14,"-"))-join " "}
    $Node1finalmacNIC4
    
    
  7. 获取 Node1 VM 本地管理员凭据,然后重命名 Node1

    $cred = get-credential
    
  8. 重命名并映射 上的 Node1NIC。 重命名基于首次启动 VM 时 Hyper-V 分配的 NIC 的 MAC 地址。 应直接从主机运行这些命令:

    Get-NetAdapter使用 命令检索 VM 上的物理网络适配器,根据其 MAC 地址对其进行筛选,然后使用 cmdlet 将它们重命名为匹配的Rename-NetAdapter适配器。

    对于 VM 上四个 NIC 中的每一个都会重复此操作,并单独指定每个 NIC 的 MAC 地址和新名称。 这会在 Hyper-V 管理器中的 NIC 名称和 VM OS 中的 NIC 名称之间建立映射:

    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {param($Node1finalmacNIC1) Get-NetAdapter -Physical | Where-Object {$_.MacAddress -eq $Node1finalmacNIC1} | Rename-NetAdapter -NewName "NIC1"} -ArgumentList $Node1finalmacNIC1
    
    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {param($Node1finalmacNIC2) Get-NetAdapter -Physical | Where-Object {$_.MacAddress -eq $Node1finalmacNIC2} | Rename-NetAdapter -NewName "NIC2"} -ArgumentList $Node1finalmacNIC2
    
    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {param($Node1finalmacNIC3) Get-NetAdapter -Physical | Where-Object {$_.MacAddress -eq $Node1finalmacNIC3} | Rename-NetAdapter -NewName "NIC3"} -ArgumentList $Node1finalmacNIC3
    
    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {param($Node1finalmacNIC4) Get-NetAdapter -Physical | Where-Object {$_.MacAddress -eq $Node1finalmacNIC4} | Rename-NetAdapter -NewName "NIC4"} -ArgumentList $Node1finalmacNIC4
    
  9. 通过运行以下命令,在 VM Node1 的四个 NIC 上禁用动态主机配置协议 (DHCP) 。

    注意

    接口不会自动从 DHCP 服务器获取 IP 地址,而是需要手动为其分配 IP 地址:

    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {Set-NetIPInterface -InterfaceAlias "NIC1" -Dhcp Disabled}
    
    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {Set-NetIPInterface -InterfaceAlias "NIC2" -Dhcp Disabled}
    
    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {Set-NetIPInterface -InterfaceAlias "NIC3" -Dhcp Disabled}
    
    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {Set-NetIPInterface -InterfaceAlias "NIC4" -Dhcp Disabled}
    
  10. 设置管理 IP、网关和 DNS。 执行以下命令后,将使用NIC1指定的 IP 地址、Node1子网掩码、默认网关和 DNS 服务器地址配置网络接口。 确保管理 IP 地址可以解析 Active Directory 并具有到 Internet 的出站连接:

    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {New-NetIPAddress -InterfaceAlias "NIC1" -IPAddress "192.168.44.201" -PrefixLength 24 -AddressFamily IPv4 -DefaultGateway "192.168.44.1"}
    
    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {Set-DnsClientServerAddress -InterfaceAlias "NIC1" -ServerAddresses "192.168.1.254"}
    
  11. 启用 Hyper-V 角色。 此命令重启 VM Node1

    Invoke-Command -VMName "Node1"
    -Credential $cred -ScriptBlock {Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All }
    
  12. 重启并安装 Hyper-V 角色后 Node1 ,安装 Hyper-V 管理工具:

    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {Install-WindowsFeature -Name Hyper-V -IncludeManagementTools}
    
  13. 虚拟主机服务器准备就绪后,必须 将其注册并在 Azure 中将权限分配 为 Arc 资源。

  14. 在 Azure 中将服务器注册为 Arc 资源并安装所有必需扩展后,请选择以下方法之一从 Azure 部署 Azure Stack HCI。

如果计划测试多节点部署,请对额外的节点重复上述过程。 确保虚拟主机名和管理 IP 是唯一的,并且位于同一子网中:

后续步骤