正如上篇的问题所言,测试了vmware player 还可以满足我的需求的以后,
以前在virtualbox下创建的几个虚拟机不想再重新创建了。想直接把virtualbox虚拟机转换为vmware虚拟机了事。
然而,大牛往往不兼容小牛,从vmware到virtualbox容易,网上有很多文档。如:
而且在创建virtualbox磁盘时,明显可以看到有vmdk的选项.
下面我们来实现virtualbox到vmware的转换:
这是我的virtualBox虚拟机目录:
lion@lion-SNS:~/VirtualBox VMs/Essex$ ll 总用量 1148156 drwxrwxr-x 4 lion lion 4096 2月 3 10:54 ./ drwxrwxr-x 8 lion lion 4096 2月 2 17:18 ../ -rw------- 1 lion lion 29683 2月 3 10:54 Essex.vbox -rw------- 1 lion lion 29683 2月 2 17:19 Essex.vbox-prev -rw------- 1 lion lion 1155567616 12月 20 16:16 Essex.vdi drwx------ 2 lion lion 4096 2月 2 17:19 Logs/ drwx------ 2 lion lion 4096 2月 2 17:19 Snapshots/ -rw------- 1 lion lion 18919424 2月 3 10:54 SwiftDisk.vdi -rw------- 1 lion lion 1134592 2月 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 4096 2月 3 10:57 ./
drwxrwxr-x 8 lion lion 4096 2月 2 17:18 ../
-rw------- 1 lion lion 29683 2月 3 10:54 Essex.vbox
-rw------- 1 lion lion 29683 2月 2 17:19 Essex.vbox-prev
-rw------- 1 lion lion 1155567616 12月 20 16:16 Essex.vdi
-rw-r--r-- 1 lion lion 1061027840 2月 3 10:58 Essex.vmdk
drwx------ 2 lion lion 4096 2月 2 17:19 Logs/
drwx------ 2 lion lion 4096 2月 2 17:19 Snapshots/
-rw------- 1 lion lion 18919424 2月 3 10:54 SwiftDisk.vdi
-rw------- 1 lion lion 1134592 2月 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 [sudo] 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 4096 2月 3 15:00 ./ drwxrwxr-x 9 lion lion 4096 2月 3 14:56 ../ -rw------- 1 lion lion 18919424 2月 3 15:00 Essex 副本-disk1.vdi -rw------- 1 lion lion 1134592 2月 3 15:00 Essex 副本-disk2.vdi -rw------- 1 lion lion 7726 2月 3 15:00 Essex 副本.vbox -rw------- 1 lion lion 7010816000 2月 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 管理器来配置。