KVM (máquina virtual basada en kernel) es un software de virtualización que brinda la capacidad de ejecutar varias máquinas virtuales (invitados) con la ayuda de extensiones de virtualización de hardware. Es compatible con una amplia variedad de sistemas operativos invitados, como Linux, Windows, Solaris y muchos más.
Las máquinas virtuales se pueden crear o gestionar mediante herramientas de línea de comandos (virsh, virt-install y guestfish) o herramientas gráficas disponibles (consola web de Cockpit).
Aquí veremos cómo instalar KVM en CentOS 8/RHEL 8 y aprenderemos a crear máquinas virtuales.
Requisitos
Comprobar soporte de VT
Como se dijo anteriormente, puede ejecutar máquinas virtuales solo si la CPU es compatible con la virtualización de hardware, ya sea Intel VT o AMD-V.
Para averiguar si su CPU es compatible con las funciones de VT, ejecute el siguiente comando.
egrep '(vmx|svm)' /proc/cpuinfo | wc -l
Si el comando anterior devuelve algo distinto de cero, entonces su hardware tiene VT habilitado, de lo contrario no lo tiene.
Puente de red
Cree un puente de red en su sistema para permitir que las máquinas virtuales puedan comunicarse con las redes externas.
Aquí, crearemos un puente virtual llamado br0. Para hacer eso, primero, cree un archivo de configuración de red de puente.
vi /etc/sysconfig/network-scripts/ifcfg-br0
Actualice el archivo de configuración con la dirección IP y otra información de la red. Este puente será mi conexión de red principal.
DEVICE="br0"
BOOTPROTO="static"
IPADDR="192.168.0.10"
NETMASK="255.255.255.0"
GATEWAY="192.168.0.1"
DNS1="192.168.0.1"
ONBOOT="yes"
TYPE="Bridge"
Edite el archivo de configuración de su interfaz de red para usar el puente br0.
vi /etc/sysconfig/network-scripts/ifcfg-ens33
Actualice la configuración con la siguiente información.
DEVICE="ens33"
TYPE="Ethernet"
BOOTPROTO="none"
ONBOOT="yes"
BRIDGE="br0"
Vuelva a cargar el perfil de conexión y reinicie NetworkManager.
nmcli connection reload
systemctl restart NetworkManager
Valide la configuración de la red usando el comando ifconfig.
ifconfig
Salida:
Instalar KVM
Instale el módulo de virtualización. Este módulo instalará todos los paquetes necesarios para que el sistema admita la virtualización.
dnf module install -y virt
Instale los paquetes virt-install y virt-viewer.
dnf install -y virt-install virt-viewer
virt-install:herramienta de línea de comandos para crear máquinas virtuales.
virt-viewer – Consola gráfica
Ejecute el siguiente comando para validar si el host está listo para ejecutar máquinas virtuales.
virt-host-validate
Output: QEMU: Checking for hardware virtualization : PASS QEMU: Checking if device /dev/kvm exists : PASS QEMU: Checking if device /dev/kvm is accessible : PASS QEMU: Checking if device /dev/vhost-net exists : PASS QEMU: Checking if device /dev/net/tun exists : PASS QEMU: Checking for cgroup 'cpu' controller support : PASS QEMU: Checking for cgroup 'cpuacct' controller support : PASS QEMU: Checking for cgroup 'cpuset' controller support : PASS QEMU: Checking for cgroup 'memory' controller support : PASS QEMU: Checking for cgroup 'devices' controller support : PASS QEMU: Checking for cgroup 'blkio' controller support : PASS QEMU: Checking for device assignment IOMMU support : WARN (No ACPI IVRS table found, IOMMU either disabled in BIOS or not supported by this hardware platform)Si obtiene QEMU:Comprobación de virtualización de hardware:FALLO (solo están disponibles las CPU emuladas, el rendimiento será significativamente limitado), entonces su máquina no puede ejecutar máquinas virtuales.
Crear y administrar máquinas virtuales
Si la validación del host es buena, entonces podemos ir y crear máquinas virtuales utilizando la línea de comandos o la interfaz gráfica.
Modo de línea de comandos
El comando virt-install se usa para crear máquinas virtuales. El comando necesita algunos argumentos obligatorios para crear una máquina virtual, como el nombre de la VM, la CPU, la memoria, el disco, la red, la ubicación del medio de instalación, la variante del sistema operativo y más.
virt-install --name=itzgeekguest --ram=1024 --vcpus=1 --os-type=linux --os-variant=rhel6.0 --cdrom=/tmp/CentOS-6.10-x86_64-minimal.iso --network bridge=br0 --graphics vnc,port=5901,listen=0.0.0.0 --disk path=/var/lib/libvirt/images/itzgeekguest.qcow2,size=10
Argumentos | Propósito |
---|---|
--nombre | Nombre de la Máquina Virtual |
--carnero | Tamaño de memoria en MB |
--vcpus | CPU virtuales en números |
--tipo-OS | Tipos de SO como Linux, Windows, etc. |
--os-variante | Variante de SO como RHEL 6, Solaris |
--cdrom | Ubicación de la imagen ISO |
--red | Redes con opciones |
--gráficos | Consola de invitados (VNC con número de puerto) |
--ruta-disco | Ubicación del disco (qcow2) con un tamaño |