GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo instalar Linux KVM y crear una VM invitada con ejemplos

KVM significa máquina virtual basada en kernel.

Como sugiere el nombre, se trata de una tecnología de virtualización basada en kernel para el sistema operativo Linux en hardware compatible con la virtualización.

Los sistemas operativos invitados pueden virtualizarse por completo o paravirtualizarse.

La paravirtualización permite que varios sistemas operativos se ejecuten en un conjunto de hardware mediante el uso efectivo de recursos como procesadores y memoria. En la Para virtualización, el sistema operativo se modifica para que funcione con una máquina virtual, lo que minimizará el tiempo de ejecución necesario para realizar las operaciones que, de otro modo, serían difíciles de ejecutar en un entorno virtual.

Este es el primer artículo de una serie continua de artículos sobre KVM.

1. Herramientas para administrar máquinas virtuales

El paquete KVM proporciona qemu-kvm, una herramienta específica de hipervisor para administrar máquinas virtuales.

En lugar de esta herramienta, puede usar el paquete de software conocido como libvirt, que es una forma más conveniente y recomendada de administrar máquinas virtuales. Este software incluye una biblioteca API, un demonio (libvirtd) y una utilidad de línea de comandos (virsh).

Puede usar esta herramienta libvirt para administrar cualquier máquina virtual existente que se ejecute en KVM, Xen, VMWARE ESX, etc. La lista completa de hipervisores compatibles se encuentra en libvirt.

Hay algunas otras herramientas disponibles que puede usar para administrar su máquina virtual invitada.

  • virt-manager (Administrador de máquinas virtuales):una herramienta de administración gráfica para invitados de VM.
  • vm-install:una utilidad impulsada por menús basada en secuencias de comandos que define un invitado de VM e instala su sistema operativo.
  • virt-viewer:un cliente de visor X para invitados de VM que admite el cifrado TLS/SSL de autenticación de certificado x509 y autenticación SASL.

2. Compruebe el soporte de virtualización en su hardware

Para verificar si su CPU admite la virtualización de hardware, ejecute el siguiente comando.

# egrep '(vmx|svm)' /proc/cpuinfo

Si ve vmx o svm en la salida bajo la sección de banderas, entonces su hardware (CPU) admite la virtualización.

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov 
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm 
constant_tsc archrfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni 
dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 
popcnt lahf_lm tpr_shadow vnmi flexprioritpt vpid
.

3. Instalar paquetes KVM

Instale paquetes KVM utilizando la herramienta de administración de paquetes específica de su distribución (por ejemplo, yum en RedHat y CentOS).

# yum install kvm

Una vez que instale el paquete kvm principal, instale los siguientes paquetes relacionados con KVM que lo ayudarán a administrar las máquinas virtuales en su sistema.

# yum install qemu-kvm python-virtinst libvirt libvirt-python virt-manager libguestfs-tools

Los siguientes son los paquetes relacionados con KVM que están instalados en mi máquina. El número de versión de su sistema puede variar ligeramente.

# rpm -qa | egrep "virt|kvm|qemu"
python-virtinst-0.600.0-18.el6.noarch
qemu-img-0.12.1.2-2.415.el6.x86_64
libvirt-0.10.2-29.el6.x86_64
virt-viewer-0.5.6-8.el6.x86_64
qemu-kvm-0.12.1.2-2.415.el6.x86_64
libvirt-python-0.10.2-29.el6.x86_64
virt-manager-0.9.0-19.el6.x86_64
virt-top-1.0.4-3.15.el6.x86_64
libvirt-client-0.10.2-29.el6.x86_64
gpxe-roms-qemu-0.9.7-6.10.el6.noarch
virt-what-1.11-1.2.el6.x86_64

Después de instalar los paquetes, se recomienda reiniciar su máquina para cargar todos los módulos KVM y libvirt, aunque puede volver a cargarlos usando el comando modprobe.

Puede instalar el sistema operativo invitado mediante el administrador de máquinas virtuales, que incluye vm-install (para SUSE Linux) y virt-install (para RedHat).

Cuando su pantalla está configurada (por Exceed, ReflectionX o algunos otros administradores de pantalla), proporciona una interfaz gráfica para crear un asistente de máquina virtual que lo guía a través del proceso de instalación. Si la pantalla no está configurada, es decir, cuando se conecta la máquina mediante ssh sin reenvío X11, vm-install ofrece un asistente de línea de comandos para configurar de forma interactiva una máquina virtual invitada para la instalación.

4. Requisito previo de red para crear una VM invitada

