部署虚拟 Azure Stack HCI 版本 23H2 系统
适用于:Azure Stack HCI 版本 23H2
本文介绍如何在 Windows Server 2022、Windows 11 或更高版本操作系统上运行 Hyper-V 的主机系统上部署虚拟化的单一服务器或多节点 Azure Stack HCI 版本 23H2, (操作系统) 。
需要 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。主机网络适配器 单个网络适配器。 存储 1 TB 固态硬盘 (SSD) 。
虚拟主机要求
在开始之前,请确保每个虚拟主机系统都可以将以下资源专用于预配虚拟化的 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
,并将 IP 定义为192.168.44.1
网络的默认网关:
#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:
Hyper-V 管理器。 有关详细信息,请参阅使用 Hyper-V 管理器Create虚拟机以镜像物理管理网络。
PowerShell cmdlet。 在运行 PowerShell cmdlet 之前,请确保调整 虚拟主机要求 中引用的 VM 配置参数。
按照以下步骤使用 PowerShell cmdlet 创建名为 Node1
的示例 VM:
创建 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"
禁用动态内存:
Set-VMMemory -VMName "Node1" -DynamicMemoryEnabled $false
禁用 VM 检查点:
Set-VM -VMName "Node1" -CheckpointType Disabled
删除在上一步中创建 VM 期间创建的默认网络适配器:
Get-VMNetworkAdapter -VMName "Node1" | Remove-VMNetworkAdapter
使用自定义名称将新的网络适配器添加到 VM。 此示例添加四个 NIC,但如果需要,可以只添加两个 NIC。 使用四个 NIC,可以测试两个网络意向 (
Mgmt_Compute
,Storage
例如) 每个 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"
将所有网络适配器附加到虚拟交换机。 指定创建的虚拟交换机的名称,无论它是没有 NAT 的外部交换机,还是具有 NAT 的内部交换机:
Get-VmNetworkAdapter -VmName "Node1" |Connect-VmNetworkAdapter -SwitchName "virtual_switch_name"
在 VM
Node1
上的所有网络适配器上启用 MAC 欺骗。 MAC 地址欺骗是一种技术,它允许网络适配器通过更改其媒体访问控制 (MAC) 地址来伪装成另一个适配器。 在计划使用嵌套虚拟化的情况下,这是必需的:Get-VmNetworkAdapter -VmName "Node1" |Set-VmNetworkAdapter -MacAddressSpoofing On
仅对 VM
Node1
上的所有网络适配器) 多节点部署启用中继端口 (。 此脚本将特定 VM 的网络适配器配置为在中继模式下运行。 这通常用于多节点部署,其中你想要允许多个虚拟局域网 (VLAN) 通过单个网络适配器进行通信:Get-VmNetworkAdapter -VmName "Node1" |Set-VMNetworkAdapterVlan -Trunk -NativeVlanId 0 -AllowedVlanIdList 0-1000
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
为
Node1
启用 vTPM。 通过在 VM 上启用 vTPM,可以在 VM 上使用 BitLocker 和其他需要 TPM 的功能。 执行此命令后,Node1
将启用 vTPM,假设主机的硬件和 VM 的配置支持此功能。Enable-VmTpm -VMName "Node1"
将虚拟处理器更改为
8
:Set-VmProcessor -VMName "Node1" -Count 8
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
将驱动器附加到为 VM 新建的 VHDX。 在这些命令中,将六个位于
C:\vms\Node1
目录中并命名s2d1.vhdx
为 的s2d6.vhdx
VHD 添加到Node1
。 每个命令都会Add-VMHardDiskDrive
向 VM 添加一个 VHD,因此该命令会使用不同的-Path
参数值重复 6 次。之后,
Node1
VM 会附加六个 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"
禁用时间同步:
Get-VMIntegrationService -VMName "Node1" |Where-Object {$_.name -like "T*"}|Disable-VMIntegrationService
启用嵌套虚拟化:
Set-VMProcessor -VMName "Node1" -ExposeVirtualizationExtensions $true
启动 VM:
Start-VM "Node1"
在虚拟主机 VM 上安装 OS
完成以下步骤,在虚拟主机 VM 上安装和配置 Azure Stack HCI OS:
更新密码,因为这是第一次 VM 启动。 确保密码满足 Azure 复杂性要求。 密码至少为 12 个字符,包括 1 个大写字符、1 个小写字符、1 个数字和 1 个特殊字符。
更改密码后,将自动加载服务器配置工具 (SConfig) 。 选择退出到命令行的选项
15
,并从中运行后续步骤。通过运行以下命令启动 SConfig:
SConfig
有关如何使用 SConfig 的信息,请参阅 使用服务器配置工具 (SConfig) 进行配置 。
将主机名更改为
Node1
。 在 SConfig 中使用 选项2
Computer name
执行此操作。主机名更改会导致重启。 当系统提示重启时,输入
Yes
并等待重启完成。 SConfig 将再次自动启动。在物理主机中,运行
Get-VMNetworkAdapter
和ForEach-Object
cmdlet,通过将分配的 MAC 地址映射到来宾 OS 上的相应网络适配器来配置 VMNode1
的四个网络适配器名称。- cmdlet
Get-VMNetworkAdapter
用于检索 VM 上每个 NIC 的网络适配器对象,其中-VMName
参数指定 VM 的名称,参数-Name
指定网络适配器的名称。MacAddress
然后访问网络适配器对象的 属性以获取 MAC 地址:
Get-VMNetworkAdapter -VMName "Node1" -Name "NIC1"
MAC 地址是十六进制数字的字符串。 cmdlet
ForEach-Object
用于通过按特定间隔插入连字符来设置此字符串的格式。 具体而言,Insert
字符串对象的 方法用于在字符串中的第 2 个、第 5 个、第 8 个、第 11 个和第 14 个位置插入连字符。join
然后,使用 运算符将生成的字符串数组连接成一个字符串,每个元素之间有空格。对 VM 上四个 NIC 中的每一个重复这些命令,每个 NIC 的最终格式化 MAC 地址存储在单独的变量中:
($Node1finalmacNIC1, $Node1finalmacNIC2, $Node1finalmacNIC3, $Node1finalmacNIC4).
- 以下脚本输出每个 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
- cmdlet
获取
Node1
VM 本地管理员凭据,然后重命名Node1
:$cred = get-credential
重命名和映射 上的
Node1
NIC。 重命名基于首次启动 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
通过运行以下命令在 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}
设置管理 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"}
启用 Hyper-V 角色。 此命令重启 VM
Node1
:Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All }
重启并安装 Hyper-V 角色后
Node1
,请安装 Hyper-V 管理工具:Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {Install-WindowsFeature -Name Hyper-V -IncludeManagementTools}
虚拟主机服务器准备就绪后,必须 将其注册并在 Azure 中将权限分配 为 Arc 资源。
在 Azure 中将服务器注册为 Arc 资源并安装所有必需的扩展后,请选择以下方法之一从 Azure 部署 Azure Stack HCI。
如果计划测试多节点部署,请对额外的节点重复上述过程。 确保虚拟主机名和管理 IP 是唯一的,并且位于同一子网中:
后续步骤
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