23.21. A Sample Virtual Machine XML Configuration

The following table shows a sample XML configuration of a guest virtual machine (VM), also referred to as domain XML, and explains the content of the configuration.
To obtain the XML configuration of a VM, use the virsh dumpxml command. For information about editing VM configuration, see the Virtualization Getting Started Guide.

Table 23.33. A Sample Domain XML Configuration

Domain XML section Description
								
	<domain type='kvm'>
	<name>Testguest1</name>
	<uuid>ec6fbaa1-3eb4-49da-bf61-bb02fbec4967</uuid>
	<memory unit='KiB'>1048576</memory>
	<currentMemory unit='KiB'>1048576</currentMemory>
	<vcpu placement='static'>1</vcpu>
								
This is a KVM called Testguest1 with 1024 MiB allocated RAM. For information about configuring general VM parameters, see Section 23.1, “General Information and Metadata”.
									
	<vcpu placement='static'>1</vcpu>
									
The guest VM has 1 allocated vCPU. For information about CPU allocation, see Section 23.4, “CPU allocation”.
					 		
	<os>
		<type arch='x86_64' machine='pc-i440fx-2.9'>hvm</type>
		<boot dev='hd'/>
	</os>
							
The machine architecture is set to AMD64 and Intel 64 architecture, and uses the Intel 440FX machine type to determine feature compatibility. The OS is booted from the hard drive. For information about modifying OS parameters, see Section 23.2, “Operating System Booting”.
					 		
	<features>
		<acpi/>
		<apic/>
		<vmport state='off'/>
	</features>
							
The hypervisor features acpi and apic are disabled and the VMWare IO port is turned off. For information about modifying Hypervisor features, see -Section 23.14, “Hypervisor Features”.
					 		
	<cpu mode='host-passthrough' check='none'/>
							
The guest CPU features are set to be the same as those on the host CPU. For information about modifying CPU features, see -Section 23.12, “CPU Models and Topology”.
							
	<clock offset='utc'>
		<timer name='rtc' tickpolicy='catchup'/>
		<timer name='pit' tickpolicy='delay'/>
		<timer name='hpet' present='no'/>
	</clock>
							
The guest's virtual hardware clock uses the UTC time zone. In addition, three different timers are set up for synchronization with the QEMU hypervisor. For information about modifying time-keeping settings, see -Section 23.15, “Timekeeping”.
							
	<on_poweroff>destroy</on_poweroff>
	<on_reboot>restart</on_reboot>
	<on_crash>destroy</on_crash>
							
When the VM powers off, or its OS terminates unexpectedly, libvirt terminates the guest and releases all its allocated resources. When the guest is rebooted, it is restarted with the same configuration. For more information about configuring these settings, see -Section 23.13, “Events Configuration”.
							
	<pm>
		<suspend-to-mem enabled='no'/>
		<suspend-to-disk enabled='no'/>
	</pm>
							
The S3 and S4 ACPI sleep states for this guest VM are disabled. " />.
					 		
	<devices>
		<emulator>/usr/bin/qemu-kvm</emulator>
		<disk type='file' device='disk'>
			<driver name='qemu' type='qcow2'/>
			<source file='/var/lib/libvirt/images/Testguest.qcow2'/>
			<target dev='hda' bus='ide'/>
			<address type='drive' controller='0' bus='0' target='0' unit='0'/>
		</disk>
		<disk type='file' device='cdrom'>
			<driver name='qemu' type='raw'/>
			<target dev='hdb' bus='ide'/>
			<readonly/>
			<address type='drive' controller='0' bus='0' target='0' unit='1'/>
		</disk>
							
The VM uses the /usr/bin/qemu-kvm binary file for emulation. In addition, it has two disks attached. The first disk is a virtualized hard-drive based on the /var/lib/libvirt/images/Testguest.qcow2 stored on the host, and its logical device name is set to hda. For more information about managing disks, see -Section 23.17.1, “Hard Drives, Floppy Disks, and CD-ROMs”.
							
		<controller type='usb' index='0' model='ich9-ehci1'>
			<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x7'/>
		</controller>
		<controller type='usb' index='0' model='ich9-uhci1'>
			<master startport='0'/>
			<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/>
		</controller>
		<controller type='usb' index='0' model='ich9-uhci2'>
			<master startport='2'/>
			<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/>
		</controller>
		<controller type='usb' index='0' model='ich9-uhci3'>
			<master startport='4'/>
			<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x2'/>
		</controller>
		<controller type='pci' index='0' model='pci-root'/>
		<controller type='ide' index='0'>
			<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
		</controller>
		<controller type='virtio-serial' index='0'>
			<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
		</controller>
							
The VM uses four controllers for attaching USB devices, and a root controller for PCI-Express (PCIe) devices. In addition, a virtio-serial controller is available, which enables the VM to interact with the host in a variety of ways, such as the serial console. For more information about configuring controllers, see -Section 23.17.3, “Controllers”.
					 	
		<interface type='network'>
			<mac address='52:54:00:65:29:21'/>
			<source network='default'/>
			<model type='rtl8139'/>
			<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
		</interface>
						
A network interface is set up in the VM that uses the default virtual network and the rtl8139 network device model. For more information about configuring network interfaces, see -Section 23.17.8, “Network Interfaces”.
						
		<serial type='pty'>
			<target port='0'/>
		</serial>
		<console type='pty'>
			<target type='serial' port='0'/>
		</console>
		<channel type='spicevmc'>
			<target type='virtio' name='com.redhat.spice.0'/>
			<address type='virtio-serial' controller='0' bus='0' port='1'/>
		</channel>
							
A pty serial console is set up on the VM, which enables the most rudimentary VM communication with the host. The console uses the paravirtualized SPICE channel. This is set up automatically and changing these settings is not recommended. For an overview of character devices, see -Section 23.17.8, “Network Interfaces”. For detailed information about serial ports and consoles, see Section 23.17.14, “Guest Virtual Machine Interfaces”. For more information about channels, see Section 23.17.15, “Channel”.
					 	
		<input type='mouse' bus='ps2'/>
		<input type='keyboard' bus='ps2'/>
							
The VM uses a virtual ps2 port which is set up to receive mouse and keyboard input. This is set up automatically and changing these settings is not recommended. For more information, see Section 23.17.9, “Input Devices”.
					 	
		<graphics type='spice' autoport='yes'>
			<listen type='address'/>
			<image compression='off'/>
		</graphics>
							
The VM uses the SPICE protocol for rendering its graphical output with auto-allocated port numbers and image compression turned off. For information about configuring graphic devices, see Section 23.17.11, “Graphical Framebuffers”.
					 		
		<sound model='ich6'>
			<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
		</sound>
		<video>
			<model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
			<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
		</video>
							
An ICH6 HDA sound device is set up for the VM, and the QEMU QXL paravirtualized framebuffer device is set up as the video accelerator. This is set up automatically and changing these settings is not recommended. For information about configuring sound devices, see Section 23.17.17, “Sound Devices”. For configuring video devices, see Section 23.17.12, “Video Devices”.
							
		<redirdev bus='usb' type='spicevmc'>
				<address type='usb' bus='0' port='1'/>
		</redirdev>
		<redirdev bus='usb' type='spicevmc'>
				<address type='usb' bus='0' port='2'/>
		</redirdev>
		<memballoon model='virtio'>
				<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
		</memballoon>
	</devices>
</domain>
							
The VM has two redirectors for attaching USB devices remotely, and memory ballooning is turned on. This is set up automatically and changing these settings is not recommended. For detailed information, see Section 23.17.6, “Redirected devices”