磁盘与文件系统

多路径 I/O (MPIO) 故障排除指南 - Windows Server

· 52CE 我爱测

在现代 Windows Server 环境(Hyper-V、群集和虚拟化)中,多路径 I/O(MPIO)有助于实现存储高可用性和容错。 但是,配置问题、硬件兼容性问题或与第三方设备特定的模块(DSM)的交互会使磁盘不可用,并导致性能问题、路径丢失和意外中断。 本文可帮助你解决 MPIO 存储路径问题。 已知问题 更新固件后,缺少多路径磁盘 此问题会影响某些存储设备。 请联系存储供应商以获取支持。 在 VMware 或虚拟环境中,事件 ID 153 会重复出

在现代 Windows Server 环境(Hyper-V、群集和虚拟化)中,多路径 I/O(MPIO)有助于实现存储高可用性和容错。 但是,配置问题、硬件兼容性问题或与第三方设备特定的模块(DSM)的交互会使磁盘不可用,并导致性能问题、路径丢失和意外中断。 本文可帮助你解决 MPIO 存储路径问题。

已知问题

更新固件后,缺少多路径磁盘

此问题会影响某些存储设备。 请联系存储供应商以获取支持。

在 VMware 或虚拟环境中,事件 ID 153 会重复出现。

此行为反映 Storport 驱动程序问题。 确保驱动程序是最新的。 如果问题仍然存在,请联系供应商以获取支持。

故障排除清单

使用此清单进行系统故障排除。

准备进行故障排除

  • 备份所有受影响的系统和数据。 测试是否可以还原备份。
  • 验证是否已获得更改管理批准和维护窗口以进行故障排除。
  • 记录所有观察到的问题、错误消息、事件 ID 和计时。

查看症状

  • 检查磁盘管理和故障转移群集管理器工具。 此外,请检查任何受影响的虚拟机(VM)的设置。 磁盘或卷是否缺失?

  • 问题是否与一个群集节点、所有节点或所有服务器隔离?

  • 检查服务器管理器。 存储控制器和网络路径是否缺失?

  • 如果使用的是第三方 DSM,请查看其文档。 它们是否通过了你的操作系统版本认证?

  • 检查事件查看器和设备管理器,并在 Windows 命令提示符下运行 mpclaim -s -d 。 是否看到任何 MPIO 或存储错误? 具体而言,请关注以下事件:

    • 事件 ID 153:“在逻辑块地址处的输入输出操作被重试。”
    • 事件 ID 129:“设备重置命令...已发出。”
    • 事件 ID 140:“指定的设备不存在。
    • 事件 ID 51、55、98、1069、1205、5120、5121、5124。 这些事件描述磁盘、文件系统和群集错误。

检查最基本可能的原因

  • 是否有最新的硬件更改,例如新的或更换的电缆、主机总线适配器(HBA)或存储交换机和区域?
  • 任何设备是否都获得固件或驱动程序更新?
  • 最近是否重启了任何服务器?
  • 是否安装了相关的 Windows 功能,例如 MPIO? 相关服务是否正在运行?

验证 MPIO 和存储配置

  1. 若要查看存储硬件的设备 ID,请执行以下步骤:

    1. 在搜索栏中,键入 mpiocpl,然后在搜索结果中选择 MPIO 。
    2. 选择“ 发现多路径”。 查看 ID 列表,并修复任何错误。

    注释

    还可以使用 Windows PowerShell Get-MPIOAvailableHW 和 Get-MPIOSetting cmdlet 或命令行 mpclaim -e 和 mpclaim -r -i -a 命令执行这些步骤。

  2. 若要查看和更新存储区域网络 (SAN) 策略,请打开 Windows 命令提示符窗口,然后运行以下命令:

    diskpart san policy=OnlineAll
    
  3. 若要更新路径配置,请遵循以下准则:

    • 若要实现冗余,请确保每个 iSCSI 连接使用不同的网络适配器。
    • 如果系统仅检测到一个路径,请重新生成 iSCSI 连接。

