VMware vSAN物理磁盘故障排错全过程

1、从 Web UI 检查 vSAN 物理磁盘状态:

连接到 vCenter Server Web Client 并从以下位置检查磁盘状态:

主页 >主机和群集 > vSAN 群集>配置 > vSAN 磁盘管理 图 1:vSAN 磁盘管理视图 选择受影响的主机,然后展开“查看磁盘”部分:图 2:vSAN >磁盘组视图

在这里,您可以验证磁盘是否处于以下异常状态

(1)运行状况不佳 已卸载

(2)0 容量

(3)永久磁盘故障

(4)磁盘关闭

(5)不存在磁盘

此外,也可以检查从 vSAN Skyline 运行状况部分触发的与磁盘相关的警报

主页 > 主机和群集 > vSAN 群集 > 监视 > vSAN > Skyline 运行状况 > 物理磁盘

图 3:Skyline 运行状况视图

您可以在此处验证是否触发了以下任何警报:

(1)即将发生永久磁盘故障,正在撤出数据(运行状况 — 黄色)。

(2)即将发生永久磁盘故障,由于资源不足,数据疏散失败(运行状况 - 红色)。

(3)即将发生永久磁盘故障,由于无法访问对象,数据疏散失败(运行状况 - 红色)。

(4)即将发生永久磁盘故障,数据疏散已完成(运行状况状态 — 黄色)

此外,您还可以从受影响主机的存储设备列表中检查磁盘状态

主页 >主机和群集 vSAN 群集>受影响的 vSAN ESXi 主机 > 配置>存储存储>设备 图 4:>

主机存储设备视图

您可以在此处验证磁盘状态是否为:

(1)0 Capacity

(2)Disk Absent

(3)Disk Unmounted

确认是否有磁盘重平衡的状况出现:

主页>主机和群集 > vSAN 群集>监视 > vSAN > 重新同步对象:图 5:

“重新同步对象”视图

提醒:重新同步可能表示正在从受影响的磁盘或磁盘组中撤出数据。需要进一步调查以确定受影响的磁盘是否已准备好卸下或更换。

验证 vSAN 对象的状态:

主页>主机和群集vSAN 群集监视>程序vSAN Skyline 运行状况数据>vSAN 对象运行状况图 6:vSAN >> 对象运行状况>视图>

提醒:务必确认没有不可访问的对象。对象不可访问意味着“对象的所有副本都丢失”。如果您卸下或更换可能导致 DL 的磁盘。

2、通过CLI进一步确认vSAN磁盘的状态

通过 SSH 连接到受影响的主机并运行以下命令:

vdq -qH

检查“IsPDL”(永久设备丢失)参数。如果等于 1,则磁盘丢失。

Example:

DiskResults:
 DiskResult[0]:
 Name: naa.600508b1001c4b820b4d80f9f8acfa95
 VSANUUID: 5294bbd8-67c4-c545-3952-7711e365f7fa
 State: In-use for VSAN
 ChecksumSupport: 0
 Reason: Non-local disk
 IsSSD?: 0
IsCapacityFlash?: 0
 IsPDL?: 0
 <<truncated>>
 DiskResult[18]:
 Name:
 VSANUUID: 5227c17e-ec64-de76-c10e-c272102beba7
 State: In-use for VSAN
 ChecksumSupport: 0
 Reason: None
 IsSSD?: 0
IsCapacityFlash?: 0
 IsPDL?: 1

vdq -iH

检查磁盘组中是否缺少磁盘。

Example:

Mappings:
DiskMapping[0]:
SSD: naa.58ce38ee2016ffe5
MD: naa.5002538a4819e3e0
 
DiskMapping[2]:
SSD: naa.58ce38ee2016fe55
MD: naa.5002538a48199ca0
MD: naa.5002538a48199e20
MD: naa.5002538a48199e00

esxcli vsan storage list

esxcli vsan storage list

检查“In CMMDS”参数。如果为 false,则与磁盘的通信会丢失。

Example:

Device: Unknown
Display Name: Unknown
Is SSD: false
VSAN UUID: 529cadbc-acd1-b588-8643-68336d5512d6
VSAN Disk Group UUID:
VSAN Disk Group Name:
Used by this host: false
In CMMDS: false
On-disk format version: <Unknown>
Deduplication: false
Compression: false
Checksum:
Checksum OK: false
Is Capacity Tier: false
for i in `esxcli  storage core device list | grep ^naa` ; do echo $i; esxcli storage core device smart get -d $i; done.

使用esxcli storage core device smart get -d检查物理磁盘读/写错误。

