Oracle VM VirtualBox6.1.36导入ova虚拟机文件报错,代码: E_INVALIDARG (0x80070057)

问题

  • 运维人员去客户现场部署应用服务,客户是windows server 服务器(客户不想买新机器),我们程序是在linux系统里运行(其实windows也可以,主要是为了保持各地环境一致方便更新和排查问题)
  • 我们使用VirtualBox虚拟机工具,新建一个虚拟机,CentOS7,安装好所有的中间件和程序,导出为一个ova镜像文件(比较大,11G)
  • 运维人员带着VirtualBox安装包、winscp安装包、ova镜像文件去客户现场实施(公安内网,不允许接任何外网,只能带U盘去现场部署)
  • 先安装VirtualBox6.1.36,再导入ova文件,结果导入怎么都不成功。导入虚拟机报错,也没啥详细报错信息,只有经典的E_INVALIDARG (0x80070057)
    在这里插入图片描述

解决

  • 这个报错信息很熟悉,之前遇到过,也处理过。每次处理都花费不少时间,这次也是,在此总结记录下

  • 第一次遇到,是在windows server 2008,尝试了各种方式,解决不了,版本太低了,让运维重做了系统,装了windows server 2012(由于很多客户系统版本都比较低,有部分是2012的),导入虚拟机不再报错了,解决,导入前可以先查看操作系统版本
    在这里插入图片描述

  • 第二次,是cpu个数问题,是在一台比较老的PC上部署,只有一个CPU,因为导出的ova的原虚拟机设置的是6cpu,导入时未修改导致报错。在导入界面,双击将cpu数量编辑为1,导入成功。在导入前,可以先查看下本机的cpu个数和内存大小,CPU数量和内存大小超过宿主机是无法导入成功的,可以通过任务管理器去找到。
    在这里插入图片描述
    在这里插入图片描述

  • 第三次,同事在自己电脑上测试导入,导入失败,最后发现是权限问题。关闭virtualbox,右键以管理员用户权限打开,再去导入,成功了

  • 第四次,就是本次,忙活了几个小时。操作系统是windows server 2012,VirtualBox是6.1.36,就是导入不成功,试了网上的各种方法,就是不行。于是选择了备选方案,在电脑上安装vmware,结果提示缺少一些windows安装更新,下载好拷进去安装成功。ova文件导入终于成功了,但是虚拟机启动失败了
    在这里插入图片描述

  • 查看了下日志,centosxfs文件元数据错误,怀疑是文件损坏,ova文件不完整。XFS (dm-0):metadata I/O error in"xfs_trans_read_buf_map" error 117

  • 这个ova文件,是从公司电脑上拷到U盘里的,再拿到客户现场部署。于是找了一个文件校验工具,把公司里的文件与客户现场的文件都md5了一下,果然不一致,可能是U盘问题导致文件破损,所以无法导入。把ova文件放到网盘,运维人员重新下载后,hash一下果然一致了(用的是 Hasher Lite),也导入成功了
    在这里插入图片描述

其他可能原因参考

  • 参考本次教训,如果是拷贝的ova文件,先做下md5校验,看是否与原文件一致。
  • 有具体报错的,可以根据报错信息处理,这个是最直接最快捷的方式,但是很多时候没有效报错返回,头疼
  • 没有报错的,首先检查下 cpu个数、内存大小是否超限,要安装在的文件夹磁盘空间是否充足
  • 还需要检查下操作系统版本是否过低,太低也不行,根据操作系统情况还需要检查下virtualBox版本,比较老的操作系统,没法用比较新版本的virtualBox,我用的还是6.1。我的经验是操作系统windows server 2008不可用,2012及以上版本没问题。
  • 还有可能是之前导入失败过,virtualbox工具里,存在导入失败的虚拟介质,需要清空。最上面的工具栏管理 - 虚拟介质管理,删除已存在的(确认是自己刚导入失败的,别把其他正在正常使用的删掉了)
  • 还有可能和要导入的文件夹有关系,例如文件夹非空,或者刚导入失败时往文件夹写入了一点东西
  • 还有一个简单粗暴的招数,删除virtualBox,再删除相关的两个文件夹,重启电脑,重装一下virtualBox,再导入试试
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u010882234/article/details/129408341
今日推荐