缘由

1. 缺少磁盘映像1

事情的经过是这样的,我在一次出差时,厂家突然要收回借给我们的用来搭建测试环境的硬盘,无奈之下我只能将虚拟机转移到其他服务器上面,但是却遇到了一个极其操蛋的问题,那就生成的 .ovf 模板文件在导入到另一台服务器的时候报错了,提示缺少磁盘映像文件,我百度了一下,网上大部分的文章都是说缺少文件,但是并没有说缺的是什么文件,终于有个人突然提到是因为原虚拟机是由 iso 的,但是新的服务器上面并没有这个镜像,于是就报错了。

解决方法:

重新创建一个 .ovf 模板文件,但是在创建之前,先编辑虚拟机,直接将光盘×掉,防止读取镜像文件。

2. 缺少磁盘映像2

在重新创建不需要光盘的模板文件之后,我赶忙重新导入新的服务器上,但是,这回还是抛出了相同的异常,缺少磁盘映像,于是我和其他人的文件列表做了一下对比,发现我从 esxi 页面上面生成的模板文件只有 .ovf.vmdk.mf 文件共三个,少了明明已经勾选的 .mvram,于是无奈之下下载了专门做 ovf 模板的工具 ovftool,这个在官网就可以直接下载到。

解决方法:

使用 ovftool 生成相关模板,命令如下

1
2
# 根据虚拟机 testvm 生成的模板并下载到 /home/root/ovf 下
ovftool vi://root@192.168.0.120/testvm /home/root/ovf

3. 未知错误

终于在集齐所有需要的文件之后,再次选择了上传,但是,还是没有成功,这回的报错更坑爹,直接说读取不到 key-value,到网上再搜了一整圈才发现,这个页面都有 BUG,官方推出了一个不建议商用的补丁来修复这个问题,补丁地址https://labs.vmware.com/flings/esxi-embedded-host-client

解决方法:

先下载补丁文件,这是一个以 vib 作为后缀名的文件,将他上传到虚拟机的服务器上面(这一步需要现在 esxi 上开启 shell 和 ssh 服务),然后通过 ssh 连接上 esxi,执行一下命令安装

1
2
3
4
# 这里我将它上传到了 /tmp 下
esxcli software vib install -v /tmp/esxui-signed-12086396.vib
# 安装完成之后重启
reboot

等待重启完成之后,就可以上 web 页面导入 ovf 模板了,我到这里就解决了这个问题了。