ESXi 7 存储管理与故障处理文档
目录
- 1. ESXi 7 中检测修复 datastore1 存储文件系统错误
- 1.1 完整步骤指南
- 1.2 关键注意事项
- 2. ESXi 7 中删除被锁定的文件
- 2.1 常见锁定文件类型及原因
- 2.2 解决方案步骤
- 2.3 预防措施
1. ESXi 7 中检测修复 datastore1 存储文件系统错误
1.1 完整步骤指南
1.1.1 识别数据存储和确认错误
- 登录 ESXi Shell
- 通过 ESXi 主机控制台 (直接访问或 IPMI/iDRAC/iLO)
-
SSH (需启用) 或 Host Client 的 "操作" > "服务" > "启用安全 Shell (SSH)"
-
列出数据存储
bash esxcli storage vmfs extent list - 找到
datastore1对应的Volume Name(如naa.xxxxxxxxxxxxxxxx) -
查找挂载点路径 (通常是
/vmfs/volumes/datastore1) -
检查日志
bash grep -i "datastore1" /var/log/vmkernel.log grep -i "naa.xxxxxxxxxxxxxxxx" /var/log/vmkernel.log grep -i "VMFS" /var/log/vmkernel.log | grep -i "error\|corrupt\|warning"
1.1.2 关键准备 (必须完成)
- 关闭或迁移虚拟机
-
所有在
datastore1上运行的虚拟机必须完全关闭电源或迁移到其他数据存储 -
卸载数据存储
bash esxcli storage filesystem unmount -l datastore1 - 验证状态:
esxcli storage filesystem list,状态应为Unmounted
1.1.3 检测和修复文件系统 (使用 vmkfstools)
-
检测错误 (只读检查)
bash vmkfstools --vvolfile 0 --checkconsistency /vmfs/volumes/datastore1 -
修复错误
bash vmkfstools --vvolfile 0 --fix /vmfs/volumes/datastore1
强制修复 (谨慎使用)
bash
vmkfstools --vvolfile 0 --fix -f /vmfs/volumes/datastore1
1.1.4 重新挂载数据存储
esxcli storage filesystem mount -l datastore1
- 验证状态:
esxcli storage filesystem list,状态应为Mounted
1.1.5 验证修复
- 检查日志: 查看
/var/log/vmkernel.log - 主机 UI 检查: 在 ESXi Host Client 中检查状态
- 访问测试: 创建/删除小文件测试
- 启动虚拟机: 谨慎启动测试虚拟机
1.2 关键注意事项
- 停机时间: 修复必须卸载存储,安排维护窗口
- 虚拟机状态: 确保所有虚拟机已关闭或迁移
- 备份: 修复前必须备份所有关键虚拟机
-f选项风险: 强制修复是最后手段,可能导致数据丢失- 根本原因: 调查导致损坏的根本原因(磁盘故障、HBA/RAID卡问题等)
- VMFS 版本: ESXi 7 默认使用 VMFS 6,有更强的弹性和自动修复机制
- 硬件问题优先: 先解决底层硬件问题
1.3 如果修复失败或问题严重
- 从备份恢复: 最安全可靠的方案
- 重建数据存储: 备份数据 → 卸载存储 → 删除数据存储 → 重新创建 → 恢复
- 寻求支持: 联系 VMware 技术支持或存储设备厂商
2. ESXi 7 中删除被锁定的文件
2.1 常见锁定文件类型及原因
| 文件类型 | 锁定原因 |
|---|---|
.vmdk 磁盘文件 |
虚拟机正在运行或异常退出 |
.vswp 交换文件 |
虚拟机内存超额分配时创建 |
.vmem 内存文件 |
虚拟机挂起状态 |
.lck 锁目录 |
防止多主机同时访问 (VMFS锁机制) |
.log 日志文件 |
虚拟机运行时持续写入 |
.nvram BIOS文件 |
虚拟机启动时锁定 |
2.2 解决方案步骤
2.2.1 确认锁定状态和关联进程
# 查看文件锁定状态
ls -lh /vmfs/volumes/datastore1/目标文件路径
# 检查关联虚拟机
esxcli vm process list | grep -i "虚拟机名称"
2.2.2 优先尝试安全解除锁定
# 正常关闭虚拟机
vim-cmd vmsvc/getallvms # 列出所有VM ID
vim-cmd vmsvc/power.off [VM_ID] # 安全关机
# 强制关闭无响应虚拟机
esxcli vm process kill --type=force --world-id=[WorldID]
2.2.3 手动删除锁文件(.lck目录)
# 进入虚拟机目录
cd /vmfs/volumes/datastore1/虚拟机名称
# 删除锁目录
rm -rf *.lck # 或 rm -rf 具体锁目录名
2.2.4 重启管理服务(解除软锁定)
# 重启hostd服务 (不影响运行中的VM)
/etc/init.d/hostd restart
2.2.5 强制删除顽固文件(最后手段)
# 尝试通过vSphere Client删除
# -> 存储浏览器 -> 右键文件 -> 删除
# CLI强制删除 (谨慎使用!)
vmkfstools -U /vmfs/volumes/datastore1/文件路径
# 或
rm -f /vmfs/volumes/datastore1/文件路径
2.2.6 集群环境额外步骤
# 解除集群锁
esxcli storage filesystem unlock -l datastore1
2.2.7 终极解决方案
# 进入维护模式
esxcli system maintenanceMode set --enable true
# 执行删除操作
esxcli system maintenanceMode set --disable true
2.3 预防措施
-
定期清理
bash # 查找残留文件 find /vmfs/volumes/datastore1 -name "*.lck" -type d -mtime +7 -
配置自动化
bash # 启用ESXi自动清理 esxcli system settings advanced set -o /VMFS3/EnableBlockDelete -i 1 -
最佳实践
- 使用存储vMotion迁移虚拟机而非直接复制文件
- 避免在VM运行时操作后端存储
-
定期更新ESXi补丁
-
日志检查
bash grep -i "lock" /var/log/vmkernel.log | grep "文件名"
2.4 重要提示
- 操作前务必:
- 对虚拟机进行快照备份
- 在维护窗口进行操作
-
通过
vmkfstools --queryfs检查数据存储完整性 -
特殊文件处理:
- .vswp文件:关闭虚拟机后自动删除,无需手动干预
- 快照文件(
*-delta.vmdk):需通过快照管理器合并,不可直接删除 - ISO镜像:断开所有CD-ROM连接后重试
总结要点
文件系统修复核心流程
准备(关虚拟机+卸载) → 检测(只读检查) → 修复(谨慎使用-f) → 重新挂载 → 验证
文件删除关键原则
先安全解除锁定 → 再尝试删除 → 最后考虑强制手段
通用建议
- 备份是王道:操作前务必备份关键数据
- 根本原因分析:修复问题后调查原因,防止复发
- 专业支持:复杂情况寻求VMware或存储厂商支持
- 文档记录:记录所有操作步骤和结果,便于追踪
文档生成时间:2025年7月12日
适用版本:VMware ESXi 7.0 及以上
风险提示:生产环境操作前请在测试环境验证