我尝试使用qemu-img命令将在OVA文件中find的VMDK映像转换为QCOW2格式,但是在读取扇区131072时错误消息qemu-img:error失败:无效参数
user@ubuntu:/tmp$ wget ftp://ftp.sanger.ac.uk/pub/databases/Pfam/vm/PfamWeb_20120124.ova user@ubuntu:/tmp$ tar xfv PfamWeb_20120124.ova PfamWeb_20120124_2.ovf PfamWeb_20120124_2.mf PfamWeb_20120124_2-disk1.vmdk user@ubuntu:/tmp$ qemu-img convert -O qcow2 PfamWeb_20120124_2-disk1.vmdk PfamWeb_20120124_2.qcow2 qemu-img: error while reading sector 131072: Invalid argument user@ubuntu:/tmp$ qemu-img --version | grep "qemu-img version" qemu-img version 1.0, Copyright (c) 2004-2008 Fabrice Bellard user@ubuntu:/tmp$ dpkg-query -f='${Version}\n' --show qemu-utils 1.0+noroms-0ubuntu14.1 user@ubuntu:/tmp$ cat /etc/issue Ubuntu 12.04.1 LTS \n \l
我如何避免错误?
与此相关的错误已在qemu 1.2.0版本中修复。 Ubuntu 12.04有一个较旧的qemu版本,但是如果你从源代码安装qemu-img
user@ubuntu:/tmp$ sudo apt-get install libglib2.0-dev user@ubuntu:/tmp$ wget http://wiki.qemu.org/download/qemu-1.2.0.tar.bz2 user@ubuntu:/tmp$ tar xfj qemu-1.2.0.tar.bz2 user@ubuntu:/tmp$ cd qemu-1.2.0 user@ubuntu:/tmp/qemu-1.2.0$ ./configure && make qemu-img
转换运行没有错误
user@ubuntu:/tmp/qemu-1.2.0$ cd /tmp user@ubuntu:/tmp$ /tmp/qemu-1.2.0/qemu-img convert -O qcow2 PfamWeb_20120124_2-disk1.vmdk PfamWeb_20120124_2.qcow2 user@ubuntu:/tmp$
即使从源代码(从分布式软件包或从git)编译qemu,我仍然有这个问题(尽pipe有一个稍微不同的错误;它抱怨'image' uses a vmdk feature which is not supported by this qemu version: VMDK version 3 )。 这不是1871年由烛光创build的OVA, 它实际上是GitHub Enterprise。 那么为什么QEMU的任何版本都不支持这个function呢?我发现这个问题仍然令人困惑,如果有人有这个问题的话,我会欢迎一些其他的见解。
无论如何,我find的解决scheme是从http://www.citrix.com/downloads/xenserver/tools/conversion.html获取Citrix XenConvert。 令人吃惊的是,新版本已经不再支持简单的格式转换,但是2.3.1允许我通过一个简单的“tar -xf”将VMDK(从OVA中提取)转换为VHD,于是qemu-img可以从那里获取它。 VMWare Converter也可能处理了这个任务。 它位于http://www.vmware.com/go/getconverter 。