cundeng 发表于 2015-4-4 20:07:06

virtualBox虚拟机到vmware虚拟机转换

  正如上篇的问题所言,测试了vmware player 还可以满足我的需求的以后,


以前在virtualbox下创建的几个虚拟机不想再重新创建了。想直接把virtualbox虚拟机转换为vmware虚拟机了事。



然而,大牛往往不兼容小牛,从vmware到virtualbox容易,网上有很多文档。如:

http://www.ubuntugeek.com/howto-convert-vmware-image-to-virtualbox-image.html



而且在创建virtualbox磁盘时,明显可以看到有vmdk的选项.



下面我们来实现virtualbox到vmware的转换:



这是我的virtualBox虚拟机目录:




lion@lion-SNS:~/VirtualBox VMs/Essex$ ll
总用量 1148156
drwxrwxr-x 4 lion lion       40962月3 10:54 ./
drwxrwxr-x 8 lion lion       40962月2 17:18 ../
-rw------- 1 lion lion      296832月3 10:54 Essex.vbox
-rw------- 1 lion lion      296832月2 17:19 Essex.vbox-prev
-rw------- 1 lion lion 1155567616 12月 20 16:16 Essex.vdi
drwx------ 2 lion lion       40962月2 17:19 Logs/
drwx------ 2 lion lion       40962月2 17:19 Snapshots/
-rw------- 1 lion lion   189194242月3 10:54 SwiftDisk.vdi
-rw------- 1 lion lion    11345922月3 10:54 VolumeDisk.vdi
  


使用命令qemu-img来转换磁盘格式:





qemu-img convert -f vdi -O vmdk Essex.vdi Essex.vmdk



根据磁盘大小,1G的大约1分钟可以完成:





lion@lion-SNS:~/VirtualBox VMs/Essex$ ll

总用量 2131104

drwxrwxr-x 4 lion lion       40962月3 10:57 ./

drwxrwxr-x 8 lion lion       40962月2 17:18 ../

-rw------- 1 lion lion      296832月3 10:54 Essex.vbox

-rw------- 1 lion lion      296832月2 17:19 Essex.vbox-prev

-rw------- 1 lion lion 1155567616 12月 20 16:16 Essex.vdi

-rw-r--r-- 1 lion lion 10610278402月3 10:58 Essex.vmdk

drwx------ 2 lion lion       40962月2 17:19 Logs/

drwx------ 2 lion lion       40962月2 17:19 Snapshots/

-rw------- 1 lion lion   189194242月3 10:54 SwiftDisk.vdi

-rw------- 1 lion lion    11345922月3 10:54 VolumeDisk.vdi



使用vmware创建一个新的虚拟机,如果不想编辑vmware文件,最好创一个和磁盘名称相同的虚拟机(Essex):





创建好后,下一步我想大家也知道了,用转换过的Essex.vmdk替换vmware生成的Essex.vmdk即可.

当然,这里对我来说,因为有多块磁盘,如SwiftDisk.vdi,VolumeDisk.vdi,可能还要再转换其它磁盘,然后再另外挂载。



OK,完成.

下面是我启动3个虚拟机(每个都是4G内存), 宿主机的内存使用情况:





补充:

上面操作的前提是在virtualBox虚拟机没有创建快照的情况下,当已经创建了快照时,只转换根目录下的Essex.vdi是不行,这个状态可能只是在你第一次创建快照时的虚拟机状态。

而我要转换的虚拟机已经创建了三个快照:


在命令行下查看:




注意看图片中的虚拟机磁盘及快照的修改时间,很明显,最新的虚拟机状态应该是{911b7809-9730-4c01-a5f2-24866f02f8b0}.vdi 这个文件,

然而,直接转换{911b7809-9730-4c01-a5f2-24866f02f8b0}.vdi这个文件是不行的.提示没有权限:




lion@lion-SNS:~/VirtualBox VMs/Essex/Snapshots$ sudo qemu-img convert -f vdi -O vmdk \{911b7809-9730-4c01-a5f2-24866f02f8b0\}.vdi Essex.vmdk
password for lion:
qemu-img: Could not open '{911b7809-9730-4c01-a5f2-24866f02f8b0}.vdi': Operation not permitted
qemu-img: Could not open '{911b7809-9730-4c01-a5f2-24866f02f8b0}.vdi'
  当然不是真的没有权限,而是virtualBox的快照是增量快照,这个快照需要依赖别的快照以及Essex.vdi文件。
  下面我们的工作是将多个快照合并为一个vdi文件.有两种方法:
  1. 删除中间快照。这个操作肯定不太好,万一以后要用呢。
  2. 利用VirtualBox的复制虚拟机功能,复制最新的快照状态为一个新的虚拟机:

  注意选择完全复制哦!
  复制出来一个Essex 副本:



root@lion-SNS:/home/lion/VirtualBox VMs/Essex 副本# ll
总用量 6866104
drwx------ 2 lion lion       40962月3 15:00 ./
drwxrwxr-x 9 lion lion       40962月3 14:56 ../
-rw------- 1 lion lion   189194242月3 15:00 Essex 副本-disk1.vdi
-rw------- 1 lion lion    11345922月3 15:00 Essex 副本-disk2.vdi
-rw------- 1 lion lion       77262月3 15:00 Essex 副本.vbox
-rw------- 1 lion lion 70108160002月3 15:00 Essex 副本.vdi
  下面的操作就一样了,转换此副本并替换我们用vmware创建的虚拟机文件:



qemu-img convert -f vdi -O vmdk Essex\ 副本.vdi Essex.vmdk
  至于virtualbox其它挂载的磁盘文件,可以单独转换后,移动到vmware目录,再通过vmware挂载即可.





qemu-img convert -f vdi -O vmdk SwiftDisk.vdi SwiftDisk.vmdk
qemu-img convert -f vdi -O vmdk VolumeDisk.vdi VolumeDisk.vmdk
mv *.vmdk ~/vmware/Essex/
chown lion.lion *.vmdk

  ok,下面启动vmware虚拟机,大功告成,剩下的有可能有网卡数量,光驱文件等不致可以通过vmware 管理器来配置。
页: [1]
查看完整版本: virtualBox虚拟机到vmware虚拟机转换