← Back to Blog

VirtIO and the QEMU Guest Agent: What They Are, What They Do on Your VPS and What Breaks If You Remove Them

Published · by Leo Gashi, RS Computers

KVM VirtIO Linux Windows

VirtIO is the set of drivers that lets a KVM virtual server talk to the host's disk and network directly instead of pretending to be old hardware, and the QEMU guest agent is a small service inside the server that answers the host when it needs something done: freeze the filesystems for a backup, report disk usage, set a password, shut down cleanly. Keep both installed. On our test server, VirtIO moved 16.7 Gbit/s where an emulated Intel network card managed 1.3, and read 7.7 times more random 4 KB blocks per second than an emulated SATA disk. Without the agent, the host could no longer freeze the disk for a backup at all.

We get asked about this most by people who clean up a fresh server and remove "unknown" packages and drivers, or who find Red Hat drivers on a Windows server and wonder why they are there. This page explains what each piece does, shows what we measured on a Debian 13 KVM guest on 23 October 2026, and lists exactly what stops working when it is removed. Every RS Computers VPS and VDS is a KVM virtual machine, in Amsterdam, Dublin and Prishtina, so all of it applies to them.

Key facts:

What is VirtIO?

A virtual server has no real disk controller or network card. The host has to show it something. The old way is emulation: the host imitates a real chip, such as an Intel e1000 network card or an IDE disk controller from the 1990s, and the guest talks to that imitation with the driver it already knows. It works everywhere, and it is slow, because every read or packet goes through code that pretends to be hardware register by register.

VirtIO skips the pretending. Both sides know they are virtual and swap data through shared memory queues, with very little work per request. That is called paravirtualization: the guest needs a VirtIO driver, but in return a disk or network card costs a fraction of the CPU time.

The pieces you meet on a server:

DeviceWhat it doesLinux driverWindows driver (virtio-win)
Block or SCSI storageThe server's diskvirtio_blk, virtio_scsiviostor, vioscsi
NetworkThe network cardvirtio_netNetKVM
SerialThe channel the guest agent talks overvirtio_consolevioserial
Memory balloonReports memory use and lets the host reclaim free RAMvirtio_balloonBalloon
EntropyRandom numbers from the host, useful for TLS keys at bootvirtio_rngviorng

What is the QEMU guest agent?

The QEMU guest agent, qemu-ga, is a program that runs inside your server and waits on a private serial channel for requests from the host. It cannot be reached from the network. The host sends a short JSON command, the agent does it inside the guest and answers. The agent we tested, version 10.0.13 on Debian 13, had 43 commands enabled.

The ones that matter on a hosted server:

It also has commands to run programs and read or write files. You can switch those off and keep the rest; see limit what the agent may do below.

What we measured on a Debian 13 KVM server

The test machine was a Debian 13 cloud image with kernel 6.12 on our Netherlands lab host: 4 vCPUs, 4 GB of RAM, QEMU 10.0.13 with KVM. It had three extra 4 GB test disks on the same NVMe drive, one attached through VirtIO, one through an emulated SATA (AHCI) controller and one through an emulated IDE controller. Each disk was first filled with random data, because reading an empty sparse file costs nothing and makes slow interfaces look fast. It also had two network cards on the same bridge: VirtIO and an emulated Intel e1000. Disk tests used fio with direct I/O for 15 seconds, after a warm-up run. Network tests used iperf3 for 10 seconds against a container on the same bridge.

Disk testVirtIOEmulated SATAEmulated IDE
Random read, 4 KB, queue 3242,342 IOPS5,475 IOPS1,220 IOPS
Random write, 4 KB, queue 3234,427 IOPS5,470 IOPS1,273 IOPS
Guest CPU during random reads35%98%3% (waiting)
Sequential read, 1 MB blocks2,685 MB/s, 8% CPU3,239 MB/s, 44% CPU232 MB/s
Sequential write, 1 MB blocks1,879 MB/s, 7% CPU2,274 MB/s, 27% CPU274 MB/s

One result surprised us, and we left it in: with big 1 MB blocks, the emulated SATA controller read faster than VirtIO, but it used more than five times the CPU to do it. Websites, databases and mail servers mostly do small random reads and writes, and there VirtIO did 7.7 times the work of SATA and 35 times the work of IDE, while leaving most of the CPU free for your application.

Network testVirtIO networkEmulated Intel e1000
Guest sending16.73 Gbit/s1.31 Gbit/s
Guest receiving16.45 Gbit/s3.27 Gbit/s

Both ran at 87 to 99% guest CPU, so the difference is how much traffic one CPU's worth of work moves. On a VDS with a 10 Gb/s port, an emulated card could not use most of it.

And the guest agent, sent from the host over its channel:

RequestAgent installedAgent removed
Pinganswered at onceno answer after 5 seconds
Disk usage of /ext4, 1.07 GB used of 11.91 GBunknown
Freeze filesystemsfrozen in 5 ms; a write plus sync inside the guest waited until the thaw, then went throughno answer, so no freeze
Set the password of user debiandone; logging in with the new password workednot possible from the host
Clean shutdownpowered off 1.4 s after the requestACPI power button instead: 4.7 s

What happens if you uninstall them

This is the part that costs people a night. What breaks depends on what was removed.

Windows: the VirtIO storage driver

This is the dangerous one. A Windows server on KVM reads its own system disk through viostor or vioscsi; on our servers, whose disks sit on a VirtIO SCSI controller, it is vioscsi. Remove that driver, or uninstall the whole "Virtio-win guest tools" package, and the next boot cannot reach the disk: Windows stops with the blue screen INACCESSIBLE_BOOT_DEVICE (0x7B) and never reaches the login screen. Your data is still on the disk, but the server is down until the driver is injected again from a recovery environment. Do not remove anything called Red Hat VirtIO, viostor or vioscsi from Device Manager.

