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资源共享交流微信群(请备注加群

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

推荐更多

vCenter 8 ADFS 用户登录 VAMI 报错:无法获取历史数据导入状态
运维必备

vCenter 8 ADFS 用户登录 VAMI 报错:无法获取历史数据导入状态

vCenter 8 ADFS 用户登录 VAMI 报错:无法获取历史数据导入状态。vCenter 8 中使用 ADFS 组用户登录 VAMI 时出现错误,健康状态和 SSO 字段显示未知。本文分析原因并提供解决方案。 本文针对该问题提供了深度剖析与实测解决方案。

vMotion过程中vmnic 意外切换:ESXi网络故障深度排查与解决
运维必备

vMotion过程中vmnic 意外切换:ESXi网络故障深度排查与解决

vMotion 过程中 vmnic 意外切换:ESXi 网络故障深度排查与解决。在 vMotion 过程中遇到 vmnic 意外切换导致网络中断、冗余丢失甚至迁移失败?本文深度解析故障原因,提供排查方法与解决方案。 本文针对该问题提供了深度剖析与实测解决方案。

ESXi 上模拟 Fibre Channel 链路故障的完整方法
运维必备

ESXi 上模拟 Fibre Channel 链路故障的完整方法

ESXi 上模拟 Fibre Channel 链路故障的完整方法。本文详细介绍了在 ESXi 主机上模拟 Fibre Channel 链路故障的三种方法,包括逻辑模拟、物理模拟和链路重置,帮助管理员验证 HA 和存储多路径配置的正确性。 本文针对该问题提供了深度剖析与实测解决方案。

ESXi 主机重启后 vMotion 失败的详细故障排查
运维必备

ESXi 主机重启后 vMotion 失败的详细故障排查

ESXi 主机重启后 vMotion 失败的详细故障排查。本文详细介绍了 ESXi 主机重启或升级后 vMotion 失败的常见原因、故障现象以及完整的排查解决流程。 本文针对该问题提供了深度剖析与实测解决方案。

//omg10.com/4/9119499