===== Libvirtd ===== Es una librería que define un conjunto de APIS que interactuan con diferentes hipervisores((XEN, KVM, Virtualbox, VMware ESXi, Hyper-V)) 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. === Definiciones === - **Nodo**. Un nodo es un nombre para referirse a una máquina física. - ** Hipervisor **. Es una capa de software que permite virtualizar un nodo en un conjunto de máquinas virtuales con una configuración diferente al nodo. - ** Domain**. Es una instancia de un sistema operativo corriendo en una máquina virtualizada proporcionada por el hipervisor. === Dominios trascendentes y persistentes === 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. === Estados de un dominio === Los dominios pueden estar en varios estados: * **Undefined**. Este es un estado base. Libvirtd no sabe acerca de un dominio en este estado ya que el dominio no ha sido creado o definido. * **Defined/Stopped**. Exclusivamente las máquinas persistentes pueden estar en este estado, las máquinas en este estado están definidas pero no están corriendo. Las máquinas trascendentes dejan de existir cuando se detienen. * **Running**. El dominio ha sido definido e iniciado. Los dominios en este estado son ejecutados activamente por el hipervisor del nodo. * **Paused**. La ejecución del dominio ha sido puesta en pausa,el estado del dominio es respaldado de forma temporal. * **Saved**. Es similar al estado en pausa, pero en este caso el estado del dominio es respaldado en un medio persistente. [[https://wiki.libvirt.org/VM_lifecycle.html|El ciclo de vida de una máquina virtual]] === Snapshots === 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. === Instalación === Antes de iniciar es necesario verificar si el cpu tiene soporte a la virtualización: * //CPUS intel: grep -e 'vmx' /proc/cpuinfo// * //CPUS AMD: grep -e 'svm' /proc/cpuinfo// ==== Instalación de paquetes ==== * //dnf install qemu-kvm libvirt virt-install// * //dnf install epel-release -y// * //dnf install bridge-utils virt-top libguestfs-tools -y// * //systemctl start libvirtd// * //systemctl enable libvirtd// ==== Generación de una red virtual ==== Las redes virtuales para las máquinas virtuales son de dos tipos: * //NAT: El hipervisor opera un servidor DHCP que asigna IP's a las máquinas virtuales, la red virtual no es accesible desde la LAN// * //Bridge: En este caso la red virtual esta incluye un **bridge virtual** asociado a una interfaz física, esto permite el tráfico entre las máquinas virtuales y la LAN// === Clientes de libvirtd === Hay tres clientes que interactuan con el daemon **libvirtd**, //virt-manager// un cliente gráfico((No se discute en esta wiki)), //virt-install// y //virsh// permiten interactuar desde el interprete de comandos con las máquinas virtuales. * //virt-install//. Mediante este comando es posible construir una máquina virtual en una sesión de bash, en los parámetros se introducen caracteristicas como cpu, memoria, localización a partir del cual se instala el sistema operativo, etcétera. * //virsh//. El comando virsh permite interactuar con el hipervisor, contiene infinidad de opciones que permiten manejar cada detalle del ambiente de virtualización, en esta sección documentaremos las opciones mas utilizadas. === Manipulación de imágenes === El sistema operativo que hospeda máquinas virtuales tiene varias alternativas de almacenaje de las mismas, puede optar por almacenamiento arbitario como //LVM((Logical Volume Manager))//, //ZVOL((Volúmen lógico de ZFS))// 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.