¡Esta es una revisión vieja del documento!
El hipervisor KVM (Kernel based Virtual Machine) opera como un módulo dentro del kernel de linux, incorporado el código del kernel en febrero de 2007, este código se desarrolla de manera independiente y hace uso de las extensiones agregadas a los procesadores INTEL y AMD que habilitaron un nuevo nivel de procesamiento de instrucciones donde reside el hipervisor.
El hipervisor al no utilizar el nivel de procesamiento de instrucciones 0, permite que los sistemas operativos de las máquinas virtuales utilizen este nivel para sus propios procesos sin modificación alguna.
El módulo del kernel qemu-kvm se comunica con el kernel como una interface donde todos los requerimientos de las maquinas virtuales se traducen como requerimientos al kernel, cada máquina virtual es un thread del proceso virtual del hipervisor.
La version actual de KVM viene con una versión modificada del emulador QEMU que maneja el I/O y otras opciones que permiten al sistema operativo de la máquina virtual operar.
La instalación del módulo KVM en Rocky linux 8-9 se hace: dnf install qemu-kvm
Es una librería que define un conjunto de APIS que interactuan con diferentes hipervisores1) contiene un conjunto de herramientas del interprete de comandos o clientes gráficos que permiten crear, suspender, mover, destruir instancias de un sistema operativo o máquinas virtuales.
Libvirtd distingue entre dominios trascendentes y persistentes. Los dominios trascendentes hasta que la máquina virtual se apaga o el nodo donde corre la máquina virtual es reinicializado. Los dominios persistentes no dependen del estado de la máquina virtual.
Los dominios pueden estar en varios estados:
Un snapshot es la vista de una máquina virtual y todas sus aplicaciones en un punto del tiempo. Los snapshots permiten a los usuarios guardar el estado de una máquina virtual en un punto del tiempo y permite regresar la máquina virtual a ese estado en cualquier momento, eso es particularmente útil cuando se instalan actualizaciones o nuevas aplicaciones que resultan conflictivas.
Antes de iniciar es necesario verificar si el cpu tiene soporte a la virtualización:
Las redes virtuales para las máquinas virtuales son de dos tipos:
Hay tres clientes que interactuan con el daemon libvirtd, virt-manager un cliente gráfico2), virt-install y virsh permiten interactuar desde el interprete de comandos con las máquinas virtuales.
El sistema operativo que hospeda máquinas virtuales tiene varias alternativas de almacenaje de las mismas, puede optar por almacenamiento arbitario como LVM3), ZVOL4) o archivos binarios que reciben el nombre de imágenes. El imperativo de mover máquinas entre hipervisores hace que la mejor opción de almacenamiento sean las imágenes.
Hay una sección del artículo del hipervisor Xen de este sitio Archivos Imagen donde se presentan ejemplos del uso del comando qemu-img en la generación de archivos imágen en formatos qcow2 y raw y la modificación de su tamaño.
Libvirtd ofrece el comando virt-resize para modificar el tamaño de archivos imágen que contienen particiones con diferentes sistemas de archivos de la máquina virtual que soportan, este comando permite agregar o disminuir el tamaño de estas particiones, a continuación se presentan algunos ejemplos con formatos de imágenes qcow2 y raw.
Con el comando virt-install se generá una nueva máquina virtual sobre un archivo imágen, un ejemplo de la sintaxis de este comando se muestra a continuación:
virt-install –virt-type=kvm –name interfaces –ram 8192 –os-variant=rocky9 –cdrom=/casuniVol/prod/boot/Rocky-9.2-x86_64-minimal.iso –vcpus=2 –network=bridge=virbr0,model=virtio –graphics vnc,port=5912 –disk /casuniVol/test/imagenes/inter.qcow2
El significado de las opciones del comando virt-install son:
Las máquinas virtuales pueden inspeccionarse a través del comando virsh que permite verficar, iniciar, detener o destruir una máquina virtual,este comando corre en el hipervisor y permite modificar el estado que corre en la máquina física.
Id | Name | State |
1 | mrlucky | running |
2 | mailCasuni | running |
3 | mrluckyNuevo | running |
4 | boxCasuni | running |
5 | mailCptodos | running |
7 | smtpCptodos | running |
8 | celta | stopped |
9 | vgd | running |
10 | gtglobal | running |
35 | cptodos-web | running |
38 | nuevoWebCptodos | running |