Example:

esxcli storage core device smart get -d naa.58ce38ee20acbd51
Parameter                     Value          Threshold  Worst
----------------------------  -------------  ---------  -----
Health Status                 OK             N/A        N/A
Media Wearout Indicator       69             100        N/A
Write Error Count             0              N/A        N/A
Read Error Count              0              N/A        N/A
Power-on Hours                N/A            N/A        N/A
Power Cycle Count             0              N/A        N/A
Reallocated Sector Count      0              N/A        N/A
Raw Read Error Rate           N/A            N/A        N/A
Drive Temperature             24             N/A        N/A
Driver Rated Max Temperature  N/A            N/A        N/A
Write Sectors TOT Count       3207365179933  N/A        N/A
Read Sectors TOT Count        323661648882   N/A        N/A
Initial Bad Block Count       N/A            N/A        N/A


esxcli vsan storage list | grep "VSAN Disk Group UUID:" | sort | uniq -c

检查可用的磁盘组。

Example:

      2    VSAN Disk Group UUID: 5203424c-ee56-497d-75d1-fcf73ae997cb
      2    VSAN Disk Group UUID: 52af8e5c-77d1-b552-3310-ec5fef09edf4
while true;do echo " ****************************************** "; echo "" > /tmp/resyncStats.txt ;cmmds-tool find -t DOM_OBJECT -f json |grep uuid |awk -F \" '{print $4}' |while read i;do pendingResync=$(cmmds-tool  find -t DOM_OBJECT -f json -u $i|grep -o "\"bytesToSync\": [0-9]*,"|awk -F " |," '{sum+=$2} END{print sum / 1024 / 1024 / 1024;}');if [ ${#pendingResync} -ne 1 ]; then echo "$i: $pendingResync GiB";fi;done |tee -a /tmp/resyncStats.txt;total=$(cat /tmp/resyncStats.txt |awk '{sum+=$2} END{print sum}');echo "Total: $total GiB" |tee -aa /tmp/resyncStats.txt;total=$(cat /tmp/resyncStats.txt  |grep Total);totalObj=$(cat /tmp/resyncStats.txt|grep -vE " 0 GiB|Total"|wc -l);echo "`date +%Y-%m-%dT%H:%M:%SZ` $total ($totalObj objects)" >> /tmp/totalHistory.txt; echo `date `; sleep 60; done

检查是否存在正在进行或停滞的重新同步操作。

Example:

Total: 0 GiB
Mon Feb 13 17:32:06 UTC 2023


Ctrl+C停止命令。

cmmds-tool find -f python | grep CONFIG_STATUS -B 4 -A 6 | grep 'uuid\|content' | grep -o 'state\\\":\ [0-9]*' | sort | uniq -c

检查组件的状态。

正常 -- 状态 7
无法访问 -- 状态 13
不存在或降级 -- 状态 15

示例:

    425 state\": 7


3、
如何通过 CLI 确定故障 SSD 或硬盘的位置:

列出所有可用设备:

esxcli storage core device list | grep "naa" | awk '{print $1}' | grep "naa"


Example:

naa.5000c500852df8d3
naa.55cd2e404c1f35a1
naa.55cd2e404c1f35a5
naa.5000c500852dd5e7


使用列表中的每个磁盘 naa 检查位置:

esxcli storage core device physical get -d


Example:

esxcli storage core device physical get -d naa.5000c500852df8d3
esxcli storage core device physical get -d naa.55cd2e404c1f35a1
esxcli storage core device physical get -d naa.55cd2e404c1f35a5
esxcli storage core device physical get -d naa.5000c500852dd5e7
 
   Physical Location: enclosure 65535 slot 0
   Physical Location: enclosure 65535 slot 1
   Physical Location: enclosure 65535 slot 2
   Physical Location: enclosure 65535 slot 3

4、如果缺少设备名称,如何识别发生故障的硬盘或 SSD:

可能未检测到故障磁盘,并且无法使用相应的 naa 进行识别。在这种情况下,需要找到所有磁盘,而未实际找到的磁盘将是发生故障的磁盘。

下面是一个脚本,可用于稍快地执行任务:

echo "=============Physical disks placement=============="
echo ""
esxcli storage core device list | grep "naa" | awk '{print $1}' | grep "naa" | while read in; do
echo "$in"
esxcli storage core device physical get -d "$in"
sleep 1
echo "===================================================="
done

5、存储相关问题的 vSAN 相关日志:

/var/log/vmkernel.log
读取和写入 vSAN 磁盘、vSAN 主机心跳信号、PDL、SCSI 感知代码和 I/O 请求(读取/写入)以及群集成员身份信息时出现问题。

搜索关键字:error 、Power-on Reset

Example:

2021-06-22T12:02:08.408Z cpu30:1001397101)ScsiDeviceIO: PsaScsiDeviceTimeoutHandlerFn:12834: TaskMgmt op to cancel IO succeeded for device naa.55cd2e404b7736d0 and the IO did not complete. WorldId 0, Cmd 0x28, CmdSN = 0x428.Cancelling of IO will be
2021-06-22T12:02:08.408Z cpu30:1001397101)retried.


