ESXi 连接到存储设备时,可能会遇到连接问题。存储连接问题可能由各种原因导致。尽管 ESXi 无法始终检测设备或其路径不可用的原因,但主机可以确定问题是永久性问题还是暂时性问题。换句话说,主机可以区分设备的永久设备丢失 (PDL) 状态和存储的暂时性全部路径异常 (APD) 状态。

永久设备丢失 (PDL)
是当存储设备出现永久性故障或以管理方式被移除或排除时所出现的一种情况。预计该设备将来不再可用。当设备永久不可用时, ESXi 会从存储阵列收到相应的感知代码或登录拒绝,并能够确认此设备已永久丢失。
全部路径异常 (APD)
是当主机无法访问存储设备且没有可用的设备路径时所出现的一种情况。 ESXi 会将其视为一种暂时性状况,因为设备中出现的问题通常为临时性的,因而设备有望再次可用。

连接问题和 vSphere High Availability

当设备进入 PDL 或 APD 状态时,vSphere High Availability (HA) 会检测到连接问题,并为 ESXi 主机上受影响的虚拟机提供自动恢复。vSphere HA 使用虚拟机组件保护 (VMCP) 来防止在 vSphere HA 集群中主机上运行的虚拟机发生可访问性故障。有关 VMCP 以及如何配置在出现 APD 或 PDL 情况时数据存储和虚拟机的响应的详细信息,请参见《vSphere 可用性》文档。

检测 PDL 情况

如果 ESXi 主机永久无法使用某个存储设备,则会将其视为处于永久设备丢失 (PDL) 状态。

通常,如果无意移除了某个设备、其唯一 ID 发生更改或该设备发生不可恢复的硬件错误,就会出现 PDL 情况。

如果存储阵列确定设备永久无法使用,会向 ESXi 主机发送 SCSI 错误感知代码或 NVMe 错误代码。收到这些错误后,您的主机会将该设备识别为失败,并将设备的状态注册为 PDL。对于要视为永久丢失的设备,必须在其所有路径上都收到感知代码。

注册设备的 PDL 状态后,主机将停止尝试与设备重新建立连接或向其发送命令。

vSphere Client 会显示关于设备的以下信息:
  • 该设备的操作状态更改为 Lost Communication
  • 全部路径显示为 Dead
  • 设备上的数据存储不可用。

如果设备不存在打开的连接或者在最后一个连接关闭之后,主机将移除 PDL 设备和该设备的所有路径。通过将高级主机参数 Disk.AutoremoveOnPDL 设置为 0 可停用路径的自动移除功能。

如果设备通过 PDL 条件返回,则主机可以发现该设备,但会将其视为新设备。不保证已恢复设备上虚拟机的数据一致性。

注: 当设备出现故障而未发送相应的 SCSI 感知代码、NVMe 错误代码或 iSCSI 登录拒绝时,主机无法检测 PDL 状况。在这种情况下,主机会继续将设备连接问题视为 APD,即使设备出现永久故障也是如此。

永久设备丢失和 SCSI 感知代码

以下是 VMkernel 日志中 SCSI 感知代码的示例,表明设备处于 PDL 状态。
H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x25 0x0 or Logical Unit Not Supported

永久设备丢失和 NVMe 错误代码

以下是 VMkernel 日志中 NVMe 错误代码的示例,表明设备处于 PDL 状态。
H:0x0 D:0xb P:0x0 or H:0x0 D:0x11a P:0x0

永久设备丢失和 iSCSI

在每个目标对应一个 LUN 的 iSCSI 阵列中,通过 iSCSI 登录失败检测 PDL。iSCSI 存储阵列会拒绝主机尝试启动 iSCSI 会话,原因为 Target Unavailable。与感知代码一样,也必须在所有路径上都收到该响应,才能将设备视为永久丢失。

永久设备丢失和虚拟机

注册设备的 PDL 状态后,主机会关闭虚拟机的所有 I/O。vSphere HA 可检测 PDL 并重新启动发生故障的虚拟机。

