Chapter 14. Administrating Virtual Machines with QEMU Monitor

Contents

14.1. Accessing Monitor Console
14.2. Getting Information about the Guest System
14.3. Changing VNC Password
14.4. Managing Devices
14.5. Controlling Keyboard and Mouse
14.6. Changing Available Memory
14.7. Dumping Virtual Machine Memory
14.8. Managing Virtual Machine Snapshots
14.9. Suspending and Resuming Virtual Machine Execution
14.10. Live Migration

When QEMU is running, a monitor console is provided for performing interaction with the user. Using the commands available in the monitor console, it is possible to inspect the running operating system, change removable media, take screenshots or audio grabs and control several other aspects of the virtual machine.

14.1. Accessing Monitor Console

To access the monitor console from QEMU, press Ctrl+Alt+2. To return back to QEMU from the monitor console, press Ctrl+Alt+1.

To get help while using the console, use help or ?. To get help for a specific command, use help command.

14.2. Getting Information about the Guest System

To get information about the guest system, use the info option command. If used without any option, the list of possible options is printed. Options determine which of the system will be analyzed:

info version

Shows the version of QEMU

info commands

Lists available QMP commands

info network

Shows the network state

info chardev

Shows the character devices

info block

Information about block devices, such as hard drives, floppy drives, or CD-ROMs

info blockstats

Read and write statistics on block devices

info registers

Shows the CPU registers

info cpus

Shows information about available CPUs

info history

Shows the command line history

info irq

Shows the interrupts statistics

info pic

Shows the i8259 (PIC) state

info pci

Shows the PCI information

info tlb

Shows virtual to physical memory mappings

info mem

Shows the active virtual memory mappings

info hpet

Shows state of HPET

info jit

Shows dynamic compiler information

info kvm

Shows the KVM information

info numa

Shows the NUMA information

info usb

Shows the guest USB devices

info usbhost

Shows the host USB devices

info profile

Shows the profiling information

info capture

Shows the capture (audio grab) information

info snapshots

Shows the currently saved virtual machine snapshots

info status

Shows the current virtual machine status

info pcmcia

Shows the guest PCMCIA status

info mice

Shows which guest mice is receiving events

info vnc

Shows the VNC server status

info name

Shows the current virtual machine name

info uuid

Shows the current virtual machine UUID

info usernet

Shows the user network stack connection states

info migrate

Shows the migration status

info balloon

Shows the balloon device information

info qtree

Shows the device tree

info qdm

Shows the qdev device model list

info roms

Shows the ROMs

14.3. Changing VNC Password

To change the VNC password, use the change vnc password command and enter the new password:

(qemu) change vnc password
Password: ********
(qemu)
    

14.4. Managing Devices

To release the device or file connected to the removable media device, use the eject device command. Use the optional -f to force ejection.

To change removable media (like CD-ROMs), use the change device command. The name of the removable media can be determined using the info block command:

(qemu) info block
ide1-cd0: type=cdrom removable=1 locked=0 file=/dev/sr0 ro=1 drv=host_device
(qemu) change ide1-cd0 /path/to/image
     

14.5. Controlling Keyboard and Mouse

It is possible to use the monitor console to emulate keyboard and mouse input if necessary. For example, if your graphical user interface intercepts some key combinations at low level (such as Ctrl+Alt+F1 in X Window), you can still enter them using the sendkey keys:

sendkey ctrl-alt-f1

To list the key names used in the keys option, enter sendkey and press Tab.

To control the mouse, the following commands can be used:

mouse_move dxdy [dz]

Move the active mouse pointer to the specified coordinates dx, dy with the optional scroll axis dz.

mouse_button val

Change the state of the mouse buttons (1=left, 2=middle, 4=right).

mouse_set index

Set which mouse device receives events. Device index numbers can be obtained with the info mice command.

14.6. Changing Available Memory

If the virtual machine was started with the -balloon virtio option and the paravirtualized balloon device that allows to dynamically change the amount of memory available is therefore enabled, it is possible to change the available memory dynamically. For more information about enabling the baloon device, see Section 12.1, “Basic Installation with qemu-kvm.

To get information about the balloon device in the monitor console and to determine whether the device is enabled, use the info balloon command:

(qemu) info balloon

If the balloon device is enabled, use the balloon memory_in_MB command to set the requested amount of memory:

(qemu) balloon 400

14.7. Dumping Virtual Machine Memory

To save the content of the virtual machine memory to a disk or console output, use the following commands:

memsave addrsizefilename

Saves virtual memory dump starting at addr of size size to file filename

pmemsave addrsizefilename

Saves physical memory dump starting at addr of size size to file filename-

x /fmtaddr

