Skip to content

vSphere 数据存储文件被锁定(Locked)无法删除/移动的排障实录

vSphere 数据存储文件被锁定(Locked)无法删除/移动的排障实录示意图

背景

在 vSphere 运维过程中,我们经常需要清理或迁移数据存储(Datastore)中的 ISO 镜像等大文件。但在实际操作时,可能会遇到系统提示 “无法访问文件 ... since it is locked”“无法删除文件” 的错误。

最近我在对一台 ESXi 主机上的 NVMe_2TB_Storage 数据存储进行文件整理时,就遭遇了这个问题,多个 CentOS、Ubuntu 和 Windows 的 ISO 文件既无法移动也无法删除。

错误现象

  1. 在 vSphere Client 的任务控制台中,执行“移动文件”或“删除文件”操作失败。
  2. 错误信息类似:
  • 无法访问文件 [NVMe_2TB_Storage] iso/ubuntu-22.04.5-live-server-amd64.iso
  • Failed - Unable to access file /vmfs/volumes/.../CentOS-7...iso since it is locked
  1. 反复重试或刷新存储均无效。

以下是任务控制台中实际报错的截图:

根因分析

经过排查,问题根源锁定在 虚拟机的 CD/DVD 驱动器设置 上:

  • 部分虚拟机(如 minio 等)的 CD/DVD 设备挂载了上述 ISO 文件。
  • 并且这些虚拟机的 CD/DVD 驱动器勾选了 “打开电源时连接”
  • 当虚拟机处于 开机(Powered On)挂起(Suspended) 状态时,ESXi 主机会锁定该 ISO 文件,以保证虚拟机运行时对镜像的读取一致性。

下图为 minio 虚拟机的 CD/DVD 驱动器配置,可以看到 ISO 文件仍处于挂载状态且勾选了“打开电源时连接”:

此外,如果虚拟机存在 快照(Snapshot),快照中也会记录光驱的设备状态,即使关机,也可能因为快照链的依赖而导致文件无法释放。

解决步骤

以下是最终解决问题的操作流程:

第一步:清理虚拟机快照(如有)

在 vSphere Client 中,依次对所有相关虚拟机执行“移除所有快照”操作。这一步是为了清除快照中对 ISO 文件的引用依赖。

第二步:关闭虚拟机电源

关键一步:将挂载了该 ISO 的虚拟机执行“关机”(Power Off)操作。

⚠️ 注意:必须是“关机”而非“挂起”。挂起状态同样会持有文件锁。

第三步:重新执行文件移动/删除

待所有相关虚拟机关机完成后,再次回到数据存储浏览器,执行之前的文件操作(移动或删除),此时操作即可成功。

为什么这样做有效?

操作作用
删除快照清除快照链中对 ISO 的设备状态依赖,避免快照机制导致的锁残留。
关机(而非挂起)彻底释放虚拟机的设备资源,包括虚拟光驱对后端存储文件的句柄占用。
重新操作文件此时 ESXi 不再有任何进程占用该文件,文件系统层面的锁自动解除。

预防建议

为了避免同类问题再次发生,建议在虚拟机配置中遵循以下最佳实践:

  1. 系统安装完成后,及时卸载 ISO:将 CD/DVD 驱动器设置为“客户端设备”或“从数据存储中移除 ISO”。
  2. 取消“打开电源时连接”:避免虚拟机每次开机时自动挂载 ISO 文件。
  3. 定期清理无用 ISO:对数据存储中不再使用的镜像文件及时清理。
  4. 维护操作前批量关机:如果需要对数据存储进行大规模文件维护,建议先将相关虚拟机批量关机,或启用 ESXi 的维护模式。

总结

since it is locked 是 vSphere 环境中非常典型的文件锁定错误,大多数情况下都与 虚拟机光驱挂载快照残留 有关。通过删除快照 + 关机的组合操作,可以安全、有效地释放文件锁,无需重启 ESXi 主机或重启管理代理。

这次排障也再次印证了一个道理:虚拟化环境中的文件锁,往往不是存储层面的问题,而是虚拟机对设备引用的逻辑问题。

最后更新2026/08/15 05:18
如果你觉得这篇文章有帮助,或者想聊聊技术、工作,欢迎通过下面方式联系我:
contact fishfinal