Windows: the network driver (NetKVM)

Without it, Windows has a network card it cannot use: no internet, no Remote Desktop. The server still runs, so the only way in is the console in your client area. Reinstall the driver from the virtio-win ISO there.

Windows or Linux: the QEMU guest agent

Nothing crashes, which is why people remove it without noticing. What you lose:

Linux: the VirtIO drivers

You cannot really uninstall them; they ship with the kernel. The risk on Linux is a custom kernel or initramfs built without them, which fails to find the root disk at boot. If you build your own kernel for a KVM server, keep virtio_blk, virtio_scsi and virtio_net.

Check that they are installed

On Linux

Run these as a normal user with sudo or as root. Disks attached through VirtIO show virtio in the TRAN column:

lsblk -dno NAME,TRAN,SIZE

Our test server printed, among others:

vdb virtio 4G

On RS Computers servers the disk sits on a VirtIO SCSI controller, so it is called sda; check the controller with:

lspci | grep -i virtio

Each VirtIO device appears as a line with Red Hat, Inc. Virtio in it. Then the agent channel and the agent itself:

ls /dev/virtio-ports/
systemctl is-active qemu-guest-agent

Expected output:

org.qemu.guest_agent.0
active

If the second line says inactive or the unit is not found, install the agent. On Debian and Ubuntu:

sudo apt update
sudo apt install -y qemu-guest-agent
sudo systemctl start qemu-guest-agent
systemctl is-active qemu-guest-agent

On AlmaLinux and Rocky Linux use sudo dnf install -y qemu-guest-agent instead of the two apt lines. The last command must print active. On Debian the service starts by itself at every boot when the agent channel exists, so there is nothing to enable.

On Windows

Open Device Manager. Under Storage controllers you should see a Red Hat VirtIO SCSI or VirtIO storage controller, under Network adapters a Red Hat VirtIO Ethernet Adapter, and under System devices a VirtIO Serial Driver. Then check the agent in PowerShell:

Get-Service QEMU-GA

Status should be Running. If any of it is missing, download the virtio-win ISO, open it, and run virtio-win-guest-tools.exe; it installs the drivers and the guest agent together. Our VMware to KVM migration guide shows the same package in use when a Windows server moves to KVM.

Worried about privacy? Limit the agent instead of removing it

It is a fair question: the agent can also run programs and read files inside your server when the host asks. We do not use those commands; our client area only asks for disk usage, and backups only ask for the freeze. If you want that enforced by your own server rather than by our word, block them and keep the useful part. On Debian and Ubuntu the agent reads /etc/qemu/qemu-ga.conf:

sudo mkdir -p /etc/qemu
printf '[general]\nblock-rpcs=guest-exec,guest-exec-status,guest-file-open,guest-file-read,guest-file-write\n' | sudo tee /etc/qemu/qemu-ga.conf
sudo systemctl restart qemu-guest-agent

We tested exactly this. Afterwards, a host request to run a program came back with Command guest-exec has been disabled: the command is not allowed, and so did a request to open a file, while disk usage and the freeze status still answered normally. On AlmaLinux and Rocky the same list goes in /etc/sysconfig/qemu-ga as BLOCK_RPCS=.

Frequently asked questions

What is VirtIO?

VirtIO is a standard for virtual devices, such as disks, network cards and serial ports, that a virtual machine uses through special drivers instead of imitating real hardware. On KVM it makes disk and network access much faster and uses less CPU. In our test a VirtIO network card moved 16.7 Gbit/s against 1.3 Gbit/s for an emulated Intel e1000.

What does the QEMU guest agent do?

The QEMU guest agent is a service inside a KVM virtual machine that carries out requests from the host over a private serial channel. It freezes filesystems for consistent backups, reports disk usage and IP addresses, sets user passwords and shuts the machine down cleanly. It is not reachable from the network.

Is it safe to uninstall the QEMU guest agent?

The server keeps running, but backups become crash-consistent instead of frozen and consistent, the host can no longer show disk usage or reset a password, and shutdowns fall back to the power button. If the concern is privacy, block the exec and file commands in /etc/qemu/qemu-ga.conf instead of removing the agent.

Can I uninstall the VirtIO drivers on Windows?

No. A Windows server on KVM reads its system disk through the VirtIO storage driver. Without it, Windows stops at boot with INACCESSIBLE_BOOT_DEVICE (0x7B). Without the VirtIO network driver it has no network and no Remote Desktop.

Do Linux servers need VirtIO drivers installed?

No, they are part of the Linux kernel already. Only the guest agent is a separate package: qemu-guest-agent on Debian, Ubuntu, AlmaLinux and Rocky Linux.

Why is there a Red Hat driver on my Windows VPS?

Red Hat maintains the Windows VirtIO drivers, published as the free virtio-win package. They are what lets Windows use the KVM virtual disk and network efficiently, so they belong there.

Leave them in, and check once

Run the three Linux commands above, or look in Device Manager, once after you set up a server, and after any cleanup script. If the agent is missing, put it back; it takes a minute and it is what makes your backups clean. Our Windows VPS and Linux VPS and VDS plans run on KVM with VirtIO disks and network in Amsterdam, Dublin and Prishtina, with free weekly backups. If something looks wrong on your server, message us on Telegram and we will check the channel from our side.

← All articles

Chat on Telegram