libvirt XML format

This section describes the XML format used to represent domains, there are variations on the format based on the kind of domains run and the options used to launch them. For hypervisor specific details consult the driver docs

Element and attribute overview

The root element required for all virtual machines is named domain. It has two attributes, the type specifies the hypervisor used for running the domain. The allowed values are driver specific, but include "xen", "kvm", "qemu", "lxc" and "kqemu". The second attribute is id which is a unique integer identifier for the running guest machine. Inactive machines have no id value.

General metadata

      
fv0
4dea22b31d52d8f32516782e98ab3fa0
...
name
The content of the name element provides a short name for the virtual machine. This name should consist only of alpha-numeric characters and is required to be unique within the scope of a single host. It is often used to form the filename for storing the persistent configuration file. Since 0.0.1
uuid
The content of the uuid element provides a globally unique identifier for the virtual machine. The format must be RFC 4122 compliant, eg 3e3fce45-4f53-4fa7-bb32-11f34168b82b. If omitted when defining/creating a new machine, a random UUID is generated. Since 0.0.1

Operating system booting

There are a number of different ways to boot virtual machines each with their own pros and cons.

BIOS bootloader

Booting via the BIOS is available for hypervisors supporting full virtualization. In this case the BIOS has a boot order priority (floppy, harddisk, cdrom, network) determining where to obtain/find the boot image.

        ...

hvm
/usr/lib/xen/boot/hvmloader


...
type
The content of the type element specifies the type of operating system to be booted in the virtual machine. hvm indicates that the OS is one designed to run on bare metal, so requires full virtualization. linux (badly named!) refers to an OS that supports the Xen 3 hypervisor guest ABI. There are also two optional attributes, arch specifying the CPU architecture to virtualization, and machine referring to the machine type. The Capabilities XML provides details on allowed values for these. Since 0.0.1
loader
The optional loader tag refers to a firmware blob used to assist the domain creation process. At this time, it is only needed by Xen fully virtualized domains. Since 0.1.0
boot
The dev attribute takes one of the values "fd", "hd", "cdrom" or "network" and is used to specify the next boot device to consider. The boot element can be repeated multiple times to setup a priority list of boot devices to try in turn. Since 0.1.3

Host bootloader

Hypervisors employing paravirtualization do not usually emulate a BIOS, and instead the host is responsible to kicking off the operating system boot. This may use a pseudo-bootloader in the host to provide an interface to choose a kernel for the guest. An example is pygrub with Xen.

        ...
/usr/bin/pygrub
--append single
...
bootloader
The content of the bootloader element provides a fully qualified path to the bootloader executable in the host OS. This bootloader will be run to choose which kernel to boot. The required output of the bootloader is dependent on the hypervisor in use. Since 0.1.0
bootloader_args
The optional bootloader_args element allows command line arguments to be passed to the bootloader. Since 0.2.3

Direct kernel boot

When installing a new guest OS it is often useful to boot directly from a kernel and initrd stored in the host OS, allowing command line arguments to be passed directly to the installer. This capability is usually available for both para and full virtualized guests.

        ...

hvm
/usr/lib/xen/boot/hvmloader
/root/f8-i386-vmlinuz
/root/f8-i386-initrd
console=ttyS0 ks=http://example.com/f8-i386/os/

...
type
This element has the same semantics as described earlier in the BIOS boot section
loader
This element has the same semantics as described earlier in the BIOS boot section
kernel
The contents of this element specify the fully-qualified path to the kernel image in the host OS.
initrd
The contents of this element specify the fully-qualified path to the (optional) ramdisk image in the host OS.
cmdline
The contents of this element specify arguments to be passed to the kernel (or installer) at boottime. This is often used to specify an alternate primary console (eg serial port), or the installation media source / kickstart file

Basic resources

        ...
524288
524288
1
...
memory
The maximum allocation of memory for the guest at boot time. The units for this value are kilobytes (i.e. blocks of 1024 bytes)
currentMemory
The actual allocation of memory for the guest. This value be less than the maximum allocation, to allow for ballooning up the guests memory on the fly. If this is omitted, it defaults to the same value as the memory element
vcpu
The content of this element defines the number of virtual CPUs allocated for the guest OS.

Lifecycle control