De forma predeterminada, las máquinas virtuales solo tendrán acceso a la red a otras máquinas virtuales en el mismo servidor (y al propio host). Si desea que las máquinas virtuales tengan acceso a su VLAN, debe crear un puente de red en el host como se explica aquí.

Edite /etc/sysconfig/network-scripts/ifcfg-eth0 y agregue la línea "BRIDGE=br0" (asegúrese de eliminar cualquier IP estática).

Cree el archivo /etc/sysconfig/network-scripts/ifcfg-br0 y agregue las entradas como se muestra a continuación. Puede usar estático o dhcp. Usé IP estática en este caso.

DEVICE="br0"
BOOTPROTO="static"
IPADDR="xxx.xxx.xxx.xxx"
NETMASK="255.255.255.0"
ONBOOT="yes"
TYPE="Bridge"
NM_CONTROLLED="no"

Si está ejecutando un firewall (como iptables), cree una regla para permitir el tráfico en puente.

5. Requisitos previos adicionales para crear una VM invitada

La ubicación predeterminada para los archivos de imagen de VM se encuentra en /var/lib/libvirt/images. Asegúrese de que haya suficiente espacio disponible en este directorio. De lo contrario, puede apuntar el archivo de imagen a un directorio diferente durante la creación de la VM.

Habilite el reenvío de IP en /etc/sysctl.conf agregando la siguiente línea:

inet.ipv3.ip_forward=1

Durante la fase de prueba, si tiene SELinux ejecutándose, desactívelo configurando SELinux en modo permisivo.

Reinicie el sistema después de realizar los cambios anteriores.

6. Creación de una nueva máquina virtual invitada mediante virt-install

La herramienta virt-install se utiliza para crear la máquina virtual. Esta herramienta se puede utilizar tanto en modo interactivo como no interactivo.

En el siguiente ejemplo, pasé todos los valores necesarios para crear una máquina virtual como parámetros de línea de comandos al comando virt-install.

# virt-install \
 -n myRHELVM1 \
 --description "Test VM with RHEL 6" \
 --os-type=Linux \
 --os-variant=rhel6 \
 --ram=2048 \
 --vcpus=2 \
 --disk path=/var/lib/libvirt/images/myRHELVM1.img,bus=virtio,size=10 \
 --graphics none \
 --cdrom /var/rhel-server-6.5-x86_64-dvd.iso \
 --network bridge:br0

En el comando virt-install anterior:

  • n Nombre de su máquina virtual
  • descripción Alguna descripción válida sobre su máquina virtual. Por ejemplo:servidor de aplicaciones, servidor de base de datos, servidor web, etc.
  • tipo-OS El tipo de SO puede ser Linux, Solaris, Unix o Windows.
  • variante OS Tipo de distribución para el tipo de sistema operativo anterior. Por ejemplo, para Linux, puede ser rhel6, centos6, ubuntu14, suse11, fedora6, etc. Para Windows, puede ser win2k, win2k8, win8, win7
  • carnero Memoria para la máquina virtual en MB
  • vcpu Número total de CPU virtuales para la máquina virtual.
  • ruta del disco =/var/lib/libvirt/images/myRHELVM1.img,bus=virtio,size=10 Ruta donde se almacenan los archivos de imagen de VM. Tamaño en GB. En este ejemplo, este archivo de imagen de VM tiene 10 GB.
  • gráficos ninguno Esto le indica a virt-install que use una consola de texto en el puerto serial de la VM en lugar de la ventana gráfica de VNC. Si tiene configurado xmanager, puede ignorar este parámetro.
  • cd-rom Indica la ubicación de la imagen de instalación. Puede especificar la ubicación de instalación de NFS o http (en lugar de –cdrom). Por ejemplo, –ubicación=http://.com/pub/rhel6/x86_64/
  • puente de red:br0 Este ejemplo utiliza el adaptador en puente br0. También es posible crear su propia red en cualquier puerto específico en lugar de un adaptador en puente. Si desea usar NAT, use algo como a continuación para el parámetro de red con el nombre de red virtual conocido como VMnetwork1. Todos los archivos de configuración de red se encuentran en /etc/libvirt/qemu/networks/ para las máquinas virtuales. Por ejemplo:–red red=VMnetwork1

7. Lista de máquinas virtuales

Puede editar el menú de grub con "console=tty0 console=ttyS0,115200" para mostrar la consola en su pantalla durante el proceso de instalación en su ventana SSH. Esto le permitirá instalar el sistema operativo a través de la instalación guiada. De lo contrario, puede usar el servidor X para la visualización.

