ESXi 升级到 8.0 后 VM 快照删不掉?一篇讲透 “in progress“ 死循环的 3 种解法
本文适用版本:ESXi 7.0 U3 → 8.0 U2 升级场景(vSphere 6.7 升级也会遇到)阅读时长:约 8 分钟难度:⭐⭐⭐(操作不可逆,生产 VM 强烈建议先备份再动)一、为什么写这篇文章?最近私信里又有几位网友问:ESXi 7.0 升到 8.0 之后,VM 的快照怎么都删不掉,vSphere Client 里一直显示 Snapshot removal is in progress,挂了一整天也不动。有人直接重启 ESXi,结果快照文件不但没释放,反而多出一堆孤儿 delta 磁盘;DBA 朋友更惨——备份脚本每天对 30 台 VM 跑一致性快照,卡死后整套备份策略直接瘫痪。今天这篇文章把这个坑彻底讲清楚,保证看完你能独立判断是 等、是 主动清、还是 暴力拆。二、先搞清楚:快照删除的内部流程ESXi 删快照不是按下按钮就删完,而是一个多步骤事务:1. 创建临时 delta 磁盘(把后续写入重定向到新文件) 2. 把原 vmdk 数据合并回基础磁盘(consolidate) 3. 合并完成后删除中间的 delta 文件 4. 更新 vmx/vmsd 元数据,标记快照已删除 如果第 2 步卡住 → in progress 状态持续 如果第 2 步异常退出 → 快照异常,需要手动 consolidate关键认知:快照删除本质上是磁盘数据合并,VM 还在跑、还在写盘,合并器就要追赶实时 IO——VM IO 越大,合并越慢;VM 内存越大,内存状态合并更慢。三、3 秒定位:快照到底卡在哪一步?SSH 进 ESXi(或者 vCenter 的 ESXi shell),跑:# 1. 看快照文件实际大小(找到目标 VM 的 datastore 路径) find /vmfs/volumes/ -name *delta* -size 1G -exec ls -lh {} \; # 2. 看主机上是否有正在运行的 consolidate 任务 esxcli storage vmfs datastore list | head -5 # 然后: ps | grep -E consolidat|vmkfstools # 3. 看 VM 是否有 locked 文件 find /vmfs/volumes/ -name *.lck 2/dev/null | head -20状态对照表:现象卡在哪严重程度vSphere Client 显示 in progress 但 vmkernel.log 有合并 IO 记录第 2 步(磁盘合并中) 等就行卡了几小时,但合并进程不在 ps 里第 2 步异常退出 需要手动 consolidate快照列表里看到重复 / 出现孤儿 delta第 4 步元数据损坏 需要手动清盘VM 关机后快照立刻能删第 1 步被 VM 锁住 VM 状态问题四、第一道解法:等!(适用于 70% 的情况)官方标准:快照删除的速度大约5–15 GB/分钟,取决于存储 IOPS 和 VM 写入压力。换算公式:预计耗时(分钟) 快照数据总量(GB) ÷ 10 举例: - 50GB 快照 → 约 5 分钟 - 200GB 快照 → 约 20 分钟 - 1TB 快照 → 约 100 分钟(1.5 小时) - 5TB 快照 → 约 8 小时怎么判断是不是真的卡了:# 在 vSphere Client 里: # Monitor → Performance → Disk → 看 datastore 的 read/write 流量 # 如果 IO 一直有波动 → 合并在跑,别动它 # 如果 IO 持续为 0 → 合并已停,需要介入踩坑提醒:删除过程中绝对不要重启 ESXi 或 VM,会留下孤儿 delta 磁盘不要同时对该 VM 做 vMotion / Storage vMotion,会触发快照重建不要取消删除再重新删,会重复第 1 步,生成新 delta五、第二道解法:手动 Consolidate(适用于卡死但进程不在)如果你确认合并进程已经停了(IO 持续为 0 ps 里找不到 consolidate),用官方工具强制合并:# 在 vSphere Client 里操作(推荐): # 选中 VM → 右键 → Snapshots → Consolidate # 或者用 vim-cmd(SSH 进 ESXi 后): vim-cmd vmsvc/snapshot.removeall vmid # 或者用 vmkfstools(更底层,可看进度): vmkfstools -i /vmfs/volumes/datastore1/VMName/VMName-000001.vmdk \ /vmfs/volumes/datastore1/VMName/VMName.vmdk # 看着是把 -000001.vmdk 合并回主 vmdk如果上面报错 File is locked,说明还有进程持有文件锁:# 找锁定文件的进程 vmkfstools -D /vmfs/volumes/datastore1/VMName/*.vmdk # 输出会显示类似: # Lock [type 10c00001 offset 4587520 v 3185, hb offset 3481600 # gen 17, mode 1, owner 65c5e4e4-xxxx] # MAC 和 gen 字段 → 定位到具体 ESXi 主机 # 在对应主机上找进程 lsof | grep VMName-000001.vmdk # 杀掉该进程(生产环境慎用) kill -9 pid六、第三道解法:暴力清盘(适用于元数据损坏)走到这一步就属于手术刀操作了。必须先备份 VM 目录:# ⚠️ 第一步:整 VM 目录打包(救命稻草) mkdir /vmfs/volumes/datastore1/VMName_backup cp -r /vmfs/volumes/datastore1/VMName/* /vmfs/volumes/datastore1/VMName_backup/ # 第二步:看清楚快照链 ls -lh /vmfs/volumes/datastore1/VMName/ # 典型输出: # VMName.vmdk ← 基础磁盘 # VMName-000001.vmdk ← 快照1 # VMName-000001-delta.vmdk # VMName-000002.vmdk ← 快照2 # VMName-000002-delta.vmdk # VMName.vmx ← 配置 # VMName.vmsd ← 快照元数据方案 A:把快照合并回基础盘(最稳)# 1. 关机 VM vim-cmd vmsvc/power.off vmid # 2. 删除中间层快照文件(只留基础盘 最新的 delta) # 假设你想丢弃 -000001,保留 -000002: vmkfstools -i /vmfs/volumes/datastore1/VMName/VMName-000002.vmdk \ /vmfs/volumes/datastore1/VMName/VMName.vmdk # 3. 编辑 VMName.vmx,删除所有 checkpoint.* 行 # 删除 scsi0:0.fileName 指向 -000001.vmdk 的那行 # 改回 scsi0:0.fileName VMName.vmdk # 4. 删除残留文件 rm /vmfs/volumes/datastore1/VMName/VMName-000001*.vmdk rm /vmfs/volumes/datastore1/VMName/VMName-000002*.vmdk # 5. 重新注册 VM vim-cmd solo/registervm /vmfs/volumes/datastore1/VMName/VMName.vmx # 6. 开机测试 vim-cmd vmsvc/power.on vmid方案 B:转成新 VM(更安全,推荐生产)# 把当前快照状态导出成独立 VM # vSphere Client → 右键 VM → Export → OVF Template # 然后用 OVF 部署一个新 VM,完全不依赖原快照链 # 或者直接克隆: vim-cmd vmsvc/clone vmid /DatacenterName/vm NewVMName /DatastoreName datastore1七、防患于未然:3 个最佳实践1. 快照生命周期上限(关键)生产 VM 快照不超过 24 小时数据库 VM 快照不超过 4 小时(日志增长可能撑爆)任何 VM 快照链不超过 32 层(ESXi 硬上限)2. 备份替代快照# 真正需要恢复点时,用专业备份(VEERAM / Nakivo / 国产爱数),不要用快照 # 快照 ≠ 备份,这是 VMware 官方反复强调的3. PowerCLI 定时清理孤儿快照# 找出所有超过 7 天的快照 Get-VM | Get-Snapshot | Where-Object { $_.Created -lt (Get-Date).AddDays(-7) } | Select-Object VM, Name, Created, SizeMB | Format-Table -AutoSize # 找出所有卡死的快照(没有 Created 字段的) Get-VM | Get-Snapshot | Where-Object { -not $_.Created } | Select-Object VM, Name, Id | Format-Table -AutoSize八、速查命令卡(可收藏转发)# 1. 估算删除时间 预计耗时(分钟) 快照数据总量(GB) ÷ 10 # 2. 手动 consolidate(VM 在跑时) vim-cmd vmsvc/snapshot.removeall vmid # 3. 强制合并(VM 关机时) vmkfstools -i /vmfs/volumes/datastore1/VM/VM-000001.vmdk \ /vmfs/volumes/datastore1/VM/VM.vmdk # 4. 看谁锁住了文件 vmkfstools -D /vmfs/volumes/datastore1/VM/*.vmdk # 5. 找出孤儿快照 Get-VM | Get-Snapshot | Where-Object { -not $_.Created } # 6. PowerCLI 批量清理 7 天前的快照 Get-VM | Get-Snapshot | Where-Object { $_.Created -lt (Get-Date).AddDays(-7) } | Remove-Snapshot -Confirm:$false

