How to Install KVM on CentOS 8

Introduction

KVM (short for Kernel-based Virtual Machine) is a Linux virtualization application that gives users the ability to turn their machine into a hypervisor and run multiple virtual machines in isolated environments.

In this tutorial you will learn how to install KVM on CentOS 8.

Install KVM on CentOS 8 - Step-By-Step Guide

Note: A popular alternative is VirtualBox. If you are interested, see how to install VirtualBox on CentOS.


Prerequisites

  • A system running CentOS 7 or 8
  • An account with sudo privileges
  • Access to the command line/terminal

Steps to Install KVM on CentOS

The steps listed in this tutorial work with CentOS 8 and CentOS 7.

Step 1: Check if Your System Supports Hardware Virtualization

To see if your system is capable of hardware virtualization (HV), run the following:

$ cat /proc/cpuinfo | egrep "vmx|svm"

The output will look similar to this:

Check if your system supports hardware virtualization by searching through flags in /proc/cpuinfo

In the output, review the list of flags. If you find either vmx (for Intel processors) or svm (for AMD), the system supports hardware virtualization.


Note: If you encounter issues with installing KVM on a system which supports HV, check your BIOS to see if HV is enabled. To enable HV, refer to the documentation for your host’s BIOS.


Step 2: Install KVM

Use the following commands to install KVM on CentOS:

$ sudo yum update
$ sudo yum install @virt

Next, start and enable the libvirtd service:

$ sudo systemctl enable --now libvirtd

Install tools required for KVM management:

$ sudo yum -y install virt-top libguestfs-tools

Step 3: Verify KVM Installation

To confirm that the KVM module is loaded, run:

$ lsmod | grep kvm

The output will contain a list of loaded KVM modules:

Verify your KVM installation by confirming KVM modules loaded properly

Step 4: Configure Bridge Interface

A bridge interface is necessary for accessing VMs from outside of the hypervisor network. To create a bridge interface, first identify the network interfaces attached to your machine:

$ sudo nmcli connection show

The output shows all available network interfaces:

Checking the available network connections before bridge creation

Make note of the name of the ethernet interface (in this case, it is enp0s3). Delete the connection by typing the following command (replacing the UUID with your value):

$ sudo nmcli connection delete UUID

The system will confirm the deletion of the connection:

Deleting the ethernet connection to prepare for adding a bridge connection

Next, make sure you have the necessary info at hand:

  • BRIDGE NAME – Name for your new bridge (e.g. “br1”)
  • DEVICE NAME – Name of the network device which will serve as the bridge slave (e.g. “enp0s3”)
  • IP ADDRESS/SUBNET – IP address and subnet for the connection (e.g. “192.168.122.1/24”)
  • GATEWAY – Default gateway address (e.g. “192.168.122.1”)
  • DNS1 and DNS2 – DNS addresses (e.g. “8.8.8.8” and “8.8.4.4”)

Now, using your own values, create a new bridge interface:

$ sudo nmcli connection add type bridge autoconnect yes con-name BRIDGE NAME ifname BRIDGE NAME

The output confirms the successful addition of the bridge connection:

Add new bridge connection

Make the necessary modifications to the IP address, Gateway and DNS:

$ sudo nmcli connection modify BRIDGE NAME ipv4.addresses IP ADDRESS/SUBNET ipv4.method manual 
$ sudo nmcli connection modify BRIDGE NAME ipv4.gateway GATEWAY
$ sudo nmcli connection modify BRIDGE NAME ipv4.dns DNS1 +ipv4.dns DNS2

The commands with values filled in look like this:

Modify the network parameters for the bridge connection


Add a bridge slave:

$ sudo nmcli connection add type bridge-slave autoconnect yes con-name DEVICE NAME ifname DEVICE NAME master BRIDGE NAME
Add bridge slave to your bridge connection


Output of nmcli connection show should now look like this:

Showing available connections after adding the bridge connection


Activate the bridge with the following command:

$ sudo nmcli connection up BRIDGE NAME
Activating the bridge network

Create Virtual Machine via Command Line

To create a VM via command line in CentOS 8 use the virt-install command.

The following example shows how to install an Ubuntu 20.04 LTS virtual machine:

Installing Ubuntu 20.04 VM using command line in CentOS 8


The above example uses the following command line arguments, which are necessary to set up a virtual machine with your preferences:

ArgumentDescription
--name=Custom name of the VM
--file=Disk file location of the VM
--file-size=Allocated file size of the VM
--nonsparse=The command which allocates the entire disk
--graphics=Specifies which tool would be used for GUI installation (e.g. spice)
--vcpu=Number of virtual CPUs that will be used
--ram=Amount of RAM allocated
--cdrom=Installation media
--network=Network used for the VM
--os-type=Type of the operating system
--os-variant=If you are not sure about the OS variant, type “generic”

Create Virtual Machine via GUI

If the Linux terminal seems too intimidating, use the virt-manager GUI to create a VM with KVM.

1. First, install virt-manager:

$ sudo yum -y install virt-manager

2. Start virt-manager from the console:

$ sudo virt-manager

3. Open the File menu and select New Virtual Machine. Choose your installation media and proceed to the next step.

Selecting the installation method in virt-manager GUI


4. Specify the path to the ISO or CDROM with the OS you wish to install. The system recognizes the OS you selected.

5. Click Forward to proceed to the next step.

Specifying the path to ISO disk image of the OS, using virt-manager GUI


6. In the next step, allocate RAM and CPU resources. When you finish, proceed further.

Allocating RAM and CPUs for the VM in virt-manager GUI


7. Specify the size of the virtual hard disk and proceed to the next step.

Allocating the hard disk size for VM installation in virt-manager GUI


8. In the last step, confirm your choices and press Finish to set up the virtual machine.

Confirming the set parameters for VM creation in virt-manager GUI

Conclusion

This article explained the process of setting up KVM on CentOS 8. It provided instructions for installing KVM, configuring a bridge interface, and setting up virtual machines using the GUI or Linux terminal.

Was this article helpful?
YesNo
Marko Aleksic
Marko Aleksić is a Technical Writer at phoenixNAP. His innate curiosity regarding all things IT, combined with over a decade long background in writing, teaching and working in IT-related fields, led him to technical writing, where he has an opportunity to employ his skills and make technology less daunting to everyone.
Next you should read
How to Install Minikube on CentOS
May 28, 2020

Install Minikube on your CentOS 7 and set up a single-node Kubernetes cluster on your local machine...
Read more
CentOS 8 Released: New Features, Changes, & How to Download
October 2, 2019

CentOS is widely popular among developers and system administrators as it offers full control over its highly...
Read more
Containers vs Virtual Machines (VMs): What's the Difference?
January 25, 2024

Both virtual machines and containers are used to created isolated virtual environments for developing and...
Read more
What is a Hypervisor? Types of Hypervisors 1 & 2
September 29, 2022

Server virtualization is one of the hottest topics in the IT world today. It has been around for many years...
Read more