Ejercicios KVM¶
Ejercicio 1: Verificación del Soporte de Virtualización en el Host¶
Tarea: Ejecuta el comando egrep -E -c '(vmx|svm)' /proc/cpuinfo
en tu máquina host para verificar si el procesador soporta virtualización por hardware (Intel VT o AMD-V).
Instrucciones:
- Abre una terminal en tu sistema Linux.
- Ejecuta el comando indicado.
- Si el resultado es mayor que 0, la virtualización está habilitada. Objetivo: Verificar que el hardware soporta la creación de máquinas virtuales con KVM.
Ejercicio 2: Instalación de KVM y Herramientas de Virtualización¶
Tarea: Instala el paquete qemu-kvm, libvirt-bin, y virt-manager en una distribución Linux (por ejemplo, Ubuntu) y habilita el servicio de libvirtd.
Instrucciones:
-
Ejecuta
apt install qemu-system libvirt-clients libvirt-daemon-system
. -
Habilita el servicio con
sudo systemctl enable libvirtd
y luego inícialo con sudosystemctl start libvirtd
. -
Verifica la correcta instalación ejecutando
virsh list --all
.
Objetivo: Preparar el sistema para crear y administrar máquinas virtuales.
Ejercicio 3: Creación de una Máquina Virtual desde la CLI¶
Tarea: Utiliza el comando virt-install
para crear una máquina virtual Ubuntu desde la línea de comandos con un disco de 10GB y 2GB de RAM.
Instrucciones:
- Descarga una imagen de Ubuntu Server (ISO).
- Ejecuta el siguiente comando:
sudo virt-install --name UbuntuVM \
--ram 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/ubuntu.qcow2,size=10 \
--location ~/<nombre_distribución>,kernel=casper/vmlinuz,initrd=casper/initrd \
--os-variant ubuntu24.04 \
--network bridge=virbr0 \
--graphics none \
--console pty,target_type=serial \
--extra-args 'console=ttyS0,115200n8 serial'
Sigue el proceso de instalación a través de la consola.
Objetivo: Crear y administrar una máquina virtual usando solo la CLI.
Ejercicio 4: Creación de un Disco Virtual Adicional para una MV Existente¶
Tarea: Añadir un segundo disco virtual de 5GB a una máquina virtual existente. Instrucciones:
-
Detén la máquina virtual con
virsh shutdown <nombreMV>
. -
Usa el comando
virsh edit <nombreMV>
para editar la configuración XML de la máquina. -
Añade la siguiente sección en el archivo XML:
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/disk2.qcow2'/>
<target dev='vdb' bus='virtio'/>
</disk>
- Guarda el archivo y arranca la MV de nuevo.
Objetivo: Familiarizarse con la administración de almacenamiento adicional en una MV. ¡ OJO !:: Debes crear el disco virtual previamente.
Ejercicio 5: Migración en Vivo de una MV a Otro Host¶
Tarea: Realizar una migración en vivo de una máquina virtual desde un host KVM a otro sin detenerla. Instrucciones: - Asegúrate de que ambos hosts están configurados correctamente para permitir la migración. - Ejecuta el siguiente comando desde el host origen:
$ virsh migrate --live <nombreMV> qemu+ssh://user@destination/system
- Verifica que la MV sigue ejecutándose en el host destino con virsh list.
Objetivo: Ejecutar una migración en vivo para mejorar la disponibilidad y el mantenimiento de sistemas.
¡ OJO !: Antes de realizar la migración en vivo, asegúrate de que los siguientes aspectos están configurados correctamente en ambos hosts (origen y destino):
- Ambos hosts deben usar KVM/QEMU con libvirt.
- SSH sin contraseña: Configura la autenticación sin contraseña entre el host origen y destino mediante claves SSH.
- Almacenamiento compartido o accesible: Asegúrate de que el almacenamiento de la máquina virtual (imágenes de disco) está accesible desde ambos hosts (por ejemplo, a través de NFS, iSCSI, etc.). La migración en vivo requiere que los archivos de disco de la VM sean accesibles desde el host de destino.
- Ambos hosts deben tener las mismas versiones de QEMU/KVM y libvirt para asegurar la compatibilidad.
Ejercicio 6: Uso de Snapshots en MVs¶
Tarea: Crear un snapshot de una máquina virtual en funcionamiento y restaurarla a ese punto después de realizar cambios en el sistema operativo. Instrucciones:
- Para crear un snapshot:
$virsh snapshot-create-as --domain <nombreMV> --name "snapshot1" --description "Estado limpio antes de actualizaciones"
Realiza algunos cambios en la MV, como instalar software o modificar configuraciones. Restaura el estado anterior usando:
virsh snapshot-revert <nombreMV> snapshot1
Objetivo: Aprender a utilizar snapshots para la recuperación rápida de MVs.
Ejercicio 7: Configuración de NAT en la Red Virtual¶
Tarea: Configurar NAT para las máquinas virtuales, permitiendo que accedan a Internet a través del host.
Instrucciones:
- Edita el archivo de red default con el siguiente comando:
virsh net-edit default
- Configura el modo de red en NAT, verificando la conectividad de la MV hacia el exterior.
Usa ping
desde la MV para verificar que puede acceder a Internet.
Objetivo: Configurar redes virtuales para conectar MVs con redes externas.
Ejercicio 8: Creación de una Máquina Virtual con Virt-Manager¶
Tarea: Utiliza la interfaz gráfica virt-manager para crear una máquina virtual Windows 10 con 4GB de RAM y un disco de 20GB. Instrucciones:
- Abre virt-manager y selecciona la opción para crear una nueva máquina.
- Sigue las instrucciones para elegir la imagen de instalación y configurar los recursos de la máquina.
- Inicia la instalación de Windows desde la interfaz gráfica.
Objetivo: Familiarizarse con la administración de MVs desde la interfaz gráfica.
Ejercicio 9: Clonación de una Máquina Virtual¶
Tarea: Clona una máquina virtual existente y cámbiale el nombre y la dirección MAC de la interfaz de red. Instrucciones:
- Ejecuta el comando:
$ virt-clone --original <nombreMV> --name <nombreClon> --file /var/lib/libvirt/images/<nombreClon>.qcow2
Edita la dirección MAC para evitar conflictos de red:
$ virsh edit <nombreClon>
- Busca la sección de la interfaz de red y cambia el valor de la dirección MAC.
Objetivo: Dominar la clonación y personalización de máquinas virtuales.
Ejercicio 10: Implementación de Contenedores LXC¶
Tarea: Crear un contenedor LXC en el entorno KVM, configurando las capacidades de red compartida con el host. Instrucciones: - Instala LXC con sudo apt install lxc. - Crea un contenedor básico:
lxc-create -n mycontainer -t ubuntu
- Configura el acceso a la red compartida entre el contenedor y el host.
- Inicia el contenedor con lxc-start.
Objetivo: Integrar la tecnología de contenedores dentro del entorno de virtualización KVM.