ESXi 7 存储管理与故障处理文档

目录


1. ESXi 7 中检测修复 datastore1 存储文件系统错误

1.1 完整步骤指南

1.1.1 识别数据存储和确认错误

  1. 登录 ESXi Shell
  2. 通过 ESXi 主机控制台 (直接访问或 IPMI/iDRAC/iLO)
  3. SSH (需启用) 或 Host Client 的 "操作" > "服务" > "启用安全 Shell (SSH)"

  4. 列出数据存储 bash esxcli storage vmfs extent list

  5. 找到 datastore1 对应的 Volume Name (如 naa.xxxxxxxxxxxxxxxx)
  6. 查找挂载点路径 (通常是 /vmfs/volumes/datastore1)

  7. 检查日志 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 关键准备 (必须完成)

  1. 关闭或迁移虚拟机
  2. 所有在 datastore1 上运行的虚拟机必须完全关闭电源或迁移到其他数据存储

  3. 卸载数据存储 bash esxcli storage filesystem unmount -l datastore1

  4. 验证状态: esxcli storage filesystem list,状态应为 Unmounted

1.1.3 检测和修复文件系统 (使用 vmkfstools)

  1. 检测错误 (只读检查) bash vmkfstools --vvolfile 0 --checkconsistency /vmfs/volumes/datastore1

  2. 修复错误 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 验证修复

  1. 检查日志: 查看 /var/log/vmkernel.log
  2. 主机 UI 检查: 在 ESXi Host Client 中检查状态
  3. 访问测试: 创建/删除小文件测试
  4. 启动虚拟机: 谨慎启动测试虚拟机

1.2 关键注意事项

  1. 停机时间: 修复必须卸载存储,安排维护窗口
  2. 虚拟机状态: 确保所有虚拟机已关闭或迁移
  3. 备份: 修复前必须备份所有关键虚拟机
  4. -f 选项风险: 强制修复是最后手段,可能导致数据丢失
  5. 根本原因: 调查导致损坏的根本原因(磁盘故障、HBA/RAID卡问题等)
  6. VMFS 版本: ESXi 7 默认使用 VMFS 6,有更强的弹性和自动修复机制
  7. 硬件问题优先: 先解决底层硬件问题

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 预防措施

  1. 定期清理 bash # 查找残留文件 find /vmfs/volumes/datastore1 -name "*.lck" -type d -mtime +7

  2. 配置自动化 bash # 启用ESXi自动清理 esxcli system settings advanced set -o /VMFS3/EnableBlockDelete -i 1

  3. 最佳实践

  4. 使用存储vMotion迁移虚拟机而非直接复制文件
  5. 避免在VM运行时操作后端存储
  6. 定期更新ESXi补丁

  7. 日志检查 bash grep -i "lock" /var/log/vmkernel.log | grep "文件名"

2.4 重要提示

  • 操作前务必
  • 对虚拟机进行快照备份
  • 在维护窗口进行操作
  • 通过vmkfstools --queryfs检查数据存储完整性

  • 特殊文件处理

  • .vswp文件:关闭虚拟机后自动删除,无需手动干预
  • 快照文件(*-delta.vmdk):需通过快照管理器合并,不可直接删除
  • ISO镜像:断开所有CD-ROM连接后重试

总结要点

文件系统修复核心流程

准备(关虚拟机+卸载) → 检测(只读检查) → 修复(谨慎使用-f) → 重新挂载 → 验证

文件删除关键原则

先安全解除锁定 → 再尝试删除 → 最后考虑强制手段

通用建议

  1. 备份是王道:操作前务必备份关键数据
  2. 根本原因分析:修复问题后调查原因,防止复发
  3. 专业支持:复杂情况寻求VMware或存储厂商支持
  4. 文档记录:记录所有操作步骤和结果,便于追踪

文档生成时间:2025年7月12日
适用版本:VMware ESXi 7.0 及以上
风险提示:生产环境操作前请在测试环境验证