El siguiente comando mostrará todas las máquinas virtuales que están instaladas en su sistema operativo. En este ejemplo, tenemos dos máquinas virtuales instaladas en este sistema.

# virsh list --all
 Id    Name                           State
----------------------------------------------------
 1     dev-dev-vm                     running
 2     myRHELVM1                      running

8. Editar archivo de configuración de máquina virtual

Después de crear la VM, verá el archivo de configuración de la VM en la siguiente ubicación. El nombre del archivo de configuración será el nombre de la VM con extensión .xml.

# ls -l /etc/libvirt/qemu/myRHELVM1.xml
-rw-------. 1 root root 2109 Oct 15 12:30 /etc/libvirt/qemu/myRHELVM1.xml

Debe evitar editar este archivo manualmente y, en su lugar, utilizar el comando virsh edit. Para editar el dominio (máquina virtual) haga lo siguiente:

virsh edit myRHELVM1

9. Conéctese a la consola de máquina virtual

Para conectarse a la consola de la máquina virtual use el siguiente comando. Puede usar "ctrl + ]" para salir de la consola de VM.

virsh console myRHELVM1

Si no tiene un servidor X ejecutándose en su host, conectarse a una consola serie de VM podría ser la única forma de iniciar sesión en una VM si la red no está disponible.

Configurar el acceso a la consola de una VM no es diferente a un servidor físico, donde simplemente agrega los parámetros de arranque del kernel adecuados a la VM.

Por ejemplo, para una VM RHEL (o VM CentOS), agregue los siguientes parámetros a la línea de inicio del kernel en /etc/grub.conf y luego reinicie la VM.

console=tty0 console=ttyS0,115200

Como alternativa, también puede agregar las siguientes entradas al archivo /etc/grub.conf.

serial --unit=0 --speed=115200
terminal --timeout=5 serial console

10. Mostrar información de la máquina virtual

Para mostrar la información de la máquina virtual, use el siguiente comando:

# virsh dominfo myRHELVM1
Id:             5
Name:           myRHELVM1
UUID:           58083ae7-51db-50c3-64d8-bc4c49f642d0
OS Type:        Linux
State:          running
CPU(s):         2
CPU time:       207.6s
Max memory:     2097152 KiB
Used memory:    2097152 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: selinux
Security DOI:   0
Security label: system_u:system_r:svirt_t:s0:c698,c788 (permissive)

11. Mostrar CPU de VM y uso de memoria

Para mostrar el uso de memoria y CPU de la máquina virtual, use el comando virt-top como se muestra a continuación.

# virt-top
virt-top 07:14:44 - x86_64 8/8CPU 1600MHz 32094MB
3 domains, 2 active, 2 running, 0 sleeping, 0 paused, 1 inactive D:0 O:0 X:0
CPU: 0.1%  Mem: 4096 MB (4096 MB by guests)
   ID S RDRQ WRRQ RXBY TXBY %CPU %MEM    TIME   NAME
    5 R    0    0 1546    0  0.0  6.0   3:29.55 dev-dev-vm
    8 R    0    0 1546    0  0.0  6.0   1:42.17 myRHELVM2
    -

12. Apague, reinicie o inicie la máquina virtual con virsh

Para apagar la máquina virtual, haga lo siguiente:

# virsh shutdown myRHELVM1
Domain myRHELVM1 is being shutdown

Para reiniciar la máquina virtual, haga lo siguiente:

# virsh reboot myRHELVM1

Para iniciar o encender la máquina virtual, haga lo siguiente. Una vez que se inicia la VM, ejecute "virsh list –all" para ver todas las VM en ejecución.

# virsh start myRHELVM1
Domain myRHELVM1 started

En el próximo artículo de la serie KVM, cubriremos más detalles sobre cómo editar y manipular configuraciones en una VM individual.


Linux
  1. Cómo usar los comandos 'cat' y 'tac' con ejemplos en Linux

  2. Cómo instalar y probar Ansible en Linux

  3. Flatpak en Linux:qué es y cómo instalar aplicaciones con él

  4. Cómo comprimir archivos y directorios en Linux (con ejemplos)

  5. Cómo instalar CVS y crear un repositorio CVS en un servidor Linux

Crea y edita fuentes en Linux con BirdFont

Cómo hacer una copia de seguridad y restaurar el sistema Linux con Timeshift

Cómo instalar y usar Alpine con Gmail IMAP en Linux

Cómo instalar y usar el comando Ack en Linux con ejemplos

Cómo instalar Dig en Linux con ejemplos de línea de comandos

Cómo instalar y configurar KVM en Ubuntu Linux