了解存储/LUN 设备的路径如何标记为“不活动”
search cancel

了解存储/LUN 设备的路径如何标记为“不活动”

book

Article ID: 316622

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

免责声明:本文为 Understanding how paths to a storage/LUN device are marked as Dead (2062592) 的翻译版本。尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。有关最新内容,请参见英文版本。

本文介绍可能会导致存储/LUN 设备的路径标记为“不活动”的情况。

Environment

VMware vSphere ESXi 6.x

VMware vSphere ESXi 7.x

VMware vSphere ESXi 8.x

Resolution

在以下情况下,存储/LUN 设备的路径可能会标记为“不活动”:
 
  • ESXi/ESX 存储堆栈确定由于 TEST_UNIT_READY 命令探测失败路径处于“不活动”状态
  • ESXi/ESX 存储堆栈从 HBA 驱动程序处收到主机状态 0x1,其表示:
     
    • 远程阵列端口已超时
    • 远程阵列端口已从架构中删除 (RSCN)
    • 远程阵列端口已关闭 IP 连接
  • 在存储阵列返回永久设备丢失 (PDL) 检查状况后,ESXi/ESX 存储堆栈将路径标记为“不活动”


ESXi/ESX 存储堆栈和 SCSI 命令 TEST_UNIT_READY

当 SCSI 命令无法完成并显示主机状态(例如 H:0x5)时,将会导致系统沿命令失败的路径发送 SCSI 命令 0x0 (TEST_UNIT_READY)。如果 TEST_UNIT_READY 命令也失败,该路径将标记为“不活动”。

此外,Disk.PathEval 例程每 300 秒(默认情况下)沿每个路径发出一次 TEST_UNIT_READY 命令。如果此命令无法完成,该路径也将标记为“不活动”。TEST_UNIT_READY 将以相同的 300 秒间隔沿各个“不活动”路径发出,以防某个路径再次变得不可用(此时,该路径标记为打开而不是不活动)。

在此日志记录示例中,由于失败的命令将立即启动 TEST_UNIT_READY
vmkernel: 116:03:44:19.039 cpu4:4100)WARNING: NMP: nmp_DeviceRequestFastDeviceProbe: NMP device "sym.029025256531353837" state in doubt; requested fast path state update...
原因:
  • 架构中的帧错误/已删除
  • 架构中有噪音的设备引发大量错误
  • 存储阵列控制器过载
  • 交换机问题(B2B 信用耗尽、内存泄露、缺陷)


ESXi/ESX 存储堆栈收到主机状态 0x1

  • 远程阵列端口已超时

    如果对于 HBA 驱动程序来说连接的阵列端口在设备超时后尚未响应,HBA 驱动程序会将该设备标记为缺失。这会导致 HBA 驱动程序将主机状态 NO_CONNECT (H:0x1) 发送回 ESXi/ESX 存储堆栈层,这样反过来又会导致立即故障切换到其他正常路径(MRU/固定)或从可供循环 PSP 利用的工作路径列表中移除该路径。这将影响通过阵列控制器提供的所有 LUN 的路径。

    Emulex 驱动程序上的日志记录示例:

    <3> rport-13:0-3: blocked FC remote port time out: saving binding
    <3>lpfc820 0000:05:00.1: 1:(0):0203 Devloss timeout on WWPN <WWPN> NPort x270024 Data: x0 x7 x0
    <3> rport-13:0-2: blocked FC remote port time out: saving binding
    <3>lpfc820 0000:05:00.1: 1:(0):0203 Devloss timeout on WWPN <WWPN> NPort x270023 Data: x0 x7 x0


    原因:
    • 阵列控制器崩溃或挂起
    • 阵列控制器上的负载非常高,这将导致无法及时响应 SCSI 命令
    • 交换机问题(B2B 信用耗尽、内存泄露、缺陷)
  • 远程阵列端口已从架构中删除

    阵列端口在从架构中正常删除时,它会向已连接设备或同一架构区域中的设备发送注册状态更改通知 (RSCN) 或在 N 个端口之间注销 (LOGO)。如果阵列端口未能从架构中正常删除(例如,变得无响应),连接的设备必须等待其设备丢失超时(如前面远程阵列端口已超时中所述)。这将影响通过阵列控制器提供的所有 LUN 的路径。

    原因:
    • 由于固件升级,阵列控制器已重新引导
    • 阵列控制器已重新引导,以便清除错误状态
    • 由于其他维护原因,阵列控制器已重新引导
  • 远程阵列端口已关闭 IP 连接

    同样地,阵列控制器会从架构中删除,这还可能会发生在 iSCSI 端,并会被视为在 TCP/IP 上关闭 iSCSI 会话。这将影响通过阵列控制器提供的所有 LUN 的路径。


ESXi/ESX 存储堆栈和永久设备丢失 (PDL)

ESX 5.x 引入了永久设备丢失 (PDL),旨在扩充所有路径异常 (APD) 状况。由于正向 LUN 发出的 I/O 不再提供给该启动器而返回特定检查状况的阵列被堆栈解释为永久状况,而不是暂时状况。有关详细信息,请参见 Permanent Device Loss (PDL) and All-Paths-Down (APD) in vSphere 5.x (2004684)

日志记录示例:
VMW_SATP_ALUA: satp_alua_issueCommandOnPath:661: Path "vmhba3:C0:T0:L0" (PERM LOSS) command 0xa3 failed with status Device is permanently unavailable.H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x25 0x0.


Additional Information