使用 qemu-img 转换 VMDK 映像失败,并显示“读取扇区 131072 时出错:参数无效”

使用 qemu-img 转换 VMDK 映像失败,并显示“读取扇区 131072 时出错:参数无效”

我尝试使用qemu-img命令失败并显示错误消息qemu-img:读取扇区 131072 时出错:参数无效

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

我该如何避免这个错误?

答案1

A漏洞与此相关的问题已修复库姆版本 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$

答案2

即使从源代码(从分布式包或从 git)编译 qemu 后,我仍然遇到此问题(尽管错误略有不同;它抱怨'image' uses a vmdk feature which is not supported by this qemu version: VMDK version 3)。这不是 candlelight 于 1871 年创建的 OVA;它实际上是 GitHub Enterprise。因此,为什么我找到的任何版本的 QEMU 都不支持此功能仍然令人困惑,如果有人有更多见解,我将非常欢迎。

无论如何,我找到的解决方案是从http://www.citrix.com/downloads/xenserver/tools/conversion.html。令人困惑的是,较新的版本已经放弃了对简单格式转换的支持,但 2.3.1 允许我将 VMDK(通过简单的“tar -xf”从 OVA 中提取)更改为 VHD,然后 qemu-img 可以从那里获取它。VMWare Converter 也可能处理这项任务;它位于http://www.vmware.com/go/getconverter

相关内容