It is sometimes necessary to override the default actions taken when a guest OS triggers a lifecycle operation. The following collections of elements allow the actions to be specified. A common use case is to force a reboot to be treated as a poweroff when doing the initial OS installation. This allows the VM to be re-configured for the first post-install bootup.

        ...
destroy
restart
restart
...
on_poweroff
The content of this element specifies the action to take when the guest requests a poweroff.
on_reboot
The content of this element specifies the action to take when the guest requests a reboot.
on_crash
The content of this element specifies the action to take when the guest crashes.

Each of these states allow for the same four possible actions.

destroy
The domain will be terminated completely and all resources released
restart
The domain will be terminated, and then restarted with the same configuration
preserve
The domain will be terminated, and its resource preserved to allow analysis.
rename-restart
The domain will be terminated, and then restarted with a new name

Hypervisor features

Hypervisors may allow certain CPU / machine features to be toggled on/off.

        ...





...

All features are listed within the features element, omitting a togglable feature tag turns it off. The available features can be found by asking for the capabilities XML, but a common set for fully virtualized domains are:

pae
Physical address extension mode allows 32-bit guests to address more than 4 GB of memory.
acpi
ACPI is useful for power management, for example, with KVM guests it is required for graceful shutdown to work.

Time keeping

The guest clock is typically initialized from the host clock. Most operating systems expect the hardware clock to be kept in UTC, and this is the default. Windows, however, expects it to be in so called 'localtime'.

        ...

...
clock
The sync attribute takes either "utc" or "localtime" to specify how the guest clock is initialized in relation to the host OS.

Devices

The final set of XML elements are all used to describe devices provided to the guest domain. All devices occur as children of the main devices element. Since 0.1.3

        ...

/usr/lib/xen/bin/qemu-dm
...
emulator
The contents of the emulator element specify the fully qualified path to the device model emulator binary. The capabilities XML specifies the recommended default emulator to use for each particular domain type / architecture combination.

Hard drives, floppy disks, CDROMs

Any device that looks like a disk, be it a floppy, harddisk, cdrom, or paravirtualized driver is specified via the disk element.

          ...





...
disk
The disk element is the main container for describing disks. The type attribute is either "file" or "block" and refers to the underlying source for the disk. The optional device attribute indicates how the disk is to be exposed to the guest OS. Possible values for this attribute are "floppy", "disk" and "cdrom", defaulting to "disk". Since 0.0.3; "device" attribute since 0.1.4
source
If the disk type is "file", then the file attribute specifies the fully-qualified path to the file holding the disk. If the disk type is "block", then the dev attribute specifies the path to the host device to serve as the disk. Since 0.0.3
target
The target element controls the bus / device under which the disk is exposed to the guest OS. The dev attribute indicates the "logical" device name. The actual device name specified is not guaranteed to map to the device name in the guest OS. Treat it as a device ordering hint. The optional bus attribute specifies the type of disk device to emulate; possible values are driver specific, with typical values being "ide", "scsi", "virtio", "xen" or "usb". If omitted, the bus type is inferred from the style of the device name. eg, a device named 'sda' will typically be exported using a SCSI bus. Since 0.0.3; bus attribute since 0.4.3; "usb" attribute value since after 0.4.4
driver
If the hypervisor supports multiple backend drivers, then the optional driver element allows them to be selected. The name attribute is the primary backend driver name, while the optional type attribute provides the sub-type. Since 0.1.8

USB devices

USB devices attached to the host can be passed through to the guest using the hostdev element. since after 0.4.4

          ...






...
hostdev
The hostdev element is the main container for describing host devices. For usb device passthrough mode is always "subsystem" and type is "usb".
source
The source element describes the device as seen from the host. The USB device can either be addressed by vendor / product id using the vendor and product elements or by the device's address on the hosts using the address element.
vendor, product
The vendor and product elements each have an id attribute that specifies the USB vendor and product id. The ids can be given in decimal, hexadecimal (starting with 0x) or octal (starting with 0) form.
address
The address element has a bus and device attribute to specify the USB bus and device number the device appears at on the host. The values of these attributes can be given in decimal, hexadecimal (starting with 0x) or octal (starting with 0) form.

Network interfaces

          ...



你可能感兴趣的:(libvirt XML format)