A year has passed since the last Xen Developer Summit and it is time to announce the quiet progress made on the libvirt libxl driver and related tooling. New features include memory, cpu, block device, and network interface statistics reporting, support for pvUSB, support for migration stream V2, peer-to-peer migration, UEFI for HVM guests via OVMF, and domain capabilities reporting to name a few. There are also many noteworthy improvements such as better conversion of xl.cfg to/from libvirt domXML, allowing users to easily switch between the xl+libxl and libvirt+libxl toolstacks.
The summit also provides an opportunity to discuss new proposals such as better control of domain placement on NUMA systems, exposing Xen's cpu pool feature in libvirt, supporting non-volatile memory for UEFI variables, and improved capabilities reporting.
Much of libvirt's value for Xen is in the tools built upon it: virt-manager, virt-viewer, virt-install, virt-builder, kimchi, OpenStack nova, etc. These tools also deserve a quick status update as they relate to Xen.
The audience is encouraged to participate, e.g. by requesting a sorely missing feature, warning of an upcoming Xen change that may affect libvirt, or simply suggesting a change that makes virtualization management life a bit easier.
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
XPDS16: libvirt and Tools: What's New and What's Next - James Fehlig, SUSE
1. libvirt and Tools: What's New and
What's Next
Jim Fehlig
jfehlig@suse.com
2. 2
Why libvirt?
• Bridge to greater open source virt ecosystem
‒ virt-manager, virt-viewer, Kimchi, oVirt, OpenStack, monitoring,
numerous command line tools, ...
‒ http://libvirt.org/apps.html
‒ Primary motivation of libvirt Xen contributors is to make these
applications work with Xen
3. 3
Xen drivers
• src/xen/xen_driver (xend or legacy driver)
‒ Please don't use this
• src/libxl/libxl_driver (libxl driver)
‒ Supports Xen >= 4.4 (best to have latest 4.x.y)
‒ All existing domain configuration should just work
‒ Stateful driver (state maintained in libvirt)
‒ Note: don't mix and match libxl apps
4. 4
What's New
• Support for native access of rbd devices using qdisk
‒ libvirt domXML
<disk type='network' device='disk'>
<driver name='qemu' type='raw'/>
<auth username='libvirt'>
<secret type='ceph' uuid='xxx'/>
</auth>
<source protocol='rbd' name='libvirt-pool/libvirt-image'>
<host name='cephmon1.example.com' port='6789'/>
</source>
<target dev='xvdb'/>
</disk>
‒ xl.cfg
"vdev=xvdb, backendtype=qdisk, target=rbd:libvirt-pool/new-libvirt-image:
id=libvirt:key=AQDsPWtW8JoXJBAAyLPQe7MhCC+JPkI3QuhaAw==:
auth_supported=cephx;none:mon_host=cephmon1.example.com:6789"
5. 5
What's New
• VIF QoS
‒ Control average outgoing bandwidth
<interface type='bridge'>
…
<bandwidth>
<outbound average='1024/>
</bandwidth>
</interface>
• Assignment of SR-IOV devices from a pool
‒ http://wiki.libvirt.org/page/Networking
<interface type='network'>
<source network='sriov-pool'/>
<mac address='aa:bb:cc:dd:ee:ff'/>
</interface>
6. 6
What's New
• UEFI for HVM guests using ovmf
<os>
…
<loader readonly='yes type='pflash'>/path/to/ovmf.bin</loader>
</os>
• pvUSB
‒ Create/delete controllers
‒ Assign USB host devices by bus/device or vendor/product
<hostdev mode='subsystem' type='usb'>
<source startupPolicy='optional'>
<vendor id='0x8564'/>
<product id='0x1000'/>
</source>
</hostdev>
7. 7
What's New
• More stats
‒ memoy
‒ Cpu
‒ Block and network devices (show from a running vm)
‒ Interface addresses
• Peer to peer migration
‒ Control of migration process handled by source libvirtd
‒ Client crash or connectivity loss wont affect the migration
‒ https://libvirt.org/migration.html#flowpeer2peer
8. 8
What's New
• Support for migration stream V2
‒ libxl driver now supports migration cookies
• Domain capabilities reporting
• Improved xl.cfg ↔ libvirt domXML config conversions
‒ virsh domxml-{to,from}-native
‒ Easily switch between xl and libvirt
• Support for libvirt domain hooks
‒ Opportunity for user to provide customizations at domain start,
stop, and migrate
‒ /etc/libvirt/hooks/libxl
‒ https://www.libvirt.org/hooks.html
9. 9
What's New
• Job statistics
‒ Migration job progress
• Removal of old xend config format versions
• Packaging
‒ Use of system provided dependencies such as qemu, ovmf,
seabios instead of in-tree equivalents
10. 10
What's Happening
• vCPU leveling
• Support for multiple serial devices
• Support for openvswitch
• Support for driver_override sysfs interface for PCI
devices
‒ More deterministic approach to binding/unbinding drivers
11. 11
What's Next
• Better control of domain memory and CPU placement
on NUMA machines
<cpu>
<numa>
<cell id='0' cpus='0-15' memory='16022120' unit='KiB'/>
<cell id='1' cpus='16-31' memory='16022120' unit='KiB'/>
</numa>
</cpu>
<numatune>
<memory mode='strict' nodeset='0-1'/>
<memnode cellid='0' mode='strict' nodeset='0'/>
<memnode cellid='1' mode='strict' nodeset='1'/>
</numatune>
12. 12
What's Next
• pvSCSI
• Block device QoS
• Auditing (libaudit) domain management operations
• Support for tunneled migration
• Support QED image format
13. 13
Potential libxl improvements for libvirt
• Improved error reporting
• Per-domain log files
• Dynamically change log debug level
• Compare libxl_domain_config objects
• Control knobs for scrubbing domain memory
• API to screenshot domains (virDomainScreenshot)
• Support for guest agent
• Snapshot support
• Support for passing fds to libxl for tap/tun devices
14. 14
Thanks for libvirt contributions!
• Bob Liu
• Cedric Bosdonnat
• Chunyan Liu
• Joao Martins
• Wei Liu
15. 15
Help Wanted!
• Improved Xen+libvirt = improved Xen+virt-ecosystem
• SPoF with only one maintainer of upstream Xen
drivers
• Please consider libvirt when adding APIs to libxl
git://libvirt.org/libvirt.git
http://libvirt.org/hacking.html