升级 Storage Spaces Direct 群集

若要将存储空间直通群集升级到较新版本的 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 仍保持运行状态。

  1. 检查群集中的所有服务器是否已安装最新的 Windows 更新。

  2. 如果您在 SET 交换机上使用软件定义网络,请打开管理员权限的 PowerShell 会话,并运行以下命令,以在群集中禁用所有 VM 的实时迁移验证检查:

    Get-ClusterResourceType -Cluster {clusterName} -Name "Virtual Machine" | `
    Set-ClusterParameter -Create SkipMigrationDestinationCheck -Value 1
    
  3. 在每次处理一台群集服务器时,完成以下步骤:

    1. 使用 Hyper-V VM 实时迁移,将正在运行的 VM 移出要升级的服务器。

    2. 通过运行以下 PowerShell 命令暂停群集服务器。 某些内部组处于隐藏状态。 建议谨慎执行此步骤。 如果尚未从服务器实时迁移 VM,此 cmdlet 会为你执行该步骤。 在这种情况下,可以跳过上一步(如果需要)。

      Suspend-ClusterNode -Drain
      
    3. 将服务器置于存储维护模式:

      Get-StorageFaultDomain -type StorageScaleUnit | `
      Where FriendlyName -Eq <ServerName> | `
      Enable-StorageMaintenanceMode
      
    4. 运行以下 cmdlet,检查 OperationalStatus 的值是否为 In Maintenance Mode

      Get-PhysicalDisk
      
    5. 通过运行 setup.exe 并使用 保留个人文件和应用 选项,在服务器上执行 Windows Server 的升级安装。 安装完成后,服务器将保留在群集中,群集服务会自动启动。

    6. 检查新升级的服务器是否具有最新的 Windows Server 更新。

    7. 从存储维护模式中删除服务器:

      Get-StorageFaultDomain -type StorageScaleUnit | `
      Where FriendlyName -Eq <ServerName> | `
      Disable-StorageMaintenanceMode
      
    8. 恢复服务器:

      Resume-ClusterNode
      
    9. 等待存储修复作业完成,并等待所有磁盘返回到正常状态。 此过程可能需要相当长的时间,具体取决于服务器升级期间运行的 VM 数。 若要检查正常状态,请运行以下命令:

      Get-StorageJob
      Get-VirtualDisk
      
  4. 升级群集中的下一台服务器。

  5. 将所有服务器升级到最新版本的 Windows Server 后,使用以下 PowerShell cmdlet 更新群集功能级别。 更新群集功能级别后,无法返回到以前的群集功能级别。 也就是说,更新群集功能级别后,无法将较旧版本的 Windows Server 节点添加到群集。 有关详细信息,请参阅 群集操作系统滚动升级

    Update-ClusterFunctionalLevel
    

    注意

    尽管最多需要四周才能更新群集功能级别,但建议尽快更新群集功能级别。

  6. 更新群集功能级别后,使用以下 cmdlet 更新存储池。 此时,Get-ClusterPerf 等新 cmdlet 在群集中的任何服务器上都完全正常运行。

    Update-StoragePool
    
  7. (可选)使用 Update-VMVersion cmdlet 停止每个 VM,然后再次启动 VM 来升级 VM 配置级别。

  8. 如果您将软件定义网络与 SET 交换机结合使用,并且按照之前的指导禁用了 VM 实时迁移检查,请使用以下 cmdlet 重新启用 VM 实时验证检查:

    Get-ClusterResourceType -Cluster {clusterName} -Name "Virtual Machine" | `
    Set-ClusterParameter  SkipMigrationDestinationCheck -Value 0
    
  9. 验证升级后的群集是否按预期工作。 角色应正确故障转移。 如果在群集上使用 VM 实时迁移,VM 应成功实时迁移。

  10. 通过运行群集验证并检查群集验证报告来验证群集。 在提升权限的 PowerShell 会话中,运行以下命令:

    Test-Cluster
    

在虚拟机运行的情况下进行干净的操作系统安装