更新驱动程序和固件

  • 将所有存储、网络和多路径驱动程序更新到硬件或存储供应商的最新支持版本。
  • 根据需要更新存储或 SAN 控制器固件。

验证文件系统和磁盘的运行状况

  • 若要检查和修复文件系统错误,请在 Windows 命令提示符处运行 chkdsk <drive>: /f /r 。
  • 如果在扫描 RAW 卷时 chkdsk 失败,请尝试恢复数据或从备份还原数据。
  • 如果弹性文件系统(ReFS)不稳定,请考虑将文件系统重新格式化为 NTFS。

检查群集和 CSV 磁盘问题

  • 若要检查磁盘资源的状态,请使用故障转移群集管理器。

  • 如果磁盘资源停滞在“联机挂起”状态,或者磁盘资源无法联机并生成错误 1069 或错误 1205,则超时设置可能太短。 若要增加此值,请在 PowerShell 命令提示符处运行以下 cmdlet:

    Get-ClusterResource "<Resource_Name>" | Set-ClusterParameter PendingTimeout 300000
    

    注释

    • 在这些命令中, <Resource_Name> 是磁盘资源的名称。
    • 该属性的值 PendingTimeout 以毫秒为单位。 此处显示的值大于默认值。
  • 对于过时的 ClusterStorage 文件夹,请停止群集服务、用于 takeown 获取所有权和 icacls 重置权限,然后使用 rmdir删除。

检查 MPIO 路径的状态

  • 如果只有某些路径可见,请验证服务器和 SAN 上的分区、布线和 HBA 状态。
  • 如果观察到事件 ID 153、129 或 140,则可能存在存储或网络瓶颈。 查看基础存储或网络流量。
  • 如果在重启后 MPIO 路径丢失或配置错误,请参阅 维护或重新启动后,管理工具不显示磁盘或路径 以获取指示。

调整注册表和策略设置

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 如果您错误地修改注册表,可能会出现严重问题。 因此,请确保仔细执行这些步骤。 出于防范目的,请在修改之前备份注册表,以便在出现问题时还原注册表。 有关如何备份和恢复注册表的更多信息,请参见如何在 Windows 中备份和恢复注册表。

  • 如果观察到过度日志记录(如Lsass.log文件的异常增长),请设置以下注册表值:

    • 子项: HKLM\SYSTEM\CurrentControlSet\Control\Lsa
    • 值、数据和类型: LogToFile = 0 (DWORD)

    更改注册表值后,重新启动计算机。

  • 若要配置 MPIO 验证设置,请在 PowerShell 命令提示符窗口中运行以下 cmdlet:

    Set-MPIOSetting -NewPathVerifyState Enabled
    Set-MPIOSetting -CustomPathRecovery Enabled
    
  • 若要配置路径验证的间隔和超时,请与硬件供应商合作,确认相应的设置。 在子项中 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mpio\Parameters 设置以下值:

    • PathVerifyEnabled (DWORD):1 表示开启
    • PathRecoveryInterval (DWORD):以秒为单位的时间(默认值:30)
    • PDORemovePeriod (DWORD):以秒为单位的时间(默认值:20)

    更改注册表值后,重新启动计算机。

修复文件系统损坏或 RAW 磁盘

  • 如果磁盘是 RAW 且无法修复,请删除并重新创建分区。 然后,从备份还原数据。
  • 如果群集磁盘具有过时的预留,请在 PowerShell 命令提示符处使用 Clear-ClusterDiskReservation 以清除它们。

切换 DSM 或删除第三方多路径驱动程序

  1. 如果使用第三方 DSM,请使用控制面板中的“程序和功能”项卸载它们。
  2. 重启电脑
  3. 在 MPIO 工具中,选择 “设备”,然后删除硬件 ID。
  4. 再次重新启动计算机。 然后,在 MPIO 工具中,还原 MSDSM 的硬件 ID。
  5. 若要确保 Microsoft DSM 申明您的磁盘,请在 Windows 命令提示符下运行 mpclaim -s -d 。

