Libvirt domain XML today only allows local filepaths that can be
used to specify a loader element or its matching NVRAM disk.
Given that Vms may themselves move across hypervisor hosts, it should be
possible to allocate loaders/NVRAM disks on network storage for
uninterrupted access.
This series extends the firmware loader & NVRAM disks to be hosted over
network-backed disks, for high availability.
It achieves this by embedding virStorageSource elements for loader &
nvram into _virDomainLoaderDef, as discussed in
https://www.redhat.com/archives/libvir-list/2018-March/msg01721.html.
Currently, the source type is annotated by introducing a new attribute "backing"
for both
'loader' and 'nvram' elements. Hence, a sample XML with new annotation
looks like this:
<loader readonly='yes' type='pflash' backing='file'>
<source file='/usr/share/OVMF/OVMF_CODE.fd'/>
</loader>
<nvram backing='network'> <source protocol='iscsi'
name='iqn.2013-07.com.example:iscsi-nopool/0'>
<host name='example.com' port='6000'/>
</source>
References:
----------
v0 / Proposal:
https://www.redhat.com/archives/libvir-list/2018-March/msg01721.html.
v1 :
https://www.redhat.com/archives/libvir-list/2018-April/msg02024.html
Changelog:
---------
Changes since v1:
1. Split up the patch into smaller units.
2. Added doc snippet & tests.
3. Changed the formatting code in patch 4 to format a domain's XML in
the style that was read.
I found that encryption seems to be a property of the storage volume.
I didnt include that in this series since it does not use backing type
as volume. Will include that later once the basic network support
patches get done.
Looking forward to feedback,
Prerna
Prerna Saxena (12):
Schema: Introduce XML schema for network-backed loader and nvram
elements.
Loader: Add a more elaborate definition.
Parse domain XML to generate virDomainLoaderDef & virDomainNvramDef.
Format the loader source appropriately.
Plumb the loader source into generation of QEMU command line.
Fix the domain def inference logic to correctly account for
network-backed pflash devices.
Bhyve: Fix command line generation to correctly pick up local loader
path.
virt-aa-helper: Adjust references to loader & nvram elements to
correctly parse the virStorageSource types.
Vbox: Adjust references to 'loader' and 'nvram' elements given that
these are now represented by virStorageSourcePtr.
Xen: Adjust all references to loader & nvram elements given that they
are now backed by virStorageSourcePtr
Test: Add a test snippet to evaluate command line generation for
loader/nvram specified via virStorageSource
Documentation: Add a blurb for the newly added XML snippets for loader
and nvram.
docs/formatdomain.html.in | 36 ++++-
docs/schemas/domaincommon.rng | 108 ++++++++++---
src/bhyve/bhyve_command.c | 6 +-
src/conf/domain_conf.c | 215 +++++++++++++++++++++++--
src/conf/domain_conf.h | 11 +-
src/qemu/qemu_cgroup.c | 13 +-
src/qemu/qemu_command.c | 21 ++-
src/qemu/qemu_domain.c | 31 ++--
src/qemu/qemu_driver.c | 7 +-
src/qemu/qemu_parse_command.c | 30 +++-
src/qemu/qemu_process.c | 42 +++--
src/security/security_dac.c | 6 +-
src/security/security_selinux.c | 6 +-
src/security/virt-aa-helper.c | 14 +-
src/vbox/vbox_common.c | 11 +-
src/xenapi/xenapi_driver.c | 4 +-
src/xenconfig/xen_sxpr.c | 19 ++-
src/xenconfig/xen_xm.c | 9 +-
tests/qemuxml2argvdata/bios-nvram-network.args | 31 ++++
tests/qemuxml2argvdata/bios-nvram-network.xml | 42 +++++
tests/qemuxml2argvtest.c | 1 +
21 files changed, 562 insertions(+), 101 deletions(-)
create mode 100644 tests/qemuxml2argvdata/bios-nvram-network.args
create mode 100644 tests/qemuxml2argvdata/bios-nvram-network.xml
--
1.8.1.2