此选项不会造成 VM 停机,但必须在升级每个服务器后等待存储作业(镜像修复)完成。 尽管各个服务器在升级过程中按顺序重启,但群集中的剩余服务器和所有 VM 仍保持运行状态。

  1. 检查群集中的所有服务器是否都在运行最新更新。

  2. 如果您在 SET 交换机上使用软件定义网络,请打开管理员权限的 PowerShell 会话,并运行以下命令,以在群集中禁用所有 VM 的实时迁移验证检查:

    Get-ClusterResourceType -Cluster {clusterName} -Name "Virtual Machine" | `
    Set-ClusterParameter -Create SkipMigrationDestinationCheck -Value 1
    
  3. 在每次处理一台群集服务器时,完成以下步骤:

    1. 使用 Hyper-V VM 实时迁移,将正在运行的 VM 移出要升级的服务器。

    2. 通过运行以下 PowerShell 命令暂停群集服务器。 某些内部组处于隐藏状态。 建议谨慎执行此步骤。 如果尚未从服务器实时迁移 VM,此 cmdlet 会为你执行该步骤。 在这种情况下,可以跳过上一步(如果需要)。

      Suspend-ClusterNode -Drain
      
    3. 将服务器置于存储维护模式:

      Get-StorageFaultDomain -type StorageScaleUnit | `
      Where FriendlyName -Eq <ServerName> | `
      Enable-StorageMaintenanceMode
      
    4. 运行以下 cmdlet,检查 OperationalStatus 的值是否为 In Maintenance Mode

      Get-PhysicalDisk
      
    5. 从群集中逐出服务器:

      Remove-ClusterNode <ServerName>
      
    6. 在服务器上全新安装最新版本的 Windows Server。 对于全新安装,请格式化系统驱动器,运行 setup.exe 并使用“无”选项。 安装完成后,必须配置服务器标识、角色、功能和应用程序,服务器重启。

    7. 在服务器上安装 Hyper-V 角色和 Failover-Clustering 功能(可以使用 Install-WindowsFeature cmdlet)。

    8. 请为您的硬件安装经过服务器制造商批准用于 Storage Spaces Direct 的最新存储和网络驱动程序。

    9. 检查新升级的服务器是否具有最新更新。

    10. 将服务器重新加入群集:

      Add-ClusterNode
      
    11. 从存储维护模式中删除服务器:

      Get-StorageFaultDomain -type StorageScaleUnit | `
      Where FriendlyName -Eq <ServerName> | `
      Disable-StorageMaintenanceMode
      
    12. 等待存储修复作业完成,并等待所有磁盘返回到正常状态。 此过程可能需要相当长的时间,具体取决于服务器升级期间运行的 VM 数。 若要检查正常状态,请运行以下命令:

      Get-StorageJob
      Get-VirtualDisk
      
  4. 升级群集中的下一台服务器。

  5. 将所有服务器升级到最新版本的 Windows Server 后,使用以下 PowerShell cmdlet 更新群集功能级别。 更新群集功能级别后,无法返回到以前的群集功能级别。

    Update-ClusterFunctionalLevel
    

    注意

    尽管最多需要四周才能更新群集功能级别,但建议尽快更新群集功能级别。

  6. 更新群集功能级别后,使用以下 cmdlet 更新存储池。 此时,Get-ClusterPerf 等新 cmdlet 在群集中的任何服务器上都完全正常运行。

    Update-StoragePool
    
  7. (可选)使用 Update-VMVersion cmdlet 停止每个 VM,然后再次启动 VM 来升级 VM 配置级别。

  8. 如果您将软件定义网络与 SET 交换机结合使用,并且按照之前的指导禁用了 VM 实时迁移检查,请使用以下 cmdlet 重新启用 VM 实时验证检查:

    Get-ClusterResourceType -Cluster {clusterName} -Name "Virtual Machine" | `
    Set-ClusterParameter SkipMigrationDestinationCheck -Value 0
    
  9. 验证升级后的群集是否按预期工作。 角色应正确故障转移。 如果在群集上使用 VM 实时迁移,VM 应成功实时迁移。

  10. 通过运行群集验证并检查群集验证报告来验证群集。 在提升权限的 PowerShell 会话中,运行以下命令:

    Test-Cluster
    

虚拟机停止期间的就地升级

此选项会导致 VM 停机,但可能需要的时间比在升级期间保持 VM 运行的时间要短,因为无需等待存储作业(镜像修复)在升级每个服务器后完成。 尽管在升级过程中按顺序重启各个服务器,但群集中的剩余服务器仍保持运行状态。

  1. 检查群集中的所有服务器是否都在运行最新更新。

  2. 停止群集上运行的 VM。

  3. 一次在一个集群上,完成以下步骤:

    1. 通过打开提升的 PowerShell 会话并运行以下 PowerShell 命令来暂停群集服务器。 某些内部组处于隐藏状态。 建议谨慎执行此步骤。

      Suspend-ClusterNode -Drain
      
    2. 将服务器置于存储维护模式:

      Get-StorageFaultDomain -type StorageScaleUnit | `
      Where FriendlyName -Eq <ServerName> | `
      Enable-StorageMaintenanceMode
      
    3. 运行以下 cmdlet,检查 OperationalStatus 的值是否为 In Maintenance Mode

      Get-PhysicalDisk
      
    4. 通过运行 setup.exe 并使用 保留个人文件和应用 选项,在服务器上执行 Windows Server 的升级安装。 安装完成后,服务器将保留在群集中,群集服务会自动启动。

    5. 检查新升级的服务器是否具有最新的 Windows Server 更新。

    6. 从存储维护模式中删除服务器:

      Get-StorageFaultDomain -type StorageScaleUnit | `
      Where FriendlyName -Eq <ServerName> | `
      Disable-StorageMaintenanceMode
      
    7. 恢复服务器:

      Resume-ClusterNode
      
    8. 等待存储修复作业完成,并等待所有磁盘返回到正常状态。 此过程应该相对较快,因为虚拟机未在运行。 运行以下命令以检查正常状态:

      Get-StorageJob
      Get-VirtualDisk
      
  4. 升级群集中的下一台服务器。

  5. 将所有服务器升级到最新版本的 Windows Server 后,使用以下 PowerShell cmdlet 更新群集功能级别。

    Update-ClusterFunctionalLevel
    

    注意

    尽管最多需要四周才能更新群集功能级别,但建议尽快更新群集功能级别。

  6. 更新群集功能级别后,使用以下 cmdlet 更新存储池。 此时,Get-ClusterPerf 等新 cmdlet 在群集中的任何服务器上都完全正常运行。

    Update-StoragePool
    
  7. 启动群集上的 VM 并检查它们是否正常工作。

  8. (可选)使用 Update-VMVersion cmdlet 停止每个 VM,然后再次启动 VM 来升级 VM 配置级别。

  9. 验证升级后的群集是否按预期工作。 角色应正确故障转移。 如果在群集上使用 VM 实时迁移,VM 应成功实时迁移。

  10. 通过运行群集验证并检查群集验证报告来验证群集。 在提升权限的 PowerShell 会话中,运行以下命令:

    Test-Cluster
    