Makes a virtual memory dump starting at address addr and formatted according to the fmt string. The fmt string consists of three parameters countformatsize:

The count parameter is the number of the items to be dumped.

The format can be x (hex), d (signed decimal), u (unsigned decimal), o (octal), c (char) or i (assembly instruction).

The size parameter can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86, h or w can be specified with the i format to respectively select 16 or 32-bit code instruction size. is the number of the items to be dumped.

xp /fmtaddr

Makes a physical memory dump starting at address addr and formatted according to the fmt string. The fmt string consists of three parameters countformatsize:

The count parameter is the number of the items to be dumped.

The format can be x (hex), d (signed decimal), u (unsigned decimal), o (octal), c (char) or i (asm instruction).

The size parameter can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86, h or w can be specified with thei format to respectively select 16 or 32-bit code instruction size. is the number of the items to be dumped.

14.8. Managing Virtual Machine Snapshots

Virtual machine snapshots are snapshots of the complete virtual machine including the state of CPU, RAM, and the content of all writable disks. To use virtual machine snapshots, you must have at least one non-removable and writable block device using the qcow2 disk image format.

[Note]

Currently, only the raw disk image format is supported by Novell.

Snapshots are helpful when you need to save your virtual machine in a particular state. For example, after you configured network services on a virtualized server and want to quickly start the virtual machine in the same state that has been saved last. You can also create a snapshot after the virtual machine has been powered off to create a backup state before you try something experimental and possibly make VM Guest unstable. This section introduces the former case, while the latter is described in Section 12.2.3, “Managing Snapshots of Virtual Machines with qemu-img Snapshot”.

The following commands are available for managing snapshosts in QEMU monitor:

savevm name

Creates a new virtual machine snapshot under the tag name or replaces an existing snapshot.

loadvm name

Loads a virtual machine snapshot tagged name.

delvm

Deletes a virtual machine snapshot.

info snapshots

Prints information about available snapshots.

(qemu) info snapshots 
Snapshot list:
ID1       TAG2               VM SIZE3        DATE4          VM CLOCK5
1         booting                4.4M 2010-11-22 10:51:10   00:00:20.476
2         booted                 184M 2010-11-22 10:53:03   00:02:05.394
3         logged_in              273M 2010-11-22 11:00:25   00:04:34.843
4         ff_and_term_running    372M 2010-11-22 11:12:27   00:08:44.965

1

Unique identification number of the snapshot. Usually auto-incremented.

2

Unique description string of the snapshot. It is meant as a human readable version of the ID.

3

The disk space occupied by the snapshot. Note that the more memory is consumed by running applications, the bigger the snapshot is.

4

Time and date the snapshot was created.

5

The current state of the virtual machine's clock.

14.9. Suspending and Resuming Virtual Machine Execution

The following commands are available for suspending and resuming virtual machines:

stop

Suspends the execution of the virtual machine.

cont

Resumes the execution of the virtual machine.

system_reset

Resets the virtual machine. The effect is similar to the reset button on a physical machine. This may leave the filesystem in an unclean state.

system_powedown

Sends an ACPI shutdown request to the machine. The efect is similar to the power button on a physical machine.

q or quit

Terminates QEMU immediately.

14.10. Live Migration

The live migration process allows to transmite any virtual machine from one host system to another host system without any interruption in availability. It is possible to change hosts permanently or just during a maintenance. It is recommended that the source and destination systems have the same architecture, however it is possible to migrate between hosts with AMD and Intel architecture or even between Linux and Windows hosts.

The requirements for the live migration:

  • The virtual machine image must be accessible on both source and destination hosts. For example, it can be located on a shared NFS disk.  

  • The image directory should be located in the same path on both hosts.  

  • Both hosts must be located in the same subnet.  

  • The guest on the source and destination hosts must be started in the same way.  

The live migration process has the following steps:

  1. The virtual machine instance is running on the source host.

  2. The virtual machine is started on the destination host in the frozen listening mode. The parameters used are the same as on the source host plus the -incoming tcp:ip:port parameter, where ip specifies the IP address and port specifies the port for listening to the incoming migration. If 0 is set as IP address, the virtual machine listens on all interfaces.

  3. On the source host, switch to the monitor console and use the migrate -d tcp:destination_ip:port command to initiate the migration.

  4. To determine the state of the migration, use the info migrate command in the monitor console on the source host.

  5. To cancel the migration, use the migrate_cancel command in the monitor console on the source host.

  6. To set the maximum tolerable downtime for migration in seconds, use the migrate_set_downtime number_of_seconds command.

  7. To set the maximum speed for migration in bytes per second, use the migrate_set_speed bytes_per_second command.