/var/log/vobd.log
报告磁盘运行状况、永久设备丢失磁盘 (PDL)、磁盘延迟,并报告主机何时进入和退出维护模式。

搜索关键字:error 、Power-on Reset

Example:

2022-05-31T11:42:46.065Z: [vSANCorrelator] 10605891965954us: [vob.vsan.lsom.devicerepair] vSAN device 521a74ce-c980-c16c-ff3d-38a036233daf is being repaired due to I/O failures, and will be out of service until the repair is complete. If the device is part of a dedup disk group, the entire disk group will be out of service until the repair is complete.
2022-05-31T11:42:46.065Z: [vSANCorrelator] 10606062774178us: [esx.problem.vob.vsan.lsom.devicerepair] Device 521a74ce-c980-c16c-ff3d-38a036233daf is in offline state and is getting repaired


/var/log/vsandevicemonitord.log
它可帮助您确定磁盘是否由于过度日志拥塞或 I/O 延迟而被标记为不正常。

Example:

INFO vsandevicemonitord WARNING - WRITE Average Latency on VSAN device naa.50000xxxxxxxx has exceeded threshold value 2000000 us 2 times.
INFO vsandevicemonitord Tier 2 (naa.50000xxxxxxxx) as unhealthy


6、常见的磁盘故障原因:

(1)磁盘软故障:

故障排除步骤:

  • 检查 KVM(iDrac、iLo)磁盘/控制器是否有任何问题
  • 检查日志中是否有任何 SCSI 错误代码
  • 通过运行 esxcli vsan debug controller list -v=true,检查控制器驱动程序/固件,确保它们未降低转速或处于不受支持的组合中,然后检查 vSAN HCL 驱动程序/固件是否处于受支持的组合中,然后对其进行升级。
  • 如果在 KVM 中没有发现问题或没有 SCSI 错误代码,则这是磁盘的软故障,重新启动主机可能会使磁盘/DG 重新联机,将主机置于维护模式并确保可访问性,然后重新启动主机(如果磁盘/DG 恢复良好,否则如果它没有与硬件供应商联系以寻求更换/进一步帮助)。

(2)硬件问题:有效检测数据:0x4 0x0 0x0

日志文件中的 SCSI 错误示例:/var/run/log/vmkernel.log:
2021-01-05T08:37:16.337Z cpu26:2098033)ScsiDeviceIO: 3047: Cmd(0x45a3e27a1700) 0x2a, CmdSN 0x2238d from world 2960707 to dev "naa.xxxx" failed H:0x0 D:0x2 P:0x0 Valid sense data: 0x4 0x0 0x0.

故障排除步骤:确定是出现了硬盘故障了,坏磁盘需要由硬件供应商更换。


(3)介质误差:有效检测数据:0x3 0x11 0x0

  • 未恢复的读取错误 (URE) 是一种介质错误,当 esxi 主机尝试从磁盘上的坏块读取数据时,会发生这种错误。有关 URE 的详细信息,请参阅以下文档“提高 vSAN 对设备上未恢复的读取错误的恢复能力”。
  • URE 可以发生在元数据区域或数据区域中。
  • 如果 URE 发生在磁盘的数据区域中,则使用 VMware vSAN 支持以提供进一步的帮助。
  • 如果元数据区域中发生 URE,则从 ESXi/vSAN 6.7 P03 和 7.0 Update 1 及更高版本开始,为全闪存 DG 引入了名为 autoDG 创建的功能,vSAN Skyline Health 报告磁盘运行状况不佳,并将重新分配将坏块标记为未使用的块。有关详细信息,请参见 KB vSAN Disk or Diskgroup Fails With Medium errors (81121) 知识库 vSAN 磁盘或磁盘组失败并出现中等错误 (81121)。

日志文件中的 scsi 错误示例:/var/run/log/vmkernel.log:
2022-10-12T19:36:55.253Z cpu11:2098330)ScsiDeviceIO: 4325: Cmd(0x45bea479ec40) 0x28, CmdSN 0xfaf from world 0 to dev "naa.xxxx" failed H:0x0 D:0x2 P:0x0 Valid sense data: 0x3 0x11 0x0

