当前位置: 首页 > news >正文

virtualbox虚拟机运行中断,启动报错“获取 VirtualBox COM 对象失败”

文章目录

    • 问题现象
    • 排查解决
    • 总结

问题现象

  • 2月7日下午四点多,我已经休假了,某县的客户运维方打来电话,说平台挂了,无法访问
  • 客户是提供的一台Windows server机器部署平台,是使用virtualbox工具安装的CentOS7.9虚拟机
  • 和运维沟通,他是今天刚来接班在春节假期值班的,上午平台还好好的,下午使用时发现不行了,无法访问,当时也有一个报错信息,但是他没有记录
  • 他先是尝试关闭虚拟机重启,发现无法启动,报错;关闭当前电脑再去重启,还是报错:虚拟机控制台-严重错误 “获取 VirtualBox COM 对象失败,应用程序将被中断
    在这里插入图片描述
  • 让他打开报错详细信息,看到报错Document is empty.,报错代码E_FAIL (0x80004005)
    在这里插入图片描述
  • 因为客户的这台作为服务器的电脑,只是用的普通电路线路,而这条线路在前段时间又接了充电桩,导致前段时间老是断电重启,我怀疑这次也是断电重启导致的文件损坏,问了下,发现今天没有断电重启,就突然不行了,所以也不是这个问题

排查解决

  • 其实报错信息很明显,就是文件C:\Users\Administrator\.VirtualBox\VirtualBox.xml为空了,0kb,当时没细究为啥是空白的

  • 按照以往的经验,先是重启电脑,再以管理员权限启动virtualbox,再次启动虚拟机,还是不行,只能去网上搜索解决方案了

  • 一开始搜到的一些结果,是重装虚拟机工具virtualbox,重新注册虚拟机进来。我觉得不靠谱,而且这个是生产环境,不好做这个有风险的操作

  • 然后搜索的一个和我类似的报错的一个解决方案《VirtualBox因为强制关机,第二天启动获取 VirtualBox COM 对象失败。亲测解决方案》,类似的报错,不少人评价解决了,我按照步骤实验了一遍,还是不行
    在这里插入图片描述

  • 接着搜索到一个和我报错完全一致的文章,文章说,找到这个文件位置(默认C盘,就是报错里的文件路径C:\Users\Administrator\.VirtualBox),删除这个空的文件VirtualBox.xml,重新启动virtualbox和虚拟机即可(因为这个文件是启动时,从虚拟机自己的文件夹的.vbox维护到C盘这个文件里),结果还是不行

  • 还有说,把虚拟机删除,重新注册进来的,尝试了还是不行,无法注册进来,报错信息到是变了下C:/新平台/虚拟/Centos7.v1.1.0/Centos7.v1.1.0.vbox为空
    在这里插入图片描述

  • 这个时候,我们到了虚拟机文件夹里,发现这个.vbox文件就是0KB,然后去查看了下机器的磁盘空间,爆红,没空间了,破案了
    在这里插入图片描述

  • 虚拟机目录的.vdi磁盘文件262G,Snapshots里的.vdi磁盘文件218G,而总的机器磁盘空间就500多G(也没想到机器空间这么小),加上机器上的其他文件,随着平台的运行,慢慢的就爆满了

  • 磁盘空间问题之前遇到一次:《在Windows server 2012上使用virtualBox运行CentOS7虚拟机,被强制暂停》,磁盘空间不足时,虚拟机无法运行。于是开始删除电脑磁盘里不要的文件,删了30G左右,继续启动虚拟机,还是不行,还是同样的报错

  • 查看了下这个文件夹,发现有一个同名的.vbox-prev文件,时间刚好是反馈的系统无法访问的时间,把这个文件内容恢复的.vbox文件里,重新注册进去,可以了,解决

总结

  • 客户只提供了Windows server服务器,而且配置比较低(500+G存储空间),而且该机器电路不稳定,偶发断电
  • 为了防止断电文件损坏导致平台无法恢复,就让运维加了备份,然后磁盘就撑满了
  • C:\Users\Administrator\.VirtualBox\VirtualBox.xml文件,和各个虚拟机的.vbox文件。都是定时备份新建的(原文件与加了后缀-prev的备份文件),在新建时没有空间,创建了0KB的文件,导致了 严重错误:获取 VirtualBox COM 对象失败
  • 此时可以先删除机器上一些文件,然后恢复 C:\Users\Administrator\.VirtualBox\VirtualBox.xml文件和各个虚拟机的.vbox文件
  • 再重启VirtualBox与虚拟机就可以了,然后可以删除快照备份
    在这里插入图片描述
  • 删除快照备份时,会将快照与当前最新时间的系统文件对比合并,不会更改当前虚拟机的实际状态,只是损失一个时间点的备份
    在这里插入图片描述
  • 删除备份后,系统空间基本上足够了。此时快照与当前系统文件已合并,相当于删除了绝大部分重复的文件,释放了很多空间
  • 此时可以创建一个新的快照备份,后续再定期去删除旧的备份,创建新的备份。每次删除快照,都会合并一次,这样保持快照文件不会特别大
  • 如果觉得虚拟机磁盘文件过大,也可以使用VirtualBox自带的工具VBoxManage进行压缩瘦身,详情参考:VirtualBox虚拟机磁盘VDI文件压缩瘦身,效果还是比较好的
  • 当然,最好是有一个好磁盘,又大又快
http://www.lryc.cn/news/302840.html

相关文章:

  • 【JVM篇】什么是运行时数据区
  • Jetpack 之Glance+Compose实现一个小组件
  • 实时矢量搜索如何彻底改变各行各业?
  • 【Linux】指令 【scp】
  • 文件IO,目录IO的学习
  • leetcode(动态规划)53.最大子数组和(C++详细解释)DAY12
  • BUGKU-WEB bp
  • 代码的复用——Mixin使用例子
  • easyx 枪声模拟器
  • python 与 neo4j 交互(py2neo 使用)
  • Python基础笔记11
  • vulhub中Apache Log4j2 lookup JNDI 注入漏洞(CVE-2021-44228)
  • 智慧城市驿站:智慧公厕升级版,打造现代化城市生活的便捷配套
  • 大模型爆款应用fabric_构建优雅的提示
  • js 对象属性描述符详解
  • 文件操作QFile
  • 【Langchain】+ 【baichuan】实现领域知识库【RAG】问答系统
  • Anaconda、conda、pip、virtualenv的区别
  • 【数据结构】每天五分钟,快速入门数据结构(一)——数组
  • NBlog个人博客部署维护过程记录 -- 后端springboot + 前端vue
  • WireShark 安装指南:详细安装步骤和使用技巧
  • PyTorch detach():深入解析与实战应用
  • uniapp 开发一个密码管理app
  • Postman详细攻略
  • 如何在本地服务器部署TeslaMate并远程查看特斯拉汽车数据无需公网ip
  • 如何在CentOS安装SQL Server数据库并实现无公网ip环境远程连接
  • 备战蓝桥杯 Day5
  • 爬虫学习笔记-scrapy爬取电影天堂(双层网址嵌套)
  • Unity笔记:数据持久化的几种方式
  • MySQL 基础知识(八)之用户权限管理