其实ESXi 主机访问存储设备时遇到连接性问题时,主机会根据某些因素将该问题视为永久或临时性问题。虽然存储连接问题由多种原因造成,并且ESXi 主机也不能识别出该问题是存储设备还是路径不可用的原因造成,但是ESXi的VMkernel 会对这类存储连接问题区分为永久设备丢失 (PDL) 状况和存储的暂时性全部路径异常 (APD)两种状况,方便管理员去找到对应措施去解决问题。
接下来,我们分别对这两种情况进行分析和给出解决思路。
(1)永久设备丢失 (PDL)
当存储设备出现永久性故障或以管理方式被移除或排除时所出现的一种情况。预计该设备将来不再可用。当设备永久不可用时,ESXi 会从存储阵列收到相应的感知代码或登录拒绝,并能够确认此设备已永久丢失。在 vSphere 5.x/6.x 中,已在永久丢失 (PDL) 的设备和由于未知原因而发生全部路径异常 (APD) 这一暂时性问题的设备之间进行了明确的区分。
在 vSphere 4.x 中,如果设备的所有路径都出现故障,则将发生全部路径异常 (APD) 状况。 由于没有迹象表明这是永久性还是暂时性设备丢失,ESXi 主机会保持重新尝试建立连接。 当从 ESXi/ESX 主机错误取消提供 LUN 时,通常会发生 APD 状况。 ESXi/ESX 主机仍然认为该设备可用,将无限期重新尝试所有的 SCSI 命令。 这会对管理代理产生影响,因为在重新可访问该设备之前不会对其命令作出响应。 这将导致 ESXi/ESX 主机在 vCenter Server 中变得不可访问/无响应。
如何通过日志确认是发生了PDL
计划内 PDL 与计划外 PDL当试图移除向 ESXi 主机提供的设备时,将发生计划内 PDL。 必须首先卸载数据存储,然后分离设备,这样才能在存储阵列上取消提供该存储设备。 有关如何在 ESXi 5.x 中正确取消提供 LUN 的详细信息,请参考VMware 官方KB:如何从ESXi 主机卸载 LUN 或分离数据存储设备 (2072353) 。
如果意外从存储阵列取消提供存储设备,而未在 ESXi 主机上执行卸载和分离,则将发生计划外 PDL。在 ESXi 5.5 中,VMware 提供了一种名为“自动移除”的功能,以便在计划外 PDL 期间自动移除设备。
要清除计划外 PDL,请执行以下操作:
- 数据存储中所有运行的虚拟机必须关闭电源并从 vCenter Server 中取消注册。
- 从 vSphere Client 中,转到 ESXi 主机的配置选项卡,然后单击存储。
- 右键单击要移除的数据存储,然后单击卸载。
此时将显示确认卸载数据存储窗口。 如果符合必备条件,则会显示确定按钮。 - 在该 LUN 对其可见的所有 ESXi 主机上执行重新扫描。
注意: 如果存在对该设备或挂起 I/O 的活动引用,ESXi 主机在重新扫描后仍会列出该设备。 检查可能仍具有对该设备或数据存储的活动引用的虚拟机、模板、ISO 映像、软盘映像和裸设备映射。 - 如果该 LUN 仍在使用中且再次可用,请转到每个主机,右键单击该 LUN,然后单击挂载。
注意: 计划外 PDL 的一个可能原因是 LUN 的空间不足,从而导致其变得无法访问。
(2)全部路径异常 (APD)
是当主机无法访问存储设备且没有可用的设备路径时所出现的一种情况。ESXi 会将其视为一种暂时性状况,因为设备中出现的问题通常为临时性的,因而设备有望再次可用。
在 VMkernel 日志中,如果存储设备将 SCSI 感知代码 H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x25 0x0 或 Logical Unit Not Supported 记录到 ESXi 5.x/6.x 主机中,则表明 ESXi 主机永久不可访问该设备,或者该设备处于永久设备丢失 (PDL) 状态。 ESXi 主机不再尝试重新建立连接或向该设备发出命令。
如果未从设备返回 PDL SCSI 感知代码(当无法联系存储阵列,或者所具有的存储阵列未返回受支持的 PDL SCSI 代码时),则该设备处于全部路径异常 (APD) 状态,ESXi 主机将继续发送 I/O 请求,直到主机收到响应。
由于 ESXi 主机无法确定设备丢失是永久性 (PDL) 还是暂时性 (APD) 的,因此它会无限期重试 SCSI I/O,包括:
- 用户领域 I/O(hostd 管理代理)
- 虚拟机客户机 I/O
注意: 如果从客户机发出 I/O 请求,则操作系统将超时并中止 I/O。
如何通过日志确认是发生了APD
由于 APD 状况的性质,没有简便的方法进行恢复。
- 需要在存储阵列/结构层来解决 APD 状况,才能还原与主机的连接。
- 所有受影响的 ESXi 主机都可能需要重新引导,以移除到处于 APD 状态的受影响设备的任何残留引用。
注意事项:
- 无法对未受影响的虚拟机执行 vMotion 迁移,因为管理代理可能会受到 APD 状况的影响,且 ESXi 主机可能变为非受管状态。 因此,重新引导受影响的 ESXi 主机会强制中断该主机上所有未受影响的虚拟机。
- vSphere 6.0 和更高版本随 vSphere HA 一起引入了强大的新功能,称为虚拟机组件保护 (VMCP)。VMCP 可防止虚拟机出现与存储相关的事件,尤其是永久设备丢失 (PDL) 和全部路径异常 (APD) 事件。有关详细信息,请参见 vSphere Availability Guide 中的“虚拟机组件保护”部分。