Featured image of post 生产环境“删库”救命指南:NAS + vSphere 下的虚拟机数据恢复实操记录

生产环境“删库”救命指南:NAS + vSphere 下的虚拟机数据恢复实操记录

声明: 本文为真实操作记录,旨在为运维同学在面对“数据误删”或“虚机崩溃”时提供一套经过验证的恢复路径。

核心金律:操作千万条,备份第一条;挂载新签名,数据不破坏。


一、 场景回溯:灾难发生的第 0 小时

最近使用1panel(v2版本)时遇到个坑:如果“网站” 创建时指定了app 应用,在删除“网站”时 不留意会顺带把应用一起删除(见下图)。。

我刚养了两天的龙虾(OpenClaw) 数据,全没了。。。 呜呜呜~~

而且本来就在调试,相关应用备份我是一点没准备好。这数据重新弄可老麻烦了(里面还有它刚给我调试好的 Agent web 页面)。

冷静下来,思索的第一件事是:我有没有快照?能恢复数据不?

因为我是在虚拟机上安装的1panel和OpenClaw:

  • 系统备份是4天前的——还原了也用不了
  • 存储上整个iSCSI的块存储(Lun)倒是每天有一个快照——全部还原意味着 8-9台虚拟机的数据也一并还原了。。。

这可咋办?

最后,在服务不停机的情况下,使用这个快照将应用(OpenClaw)数据恢复到了前一天的状态。

先介绍下我的测试环境:

  • 存储端:NAS (Btrfs 文件系统,开启了快照功能)
  • 计算端:VMware vSphere (ESXi 宿主机)
  • 协议:iSCSI

二、 灾难发生的第 1小时:召回“丢失的世界”

不要直接在原始快照上操作,最稳妥的方法是克隆一个临时的 LUN。

  1. 快照定位:在 NAS 管理后台(如 SAN 管理器)找到最近一个完好的快照。

  2. 克隆 LUN:基于快照克隆出一份数据卷(例如命名为 LUN-Recover-Temp)。

  3. 暴露目标:新增一个 iSCSI 目标(给个名字:recovery),并与刚才的克隆 LUN -1关联上。

    为了方便后续挂载,新建iSCSI Target 中的“多重联机”可以开启。

    • 注意:并确保LUN 策略中放行了 ESXi 宿主机的 IQN。

三、 灾难发生的第 2小时:安全访问克隆数据

这是最惊险的一步,选错选项可能导致克隆卷的数据结构被清空。

1. 扫描与识别

进入 vCenter -> 主机配置 -> 存储适配器,选择你的 iSCSI 适配器点击 “重新扫描存储”。此时在“设备”列表中应能看到那个克隆出来容量一致的新磁盘。状态是未挂载。

2. 挂载数据存储(关键!)

点击“新建数据存储”,选择 VMFS 类型,选中那个克隆出来的 LUN。此时向导会弹出 “解析选项”,请屏住呼吸选择:

  • ❌ 保留现有签名 (Keep Existing Signature)
    • 不选理由:这会保留原始的 UUID。vSphere 会识别出这是一个已有的 VMFS 卷,会覆盖现有挂载。
    • 误选后果:导致其他未受影响的虚拟机数据,一并还原至前一天的状态。——这不是我们希望的。
  • ✅ 分配新签名 (Assign a new signature):这通常用于想同时挂载原始和快照卷的情况,会导致虚拟机路径变化,不推荐。
    • 选择理由:当前环境,不希望停止正在运行的虚拟机,只希望把克隆盘中,昨天这台虚拟机中 OpenClaw 的应用数据导出来就行。
  • ❌ 格式化磁盘 (Format the disk):点下去你就彻底告别数据了。

成功挂在后,可以看到一个新的“数据存储”,点击存储中“文件”可以看到前一天整个虚拟机的数据。


四、 虚拟机内部:抢救数据

挂载成功后,浏览数据存储,你会看到“死而复生”的 .vmx.vmdk 文件。到这一步可以说:已经成功一半了。

  1. 注册虚拟机:右键点击恢复出来的 .vmx 文件 -> 注册虚拟机

  2. 启动

    • 启动恢复的虚机:此时可能会提示“I Moved It”或“I Copied It”,选择 “I Copied It” 以新运行一台昨天状态的机器。

    • 断网/改 IP:进系统后,第一时间修改主机 IP 地址,防止与生产环境冲突。

      因为这里是Linux主机,我就直接用到 nmtui命令快速修改新机器的IP 地址了。

  3. 数据导出与回填

    • 因为应用是在 1Panel 下运行的 Docker 服务。

    • 只需登录进新主机的1Panel管理界面,备份现有应用的应用数据即可。

    • 随后,下载刚才打包好的备份数据。

    • 返回登录数据丢失的主机:在 1Panel 中保持 Docker 应用名一致 的情况下,重新导入刚才这个备份数据——

  4. 服务启动:

    • 随后,服务重新启动。此时除了 服务Tokens 和之前的不一样以外,其他的配置文件,本地记录文件,飞书客户端对接地址。。。都是一样的。

    至此,应用就成功恢复了。

    数据还原成功后,克隆虚拟机和克隆卷也就不用了,可以相反的操作回到之前的状态:

    选择“删除虚拟机” –> “删除数据存储“ –> 删除iSCSI target –> 删除 克隆Lun 即可。


五、 最后的复盘

  1. 快照就是生命线:如果你还没在 NAS 上开启定期快照,现在就去点开它。哪怕每天一个快照也行。
  2. 1Panel 的优越性:在这种场景下,Docker 应用的备份、还原比直接恢复整台虚机要快得多,也更灵活。
  3. 冷静是第一生产力:NAS 和 VMware 都是多重保护的,只要不误点“格式化”或“保留原有标签”,数据总能找回来。
Licensed under CC BY-NC-SA 4.0