相关新闻

ESXi ping 得通但连不上 vCenter?一篇讲透 hostd 假死的全套救法

ESXi ping 得通但连不上 vCenter?一篇讲透 hostd 假死的全套救法

本文适用版本:ESXi 7.0 U3 / 8.0 U2 / 9.0 GA 阅读时长:约 7 分钟 难度:⭐⭐(SSH 能进就能修,但要分清是 hostd 还是 vpxd 的锅)一、为什么写这篇文章?最近私信里又陆续收到几位网友问:ESXi 能 ping 通、SSH 也能进、DCUI 也正常,但 vCenter 里主机显示"未响应"或&q…

2026/10/15 2:48:27 阅读更多 →
前端XSS防御实战:xss-filters上下文转义库详解

前端XSS防御实战:xss-filters上下文转义库详解

简介:前端开源库-xss-filters是一份面向前端开发者与安全入门者的XSS防护工具源码包,聚焦于解决用户输入回显场景下的跨站脚本注入风险。资源共30个文件,以20个js源码与测试脚本为主体,辅以3个json配置、3个md说明文档&#xff0c…

2026/10/15 2:48:27 阅读更多 →
ESXi 装系统报错 “bootbank is corrupted“ 怎么办?一篇讲透三种根治方案

ESXi 装系统报错 “bootbank is corrupted“ 怎么办?一篇讲透三种根治方案

