From 340cbaacd9033728557cd21089089fc6e4fc0978 Mon Sep 17 00:00:00 2001 From: aginies Date: Thu, 20 Nov 2025 11:18:57 +0100 Subject: [PATCH 01/35] add some external infor for CoCo --- references/virtualization-support.xml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/references/virtualization-support.xml b/references/virtualization-support.xml index feaebbfd3..c140b1b21 100644 --- a/references/virtualization-support.xml +++ b/references/virtualization-support.xml @@ -875,11 +875,9 @@ Confidential Computing - - &slsa; 15 SP6 includes kernel patches and tooling to - enable Intel TDX Confidential Computing technology in the - product. As this technology is not yet fully ready for a production - environment, it is provided as a technology preview. + + Please read lastest information about Confidential computing in the release notes: + From ada4216e01b76fc73d9396057508698e19e53faf Mon Sep 17 00:00:00 2001 From: aginies Date: Fri, 21 Nov 2025 11:12:29 +0100 Subject: [PATCH 02/35] add spice removal chapter --- articles/virtualization.asm.xml | 2 + references/spice_removal.xml | 135 ++++++++++++++++++++++++++++++++ 2 files changed, 137 insertions(+) create mode 100644 references/spice_removal.xml diff --git a/articles/virtualization.asm.xml b/articles/virtualization.asm.xml index b26838ab2..18d9a59ff 100644 --- a/articles/virtualization.asm.xml +++ b/articles/virtualization.asm.xml @@ -27,6 +27,7 @@ + @@ -138,6 +139,7 @@ + diff --git a/references/spice_removal.xml b/references/spice_removal.xml new file mode 100644 index 000000000..b25cd05d2 --- /dev/null +++ b/references/spice_removal.xml @@ -0,0 +1,135 @@ + + + %entities; +]> + + + Deprecation of Spice and Migration to VNC in SUSE Linux Enterprise 16 + + + + yes + + +
+ Overview of Spice Deprecation + + Starting with SUSE Linux Enterprise 16 (SLE16), support for the Spice remote computing protocol for virtual machines (VMs) has been completely removed in favor of VNC, which is a more universally adopted standard. Consequently, any attempt to start a Spice-based VM on an SLE16 host will fail with an error. All existing VMs that were created on SLE15-SP7 or earlier and are configured to use Spice for the graphical console must be manually converted to use VNC. Currently, no automated conversion tool is provided, so this process requires manually editing the VM's XML configuration file. + + + The following procedure outlines the steps to convert a VM from Spice to VNC. + + + + First, ensure the virtual machine is completely shut down before making any changes. This prevents any potential data corruption or configuration mismatches. + virsh shutdown <vm_name> + + + Export the current XML configuration of the VM to a file. This file will be edited in the next steps. + virsh dumpxml <vm_name> > <vm_name>.xml + + + It is highly recommended to create a backup of the original XML definition. This allows you to restore the original configuration if something goes wrong during the editing process. + cp <vm_name>.xml <vm_name>-spice.xml + + + Proceed to manually edit the VM's XML configuration file to remove all Spice-related elements and modify others to use VNC. + + +
+
+ Removing Spice-Specific XML Elements + The following XML snippets are specific to the Spice protocol and must be removed from the VM's configuration file. These elements enable features like the Spice agent channel and USB redirection over Spice, which are no longer supported. + + <!-- This channel is for the Spice agent and is no longer needed --> + <channel type='spicevmc'> + <target type='virtio' name='com.redhat.spice.0'/> + <address type='virtio-serial' controller='0' bus='0' port='2'/> + </channel> + + <!-- These elements enable USB redirection over Spice and must be removed --> + <redirdev bus='usb' type='spicevmc'> + <address type='usb' bus='0' port='2'/> + </redirdev> + + <redirdev bus='usb' type='spicevmc'> + <address type='usb' bus='0' port='3'/> + </redirdev> +
+
+ Modifying XML Elements for VNC Compatibility + After removing the Spice-specific elements, you need to modify several other XML elements to switch the VM from using Spice to VNC for its graphical console and other devices. +
+ Graphics and Audio + The primary change is to switch the graphics display protocol from Spice to VNC. You should also disable the audio device, as Spice-based audio is no longer supported. + Replace the Spice graphics configuration: + <graphics type='spice' autoport='yes' listen='127.0.0.1'> + with the VNC equivalent: + <graphics type='vnc' autoport='yes' listen='127.0.0.1'> + Then, replace the Spice audio configuration: + <audio id='1' type='spice'/> + with: + <audio id='1' type='none'/> +
+
+ QXL Video Device Conversion for Windows VMs + The QXL video driver is optimized for the Spice protocol and is commonly used in Windows VMs. For better compatibility with VNC, it is recommended to replace it with the more generic `virtio` video driver. + If your VM, especially a Windows guest, uses a QXL video device like this: + <video> + <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/> + </video> + Replace the entire <video> block with a simpler virtio model definition: + <video> + <model type="virtio"/> + </video> + + When you define the VM, libvirt will automatically fill in the necessary default values for the virtio video device, so you don't need to specify details like RAM or bus address. + +
+
+
+ Applying the New Configuration and Starting the VM + After you have finished editing the XML file and saved your changes, you need to make libvirt aware of the new configuration. This is done by first undefining the VM, which removes its old configuration from libvirt, and then defining it again using the modified XML file. + + + Undefine the existing VM configuration and then define it again with the modified XML file: + virsh undefine <vm_name> +virsh define <vm_name>.xml + + + You can now start the VM, which will be using VNC for its graphical console. + virsh start <vm_name> + + +
+ +
+ Restoring Copy-Paste Functionality + A common feature available with Spice is copy-paste functionality between the host and the guest VM, which is handled by the Spice agent. After migrating to VNC, this functionality will be lost. However, you can restore it by using the QEMU guest agent. + + + First, ensure you have updated gtk-vnc packages on your SLE16 host. The versions shipped with the initial release of SLE16 may not have support for copy-paste over VNC. + + + Inside the guest VM, ensure the QEMU guest agent is installed and the corresponding service is enabled to start on boot. + systemctl enable qemu-guest-agent + + + Add a new channel definition to the VM's XML configuration. This channel allows communication with the QEMU guest agent for features like copy-paste. + <channel type="qemu-vdagent"> + <source> + <clipboard copypaste="yes"/> + </source> + <target type="virtio" name="com.redhat.spice.0"/> + <address type="virtio-serial" controller="0" bus="0" port="1"/> + </channel> + + + Finally, shut down and restart the VM for the changes to take effect. + + +
+
From 1d814daf839d05be5b30a300399fddb02f87fba5 Mon Sep 17 00:00:00 2001 From: aginies Date: Fri, 21 Nov 2025 11:17:10 +0100 Subject: [PATCH 03/35] add original author --- references/spice_removal.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/references/spice_removal.xml b/references/spice_removal.xml index b25cd05d2..b6c85a82b 100644 --- a/references/spice_removal.xml +++ b/references/spice_removal.xml @@ -3,6 +3,7 @@ %entities; ]> + From 59976f36501037c1f808420edc57491cb83c5320 Mon Sep 17 00:00:00 2001 From: aginies Date: Fri, 21 Nov 2025 17:14:39 +0100 Subject: [PATCH 04/35] dont use _ in element id --- references/{spice_removal.xml => spice-removal.xml} | 2 +- references/{vt_io.xml => vt-io.xml} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename references/{spice_removal.xml => spice-removal.xml} (99%) rename references/{vt_io.xml => vt-io.xml} (99%) diff --git a/references/spice_removal.xml b/references/spice-removal.xml similarity index 99% rename from references/spice_removal.xml rename to references/spice-removal.xml index b6c85a82b..74213b6d0 100644 --- a/references/spice_removal.xml +++ b/references/spice-removal.xml @@ -4,7 +4,7 @@ %entities; ]> - Deprecation of Spice and Migration to VNC in SUSE Linux Enterprise 16 diff --git a/references/vt_io.xml b/references/vt-io.xml similarity index 99% rename from references/vt_io.xml rename to references/vt-io.xml index 7a4f03d9d..81a0680af 100644 --- a/references/vt_io.xml +++ b/references/vt-io.xml @@ -4,7 +4,7 @@ %entities; ]> - Date: Fri, 21 Nov 2025 17:17:29 +0100 Subject: [PATCH 05/35] dont use _ in element id --- articles/virtualization.asm.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/articles/virtualization.asm.xml b/articles/virtualization.asm.xml index 18d9a59ff..79f54725d 100644 --- a/articles/virtualization.asm.xml +++ b/articles/virtualization.asm.xml @@ -27,8 +27,8 @@ - - + + @@ -139,8 +139,8 @@ - - + + From cc5e00aa7ac445654f4c59d1fe722417d733a717 Mon Sep 17 00:00:00 2001 From: aginies Date: Fri, 21 Nov 2025 17:19:52 +0100 Subject: [PATCH 06/35] Revert "dont use _ in element id" This reverts commit 59976f36501037c1f808420edc57491cb83c5320. --- references/{spice-removal.xml => spice_removal.xml} | 2 +- references/{vt-io.xml => vt_io.xml} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename references/{spice-removal.xml => spice_removal.xml} (99%) rename references/{vt-io.xml => vt_io.xml} (99%) diff --git a/references/spice-removal.xml b/references/spice_removal.xml similarity index 99% rename from references/spice-removal.xml rename to references/spice_removal.xml index 74213b6d0..b6c85a82b 100644 --- a/references/spice-removal.xml +++ b/references/spice_removal.xml @@ -4,7 +4,7 @@ %entities; ]> - Deprecation of Spice and Migration to VNC in SUSE Linux Enterprise 16 diff --git a/references/vt-io.xml b/references/vt_io.xml similarity index 99% rename from references/vt-io.xml rename to references/vt_io.xml index 81a0680af..7a4f03d9d 100644 --- a/references/vt-io.xml +++ b/references/vt_io.xml @@ -4,7 +4,7 @@ %entities; ]> - Date: Fri, 21 Nov 2025 17:22:34 +0100 Subject: [PATCH 07/35] revert change to avoid conflict --- articles/virtualization.asm.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/articles/virtualization.asm.xml b/articles/virtualization.asm.xml index 79f54725d..4f3551493 100644 --- a/articles/virtualization.asm.xml +++ b/articles/virtualization.asm.xml @@ -28,7 +28,7 @@ - + @@ -140,7 +140,7 @@ - + From 4ee27edc1dea48724e2a948bdd18cfa30d597562 Mon Sep 17 00:00:00 2001 From: aginies Date: Mon, 24 Nov 2025 10:45:50 +0100 Subject: [PATCH 08/35] revert error between _ and - --- articles/virtualization.asm.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/virtualization.asm.xml b/articles/virtualization.asm.xml index 6fd0d66a7..a7d90125a 100644 --- a/articles/virtualization.asm.xml +++ b/articles/virtualization.asm.xml @@ -27,7 +27,7 @@ - + From 0c8db1b347d506a589fe1ba297832d93648fd815 Mon Sep 17 00:00:00 2001 From: aginies Date: Mon, 24 Nov 2025 10:46:43 +0100 Subject: [PATCH 09/35] fix indent --- articles/virtualization.asm.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/articles/virtualization.asm.xml b/articles/virtualization.asm.xml index a7d90125a..4bacaf383 100644 --- a/articles/virtualization.asm.xml +++ b/articles/virtualization.asm.xml @@ -26,7 +26,8 @@ - + + From 9a9c840584f9e07981a154d094ee04e6f84889da Mon Sep 17 00:00:00 2001 From: aginies Date: Mon, 24 Nov 2025 10:47:14 +0100 Subject: [PATCH 10/35] fix error between _ and - --- articles/virtualization.asm.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/virtualization.asm.xml b/articles/virtualization.asm.xml index 4bacaf383..7d6b81e39 100644 --- a/articles/virtualization.asm.xml +++ b/articles/virtualization.asm.xml @@ -140,7 +140,7 @@ - + From 74feadd626181cdf8ae5695f6a15bbbfa0799111 Mon Sep 17 00:00:00 2001 From: aginies Date: Mon, 24 Nov 2025 16:14:47 +0100 Subject: [PATCH 11/35] add vt_cachemodes --- articles/virtualization.asm.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/articles/virtualization.asm.xml b/articles/virtualization.asm.xml index 7d6b81e39..44d0f576c 100644 --- a/articles/virtualization.asm.xml +++ b/articles/virtualization.asm.xml @@ -27,7 +27,8 @@ - + + @@ -140,6 +141,7 @@ + From af22eae09de8e0cc922542db9dcb6b740473e433 Mon Sep 17 00:00:00 2001 From: aginies Date: Mon, 24 Nov 2025 16:15:24 +0100 Subject: [PATCH 12/35] add vt_cachemodes.xml --- references/vt_cachemodes.xml | 205 +++++++++++++++++++++++++++++++++++ 1 file changed, 205 insertions(+) create mode 100644 references/vt_cachemodes.xml diff --git a/references/vt_cachemodes.xml b/references/vt_cachemodes.xml new file mode 100644 index 000000000..7568fedbc --- /dev/null +++ b/references/vt_cachemodes.xml @@ -0,0 +1,205 @@ + + + %entities; +]> + + + Disk cache modes + + + + yes + + + +
+ What is a disk cache? + + + A disk cache is a memory used to speed up the process of storing and + accessing data from the hard disk. Physical hard disks have their cache + integrated as a standard feature. For virtual disks, the cache uses + &vmhost;'s memory and you can fine-tune its behavior, for example, by + setting its type. + +
+
+ How does a disk cache work? + + + Normally, a disk cache stores the most recent and frequently used + programs and data. When a user or program requests data, the operating + system first checks the disk cache. If the data is there, the operating + system quickly delivers the data to the program instead of re-reading the + data from the disk. + + +
+ Caching mechanism + + + + + + + + +
+
+
+ Benefits of disk caching + + + Caching of virtual disk devices affects the overall performance of guest + machines. You can improve the performance by optimizing the combination + of cache mode, disk image format, and storage subsystem. + +
+
+ Virtual disk cache modes + + + If you do not specify a cache mode, writeback is used + by default. Each guest disk can use one of the following cache modes: + + + + + writeback + + + writeback uses the host page cache. Writes are + reported to the guest as completed when they are placed in the host + cache. Cache management handles commitment to the storage device. + The guest's virtual storage adapter is informed of the + writeback cache and therefore expected to send + flush commands as needed to manage data integrity. + + + + + writethrough + + + Writes are reported as completed only when the data has been + committed to the storage device. The guest's virtual storage + adapter is informed that there is no writeback + cache, so the guest does not need to send flush commands to manage + data integrity. + + + + + none + + + The host cache is bypassed, and reads and writes happen directly + between the hypervisor and the storage device. Because the actual + storage device may report a write as completed when the data is + still placed in its write queue only, the guest's virtual storage + adapter is informed that there is a writeback + cache. This mode is equivalent to direct access to the host's disk. + + + + + unsafe + + + Similar to the writeback mode, except all + flush commands from the guests are ignored. Using this mode implies + that the user prioritizes performance gain over the risk of data + loss in case of a host failure. This mode can be useful during + guest installation, but not for production workloads. + + + + + directsync + + + Writes are reported as completed only when the data has been + committed to the storage device and the host cache is bypassed. + Similar to writethrough, this mode can be + useful for guests that do not send flushes when needed. + + + + +
+
+ Cache modes and data integrity + + + + writethrough, none, directsync + + + These modes are considered to be safest when the guest operating + system uses flushes as needed. For unsafe or unstable guests, use + writethough or + directsync. + + + + + writeback + + + This mode informs the guest of the presence of a write cache, and + it relies on the guest to send flush commands as needed to maintain + data integrity within its disk image. This mode exposes the guest + to data loss if the host fails. The reason is the gap between the + moment a write is reported as completed and the time the write + being committed to the storage device. + + + + + unsafe + + + This mode is similar to writeback caching, + except the guest flush commands are ignored. This means a higher + risk of data loss caused by host failure. + + + + +
+
+ Cache modes and live migration + + + The caching of storage data restricts the configurations that support + live migration. Currently, only raw and + qcow2 image formats can be used for live migration. If + a clustered file system is used, all cache modes support live migration. + Otherwise the only cache mode that supports live migration on read/write + shared storage is none. + + + + The &libvirt; management layer includes checks for migration + compatibility based on several factors. If the guest storage is hosted on + a clustered file system, is read-only, or is marked shareable, then the + cache mode is ignored when determining if migration can be allowed. + Otherwise &libvirt; does not allow migration unless the cache mode is set + to none. However, this restriction can be overridden + with the --unsafe option to the migration APIs, which is + also supported by virsh. For example: + + +&prompt.user;virsh migrate --live --unsafe + + + + The cache mode none is required for the AIO mode + setting native. If another cache mode is used, the + AIO mode is silently switched back to the default + threads. + + +
+
From 049c30eb61a0fddc8e109a413ac140b1a514d8ca Mon Sep 17 00:00:00 2001 From: aginies Date: Tue, 25 Nov 2025 15:02:07 +0100 Subject: [PATCH 13/35] fix indent --- references/qemu_host_installation.xml | 591 ++++++++++++++++++++++++++ 1 file changed, 591 insertions(+) create mode 100644 references/qemu_host_installation.xml diff --git a/references/qemu_host_installation.xml b/references/qemu_host_installation.xml new file mode 100644 index 000000000..c089222e3 --- /dev/null +++ b/references/qemu_host_installation.xml @@ -0,0 +1,591 @@ + + + %entities; +]> + + + Setting up a &kvm; &vmhost; + + + + yes + + + + This section documents how to set up and use &productname; &productnumber; + as a &qemu;-&kvm; based virtual machine host. + + + Resources + + The virtual guest system needs the same hardware resources as if it were + installed on a physical machine. The more guests you plan to run on the + host system, the more hardware resources—CPU, disk, memory and + network—you need to add to the &vmhost;. + + +
+ CPU support for virtualization + + + To run &kvm;, your CPU must support virtualization, and virtualization + needs to be enabled in BIOS. The file /proc/cpuinfo + includes information about your CPU features. + + + + To find out whether your system supports virtualization, see + . + +
+
+ Required software + + + The &kvm; host requires several packages to be installed. To install all + necessary packages, do the following: + + + + + + install the patterns-server-kvm_server and + patterns-server-kvm_tools. Refer to + + + + + Create a Network Bridge. If you do + not plan to dedicate an additional physical network card to your + virtual guests, network bridge is a standard way to connect the guest + machines to the network. Refer to . + + + + + After all the required packages are installed (and new network setup + activated), try to load the &kvm; kernel module relevant for your CPU + type—kvm_intel or + kvm_amd: + +&prompt.root;modprobe kvm_amd + + Check if the module is loaded into memory: + + &prompt.user;lsmod | grep kvm +kvm_amd 237568 20 +kvm 1376256 17 kvm_amd + + Now the &kvm; host is ready to serve &kvm; &vmguest;s. + + + +
+
+ &kvm; host-specific features + + + You can improve the performance of &kvm;-based &vmguest;s by letting them + fully use specific features of the &vmhost;'s hardware + (paravirtualization). This section introduces + techniques to make the guests access the physical host's hardware + directly—without the emulation layer—to make the most use of + it. + + + + + Examples included in this section assume basic knowledge of the + qemu-system-ARCH command + line options. + + + +
+ Using the host storage with <systemitem>virtio-scsi</systemitem> + + virtio-scsi is an advanced storage stack for + &kvm;. It replaces the former virtio-blk stack + for SCSI devices pass-through. It has several advantages over + virtio-blk: + + + + Improved scalability + + + &kvm; guests have a limited number of PCI controllers, which + results in a limited number of attached devices. + virtio-scsi solves this limitation by + grouping multiple storage devices on a single controller. Each + device on a virtio-scsi controller is + represented as a logical unit, or LUN. + + + + + Standard command set + + + virtio-blk uses a small set of commands + that need to be known to both the + virtio-blk driver and the virtual + machine monitor, and so introducing a new command requires + updating both the driver and the monitor. + + + By comparison, virtio-scsi does not + define commands, but rather a transport protocol for these + commands following the industry-standard SCSI specification. This + approach is shared with other technologies, such as Fibre + Channel, ATAPI and USB devices. + + + + + Device naming + + + virtio-blk devices are presented inside + the guest as + /dev/vdX, which + is different from device names in physical systems and may cause + migration problems. + + + virtio-scsi keeps the device names + identical to those on physical systems, making the virtual + machines easily relocatable. + + + + + SCSI device pass-through + + + For virtual disks backed by a whole LUN on the host, it is + preferable for the guest to send SCSI commands directly to the + LUN (pass-through). This is limited in + virtio-blk, as guests need to use the + virtio-blk protocol instead of SCSI command pass-through, and, + moreover, it is not available for Windows guests. + virtio-scsi natively removes these + limitations. + + + + +
+ <systemitem>virtio-scsi</systemitem> usage + + &kvm; supports the SCSI pass-through feature with the + virtio-scsi-pci device: + +&prompt.root;qemu-system-x86_64 [...] \ +-device virtio-scsi-pci,id=scsi +
+
+ +
+ Accelerated networking with <systemitem>vhost-net</systemitem> + + The vhost-net module is used to accelerate + &kvm;'s paravirtualized network drivers. It provides better latency and + greater network throughput. Use the vhost-net driver + by starting the guest with the following example command line: + +&prompt.root;qemu-system-x86_64 [...] \ +-netdev tap,id=guest0,vhost=on,script=no \ +-net nic,model=virtio,netdev=guest0,macaddr=00:16:35:AF:94:4B + + guest0 is an identification string of the + vhost-driven device. + +
+ +
+ Scaling network performance with multiqueue virtio-net + + As the number of virtual CPUs increases in &vmguest;s, &qemu; offers a + way of improving the network performance using + multiqueue. Multiqueue virtio-net scales the + network performance by allowing &vmguest; virtual CPUs to transfer + packets in parallel. Multiqueue support is required on both the + &vmhost; and &vmguest; sides. + + + Performance benefit + + The multiqueue virtio-net solution is most beneficial in the + following cases: + + + + + Network traffic packets are large. + + + + + &vmguest; has many connections active at the same time, mainly + between the guest systems, or between the guest and the host, or + between the guest and an external system. + + + + + The number of active queues is equal to the number of virtual + CPUs in the &vmguest;. + + + + + + + While multiqueue virtio-net increases the total network throughput, + it increases CPU consumption as it uses of the virtual CPU's power. + + + + How to enable multiqueue virtio-net + + The following procedure lists important steps to enable the + multiqueue feature with qemu-system-ARCH. It + assumes that a tap network device with multiqueue capability + (supported since kernel version 3.8) is set up on the &vmhost;. + + + + In qemu-system-ARCH, enable multiqueue for the + tap device: + +-netdev tap,vhost=on,queues=2*N + + where N stands for the number of queue pairs. + + + + + In qemu-system-ARCH, enable multiqueue and + specify MSI-X (Message Signaled Interrupt) vectors for the + virtio-net-pci device: + +-device virtio-net-pci,mq=on,vectors=2*N+2 + + where the formula for the number of MSI-X vectors results from: N + vectors for TX (transmit) queues, N for RX (receive) queues, one + for configuration purposes, and one for possible VQ (vector + quantization) control. + + + + + In &vmguest;, enable multiqueue on the relevant network interface + (eth0 in this example): + +&prompt.sudo;ethtool -L eth0 combined 2*N + + + + The resulting qemu-system-ARCH command line looks + similar to the following example: + +qemu-system-x86_64 [...] -netdev tap,id=guest0,queues=8,vhost=on \ +-device virtio-net-pci,netdev=guest0,mq=on,vectors=10 + + The id of the network device + (guest0) needs to be identical for both options. + + + Inside the running &vmguest;, specify the following command with + &rootuser; privileges: + +&prompt.sudo;ethtool -L eth0 combined 8 + + Now the guest system networking uses the multiqueue support from the + qemu-system-ARCH hypervisor. + +
+ +
+ VFIO: secure direct access to devices + + Directly assigning a PCI device to a &vmguest; (PCI pass-through) + avoids performance issues caused by avoiding any emulation in + performance-critical paths. VFIO replaces the traditional &kvm; + &pciback; device assignment. A prerequisite for this feature is a + &vmhost; configuration as described in + . + + + To be able to assign a PCI device via VFIO to a &vmguest;, you need to + find out which IOMMU Group it belongs to. The + (input/output memory + management unit that connects a direct memory access-capable I/O bus to + the main memory) API supports the notion of groups. A group is a set of + devices that can be isolated from all other devices in the system. + Groups are therefore the unit of ownership used by + . + + + Assigning a PCI device to a &vmguest; via VFIO + + + Identify the host PCI device to assign to the guest. + +&prompt.sudo;lspci -nn +[...] +00:10.0 Ethernet controller [0200]: Intel Corporation 82576 \ +Virtual Function [8086:10ca] (rev 01) +[...] + + Note down the device ID, 00:10.0 in this example, + and the vendor ID (8086:10ca). + + + + + Find the IOMMU group of this device: + +&prompt.sudo;readlink /sys/bus/pci/devices/0000\:00\:10.0/iommu_group +../../../kernel/iommu_groups/20 + + The IOMMU group for this device is 20. Now you + can check the devices belonging to the same IOMMU group: + +&prompt.sudo;ls -l /sys/bus/pci/devices/0000\:01\:10.0/iommu_group/devices/ +[...] 0000:00:1e.0 -> ../../../../devices/pci0000:00/0000:00:1e.0 +[...] 0000:01:10.0 -> ../../../../devices/pci0000:00/0000:00:1e.0/0000:01:10.0 +[...] 0000:01:10.1 -> ../../../../devices/pci0000:00/0000:00:1e.0/0000:01:10.1 + + + + Unbind the device from the device driver: + +&prompt.sudo;echo "0000:01:10.0" > /sys/bus/pci/devices/0000\:01\:10.0/driver/unbind + + + + Bind the device to the vfio-pci driver using the vendor ID from + step 1: + +&prompt.sudo;echo "8086 153a" > /sys/bus/pci/drivers/vfio-pci/new_id + + A new device + /dev/vfio/IOMMU_GROUP + is created as a result, /dev/vfio/20 in this + case. + + + + + Change the ownership of the newly created device: + +&prompt.sudo;chown qemu.qemu /dev/vfio/DEVICE + + + + Now run the &vmguest; with the PCI device assigned. + +&prompt.sudo;qemu-system-ARCH [...] -device + vfio-pci,host=00:10.0,id=ID + + + + No hotplugging + + As of &productname; &productnumber;, hotplugging of PCI devices + passed to a &vmguest; via VFIO is not supported. + + + + You can find more detailed information on the + driver in the + /usr/src/linux/Documentation/vfio.txt file + (package kernel-source needs to be installed). + +
+ +
+ VirtFS: sharing directories between host and guests + + &vmguest;s normally run in a separate computing space—they are + provided their own memory range, dedicated CPUs, and file system space. + The ability to share parts of the &vmhost;'s file system makes the + virtualization environment more flexible by simplifying mutual data + exchange. Network file systems, such as CIFS and NFS, have been the + traditional way of sharing directories. But as they are not + specifically designed for virtualization purposes, they suffer from + major performance and feature issues. + + + &kvm; introduces a new optimized method called + VirtFS (sometimes called file system + pass-through). VirtFS uses a paravirtual file system driver, + which avoids converting the guest application file system operations + into block device operations, and then again into host file system + operations. + + + You typically use VirtFS for the following situations: + + + + + To access a shared directory from several guests, or to provide + guest-to-guest file system access. + + + + + To replace the virtual disk as the root file system to which the + guest's RAM disk connects during the guest boot process. + + + + + To provide storage services to different customers from a single + host file system in a cloud environment. + + + +
+ Implementation + + In &qemu;, the implementation of VirtFS is simplified by defining two + types of devices: + + + + + virtio-9p device which transports protocol + messages and data between the host and the guest. + + + + + virtio-fs (Virtual I/O File System) is a shared file + system mechanism designed to enable high-performance, secure file sharing + between a host system and virtual machines (VMs). + + + + + Exporting host's file system with VirtFS +&prompt.sudo;qemu-system-x86_64 [...] \ +-fsdev local,id=exp1,path=/tmp/,security_model=mapped \ +-device virtio-9p-pci,fsdev=exp1,mount_tag=v_tmp + + + + Identification of the file system to be exported. + + + + + File system path on the host to be exported. + + + + + Security model to be used—mapped keeps + the guest file system modes and permissions isolated from the + host, while none invokes a + pass-through security model in which permission + changes on the guest's files are reflected on the host as well. + + + + + The exported file system ID defined before with -fsdev + id= . + + + + + Mount tag used later on the guest to mount the exported file + system. + + + + + Such an exported file system can be mounted on the guest as + follows: + +&prompt.sudo;mount -t 9p -o trans=virtio v_tmp /mnt + + where v_tmp is the mount tag defined earlier + with -device mount_tag= and + /mnt is the mount point where you want to mount + the exported file system. + + +
+
+ +
+ KSM: sharing memory pages between guests + + Kernel Same Page Merging () is a + Linux kernel feature that merges identical memory pages from multiple + running processes into one memory region. Because &kvm; guests run as + processes under Linux, provides + the memory overcommit feature to hypervisors for more efficient use of + memory. Therefore, if you need to run multiple virtual machines on a + host with limited memory, may be + helpful to you. + + + stores its status information in + the files under the /sys/kernel/mm/ksm directory: + +&prompt.user;ls -1 /sys/kernel/mm/ksm +full_scans +merge_across_nodes +pages_shared +pages_sharing +pages_to_scan +pages_unshared +pages_volatile +run +sleep_millisecs + + For more information on the meaning of the + /sys/kernel/mm/ksm/* files, see + /usr/src/linux/Documentation/vm/ksm.txt (package + kernel-source). + + + To use , do the following. + + + + + Although &productnameshort; includes + support in the kernel, it is + disabled by default. To enable it, run the following command: + +&prompt.root;echo 1 > /sys/kernel/mm/ksm/run + + + + Now run several &vmguest;s under &kvm; and inspect the content of + files pages_sharing and + pages_shared, for example: + +&prompt.user;while [ 1 ]; do cat /sys/kernel/mm/ksm/pages_shared; sleep 1; done +13522 +13523 +13519 +13518 +13520 +13520 +13528 + + +
+
+
From da11de283e556c9ea85096f30138a602eca50ad3 Mon Sep 17 00:00:00 2001 From: aginies Date: Tue, 25 Nov 2025 15:02:18 +0100 Subject: [PATCH 14/35] move it to right place --- articles/virtualization.asm.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/articles/virtualization.asm.xml b/articles/virtualization.asm.xml index 44d0f576c..199889145 100644 --- a/articles/virtualization.asm.xml +++ b/articles/virtualization.asm.xml @@ -15,8 +15,8 @@ - + + @@ -131,6 +131,7 @@ + From 00b2807b3961f1346248b59a85272d4d832ef54a Mon Sep 17 00:00:00 2001 From: aginies Date: Wed, 26 Nov 2025 17:56:14 +0100 Subject: [PATCH 15/35] update virtiofs section --- references/qemu_host_installation.xml | 293 ++++++++++++++++---------- 1 file changed, 180 insertions(+), 113 deletions(-) diff --git a/references/qemu_host_installation.xml b/references/qemu_host_installation.xml index c089222e3..124932751 100644 --- a/references/qemu_host_installation.xml +++ b/references/qemu_host_installation.xml @@ -50,8 +50,8 @@ - install the patterns-server-kvm_server and - patterns-server-kvm_tools. Refer to + install the patterns-server-kvm_server and + patterns-server-kvm_tools. Refer to @@ -59,7 +59,7 @@ Create a Network Bridge. If you do not plan to dedicate an additional physical network card to your virtual guests, network bridge is a standard way to connect the guest - machines to the network. Refer to . + machines to the network. Refer to . @@ -73,12 +73,12 @@ Check if the module is loaded into memory: - &prompt.user;lsmod | grep kvm + &prompt.user;lsmod | grep kvm kvm_amd 237568 20 kvm 1376256 17 kvm_amd - Now the &kvm; host is ready to serve &kvm; &vmguest;s. + Now the &kvm; host is ready to serve &kvm; &vmguest;s. @@ -99,8 +99,8 @@ kvm 1376256 17 kvm_amd Examples included in this section assume basic knowledge of the qemu-system-ARCH command - line options. + line options. @@ -410,120 +410,187 @@ Virtual Function [8086:10ca] (rev 01)
- VirtFS: sharing directories between host and guests + VirtFS: sharing directories between host and guests + + &vmguest;s normally run in a separate computing space—they are + provided their own memory range, dedicated CPUs, and file system space. + The ability to share parts of the &vmhost;'s file system makes the + virtualization environment more flexible by simplifying mutual data + exchange. Network file systems, such as CIFS and NFS, have been the + traditional way of sharing directories. But as they are not + specifically designed for virtualization purposes, they suffer from + major performance and feature issues. + + - &vmguest;s normally run in a separate computing space—they are - provided their own memory range, dedicated CPUs, and file system space. - The ability to share parts of the &vmhost;'s file system makes the - virtualization environment more flexible by simplifying mutual data - exchange. Network file systems, such as CIFS and NFS, have been the - traditional way of sharing directories. But as they are not - specifically designed for virtualization purposes, they suffer from - major performance and feature issues. - - - &kvm; introduces a new optimized method called - VirtFS (sometimes called file system - pass-through). VirtFS uses a paravirtual file system driver, - which avoids converting the guest application file system operations - into block device operations, and then again into host file system - operations. + SELinux Requirement: For security_model=mapped, + configure SELinux context: + &prompt.root; semanage fcontext -a -t virtiofsd_t "/tmp(/.*)?" +&prompt.root; restorecon -Rv /tmp + + +
+ Host Configuration - You typically use VirtFS for the following situations: + There is nothing special to do with form the host side, be sure that + virtiofsd is installed. The &vmguest; xml libvirt + file should have a configuration like: - - - - To access a shared directory from several guests, or to provide - guest-to-guest file system access. - - - - - To replace the virtual disk as the root file system to which the - guest's RAM disk connects during the guest boot process. - - - - - To provide storage services to different customers from a single - host file system in a cloud environment. - - - -
- Implementation - - In &qemu;, the implementation of VirtFS is simplified by defining two - types of devices: - - - + +<filesystem type="virtiofs" accessmode="mapped"/> + <driver="virtiofs"/> + <source dir="/tmp"/> + <target dir="/mnt/hosttmp"/> + <alias name="fs0"/> + <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/> + </filesystem> +
+ Access Mode Options for virtiofs + + The accessmode attribute in the <filesystem> element + defines how guest file permissions map to host permissions. Only two values are valid: + +
+ virtiofs Access Mode Options + + + + + + + accessmode + Description + Security Implications + + + + + mapped + - virtio-9p device which transports protocol - messages and data between the host and the guest. + The default mode. Maps guest UIDs/GIDs to host UIDs/GIDs using a translation table. + Guest files appear as if owned by a dedicated "virtiofs" user on the host (typically UID 1000). - - - virtio-fs (Virtual I/O File System) is a shared file - system mechanism designed to enable high-performance, secure file sharing - between a host system and virtual machines (VMs). + Example: Guest user uid=1000 writes to host /tmp → + Host file appears as owned by virtiofsd user (not the guest user). - - - - Exporting host's file system with VirtFS -&prompt.sudo;qemu-system-x86_64 [...] \ --fsdev local,id=exp1,path=/tmp/,security_model=mapped \ --device virtio-9p-pci,fsdev=exp1,mount_tag=v_tmp - - - - Identification of the file system to be exported. - - - - - File system path on the host to be exported. - - - - - Security model to be used—mapped keeps - the guest file system modes and permissions isolated from the - host, while none invokes a - pass-through security model in which permission - changes on the guest's files are reflected on the host as well. - - - - - The exported file system ID defined before with -fsdev - id= . - - - - - Mount tag used later on the guest to mount the exported file - system. - - - - - Such an exported file system can be mounted on the guest as - follows: - -&prompt.sudo;mount -t 9p -o trans=virtio v_tmp /mnt - - where v_tmp is the mount tag defined earlier - with -device mount_tag= and - /mnt is the mount point where you want to mount - the exported file system. - - + + + + Recommended for all environments. + + + Prevents guest users from directly accessing host user accounts. + + + Does not require matching host users. + + + + + passthrough + + + Guest UIDs/GIDs are used directly on the host. The guest must have matching users on the host. + + + Example: Guest user uid=1000 writes to host /tmp → + Host file appears as owned by the user with uid=1000. + + + + + Only for trusted guests (e.g., same-tenant cloud environments). + + + Requires matching host users (e.g., host must have useradd -u 1000 guestuser). + + + Security risk: Compromised guest can directly access host user accounts. + + + + + none + + + Invalid value (common documentation error). + + + virtiofsd rejects this option with error: + security_model=none is not supported. + + + Always use mapped (default) or passthrough. + + + + + Causes immediate configuration failure. + + + + + +
+ + + Key Configuration Rule: + accessmode='mapped' must match the host's + security_model=mapped in virtiofsd. + Mismatched modes cause mount failures with errors like: + Failed to set security context: Operation not permitted. + + + +
+ Guest Configuration + + On the guest, load the kernel module and mount the file system: + + + Guest Mount Command + &prompt.root; modprobe virtiofs +&prompt.root; mount -t virtiofs -o dax,cache=none host_tmp /mnt/hosttmp + + Required options: + + + + virtiofs + + + dax: Enables direct access for performance (recommended) + + + cache=none: Matches host configuration to prevent data loss + + + + + + Guest Kernel Check: Verify module is loaded: + + &prompt.sudo; lsmod | grep virtiofs + +
+
+ Troubleshooting Common Issues + + + Permission denied: Check SELinux context (see ) + + + Mount fails with 9p: Verify you used -t virtiofs (not 9p) + + + Guest writes not syncing: Add cache=none to mount options + + +
From ebd157ede980f9aa99433f370c388c44bcc569db Mon Sep 17 00:00:00 2001 From: aginies Date: Wed, 26 Nov 2025 18:19:58 +0100 Subject: [PATCH 16/35] few fixes and add more info about virtiofs limitation (dax option) --- references/qemu_host_installation.xml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/references/qemu_host_installation.xml b/references/qemu_host_installation.xml index 124932751..dc806397d 100644 --- a/references/qemu_host_installation.xml +++ b/references/qemu_host_installation.xml @@ -441,7 +441,7 @@ Virtual Function [8086:10ca] (rev 01) <filesystem type="virtiofs" accessmode="mapped"/> <driver="virtiofs"/> <source dir="/tmp"/> - <target dir="/mnt/hosttmp"/> + <target dir="host_tmp"/> <alias name="fs0"/> <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/> </filesystem> @@ -553,20 +553,22 @@ Virtual Function [8086:10ca] (rev 01) Guest Mount Command - &prompt.root; modprobe virtiofs -&prompt.root; mount -t virtiofs -o dax,cache=none host_tmp /mnt/hosttmp + the virtiofs module should be loaded automatically, if not do: + &prompt.root; modprobe virtiofs + Now you can mount the target dir on your &vmguest;: + &prompt.root; mount -t virtiofs -o dax host_tmp /mnt/hosttmp - Required options: + Options: virtiofs - dax: Enables direct access for performance (recommended) + dax: Enables direct access for performance (recommended). dax can not be used with btrfs filesystem. - cache=none: Matches host configuration to prevent data loss + host_tmp: the target dir in the &vmguest; configuration. From 0e3f2d61321bb36cf15fa59a2b99a5c66ce71302 Mon Sep 17 00:00:00 2001 From: aginies Date: Wed, 26 Nov 2025 18:37:23 +0100 Subject: [PATCH 17/35] 9p is deprecated --- references/qemu_host_installation.xml | 31 ++++++++++++++++++++------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/references/qemu_host_installation.xml b/references/qemu_host_installation.xml index dc806397d..993b3bb82 100644 --- a/references/qemu_host_installation.xml +++ b/references/qemu_host_installation.xml @@ -439,12 +439,22 @@ Virtual Function [8086:10ca] (rev 01) <filesystem type="virtiofs" accessmode="mapped"/> - <driver="virtiofs"/> - <source dir="/tmp"/> - <target dir="host_tmp"/> - <alias name="fs0"/> - <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/> - </filesystem> + <driver="virtiofs"/> + <source dir="/tmp"/> + <target dir="host_tmp"/> + <alias name="fs0"/> + <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/> +</filesystem> + + 9p is deprecated + + 9p Protocolit is a legacy solution with critical flaws. Moreover + it incurs ~30-50% higher CPU overhead than virtiofs + for sequential I/O due to constant context switching between user and kernel space. + + &prompt.sudo; lsmod | grep virtiofs + +
Access Mode Options for virtiofs @@ -565,10 +575,10 @@ Virtual Function [8086:10ca] (rev 01) virtiofs - dax: Enables direct access for performance (recommended). dax can not be used with btrfs filesystem. + dax: Enables direct access for performance (recommended). dax can not be used with btrfs filesystem. - host_tmp: the target dir in the &vmguest; configuration. + host_tmp: the target dir in the &vmguest; configuration. @@ -579,6 +589,11 @@ Virtual Function [8086:10ca] (rev 01) &prompt.sudo; lsmod | grep virtiofs
+
+ Persistent mounts virtiofs across reboot + Simply add this line to /etc/fstab: + host_tmp /mnt/hosttmp virtiofs rw,nofail 0 0 +
Troubleshooting Common Issues From f0b90ff9ef1574ec9542d3355d2c511aa8925abc Mon Sep 17 00:00:00 2001 From: aginies Date: Wed, 26 Nov 2025 18:41:12 +0100 Subject: [PATCH 18/35] reorganise some info in the doc --- references/qemu_host_installation.xml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/references/qemu_host_installation.xml b/references/qemu_host_installation.xml index 993b3bb82..826cd3df7 100644 --- a/references/qemu_host_installation.xml +++ b/references/qemu_host_installation.xml @@ -452,7 +452,6 @@ Virtual Function [8086:10ca] (rev 01) it incurs ~30-50% higher CPU overhead than virtiofs for sequential I/O due to constant context switching between user and kernel space. - &prompt.sudo; lsmod | grep virtiofs
@@ -582,12 +581,6 @@ Virtual Function [8086:10ca] (rev 01) - - - Guest Kernel Check: Verify module is loaded: - - &prompt.sudo; lsmod | grep virtiofs -
Persistent mounts virtiofs across reboot @@ -597,6 +590,12 @@ Virtual Function [8086:10ca] (rev 01)
Troubleshooting Common Issues + + + Guest Kernel Check: verify the module virtiofs is loaded: + + &prompt.root; lsmod | grep virtiofs + Permission denied: Check SELinux context (see ) From 5ade731532389a4df3d1541e6c118c625645d358 Mon Sep 17 00:00:00 2001 From: aginies Date: Thu, 27 Nov 2025 12:05:06 +0100 Subject: [PATCH 19/35] remove this topic and merge missing content in the virtual-disk-cache-modes.xml --- articles/virtualization.asm.xml | 2 - references/vt_cachemodes.xml | 205 -------------------------------- 2 files changed, 207 deletions(-) delete mode 100644 references/vt_cachemodes.xml diff --git a/articles/virtualization.asm.xml b/articles/virtualization.asm.xml index 199889145..0e0da8d29 100644 --- a/articles/virtualization.asm.xml +++ b/articles/virtualization.asm.xml @@ -28,7 +28,6 @@ - @@ -142,7 +141,6 @@ - diff --git a/references/vt_cachemodes.xml b/references/vt_cachemodes.xml deleted file mode 100644 index 7568fedbc..000000000 --- a/references/vt_cachemodes.xml +++ /dev/null @@ -1,205 +0,0 @@ - - - %entities; -]> - - - Disk cache modes - - - - yes - - - -
- What is a disk cache? - - - A disk cache is a memory used to speed up the process of storing and - accessing data from the hard disk. Physical hard disks have their cache - integrated as a standard feature. For virtual disks, the cache uses - &vmhost;'s memory and you can fine-tune its behavior, for example, by - setting its type. - -
-
- How does a disk cache work? - - - Normally, a disk cache stores the most recent and frequently used - programs and data. When a user or program requests data, the operating - system first checks the disk cache. If the data is there, the operating - system quickly delivers the data to the program instead of re-reading the - data from the disk. - - -
- Caching mechanism - - - - - - - - -
-
-
- Benefits of disk caching - - - Caching of virtual disk devices affects the overall performance of guest - machines. You can improve the performance by optimizing the combination - of cache mode, disk image format, and storage subsystem. - -
-
- Virtual disk cache modes - - - If you do not specify a cache mode, writeback is used - by default. Each guest disk can use one of the following cache modes: - - - - - writeback - - - writeback uses the host page cache. Writes are - reported to the guest as completed when they are placed in the host - cache. Cache management handles commitment to the storage device. - The guest's virtual storage adapter is informed of the - writeback cache and therefore expected to send - flush commands as needed to manage data integrity. - - - - - writethrough - - - Writes are reported as completed only when the data has been - committed to the storage device. The guest's virtual storage - adapter is informed that there is no writeback - cache, so the guest does not need to send flush commands to manage - data integrity. - - - - - none - - - The host cache is bypassed, and reads and writes happen directly - between the hypervisor and the storage device. Because the actual - storage device may report a write as completed when the data is - still placed in its write queue only, the guest's virtual storage - adapter is informed that there is a writeback - cache. This mode is equivalent to direct access to the host's disk. - - - - - unsafe - - - Similar to the writeback mode, except all - flush commands from the guests are ignored. Using this mode implies - that the user prioritizes performance gain over the risk of data - loss in case of a host failure. This mode can be useful during - guest installation, but not for production workloads. - - - - - directsync - - - Writes are reported as completed only when the data has been - committed to the storage device and the host cache is bypassed. - Similar to writethrough, this mode can be - useful for guests that do not send flushes when needed. - - - - -
-
- Cache modes and data integrity - - - - writethrough, none, directsync - - - These modes are considered to be safest when the guest operating - system uses flushes as needed. For unsafe or unstable guests, use - writethough or - directsync. - - - - - writeback - - - This mode informs the guest of the presence of a write cache, and - it relies on the guest to send flush commands as needed to maintain - data integrity within its disk image. This mode exposes the guest - to data loss if the host fails. The reason is the gap between the - moment a write is reported as completed and the time the write - being committed to the storage device. - - - - - unsafe - - - This mode is similar to writeback caching, - except the guest flush commands are ignored. This means a higher - risk of data loss caused by host failure. - - - - -
-
- Cache modes and live migration - - - The caching of storage data restricts the configurations that support - live migration. Currently, only raw and - qcow2 image formats can be used for live migration. If - a clustered file system is used, all cache modes support live migration. - Otherwise the only cache mode that supports live migration on read/write - shared storage is none. - - - - The &libvirt; management layer includes checks for migration - compatibility based on several factors. If the guest storage is hosted on - a clustered file system, is read-only, or is marked shareable, then the - cache mode is ignored when determining if migration can be allowed. - Otherwise &libvirt; does not allow migration unless the cache mode is set - to none. However, this restriction can be overridden - with the --unsafe option to the migration APIs, which is - also supported by virsh. For example: - - -&prompt.user;virsh migrate --live --unsafe - - - - The cache mode none is required for the AIO mode - setting native. If another cache mode is used, the - AIO mode is silently switched back to the default - threads. - - -
-
From 7e2351bf00332dc73aaca4d41ade3ee31c9a96b7 Mon Sep 17 00:00:00 2001 From: aginies Date: Thu, 27 Nov 2025 12:05:58 +0100 Subject: [PATCH 20/35] add some more info about disk cache --- references/virtual-disk-cache-modes.xml | 39 +++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/references/virtual-disk-cache-modes.xml b/references/virtual-disk-cache-modes.xml index 5dad3baa9..7830dbbdc 100644 --- a/references/virtual-disk-cache-modes.xml +++ b/references/virtual-disk-cache-modes.xml @@ -34,6 +34,45 @@ If you do not specify a cache mode, writeback is used by default. +
+ What is a disk cache? + + A disk cache is a memory used to speed up the process of storing and + accessing data from the hard disk. Physical hard disks have their cache + integrated as a standard feature. For virtual disks, the cache uses + &vmhost;'s memory and you can fine-tune its behavior, for example, by + setting its type. + +
+
+ How does a disk cache work? + + Normally, a disk cache stores the most recent and frequently used + programs and data. When a user or program requests data, the operating + system first checks the disk cache. If the data is there, the operating + system quickly delivers the data to the program instead of re-reading the + data from the disk. + +
+ Caching mechanism + + + + + + + + +
+
+
+ Benefits of disk caching + + Caching of virtual disk devices affects the overall performance of guest + machines. You can improve the performance by optimizing the combination + of cache mode, disk image format, and storage subsystem. + +
Virtual disk cache modes From 90190f61fad2a9175300db76cb86126a4f7c5915 Mon Sep 17 00:00:00 2001 From: aginies Date: Thu, 27 Nov 2025 15:53:48 +0100 Subject: [PATCH 21/35] main move to article. Still some stuff to fix --- DC-SLES-virtualization-io | 10 ++ DC-SLES-virtualization-spice-removal | 10 ++ DC-SLES-virtualization-support | 10 ++ articles/virtualization-io.asm.xml | 108 ++++++++++++++++++ articles/virtualization-spice-removal.asm.xml | 108 ++++++++++++++++++ articles/virtualization-support.asm.xml | 108 ++++++++++++++++++ articles/virtualization.asm.xml | 10 +- .../{vt_io.xml => virtualization-io.xml} | 11 +- ...l.xml => virtualization-spice-removal.xml} | 0 9 files changed, 361 insertions(+), 14 deletions(-) create mode 100644 DC-SLES-virtualization-io create mode 100644 DC-SLES-virtualization-spice-removal create mode 100644 DC-SLES-virtualization-support create mode 100644 articles/virtualization-io.asm.xml create mode 100644 articles/virtualization-spice-removal.asm.xml create mode 100644 articles/virtualization-support.asm.xml rename references/{vt_io.xml => virtualization-io.xml} (96%) rename references/{spice_removal.xml => virtualization-spice-removal.xml} (100%) diff --git a/DC-SLES-virtualization-io b/DC-SLES-virtualization-io new file mode 100644 index 000000000..222a9c0a5 --- /dev/null +++ b/DC-SLES-virtualization-io @@ -0,0 +1,10 @@ +MAIN="virtualization-io.asm.xml" +SRC_DIR="articles" +IMG_SRC_DIR="images" +PROFCONDITION="suse-product" +PROFOS="sles" +#PROFCONDITION="suse-product;beta" +#PROFCONDITION="community-project" + +STYLEROOT="/usr/share/xml/docbook/stylesheet/suse2022-ns" +FALLBACK_STYLEROOT="/usr/share/xml/docbook/stylesheet/suse2022-ns" diff --git a/DC-SLES-virtualization-spice-removal b/DC-SLES-virtualization-spice-removal new file mode 100644 index 000000000..0bd7bb003 --- /dev/null +++ b/DC-SLES-virtualization-spice-removal @@ -0,0 +1,10 @@ +MAIN="virtualization-spice-removal.asm.xml" +SRC_DIR="articles" +IMG_SRC_DIR="images" +PROFCONDITION="suse-product" +PROFOS="sles" +#PROFCONDITION="suse-product;beta" +#PROFCONDITION="community-project" + +STYLEROOT="/usr/share/xml/docbook/stylesheet/suse2022-ns" +FALLBACK_STYLEROOT="/usr/share/xml/docbook/stylesheet/suse2022-ns" diff --git a/DC-SLES-virtualization-support b/DC-SLES-virtualization-support new file mode 100644 index 000000000..62d9d19c2 --- /dev/null +++ b/DC-SLES-virtualization-support @@ -0,0 +1,10 @@ +MAIN="virtualization-support.asm.xml" +SRC_DIR="articles" +IMG_SRC_DIR="images" +PROFCONDITION="suse-product" +PROFOS="sles" +#PROFCONDITION="suse-product;beta" +#PROFCONDITION="community-project" + +STYLEROOT="/usr/share/xml/docbook/stylesheet/suse2022-ns" +FALLBACK_STYLEROOT="/usr/share/xml/docbook/stylesheet/suse2022-ns" diff --git a/articles/virtualization-io.asm.xml b/articles/virtualization-io.asm.xml new file mode 100644 index 000000000..3a1412af1 --- /dev/null +++ b/articles/virtualization-io.asm.xml @@ -0,0 +1,108 @@ + + + + %entities; +]> + + + + + + + Legal Notice + + + GNU Free Documentation License + + + + + + Virtualization + + 2025-11-27 + + + Initial version + + + + + + + + + + Products & Solutions + + + + + Virtualization + + + + + + https://bugzilla.suse.com/enter_bug.cgi + Documentation + SUSE Linux Enterprise Server 16.0 + souvik.sarkar@suse.com + + yes + + + + + &x86-64; + &power; + + + + + &productname; + + + + Introduction to virtualization IO + Learn about the basic concepts of virtualization IO. + + + I/O virtualization enables virtual machines (VMs) to efficiently interact with hardware devices (e.g., network cards, storage) via the hypervisor. + + + + + WHAT? + + + I/O virtualization is the mechanism enabling &vmguest; to interact with physical hardware devices (e.g., network interfaces, storage controllers) through a hypervisor, optimizing resource usage while managing performance trade-offs between emulation, direct assignment, and hardware-assisted techniques. + + + + + WHY? + + + Full emulation I/O latency overhead and consumes significant CPU resources, making hardware-assisted techniques (VFIO/SR-IOV) essential for latency-sensitive workloads like high-performance networking and storage. + + + + + + + + + + + + + + diff --git a/articles/virtualization-spice-removal.asm.xml b/articles/virtualization-spice-removal.asm.xml new file mode 100644 index 000000000..4aebf5466 --- /dev/null +++ b/articles/virtualization-spice-removal.asm.xml @@ -0,0 +1,108 @@ + + + + %entities; +]> + + + + + + + Legal Notice + + + GNU Free Documentation License + + + + + + Virtualization + + 2025-11-27 + + + Initial version + + + + + + + + + + Products & Solutions + + + + + Virtualization + + + + + + https://bugzilla.suse.com/enter_bug.cgi + Documentation + SUSE Linux Enterprise Server 16.0 + souvik.sarkar@suse.com + + yes + + + + + &x86-64; + &power; + + + + + &productname; + + + + Spice Removal in Virtualization Toolstack + Migration guidance from Spice to alternative virtualization protocols. + + + Migration path from Spice to alternative virtualization protocols in SUSE product. + + + + + WHAT? + + + SUSE Linux Enterprise provides comprehensive virtualization support through KVM with alternative protocols replacing Spice, enabling efficient resource utilization and scalable cloud deployments without Spice dependency. This includes migration paths and alternative solutions for Spice-based virtualization. + + + + + WHY? + + + Migration from Spice to alternative virtualization protocols enables improved security, better performance, enhanced compatibility, and reduced maintenance overhead for enterprise cloud and containerized applications. The transition addresses deprecated technology concerns and provides modern alternatives for virtual desktop and console access. + + + + + + + + + + + + + + diff --git a/articles/virtualization-support.asm.xml b/articles/virtualization-support.asm.xml new file mode 100644 index 000000000..e33719369 --- /dev/null +++ b/articles/virtualization-support.asm.xml @@ -0,0 +1,108 @@ + + + + %entities; +]> + + + + + + + Legal Notice + + + GNU Free Documentation License + + + + + + Virtualization + + 2025-11-27 + + + Initial version + + + + + + + + + + Products & Solutions + + + + + Virtualization + + + + + + https://bugzilla.suse.com/enter_bug.cgi + Documentation + SUSE Linux Enterprise Server 16.0 + souvik.sarkar@suse.com + + yes + + + + + &x86-64; + &power; + + + + + &productname; + + + + Virtualization support + Support statement of virtualization. + + + What is the current supprot of virtualization toolstack in the SUSE product. + + + + + WHAT? + + + SUSE Linux Enterprise provides comprehensive virtualization support through KVM, and third party hypervisor as guest enabling efficient resource utilization and scalable cloud deployments. + + + + + WHY? + + + Virtualization enables hardware consolidation, improved resource utilization, reduced operational costs, and enhanced flexibility for enterprise cloud and containerized applications. + + + + + + + + + + + + + + diff --git a/articles/virtualization.asm.xml b/articles/virtualization.asm.xml index 0e0da8d29..def69d637 100644 --- a/articles/virtualization.asm.xml +++ b/articles/virtualization.asm.xml @@ -15,9 +15,8 @@ - - + @@ -27,8 +26,6 @@ - - @@ -44,7 +41,7 @@ Virtualization - 2025-11-04 + 2025-11-27 Initial version @@ -129,7 +126,6 @@ - @@ -140,8 +136,6 @@ - - diff --git a/references/vt_io.xml b/references/virtualization-io.xml similarity index 96% rename from references/vt_io.xml rename to references/virtualization-io.xml index 81a0680af..932de175a 100644 --- a/references/vt_io.xml +++ b/references/virtualization-io.xml @@ -4,7 +4,7 @@ %entities; ]> -See for a list of guest operating systems supporting - paravirtualization. + paravirtualization.--> @@ -77,9 +77,8 @@ VFIO stands for Virtual Function I/O and is a new user-level driver framework for Linux. It replaces the traditional &kvm; &pciback; device assignment. The VFIO driver exposes direct device access - to user space in a secure memory - () protected environment. + to user space in a secure memory Input/Output Memory Management Unit (IOMMU) + protected environment. With VFIO, a &vmguest; can directly access hardware devices on the &vmhost; (pass-through), avoiding performance issues caused by emulation in performance critical paths. This method does not allow to share diff --git a/references/spice_removal.xml b/references/virtualization-spice-removal.xml similarity index 100% rename from references/spice_removal.xml rename to references/virtualization-spice-removal.xml From b80e9baf2bdddc5efd0edeb405df303fcd46bcbb Mon Sep 17 00:00:00 2001 From: aginies Date: Thu, 27 Nov 2025 15:58:52 +0100 Subject: [PATCH 22/35] remove as the info is already in concept.... --- references/virtual-disk-cache-modes.xml | 39 ------------------------- 1 file changed, 39 deletions(-) diff --git a/references/virtual-disk-cache-modes.xml b/references/virtual-disk-cache-modes.xml index 7830dbbdc..5dad3baa9 100644 --- a/references/virtual-disk-cache-modes.xml +++ b/references/virtual-disk-cache-modes.xml @@ -34,45 +34,6 @@ If you do not specify a cache mode, writeback is used by default. -
- What is a disk cache? - - A disk cache is a memory used to speed up the process of storing and - accessing data from the hard disk. Physical hard disks have their cache - integrated as a standard feature. For virtual disks, the cache uses - &vmhost;'s memory and you can fine-tune its behavior, for example, by - setting its type. - -
-
- How does a disk cache work? - - Normally, a disk cache stores the most recent and frequently used - programs and data. When a user or program requests data, the operating - system first checks the disk cache. If the data is there, the operating - system quickly delivers the data to the program instead of re-reading the - data from the disk. - -
- Caching mechanism - - - - - - - - -
-
-
- Benefits of disk caching - - Caching of virtual disk devices affects the overall performance of guest - machines. You can improve the performance by optimizing the combination - of cache mode, disk image format, and storage subsystem. - -
Virtual disk cache modes From 3a913e150c06373a4fbe628591e054cafb8e04da Mon Sep 17 00:00:00 2001 From: aginies Date: Thu, 27 Nov 2025 16:01:43 +0100 Subject: [PATCH 23/35] use same name prefix for articles --- DC-SLES-virtualization-disk-cache | 10 ++++++++++ ...igure.asm.xml => virtualization-disk-cache.asm.xml} | 0 2 files changed, 10 insertions(+) create mode 100644 DC-SLES-virtualization-disk-cache rename articles/{virtual-disk-cache-mode-configure.asm.xml => virtualization-disk-cache.asm.xml} (100%) diff --git a/DC-SLES-virtualization-disk-cache b/DC-SLES-virtualization-disk-cache new file mode 100644 index 000000000..42d944dd4 --- /dev/null +++ b/DC-SLES-virtualization-disk-cache @@ -0,0 +1,10 @@ +MAIN="virtualization-disk-cache.asm.xml" +SRC_DIR="articles" +IMG_SRC_DIR="images" +PROFCONDITION="suse-product" +PROFOS="sles" +#PROFCONDITION="suse-product;beta" +#PROFCONDITION="community-project" + +STYLEROOT="/usr/share/xml/docbook/stylesheet/suse2022-ns" +FALLBACK_STYLEROOT="/usr/share/xml/docbook/stylesheet/suse2022-ns" diff --git a/articles/virtual-disk-cache-mode-configure.asm.xml b/articles/virtualization-disk-cache.asm.xml similarity index 100% rename from articles/virtual-disk-cache-mode-configure.asm.xml rename to articles/virtualization-disk-cache.asm.xml From 225d5ab9adafe9b6423ff7693f8ca4fae20b5964 Mon Sep 17 00:00:00 2001 From: aginies Date: Tue, 2 Dec 2025 10:26:28 +0100 Subject: [PATCH 24/35] virtualization-libvirt articles --- DC-SLES-virtualization-libvirt | 10 ++ articles/virtualization-libvirt.asm.xml | 130 +++++++++++++++++++++ references/libvirt_configuration_virsh.xml | 4 +- references/libvirt_guest_installation.xml | 4 +- 4 files changed, 144 insertions(+), 4 deletions(-) create mode 100644 DC-SLES-virtualization-libvirt create mode 100644 articles/virtualization-libvirt.asm.xml diff --git a/DC-SLES-virtualization-libvirt b/DC-SLES-virtualization-libvirt new file mode 100644 index 000000000..5814ebc27 --- /dev/null +++ b/DC-SLES-virtualization-libvirt @@ -0,0 +1,10 @@ +MAIN="virtualization-libvirt.asm.xml" +SRC_DIR="articles" +IMG_SRC_DIR="images" +PROFCONDITION="suse-product" +PROFOS="sles" +#PROFCONDITION="suse-product;beta" +#PROFCONDITION="community-project" + +STYLEROOT="/usr/share/xml/docbook/stylesheet/suse2022-ns" +FALLBACK_STYLEROOT="/usr/share/xml/docbook/stylesheet/suse2022-ns" diff --git a/articles/virtualization-libvirt.asm.xml b/articles/virtualization-libvirt.asm.xml new file mode 100644 index 000000000..e2d886e94 --- /dev/null +++ b/articles/virtualization-libvirt.asm.xml @@ -0,0 +1,130 @@ + + + + %entities; +]> + + + + + + + + + + + + + + + + + + Legal Notice + + + GNU Free Documentation License + + + + + + Virtualization + + 2025-11-27 + + + Initial version + + + + + + + + + + Products & Solutions + + + + + Virtualization + + + + + + https://bugzilla.suse.com/enter_bug.cgi + Documentation + SUSE Linux Enterprise Server 16.0 + souvik.sarkar@suse.com + + yes + + + + + &x86-64; + &power; + + + + + &productname; + + + + Introduction to libvirt + Manage virtualization platforms (KVM, QEMU) with a unified API. + + + Libvirt provides a consistent management interface for virtualization platforms, eliminating vendor-specific tool complexity. + + + + + WHAT? + + + Libvirt is a software toolkit that provides a consistent API for managing virtual machines across multiple hypervisor platforms (KVM, QEMU). + + + + + WHY? + + + Eliminates operational complexity of managing vendor-specific tools + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/references/libvirt_configuration_virsh.xml b/references/libvirt_configuration_virsh.xml index b8e02ab4b..3a2b2d29f 100644 --- a/references/libvirt_configuration_virsh.xml +++ b/references/libvirt_configuration_virsh.xml @@ -909,9 +909,9 @@ Bus 001 Device 003: ID 0557:2221 ATEN Internati An AMD64/IntelĀ 64 host supporting hardware virtualization (AMD-V or - Intel VT-x), see + Intel VT-x) diff --git a/references/libvirt_guest_installation.xml b/references/libvirt_guest_installation.xml index 77799faf1..cc087f1da 100644 --- a/references/libvirt_guest_installation.xml +++ b/references/libvirt_guest_installation.xml @@ -16,8 +16,8 @@ A &vmguest; consists of an image containing an operating system and data files and a configuration file describing the &vmguest;'s virtual hardware resources. &vmguest;s are hosted on and controlled by the &vmhost;. This section provides generalized instructions for - installing a &vmguest;. For a list of supported &vmguest;s refer to - . + installing a &vmguest;. Virtual machines have few if any requirements above those required to run the operating system. From befd60448afc0ee373fa5b632c0e936e710300b8 Mon Sep 17 00:00:00 2001 From: aginies Date: Tue, 2 Dec 2025 10:38:28 +0100 Subject: [PATCH 25/35] cleanup --- articles/virtualization.asm.xml | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/articles/virtualization.asm.xml b/articles/virtualization.asm.xml index def69d637..b964da0ab 100644 --- a/articles/virtualization.asm.xml +++ b/articles/virtualization.asm.xml @@ -17,17 +17,9 @@ - - - - - - - - - + Legal Notice @@ -126,16 +118,6 @@ - - - - - - - - - - From 8e7a57a4560bb69d8b05549b28b99b8b4c548d70 Mon Sep 17 00:00:00 2001 From: aginies Date: Tue, 2 Dec 2025 11:10:00 +0100 Subject: [PATCH 26/35] remove unwanted reference --- articles/virtualization.asm.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/articles/virtualization.asm.xml b/articles/virtualization.asm.xml index b964da0ab..7471d437e 100644 --- a/articles/virtualization.asm.xml +++ b/articles/virtualization.asm.xml @@ -15,7 +15,6 @@ - From 42326308cf2cdff7e67832a0650f57fdf8b29af7 Mon Sep 17 00:00:00 2001 From: aginies Date: Tue, 2 Dec 2025 11:48:11 +0100 Subject: [PATCH 27/35] prepare qemu articles --- DC-SLES-virtualization-qemu | 10 + articles/virtualization-qemu.asm.xml | 131 ++ images/qemu_sles_vnc.png | Bin 0 -> 27492 bytes images/qemu_vnc_pwd.png | Bin 0 -> 34173 bytes images/qemu_win_sles.png | Bin 0 -> 110857 bytes references/qemu_guest_installation.xml | 1061 ++++++++++++ references/qemu_host_installation.xml | 10 +- references/qemu_monitor.xml | 1110 +++++++++++++ references/qemu_running_vms_qemukvm.xml | 1979 +++++++++++++++++++++++ 9 files changed, 4296 insertions(+), 5 deletions(-) create mode 100644 DC-SLES-virtualization-qemu create mode 100644 articles/virtualization-qemu.asm.xml create mode 100644 images/qemu_sles_vnc.png create mode 100644 images/qemu_vnc_pwd.png create mode 100644 images/qemu_win_sles.png create mode 100644 references/qemu_guest_installation.xml create mode 100644 references/qemu_monitor.xml create mode 100644 references/qemu_running_vms_qemukvm.xml diff --git a/DC-SLES-virtualization-qemu b/DC-SLES-virtualization-qemu new file mode 100644 index 000000000..b469cccb8 --- /dev/null +++ b/DC-SLES-virtualization-qemu @@ -0,0 +1,10 @@ +MAIN="virtualization-qemu.asm.xml" +SRC_DIR="articles" +IMG_SRC_DIR="images" +PROFCONDITION="suse-product" +PROFOS="sles" +#PROFCONDITION="suse-product;beta" +#PROFCONDITION="community-project" + +STYLEROOT="/usr/share/xml/docbook/stylesheet/suse2022-ns" +FALLBACK_STYLEROOT="/usr/share/xml/docbook/stylesheet/suse2022-ns" diff --git a/articles/virtualization-qemu.asm.xml b/articles/virtualization-qemu.asm.xml new file mode 100644 index 000000000..f7c0269b6 --- /dev/null +++ b/articles/virtualization-qemu.asm.xml @@ -0,0 +1,131 @@ + + + + %entities; +]> + + + + + + + + + + + + + Legal Notice + + + GNU Free Documentation License + + + + + + Virtualization + + 2025-11-27 + + + Initial version + + + + + + + + + + Products & Solutions + + + + + Virtualization + + + + + + https://bugzilla.suse.com/enter_bug.cgi + Documentation + SUSE Linux Enterprise Server 16.0 + souvik.sarkar@suse.com + + yes + + + + + &x86-64; + &power; + + + + + &productname; + + + + Introduction to virtualization + Learn about the basic concepts of virtualization. + + + By means of virtualization, you can run multiple virtual machines on a single bare-metal host to save resources + + + + + WHAT? + + + By means of virtualization, you can run multiple virtual machines on a single + bare-metal host. + + + + + WHY? + + + Sharing host hardware between multiple virtualized guests significantly saves + resources. + + + + + EFFORT + + + It takes less than 15 minutes of your time to understand the concept of + virtualization. + + + + + + + + + + + + + + + + + + + + diff --git a/images/qemu_sles_vnc.png b/images/qemu_sles_vnc.png new file mode 100644 index 0000000000000000000000000000000000000000..d5ce2f93cc7f8d7f9e05d9052b2d1011143771af GIT binary patch literal 27492 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≪;vYlJQ9JDhc*Z?syfHS&c3Sh@s(; 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 literal 0 HcmV?d00001 diff --git a/images/qemu_vnc_pwd.png b/images/qemu_vnc_pwd.png new file mode 100644 index 0000000000000000000000000000000000000000..9eb7519e64886080a994f0a750bebf4a83874539 GIT binary patch literal 34173 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 N&t#OOOC?|X{V(v@vlRdU literal 0 HcmV?d00001 diff --git a/images/qemu_win_sles.png b/images/qemu_win_sles.png new file mode 100644 index 0000000000000000000000000000000000000000..2226db2c1e8364de6ffebdca502fb825c87ffac0 GIT binary patch literal 110857 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�t}k0S{NuXn_?=EnuwB!8&t9cr)G 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

cxtFm?+~6o0PlN_V9r)G< z%D#zA+%c`ATF|Vnrowl<8)gHqQyME5!~|3+8(Bj?XqDC)X zEC32&RUZojioTa6-CN|E*5gCo=WiU|4+-#E@&$bLU~v~ z9xO0Z0Qu?DElw5C&R=GNDbJi|wLGo62UZ|=R(ny#3bpYya!zMrO%;!F0DECP6(u>z0l znlz?x;q{}+Z6DV|L0_?BVaQmGG#Ggl%jnG?Gxm*&w|OqxtYIzAfyZ$7rcW^(4BD-p zJTvI>v$N+klV5(SCEBnYL!@qT!d-rgcilLDv0+%?qavf0#%F_8WWPF>X!_HDsq3mFG$K8R2kXgMbn5~{HIvK9z;1$`DpZJ@k57Q>R&tucvNGC&T=W_kG5h47h7d4M>XnHLkc9XGCsp7TFf_7a;UMask5555oYm)Uq;sCi5BOlGtxs;OD|sRDRhw`+cLD79w@ zWRejrEj1T|+6Jg`Y!diaZj&0`o(5^8_W~^TP3RYBoDpn2m7V+<|xoH2=4jmbXr2tI}cZE9kzv_!2JkW6KNlzknxeQ=)bNzo&0`D2HaM?W|sUpwQ1a zh;c#^uDq1;tbg9{bLSz<$EUV&_gA06PG8}ji%*G9O8S(7#XIp7h(BHKO(GII4-xOE zBlvLkDGAKXoRE^@Ne6*&N3T3>VfH#cE0{~l%>@nYjgw6q+ZfoKR+ozn i1Zf0v<(~>x`Ud8Zlct(F(oew>h_r + + %entities; +]> + + + Guest installation + + + + yes + + + + 2025-12-02 + + + + + + + + The libvirt-based tools such as + virt-manager and virt-install offer + convenient interfaces to set up and manage virtual machines. They act as a + kind of wrapper for the qemu-system-ARCHcommand. + However, it is also possible to use qemu-system-ARCH + directly without using + libvirt-based tools. + + + <command>qemu-system-ARCH</command> and libvirt + + s created with + qemu-system-ARCH are not visible for the + libvirt-based tools. + + +

+ Basic installation with <command>qemu-system-ARCH</command> + + + In the following example, a virtual machine for a &sls; 11 installation + is created. For detailed information on the commands, refer to the + respective man pages. + + + + If you do not already have an image of a system that you want to run in a + virtualized environment, you need to create one from the installation + media. In such case, you need to prepare a hard disk image, and obtain an + image of the installation media or the media itself. + + + + Create a hard disk with qemu-img. + + +&prompt.user;qemu-img create -f raw /images/sles/hda 8G + + + + + The subcommand tells + qemu-img to create a new image. + + + + + Specify the disk's format with the parameter. + + + + + The full path to the image file. + + + + + The size of the image, 8 GB in this case. The image is created + as a that grows when + the disk is filled with data. The specified size defines the maximum + size to which the image file can grow. + + + + + + After at least one hard disk image is created, you can set up a virtual + machine with qemu-system-ARCH that boots into the + installation system: + + +&prompt.root;qemu-system-x86_64 -name "sles"-machine accel=kvm -M pc -m 768 \ +-smp 2 -boot d \ +-drive file=/images/sles/hda,if=virtio,index=0,media=disk,format=raw \ +-drive file=/isos/&installmedia;,index=1,media=cdrom \ +-net nic,model=virtio,macaddr=52:54:00:05:11:11 -net user \ +-vga cirrus -balloon virtio + + + + + Name of the virtual machine that is displayed in the window caption + and be used for the VNC server. This name must be unique. + + + + + Specifies the machine type. Use qemu-system-ARCH + to display a list of valid parameters. + pc is the default Standard PC. + + + + + Maximum amount of memory for the virtual machine. + + + + + Defines an SMP system with two processors. + + + + + Specifies the boot order. Valid values are a, + b (floppy 1 and 2), c (first + hard disk), d (first CD-ROM), or n to + p (Ether-boot from network adapter 1-3). Defaults + to c. + + + + + Defines the first (index=0) hard disk. It is + accessed as a paravirtualized (if=virtio) drive in + raw format. + + + + + The second (index=1) image drive acts as a CD-ROM. + + + + + Defines a paravirtualized (model=virtio) network + adapter with the MAC address 52:54:00:05:11:11. Be + sure to specify a unique MAC address, otherwise a network conflict + may occur. + + + + + Specifies the graphic card. If you specify none, + the graphic card is disabled. + + + + + Defines the paravirtualized balloon device that allows to dynamically + change the amount of memory (up to the maximum value specified with + the parameter ). + + + + + + After the installation of the guest operating system finishes, you can + start the related virtual machine without the need to specify the CD-ROM + device: + + +&prompt.root;qemu-system-x86_64 -name "sles" -machine type=pc,accel=kvm -m 768 \ +-smp 2 -boot c \ +-drive file=/images/sles/hda,if=virtio,index=0,media=disk,format=raw \ +-net nic,model=virtio,macaddr=52:54:00:05:11:11 \ +-vga cirrus -balloon virtio + +
+
+ Managing disk images with <command>qemu-img</command> + + + In the previous section (see + ), we used the + qemu-img command to create an image of a hard disk. + You can, however, use qemu-img for general disk image + manipulation. This section introduces qemu-img + subcommands to help manage the disk images flexibly. + + +
+ General information on qemu-img invocation + + qemu-img uses subcommands (like + zypper does) to do specific tasks. Each subcommand + understands a different set of options. Certain options are general and + used by more of these subcommands, while others are unique to the + related subcommand. See the qemu-img man page (man 1 + qemu-img) for a list of all supported options. + qemu-img uses the following general syntax: + +&prompt.user;qemu-img subcommand [options] + + and supports the following subcommands: + + + + create + + + Creates a new disk image on the file system. + + + + + check + + + Checks an existing disk image for errors. + + + + + compare + + + Check if two images have the same content. + + + + + map + + + Dumps the metadata of the image file name and its backing file + chain. + + + + + amend + + + Amends the image format specific options for the image file name. + + + + + convert + + + Converts an existing disk image to a new one in a different + format. + + + + + info + + + Displays information about the relevant disk image. + + + + + snapshot + + + Manages snapshots of existing disk images. + + + + + commit + + + Applies changes made to an existing disk image. + + + + + rebase + + + Creates a new base image based on an existing image. + + + + + resize + + + Increases or decreases the size of an existing image. + + + + +
+ +
+ Creating, converting, and checking disk images + + This section describes how to create disk images, check their + condition, convert a disk image from one format to another, and get + detailed information about a particular disk image. + +
+ qemu-img create + + Use qemu-img create to create a new disk image for + your &vmguest; operating system. The command uses the following + syntax: + +&prompt.user;qemu-img create -f fmt -o options fname size + + + + The format of the target image. Supported formats are + raw and qcow2. + + + + + Certain image formats support additional options to be passed on the + command line. You can specify them here with the + -o option. The raw image + format supports only the size option, so it is + possible to insert -o size=8G instead of + adding the size option at the end of the command. + + + + + Path to the target disk image to be created. + + + + + Size of the target disk image (if not already specified with the + -o size=<image_size> option. Optional + suffixes for the image size are K (kilobyte), + M (megabyte), G (gigabyte), + or T (terabyte). + + + + + To create a new disk image sles.raw in the + directory /images growing up to a maximum size + of 4 GB, run the following command: + +&prompt.user;qemu-img create -f raw -o size=4G /images/sles.raw +Formatting '/images/sles.raw', fmt=raw size=4294967296 + +&prompt.user;ls -l /images/sles.raw +-rw-r--r-- 1 tux users 4294967296 Nov 15 15:56 /images/sles.raw + +&prompt.user;qemu-img info /images/sles.raw +image: /images/sles11.raw +file format: raw +virtual size: 4.0G (4294967296 bytes) +disk size: 0 + + + As you can see, the virtual size of the newly + created image is 4 GB, but the actual reported disk size is 0 as no + data has been written to the image yet. + + + &vmguest; images on the Btrfs file system + + If you need to create a disk image on the Btrfs file system, you + can use to reduce the performance + overhead created by the copy-on-write feature of Btrfs: + +&prompt.user;qemu-img create -o nocow=on test.img 8G + + If you, however, want to use copy-on-write, for example, for + creating snapshots or sharing them across virtual machines, then + leave the command line without the option. + + +
+
+ qemu-img convert + + Use qemu-img convert to convert disk images to + another format. To get a complete list of image formats supported by + &qemu;, run qemu-img and look + at the last line of the output. The command uses the following + syntax: + +&prompt.user;qemu-img convert -c -f fmt -O out_fmt -o options fname out_fname + + + + Applies compression on the target disk image. Only + qcow and qcow2 formats + support compression. + + + + + The format of the source disk image. It is normally autodetected + and can therefore be omitted. + + + + + The format of the target disk image. + + + + + Specify additional options relevant for the target image format. + Use -o ? to view the list of options supported + by the target image format. + + + + + Path to the source disk image to be converted. + + + + + Path to the converted target disk image. + + + +&prompt.user;qemu-img convert -O vmdk /images/sles.raw \ +/images/sles.vmdk + +&prompt.user;ls -l /images/ +-rw-r--r-- 1 tux users 4294967296 16.Ā lis 10.50 sles.raw +-rw-r--r-- 1 tux users 2574450688 16.Ā lis 14.18 sles.vmdk + + + To see a list of options relevant for the selected target image + format, run the following command (replace vmdk + with your image format): + +&prompt.user;qemu-img convert -O vmdk /images/sles.raw \ +/images/sles.vmdk -o ? +Supported options: +size Virtual disk size +backing_file File name of a base image +compat6 VMDK version 6 image +subformat VMDK flat extent format, can be one of {monolithicSparse \ + (default) | monolithicFlat | twoGbMaxExtentSparse | twoGbMaxExtentFlat} +scsi SCSI image + +
+
+ qemu-img check + + Use qemu-img check to check the existing disk + image for errors. Not all disk image formats support this feature. + The command uses the following syntax: + +&prompt.user;qemu-img check -f fmt fname + + + + The format of the source disk image. It is normally autodetected + and can therefore be omitted. + + + + + Path to the source disk image to be checked. + + + + + If no error is found, the command returns no output. Otherwise, the + type and number of errors found is shown. + +&prompt.user;qemu-img check -f qcow2 /images/sles.qcow2 +ERROR: invalid cluster offset=0x2af0000 +[...] +ERROR: invalid cluster offset=0x34ab0000 +378 errors were found on the image. + +
+
+ Increasing the size of an existing disk image + + When creating a new image, you must specify its maximum size before + the image is created (see + ). After + you have installed the &vmguest; and have been using it for certain + time, the initial size of the image may no longer be sufficient. In + that case, add more space to it. + + + To increase the size of an existing disk image by 2Ā gigabytes, use: + +&prompt.user;qemu-img resize /images/sles.raw +2GB + + + You can resize the disk image using the formats + raw and qcow2. To resize an + image in another format, convert it to a supported format with + qemu-img convert first. + + + + The image now contains an empty space of 2Ā GB after the final + partition. You can resize the existing partitions or add new ones. + +
+
+ Advanced options for the qcow2 file format + + qcow2 is the main disk image format used by + &qemu;. Its size grows on demand, and the disk space is only + allocated when it is needed by the virtual machine. + + + A qcow2 formatted file is organized in units of constant size. These + units are called clusters. Viewed from the guest + side, the virtual disk is also divided into clusters of the same + size. &qemu; defaults to 64 kB clusters, but you can specify a + different value when creating a new image: + +&prompt.user;qemu-img create -f qcow2 -o cluster_size=128K virt_disk.qcow2 4G + + A qcow2 image contains a set of tables organized in two levels that + are called the L1 and L2 tables. There is just one L1 table per disk + image, while there can be many L2 tables depending on how big the + image is. + + + To read or write data to the virtual disk, &qemu; needs to read its + corresponding L2 table to find out the relevant data location. + Because reading the table for each I/O operation consumes system + resources, &qemu; keeps a cache of L2 tables in memory to speed up + disk access. + +
+ Choosing the right cache size + + The cache size relates to the amount of allocated space. L2 cache + can map the following amount of virtual disk: + +disk_size = l2_cache_size * cluster_size / 8 + + With the default 64 kB of cluster size, that is + +disk_size = l2_cache_size * 8192 + + Therefore, to have a cache that maps n gigabytes + of disk space with the default cluster size, you need + +l2_cache_size = disk_size_GB * 131072 + + &qemu; uses 1 MB (1048576 bytes) of L2 cache by default. + Following the above formulas, 1 MB of L2 cache covers + 8 GB (1048576 / 131072) of virtual disk. This means that the + performance is fine with the default L2 cache size if your virtual + disk size is up to 8 GB. For larger disks, you can speed up + the disk access by increasing the L2 cache size. + +
+
+ Configuring the cache size + + You can use the option on the &qemu; + command line to specify the cache sizes. Alternatively when + communicating via QMP, use the blockdev-add + command. For more information on QMP, see + . + + + The following options configure the cache size for the virtual + guest: + + + + l2-cache-size + + + The maximum size of the L2 table cache. + + + + + refcount-cache-size + + + The maximum size of the refcount block + cache. For more information on refcount, + see + . + + + + + cache-size + + + The maximum size of both caches combined. + + + + + + When specifying values for the options above, be aware of the + following: + + + + + The size of both the L2 and refcount block caches needs to be a + multiple of the cluster size. + + + + + If you only set one of the options, &qemu; automatically + adjusts the other options so that the L2 cache is 4 times + bigger than the refcount cache. + + + + + The refcount cache is used much less often than the L2 cache, + therefore you can keep it small: + +&prompt.root;qemu-system-ARCH [...] \ + -drive file=disk_image.qcow2,l2-cache-size=4194304,refcount-cache-size=262144 +
+
+ Reducing the memory usage + + The larger the cache, the more memory it consumes. There is a + separate L2 cache for each qcow2 file. When using a lot of big disk + images, you may need a considerably large amount of memory. Memory + consumption is even worse if you add backing files + () and + snapshots (see + ) to the + guest's setup chain. + + + This is why &qemu; introduced the + setting. It defines an + interval in seconds after which all cache entries that have not + been accessed are removed from memory. + + + The following example removes all unused cache entries every 10 + minutes: + +&prompt.root;qemu-system-ARCH [...] -drive file=hd.qcow2,cache-clean-interval=600 + + If this option is not set, the default value is 0 and it disables + this feature. + +
+
+
+ +
+ Managing snapshots of virtual machines with qemu-img + + snapshots are snapshots of the complete + environment in which a &vmguest; is running. The snapshot includes the + state of the processor (CPU), memory (RAM), devices, and all writable + disks. + + + 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 you last saved it. Or you can create a snapshot after + the virtual machine has been powered off to create a backup state + before you try something experimental and make &vmguest; unstable. This + section introduces the latter case, while the former is described in + . + + + To use snapshots, your &vmguest; must contain at least one writable + hard disk image in qcow2 format. This device is + normally the first virtual hard disk. + + + snapshots are created with the + savevm command in the interactive &qemu; monitor. To + make identifying a particular snapshot easier, you can assign it a + tag. For more information on &qemu; monitor, see + . + + + Once your qcow2 disk image contains saved snapshots, + you can inspect them with the qemu-img snapshot + command. + + + Shut down the &vmguest; + + Do not create or delete virtual machine snapshots with the + qemu-img snapshot command while the virtual + machine is running. Otherwise, you may damage the disk image with the + state of the virtual machine saved. + + +
+ Listing existing snapshots + + Use qemu-img snapshot -l + DISK_IMAGE to view a list of all existing + snapshots saved in the disk_image image. You can + get the list even while the &vmguest; is running. + +&prompt.user;qemu-img snapshot -l /images/sles.qcow2 +Snapshot list: +ID TAG VM SIZE DATE VM CLOCK +1 booting 4.4M 2013-11-22 10:51:10 00:00:20.476 +2 booted 184M 2013-11-22 10:53:03 00:02:05.394 +3 logged_in 273M 2013-11-22 11:00:25 00:04:34.843 +4 ff_and_term_running 372M 2013-11-22 11:12:27 00:08:44.965 + + + + Unique auto-incremented identification number of the snapshot. + + + + + Unique description string of the snapshot. It is meant as a + human-readable version of the ID. + + + + + The disk space occupied by the snapshot. The more + memory is consumed by running applications, the bigger the + snapshot is. + + + + + Time and date the snapshot was created. + + + + + The current state of the virtual machine's clock. + + + +
+
+ Creating snapshots of a powered-off virtual machine + + Use qemu-img snapshot -c + SNAPSHOT_TITLE + DISK_IMAGE to create a snapshot of the + current state of a virtual machine that was previously powered off. + +&prompt.user;qemu-img snapshot -c backup_snapshot /images/sles.qcow2 +&prompt.user;qemu-img snapshot -l /images/sles.qcow2 +Snapshot list: +ID TAG VM SIZE DATE VM CLOCK +1 booting 4.4M 2013-11-22 10:51:10 00:00:20.476 +2 booted 184M 2013-11-22 10:53:03 00:02:05.394 +3 logged_in 273M 2013-11-22 11:00:25 00:04:34.843 +4 ff_and_term_running 372M 2013-11-22 11:12:27 00:08:44.965 +5 backup_snapshot 0 2013-11-22 14:14:00 00:00:00.000 + + If something breaks in your &vmguest; and you need to restore the + state of the saved snapshot (ID 5 in our example), power off your + &vmguest; and execute the following command: + +&prompt.user;qemu-img snapshot -a 5 /images/sles.qcow2 + + The next time you run the virtual machine with + qemu-system-ARCH, it will be in the state of + snapshot number 5. + + + + The qemu-img snapshot -c command is not related + to the savevm command of &qemu; monitor (see + ). For example, you cannot apply + a snapshot with qemu-img snapshot -a on a + snapshot created with savevm in &qemu;'s + monitor. + + +
+
+ Deleting snapshots + + Use qemu-img snapshot -d + SNAPSHOT_ID + DISK_IMAGE to delete old or unneeded + snapshots of a virtual machine. This saves disk space inside the + qcow2 disk image as the space occupied by the + snapshot data is restored: + +&prompt.user;qemu-img snapshot -d 2 /images/sles.qcow2 +
+
+ +
+ Manipulate disk images effectively + + Imagine the following real-life situation: you are a server + administrator who runs and manages several virtualized operating + systems. One group of these systems is based on one specific + distribution, while another group (or groups) is based on different + versions of the distribution or even on a different (and maybe + non-Unix) platform. To make the case even more complex, individual + virtual guest systems based on the same distribution differ according + to the department and deployment. A file server typically uses a + different setup and services than a Web server does, while both may + still be based on + &slsreg;&opensuse;. + + + With &qemu; it is possible to create base disk images. + You can use them as template virtual machines. These base images save + you plenty of time because you do not need to install the same + operating system more than once. + +
+ Base and derived images + + First, build a disk image as usual and install the target system on + it. For more information, see + and + . Then build a + new image while using the first one as a base image. The base image + is also called a backing file. After your new + derived image is built, never boot the base + image again, but boot the derived image instead. Several derived + images may depend on one base image at the same time. Therefore, + changing the base image can damage the dependencies. While using your + derived image, &qemu; writes changes to it and uses the base image + only for reading. + + + It is a good practice to create a base image from a freshly installed + (and, if needed, registered) operating system with no patches applied + and no additional applications installed or removed. Later on, you + can create another base image with the latest patches applied and + based on the original base image. + +
+
+ Creating derived images + + + While you can use the raw format for base + images, you cannot use it for derived images because the + raw format does not support the + backing_file option. Use, for example, the + qcow2 format for the derived images. + + + + For example, /images/sles_base.raw is the base + image holding a freshly installed system. + +&prompt.user;qemu-img info /images/sles_base.raw +image: /images/sles_base.raw +file format: raw +virtual size: 4.0G (4294967296 bytes) +disk size: 2.4G + + The image's reserved size is 4 GB, the actual size is 2.4 GB, and its + format is raw. Create an image derived from the + /images/sles_base.raw base image with: + +&prompt.user;qemu-img create -f qcow2 /images/sles_derived.qcow2 \ +-o backing_file=/images/sles_base.raw +Formatting '/images/sles_derived.qcow2', fmt=qcow2 size=4294967296 \ +backing_file='/images/sles_base.raw' encryption=off cluster_size=0 + + + Look at the derived image details: + +&prompt.user;qemu-img info /images/sles_derived.qcow2 +image: /images/sles_derived.qcow2 +file format: qcow2 +virtual size: 4.0G (4294967296 bytes) +disk size: 140K +cluster_size: 65536 +backing file: /images/sles_base.raw \ +(actual path: /images/sles_base.raw) + + Although the reserved size of the derived image is the same as the + size of the base image (4 GB), the actual size is 140 KB only. The + reason is that only changes made to the system inside the derived + image are saved. Run the derived virtual machine, register it, if + needed, and apply the latest patches. Do any other changes in the + system such as removing unneeded or installing new software packages. + Then shut the &vmguest; down and examine its details once more: + +&prompt.user;qemu-img info /images/sles_derived.qcow2 +image: /images/sles_derived.qcow2 +file format: qcow2 +virtual size: 4.0G (4294967296 bytes) +disk size: 1.1G +cluster_size: 65536 +backing file: /images/sles_base.raw \ +(actual path: /images/sles_base.raw) + + The disk size value has grown to 1.1 GB, which is + the disk space occupied by the changes on the file system compared to + the base image. + +
+
+ Rebasing derived images + + After you have modified the derived image (applied patches, installed + specific applications, changed environment settings, etc.), it + reaches the desired state. At that point, you can merge the original + base image and the derived image to create a new base image. + + + Your original base image (/images/sles_base.raw) + holds a freshly installed system. It can be a template for new + modified base images, while the new one can contain the same system + as the first one plus all security and update patches applied, for + example. After you have created this new base image, you can use it + as a template for more specialized derived images as well. The new + base image becomes independent of the original one. The process of + creating base images from derived ones is called + rebasing: + +&prompt.user;qemu-img convert /images/sles_derived.qcow2 \ +-O raw /images/sles_base2.raw + + This command created the new base image + /images/sles_base2.raw using the + raw format. + +&prompt.user;qemu-img info /images/sles_base2.raw +image: /images/sles11_base2.raw +file format: raw +virtual size: 4.0G (4294967296 bytes) +disk size: 2.8G + + The new image is 0.4 gigabytes bigger than the original base image. + It uses no backing file, and you can easily create new derived images + based upon it. This lets you create a sophisticated hierarchy of + virtual disk images for your organization, saving a lot of time and + work. + +
+
+ Mounting an image on a &vmhost; + + It can be useful to mount a virtual disk image under the host system. + + + + Linux systems can mount an internal partition of a + raw disk image using a loopback device. The first + example procedure is more complex but more illustrative, while the + second one is straightforward: + + + Mounting disk image by calculating partition offset + + + Set a loop device on the disk image whose + partition you want to mount. + +&prompt.user;losetup /dev/loop0 /images/sles_base.raw + + + + Find the sector size and the starting + sector number of the partition you want to + mount. + +&prompt.user;fdisk -lu /dev/loop0 + +Disk /dev/loop0: 4294 MB, 4294967296 bytes +255 heads, 63 sectors/track, 522 cylinders, total 8388608 sectors +Units = sectors of 1 * 512 = 512 bytes +Disk identifier: 0x000ceca8 + + Device Boot Start End Blocks Id System +/dev/loop0p1 63 1542239 771088+ 82 Linux swap +/dev/loop0p2 * 1542240 8385929 3421845 83 Linux + + + + The disk sector size. + + + + + The starting sector of the partition. + + + + + + + Calculate the partition start offset: + + + sector_size * sector_start = 512 * 1542240 = 789626880 + + + + + + Delete the loop and mount the partition inside the disk image + with the calculated offset on a prepared directory. + +&prompt.user;losetup -d /dev/loop0 +&prompt.user;mount -o loop,offset=789626880 \ +/images/sles_base.raw /mnt/sles/ +&prompt.user;ls -l /mnt/sles/ +total 112 +drwxr-xr-x 2 root root 4096 Nov 16 10:02 bin +drwxr-xr-x 3 root root 4096 Nov 16 10:27 boot +drwxr-xr-x 5 root root 4096 Nov 16 09:11 dev +[...] +drwxrwxrwt 14 root root 4096 Nov 24 09:50 tmp +drwxr-xr-x 12 root root 4096 Nov 16 09:16 usr +drwxr-xr-x 15 root root 4096 Nov 16 09:22 var + + + + + Copy one or more files onto the mounted partition and unmount it + when finished. + +&prompt.user;cp /etc/X11/xorg.conf /mnt/sles/root/tmp +&prompt.user;ls -l /mnt/sles/root/tmp +&prompt.user;umount /mnt/sles/ + + + + Do not write to images currently in use + + Never mount a partition of an image of a running virtual machine in + a read-write mode. This could corrupt the + partition and break the whole &vmguest;. + + +
+
+
+ diff --git a/references/qemu_host_installation.xml b/references/qemu_host_installation.xml index 826cd3df7..10ff7aadd 100644 --- a/references/qemu_host_installation.xml +++ b/references/qemu_host_installation.xml @@ -35,8 +35,8 @@ - To find out whether your system supports virtualization, see - . + To find out whether your system supports virtualization.
@@ -51,7 +51,7 @@ install the patterns-server-kvm_server and - patterns-server-kvm_tools. Refer to + patterns-server-kvm_tools. @@ -59,8 +59,8 @@ Create a Network Bridge. If you do not plan to dedicate an additional physical network card to your virtual guests, network bridge is a standard way to connect the guest - machines to the network. Refer to . - + machines to the network. + diff --git a/references/qemu_monitor.xml b/references/qemu_monitor.xml new file mode 100644 index 000000000..6c180dda8 --- /dev/null +++ b/references/qemu_monitor.xml @@ -0,0 +1,1110 @@ + + + %entities; +]> + + + Virtual machine administration using &qemu; monitor + + + + yes + + + + 2024-06-27 + + + + + + + + When a virtual machine is invoked by the &qemusystemarch; command, for + example qemu-system-x86_64, 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 other aspects of the virtual machine. + + + + The following sections list selected useful &qemu; monitor commands and + their purpose. To get the full list, enter help in the + &qemu; monitor command line. + + +
+ Accessing monitor console + + + No monitor console for &libvirt; + + You can access the monitor console only if you started the virtual + machine directly with the &qemusystemarch; command and are viewing its + graphical output in a built-in &qemu; window. + + + If you started the virtual machine with &libvirt;, for example, using + virt-manager, and are viewing its output via VNC or + Spice sessions, you cannot access the monitor console directly. You + can, however, send the monitor command to the virtual machine via + &virsh;: + +&prompt.root;virsh qemu-monitor-command COMMAND + + + + The way you access the monitor console depends on which display device + you use to view the output of a virtual machine. Find more details about + displays in . + For example, to view the monitor while the + option is in use, press + 2. Similarly, when + the option is in use, you can switch to the + monitor console by pressing the following key combination: + AC. + + + + To get help while using the console, use help or + ?. To get help for a specific command, use + help COMMAND. + +
+
+ Getting information about the guest system + + + To get information about the guest system, use info. + If used without any option, the list of possible options is printed. + Options determine which part of the system is 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 disks, 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 interrupt 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 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 mice + + + Shows which guest mice are 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. + + + + + info migrate_cache_size + + + Shows the current migration xbzrle (Xor Based Zero Run + Length Encoding) cache size. + + + + + info migrate_capabilities + + + Shows the status of the multiple migration capabilities, such as + xbzrle compression. + + + + + info mtree + + + Shows the &vmguest; memory hierarchy. + + + + + info trace-events + + + Shows available trace-events and their status. + + + + +
+
+ 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) + +
+
+ Managing devices + + + To add a new disk while the guest is running (hotplug), use the + drive_add and device_add commands. + First define a new drive to be added as a device to bus 0: + + +(qemu) drive_add 0 if=none,file=/tmp/test.img,format=raw,id=disk1 +OK + + + You can confirm your new device by querying the block subsystem: + + +(qemu) info block +[...] +disk1: removable=1 locked=0 tray-open=0 file=/tmp/test.img ro=0 drv=raw \ +encrypted=0 bps=0 bps_rd=0 bps_wr=0 iops=0 iops_rd=0 iops_wr=0 + + + After the new drive is defined, it needs to be connected to a device so + that the guest can see it. The typical device would be a + virtio-blk-pci or scsi-disk. To get + the full list of available values, run: + + +(qemu) device_add ? +name "VGA", bus PCI +name "usb-storage", bus usb-bus +[...] +name "virtio-blk-pci", bus virtio-bus + + + Now add the device + + +(qemu) device_add virtio-blk-pci,drive=disk1,id=myvirtio1 + + + and confirm with + + +(qemu) info pci +[...] +Bus 0, device 4, function 0: + SCSI controller: PCI device 1af4:1001 + IRQ 0. + BAR0: I/O at 0xffffffffffffffff [0x003e]. + BAR1: 32 bit memory at 0xffffffffffffffff [0x00000ffe]. + id "myvirtio1" + + + + Devices added with the device_add command can be + removed from the guest with device_del. Enter + help device_del on the &qemu; monitor command line + for more information. + + + + + To release the device or file connected to the removable media device, + use the eject DEVICE + command. Use the optional 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 + +
+
+ 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 certain key combinations at low level (such as + F1 + in X Window Syustem), 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 . + + + + To control the mouse, the following commands can be used: + + + + + mouse_move DX dy [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. + + + + +
+
+ Changing available memory + + + If the virtual machine was started with the option (the paravirtualized balloon device is therefore + enabled), you can change the available memory dynamically. For more + information about enabling the balloon device, see + . + + + + 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 +
+
+ Dumping virtual machine memory + + + To save the content of the virtual machine memory to a disk or console + output, use the following commands: + + + + + memsaveADDRSIZEFILENAME + + + Saves virtual memory dump starting at + ADDR of size + SIZE to file + FILENAME + + + + + pmemsaveADDRSIZEFILENAME + + + 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 + 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. + + + + + 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. + + + + +
+
+ Managing virtual machine snapshots + + + Managing snapshots in QEMU monitor is not supported by &suse; + yet. The information found in this section may be helpful in specific + cases. + + + + 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. + + + + Snapshots are helpful when you need to save your virtual machine in a + particular state. For example, after you have configured network services + on a virtualized server and want to quickly start the virtual machine in + the same state that was 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 make &vmguest; unstable. This section + introduces the former case, while the latter is described in + . + + + + The following commands are available for managing snapshots in &qemu; + monitor: + + + + + savevmNAME + + + Creates a new virtual machine snapshot under the tag + NAME or replaces an existing snapshot. + + + + + loadvmNAME + + + 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: +ID TAG VM SIZE DATE VM CLOCK +1 booting 4.4M 2013-11-22 10:51:10 00:00:20.476 +2 booted 184M 2013-11-22 10:53:03 00:02:05.394 +3 logged_in 273M 2013-11-22 11:00:25 00:04:34.843 +4 ff_and_term_running 372M 2013-11-22 11:12:27 00:08:44.965 + + + + Unique auto-incremented identification number of the snapshot. + + + + + Unique description string of the snapshot. It is meant as a + human readable version of the ID. + + + + + The disk space occupied by the snapshot. The more memory is + consumed by running applications, the bigger the snapshot is. + + + + + Time and date the snapshot was created. + + + + + The current state of the virtual machine's clock. + + + + + + +
+
+ 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 file system in an + unclean state. + + + + + system_powerdown + + + Sends an shutdown request to the + machine. The effect is similar to the power button on a physical + machine. + + + + + q or quit + + + Terminates &qemu; immediately. + + + + +
+
+ Live migration + + + The live migration process allows to transmit any virtual machine from + one host system to another host system without any interruption in + availability. It is possible to change hosts permanently or only during + maintenance. + + + + The requirements for live migration: + + + + + + libvirt reauirements are applicable. + + + + + + Live migration is only possible between &vmhost;s with the same CPU + features. + + + + + interface, + feature, and the + command line option are not compatible + with migration. + + + + + The guest on the source and destination hosts must be started in the + same way. + + + + + qemu command line option should not be + used for migration (and this qemu command line + option is not supported). + + + + + + Support status + + The postcopy mode is not yet supported in + &productname;. It is released as a technology preview only. For more + information about postcopy, see + . + + + + + More recommendations can be found at the following Web site: + + + + + The live migration process has the following steps: + + + + + + The virtual machine instance is running on the source host. + + + + + 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 + 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. + + + + + On the source host, switch to the monitor console and use the + migrate -d tcp: + DESTINATION_IP:PORT + command to initiate the migration. + + + + + To determine the state of the migration, use the info + migrate command in the monitor console on the source host. + + + + + To cancel the migration, use the migrate_cancel + command in the monitor console on the source host. + + + + + To set the maximum tolerable downtime for migration in seconds, use + the migrate_set_downtime + NUMBER_OF_SECONDS command. + + + + + To set the maximum speed for migration in bytes per second, use the + migrate_set_speed + BYTES_PER_SECOND command. + + + +
+
+ QMP - &qemu; machine protocol + + + QMP is a JSON-based protocol that allows applications—such as + &libvirt;—to communicate with a running &qemu; instance. There are + several ways you can access the &qemu; monitor using QMP commands. + + +
+ Access QMP via standard input/output + + The most flexible way to use QMP is by specifying the + option. The following example creates a QMP + instance using standard input/output. In the following examples, + -> marks lines with commands sent from client to + the running &qemu; instance, while <- marks lines + with the output returned from &qemu;. + +&prompt.sudo;qemu-system-x86_64 [...] \ +-chardev stdio,id=mon0 \ +-mon chardev=mon0,mode=control,pretty=on + +<- { + "QMP": { + "version": { + "qemu": { + "micro": 0, + "minor": 0, + "major": 2 + }, + "package": "" + }, + "capabilities": [ + ] + } +} + + When a new QMP connection is established, QMP sends its greeting + message and enters capabilities negotiation mode. In this mode, only + the qmp_capabilities command works. To exit + capabilities negotiation mode and enter command mode, the + qmp_capabilities command must be issued first: + +-> { "execute": "qmp_capabilities" } +<- { + "return": { + } +} + + "return": {} is a QMP's success response. + + + QMP's commands can have arguments. For example, to eject a CD-ROM drive, + enter the following: + +->{ "execute": "eject", "arguments": { "device": "ide1-cd0" } } +<- { + "timestamp": { + "seconds": 1410353381, + "microseconds": 763480 + }, + "event": "DEVICE_TRAY_MOVED", + "data": { + "device": "ide1-cd0", + "tray-open": true + } +} +{ + "return": { + } +} +
+ +
+ Access QMP via telnet + + Instead of the standard input/output, you can connect the QMP interface + to a network socket and communicate with it via a specified port: + +&prompt.sudo;qemu-system-x86_64 [...] \ +-chardev socket,id=mon0,host=localhost,port=4444,server,nowait \ +-mon chardev=mon0,mode=control,pretty=on + + And then run telnet to connect to port 4444: + +&prompt.user;telnet localhost 4444 +Trying ::1... +Connected to localhost. +Escape character is '^]'. +<- { + "QMP": { + "version": { + "qemu": { + "micro": 0, + "minor": 0, + "major": 2 + }, + "package": "" + }, + "capabilities": [ + ] + } +} + + You can create several monitor interfaces at the same time. The + following example creates one HMP instance—human monitor which + understands normal &qemu; monitor's commands—on the + standard input/output, and one QMP instance on localhost port 4444: + +&prompt.sudo;qemu-system-x86_64 [...] \ +-chardev stdio,id=mon0 -mon chardev=mon0,mode=readline \ +-chardev socket,id=mon1,host=localhost,port=4444,server,nowait \ + -mon chardev=mon1,mode=control,pretty=on +
+ +
+ Access QMP via Unix socket + + Invoke &qemu; using the option, and create a Unix + socket: + +&prompt.sudo;qemu-system-x86_64 [...] \ +-qmp unix:/tmp/qmp-sock,server --monitor stdio + +QEMU waiting for connection on: unix:./qmp-sock,server + + To communicate with the &qemu; instance via the + /tmp/qmp-sock socket, use nc (see + man 1 nc for more information) from another terminal + on the same host: + +&prompt.sudo;nc -U /tmp/qmp-sock +<- {"QMP": {"version": {"qemu": {"micro": 0, "minor": 0, "major": 2} [...] +
+ +
+ Access QMP via &libvirt;'s <command>virsh</command> command + + If you run your virtual machines under &libvirt; , you can communicate with its + running guests by running the virsh + qemu-monitor-command: + +&prompt.sudo;virsh qemu-monitor-command vm_guest1 \ +--pretty '{"execute":"query-kvm"}' +<- { + "return": { + "enabled": true, + "present": true + }, + "id": "libvirt-8" +} + + In the above example, we ran the simple command + query-kvm which checks if the host is capable of + running &kvm; and if &kvm; is enabled. + + + Generating human-readable output + + To use the standard human-readable output format of &qemu; instead of + the JSON format, use the option: + +&prompt.sudo;virsh qemu-monitor-command vm_guest1 --hmp "query-kvm" + +
+
+
diff --git a/references/qemu_running_vms_qemukvm.xml b/references/qemu_running_vms_qemukvm.xml new file mode 100644 index 000000000..dff35bada --- /dev/null +++ b/references/qemu_running_vms_qemukvm.xml @@ -0,0 +1,1979 @@ + + + %entities; +]> + + + Running virtual machines with qemu-system-ARCH + + + + yes + + + + 2024-06-27 + + + + + + + + Once you have a virtual disk image ready (for more information on disk + images, see ), it is time to + start the related virtual machine. + introduced simple commands + to install and run a &vmguest;. This chapter focuses on a more detailed + explanation of qemu-system-ARCH usage, and shows + solutions for more specific tasks. For a complete list of + qemu-system-ARCH's options, see its man page + (man 1 qemu). + +
+ Basic <command>qemu-system-ARCH</command> invocation + + + The qemu-system-ARCH command uses the following + syntax: + + +qemu-system-ARCH OPTIONS -drive file=DISK_IMAGE + + + + + qemu-system-ARCH understands many options. Most of + them define parameters of the emulated hardware, while others affect + more general emulator behavior. If you do not supply any options, + default values are used, and you need to supply the path to a disk + image to be run. + + + + + Path to the disk image holding the guest system you want to + virtualize. qemu-system-ARCH supports many image + formats. Use qemu-img to + list them. + + + + + + &aarch64; architecture + + &kvm; support is available only for 64-bit ArmĀ® architecture + (&aarch64;). Running &qemu; on the &aarch64; architecture requires you + to specify: + + + + + A machine type designed for &qemu; ArmĀ® virtual machines using the + option. + + + + + A firmware image file using the option. + + + You can specify the firmware image files alternatively using the + options, for example: + + +-drive file=/usr/share/edk2/aarch64/QEMU_EFI-pflash.raw,if=pflash,format=raw +-drive file=/var/lib/libvirt/qemu/nvram/opensuse_VARS.fd,if=pflash,format=raw + + + + + A CPU of the &vmhost; using the option + (default is ). + + + + + The same Generic Interrupt Controller (GIC) version as the host + using the option + (default is ). + + + + + If a graphic mode is needed, a graphic device of type + virtio-gpu-pci. + + + + + For example: + + +&prompt.sudo;qemu-system-aarch64 [...] \ + -bios /usr/share/qemu/qemu-uefi-aarch64.bin \ + -cpu host \ + -device virtio-gpu-pci \ + -machine virt,accel=kvm,gic-version=host + + +
+
+ General <command>qemu-system-ARCH</command> options + + + This section introduces general qemu-system-ARCH + options and options related to the basic emulated hardware, such as the + virtual machine's processor, memory, model type, or time processing + methods. + + + + + -name NAME_OF_GUEST + + + Specifies the name of the running guest system. The name is + displayed in the window caption and used for the VNC server. + + + + + -boot OPTIONS + + + Specifies the order in which the defined drives are booted. Drives + are represented by letters, where a and + b stand for the floppy drives 1 and 2, + c stands for the first hard disk, + d stands for the first CD-ROM drive, and + n to p stand for Ether-boot + network adapters. + + + For example, qemu-system-ARCH [...] -boot + order=ndc first tries to boot from the network, then from + the first CD-ROM drive, and finally from the first hard disk. + + + + + -pidfile FILENAME + + + Stores the &qemu;'s process identification number (PID) in a file. + This is useful if you run &qemu; from a script. + + + + + -nodefaults + + + By default &qemu; creates basic virtual devices even if you do not + specify them on the command line. This option turns this feature + off, and you must specify every single device manually, including + graphical and network cards, parallel or serial ports, or virtual + consoles. Even &qemu; monitor is not attached by default. + + + + + -daemonize + + + Daemonizes the &qemu; process after it is started. + &qemu; detaches from the standard input and standard output after + it is ready to receive connections on any of its devices. + + + + + + + SeaBIOS BIOS implementation + + SeaBIOS is the default BIOS used. You can boot USB devices, any drive + (CD-ROM, Floppy or a hard disk). It has USB mouse and keyboard support + and supports multiple VGA cards. For more information about SeaBIOS, + refer to the SeaBIOS + Website. + + + +
+ Basic virtual hardware + +
+ Machine type + + You can specify the type of the emulated machine. Run + qemu-system-ARCH -M help to view a list of + supported machine types. + + + ISA-PC + + The machine type isapc: ISA-only-PC is + unsupported. + + +
+
+ CPU model + + To specify the type of the processor (CPU) model, run + qemu-system-ARCH -cpu + MODEL. Use qemu-system-ARCH -cpu + help to view a list of supported CPU models. + +
+
+ Other basic options + + The following is a list of most commonly used options while launching + qemu from command line. To see all options + available refer to qemu-doc man page. + + + + -m MEGABYTES + + + Specifies how many megabytes are used for the virtual RAM size. + + + + + -balloon virtio + + + Specifies a paravirtualized device to dynamically change the + amount of virtual RAM assigned to &vmguest;. The top limit is + the amount of memory specified with -m. + + + + + -smp NUMBER_OF_CPUS + + + Specifies how many CPUs to emulate. &qemu; supports up to 255 + CPUs on the PC platform (up to 64 with KVM acceleration used). + This option also takes other CPU-related parameters, such as + number of sockets, number of + cores per socket, or number of + threads per core. + + + + + + The following is an example of a working + qemu-system-ARCH command line: + + +&prompt.sudo;qemu-system-x86_64 \ + -name "SLES &productnumber;" \ + -M pc-i440fx-2.7 -m 512 \ + -machine accel=kvm -cpu kvm64 -smp 2 \ + -drive format=raw,file=/images/sles.raw + +
+ &qemu; window with SLES as &vmguest; + + + + + + + + +
+ + + -no-acpi + + + Disables support. + + + + + -S + + + &qemu; starts with CPU stopped. To start CPU, enter + c in &qemu; monitor. For more information, + see . + + + + +
+
+ +
+ Storing and reading configuration of virtual devices + + + -readconfig CFG_FILE + + + Instead of entering the devices configuration options on the + command line each time you want to run &vmguest;, + qemu-system-ARCH can read it from a file that + was either previously saved with -writeconfig + or edited manually. + + + + + -writeconfig CFG_FILE + + + Dumps the current virtual machine's devices configuration to a + text file. It can be consequently re-used with the + -readconfig option. + + +&prompt.sudo;qemu-system-x86_64 -name "SLES &productnumber;" \ + -machine accel=kvm -M pc-i440fx-2.7 -m 512 -cpu kvm64 \ + -smp 2 /images/sles.raw -writeconfig /images/sles.cfg +(exited) +&prompt.user;cat /images/sles.cfg +# qemu config file + +[drive] + index = "0" + media = "disk" + file = "/images/sles_base.raw" + + + This way you can effectively manage the configuration of your + virtual machines' devices in a well-arranged way. + + + + +
+ +
+ Guest real-time clock + + + -rtc OPTIONS + + + Specifies the way the RTC is handled inside a &vmguest;. By + default, the clock of the guest is derived from that of the host + system. Therefore, it is recommended that the host system clock + is synchronized with an accurate external clock, for example, via + NTP service. + + + If you need to isolate the &vmguest; clock from the host one, + specify clock=vm instead of the default + clock=host. + + + You can also specify the initial time of the &vmguest;'s clock + with the base option: + +&prompt.sudo;qemu-system-x86_64 [...] -rtc clock=vm,base=2010-12-03T01:02:00 + + Instead of a time stamp, you can specify utc + or localtime. The former instructs &vmguest; + to start at the current UTC value (Coordinated Universal Time, + see ), while + the latter applies the local time setting. + + + + +
+
+
+ Using devices in &qemu; + + + &qemu; virtual machines emulate all devices needed to run a &vmguest;. + &qemu; supports, for example, several types of network cards, block + devices (hard and removable drives), USB devices, character devices + (serial and parallel ports), or multimedia devices (graphic and sound + cards). This section introduces options to configure multiple types of + supported devices. + + + + + If your device, such as -drive, needs a special + driver and driver properties to be set, specify them with the + -device option, and identify with + drive= suboption. For example: + +&prompt.sudo;qemu-system-x86_64 [...] -drive if=none,id=drive0,format=raw \ +-device virtio-blk-pci,drive=drive0,scsi=off ... + + To get help on available drivers and their properties, use + and . + + + +
+ Block devices + + Block devices are vital for virtual machines. These are fixed or + removable storage media called drives. One of the + connected hard disks typically holds the guest operating system to be + virtualized. + + + drives are defined with + -drive. This option has many sub-options, so me of + which are described in this section. For the complete list, see the + man page (man 1 qemu). + + + Sub-options for the <literal>-drive</literal> option + + file=image_fname + + + Specifies the path to the disk image that to be used with this + drive. If not specified, an empty (removable) drive is assumed. + + + + + if=drive_interface + + + Specifies the type of interface to which the drive is connected. + Currently only floppy, + scsi, ide, or + virtio are supported by &suse;. + virtio defines a paravirtualized disk driver. + Default is ide. + + + + + index=index_of_connector + + + Specifies the index number of a connector on the disk interface + (see the if option) where the drive is + connected. If not specified, the index is automatically + incremented. + + + + + media=type + + + Specifies the type of media. Can be disk for + hard disks, or cdrom for removable CD-ROM + drives. + + + + + format=img_fmt + + + Specifies the format of the connected disk image. If not + specified, the format is autodetected. Currently, &suse; supports + raw and qcow2 formats. + + + + + cache=method + + + Specifies the caching method for the drive. Possible values are + unsafe, writethrough, + writeback, directsync, or + none. To improve performance when using the + qcow2 image format, select + writeback. none disables + the host page cache and, therefore, is the safest option. Default + for image files is writeback. + + + + + + + To simplify defining block devices, &qemu; understands several + shortcuts which you may find handy when entering the + qemu-system-ARCH command line. + + + You can use + +&prompt.sudo;qemu-system-x86_64 -cdrom /images/cdrom.iso + + instead of + +&prompt.sudo;qemu-system-x86_64 -drive format=raw,file=/images/cdrom.iso,index=2,media=cdrom + + and + +&prompt.sudo;qemu-system-x86_64 -hda /images/imagei1.raw -hdb /images/image2.raw -hdc \ +/images/image3.raw -hdd /images/image4.raw + + instead of + +&prompt.sudo;qemu-system-x86_64 -drive format=raw,file=/images/image1.raw,index=0,media=disk \ +-drive format=raw,file=/images/image2.raw,index=1,media=disk \ +-drive format=raw,file=/images/image3.raw,index=2,media=disk \ +-drive format=raw,file=/images/image4.raw,index=3,media=disk + + + Using host drives instead of images + + As an alternative to using disk images (see + ) you can also use + existing &vmhost; disks, connect them as drives, and access them from + &vmguest;. Use the host disk device directly instead of disk image + file names. + + + To access the host CD-ROM drive, use + +&prompt.sudo;qemu-system-x86_64 [...] -drive file=/dev/cdrom,media=cdrom + + To access the host hard disk, use + +&prompt.sudo;qemu-system-x86_64 [...] -drive file=/dev/hdb,media=disk + + A host drive used by a &vmguest; must not be accessed concurrently by + the &vmhost; or another &vmguest;. + + +
+ Freeing unused guest disk space + + A is a type of disk image + file that grows in size as the user adds data to it, taking up only + as much disk space as is stored in it. For example, if you copy 1 GB + of data inside the sparse disk image, its size grows by 1 GB. If you + then delete, for example, 500 MB of the data, the image size does not + by default decrease as expected. + + + This is why the option is introduced on + the &kvm; command line. It tells the hypervisor to automatically free + the holes after deleting data from the sparse guest + image. This option is valid only for the + if=scsi drive interface: + +&prompt.sudo;qemu-system-x86_64 [...] -drive format=img_format,file=/path/to/file.img,if=scsi,discard=on + + Support status + + is not supported. This interface does not + map to virtio-scsi, but rather to the + lsi SCSI adapter. + + +
+
+ IOThreads + + IOThreads are dedicated event loop threads for virtio devices to + perform I/O requests to improve scalability, especially on an SMP + &vmhost; with SMP &vmguest;s using many disk devices. Instead of + using &qemu;'s main event loop for I/O processing, IOThreads allow + spreading I/O work across multiple CPUs and can improve latency when + properly configured. + + + IOThreads are enabled by defining IOThread objects. virtio devices + can then use the objects for their I/O event loops. Many virtio + devices can use a single IOThread object, or virtio devices and + IOThread objects can be configured in a 1:1 mapping. The following + example creates a single IOThread with ID + iothread0 which is then used as the event loop for + two virtio-blk devices. + +&prompt.sudo;qemu-system-x86_64 [...] -object iothread,id=iothread0\ +-drive if=none,id=drive0,cache=none,aio=native,\ +format=raw,file=filename -device virtio-blk-pci,drive=drive0,scsi=off,\ +iothread=iothread0 -drive if=none,id=drive1,cache=none,aio=native,\ +format=raw,file=filename -device virtio-blk-pci,drive=drive1,scsi=off,\ +iothread=iothread0 [...] + + The following qemu command line example illustrates a 1:1 virtio + device to IOThread mapping: + +&prompt.sudo;qemu-system-x86_64 [...] -object iothread,id=iothread0\ +-object iothread,id=iothread1 -drive if=none,id=drive0,cache=none,aio=native,\ +format=raw,file=filename -device virtio-blk-pci,drive=drive0,scsi=off,\ +iothread=iothread0 -drive if=none,id=drive1,cache=none,aio=native,\ +format=raw,file=filename -device virtio-blk-pci,drive=drive1,scsi=off,\ + iothread=iothread1 [...] +
+
+ Bio-based I/O path for virtio-blk + + For better performance of I/O-intensive applications, a new I/O path + was introduced for the virtio-blk interface in kernel version 3.7. + This bio-based block device driver skips the I/O scheduler, and thus + shortens the I/O path in guest and has lower latency. It is + especially useful for high-speed storage devices, such as SSD disks. + + + The driver is disabled by default. To use it, do the following: + + + + + Append to the kernel + command line on the guest. You can do so via + &yast;SystemBoot + Loader. + + + You can do it also by editing + /etc/default/grub, searching for the line + that contains , and + adding the kernel parameter at the end. Then run + grub2-mkconfig >/boot/grub2/grub.cfg to + update the grub2 boot menu. + + + + + Reboot the guest with the new kernel command line active. + + + + + Bio-based driver on slow devices + + The bio-based virtio-blk driver does not help on slow devices such + as spin hard disks. The reason is that the benefit of scheduling is + larger than what the shortened bio path offers. Do not use the + bio-based driver on slow devices. + + +
+
+ Accessing iSCSI resources directly + + + QEMU now integrates with libiscsi. This allows + QEMU to access iSCSI resources directly and use them as virtual + machine block devices. This feature does not require any host iSCSI + initiator configuration, as is needed for a libvirt iSCSI target + based storage pool setup. Instead it directly connects guest storage + interfaces to an iSCSI target LUN via the user space library + libiscsi. iSCSI-based disk devices can also be specified in the + libvirt XML configuration. + + + RAW image format + + This feature is only available using the RAW image format, as the + iSCSI protocol has certain technical limitations. + + + + + The following is the QEMU command line interface for iSCSI + connectivity. + + + virt-manager limitation + + The use of libiscsi based storage provisioning is not yet exposed + by the virt-manager interface, but instead it would be configured + by directly editing the guest xml. This new way of accessing iSCSI + based storage is to be done at the command line. + + +&prompt.sudo;qemu-system-x86_64 -machine accel=kvm \ + -drive file=iscsi://192.168.100.1:3260/iqn.2016-08.com.example:314605ab-a88e-49af-b4eb-664808a3443b/0,\ + format=raw,if=none,id=mydrive,cache=none \ + -device ide-hd,bus=ide.0,unit=0,drive=mydrive ... + + Here is an example snippet of guest domain xml which uses the + protocol based iSCSI: + +<devices> +... + <disk type='network' device='disk'> + <driver name='qemu' type='raw'/> + <source protocol='iscsi' name='iqn.2013-07.com.example:iscsi-nopool/2'> + <host name='example.com' port='3260'/> + </source> + <auth username='myuser'> + <secret type='iscsi' usage='libvirtiscsi'/> + </auth> + <target dev='vda' bus='virtio'/> + </disk> +</devices> + + Contrast that with an example which uses the host based iSCSI + initiator which virt-manager sets up: + +<devices> +... + <disk type='block' device='disk'> + <driver name='qemu' type='raw' cache='none' io='native'/> + <source dev='/dev/disk/by-path/scsi-0:0:0:0'/> + <target dev='hda' bus='ide'/> + <address type='drive' controller='0' bus='0' target='0' unit='0'/> + </disk> + <controller type='ide' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' + function='0x1'/> + </controller> +</devices> +
+
+ Using RADOS block devices with &qemu; + + RADOS Block Devices (RBD) store data in a Ceph cluster. They allow + snapshotting, replication and data consistency. You can use an RBD + from your &kvm;-managed &vmguest;s similarly to how you use other + block devices. + + + For more details, refer to the + &ses; + &admin;, chapter Ceph as a Back-end + for QEMU KVM Instance. + +
+
+ +
+ Graphic devices and display options + + This section describes &qemu; options affecting the type of the + emulated video card and the way &vmguest; graphical output is + displayed. + +
+ Defining video cards + + &qemu; uses -vga to define a video card used to + display &vmguest; graphical output. The -vga + option understands the following values: + + + + none + + + Disables video cards on &vmguest; (no video card is emulated). + You can still access the running &vmguest; via the serial + console. + + + + + std + + + Emulates a standard VESA 2.0 VBE video card. Use it if you + intend to use high display resolution on &vmguest;. + + + + + qxl + + + QXL is a paravirtual graphic card. It is VGA compatible + (including VESA 2.0 VBE support). qxl is + recommended when using the spice video + protocol. + + + + + virtio + + + Paravirtual VGA graphic card. + + + + +
+
+ Display options + + The following options affect the way &vmguest; graphical output is + displayed. + + + + -display gtk + + + Display video output in a GTK window. This interface provides + UI elements to configure and control the VM during runtime. + + + + + -display sdl + + + Display video output via SDL in a separate graphics window. For + more information, see the SDL documentation. + + + + + -spice option[,option[,...]] + + + Enables the spice remote desktop protocol. + + + + + -display vnc + + + Refer to for more + information. + + + + + -nographic + + + Disables &qemu;'s graphical output. The emulated serial port is + redirected to the console. + + + After starting the virtual machine with + -nographic, press + A + H in the virtual console to view the list of + other useful shortcuts, for example, to toggle between the + console and the &qemu; monitor. + +&prompt.sudo;qemu-system-x86_64 -hda /images/sles_base.raw -nographic + +C-a h print this help +C-a x exit emulator +C-a s save disk data back to file (if -snapshot) +C-a t toggle console timestamps +C-a b send break (magic sysrq) +C-a c switch between console and monitor +C-a C-a sends C-a +(pressed C-a c) + +QEMU 2.3.1 monitor - type 'help' for more information +(qemu) + + + + -no-frame + + + Disables decorations for the &qemu; window. Convenient for + dedicated desktop work space. + + + + + -full-screen + + + Starts &qemu; graphical output in full screen mode. + + + + + -no-quit + + + Disables the close button of the &qemu; window and prevents it + from being closed by force. + + + + + -alt-grab, -ctrl-grab + + + By default, the &qemu; window releases the + captured mouse after pressing + . + You can change the key combination to either + + (-alt-grab), or the right + key + (-ctrl-grab). + + + + +
+
+ +
+ USB devices + + There are two ways to create USB devices usable by the &vmguest; in + &kvm;: you can either emulate new USB devices inside a &vmguest;, or + assign an existing host USB device to a &vmguest;. To use USB devices + in &qemu; you first need to enable the generic USB driver with the + option. Then you can specify individual devices + with the option. + +
+ Emulating USB devices in &vmguest; + + &suse; currently supports the following types of USB devices: + disk, host, + serial, braille, + net, mouse, and + tablet. + + + Types of USB devices for the <literal>-usbdevice</literal> option + + disk + + + Emulates a mass storage device based on file. The optional + format option is used rather than detecting + the format. + +&prompt.sudo;qemu-system-x86_64 [...] -usbdevice + disk:format=raw:/virt/usb_disk.raw + + + + host + + + Pass through the host device (identified by bus.addr). + + + + + serial + + + Serial converter to a host character device. + + + + + braille + + + Emulates a braille device using BrlAPI to display the braille + output. + + + + + net + + + Emulates a network adapter that supports CDC Ethernet and RNDIS + protocols. + + + + + mouse + + + Emulates a virtual USB mouse. This option overrides the default + PS/2 mouse emulation. The following example shows the hardware + status of a mouse on &vmguest; started with + qemu-system-ARCH [...] -usbdevice mouse: + +&prompt.sudo;hwinfo --mouse +20: USB 00.0: 10503 USB Mouse +[Created at usb.122] +UDI: /org/freedesktop/Hal/devices/usb_device_627_1_1_if0 +[...] +Hardware Class: mouse +Model: "Adomax QEMU USB Mouse" +Hotplug: USB +Vendor: usb 0x0627 "Adomax Technology Co., Ltd" +Device: usb 0x0001 "QEMU USB Mouse" +[...] + + + + tablet + + + Emulates a pointer device that uses absolute coordinates (such + as touchscreen). This option overrides the default PS/2 mouse + emulation. The tablet device is useful if you are viewing + &vmguest; via the VNC protocol. See + for more information. + + + + +
+
+ +
+ Character devices + + Use -chardev to create a new character device. The + option uses the following general syntax: + +qemu-system-x86_64 [...] -chardev BACKEND_TYPE,id=ID_STRING + + where BACKEND_TYPE can be one of + null, socket, + udp, msmouse, + vc, file, + pipe, console, + serial, pty, + stdio, braille, + tty, or parport. All character + devices must have a unique identification string up to 127 characters + long. It is used to identify the device in other related directives. + For the complete description of all back-end's sub-options, see the + man page (man 1 qemu). A brief description of the + available back-ends follows: + + + + null + + + Creates an empty device that outputs no data and drops any data + it receives. + + + + + stdio + + + Connects to &qemu;'s process standard input and standard output. + + + + + socket + + + Creates a two-way stream socket. If + PATH is specified, a Unix socket is + created: + +&prompt.sudo;qemu-system-x86_64 [...] -chardev \ +socket,id=unix_socket1,path=/tmp/unix_socket1,server + + The SERVER suboption specifies that + the socket is a listening socket. + + + If PORT is specified, a TCP socket is + created: + +&prompt.sudo;qemu-system-x86_64 [...] -chardev \ +socket,id=tcp_socket1,host=localhost,port=7777,server,nowait + + The command creates a local listening (server) + TCP socket on port 7777. &qemu; does not block waiting for a + client to connect to the listening port + (nowait). + + + + + udp + + + Sends all network traffic from &vmguest; to a remote host over + the UDP protocol. + +&prompt.sudo;qemu-system-x86_64 [...] \ +-chardev udp,id=udp_fwd,host=&wsIVname;,port=7777 + + The command binds port 7777 on the remote host &wsIVname; and + sends &vmguest; network traffic there. + + + + + vc + + + Creates a new &qemu; text console. You can optionally specify the + dimensions of the virtual console: + +&prompt.sudo;qemu-system-x86_64 [...] -chardev vc,id=vc1,width=640,height=480 \ +-mon chardev=vc1 + + The command creates a new virtual console called + vc1 of the specified size, and connects the + &qemu; monitor to it. + + + + + file + + + Logs all traffic from &vmguest; to a file on &vmhost;. The + path is required and is automatically created + if it does not exist. + +&prompt.sudo;qemu-system-x86_64 [...] \ +-chardev file,id=qemu_log1,path=/var/log/qemu/guest1.log + + + + + By default &qemu; creates a set of character devices for serial and + parallel ports, and a special console for &qemu; monitor. However, you + can create your own character devices and use them for the mentioned + purposes. The following options may help you: + + + + -serial CHAR_DEV + + + Redirects the &vmguest;'s virtual serial port to a character + device CHAR_DEV on &vmhost;. By + default, it is a virtual console (vc) in + graphical mode, and stdio in non-graphical + mode. The -serial understands many + sub-options. See the man page man 1 qemu + for a complete list of them. + + + You can emulate up to four serial ports. Use -serial + none to disable all serial ports. + + + + + -parallel DEVICE + + + Redirects the &vmguest;'s parallel port to a + DEVICE. This option supports the same + devices as -serial. + + + + With + &sls;&opensuse; + Leap as a &vmhost;, you can directly use the hardware + parallel port devices /dev/parportN where + N is the number of the port. + + + + You can emulate up to three parallel ports. Use + -parallel none to disable all parallel ports. + + + + + -monitor CHAR_DEV + + + Redirects the &qemu; monitor to a character device + CHAR_DEV on &vmhost;. This option + supports the same devices as -serial. By + default, it is a virtual console (vc) in a + graphical mode, and stdio in non-graphical + mode. + + + + + + For a complete list of available character devices back-ends, see the + man page (man 1 qemu). + +
+
+
+ Networking in &qemu; + + + Use the -netdev option in combination with + to define a specific type of networking and a + network interface card for your &vmguest;. The syntax for the + option is + + +-netdev type[,prop[=value][,...]] + + + Currently, &suse; supports the following network types: + user, bridge, and + tap. For a complete list of -netdev + sub-options, see the man page (man 1 qemu). + + + + Supported <literal>-netdev</literal> sub-options + + bridge + + + Uses a specified network helper to configure the TAP interface and + attach it to a specified bridge. For more information, see + . + + + + + user + + + Specifies user-mode networking. For more information, see + . + + + + + tap + + + Specifies bridged or routed networking. For more information, see + . + + + + + +
+ Defining a network interface card + + Use -netdev together with the related + option to add a new emulated network card: + +&prompt.sudo;qemu-system-x86_64 [...] \ +-netdev tap,id=hostnet0 \ +-device virtio-net-pci,netdev=hostnet0,vlan=1,\ +macaddr=&wsIVmac;,name=ncard1 + + + + Specifies the network device type. + + + + + Specifies the model of the network card. Use + qemu-system-ARCH -device help and search for the + Network devices:section to get the list of all + network card models supported by &qemu; on your platform. + + cwickert 2017-09-01: still up to date? + + Currently, &suse; supports the models rtl8139, + e1000 and its variants + e1000-82540em, e1000-82544gc + and e1000-82545em, and + virtio-net-pci. To view a list of options for a + specific driver, add as a driver option: + +&prompt.sudo;qemu-system-x86_64 -device e1000,help +e1000.mac=macaddr +e1000.vlan=vlan +e1000.netdev=netdev +e1000.bootindex=int32 +e1000.autonegotiation=on/off +e1000.mitigation=on/off +e1000.addr=pci-devfn +e1000.romfile=str +e1000.rombar=uint32 +e1000.multifunction=on/off +e1000.command_serr_enable=on/off + + + + Connects the network interface to VLAN number 1. You can specify + your own number—it is mainly useful for identification + purpose. If you omit this suboption, &qemu; uses the default 0. + + + + + Specifies the Media Access Control (MAC) address for the network + card. It is a unique identifier and you are advised to always + specify it. If not, &qemu; supplies its own default MAC address and + creates a possible MAC address conflict within the related VLAN. + + + +
+ +
+ User-mode networking + + The -netdev user option instructs &qemu; to use + user-mode networking. This is the default if no networking mode is + selected. Therefore, these command lines are equivalent: + +&prompt.sudo;qemu-system-x86_64 -hda /images/sles_base.raw +&prompt.sudo;qemu-system-x86_64 -hda /images/sles_base.raw -netdev user,id=hostnet0 + + This mode is useful to allow the &vmguest; to access the external + network resources, such as the Internet. By default, no incoming + traffic is permitted and therefore, the &vmguest; is not visible to + other machines on the network. No administrator privileges are required + in this networking mode. The user-mode is also useful for doing a + network boot on your &vmguest; from a local directory on &vmhost;. + + + The &vmguest; allocates an IP address from a virtual DHCP server. + &vmhost; (the DHCP server) is reachable at 10.0.2.2, while the IP + address range for allocation starts from 10.0.2.15. You can use + ssh to connect to &vmhost; at 10.0.2.2, and + scp to copy files back and forth. + +
+ Command line examples + + This section shows several examples on how to set up user-mode + networking with &qemu;. + + + Restricted user-mode networking +&prompt.sudo;qemu-system-x86_64 [...] \ +-netdev user,id=hostnet0 \ +-device virtio-net-pci,netdev=hostnet0,vlan=1,name=user_net1,restrict=yes + + + + Specifies user-mode networking. + + + + + Connects to VLAN number 1. If omitted, defaults to 0. + + + + + Specifies a human-readable name of the network stack. Useful + when identifying it in the &qemu; monitor. + + + + + Isolates &vmguest;. It then cannot communicate with &vmhost; + and no network packets are routed to the external network. + + + + + + User-mode networking with custom IP range +&prompt.sudo;qemu-system-x86_64 [...] \ +-netdev user,id=hostnet0 \ +-device virtio-net-pci,netdev=hostnet0,net=10.2.0.0/8,host=10.2.0.6,\ +dhcpstart=10.2.0.20,hostname=tux_kvm_guest + + + + Specifies the IP address of the network that &vmguest; sees and + optionally the netmask. Default is 10.0.2.0/8. + + + + + Specifies the &vmhost; IP address that &vmguest; sees. Default + is 10.0.2.2. + + + + + Specifies the first of the 16 IP addresses that the built-in + DHCP server can assign to &vmguest;. Default is 10.0.2.15. + + + + + Specifies the host name that the built-in DHCP server assigns + to &vmguest;. + + + + + + User-mode networking with network-boot and TFTP +&prompt.sudo;qemu-system-x86_64 [...] \ +-netdev user,id=hostnet0 \ +-device virtio-net-pci,netdev=hostnet0,tftp=/images/tftp_dir,\ +bootfile=/images/boot/pxelinux.0 + + + + Activates a built-in TFTP (a file transfer protocol with the + functionality of a basic FTP) server. The files in the + specified directory are visible to a &vmguest; as the root of a + TFTP server. + + + + + Broadcasts the specified file as a BOOTP (a network protocol + that offers an IP address and a network location of a boot + image, often used in diskless workstations) file. When used + together with tftp, the &vmguest; can boot + via the network from the local directory on the host. + + + + + + User-mode networking with host port forwarding +&prompt.sudo;qemu-system-x86_64 [...] \ +-netdev user,id=hostnet0 \ +-device virtio-net-pci,netdev=hostnet0,hostfwd=tcp::2222-:22 + + Forwards incoming TCP connections to the port 2222 on the host to + the port 22 (SSH) on + &vmguest;. If sshd is + running on &vmguest;, enter + +&prompt.user;ssh qemu_host -p 2222 + + where qemu_host is the host name or IP address + of the host system, to get a + SSH prompt from &vmguest;. + + +
+
+ +
+ Bridged networking + + With the -netdev tap option, &qemu; creates a + network bridge by connecting the host TAP network device to a specified + VLAN of &vmguest;. Its network interface is then visible to the rest of + the network. This method does not work by default and needs to be + explicitly specified. + + + First, create a network bridge and add a &vmhost; physical network + interface to it, such as eth0: + + + + + Start &yastcc; and select + SystemNetwork + Settings. + + + + + Click Add and select Bridge + from the Device Type drop-down box in the + Hardware Dialog window. Click + Next. + + + + + Choose whether you need a dynamically or statically assigned IP + address, and fill the related network settings if applicable. + + + + + In the Bridged Devices pane, select the Ethernet + device to add to the bridge. + + + Click Next. When asked about adapting an already + configured device, click Continue. + + + + + Click OK to apply the changes. Check if the + bridge is created: + +&prompt.user;bridge link +2: eth0 state UP : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 \ + state forwarding priority 32 cost 100 + + + +
+ Connecting to a bridge manually + + Use the following example script to connect &vmguest; to the newly + created bridge interface br0. Several commands in + the script are run via the sudo mechanism because + they require &rootuser; privileges. + + + Required software + + To manage a network bridge, you need to have the + tunctl package installed. + + + +#!/bin/bash +bridge=br0 +tap=$(sudo tunctl -u $(whoami) -b) +sudo ip link set $tap up +sleep 1s +sudo ip link add name $bridge type bridge +sudo ip link set $bridge up +sudo ip link set $tap master $bridge +qemu-system-x86_64 -machine accel=kvm -m 512 -hda /images/sles_base.raw \ + -netdev tap,id=hostnet0 \ + -device virtio-net-pci,netdev=hostnet0,vlan=0,macaddr=&wsIVmac;,\ + ifname=$tap,script=no,downscript=no +sudo ip link set $tap nomaster +sudo ip link set $tap down +sudo tunctl -d $tap + + + + Name of the bridge device. + + + + + Prepare a new TAP device and assign it to the user who runs the + script. TAP devices are virtual network devices often used for + virtualization and emulation setups. + + + + + Bring up the newly created TAP network interface. + + + + + Make a 1-second pause to make sure the new TAP network interface + is really up. + + + + + Add the new TAP device to the network bridge + br0. + + + + + The ifname= suboption specifies the name of + the TAP network interface used for bridging. + + + + + Before qemu-system-ARCH connects to a network + bridge, it checks the script and + downscript values. If it finds the specified + scripts on the &vmhost; file system, it runs the + script before it connects to the network + bridge and downscript after it exits the + network environment. You can use these scripts to set up and tear + down the bridged interfaces. By default, + /etc/qemu-ifup and + /etc/qemu-ifdown are examined. If + script=no and downscript=no + are specified, the script execution is disabled and you need to + take care of it manually. + + + + + Deletes the TAP interface from a network bridge + br0. + + + + + Sets the state of the TAP device to down. + + + + + Tear down the TAP device. + + + +
+
+ Connecting to a bridge with qemu-bridge-helper + + Another way to connect &vmguest; to a network through a network + bridge is via the qemu-bridge-helper helper + program. It configures the TAP interface for you, and attaches it to + the specified bridge. The default helper executable is + /usr/lib/qemu-bridge-helper. The helper + executable is setuid root, which is only executable by the members of + the virtualization group (kvm). Therefore the + qemu-system-ARCH command itself does not need to + be run under &rootuser; privileges. + + + The helper is automatically called when you specify a network bridge: + +qemu-system-x86_64 [...] \ + -netdev bridge,id=hostnet0,vlan=0,br=br0 \ + -device virtio-net-pci,netdev=hostnet0 + + You can specify your own custom helper script that takes care of the + TAP device (de)configuration, with the + option: + +qemu-system-x86_64 [...] \ + -netdev bridge,id=hostnet0,vlan=0,br=br0,helper=/path/to/bridge-helper \ + -device virtio-net-pci,netdev=hostnet0 + + + To define access privileges to + qemu-bridge-helper, inspect the + /etc/qemu/bridge.conf file. For example, the + following directive + +allow br0 + + allows the qemu-system-ARCH command to connect + its &vmguest; to the network bridge br0. + + +
+
+
+
+ Viewing a &vmguest; with VNC + + + By default &qemu; uses a GTK (a cross-platform toolkit library) window to + display the graphical output of a &vmguest;. + + 2014-08-06 - fs: feedback from brogers: We should explain the "display + xxx" command line syntax to present the various display options before + diving into the vnc details. + + With the -vnc option specified, you can make &qemu; + listen on a specified VNC display and redirect its graphical output to + the VNC session. + + + + + When working with &qemu;'s virtual machine via VNC session, it is + useful to work with the -usbdevice tablet option. + + + Moreover, if you need to use another keyboard layout than the default + en-us, specify it with the -k + option. + + + + + The first suboption of -vnc must be a + display value. The -vnc option + understands the following display specifications: + + + + + host:display + + + Only connections from host on the display number + display are accepted. The TCP port on which the + VNC session is then running is normally a 5900 + + display number. If you do not specify + host, connections are accepted from any host. + + + + + unix:path + + + The VNC server listens for connections on Unix domain sockets. The + path option specifies the location of the + related Unix socket. + + + + + none + + + The VNC server functionality is initialized, but the server itself + is not started. You can start the VNC server later with the &qemu; + monitor. For more information, see + . + + + + + + + Following the display value there may be one or more option flags + separated by commas. Valid options are: + + + + + reverse + + + Connect to a listening VNC client via a + reverse connection. + + + + + websocket + + + Opens an additional TCP listening port dedicated to VNC Websocket + connections. By definition the Websocket port is 5700+display. + + + + + password + + + Require that password-based authentication is used for client + connections. + + + + + tls + + + Require that clients use TLS when communicating with the VNC + server. + + + + + x509=/path/to/certificate/dir + + + Valid if TLS is specified. Require that x509 credentials are used + for negotiating the TLS session. + + + + + x509verify=/path/to/certificate/dir + + + Valid if TLS is specified. Require that x509 credentials are used + for negotiating the TLS session. + + + + + sasl + + + Require that the client uses SASL to authenticate with the VNC + server. + + + + + acl + + + Turn on access control lists for checking of the x509 client + certificate and SASL party. + + + + + lossy + + + Enable lossy compression methods (gradient, JPEG, ...). + + + + + non-adaptive + + + Disable adaptive encodings. Adaptive encodings are enabled by + default. + + + + + share=[allow-exclusive|force-shared|ignore] + + + Set display sharing policy. + + + + + + + + For more details about the display options, see the + qemu-doc man page. + + + + + An example VNC usage: + + +&prompt.sudo;qemu-system-x86_64 [...] -vnc :5 +# (on the client:) +&prompt.user;vncviewer &wsII;:5 & + +
+ &qemu; VNC session + + + + + + + + +
+ +
+ Secure VNC connections + + The default VNC server setup does not use any form of authentication. + In the previous example, any user can connect and view the &qemu; VNC + session from any host on the network. + + + There are several levels of security that you can apply to your VNC + client/server connection. You can either protect your connection with a + password, use x509 certificates, use SASL authentication, or even + combine several authentication methods in one &qemu; command. + + + + For more information about configuring x509 certificates on a &vmhost; + and the client. + + + The Remmina VNC viewer supports advanced authentication mechanisms. For + this example, let us assume that the server x509 certificates + ca-cert.pem, server-cert.pem, + and server-key.pem are located in the + /etc/pki/qemu directory on the host. The client + certificates can be placed in any custom directory, as Remmina asks for + their path on the connection start-up. + + + Password authentication +qemu-system-x86_64 [...] -vnc :5,password -monitor stdio + + Starts the &vmguest; graphical output on VNC display number 5 which + corresponds to port 5905. The password suboption + initializes a simple password-based authentication method. There is + no password set by default and you need to set one with the + change vnc password command in &qemu; monitor: + +QEMU 2.3.1 monitor - type 'help' for more information +(qemu) change vnc password +Password: **** + + + You need the -monitor stdio option here, because + you would not be able to manage the &qemu; monitor without + redirecting its input/output. + + +
+ Authentication dialog in Remmina + + + + + + + + +
+ + x509 certificate authentication + + The &qemu; VNC server can use TLS encryption for the session and x509 + certificates for authentication. The server asks the client for a + certificate and validates it against the CA certificate. Use this + authentication type if your company provides an internal certificate + authority. + +qemu-system-x86_64 [...] -vnc :5,tls,x509verify=/etc/pki/qemu + + + x509 certificate and password authentication + + You can combine the password authentication with TLS encryption and + x509 certificate authentication to create a two-layer authentication + model for clients. Remember to set the password in the &qemu; monitor + after you run the following command: + +qemu-system-x86_64 [...] -vnc :5,password,tls,x509verify=/etc/pki/qemu \ +-monitor stdio + + + SASL authentication + + Simple Authentication and Security Layer (SASL) is a framework for + authentication and data security in Internet protocols. It integrates + several authentication mechanisms, like PAM, Kerberos, LDAP and more. + SASL keeps its own user database, so the connecting user accounts do + not need to exist on &vmhost;. + + + For security reasons, you are advised to combine SASL authentication + with TLS encryption and x509 certificates: + +qemu-system-x86_64 [...] -vnc :5,tls,x509,sasl -monitor stdio + +
+
+
From 76859d4e73a8a01f5808cf75189aad2c5222a967 Mon Sep 17 00:00:00 2001 From: Souvik Sarkar Date: Fri, 23 Jan 2026 17:45:31 +0530 Subject: [PATCH 28/35] Changes made by Souvik --- articles/virtualization-disk-cache.asm.xml | 4 +- articles/virtualization-io.asm.xml | 15 ++- articles/virtualization-libvirt.asm.xml | 8 +- articles/virtualization-qemu.asm.xml | 6 +- articles/virtualization-spice-removal.asm.xml | 6 +- articles/virtualization-support.asm.xml | 8 +- articles/virtualization.asm.xml | 6 +- images/default-vm-options.png | Bin 62906 -> 51248 bytes references/libvirt_configuration_virsh.xml | 8 +- references/libvirt_guest_installation.xml | 12 +-- references/qemu_host_installation.xml | 4 +- references/qemu_running_vms_qemukvm.xml | 6 +- references/virtualization-io.xml | 8 +- references/virtualization-spice-removal.xml | 92 +++++++++++------- references/virtualization-support.xml | 6 +- 15 files changed, 107 insertions(+), 82 deletions(-) diff --git a/articles/virtualization-disk-cache.asm.xml b/articles/virtualization-disk-cache.asm.xml index feb55fc44..bcd413add 100644 --- a/articles/virtualization-disk-cache.asm.xml +++ b/articles/virtualization-disk-cache.asm.xml @@ -34,7 +34,7 @@ - + Smart Docs @@ -50,7 +50,7 @@ https://bugzilla.suse.com/enter_bug.cgi Documentation SUSE Linux Enterprise Server 16.0 - tbazant@suse.com + souvik.sarkar@suse.com yes diff --git a/articles/virtualization-io.asm.xml b/articles/virtualization-io.asm.xml index 3a1412af1..4a2253520 100644 --- a/articles/virtualization-io.asm.xml +++ b/articles/virtualization-io.asm.xml @@ -42,7 +42,7 @@ Products & Solutions - + Virtualization @@ -75,7 +75,9 @@ Learn about the basic concepts of virtualization IO. - I/O virtualization enables virtual machines (VMs) to efficiently interact with hardware devices (e.g., network cards, storage) via the hypervisor. + I/O virtualization enables virtual machines (VMs) + to efficiently interact with hardware devices (for example, network cards and storage) through the + hypervisor. @@ -83,7 +85,10 @@ WHAT? - I/O virtualization is the mechanism enabling &vmguest; to interact with physical hardware devices (e.g., network interfaces, storage controllers) through a hypervisor, optimizing resource usage while managing performance trade-offs between emulation, direct assignment, and hardware-assisted techniques. + I/O virtualization is the mechanism enabling &vmguest; to interact with physical hardware + devices (for example, network interfaces and storage controllers) through a hypervisor, optimizing + resource usage while managing performance trade-offs between emulation, direct assignment + and hardware-assisted techniques. @@ -91,7 +96,9 @@ WHY? - Full emulation I/O latency overhead and consumes significant CPU resources, making hardware-assisted techniques (VFIO/SR-IOV) essential for latency-sensitive workloads like high-performance networking and storage. + Full emulation I/O latency overhead and consumes significant CPU resources, making + hardware-assisted techniques (VFIO/SR-IOV) essential for latency-sensitive workloads such + as high-performance networking and storage. diff --git a/articles/virtualization-libvirt.asm.xml b/articles/virtualization-libvirt.asm.xml index e2d886e94..6d281bdd1 100644 --- a/articles/virtualization-libvirt.asm.xml +++ b/articles/virtualization-libvirt.asm.xml @@ -82,11 +82,11 @@ - Introduction to libvirt + Introduction to &libvirt; Manage virtualization platforms (KVM, QEMU) with a unified API. - Libvirt provides a consistent management interface for virtualization platforms, eliminating vendor-specific tool complexity. + &libvirt; provides a consistent management interface for virtualization platforms, eliminating vendor-specific tool complexity. @@ -94,7 +94,7 @@ WHAT? - Libvirt is a software toolkit that provides a consistent API for managing virtual machines across multiple hypervisor platforms (KVM, QEMU). + &libvirt; is a software toolkit that provides a consistent API for managing virtual machines across multiple hypervisor platforms (KVM, QEMU). @@ -102,7 +102,7 @@ WHY? - Eliminates operational complexity of managing vendor-specific tools + &libvirt; eliminates operational complexity of managing vendor-specific tools. diff --git a/articles/virtualization-qemu.asm.xml b/articles/virtualization-qemu.asm.xml index f7c0269b6..3afd47e0f 100644 --- a/articles/virtualization-qemu.asm.xml +++ b/articles/virtualization-qemu.asm.xml @@ -48,7 +48,7 @@ Products & Solutions - + Virtualization @@ -81,7 +81,7 @@ Learn about the basic concepts of virtualization. - By means of virtualization, you can run multiple virtual machines on a single bare-metal host to save resources + Using virtualization, you can run multiple virtual machines on a single bare-metal host to save resources @@ -89,7 +89,7 @@ WHAT? - By means of virtualization, you can run multiple virtual machines on a single + Using virtualization, you can run multiple virtual machines on a single bare-metal host. diff --git a/articles/virtualization-spice-removal.asm.xml b/articles/virtualization-spice-removal.asm.xml index 4aebf5466..cf43119c6 100644 --- a/articles/virtualization-spice-removal.asm.xml +++ b/articles/virtualization-spice-removal.asm.xml @@ -42,7 +42,7 @@ Products & Solutions - + Virtualization @@ -71,7 +71,7 @@ - Spice Removal in Virtualization Toolstack + Spice removal in virtualization tool stack Migration guidance from Spice to alternative virtualization protocols. @@ -83,7 +83,7 @@ WHAT? - SUSE Linux Enterprise provides comprehensive virtualization support through KVM with alternative protocols replacing Spice, enabling efficient resource utilization and scalable cloud deployments without Spice dependency. This includes migration paths and alternative solutions for Spice-based virtualization. + &sle; provides comprehensive virtualization support through &kvm; with alternative protocols replacing Spice, enabling efficient resource utilization and scalable cloud deployments without Spice dependency. This includes migration paths and alternative solutions for Spice-based virtualization. diff --git a/articles/virtualization-support.asm.xml b/articles/virtualization-support.asm.xml index e33719369..c905a12db 100644 --- a/articles/virtualization-support.asm.xml +++ b/articles/virtualization-support.asm.xml @@ -42,7 +42,7 @@ Products & Solutions - + Virtualization @@ -72,10 +72,10 @@ Virtualization support - Support statement of virtualization. + Support for virtualization - What is the current supprot of virtualization toolstack in the SUSE product. + Support for virtualization tool stack in SUSE products. @@ -83,7 +83,7 @@ WHAT? - SUSE Linux Enterprise provides comprehensive virtualization support through KVM, and third party hypervisor as guest enabling efficient resource utilization and scalable cloud deployments. + &sle; provides comprehensive virtualization support through &kvm;, and third party hypervisor as guest enabling efficient resource utilization and scalable cloud deployments. diff --git a/articles/virtualization.asm.xml b/articles/virtualization.asm.xml index 7471d437e..0a0cdffd4 100644 --- a/articles/virtualization.asm.xml +++ b/articles/virtualization.asm.xml @@ -47,7 +47,7 @@ Products & Solutions - + Virtualization @@ -80,7 +80,7 @@ Learn about the basic concepts of virtualization. - By means of virtualization, you can run multiple virtual machines on a single bare-metal host to save resources + Using virtualization, you can run multiple virtual machines on a single bare-metal host to save resources @@ -88,7 +88,7 @@ WHAT? - By means of virtualization, you can run multiple virtual machines on a single + Using virtualization, you can run multiple virtual machines on a single bare-metal host. diff --git a/images/default-vm-options.png b/images/default-vm-options.png index 29edf5a1db77bc1763168459917d7f4cd8c4096b..8fb4a486a1b6d33c3b1b530c5a8ecb3c92d46c17 100644 GIT binary patch literal 51248 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 z�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 literal 62906 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 fhTpC|6{81l|KVX)?7R-cjX libvirt automatically enables a default set of hypervisor features that are sufficient in most circumstances, but also - allows enabling and disabling features as needed. + allows enabling and disabling features as needed. Hypervisor features can be configured with &virsh;. Look for the <features> element in the &vmguest;'s configuration file and adjust its features as @@ -909,9 +909,7 @@ Bus 001 Device 003: ID 0557:2221 ATEN Internati An AMD64/IntelĀ 64 host supporting hardware virtualization (AMD-V or - Intel VT-x) + Intel VT-x). For more information, see the section Architecture Support in the article Virtualization Limits and Support. @@ -1564,7 +1562,7 @@ Found 1 nodes in stdin: &vmguest; contains PCI and SCSI devices, PCI and SCSI controllers are created and managed automatically. libvirt also models controllers that are hypervisor-specific, for example, a - virtio-serial controller for KVM. Although the + virtio-serial controller for KVM. Although the default controllers and their configuration are generally fine, there may be use cases where controllers or their attributes need to be adjusted manually. diff --git a/references/libvirt_guest_installation.xml b/references/libvirt_guest_installation.xml index cc087f1da..d570f3a6f 100644 --- a/references/libvirt_guest_installation.xml +++ b/references/libvirt_guest_installation.xml @@ -16,8 +16,8 @@ A &vmguest; consists of an image containing an operating system and data files and a configuration file describing the &vmguest;'s virtual hardware resources. &vmguest;s are hosted on and controlled by the &vmhost;. This section provides generalized instructions for - installing a &vmguest;. + installing a &vmguest;. For a list of supported &vmguest;s, refer to the + section Supported guest operating systems in the article Virtualization Limits and Support. Virtual machines have few if any requirements above those required to run the operating system. @@ -86,7 +86,7 @@ Specify the path on the &vmhost; to an ISO image containing the installation data. If it is available as a volume in a libvirt storage pool, you can also select it - using Browse. + using Browse. @@ -427,7 +427,7 @@ It is possible to directly specify the Kernel and Initrd of the installer, for example, - from a network source. + from a network source. To pass additional boot parameters, use the option. This @@ -470,7 +470,7 @@ network=vnet_nated - &suse; supports &uefisecboot; on &x86-64; &kvm; guests only. + &suse; supports &uefisecboot; on &x86-64; &kvm; guests only. @@ -698,7 +698,7 @@ network=vnet_nated If you are installing from the command line, you need to set up the virtual CD/DVD drives with the parameter rather than with . The - device that is specified first is used for booting. + device that is specified first is used for booting.
diff --git a/references/qemu_host_installation.xml b/references/qemu_host_installation.xml index 10ff7aadd..27f0ee237 100644 --- a/references/qemu_host_installation.xml +++ b/references/qemu_host_installation.xml @@ -35,8 +35,8 @@ - To find out whether your system supports virtualization. + To find out whether your system supports virtualization, see the section Architecture + Support in the article Virtualization Limits and Support.
diff --git a/references/qemu_running_vms_qemukvm.xml b/references/qemu_running_vms_qemukvm.xml index dff35bada..5edfb1ab2 100644 --- a/references/qemu_running_vms_qemukvm.xml +++ b/references/qemu_running_vms_qemukvm.xml @@ -4,7 +4,7 @@ %entities; ]> - + Running virtual machines with qemu-system-ARCH @@ -22,10 +22,10 @@ Once you have a virtual disk image ready (for more information on disk - images, see ), it is time to + images, see ), you can start the related virtual machine. introduced simple commands - to install and run a &vmguest;. This chapter focuses on a more detailed + to install and run a &vmguest;. This article focuses on a more detailed explanation of qemu-system-ARCH usage, and shows solutions for more specific tasks. For a complete list of qemu-system-ARCH's options, see its man page diff --git a/references/virtualization-io.xml b/references/virtualization-io.xml index 932de175a..d744a12cc 100644 --- a/references/virtualization-io.xml +++ b/references/virtualization-io.xml @@ -53,10 +53,10 @@ and the &vmguest;. With less overhead involved, performance is much better than with full virtualization. However, paravirtualization requires either the guest operating system to be modified to support the - paravirtualization API or paravirtualized drivers. + paravirtualization API, or availability of paravirtualized drivers. For a list of guest operating systems supporting paravirtualization, refer to + the section Availability of paravirtualized drivers of the article Virtualization Limits and + Support. diff --git a/references/virtualization-spice-removal.xml b/references/virtualization-spice-removal.xml index b6c85a82b..3b41ac813 100644 --- a/references/virtualization-spice-removal.xml +++ b/references/virtualization-spice-removal.xml @@ -4,7 +4,7 @@ %entities; ]> - Deprecation of Spice and Migration to VNC in SUSE Linux Enterprise 16 @@ -16,27 +16,37 @@
Overview of Spice Deprecation - - Starting with SUSE Linux Enterprise 16 (SLE16), support for the Spice remote computing protocol for virtual machines (VMs) has been completely removed in favor of VNC, which is a more universally adopted standard. Consequently, any attempt to start a Spice-based VM on an SLE16 host will fail with an error. All existing VMs that were created on SLE15-SP7 or earlier and are configured to use Spice for the graphical console must be manually converted to use VNC. Currently, no automated conversion tool is provided, so this process requires manually editing the VM's XML configuration file. - + + Removal of Spice in &slea; 16 + + Starting with &sle; 16, support for the Spice remote computing protocol for virtual machines (VMs) + has been completely removed in favor of VNC, which is a more universally adopted standard. + Consequently, any attempt to start a Spice-based VM on an &slea; 16 host will fail with an error. + All existing VMs that were created on &slea; 15 SP7 or earlier and are configured to use Spice for the + graphical console must be manually converted to use VNC. Currently, no automated conversion tool + is provided, so this process requires manually editing the VM's XML configuration file. + + The following procedure outlines the steps to convert a VM from Spice to VNC. - First, ensure the virtual machine is completely shut down before making any changes. This prevents any potential data corruption or configuration mismatches. - virsh shutdown <vm_name> + Ensure the virtual machine is completely shut down before making any changes. This prevents any potential data corruption or configuration mismatches. + &prompt.sudo;virsh shutdown VM-NAME Export the current XML configuration of the VM to a file. This file will be edited in the next steps. - virsh dumpxml <vm_name> > <vm_name>.xml + &prompt.sudo;virsh dumpxml VM-NAME > VM-NAME.xml - It is highly recommended to create a backup of the original XML definition. This allows you to restore the original configuration if something goes wrong during the editing process. - cp <vm_name>.xml <vm_name>-spice.xml + Create a backup of the original XML definition. This allows you to restore the original configuration if something goes wrong during the editing process. + &prompt.user;cp VM-NAME.xml VM-NAME-SPICE.xml - Proceed to manually edit the VM's XML configuration file to remove all Spice-related elements and modify others to use VNC. + Manually edit the VM's XML configuration file to remove all Spice-related elements and + modify others to use VNC. For detailed information, see the subsequent sections. +
@@ -57,11 +67,12 @@ <redirdev bus='usb' type='spicevmc'> <address type='usb' bus='0' port='3'/> - </redirdev> + </redirdev> +
Modifying XML Elements for VNC Compatibility - After removing the Spice-specific elements, you need to modify several other XML elements to switch the VM from using Spice to VNC for its graphical console and other devices. + After removing the Spice-specific elements, modify several other XML elements to switch the VM from using Spice to VNC for its graphical console and other devices.
Graphics and Audio The primary change is to switch the graphics display protocol from Spice to VNC. You should also disable the audio device, as Spice-based audio is no longer supported. @@ -76,33 +87,37 @@
QXL Video Device Conversion for Windows VMs - The QXL video driver is optimized for the Spice protocol and is commonly used in Windows VMs. For better compatibility with VNC, it is recommended to replace it with the more generic `virtio` video driver. + The QXL video driver is optimized for the Spice protocol and is commonly used in Windows VMs. For better compatibility with VNC, it is recommended to replace it with the more generic virtio video driver. If your VM, especially a Windows guest, uses a QXL video device like this: - <video> - <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/> - <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/> - </video> + + <video> + <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/> + </video> + Replace the entire <video> block with a simpler virtio model definition: - <video> - <model type="virtio"/> - </video> + + <video> + <model type="virtio"/> + </video> + - When you define the VM, libvirt will automatically fill in the necessary default values for the virtio video device, so you don't need to specify details like RAM or bus address. + When you define the VM, &libvirt; will automatically fill in the necessary default values for the virtio video device, so you don't need to specify details like RAM or bus address.
Applying the New Configuration and Starting the VM - After you have finished editing the XML file and saved your changes, you need to make libvirt aware of the new configuration. This is done by first undefining the VM, which removes its old configuration from libvirt, and then defining it again using the modified XML file. + After you have finished editing the XML file and saved your changes, you need to make &libvirt; aware of the new configuration. This is done by first undefining the VM, which removes its old configuration from &libvirt;, and then defining it again using the modified XML file. Undefine the existing VM configuration and then define it again with the modified XML file: - virsh undefine <vm_name> -virsh define <vm_name>.xml + &prompt.sudo;virsh undefine <vm_name> + &prompt.sudo;virsh define <vm_name>.xml - You can now start the VM, which will be using VNC for its graphical console. - virsh start <vm_name> + Start the VM, which will be using VNC for its graphical console. + &prompt.sudo;virsh start <vm_name>
@@ -112,24 +127,29 @@ virsh define <vm_name>.xml A common feature available with Spice is copy-paste functionality between the host and the guest VM, which is handled by the Spice agent. After migrating to VNC, this functionality will be lost. However, you can restore it by using the QEMU guest agent. - First, ensure you have updated gtk-vnc packages on your SLE16 host. The versions shipped with the initial release of SLE16 may not have support for copy-paste over VNC. + + Ensure you have updated gtk-vnc packages on your &slea; 16 host. + The versions shipped with the initial release of &slea; 16 may not have support for copy-paste over + VNC. + Inside the guest VM, ensure the QEMU guest agent is installed and the corresponding service is enabled to start on boot. - systemctl enable qemu-guest-agent + &prompt.sudo;systemctl enable qemu-guest-agent Add a new channel definition to the VM's XML configuration. This channel allows communication with the QEMU guest agent for features like copy-paste. - <channel type="qemu-vdagent"> - <source> - <clipboard copypaste="yes"/> - </source> - <target type="virtio" name="com.redhat.spice.0"/> - <address type="virtio-serial" controller="0" bus="0" port="1"/> - </channel> + + <channel type="qemu-vdagent"> + <source> + <clipboard copypaste="yes"/> + </source> + <target type="virtio" name="com.redhat.spice.0"/> + <address type="virtio-serial" controller="0" bus="0" port="1"/> + </channel> - Finally, shut down and restart the VM for the changes to take effect. + Shut down and restart the VM for the changes to take effect.
diff --git a/references/virtualization-support.xml b/references/virtualization-support.xml index c140b1b21..8952e182d 100644 --- a/references/virtualization-support.xml +++ b/references/virtualization-support.xml @@ -18,7 +18,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:trans="http://docbook.org/ns/transclusion"> - Virtualization limits and support + Virtualization Limits and Support Virtualization limits and support @@ -393,7 +393,7 @@ - &sls; 15 SP3, 15 SP4, 15 SP5, 15 SP6, 15 SP6 + &sls; 15 SP3, 15 SP4, 15 SP5, 15 SP6, 15 SP7 @@ -876,7 +876,7 @@ Confidential Computing - Please read lastest information about Confidential computing in the release notes: + For information about Confidential computing, refer to the release notes: From 2d76852c11173c143803ba3ec5d293b770981062 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Gini=C3=A8s?= Date: Fri, 23 Jan 2026 18:02:56 +0100 Subject: [PATCH 29/35] Update articles/virtualization-support.asm.xml Co-authored-by: lvicoun --- articles/virtualization-support.asm.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/virtualization-support.asm.xml b/articles/virtualization-support.asm.xml index c905a12db..6963a1d77 100644 --- a/articles/virtualization-support.asm.xml +++ b/articles/virtualization-support.asm.xml @@ -83,7 +83,7 @@ WHAT? - &sle; provides comprehensive virtualization support through &kvm;, and third party hypervisor as guest enabling efficient resource utilization and scalable cloud deployments. + &suselinux; provides comprehensive virtualization support through &kvm;, and third party hypervisor as guest enabling efficient resource utilization and scalable cloud deployments. From 936dfa93b73cccc4a0f084c03498cc8b24f71390 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Gini=C3=A8s?= Date: Fri, 23 Jan 2026 18:03:11 +0100 Subject: [PATCH 30/35] Update references/libvirt_guest_installation.xml Co-authored-by: lvicoun --- references/libvirt_guest_installation.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/libvirt_guest_installation.xml b/references/libvirt_guest_installation.xml index d570f3a6f..9086091d8 100644 --- a/references/libvirt_guest_installation.xml +++ b/references/libvirt_guest_installation.xml @@ -16,7 +16,7 @@ A &vmguest; consists of an image containing an operating system and data files and a configuration file describing the &vmguest;'s virtual hardware resources. &vmguest;s are hosted on and controlled by the &vmhost;. This section provides generalized instructions for - installing a &vmguest;. For a list of supported &vmguest;s, refer to the + installing a &vmguest;. For a list of supported &vmguest;s, refer to the section Supported guest operating systems in the article Virtualization Limits and Support. From 2284b1bc81ed033a09261a623948bc79f350d908 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Gini=C3=A8s?= Date: Fri, 23 Jan 2026 18:03:23 +0100 Subject: [PATCH 31/35] Update references/virtualization-spice-removal.xml Co-authored-by: lvicoun --- references/virtualization-spice-removal.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/virtualization-spice-removal.xml b/references/virtualization-spice-removal.xml index 3b41ac813..4f3ab9b15 100644 --- a/references/virtualization-spice-removal.xml +++ b/references/virtualization-spice-removal.xml @@ -107,7 +107,7 @@
- Applying the New Configuration and Starting the VM + Applying the new configuration and starting the VM After you have finished editing the XML file and saved your changes, you need to make &libvirt; aware of the new configuration. This is done by first undefining the VM, which removes its old configuration from &libvirt;, and then defining it again using the modified XML file. From 965799422d40ed8b37f02bc2478bb7e7aa8031e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Gini=C3=A8s?= Date: Fri, 23 Jan 2026 18:03:33 +0100 Subject: [PATCH 32/35] Update references/virtualization-spice-removal.xml Co-authored-by: lvicoun --- references/virtualization-spice-removal.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/virtualization-spice-removal.xml b/references/virtualization-spice-removal.xml index 4f3ab9b15..c1599347b 100644 --- a/references/virtualization-spice-removal.xml +++ b/references/virtualization-spice-removal.xml @@ -123,7 +123,7 @@
- Restoring Copy-Paste Functionality + Restoring copy-paste functionality A common feature available with Spice is copy-paste functionality between the host and the guest VM, which is handled by the Spice agent. After migrating to VNC, this functionality will be lost. However, you can restore it by using the QEMU guest agent. From 419b532263571e96f85b9627dc8d813fc5978818 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Gini=C3=A8s?= Date: Fri, 23 Jan 2026 18:03:41 +0100 Subject: [PATCH 33/35] Update references/virtualization-support.xml Co-authored-by: lvicoun --- references/virtualization-support.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/virtualization-support.xml b/references/virtualization-support.xml index 8952e182d..71f95e082 100644 --- a/references/virtualization-support.xml +++ b/references/virtualization-support.xml @@ -18,7 +18,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:trans="http://docbook.org/ns/transclusion"> - Virtualization Limits and Support + Virtualization limits and support Virtualization limits and support From fb267a5db5a3d7479304013d74e419790aa7bb7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Gini=C3=A8s?= Date: Fri, 23 Jan 2026 18:03:48 +0100 Subject: [PATCH 34/35] Update references/virtualization-spice-removal.xml Co-authored-by: lvicoun --- references/virtualization-spice-removal.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/virtualization-spice-removal.xml b/references/virtualization-spice-removal.xml index c1599347b..c5a317b86 100644 --- a/references/virtualization-spice-removal.xml +++ b/references/virtualization-spice-removal.xml @@ -19,7 +19,7 @@ Removal of Spice in &slea; 16 - Starting with &sle; 16, support for the Spice remote computing protocol for virtual machines (VMs) + Starting with &suselinux; 16, support for the Spice remote computing protocol for virtual machines (VMs) has been completely removed in favor of VNC, which is a more universally adopted standard. Consequently, any attempt to start a Spice-based VM on an &slea; 16 host will fail with an error. All existing VMs that were created on &slea; 15 SP7 or earlier and are configured to use Spice for the From 03df17197679a002ffb56e89a53e99f007789c06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Gini=C3=A8s?= Date: Fri, 23 Jan 2026 18:03:58 +0100 Subject: [PATCH 35/35] Update references/virtualization-spice-removal.xml Co-authored-by: lvicoun --- references/virtualization-spice-removal.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/virtualization-spice-removal.xml b/references/virtualization-spice-removal.xml index c5a317b86..98191cd5a 100644 --- a/references/virtualization-spice-removal.xml +++ b/references/virtualization-spice-removal.xml @@ -17,7 +17,7 @@
Overview of Spice Deprecation - Removal of Spice in &slea; 16 + Removal of Spice in &suselinux; 16 Starting with &suselinux; 16, support for the Spice remote computing protocol for virtual machines (VMs) has been completely removed in favor of VNC, which is a more universally adopted standard.