Saltar a contenido

02.-Solucionario

Ejercicio 1: Verificación del soporte de virtualización en el host

  • Abro una terminal en el host.

  • Ejecuto el comando:

egrep -c '(vmx|svm)' /proc/cpuinfo

Resultado:

2

Esto indica que la CPU del host soporta virtualización por hardware.


Ejercicio 2: Instalación de KVM y herramientas de virtualización

  • Abro una terminal en el host.
  • Ejecuto los siguientes comandos para instalar KVM y las herramientas necesarias:
sudo apt update
sudo apt upgrade
sudo apt install qemu-system libvirt-clients libvirt-daemon-system

Resultado:

KVM y virt-manager están instalados exitosamente.

  • Verifico que el servicio de libvirtd está activo:
sudo systemctl status libvirtd

Resultado:
El servicio de libvirtd está corriendo y habilitado.


Ejercicio 3: Creación de una máquina virtual desde la CLI

  • Descargo una imagen ISO de Ubuntu Server.
  • Creo una máquina virtual desde la CLI usando el siguiente comando:
sudo virt-install \
  --name UbuntuVM \
  --ram 2048 \
  --vcpus 2 \
  --disk path=/var/lib/libvirt/images/ubuntu.qcow2,size=10 \
  --cdrom /home/tu_usuario/Descargas/ubuntu-20.04.iso \
  --os-variant ubuntu20.04 \
  --network bridge=virbr0 \
  --graphics none \
  --console pty,target_type=serial \
  --extra-args 'console=ttyS0,115200n8 serial'
  • Verifico que la MV está creada:
$ virsh list --all

Resultado:
La máquina virtual UbuntuVM aparece en la lista con el estado apagada o running si se ha iniciado correctamente.


Ejercicio 4: Creación de un disco virtual adicional para una MV existente

  • Detengo la máquina virtual:
virsh shutdown UbuntuVM
  • Crear un Disco Virtual con qemu-img y Añadirlo con virsh
qemu-img create -f qcow2 /var/lib/libvirt/images/disk1.qcow2 5G
  • Edición del archivo XML de la MV para agregar un segundo disco:
virsh edit UbuntuVM
  • Agrego el siguiente bloque XML para el disco adicional:
<disk type='file' device='disk'>
  <driver name='qemu' type='qcow2'/>
  <source file='/var/lib/libvirt/images/disk1.qcow2'/>
  <target dev='vdb' bus='virtio'/>
</disk>
  • También se puede hacer la asociación usando el comando virsh-attach-diskdel siguiente modo:
virsh attach-disk <nombre-de-la-vm> /var/lib/libvirt/images/disk1.qcow2 vdb --targetbus virtio --persistent
  • Inicio la MV de nuevo:
virsh start UbuntuVM
  • Verifico los discos conectados:
virsh domblklist UbuntuVM

Resultado:
La MV muestra los discos conectados, incluyendo vda (disco original) y vdb (nuevo disco).

Nota Aclaratoria:

  • ¿Por qué virsh edit abre un archivo ubicado en el directorio /tmp?

Cuando ejecutas el comando:

virsh edit ubuntu_server

virsh realiza lo siguiente:

  • Generación del Archivo Temporal: Crea una copia de la configuración XML actual de la máquina virtual ubuntu_server en un archivo temporal dentro de /tmp. Esto permite que realices modificaciones sin afectar directamente el archivo de configuración original.
  • Edición de la Configuración: Abre el archivo temporal en tu editor de texto predeterminado (como vi, nano, etc.). Aquí puedes realizar los cambios que consideres necesarios.
  • Validación y Aplicación de Cambios: Al guardar y cerrar el editor, virsh valida la sintaxis del XML modificado. Si la validación es exitosa, libvirt aplica los cambios a la configuración persistente de la máquina virtual. El archivo temporal en /tmp se descarta automáticamente.

Ejercicio 5: Migración en vivo de una MV a otro host

Configurar la Autenticación SSH sin Contraseña

  • Primero, asegúrate de que puedes acceder al host de destino desde el host de origen mediante SSH sin contraseña.

  • Genera una clave SSH en el host de origen (si no la tienes):

ssh-keygen
  • Copia la clave pública al host de destino:
ssh-copy-id user@destination_host
  • Ahora deberías poder conectarte al host de destino desde el host de origen sin que se te solicite una contraseña.

Verificar que el Almacenamiento es Compartido o Accesible

  • Asegúrate de que el almacenamiento de la máquina virtual, como los discos virtuales (imágenes .qcow2, .img, etc.), es accesible por ambos hosts. Para ello, utiliza un sistema de archivos compartido como NFS o iSCSI.

Verificar que los Hosts están Preparados para la Migración

  • En ambos hosts, verifica que el servicio libvirtd esté ejecutándose:
sudo systemctl status libvirtd
  • También asegúrate de que las máquinas virtuales están accesibles mediante virsh list.

  • En el host de origen, ejecuto:

virsh migrate --live UbuntuVM qemu+ssh://user@destination/system

Verificar que la MV ha sido migrada correctamente

  • En el host de origen: bash virsh list --all Resultado:
    La MV no aparece en el host de origen.
  • En el host de destino: bash virsh list --all Resultado:
    La MV UbuntuVM aparece en el host de destino y está corriendo.

Ejercicio 6: Uso de Snapshots en MVs

  • Creo un snapshot de la máquina virtual:
virsh snapshot-create-as --domain UbuntuVM --name "snapshot1" --description "Estado limpio antes de actualizaciones"
  • Listo los snapshots creados:
virsh snapshot-list UbuntuVM

Resultado:
El snapshot snapshot1 aparece en la lista. - Realizo algunos cambios en el sistema. - Restaura el snapshot:

virsh snapshot-revert UbuntuVM snapshot1

Resultado:
La MV se ha revertido al estado del snapshot.


Ejercicio 7: Configuración de NAT en la Red Virtual

  • Edito la configuración de la red predeterminada:
virsh net-edit default
  • Verifico que la red está configurada en modo NAT.
  • Verifico que la red está activa:
virsh net-list

Resultado:
La red default está activa y las máquinas virtuales pueden acceder a Internet a través de NAT.


Ejercicio 8: Creación de una MV con Virt-Manager

  • Abro virt-manager.
  • Creo una nueva máquina virtual seleccionando la imagen ISO de Windows 10, asignando 4GB de RAM y un disco de 20GB.
  • Inicio la instalación y sigo las instrucciones.
  • Verifico que la MV está creada y en ejecución en virt-manager.

Ejercicio 9: Clonación de una Máquina Virtual

  • Clono la MV UbuntuVM:
virt-clone --original UbuntuVM --name UbuntuClone --file /var/lib/libvirt/images/UbuntuClone.qcow2
  • Verifico que tanto la máquina original como el clon están presentes:
virsh list --all

Resultado:
Ambas máquinas (UbuntuVM y UbuntuClone) aparecen en la lista.


Ejercicio 10: Implementación de Contenedores LXC

  • Creo un contenedor LXC en el entorno KVM:
lxc-create -n mycontainer -t ubuntu
  • Inicio el contenedor:
lxc-start -n mycontainer
  • Verifico que el contenedor está en ejecución:
lxc-ls --fancy

Resultado:
El contenedor mycontainer aparece en la lista y está corriendo.