前言

今天在将vmware虚拟机迁移到kvm平台时,发现了一些问题。

我使用qemu-img转换虚拟磁盘格式vmdk->qcow,CentOS6.8的虚拟机可以正常使用,而Win2003发生了error loading operating system的错误。

我尝试使用virtualbox打开转换后的Win2003虚拟机,结果发生了与kvm一样的错误。

我尝试直接用virtualbox通过vmdk原虚拟磁盘启动,也是发生了同样的错误。

通过搜索发现,这通常是引导损坏导致的,但是我通过重建mbr,重建系统引导的常规方法均无法修复。感觉事情并不简单

经过一番思考,vmdk和qcow格式发生了一样的错误,Linux的虚拟机能正常启动,这说明了转换是没有问题的,问题是vmware的windows虚拟机放在vbox/kvm下不能成功引导。

解决方法

思考了很久还是无果,误打误撞的发现了解决的方法。mmp,解决了问题却不知道什么原因,很痛苦。

  1. 创建一块相同大小的虚拟磁盘(大小无所谓,装得下内容就行)

  2. 使用Ghost将原磁盘数据克隆到新磁盘(disk to disk)

虽然解决了无法引导的问题,但并没完全解决Win2003虚拟机迁移的问题。

Win2003虚拟机如果直接迁移到kvm的话,会发生蓝屏现象,无限重启。

这好像是由于Windows不能更换ide控制器(我没深入了解),vbox可以通过添加使用SCSI控制器跳过这个问题,如果使用ide控制器会发生这个问题。

但我要迁移到的kvm平台只支持ide(定制过的~~,垃圾~~),那只能想办法解决了,经过一番搜索,发现vbox给出了解决方法 - Hard Disk Support

  1. 下载MergeIDE.zip

  2. 在虚拟机内把全部内容解压到一个目录

  3. 执行MergeIDE.bat

可以使用vbox通过SCSI控制器启动,然后执行,或者用vmware执行后再重新转换vmdk->qcow

最后把qcow导入到kvm平台就好了。

后记

虽然总体来说,完全就是围绕着Win2003来说的,不过我认为方法是通用的,如果以后迁移虚拟机后引导失败,就考虑一下这方法吧。