当 VM 停止时进行操作系统的全新安装

此选项会导致 VM 停机,但可能需要的时间比在升级期间保持 VM 运行的时间要短,因为无需等待存储作业(镜像修复)在升级每个服务器后完成。 尽管在升级过程中按顺序重启各个服务器,但群集中的剩余服务器仍保持运行状态。

  1. 检查群集中的所有服务器是否都运行最新更新。

  2. 停止群集上运行的 VM。

  3. 一次一个群集服务器,请完成以下步骤:

    1. 通过打开提升的 PowerShell 会话并运行以下 PowerShell 命令来暂停群集服务器。 某些内部组处于隐藏状态。 建议谨慎执行此步骤。

      Suspend-ClusterNode -Drain
      
    2. 将服务器置于存储维护模式:

      Get-StorageFaultDomain -type StorageScaleUnit | `
      Where FriendlyName -Eq <ServerName> | `
      Enable-StorageMaintenanceMode
      
    3. 运行以下 cmdlet,检查 OperationalStatus 的值是否为 In Maintenance Mode

      Get-PhysicalDisk
      
    4. 从群集中逐出服务器:

      Remove-ClusterNode <ServerName>
      
    5. 在服务器上执行 Windows Server 的干净安装。 对于全新安装,请格式化系统驱动器,运行 setup.exe 并使用“无”选项。 安装完成后,必须配置服务器标识、角色、功能和应用程序,服务器重启。

    6. 在服务器上安装 Hyper-V 角色和 Failover-Clustering 功能(可以使用 Install-WindowsFeature cmdlet)。

    7. 请为您的硬件安装经过服务器制造商批准用于 Storage Spaces Direct 的最新存储和网络驱动程序。

    8. 检查新升级的服务器是否具有最新的 Windows Server 更新。

    9. 将服务器重新加入群集:

      Add-ClusterNode
      
    10. 从存储维护模式中删除服务器:

      Get-StorageFaultDomain -type StorageScaleUnit | `
      Where FriendlyName -Eq <ServerName> | `
      Disable-StorageMaintenanceMode
      
    11. 等待存储修复作业完成,并等待所有磁盘返回到正常状态。 此过程可能需要相当长的时间,具体取决于服务器升级期间运行的 VM 数。 若要检查正常状态,请运行以下命令:

      Get-StorageJob
      Get-VirtualDisk
      
  4. 升级群集中的下一台服务器。

  5. 将所有服务器升级到最新版本的 Windows Server 后,使用以下 PowerShell cmdlet 更新群集功能级别。

    Update-ClusterFunctionalLevel
    

    注意

    尽管最多需要四周才能更新群集功能级别,但建议尽快更新群集功能级别。

  6. 更新群集功能级别后,使用以下 cmdlet 更新存储池。 此时,Get-ClusterPerf 等新 cmdlet 在群集中的任何服务器上都完全正常运行。

    Update-StoragePool
    
  7. 启动群集上的 VM 并检查它们是否正常工作。

  8. (可选)使用 Update-VMVersion cmdlet 停止每个 VM,然后再次启动 VM 来升级 VM 配置级别。

  9. 验证升级后的群集是否按预期工作。 角色应正确故障转移。 如果在群集上使用 VM 实时迁移,VM 应成功实时迁移。

  10. 通过运行群集验证并检查群集验证报告来验证群集。 在提升权限的 PowerShell 会话中,运行以下命令:

    Test-Cluster