本文适用版本:ESXi 7.0 U3 / 8.0 U2 / 9.0 GA(三版统一报错,解决方案略有差异) 阅读时长:约 8 分钟 难度:⭐⭐⭐(需在 DCUI/物理机前操作,不建议生产机远程盲操作)一、为什么写这篇文章? 最近陆续有几位网友私信问同一个问题:装 ESXi 的时候跑到一半,屏幕突然卡住,报 bootbank…

2026/10/15 2:48:27 阅读更多 →

最新新闻

Java接入个人微信API:消息回调进客服系统的正确姿势

Java接入个人微信API:消息回调进客服系统的正确姿势

Java 团队接个人微信,通常第一反应是:Spring Boot 写个 Controller,接收回调,然后直接在方法里写业务。 本地调试挺顺,一上生产就出现:接口超时、消息重复、Tomcat 线程打满。 问题不在 Java,而…

2026/10/15 3:33:41 阅读更多 →
YOLO26算法室内工作环境手部手势目标检测+训练好的模型+8212张数据集+pyqt可视化界面

YOLO26算法室内工作环境手部手势目标检测+训练好的模型+8212张数据集+pyqt可视化界面

YOLO26算法室内工作环境手部手势目标检测训练好的模型8212张数据集pyqt可视化界面 这套数据共 8212 张图。用 YOLO26 训了 100 轮,mAP50 0.7315,mAP50-95 0.6002。Precision 0.7335、Recall 0.7532。下面按数据构成 → 训练曲线 → 预测效果的顺序过一遍…

2026/10/15 3:33:41 阅读更多 →
仓颉编程语言 I/O 节点流完全指南:标准流与文件流的实战解析

仓颉编程语言 I/O 节点流完全指南:标准流与文件流的实战解析

文档知识库教程OpenHarmony 【免费下载链接】CangjieCorpus 本仓库为仓颉编程语言语料库,聚焦 仓颉编程语言 核心知识体系,整合官方开发指南、API 文档、典型代码示例及语法规范等多维度资源,经结构化处理与专业标注,构建为支持 R…

2026/10/15 3:33:41 阅读更多 →
LAMMPS bond_style mm3 键伸缩势详解:YAFF 包的 MM3 非谐势实现、参数配置与实战应用

LAMMPS bond_style mm3 键伸缩势详解:YAFF 包的 MM3 非谐势实现、参数配置与实战应用

科研科学计算高性能计算 【免费下载链接】lammps Public development project of the LAMMPS MD software package 项目地址: https://gitcode.com/gh_mirrors/la/lammps 点击查看 免费下载 导读 bond_style mm3 是 LAMMPS 中用于描述键伸缩运动的非谐势模型&…

2026/10/15 3:33:41 阅读更多 →
Flutter Engine Windows 无障碍实现解析:MSAA 与 UI Automation 在 AXPlatformNodeWin 中的落地

Flutter Engine Windows 无障碍实现解析:MSAA 与 UI Automation 在 AXPlatformNodeWin 中的落地

跨平台前端移动开发OpenHarmony 【免费下载链接】flutter_flutter 本仓库是 Flutter SDK 与 Flutter Engine 的 OpenHarmony 适配版本,由 CPF-Flutter 团队维护。开发者可使用熟悉的 Flutter 技术栈开发 OpenHarmony 应用,3.35.7 及以后的适配版本可基于…

2026/10/15 3:33:41 阅读更多 →
Natron ErodeSmooth 节点完全指南:归一化功率加权腐蚀/膨胀滤镜的参数解析与源码级解读

Natron ErodeSmooth 节点完全指南:归一化功率加权腐蚀/膨胀滤镜的参数解析与源码级解读

音视频视频处理图形学桌面应用 【免费下载链接】Natron Open-source video compositing software. Node-graph based. Similar in functionalities to Adobe After Effects and Nuke by The Foundry. 项目地址: https://gitcode.com/gh_mirrors/na/Natron 点击查看 …

2026/10/15 3:32:41 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →