若要将存储空间直通群集升级到较新版本的 Windows Server,可以使用 群集 OS 滚动升级过程四个选项。 两个选项涉及使虚拟机(VM)保持运行,两个选项涉及停止所有 VM。 每个选项都有优缺点,因此选择最适合组织需求的选项。
若要详细了解升级选项,请选择一个链接:
在群集中的每个服务器上就地升级同时保持 VM 运行。 此选项不会造成 VM 停机,但必须在升级每个服务器后等待存储作业(镜像修复)完成。
在群集中的每台服务器上清理 OS 安装同时保持 VM 运行。 此选项不会造成 VM 停机,但必须在升级每个服务器后等待存储作业(镜像修复)完成,并且必须再次设置每台服务器及其所有应用和角色。 我们推荐使用此选项,而不是进行就地升级。
在群集中的每个服务器上就地升级同时 VM 停止。 此选项会导致 VM 停机,但无需等待存储作业(镜像修复),因此速度更快。
在群集中的每台服务器上清理 OS 安装同时 VM 停止。 此选项会导致 VM 停机,但无需等待存储作业(镜像修复),因此速度更快。 我们推荐使用此选项,而不是进行就地升级。
先决条件和限制
在继续升级之前:
已启用Storage Spaces Direct。
检查是否有可用备份,以防升级过程中出现任何问题。
检查硬件供应商是否具有受支持的 BIOS、固件和驱动程序。
请务必了解升级过程的一些限制:
在弹性文件系统(ReFS)卷上完全支持升级,但在 Windows Server 2019 中,升级的卷不会受益于 ReFS 增强功能。 要利用 ReFS 带来的好处(例如镜像加速奇偶校验的性能提高),需要使用新创建的 Windows Server 2019 或更高版本的 ReFS 卷。 若要创建新的 Windows Server ReFS 卷,必须使用
New-Volume
cmdlet 或服务器管理器创建新卷。 下面是新卷中的一些 ReFS 增强功能:MAP 日志绕过:ReFS 中的性能改进,仅适用于群集(存储空间直通)系统,不适用于独立存储池。
压缩:特定于多重复原卷的效率提升。
在升级存储空间直通群集服务器之前,建议将服务器置于存储维护模式。
使用交换机嵌入式组合(SET)交换机的软件定义的网络环境出现了一个已知问题。 此问题涉及将 Hyper-V 的 VM 实时迁移到较早版本的操作系统。 为确保实时迁移成功,建议在实时迁移的 VM 上更改 VM 网络设置。
由于此处所述的已知问题,一些客户可能会考虑生成新群集并从旧群集复制数据,而不是使用以下部分中所述的四个过程之一来升级其 Windows Server 群集。
虚拟机运行期间进行就地升级
此选项不会造成 VM 停机,但必须在升级每个服务器后等待存储作业(镜像修复)完成。 尽管各个服务器在升级过程中按顺序重启,但群集中的剩余服务器和所有 VM 仍保持运行状态。
检查群集中的所有服务器是否已安装最新的 Windows 更新。
如果您在 SET 交换机上使用软件定义网络,请打开管理员权限的 PowerShell 会话,并运行以下命令,以在群集中禁用所有 VM 的实时迁移验证检查:
Get-ClusterResourceType -Cluster {clusterName} -Name "Virtual Machine" | ` Set-ClusterParameter -Create SkipMigrationDestinationCheck -Value 1
在每次处理一台群集服务器时,完成以下步骤:
使用 Hyper-V VM 实时迁移,将正在运行的 VM 移出要升级的服务器。
通过运行以下 PowerShell 命令暂停群集服务器。 某些内部组处于隐藏状态。 建议谨慎执行此步骤。 如果尚未从服务器实时迁移 VM,此 cmdlet 会为你执行该步骤。 在这种情况下,可以跳过上一步(如果需要)。
Suspend-ClusterNode -Drain
将服务器置于存储维护模式:
Get-StorageFaultDomain -type StorageScaleUnit | ` Where FriendlyName -Eq <ServerName> | ` Enable-StorageMaintenanceMode
运行以下 cmdlet,检查 OperationalStatus 的值是否为 In Maintenance Mode:
Get-PhysicalDisk
通过运行 setup.exe 并使用 保留个人文件和应用 选项,在服务器上执行 Windows Server 的升级安装。 安装完成后,服务器将保留在群集中,群集服务会自动启动。
检查新升级的服务器是否具有最新的 Windows Server 更新。
从存储维护模式中删除服务器:
Get-StorageFaultDomain -type StorageScaleUnit | ` Where FriendlyName -Eq <ServerName> | ` Disable-StorageMaintenanceMode
恢复服务器:
Resume-ClusterNode
等待存储修复作业完成,并等待所有磁盘返回到正常状态。 此过程可能需要相当长的时间,具体取决于服务器升级期间运行的 VM 数。 若要检查正常状态,请运行以下命令:
Get-StorageJob Get-VirtualDisk
升级群集中的下一台服务器。
将所有服务器升级到最新版本的 Windows Server 后,使用以下 PowerShell cmdlet 更新群集功能级别。 更新群集功能级别后,无法返回到以前的群集功能级别。 也就是说,更新群集功能级别后,无法将较旧版本的 Windows Server 节点添加到群集。 有关详细信息,请参阅 群集操作系统滚动升级。
Update-ClusterFunctionalLevel
注意
尽管最多需要四周才能更新群集功能级别,但建议尽快更新群集功能级别。
更新群集功能级别后,使用以下 cmdlet 更新存储池。 此时,
Get-ClusterPerf
等新 cmdlet 在群集中的任何服务器上都完全正常运行。Update-StoragePool
(可选)使用
Update-VMVersion
cmdlet 停止每个 VM,然后再次启动 VM 来升级 VM 配置级别。如果您将软件定义网络与 SET 交换机结合使用,并且按照之前的指导禁用了 VM 实时迁移检查,请使用以下 cmdlet 重新启用 VM 实时验证检查:
Get-ClusterResourceType -Cluster {clusterName} -Name "Virtual Machine" | ` Set-ClusterParameter SkipMigrationDestinationCheck -Value 0
验证升级后的群集是否按预期工作。 角色应正确故障转移。 如果在群集上使用 VM 实时迁移,VM 应成功实时迁移。
通过运行群集验证并检查群集验证报告来验证群集。 在提升权限的 PowerShell 会话中,运行以下命令:
Test-Cluster
在虚拟机运行的情况下进行干净的操作系统安装
此选项不会造成 VM 停机,但必须在升级每个服务器后等待存储作业(镜像修复)完成。 尽管各个服务器在升级过程中按顺序重启,但群集中的剩余服务器和所有 VM 仍保持运行状态。
检查群集中的所有服务器是否都在运行最新更新。
如果您在 SET 交换机上使用软件定义网络,请打开管理员权限的 PowerShell 会话,并运行以下命令,以在群集中禁用所有 VM 的实时迁移验证检查:
Get-ClusterResourceType -Cluster {clusterName} -Name "Virtual Machine" | ` Set-ClusterParameter -Create SkipMigrationDestinationCheck -Value 1
在每次处理一台群集服务器时,完成以下步骤:
使用 Hyper-V VM 实时迁移,将正在运行的 VM 移出要升级的服务器。
通过运行以下 PowerShell 命令暂停群集服务器。 某些内部组处于隐藏状态。 建议谨慎执行此步骤。 如果尚未从服务器实时迁移 VM,此 cmdlet 会为你执行该步骤。 在这种情况下,可以跳过上一步(如果需要)。
Suspend-ClusterNode -Drain
将服务器置于存储维护模式:
Get-StorageFaultDomain -type StorageScaleUnit | ` Where FriendlyName -Eq <ServerName> | ` Enable-StorageMaintenanceMode
运行以下 cmdlet,检查 OperationalStatus 的值是否为 In Maintenance Mode:
Get-PhysicalDisk
从群集中逐出服务器:
Remove-ClusterNode <ServerName>
在服务器上全新安装最新版本的 Windows Server。 对于全新安装,请格式化系统驱动器,运行 setup.exe 并使用“无”选项。 安装完成后,必须配置服务器标识、角色、功能和应用程序,服务器重启。
在服务器上安装 Hyper-V 角色和 Failover-Clustering 功能(可以使用
Install-WindowsFeature
cmdlet)。请为您的硬件安装经过服务器制造商批准用于 Storage Spaces Direct 的最新存储和网络驱动程序。
检查新升级的服务器是否具有最新更新。
将服务器重新加入群集:
Add-ClusterNode
从存储维护模式中删除服务器:
Get-StorageFaultDomain -type StorageScaleUnit | ` Where FriendlyName -Eq <ServerName> | ` Disable-StorageMaintenanceMode
等待存储修复作业完成,并等待所有磁盘返回到正常状态。 此过程可能需要相当长的时间,具体取决于服务器升级期间运行的 VM 数。 若要检查正常状态,请运行以下命令:
Get-StorageJob Get-VirtualDisk
升级群集中的下一台服务器。
将所有服务器升级到最新版本的 Windows Server 后,使用以下 PowerShell cmdlet 更新群集功能级别。 更新群集功能级别后,无法返回到以前的群集功能级别。
Update-ClusterFunctionalLevel
注意
尽管最多需要四周才能更新群集功能级别,但建议尽快更新群集功能级别。
更新群集功能级别后,使用以下 cmdlet 更新存储池。 此时,
Get-ClusterPerf
等新 cmdlet 在群集中的任何服务器上都完全正常运行。Update-StoragePool
(可选)使用
Update-VMVersion
cmdlet 停止每个 VM,然后再次启动 VM 来升级 VM 配置级别。如果您将软件定义网络与 SET 交换机结合使用,并且按照之前的指导禁用了 VM 实时迁移检查,请使用以下 cmdlet 重新启用 VM 实时验证检查:
Get-ClusterResourceType -Cluster {clusterName} -Name "Virtual Machine" | ` Set-ClusterParameter SkipMigrationDestinationCheck -Value 0
验证升级后的群集是否按预期工作。 角色应正确故障转移。 如果在群集上使用 VM 实时迁移,VM 应成功实时迁移。
通过运行群集验证并检查群集验证报告来验证群集。 在提升权限的 PowerShell 会话中,运行以下命令:
Test-Cluster
虚拟机停止期间的就地升级
此选项会导致 VM 停机,但可能需要的时间比在升级期间保持 VM 运行的时间要短,因为无需等待存储作业(镜像修复)在升级每个服务器后完成。 尽管在升级过程中按顺序重启各个服务器,但群集中的剩余服务器仍保持运行状态。
检查群集中的所有服务器是否都在运行最新更新。
停止群集上运行的 VM。
一次在一个集群上,完成以下步骤:
通过打开提升的 PowerShell 会话并运行以下 PowerShell 命令来暂停群集服务器。 某些内部组处于隐藏状态。 建议谨慎执行此步骤。
Suspend-ClusterNode -Drain
将服务器置于存储维护模式:
Get-StorageFaultDomain -type StorageScaleUnit | ` Where FriendlyName -Eq <ServerName> | ` Enable-StorageMaintenanceMode
运行以下 cmdlet,检查 OperationalStatus 的值是否为 In Maintenance Mode:
Get-PhysicalDisk
通过运行 setup.exe 并使用 保留个人文件和应用 选项,在服务器上执行 Windows Server 的升级安装。 安装完成后,服务器将保留在群集中,群集服务会自动启动。
检查新升级的服务器是否具有最新的 Windows Server 更新。
从存储维护模式中删除服务器:
Get-StorageFaultDomain -type StorageScaleUnit | ` Where FriendlyName -Eq <ServerName> | ` Disable-StorageMaintenanceMode
恢复服务器:
Resume-ClusterNode
等待存储修复作业完成,并等待所有磁盘返回到正常状态。 此过程应该相对较快,因为虚拟机未在运行。 运行以下命令以检查正常状态:
Get-StorageJob Get-VirtualDisk
升级群集中的下一台服务器。
将所有服务器升级到最新版本的 Windows Server 后,使用以下 PowerShell cmdlet 更新群集功能级别。
Update-ClusterFunctionalLevel
注意
尽管最多需要四周才能更新群集功能级别,但建议尽快更新群集功能级别。
更新群集功能级别后,使用以下 cmdlet 更新存储池。 此时,
Get-ClusterPerf
等新 cmdlet 在群集中的任何服务器上都完全正常运行。Update-StoragePool
启动群集上的 VM 并检查它们是否正常工作。
(可选)使用
Update-VMVersion
cmdlet 停止每个 VM,然后再次启动 VM 来升级 VM 配置级别。验证升级后的群集是否按预期工作。 角色应正确故障转移。 如果在群集上使用 VM 实时迁移,VM 应成功实时迁移。
通过运行群集验证并检查群集验证报告来验证群集。 在提升权限的 PowerShell 会话中,运行以下命令:
Test-Cluster
当 VM 停止时进行操作系统的全新安装
此选项会导致 VM 停机,但可能需要的时间比在升级期间保持 VM 运行的时间要短,因为无需等待存储作业(镜像修复)在升级每个服务器后完成。 尽管在升级过程中按顺序重启各个服务器,但群集中的剩余服务器仍保持运行状态。
检查群集中的所有服务器是否都运行最新更新。
停止群集上运行的 VM。
一次一个群集服务器,请完成以下步骤:
通过打开提升的 PowerShell 会话并运行以下 PowerShell 命令来暂停群集服务器。 某些内部组处于隐藏状态。 建议谨慎执行此步骤。
Suspend-ClusterNode -Drain
将服务器置于存储维护模式:
Get-StorageFaultDomain -type StorageScaleUnit | ` Where FriendlyName -Eq <ServerName> | ` Enable-StorageMaintenanceMode
运行以下 cmdlet,检查 OperationalStatus 的值是否为 In Maintenance Mode:
Get-PhysicalDisk
从群集中逐出服务器:
Remove-ClusterNode <ServerName>
在服务器上执行 Windows Server 的干净安装。 对于全新安装,请格式化系统驱动器,运行 setup.exe 并使用“无”选项。 安装完成后,必须配置服务器标识、角色、功能和应用程序,服务器重启。
在服务器上安装 Hyper-V 角色和 Failover-Clustering 功能(可以使用
Install-WindowsFeature
cmdlet)。请为您的硬件安装经过服务器制造商批准用于 Storage Spaces Direct 的最新存储和网络驱动程序。
检查新升级的服务器是否具有最新的 Windows Server 更新。
将服务器重新加入群集:
Add-ClusterNode
从存储维护模式中删除服务器:
Get-StorageFaultDomain -type StorageScaleUnit | ` Where FriendlyName -Eq <ServerName> | ` Disable-StorageMaintenanceMode
等待存储修复作业完成,并等待所有磁盘返回到正常状态。 此过程可能需要相当长的时间,具体取决于服务器升级期间运行的 VM 数。 若要检查正常状态,请运行以下命令:
Get-StorageJob Get-VirtualDisk
升级群集中的下一台服务器。
将所有服务器升级到最新版本的 Windows Server 后,使用以下 PowerShell cmdlet 更新群集功能级别。
Update-ClusterFunctionalLevel
注意
尽管最多需要四周才能更新群集功能级别,但建议尽快更新群集功能级别。
更新群集功能级别后,使用以下 cmdlet 更新存储池。 此时,
Get-ClusterPerf
等新 cmdlet 在群集中的任何服务器上都完全正常运行。Update-StoragePool
启动群集上的 VM 并检查它们是否正常工作。
(可选)使用
Update-VMVersion
cmdlet 停止每个 VM,然后再次启动 VM 来升级 VM 配置级别。验证升级后的群集是否按预期工作。 角色应正确故障转移。 如果在群集上使用 VM 实时迁移,VM 应成功实时迁移。
通过运行群集验证并检查群集验证报告来验证群集。 在提升权限的 PowerShell 会话中,运行以下命令:
Test-Cluster