,Hyper-V社区在Telegram中 的第一条规则
“并且,如果您爱VMware ESXi,那么爱与PowerShell一起使用的ESXi CLI和REST API”
我添加的
实时迁移是Hyper中的一项流行功能-V它使您可以迁移正在运行的虚拟机,而无需停机。在网络上有许多用于转移VM的指令,但是其中许多已经过时。此外,并非每个人都研究高级设置并充分利用Live Migration的功能。
我收集了细微差别和非显而易见的参数,用于在群集内以及群集之间快速转移VM。同时,我将在设置和设计中分享一些小秘密。我希望本文对新手管理员有用。

免责声明:建议在将Hyper-V服务器输入产品之前执行所有描述的步骤。Hyper-V永远不会原谅设计错误,并会在第一时间让您失望。也就是第二天。
记住材料
与往常一样,虚拟机从Hyper-V群集中的一个节点迁移到另一个节点:
- VM配置从一个群集节点复制到另一个群集节点。
- 将虚拟机内存页标记为要复制到目标主机,然后将其联机移动。
- , . Hyper-V . , .
. - , , . . , .
这称为实时迁移。该方案对任何管理程序均有效。
VM拥有的RAM越多,更改的强度就越大,移动所需的时间就越长。因此,实时迁移流量需要良好的渠道和仔细的配置。
这就是传统的实时迁移在故障转移群集中的工作方式。它需要为群集中的所有主机提供共享的CSV卷。
此外,还有第二种实时迁移,即“什么都没有”(“什么也没有共享”实时迁移)中的实时迁移。此方案通常用于在群集之间不停机的情况下迁移VM。除了从一台Hyper-V主机到另一台Hyper-V主机的内存页面外,还将复制VHD(X)磁盘,同时传输和同步写入其中的数据增量。
让我们分析配置接口的主要细微差别。
设置协议设置
- 首先,让我们转到Hyper-V管理器,然后右键单击Hyper-V设置。在实时迁移设置中,我们将指定管理程序将访问的网络接口的地址:
- 让我们看一下高级功能。我们对这两点都感兴趣:身份验证协议和我们的VM使用的传输。
- 身份验证协议:CredSSP-默认情况下安装凭据安全支持提供程序协议。它很容易使用,但是如果基础架构中有多个集群,我们将无法在集群之间传输VM。
我们将选择Kerberos来提高安全性,并适合在不同群集之间移动VM。
- Performance options: . Switch Embedded Team SMB (Server Message Block).
Windows Server 2016. SMB (SMB Multi-channel). RDMA – . .
- 身份验证协议:CredSSP-默认情况下安装凭据安全支持提供程序协议。它很容易使用,但是如果基础架构中有多个集群,我们将无法在集群之间传输VM。
- Kerberos , (Kerberos Constrained Delegation) Computer Active Directory.
Windows Server 2016, NETWORK SERVICE, AD. (Unconstrained Delegation), , :
System Center Virtual Machine Manager (SC VMM), . SC VMM Shared-Nothing Live Migration. - SMB . , Live Migration SMB:
Set-SmbServerConfiguration -EncryptData $false -RejectUnencryptedAccess $false
. .
Windows Admin Center:
Hyper-V网络优化在社区中是一个备受争议的话题,并且是无穷无尽的试验领域(从定义上讲,完美无极限)。因此,在逐步建立网络之前,让我们先弄清技术如何变化以及如何使用它。
和以前一样。旧的Hyper-V VM迁移手册描述了使用负载平衡/故障转移(LBFO)计时技术的方案。 LBFO使对物理网络适配器进行分组并在它们之上创建接口成为可能。但是也有一些缺点,例如:没有RDMA支持,无法确定流量将通过哪个Tim端口。而且由于实时迁移流量需要相当肥的通道,所以当所有网络工作负载都爆发到一个物理端口时,这就变成一个问题。
像现在...在Windows Server 2019中,您甚至无法在LBFO团队之上创建虚拟交换机。 Hyper-V中唯一支持的NIC端口中继解决方案是Switch Embedded Team(SET)。
SET聚集适配器,就像ESXi vSwitch一样。物理网络端口成为针对不同类型的流量(包括VM)的跳线,虚拟接口被切掉。
, . , 2 , 3 ( ). - ESX (1+). Red Hat c . VMware vSphere 4.1 1 (bare-metal).
Microsoft VMware Switch Embedded Team Windows Server 2016. .
在较新的版本中,SET允许您在一组物理接口之上为不同的工作负载创建不同的虚拟接口。实际上,这些是根分区的虚拟网络适配器,我们可以像虚拟机的虚拟适配器一样对其进行管理。
这如何影响设置过程。在Hyper-V中,除了管理界面外,我们通常创建用于实时迁移的界面和用于群集CSV流量的界面。为此,我们需要知道SET中包含的网络端口的数量-这就是需要创建多少个虚拟接口。我们还考虑了PCI总线上网络端口的位置,接口到NUMA节点的后续映射的套接字数量以及每个处理器上的物理核心数量。
让我们逐步看一下这个过程
- , . , on-board .
VLAN ID
Management
192.168.1.0/24
192.168.1.1
0 (Native)
1
LiveMigration
192.168.2.0/24
2
2
CSV
CSV-
192.168.3.0/24
3
2
- SET Virtual Switch VMM (Virtual Machine Manager). VMM , PowerShell Hyper-V:
New-VMSwitch -Name "SET" –NetAdapterName "NIC1","NIC2" -EnableEmbeddedTeaming $True -AllowManagementOS $true -MinimumBandwidthMode Weight
-. MinimumBandwidthMode weight, SET . . Network QoS Policies ( ).
SET RDMA-, MinimumBandwidthMode . , Network QoS Policies RDMA .
- Dynamic Hyper-V Port ( Windows Server 2019). Dynamic Address Hash Hyper-V Port , :
Set-VMSwitchTeam "SET" -LoadBalancingAlgorithm Dynamic
, SET SC VM Host Default. Windows Server 2016 Dynamic. Windows Server 2019 Hyper-V Port, .
- , IP- .
«» CSV- :
# Live Migration Add-VMNetworkAdapter –ManagementOS –Name "LiveMigration01" –SwitchName MGMT-Switch -NumaAwarePlacement $true Add-VMNetworkAdapter –ManagementOS –Name "LiveMigration02" –SwitchName MGMT-Switch -NumaAwarePlacement $true # VLAN Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "LiveMigration*" -VlanId 2 -Access # IP- New-NetIPAddress –InterfaceAlias "vEthernet (LiveMigration01)" -IPAddress 192.168.2.2 -PrefixLength 24 -Confirm:$false New-NetIPAddress –InterfaceAlias "vEthernet (LiveMigration02)" -IPAddress 192.168.2.3 -PrefixLength 24 -Confirm:$false # CSV- Add-VMNetworkAdapter –ManagementOS –Name "CSV01" –SwitchName MGMT-Switch -NumaAwarePlacement $true Add-VMNetworkAdapter –ManagementOS –Name "CSV02" –SwitchName MGMT-Switch -NumaAwarePlacement $true # VLAN Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "CSV*" -VlanId 3 -Access # IP- New-NetIPAddress –InterfaceAlias "vEthernet (CSV01)" -IPAddress 192.168.3.2 -PrefixLength 24 -Confirm:$false New-NetIPAddress –InterfaceAlias "vEthernet (CSV02)" -IPAddress 192.168.3.3 -PrefixLength 24 -Confirm:$false
- . , Jumbo Frames 9K , Management.
: .
Set-NetAdapterAdvancedProperty -Name "NIC1" -DisplayName "Jumbo Packet" -DisplayValue 9014 Set-NetAdapterAdvancedProperty -Name "NIC2" -DisplayName "Jumbo Packet" -DisplayValue 9014 Set-NetAdapterAdvancedProperty -Name "vEthernet (CSV01)" -DisplayName "Jumbo Packet" -DisplayValue "9014 Bytes" Set-NetAdapterAdvancedProperty -Name "vEthernet (CSV02)" -DisplayName "Jumbo Packet" -DisplayValue "9014 Bytes" Set-NetAdapterAdvancedProperty -Name "vEthernet (LiveMigration01)" -DisplayName "Jumbo Packet" -DisplayValue "9014 Bytes" Set-NetAdapterAdvancedProperty -Name "vEthernet (LiveMigration02)" -DisplayName "Jumbo Packet" -DisplayValue "9014 Bytes"
, Windows Server, . , Windows. SET Management’. Get-NetAdapterAdvancedProperties.
- , :
CSV-. :
Set-NetIPInterface -InterfaceIndex 16 -InterfaceMetric 10000 Set-NetIPInterface -InterfaceIndex 3 -InterfaceMetric 10000 Set-NetIPInterface -InterfaceIndex 9 -InterfaceMetric 10500 Set-NetIPInterface -InterfaceIndex 6 -InterfaceMetric 10500
, . - RDMA, . RDMA CPU. RDMA Get-NetAdapterRdma.
: . statemigration.com.
RDMA (, , ). - PCI-. Virtual Machine Queues (VMQ).
, , .
Set-VMNetworkAdapterTeamMapping -ManagementOS -PhysicalNetAdapterName "NIC1" -VMNetworkAdapterName "LiveMigration01" Set-VMNetworkAdapterTeamMapping -ManagementOS -PhysicalNetAdapterName "NIC2" -VMNetworkAdapterName "LiveMigration02" Set-VMNetworkAdapterTeamMapping -ManagementOS -PhysicalNetAdapterName "NIC1" -VMNetworkAdapterName "CSV01" Set-VMNetworkAdapterTeamMapping -ManagementOS -PhysicalNetAdapterName "NIC2" -VMNetworkAdapterName "CSV02"
- VMQ PCI-. , . : -, , -, 3 . . (SMB)! , RSS.
Windows Server 2019 VMQ , dVMMQ. , 90%. Windows Server 2019 VMQ .
:
Set-NetAdapterRss -Name "NIC1" -BaseProcessorGroup 0 -BaseProcessorNumber 2 -MaxProcessors 8 -MaxProcessorNumber 16 Set-NetAdapterRss -Name "NIC2" -BaseProcessorGroup 0 -BaseProcessorNumber 16 -MaxProcessors 8 -MaxProcessorNumber 30
, . , 2 16 . 32 . Excel 0 31:
Base Processor Number 2. . 16 – MaxProcessorNumber.
BaseProcessor 16 ( ). . , Live Migration.
使用相同的cmdlet,您还可以设置RSS队列的数量。它们的数量取决于网卡的特定型号,因此在设置RSS队列之前,您需要研究网卡的文档。
设置集群方案的迁移
在故障转移群集方面,我们还将松开群集超时设置:
(Get-Cluster).SameSubnetDelay = 2000
(Get-Cluster).SameSubnetThreshold = 30
- SameSubnetDelay指示我们在什么时间发送心跳次数。默认情况下,它设置为1秒。
如果群集节点在同一网络上,这就足够了。如果它们在不同的网络上,则需要使用相同的值配置CrossSubnetDelay。 - SameSubnetThreshold显示我们可以跳过多少个心跳。默认情况下,这是5个心位,最大值是120。我们将设置最佳值-30个心位。
对于高负载机器,拧开两个参数很重要。如果我们不见面,那么这样的机器很有可能不会运转。
为确保实时迁移流量仅在特定网络上使用,我们还将在故障转移群集设置中保留一个单独的网络:


实际上,这是实时迁移才能在Hyper-V中正常工作的最低绅士设置。