Linux|系统管理|WEB开发

关注Linux,系统管理,WEB开发以及开源世界

将virtualbox的vdi镜像文件转换成kvm的qcow静像文件

| Comments

VirtualBox是我非常喜爱的虚拟化软件,其简单方便,单不是强大的配置让我很喜欢,特别是在网络的配置上,更是灵活多变。

不过最近要测试KVM,想把之前的VirtualBox跑的vm迁移到KVM上来,重要的是迁移镜像文件了,配置文件目前似乎没有什么好的办法。

基本上是照着这篇文章来做的,只是我按照它的方法,在第一步出了状况,修改了一下,下面是详细步骤:

  1. 将vdi镜像文件转换成裸格式文件
    # VBoxManage clonehd axs3.vdi /home/wgzhao/axs3.img --format RAW 如果你的转换很顺利,那没有什么好说的,但是如果你获得类似我这样的错误:

      ERROR: Cannot register the hard disk
      '/home/wgzhao/.VirtualBox/HardDisks/axs3/axs3.vdi' with UUID
      {873a8c98-23d1-4294-b2aa-d7d65239ee37} because a hard disk
      '/home/wgzhao/.VirtualBox/HardDisks/axs3/axs3.vdi' with UUID
      {873a8c98-23d1-4294-b2aa-d7d65239ee37} already exists in the media
      registry ('/root/.VirtualBox/VirtualBox.xml')
      Details: code NS_ERROR_INVALID_ARG (0x80070057), component
      VirtualBox, interface IVirtualBox, callee nsISupports
      Context: "OpenHardDisk(Bstr(szFilenameAbs), AccessMode_ReadWrite,
      false, Bstr(""), false, Bstr(""), srcDisk.asOutParam())" at line 624
      of file VBoxManageDisk.cpp
    

那么你可以尝试用下面的方法:

    # VBoxManage clonehd 873a8c98-23d1-4294-b2aa-d7d65239ee37 \
        /home/wgzhao/axs3.img    --format RAW 
    VirtualBox Command Line Management Interface Version 3.0.0
    (C) 2005-2009 Sun Microsystems, Inc.
    All rights reserved.

    0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
    Clone hard disk created in format 'RAW'. UUID:
    fc88e910-2919-4dc0-bce2-08b10ad409fc

上面是在我机器上的实际转换输出,其中uuid的来源就是第一个命令失败给出的输出里的uuid号。我发现如果你指定镜像文件的全路径,是不会出现上面的问题的。

  1. 将裸镜像文件转换成qcow格式镜像文件
    #kvm-img convert -f raw axs3.img -O qcow2 axs3.qcow

如果没有报错,就算成功了。你可以测试一把:#kvm -hda axs3.qcow就知道结果了。

当然以上方法也是适合qemu的。

Comments