esxi重装后虚拟机数据能否恢复,关键看重装时有没有动数据存储分区;只要磁盘没有被格式化或重新分区,虚拟机文件就还在,数据恢复的把握相当大。
很多人遇到esxi系统崩溃、升级失败或换新硬盘安装时,第一反应是“虚拟机全没了”,其实虚拟机并不是装在esxi系统里的,而是放在独立的vmfs数据存储中,搞清楚这一点,你就知道该从哪里下手找回数据。
esxi重装虚拟机数据能恢复吗?先弄清数据存在哪
esxi只是一个底层虚拟化系统,它负责调度硬件资源、管理虚拟机运行,真正存放虚拟机文件的地方是vmfs数据存储,也就是esxi主机上的本地磁盘、SAN存储或iSCSI存储,每个虚拟机包含的vmdk虚拟磁盘文件、vmx配置文件、vswp交换文件、日志文件等,全部堆在数据存储对应的目录里。
重装esxi系统,本质上是往系统分区写入新的hypervisor内核和配置文件,这个操作通常只影响esxi的启动分区和系统分区,不会主动去格式化数据存储,行业共识认为,只要重装过程中没有手动对磁盘重新分区、格式化或删除vmfs卷,虚拟机数据就仍然完好地躺在数据存储里。
但实际操作中,有一部分人恢复失败,不是因为数据丢了,而是因为重装后的esxi不知道有这些虚拟机存在,旧esxi的清单注册信息随着系统分区一起被覆盖,新系统不会自动把旧虚拟机列出来,你看到的“虚拟机不见了”,多数情况下只是没注册,而不是没数据。
esxi重装后虚拟机不见了:三种情况对应三种结果
重装时保留了原数据存储
安装esxi时,安装程序会扫描所有磁盘,如果你看到界面上有一个或多个vmfs分区提示“已存在数据存储”,并且你没有选择覆盖或格式化,那么重装结束后,这些数据存储会自动挂载到新系统,裸设备映射等高级配置可能需要重新关联,但基本的数据链路是通的。
此时恢复操作很简单:在vSphere Client里找到数据存储,浏览里面的虚拟机目录,把vmx文件重新注册一遍,虚拟机就回来了,不用做任何数据提取或转换,vmdk文件原样可用。
重装时不小心重置了磁盘分区
安装向导里有一个危险选项:选择安装目标时如果点了带有旧数据的磁盘并确认格式化,esxi会用新的vmfs卷替代原有分区表,注意,分区表被重建不等同于数据被彻底抹掉,原来vmdk文件占用的数据块还在物理盘上,只是新的文件系统索引里没有它们的记录。
这种情况下,数据恢复思路就变了,你需要停止写操作,用专业工具扫描整个磁盘扇区,找残留的vmfs卷起始信息,或者直接用通用数据恢复工具按文件特征提取vmdk,有相当一部分虚拟机能够恢复,但难度比情况一大得多,esxi重装虚拟机数据恢复到这里,已经属于需要专门工具和技巧的范畴了。
整个存储盘被重新格式化并写了新数据
如果重装esxi后还新建了虚拟机,新虚拟机的写入会覆盖旧vmdk所在的数据块,覆盖越多,恢复概率越低,多数情况下,被覆盖区域的虚拟机已经无法完整找回,这也引出一个建议:一旦发现重装后数据消失,立即停止一切写操作,包括新建虚拟机、上传ISO、移动文件等,先把硬盘摘下来做镜像,再操作镜像文件,是稳妥的做法。
esxi重装后找回虚拟机:具体操作步骤
第一步:确认数据存储是否被识别
用vSphere Client登录新esxi主机,进入“存储”页面,查看有没有自动出现的vmfs数据存储,如果看到了,跳到第三步,如果没有,先执行以下命令确认磁盘是否被系统识别:
esxcli storage filesystem list
ls /vmfs/volumes/
如果没有任何输出,磁盘可能被卸载或未被识别,执行:
esxcli storage core adapter rescan --all
重新扫描所有存储适配器,如果还是看不到,用partedUtil getptbl /dev/disks/设备名查看磁盘分区表是否存在vmfs分区类型。
第二步:确认旧虚拟机的注册文件还在
数据存储出现后,浏览目录结构,找到旧虚拟机名称对应文件夹,确认里面有vmx文件和vmdk文件,vmdk文件可能是一整个大文件,也可能拆成多个子文件,只要vmdk描述文件和对应的-flat文件都在,数据基本完整。
注意一个细节:重装esxi后,新版本如果比旧版本高,虚拟机的硬件版本可能需要升级才能开机,但升级前先做好快照或克隆副本,硬件版本升级是单向操作,旧版esxi无法再打开升级后的虚拟机。
第三步:重新注册虚拟机
在“虚拟机”页面点击“创建/注册虚拟机”,选择“注册现有虚拟机”,浏览到vmx文件所在路径,确认后导入,系统会读取vmx里的配置,列出虚拟机的CPU、内存、磁盘、网卡设置,确认无误后启动虚拟机。
启动时报错“找不到磁盘”怎么办?打开虚拟机编辑设置,查看硬盘的存储位置是否指向正确的vmfs卷,重装后数据存储名称可能变了,报错大概率是因为路径引用失效,手动把磁盘路径重新指到对应vmdk文件即可,对于esxi重装后怎么找回虚拟机这个问题,绝大多数人卡在这一步,原因就是新旧数据存储名称不一致。
如果是数据存储整个丢了:走提取流程
当第二个esxi重装数据恢复场景出现时,不再指望直接注册虚拟机,思路是拿一块足够大的备用磁盘,用LinuxLive环境启动物理机,再用vmfs-tools等工具挂载vmfs卷,具体流程:
- 启动Linux Live系统(如Ubuntu桌面版)。
- 使用
vmfs-fuse或vmfs6-tools挂载目标磁盘上的vmfs分区。 - 读取出里面的vmdk文件后,复制到备用存储。
- 创建一个新虚拟机,把恢复出来的vmdk挂为磁盘。
这类方式对操作者的Linux基础有要求,如果没有把握,别反复折腾原始磁盘,每一次失败的挂载尝试都有可能写入新的数据。
esxi数据恢复多少钱?值不值得找人处理
讨论esxi数据恢复多少钱之前,先评估数据价值,如果你丢失的虚拟机里有生产数据库、业务系统,或者客户资料,直接找专业数据恢复服务商是稳妥的,近年来数据恢复服务市场相对成熟,esxi数据恢复的报价通常在数千元到上万元不等,具体取决于故障类型、磁盘容量和恢复难度,国内一线城市的数据恢复公司对vmfs卷恢复经验较多,如果涉及RAID重组,价格会再上一个台阶。
如果你的虚拟机只是测试环境或临时搭建的,完全可以按上面步骤自己尝试,多数情况下,重装后能找到vmfs卷的,自己动手就能解决,不用花钱。
避免下次重装esxi再丢虚拟机:两个前置动作
第一个前置动作:把虚拟机配置导出备份,vmx文件本身就承担了虚拟机描述的全部职责,在旧esxi正常工作期间,定期用vSphere Client把虚拟机模板导出,或者至少把vmx文件复制到外部存储,重装完新系统后,手动创建虚拟机指向外部备份的vmdk,二十分钟就能恢复。
第二个前置动作:把esxi系统和虚拟磁盘分开存放,esxi装在本地U盘或专用小容量SSD上,虚拟机全部放到NAS、SAN或独立数据盘上,重装esxi只影响系统盘,数据盘完全不动,考虑到esxi上跑的虚拟机大多是7×24小时持续写入,把esxi系统重新部署这件事本身就不应该碰数据盘。
还有一点容易被忽略:重装前在旧esxi上执行一次vim-cmd vmsvc/snapshot.create给重要虚拟机做一个快照,再把快照文件复制到异机备份,快照虽然不能直接跨esxi恢复,但vmdk的完整备份可以由快照派生出来,给恢复多留一条路。
Q&A:esxi重装虚拟机数据恢复高频问题
esxi重装时选择了格式化存储,还有救吗?
分区被格式化属于情况二的范畴,如果格式化后没有新数据写入,恢复成功率相对可观,vmdk文件在vmfs卷里的存储方式是连续分配与动态分配结合,未覆盖的数据块仍然可读,尝试用vmfs-tools扫描磁盘恢复vmdk文件,需要注意,格式化后系统可能自动创建新的vmfs卷,这个操作本身已经轻度覆盖了原分区表区域,但不影响绝大多数数据块。
esxi重装后虚拟机列表是空的,但数据存储里有文件,怎么恢复?
直接注册即可,在vSphere Client的虚拟机选项卡选择“注册现有虚拟机”,浏览到数据存储下对应虚拟机文件夹中的vmx文件,导入后等待状态变为“已打开电源”,如果出现“无法打开磁盘”类报错,优先检查数据存储名称是否变化,然后检查虚拟机SCSI控制器是否与vmdk类型匹配。
恢复后的虚拟机启动进不了系统,一直卡在开机界面是什么原因?
多数情况是恢复了vmdk但没恢复网卡配置,或者硬件版本升级导致驱动缺失,先用vSphere Web Client把虚拟机的网卡重新配置一遍,确认MAC地址和原配置一致,如果仍然卡在启动阶段,用esxi的救援模式进入虚拟机,检查/etc/fstab或Windows引导配置是否正确,esxi重装虚拟机数据恢复实践中最常见的问题不是文件损坏,而是启动配置与新硬件不匹配,修复引导分区即可。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/635517.html