执行计划的存储设备移除

当存储设备出现故障时,您可以取消永久设备丢失 (PDL) 条件或全部路径异常 (APD) 条件。对存储设备执行有计划的移除和重新连接。

计划的设备移除是指有意断开存储设备的连接。您也可以出于多种原因计划移除设备,如升级硬件或重新配置存储设备。当按顺序执行移除和重新连接存储设备时,您需要完成一些任务。

任务 描述
从计划分离的设备迁移虚拟机。 《vCenter Server 和主机管理》
卸载设备上部署的数据存储。 请参见卸载数据存储
分离存储设备。 请参见分离存储设备
对于每目标具有一个 LUN 的 iSCSI 设备,请从具有该存储设备路径的每个 iSCSI HBA 中删除该静态目标项。 请参见移除动态或静态 iSCSI 目标
通过使用阵列控制台执行任何必要的存储设备重新配置。 请参见供应商文档。
重新附加存储设备。 请参见附加存储设备
挂载数据存储并重新启动虚拟机。 请参见挂载数据存储

分离存储设备

可以安全地从 ESXi 主机分离存储设备。

您可能需要分离设备以使主机无法对其进行访问,例如,在存储端执行硬件升级时。

前提条件

  • 该设备不包含任何数据存储。
  • 该设备未被任何虚拟机作为 RDM 磁盘使用。
  • 该设备不包含诊断分区或暂存分区。

过程

  1. vSphere Client 中,导航到 ESXi 主机。
  2. 单击配置选项卡。
  3. 存储下,单击存储设备
  4. 选择要分离的设备,然后单击分离图标。

结果

此时该设备无法进行访问。该设备的操作状态更改为“已卸载”。

下一步做什么

如果多个主机共用该设备,请从每个主机分别分离该设备。

附加存储设备

重新附加先前与 ESXi 主机分离的存储设备。

过程

  1. vSphere Client 中,导航到 ESXi 主机。
  2. 单击配置选项卡。
  3. 存储下,单击存储设备
  4. 选择分离的存储设备,然后单击附加按钮。

结果

此时该设备可以进行访问。

从 PDL 情况中恢复

当存储设备变为永久不可用且未从 ESXi主机正常分离时,会出现非计划的永久设备丢失 (PDL) 情况。

vSphere Client中的以下各项表明设备处于 PDL 状况:
  • 设备上部署的数据存储不再可用。
  • 设备的操作状态更改为“通信中断”。
  • 全部路径显示为“不活动”。
  • VMkernel 日志文件中将出现有关设备永久不可用的警告消息。

要从非计划的 PDL 情况中恢复,并从主机中移除不可用的设备,请执行以下任务。

任务 描述
将受 PDL 情况影响的数据存储上运行的所有虚拟机关闭电源并取消注册。 请参见《vSphere 虚拟机管理》
卸载数据存储。

请参见卸载数据存储

重新扫描已访问该设备的所有 ESXi主机。
注: 如果重新扫描失败并且主机继续列出设备,则设备的某些挂起 I/O 或活动引用可能仍然存在。检查是否仍存在对设备或数据存储的引用处于活动状态的任何项目。这类项目包括虚拟机、模板、ISO 映像、裸设备映射等。
请参见执行存储重新扫描

处理暂时性 APD 情况

如果存储设备在未指定的时间段内对 ESXi主机不可用,则被视为处于全部路径异常 (APD) 状况。

例如,APD 状况的原因可能会是交换机发生故障,或者存储电缆断开连接。

与永久设备丢失 (PDL) 状况相反,主机将 APD 状况视为瞬间现象,并预计设备会再次可用。

主机继续重新尝试发出的命令,以便重新建立与设备之间的连接。如果主机命令在较长一段时间内无法重试,则主机可能存在具有性能问题的风险。主机及其虚拟机也可能会无法响应。