常见问题和解决方案

以下部分介绍了最常见的问题,以及如何解决这些问题。

Windows Server 2022 或 2019:当 Hyper-V 使用弹性更改跟踪时,VM IO 性能会降低(RCT)

如果遇到此问题,请确保计算机是最新的。 2025 年 10 月 23 日 - KB5070884(OS 内部版本 20348.4297)更新和后续更新包含此问题的修补程序。

注释

安装此更新后,以前使用主机级备份应用程序备份的 VM 可能无法启动。 若要解决此问题,请删除与受影响的虚拟硬盘关联的任何 .rct 和 .mrt 文件。 然后,重试启动 VM。 如果问题仍然存在,请联系Microsoft支持部门。

某些群集磁盘资源保持“待上线”状态

对于具有配额或文件服务器资源管理器(FSRM)更改的集群磁盘,PendingTimeout 默认值太低。 因此,群集中的磁盘无法联机。 若要增加此值 PendingTimout ,请在 PowerShell 命令提示符处运行以下 cmdlet:

Get-ClusterResource "<Resource_Name>" | Set-ClusterParameter PendingTimeout 300000

注释

  • 在这些命令中, <Resource_Name> 是磁盘资源的名称。
  • PendingTimeout 属性的值以毫秒为单位。 此处显示的值高于默认值。

群集磁盘资源联机速度缓慢

你可能会发现群集磁盘资源联机需要三到五分钟。 此行为还会生成事件 ID 1069 和事件 ID 4874。

若要解决此问题,请执行以下步骤:

  1. 检查集群日志是否存在超时或资源错误。
  2. 在故障转移群集管理器中,将资源超时从默认值(3 分钟)增加到 5 分钟或更多。
  3. 检查可能导致资源上线延迟的卷快照或 FSRM 配额。
  4. 清除任何可能妨碍磁盘访问的群集依赖项或磁盘策略。

维护或重启后,管理工具不会显示磁盘或路径

磁盘管理或故障转移群集管理器工具不显示所有磁盘或路径,并且 “发现 ”选项不可用。 如果在 Windows 命令提示符下运行 mpclaim -s -d ,则可能缺少一些 LUN。 还可以观察事件 ID 46、事件 ID 129 或事件 ID 153。

