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:
- VirtIO devices "look like physical devices to the guest", so normal drivers and discovery work, and the specification covers network, block, console, entropy, memory balloon, SCSI, GPU, vsock, file system and more (OASIS VirtIO 1.3).
- The QEMU guest agent is "a daemon intended to be run within virtual machines"; by default it listens on the virtio-serial port
org.qemu.guest_agent.0(QEMU documentation). - Linux has the VirtIO drivers in the kernel. Windows does not: they come from the virtio-win package, version 0.1.302 dated 27 August 2026, whose installer also installs the guest agent (virtio-win ISO).
- If Windows loses the driver for its boot disk, it stops with bug check 0x7B INACCESSIBLE_BOOT_DEVICE, which means Windows "has lost access to the system partition during startup" (Microsoft Learn).
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:
| Device | What it does | Linux driver | Windows driver (virtio-win) |
|---|---|---|---|
| Block or SCSI storage | The server's disk | virtio_blk, virtio_scsi | viostor, vioscsi |
| Network | The network card | virtio_net | NetKVM |
| Serial | The channel the guest agent talks over | virtio_console | vioserial |
| Memory balloon | Reports memory use and lets the host reclaim free RAM | virtio_balloon | Balloon |
| Entropy | Random numbers from the host, useful for TLS keys at boot | virtio_rng | viorng |
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:
- Freeze and thaw the filesystems (
guest-fsfreeze-freeze,guest-fsfreeze-thaw). The backup system freezes writes for a moment, starts its copy, and thaws them, so the backup holds a clean filesystem instead of one caught mid-write. - Report filesystems and usage (
guest-get-fsinfo). The host can see how big your disk is, but not how full, because it does not read your files. The agent tells it. - Report network addresses (
guest-network-get-interfaces), the IPs the guest really has. - Set a user's password (
guest-set-user-password), the reliable way to reset a lost root or Administrator password without a rescue boot. - Shut down or reboot cleanly (
guest-shutdown).
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 test | VirtIO | Emulated SATA | Emulated IDE |
|---|---|---|---|
| Random read, 4 KB, queue 32 | 42,342 IOPS | 5,475 IOPS | 1,220 IOPS |
| Random write, 4 KB, queue 32 | 34,427 IOPS | 5,470 IOPS | 1,273 IOPS |
| Guest CPU during random reads | 35% | 98% | 3% (waiting) |
| Sequential read, 1 MB blocks | 2,685 MB/s, 8% CPU | 3,239 MB/s, 44% CPU | 232 MB/s |
| Sequential write, 1 MB blocks | 1,879 MB/s, 7% CPU | 2,274 MB/s, 27% CPU | 274 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 test | VirtIO network | Emulated Intel e1000 |
|---|---|---|
| Guest sending | 16.73 Gbit/s | 1.31 Gbit/s |
| Guest receiving | 16.45 Gbit/s | 3.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:
| Request | Agent installed | Agent removed |
|---|---|---|
| Ping | answered at once | no answer after 5 seconds |
Disk usage of / | ext4, 1.07 GB used of 11.91 GB | unknown |
| Freeze filesystems | frozen in 5 ms; a write plus sync inside the guest waited until the thaw, then went through | no answer, so no freeze |
| Set the password of user debian | done; logging in with the new password worked | not possible from the host |
| Clean shutdown | powered off 1.4 s after the request | ACPI 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:
- Consistent backups. Our backups are taken while the server keeps running. With the agent, the filesystems are frozen for the instant the copy starts. Without it, the copy is crash-consistent: the disk exactly as it would be after pulling the power cord, which journaling filesystems usually survive, but a database in the middle of a write may need repair after a restore.
- Disk usage in the client area. The panel can show how full your disk is only when the agent answers. Without it, you see "No guest agent".
- Password reset and address reporting from the host.
- A quick, controlled shutdown. The host falls back to the ACPI power button, which Linux handled in 4.7 seconds in our test. A Windows server that is set to ignore the power button, or is stuck on an update screen, may not react at all, and the host then has to cut the power.
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.