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

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

推荐更多

//omg10.com/4/9119499