ESXi 存储取消掩码后重新扫描无法完成的解决方法

ESXi 存储取消掩码后重新扫描无法完成的解决方法

记录一下,今天早上遇到一个关于存储管理的严重问题——在 ESXi 主机上取消挂载、分离和取消掩码存储设备后,执行重新扫描操作时,任务无法完成并最终超时。查了一下 VMware KB 429293,原来这是由于 hostd 进程在等待内核响应时发生死锁导致的。在这里分享先:

故障现象还原

1. 重新扫描任务超时

在 vSphere Client 中执行存储重新扫描操作时,任务会在 30 分钟后显示为“超时”状态。

2. 主机日志信息

/var/log/hostd.log 文件中,会看到任务创建的日志,但没有任务完成的日志:

YYYY-MM-DDThh:mm:ss.xxxZ In(166) Hostd[2099685]: [Originator@6876 sub=Vimsvc.TaskManager opID=2d87b187-85-3732 sid=52d20413 user=vpxuser:VSPHERE.LOCAL\Administrator] Task Created : haTask-ha-host-vim.host.StorageSystem.rescanAllHba-168675585

核心原因分析

根据 KB 429293 的解释,问题的根本原因是:

hostd 进程死锁

当执行存储设备查询时,hostd 进程会等待内核响应。如果内核在处理该查询时出现问题,hostd 进程会进入死锁状态,导致任务无法完成或终止。

解决方法

1. 避免死锁的操作顺序

# 建议的操作顺序
1. 重新扫描存储(在取消掩码前)
2. 分离存储设备
3. 取消掩码
4. 再次重新扫描存储

 

# 如果不按此顺序,可能会导致死锁

2. 重启 ESXi 主机(彻底解决)

# 彻底解决死锁问题,需要重启 ESXi 主机
# 在 vSphere Client 中:
# 导航到 ESXi 主机 > 右键点击 > 选择“重启”

 

# 或者使用 ESXi Shell 命令:
reboot

3. 尝试重启管理代理(临时解决方案)

# 尝试重启管理代理(可能部分解决问题,但可能失败)
# 在 ESXi Shell 中:
/etc/init.d/hostd restart
/etc/init.d/vpxa restart

 

# 或者使用
service-control --stop --all
service-control --start --all

操作步骤

1. 备份与准备

# 拍摄 ESXi 主机的快照(如果是 vCenter 管理的主机)
Get-VMHost -Name  | Get-VM | New-Snapshot -Name "Before_Storage_Rescan_Fix" -Description "Backup before storage rescan fix"

2. 检查当前系统状态

# 检查存储设备状态
esxcli storage core device list

 

# 检查任务状态
esxcli system task list

 

# 检查 hostd 进程状态
ps | grep hostd

3. 分离存储设备

# 列出所有存储设备
esxcli storage core device list

 

# 分离特定的存储设备
esxcli storage core device set -d  -s false

4. 取消掩码存储设备

# 列出当前的存储掩码
esxcli storage core claimrule list

 

# 删除对应的存储掩码规则
esxcli storage core claimrule remove -r

 

# 更新存储系统
esxcli storage core claimrule load
esxcli storage core claimrule run

5. 重新扫描存储

# 执行存储重新扫描
esxcli storage core adapter rescan --all

预防措施

1. 按照正确的操作顺序

# 执行存储操作时,遵循正确的顺序:
# 重新扫描 → 分离 → 取消掩码 → 重新扫描

2. 监控存储操作

# 在执行存储操作时,监控任务状态
Get-Task | Where-Object {$_.State -eq "Running"}

 

# 监控系统资源使用情况
esxcli system process list | Sort-Object -Property CPUPercent -Descending

3. 定期维护存储系统

# 定期检查存储系统的健康状态
esxcli storage core device list | Select-Object Device, Size, Vendor, Model, Status

 

# 检查存储适配器状态
esxcli storage core adapter list

故障排查

1. 任务无法取消

# 如果重新扫描任务无法取消
# 使用 ESXi Shell 列出并终止任务
esxcli system task list
esxcli system task cancel -t 

2. 管理代理无法启动

# 如果管理代理无法启动
# 检查系统资源
top | head -20

 

# 检查日志文件
tail -f /var/log/hostd.log
tail -f /var/log/vmkernel.log

 

记住,存储管理操作直接影响到虚拟机的可用性和数据安全,因此在执行此类操作时需要格外谨慎。如果遇到无法解决的问题,及时联系 VMware 支持寻求帮助。


Reference: VMware KB 429293

有VM问题需要协助?

免费试用VMware技术助理(已接Deepseek)!即时解答VM难题

→ 🤖VM技术助理

解析和诊断各类vCenter错误,ESXi日志,虚拟机vmware.log

→ 📕VMware日志分析器

图书推介 - 京东自营

24小时热门

还有更多VMware问题?

免费试下我们的VMware技术助理(已接Deepseek)!即时解答VM难题 → 🤖VM技术助理

试试 📕VMware日志分析器 免费诊断各类vCenter错误,ESXi日志,虚拟机vmware.log等等

########

扫码加入VM资源共享交流微信群(请备注加群

需要协助?或者只是想技术交流一下,直接联系我们!

推荐更多

vCenter8.0 U2的SSH随机无法访问:root账户锁定问题
运维必备

vCenter8.0 U2的SSH随机无法访问:root账户锁定问题

vCenter 8.0 U2+ SSH 随机无法访问:root 账户锁定问题。vCenter Server 8.0 U2 及以上版本中,SSH 访问 root 账户可能会随机失效。本文分析锁定机制变化并提供解决方案。 本文针对该问题提供了深度剖析与实测解决方案。

使用 Host Profile 重置 ESXi 主机 root 密码
运维必备

使用 Host Profile 重置 ESXi 主机 root 密码

使用 Host Profile 重置 ESXi 主机 root 密码。ESXi 主机 root 密码忘记了?无法登录?本文介绍如何使用 Host Profile 功能重置 ESXi 主机的 root 密码。 本文针对该问题提供了深度剖析与实测解决方案。

ESXi无法挂载NFS 4.1卷的故障分析与解决方案
运维必备

ESXi无法挂载NFS 4.1卷的故障分析与解决方案

ESXi 无法挂载 NFS 4.1 卷的故障分析与解决方案。ESXi 主机无法挂载 NFS 4.1 卷,操作超时并提示服务器不支持 NFS 4.1 协议。本文分析原因并提供解决方案。 本文针对该问题提供了深度剖析与实测解决方案。

//omg10.com/4/9119499