Hello all,
I am trying to use a VHDx format disk on libvirt.
According to
https://en.wikibooks.org/wiki/QEMU/Images, Qemu supports
VHDx but not VHD.
But when I set disk format to 'vhdx' in virt-manager, it prompts "Error
changing VM configuration: Expected a wrapped C Object but got <type
'NoneType'>"
Traceback (most recent call last):
File "/usr/share/virt-manager/virtManager/addhardware.py", line
765, in change_config_helper
define_func(devobj=devobj, do_hotplug=False, **define_args)
File "/usr/share/virt-manager/virtManager/domain.py", line 847,
in define_disk
self._redefine_xmlobj(xmlobj)
File "/usr/share/virt-manager/virtManager/libvirtobject.py", line
389, in _redefine_xmlobj
self._define(newxml)
File "/usr/share/virt-manager/virtManager/domain.py", line 1156,
in _define
self.conn.define_domain(newxml)
File "/usr/share/virt-manager/virtManager/connection.py", line
678, in define_domain
return self._backend.defineXML(xml)
File "/usr/lib/python2.7/dist-packages/libvirt.py", line 3622, in
defineXML
__tmp = virDomain(self,_obj=ret)
File "/usr/lib/python2.7/dist-packages/libvirt.py", line 453, in
__init__
raise Exception("Expected a wrapped C Object but got %s" %
type(_obj))
Exception: Expected a wrapped C Object but got <type 'NoneType'>
Then I use `virsh edit MyDOM` to edit my domain XML, change disk format
to "vhdx" then I get error:
"Unable to validate doc against /usr/share/libvirt/schemas/domain.rng".
So I edit /usr/share/libvirt/schemas/storagecommon.rng, change
"<value>vhd</value>" to "<value>vhdx</value>"
in <define
name='storageFormat'>. But it still not works, and virsh tells me
`error: unsupported configuration: unknown driver format value 'vhdx' `.
I choice ignore , but then same error and I can't ignore: only Yes to
re-edit or No to give up.
Then I suppose "vhd" in libvirt means "vhdx", so I change disk format
to
"vhd". But then when I run domain, Qemu get error: " Unknown driver
'vhd' ". It seems libvirt pass "vhd" to Qemu, but Qemu only support
"vhdx"
At last, I use Qemu paramaters: ` -drive
file=/Path/To/File.vhdx,format=vhdx,if=none,id=drive-sata0-0-3 `, and it
works. When I use `-drive format=vhd` , Qemu gives me same error: "
Unknown driver 'vhd' ".
So I think it maybe a bug that libvirt forcely demand format is "vhd"
and I find no way to change it, but in same time Qemu only accept format
"vhdx" as paramater. I try to edit
`/usr/lib/python2.7/dist-packages/libvirt.py` but I have no idea how to
modify it. And it seems only changing of storagecommon.rng is not enough.
My libvirt version is 3.6.0 and Qemu version is 2.8.1.
Regards,
Mitori