故障排除步骤:

如果使用“混合 vSAN”:

  • 磁盘是 HDD,则坏磁盘需要由硬件供应商更换。

(4) vSAN 磁盘处理 (DDH) 功能会卸载坏磁盘或报告其运行状况不佳


vSAN 中的 DDH 功能会持续监控磁盘和磁盘组的运行状况,以检测即将发生的磁盘故障或性能不佳的磁盘组(有关 DDH 的详细信息,请参阅以下内容:vSAN 中的知识库文件存储区处理 (DDH) (2148358) 和以下文档“vSAN 降级设备处理”)。
DDH 在以下情况下卸载磁盘或报告磁盘不正常:

  • 其中一个 vSAN 磁盘上的写入 IO 延迟较高。
  • 其中一个 DG 上达到的最大日志拥塞阈值。
  • 其中一个 vSAN 磁盘上报告了即将发生的故障(我们可以使用以下命令查看磁盘的运行状况:esxcli storage core device smart get -d naa.xxx),

Example:
localcli storage core device smart get -d naa.xxxxx
SMART Data for Disk : naa.xxxxx
Parameter Value Threshold Worst
-----------------------------------------------------
Health Status IMPENDING FAILURE N/A N/A
Media Wearout Indicator N/A N/A N/A
Write Error Count 0 N/A N/A
Read Error Count 369 N/A N/A
Power-on Hours N/A N/A N/A
Power Cycle Count 47 N/A N/A
Reallocated Sector Count N/A N/A N/A
Raw Read Error Rate N/A N/A N/A
Drive Temperature 30 N/A N/A
Driver Rated Max Temperature N/A N/A N/A
Write Sectors TOT Count N/A N/A N/A
Read Sectors TOT Count N/A N/A N/A
Initial Bad Block Count N/A N/A N/A
-----------------------------------------------------
日志文件中的示例:/var/run/log/vsandevicemonitord.log:
WARNING - WRITE Average Latency on VSAN device <NAA disk name> has exceeded threshold value <IO latency threshold for disk> us <# of intervals with excessive IO latency> times.
WARNING - Maximum log congestion on VSAN device <NAA disk name> <current intervals with excessive log congestion>/<intervals required to be unhealthy>
WARNING - SMART health status for disk naa.xxxxx is IMPENDING FAILURE.

故障排除步骤:

  • 检查故障磁盘是否面临任何硬件或介质错误(请参阅上述步骤)。
  • 在磁盘出现故障的主机上运行以下命令:esxtop, option “u”,然后检查故障磁盘的“DAVG”,以查看该磁盘上是否报告了任何高延迟。如果发现延迟很高,请与硬件供应商联系。有关如何使用 esxtop 检查 DAVG 的详细信息,请参阅以下知识库文章使用 esxtop 识别 ESX/ESXi(多个版本)的存储性能问题 (1008205)。
  • 检查控制器驱动程序和固件的兼容性,并检查磁盘是否为 vSAN 支持的设备,以及其固件版本是否受支持(参考 vSAN HCL 链接)。
  • 如果没有兼容性问题,请与硬件供应商联系,以检查控制器或磁盘上是否存在任何固件问题。


(5) 读/写命令失败,中止/重试:H:0x5 & H:0xc

日志文件中的示例:/var/run/log/vmkernel.log:
2022-10-21T02:50:51.069Z cpu0:2098435)ScsiDeviceIO:3501:Cmd(0x45a203564900) 0x28,cmdId.initiator=0x45223c91a7f0 CmdSN 从世界 0 0xaa97f到开发“naa.xxxx”失败
H:0x5 D:0x0 P:0x0 在驱动程序层中止。Cmd 计数 活动:2 排队:0

2022-10-21T04:41:13.494Z cpu0:2098435)ScsiDeviceIO:3463:Cmd(0x45aa8ffdedc0) 0x28,CmdSN 从世界2102512到开发“naa.xxxxx”0x2失败 H:0xc D:0x0 P:0x0无效的感知数据:0x0 0x0 0x0。


故障排除步骤:

  • 检查控制器驱动程序和固件的兼容性,并检查磁盘是否为 vSAN 支持的设备,以及其固件版本是否受支持(参考 vSAN HCL 链接)。
  • 如果没有兼容性问题,请与硬件供应商联系,以检查控制器或磁盘上是否存在任何固件问题。



举报
评论 0