[Openstack-operators] [nova][glance] nova-compute choosing incorrect qemu binary when scheduling 'alternate' (ppc64, armv7l) architectures?
Matt Riedemann
mriedemos at gmail.com
Wed Aug 8 22:40:01 UTC 2018
On 8/8/2018 2:42 PM, Chris Apsey wrote:
> qemu-system-arm, qemu-system-ppc64, etc. in our environment are all x86
> packages, but they perform system-mode emulation (via dynamic
> instruction translation) for those target environments. So, you run
> qemu-system-ppc64 on an x86 host in order to get a ppc64-emulated VM.
> Our use case is specifically directed at reverse engineering binaries
> and fuzzing for vulnerabilities inside of those architectures for things
> that aren't built for x86, but there are others.
>
> If you were to apt-get install qemu-system and then hit autocomplete,
> you'd get a list of archiectures that qemu can emulate on x86 hardware -
> that's what we're trying to do incorporate. We still want to run normal
> qemu-x86 with KVM virtualization extensions, but we ALSO want to run the
> other emulators without the KVM virtualization extensions in order to
> have more choice for target environments.
>
> So to me, openstack would interpret this by checking to see if a target
> host supports the architecture specified in the image (it does this
> correctly), then it would choose the correct qemu-system-xx for spawning
> the instance based on the architecture flag of the image, which it
> currently does not (it always choose qemu-system-x86_64).
>
> Does that make sense?
OK yeah now I'm following you - running ppc guests on an x86 host
(virt_type=qemu rather than kvm right?).
I would have thought the hw_architecture image property was used for
this somehow to configure the arch in the guest xml properly, like it's
used in a few places [1][2][3].
See [4], I'd think we'd set the guest.arch but don't see that happening.
We do set the guest.os_type though [5].
[1]
https://github.com/openstack/nova/blob/c18b1c1bd646d7cefa3d3e4b25ce59460d1a6ebc/nova/virt/libvirt/driver.py#L4649
[2]
https://github.com/openstack/nova/blob/c18b1c1bd646d7cefa3d3e4b25ce59460d1a6ebc/nova/virt/libvirt/driver.py#L4927
[3]
https://github.com/openstack/nova/blob/c18b1c1bd646d7cefa3d3e4b25ce59460d1a6ebc/nova/virt/libvirt/blockinfo.py#L257
[4] https://libvirt.org/formatcaps.html#elementGuest
[5]
https://github.com/openstack/nova/blob/c18b1c1bd646d7cefa3d3e4b25ce59460d1a6ebc/nova/virt/libvirt/driver.py#L5196
--
Thanks,
Matt
More information about the OpenStack-operators
mailing list