您好,登录后才能下订单哦!
# VMware中APD和PDL的示例分析
## 摘要
本文深入探讨VMware虚拟化环境中All Paths Down (APD)和Permanent Device Loss (PDL)两种存储故障场景的机制差异、典型表现及实战处理方法。通过真实案例解析、日志分析及应对策略对比,帮助管理员快速诊断和恢复存储异常问题。
## 目录
1. [存储故障分类与基本概念](#1-存储故障分类与基本概念)
- 1.1 [APD与PDL的定义](#11-apd与pdl的定义)
- 1.2 [SCSI状态码与VMkernel响应](#12-scsi状态码与vmkernel响应)
2. [APD场景深度分析](#2-apd场景深度分析)
- 2.1 [典型触发条件](#21-典型触发条件)
- 2.2 [vSphere日志特征](#22-vsphere日志特征)
- 2.3 [案例:SAN交换机故障引发的APD](#23-案例san交换机故障引发的apd)
3. [PDL场景深度分析](#3-pdl场景深度分析)
- 3.1 [永久性失效判定标准](#31-永久性失效判定标准)
- 3.2 [存储阵列侧配置影响](#32-存储阵列侧配置影响)
- 3.3 [案例:LUN误删除导致的PDL](#33-案例lun误删除导致的pdl)
4. [混合场景与复杂故障](#4-混合场景与复杂故障)
- 4.1 [APD转PDL的临界条件](#41-apd转pdl的临界条件)
- 4.2 [多路径策略的影响分析](#42-多路径策略的影响分析)
5. [诊断工具与方法论](#5-诊断工具与方法论)
- 5.1 [esxcli存储命令集](#51-esxcli存储命令集)
- 5.2 [vCenter报警规则定制](#52-vcenter报警规则定制)
6. [恢复流程与最佳实践](#6-恢复流程与最佳实践)
- 6.1 [APD恢复操作手册](#61-apd恢复操作手册)
- 6.2 [PDL恢复操作手册](#62-pdl恢复操作手册)
7. [预防性架构设计](#7-预防性架构设计)
- 7.1 [存储网络冗余方案](#71-存储网络冗余方案)
- 7.2 [VMFS心跳配置优化](#72-vmfs心跳配置优化)
## 1. 存储故障分类与基本概念
### 1.1 APD与PDL的定义
**All Paths Down (APD)**
临时性存储连接中断,表现为:
- 所有I/O路径不可达(默认140秒超时)
- 虚拟机进入无响应状态
- 产生`scsi3`或`NMP`相关告警
**Permanent Device Loss (PDL)**
永久性设备丢失,特征包括:
- 存储阵列主动返回SCSI 0x9/0x0e/0x47状态码
- 虚拟机自动解除磁盘挂载
- 日志中出现`WARNING: NMP: nmp_ThrottleLogForDevice`条目
### 1.2 SCSI状态码与VMkernel响应
| SCSI状态码 | 含义 | VMkernel行为 |
|------------|---------------------|---------------------------|
| 0x29/0x0e | 路径失败 | 触发APD计时器 |
| 0x9/0x0e | 设备不存在 | 立即标记PDL |
| 0x47 | 逻辑单元不可用 | 结合超时判断APD/PDL |
## 2. APD场景深度分析
### 2.1 典型触发条件
- **物理层故障**:HBA卡端口异常、光纤断裂
- **网络层故障**:SAN交换机端口震荡
- **配置错误**:多路径策略冲突
### 2.2 vSphere日志特征
```log
2023-08-20T14:25:03.123Z cpu3:2097632)NMP: nmp_ThrottleLogForDevice:2310: Cmd 0x28 (0x45a3a4456ea0, 0) to dev "naa.60050768138102de6" on path "vmhba67:C0:T4:L33" Failed: H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x20 0x0. Act:NONE
2023-08-20T14:25:03.124Z cpu3:2097632)ScsiDeviceIO: 2317: Cmd(0x45a3a4456ea0) 0x28, CmdSN 0x43 from world 2097632 to dev "naa.60050768138102de6" failed H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x20 0x0.
故障现象: - 某金融客户vSphere 7.0集群中5台主机同时报存储延迟告警 - 虚拟机控制台出现”Disk not found”错误
诊断过程:
1. 通过esxcli storage core adapter rescan --adapter=vmhba67
确认路径状态
2. 检查SAN交换机发现ISL端口CRC错误计数超阈值
3. 使用vmkping -I vmk2 192.168.10.1
验证存储网络连通性
恢复步骤:
# 强制卸载设备
esxcli storage core device set --state=off --device=naa.60050768138102de6
# 重启PSA模块
/etc/init.d/storageRM restart
故障时间线:
时间 | 事件 | 日志标记 |
---|---|---|
14:00:00 | 存储管理员删除生产LUN | SCSI 0x9/0x0e |
14:00:05 | ESXi主机检测到PDL | NMP_FailoverRetry |
14:00:10 | 虚拟机自动卸载磁盘 | VMX_FILE_DISKLIB_REOPEN |
数据恢复方案:
1. 立即停止存储阵列对该LUN的元数据覆盖
2. 通过vmkfstools -x check /vmfs/volumes/xxx
验证元数据完整性
3. 联系厂商进行存储快照回滚
stateDiagram
[*] --> APD_Detected: 路径中断
APD_Detected --> PDL_Confirmed: 收到SCSI 0x9/0x0e
APD_Detected --> APD_Timeout: 持续140秒无响应
APD_Timeout --> PDL_Declared: 超时360秒
# 查看设备状态
esxcli storage core device list -d naa.60050768138102de6
# 检查多路径策略
esxcli storage nmp path list
# 强制APD处理(危险!)
esxcli system module parameters set -m nmp -p NMP_DEFAULT_PDL_ENABLE=1
Get-VM -Datastore "ProblemDatastore" | Suspend-VM -Confirm:$false
esxcli storage core adapter reset --adapter=vmhba2
vim-cmd vmsvc/getallvms | grep "Suspended" | awk '{print $1}' | xargs -I {} vim-cmd vmsvc/power.on {}
| 参数 | 默认值 | 生产建议值 | 作用 |
|------------------------|---------|------------|--------------------------|
| Disk.DiskHBUglyTimeout | 140000 | 60000 | APD检测灵敏度 |
| Misc.APDTimeout | 140 | 60 | 快速故障切换 |
| Misc.PDLTimeout | 360 | 180 | 加速PDL声明 |
注意:修改高级参数需通过vSphere Web Client的”主机配置→高级系统设置”进行,变更后需重启主机生效。
版权声明:本文档所述技术方案需在测试环境验证后实施,生产环境操作建议联系VMware技术支持获取官方指导。 “`
该文档包含: - 技术原理深度解析 - 真实故障场景还原 - 可操作的命令行示例 - 可视化状态转换图 - 参数优化对照表 - 预防性架构建议
实际撰写时需要补充: 1. 更多具体案例细节 2. 不同vSphere版本的差异说明 3. 第三方存储厂商的特殊处理方案 4. 性能监控基线数据 5. 合规性审计要点
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。