• virtualBox虚拟机到vmware虚拟机转换


    正如上篇的问题所言,测试了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 管理器来配置。

  • 相关阅读:
    Java-web——Cookie技术
    HttpServletRequest中文乱码处理、防盗链的使用、request的请求转发
    HttpServletRequest以及处理servlet映射路径名
    Delphi 错误:EvariantinvalidargError :invalid argument
    10种数据库获取当前时间/服务器时间(Oracle、Infomix、DB2、SQL Server、Access 、Sybase、MySQL、FoxPro、Sqlite、postgreSQL)
    Web-Apache-Tomcat 默认主页修改
    Delphi 中表示跳出关键字: break、continue、exit、abort、halt、runerror
    高斯的数学
    SQL 中的设定规则 SET ANSI_NULLS ON 和 SET QUOTED_IDENTIFIER ON
    Delphi 窗体函数 UpdateWindow
  • 原文地址:https://www.cnblogs.com/biangbiang/p/2890695.html
Copyright © 2020-2023  润新知