为了避免出现这些问题,您的主机使用默认的 APD 处理功能。当设备进入 APD 状态时,主机会打开定时器。在定时器打开的情况下,主机会仅在有限的时间段内继续重试非虚拟机命令。

默认情况下,APD 超时时间设置为 140 秒。通常,此值大于大多数设备从连接丢失中恢复所需的时间。如果设备在此时间内可用,主机及其虚拟机则会继续运行,而不会遭遇任何问题。

如果设备未恢复并且超时时间结束,则主机停止重新尝试,并停止任何非虚拟机 I/O。虚拟机 I/O 会继续重试。 vSphere Client对 APD 超时过期的设备显示以下信息:
  • 该设备的操作状态更改为Dead or Error
  • 全部路径显示为Dead
  • 设备中的数据存储显示为灰色。

即便设备和数据存储不可用,虚拟机仍处于响应状态。您可以关闭虚拟机电源,或者将其迁移到不同的数据存储或主机。

如果稍后设备路径处于运行状态,则主机可以将 I/O 恢复到设备并结束特殊 APD 处理。

取消激活存储 APD 处理

默认情况下,ESXi 主机上的存储全部路径异常 (APD) 处理功能处于激活状态。激活此功能后,如果存储设备进入 APD 状态,则主机仅在有限的时间段内继续重试非虚拟机 I/O 命令。在时间段到期后,主机会停止重试尝试并终止任何非虚拟机 I/O。您可以在 主机上停用 APD 处理功能。

如果停用 APD 处理功能,主机将无限期持续重试发出的命令,尝试重新连接到 APD 设备。该行为可能导致主机上的虚拟机超过其内部 I/O 超时值而无响应或发生故障。主机可能与 vCenter Server 断开连接。

过程

  1. vSphere Client 中,导航到 ESXi 主机。
  2. 单击配置选项卡。
  3. 系统下,单击高级系统设置
  4. 在“高级系统设置”表中,选择 Misc.APDHandlingEnable 参数,然后单击 Edit 图标。
  5. 将该值设置为 0。

结果

如果停用 APD 处理功能,您可在某个设备进入 APD 状态时将其重新激活并将其值设置为 1。内部 APD 处理功能立即启动,定时器从处于 APD 状态的每个设备当前的超时值开始。

更改存储 APD 的超时限值

超时参数控制 ESXi 主机必须在多少秒内对出现全部路径异常 (APD) 状况的存储设备重试 I/O 命令。您可以更改默认超时值。

在设备进入 APD 状况后,超时期限立即开始。超时结束后,主机将 APD 设备标记为无法访问。主机将停止尝试重试并非来自虚拟机的任何 I/O。主机将继续重试虚拟机 I/O。

默认情况下,主机上的超时参数设置为 140 秒。在某些情况下,例如连接到您的 ESXi 主机的存储设备从断开连接状态恢复所需的时间超过 140 秒,您可以增加该超时值。

注: 如果您在设备变得不可用之后更改超时参数,则更改对于该特定的 APD 事件不会生效。

过程

  1. vSphere Client 中,导航到 ESXi 主机。
  2. 单击配置选项卡。
  3. 系统下,单击高级系统设置
  4. 在“高级系统设置”表中,选择 Misc.APDTimeout 参数,然后单击 Edit 图标。
  5. 更改默认值。
    您可以输入介于 20 和 99999 秒之间的值。

验证 ESXi 主机上存储设备的连接状态

使用 esxcli 命令可验证特定存储设备的连接状态。

前提条件

安装 ESXCLI。请参见《ESXCLI 入门》。要进行故障排除,请在 ESXi Shell中运行 esxcli 命令。

过程

  1. 运行 esxcli storage core device list -d=device_ID 命令。
  2. 查看 Status: 区域中的连接状态。
    • on- 设备已连接。
    • dead- 设备已进入 APD 状态。APD 定时器已启动。
    • dead timeout- APD 超时已过期。
    • not connected- 设备处于 PDL 状态。