Introduction
In the world of Linux server and desktop administration, virtualization has become an essential tool for testing systems, isolating applications, and optimizing resources. Virt-Manager is a graphical interface that simplifies the management of KVM/QEMU-based virtual machines, allowing both novice and experienced users to create, configure, and monitor their virtual environments without needing to resort to the command line. In this article we will explore step by step how to install, configure, and get the most out of Virt-Manager on popular distributions such as Ubuntu, Fedora, and Debian.
What is Virt-Manager?
Virt-Manager, also known as Virtual Machine Manager, is a GTK+ frontend for libvirt, the set of APIs and daemons that abstracts interaction with the KVM, QEMU, Xen, and LXC hypervisors. Its goal is to provide a desktop experience similar to that of proprietary virtual machine managers, but completely free and integrated with the Linux ecosystem. From the main window you can view all defined virtual machines, their state (on, off, paused), CPU and memory consumption, and quickly access the graphical console or hardware assignment details.
Installation
The installation of Virt-Manager varies slightly depending on the distribution, but in all cases it depends on the libvirt, qemu-kvm packages and the network bridge tools. On Ubuntu or Debian, simply run:
sudo apt update
sudo apt install virt-manager libvirt-daemon-system libvirt-clients bridge-utils
On Fedora use dnf:
sudo dnf install @virtualization virt-manager
And on Arch Linux:
sudo pacman -S virt-manager libvirt dnsmasq vde2
After installing, you need to add your user to the libvirt group so they can access the daemon without root permissions:
sudo usermod -aG libvirt $USER
Then log out and back in for the change to take effect. Finally, start and enable the libvirtd service:
sudo systemctl enable –now libvirtd
Initial Configuration
When opening Virt-Manager for the first time, the program automatically connects to the local hypervisor (QEMU/KVM). If you wish to manage a remote host, you can add a new connection from the File → Add Connection menu, choosing the SSH or TCP type and providing the necessary credentials. In the preferences window (Edit → Preferences) you can adjust the behavior of the graphical console, define the default directory for storing disk images, and choose the default virtual network type (NAT, bridge, or isolated). It is also advisable to verify that hardware acceleration is enabled by checking that the kvm_intel or kvm_amd module is loaded with lsmod | grep kvm.
Creating a Virtual Machine
To create a new VM, click the computer icon with a plus sign (File → New Virtual Machine). A multi-step wizard will appear:
1. **Select the installation method**: you can choose an ISO image, a physical installation medium, a network boot (PXE), or import an existing machine.
2. **Configure memory and CPUs**: assign the amount of RAM and number of virtual cores according to the guest OS needs.
3. **Create or select a storage disk**: Virt-Manager allows creating a new qcow2 disk of a defined size or using an existing disk.
4. **Review the summary**: before finishing, review the configuration summary and check the option ‘Customize configuration before install’ if you want to adjust details such as the disk controller type (‘virtio, ide’) or the network interface.
5. **Finish**: click “Finish” to start the installation; a console window will open where you can continue with the guest OS installation process.
Managing Virtual Machines
Once the VM is created, Virt-Manager offers a set of tools for its everyday administration. From the main list you can:
– **Turn on, shut down, reboot**, or pause the machine using the toolbar buttons.
– **Open the graphical console** by double‑clicking the VM name or using the “Open” button.
– **View real‑time statistics** of CPU, memory, disk I/O, and network traffic via the details panel.
– **Edit the hardware configuration** (add disks, change memory, modify network interfaces) without needing to shut down the machine (some changes require a reboot).
– **Take snapshots** (instantaneous saves) to preserve the current state and revert later.
– **Clone** an existing VM to create identical copies or ones based on the same configuration.
Advanced Use: Clones, Snapshots, and Networks
Snapshots are useful for testing risky updates or configurations. To create one, select the VM, go to Machine → Take snapshot, provide a name and optional description. You can revert to any snapshot at any time or delete them to free space.
Cloning is performed from Machine → Clone. There you can choose between a full clone (independent copy of all disks) or a linked clone (shares the base disk and only stores changes, saving space).
Regarding networks, Virt-Manager allows creating additional virtual networks via Edit → Connection → Network Details. Here you can define NAT, bridged, or isolated networks, assign DHCP ranges, and configure port forwarding. These networks can be assigned to the VMs’ interfaces in their hardware configuration, providing flexibility for lab scenarios, service testing, or simulating complex topologies.
It is also possible to connect VMs to physical networks via bridges, allowing virtual machines to appear as independent devices on the LAN.
Troubleshooting Common Issues
If starting a VM you see the error ‘Cannot access device /dev/kvm’, verify that the KVM module is loaded and that your user belongs to the libvirt group. Performance issues are usually due to missing virtio acceleration; ensure you use virtio controllers for disk and network in the VM configuration. When the graphical console does not appear, check that the virtlogd service is active and that there are no remote display conflicts. Finally, if the VM does not obtain an IP address on a NAT network, verify that the dnsmasq service is running and that no firewall rules are blocking traffic in the 192.168.122.0/24 range.
Conclusion
Virt-Manager positions itself as one of the most accessible and powerful options for managing KVM/QEMU virtual machines in Linux environments. Its combination of an intuitive interface, strong integration with libvirt, and the ability to perform advanced tasks such as snapshots, cloning, and network management makes it an indispensable tool for system administrators, developers, and enthusiasts alike. With the steps described in this article you can set up your own virtualization infrastructure and make the most of your hardware resources.
This post is also available in ESPAÑOL.