若要解决此问题,请执行以下步骤:

  1. 检查物理磁盘连接、交换机分区和存储连接。

  2. 在设备管理器(启用“显示隐藏”),删除虚影或隐藏设备,或在 Windows 命令提示符下运行 devnode clean 。

  3. 如果使用不支持的 DSM 或重复的 DSM,请使用控制面板中的“程序和功能”项卸载它们。

  4. 重启、重新安装或重新启用 Multipath-IO 功能。 若要执行此步骤,请在 PowerShell 命令提示符下运行 Install-WindowsFeature Multipath-IO 。

  5. 在 Windows 命令提示符处,按顺序运行以下命令:

    mpclaim -e
    mpclaim -s -d
    mpclaim -r -i -a
    
  6. 在 MPIO 工具中,选择“ 发现多路径”,添加缺少的硬件 ID。

  7. 若要查看和更新存储区域网络 (SAN) 策略,请打开 Windows 命令提示符窗口,然后运行以下命令:

    diskpart san policy=OnlineAll
    
  8. 使用磁盘管理或 Diskpart 将缺少的磁盘联机。

  9. 若要查看“收藏夹目标”列表,请使用 iSCSI 发起程序工具(在搜索栏中,键入 iscsiocpl,在搜索结果中选择 iSCI 发起程序 ,然后选择 “收藏夹目标”。

在故障转移过程中,MPIO 处于降级状态,速度缓慢或无响应。

在故障转移期间,您可能会观察到超过 30 秒的延迟。 您还可以观察到 IO 错误消息,以及“MPIO 处于降级状态”等信息。此外,您可能会看到以下事件:

  • 事件 ID 46
  • 事件 ID 129
  • 事件 ID 140
  • 事件 ID 153

若要解决此问题,请执行以下步骤:

  1. 更新所有存储、HBA 和多路径驱动程序和固件。

  2. 若要设置建议的负载均衡策略和故障转移参数,请在 PowerShell 命令提示符处运行以下 cmdlet:

    Set-MSDSMGlobalDefaultLoadBalancePolicy -Policy RR
    Set-MPIOSetting -NotificationState Enabled
    Set-MPIOSetting -NotificationPeriod 30
    Set-MPIOSetting -NewPDORemovePeriod 20
    Set-MPIOSetting -CustomPathRecovery Enabled
    Set-MPIOSetting -NewPathRecoveryInterval 10
    reg add HKLM\SYSTEM\CurrentControlSet\Services\mpio\Parameters /v PathVerifyEnabled /t REG_DWORD /d 1 /f
    

    如果系统提示这样做,请重新启动。

  3. 在群集上,增加磁盘资源超时以应对故障转移缓慢的情况。

应用程序遇到停机,并在事件日志中重复事件

重复事件包括以下示例:

  • 事件 ID 153(“磁盘重试”)
  • 事件 ID 129(“重置为设备”)
  • 事件 ID 11 (“控制器错误”)
  • 事件 ID 158(相同的磁盘 GUID)

若要解决此问题,请执行以下步骤:

  1. 验证物理路径和逻辑路径是否存在并且是否正常。

  2. 更新存储固件和驱动程序。

  3. 如果事件 ID 158 再次出现,请使用以下 PowerShell cmdlet 来重置 VHD 上的磁盘 GUID:

    Set-VHD -Path \<VHD-Path> -ResetDiskIdentifier
    
  4. 如果重复事件是指第三方数据存储管理器 (DSM),请查阅存储供应商或迁移到受支持的原生 DSM。

重复磁盘或更改的磁盘编号

重启或添加或删除磁盘后,可能会观察到此行为。 若要解决此问题,请执行以下步骤:

  1. 确保只附加一个多路径解决方案(删除不支持的 DSM,重启系统,再重新安装或重新配置 MPIO)。
  2. Windows 使用不确定的磁盘顺序。 如果应用程序需要特定的磁盘顺序,请使用持久性标识符(例如 GUID、UUID 或 WWN),而不是使用磁盘号或驱动器号。

高延迟、IO 峰值、低吞吐量、慢备份、SQL 事件 ID 833 或其他性能问题

若要诊断和修复这些性能问题,请执行以下步骤:

  1. 使用性能监视器(Perfmon)收集性能数据。 在 Windows 命令提示符处运行以下命令:

    logman create counter PerfLog -o C:\PerfLog.blg -f bincirc ...
    
  2. 检查存储卷上是否有安全或防病毒扫描。 可能需要暂时排除卷或暂时禁用扫描以测试对性能的影响。

  3. 确保 Windows Server 是最新的,并更新驱动程序和固件。

  4. 对数据卷使用 64K 分配单位。

  5. 如果可能,请将磁盘分散到多个控制器上。

扩展或调整大小后,集群磁盘资源或 LUN 消失

增加磁盘或 LUN 容量后,磁盘管理或故障转移群集管理器不会显示相关卷。 如果将群集角色脱机后再联机,卷会重新出现。

若要解决此问题,请执行以下步骤:

  1. 使受影响的群集角色脱机,然后再次将其联机(或将角色移动到另一个节点)。

  2. 若要运行重新扫描和扩展文件系统的维护进程,请在拥有角色的节点上的 Windows 命令提示符处运行以下命令:

    diskpart
    rescan
    list vol
    select vol x
    extend filesystem
    exit
    

服务器必须重启才能检测新的 MPIO 路径

更改布线、分区或存储配置后,管理存储的计算机在重新启动之前不会检测到新路径。

若要解决此问题,请执行以下步骤:

  1. 在受影响的计算机上的 PowerShell 命令提示符处,运行以下命令:

    Update-HostStorageCache
    mpclaim -n -d
    

    重要

    如果这些命令不起作用,请重新启动计算机。

  2. 确保 MPIO、DSM 和 Storport 是最新的。

常见问题快速参考

症状 原因 决议
MPIO 属性和磁盘管理中缺少磁盘 分区或DSM冲突 检查设备管理器,删除虚影设备,重新安装 MPIO,重启
事件 ID 153/129/11 路径丢失、驱动程序或固件问题 更新固件或驱动程序,设置 MPIO 策略,检查物理连接
故障转移延迟,集群资源上线速度缓慢 超时、配置错误 提高资源超时,修复配额和快照,更新驱动程序
重复磁盘/错误的磁盘顺序 DSM 或配置错误 删除额外的 DSM,使用持久性标识符(GUID/WWN)
高 IO 延迟,应用速度缓慢,事件 ID 833 驱动程序和防病毒 (AV) 从 AV 中排除存储、更新驱动程序、Perfmon,使用 64K 群集
磁盘 GUID 重复,事件 ID 158 无 MPIO 或克隆虚拟硬盘 (VHD) 启用 MPIO,Set-VHD -ResetDiskIdentifier
扩展后群集磁盘消失 驱动程序或磁盘问题 在脱机和联机之间切换角色,重新扫描,使用diskpart进行扩展
在重启之前未检测到路径 Storport 配置问题 Update-HostStorageCache重新 启动
“请求的资源正在使用中”,无法将磁盘联机 元数据或磁盘问题 使用 chkdsk,检查日志,并联系存储团队

数据收集

如果这些过程无法解决问题,请联系Microsoft支持部门。 使用以下工具收集诊断数据,以追加到支持请求中:

  • Windows 故障排除脚本 (TSS):TSS 脚本会自动收集有用的数据。 有关详细信息和说明,请参阅以下文章:

  • 进程监视器(Procmon): 对于深入的文件、注册表或进程分析,请在 Windows 命令提示符处运行类似于以下示例的命令:

    procmon.exe /BackingFile c:\procmon.pml /Quiet /Minimized /Runtime 60
    

    注释

    在收集 Windows Server 2016 或更高版本的跟踪之前,请确保安装最新的累积更新。

  • 性能监视器(Perfmon): 使用 GUI 或命令行接口。 以下示例按五秒间隔收集数据:

    logman create counter PerfLog -o c:\PerfLog.blg -c "\PhysicalDisk(*)\*" -si 00:00:05
    logman start PerfLog
    
  • PowerShell: 使用以下 cmdlet 收集信息:

    • Get-VMNetworkAdapter -VMName \<YourVMName>
    • Import-VM (对于导入验证和错误导出)
  • 系统和群集日志:

    • Windows 事件查看器:收集来自 Hyper-V 的 VMMS、群集服务和存储的日志。
    • 群集验证报告
  • **注册表编辑器:**审核HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Worker下的权限。

  • BIOS/UEFI: 导出设置,或创建这些设置的屏幕截图。

  • 小型转储文件 如果观察到停止或错误检查错误(也称为蓝屏错误),请检索这些文件。

  • 网络跟踪日志 如果观察到连接问题,请收集网络跟踪。

  • 导出的 VM 配置文件: 如果要排查导入或导出问题,请导出受影响 VM 的配置文件。

  • 驱动程序版本: 请注意存储组件、网络组件和安全代理使用的当前版本。

  • Storport 跟踪: 在 Windows 命令提示符窗口中运行类似于以下示例的命令:

    logman create trace storport -ow -o c:\storport.etl -p Microsoft-Windows-StorPort 0xff -ets
    logman stop storport -ets
    

References

资料来源与适用范围

资料来源
微软官方中文故障文档
适用范围
按正文的 Windows / Windows Server 适用版本;保留原文兼容性要求
内容语言
中文;命令、路径和错误标识保留技术原文
本地收录日期
2026-10-26
授权说明
CC BY 4.0

正文与所需资源由本站本地存储。查看来源及更新记录 ↗

请按适用版本和实际日志确认原因;本站没有对每一种系统或设备逐项执行文中的操作。