#4sysadmins

Inicio » GNU/Linux » Virtualización GNU/Linux (VII/VIII): Virtualizar con KVM/QEMU

Virtualización GNU/Linux (VII/VIII): Virtualizar con KVM/QEMU

Últimas Entradas

Follow #4sysadmins on WordPress.com

Penúltima entrada sobre virtualización, esta vez toca KVM (Kernel Virtual Machine) que si hemos seguido las entradas anteriores sabremos que se trata de una arquitectura de virtualización completa para la cual utilizaremos además QEMU para emular diferentes características o partes del Hardware.

Aunque ya estudiamos algo de teoría en la primera de esta serie de entradas sobre virtualización, repasaremos algunos conceptos sobre KVM. No obstante podemos saltarnos la parrafada e ir directamente a la práctica.

Tipos de arquitecturas que abarcaremos:

  • Virtualización completa: son aquellas soluciones que permiten ejecutar  sistemas operativos huéspedes (Guest) sin tener que modificarlos, sobre un sistema anfitrión (Host) utilizando entre ambos una capa de abstracción llamada Hypervisor o Virtual Machine Monitor que gestionan los recursos hardware de los que se hará uso durante la ejecución de las máquinas virtuales.. Hay que tener en cuenta también que la virtualización completa no se refiere a todo el conjunto de hardware disponible en un equipo, sino a sus componentes principales, básicamente el procesador y memoria.
  • Emulación: máquinas virtuales que emulan el hardware de una o varias plataformas hardware distintas. Es la mas costosa y la menos eficiente, ya que hay que traducir al hardware cada una de las instrucciones que se ejecuten.

Ventajas de KVM:

  • Diseñado para procesadores x86.
  • No necesita modificaciones en el kernel.
  • Formado por un único módulo (kvm.ko) sin necesidad de parches.
  • Contiene soporte de paravirtualización.
  • Funcional en servidores, computadoras de escritorio o laptop.
  • Permite migraciones en caliente de máquinas virtuales.
  • Administración vía web, gráfica o consola.
  • Podemos utilizar el comando kill para matar maquina virtuales.
  • Maneja tres tipos de configuración de red: Bridge, Route y NAT.
  • Permite ejecutar múltiples maquinas virtuales cada una bajo su propia instancia.

 

Pre Instalación

Anfitrión y huésped

En este caso de uso vamos a utilizar CentOS 7 Core (Red Hat) como sistema anfitrión y virtualizaremos un sistema (Gues) Linux Mint 17.1 Rebecca (Debian),  a diferencia de otras entradas donde hemos virtualizado un huésped Microsoft Windows 7.

Soporte para emulación de hardware

Verificamos si nuestro hardware permite la emulación a través de los módulos de Intel o AMD:

[root@localhost ~]# egrep '(vmx|svm)' –color=always /proc/cpuinfo
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 
arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni 
pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2
popcnt tsc_deadline_timer xsave lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow
vnmi flexpriority ept vpid fsgsbase smep erms

SElinux

Deshabilitamos SElinux:

[root@localhost ~]# vi /etc/selinux/config
SELINUX=disabled

Módulos del kernel

Comprobamos si se encuentra cargado el módulo:

[root@localhost ~]# lsmod |grep kvm
kvm_intel 148081 0 
kvm 461126 1 kvm_intel

Configurar X

Si estamos instalando KVM en un servidor remoto (como es mi caso) donde tan solo tengo una instalación mínima del OS anfitrión, estaría bien configurar las X de acceso remoto para poder desplegar la aplicación virt-manager en mi Desktop y crear así las máquinas virtuales en el OS anfitrión de una forma gráfica.

[root@localhost ~]# vi /etc/ssh/sshd_config
X11Forwarding yes
X11UseLocalhost yes

[root@localhost ~]# yum install xauth
[root@localhost ~]# service sshd restart

ó

[root@localhost ~]# systemctl restart sshd.service

Ahora volvemos a acceder a la máquina pero con el reenvío de X activado:

[root@localhost ~]# exit
nebul4ck@LiMinCinn ~ $ ssh -X root@hostremotokvm

Nota: Si vamos a desplegar virt-manager desde el propio OS anfitrión no necesitaremos esta configuración.

También es posible crear todo desde consola con virt-viewer algo que veremos en la siguiente entrada.

Paquetería necesaria

A continuación una lista de los paquetes que necesitaremos para el correcto funcionamiento de KVM/QEMU:

  1. kmod: módulo kvm para el kernel
  2. qemu-kvm: emulador de hardware QEMU para kvm
  3. qemu-kvm-common y qemu-kvm-tools: herramientas y archivos para diagnóstico y buen funcionamiento de kvm
  4. qemu-img: utilidad de imágenes de disco QEMU
  5. virt-manager: Virtual Machine Manager (aplicación GUI, para instalar y configurar máquinas virtuales)
  6. bridge-utils: utilidades de red. Crear puentes de red entre la red física y virtual de KVM
  7. libvirt: es el Hipervisor con el que conectaremos el hardware y las máquinas virtuales. Junto al hipervisor se instalarán otros paquetes importantes como el propio demonio (libvirt-daemon), drivers (libvirt-daemon-driver-qemu, libvirt-daemon-config-network, etc..) y libvirt-daemon-kvm

 

Instalación

Para instalar los paquetes mencionados anteriormente:

[root@localhost ~]# yum install kmod qemu-kvm qemu-kvm-tools virt-manager bridge-utils

Esto instalará las dependencias necesarias.

Deberemos de instalar también el grupo de virtualización:

[root@localhost ~]# yum group list ids
Complementos cargados:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.tedra.es
 * extras: mirror.tedra.es
 * updates: mirror.tedra.es
Grupos de Entorno Instalados:
 Instalación mínima (minimal)
Grupos de Entorno Disponibles:
 Compute Node (compute-node-environment)
 Servidor de infraestructura (infrastructure-server-environment)
 Servidor y archivo de impresión (file-print-server-environment)
 Servidor web básico (web-server-environment)
 Host de virtualización (virtualization-host-environment)
 Servidor con GUI (graphical-server-environment)
 Escritorio Gnome (gnome-desktop-environment)
 Espacios de trabajo Plasma KDE (kde-desktop-environment)
 Desarrollo y estación de trabajo Creativa (developer-workstation-environment)
Grupos disponibles:
 Administración de sistemas (system-management)
 Bibliotecas compatibles (compat-libraries)
 Compatibilidad con legado de UNIX (legacy-unix)
 Herramientas de Administración de sistemas (system-admin-tools)
 Herramientas de desarrollo (development)
 Herramientas de seguridad (security-tools)
 Herramientas gráficas de Administración (graphical-admin-tools)
 Herramientas para consola de Internet. (console-internet)
 Soporte científico (scientific)
 Soporte para tarjeta inteligente (smart-card)
Listo
[root@localhost ~]# yum group install virtualization-host-environment

Esto instalará el Hipervisor y sus dependencias.

 

Crear máquina virtual

En mi caso tengo un directorio con varias imágenes .iso en /var/lib/libvirt/iso que será de donde seleccione los OS a instalar, y por otra parte esta el directorio /var/lib/libvirt/images (creado por defecto con la instalación de libvirt), aquí almacenaremos las máquinas virtuales creadas.

Iniciamos el Hipervisor:

[root@localhost ~]# service libvirtd start

Ahora suponiendo que estamos en el servidor local o desde remoto con el reenvío de X activado como vimos en los “Pre requisitos“, ejecutamos virt-manager

[root@localhost ~]# virt-manager

Veremos como se abre una ventana como la siguiente, y clicaremos en la pestaña de “Crear una máquina virtual nueva“:

kvm1

A continuación navegaremos hasta donde tengamos nuestra iso de instalación. En nuestro caso la imagen es /var/lib/libvirt/iso/linuxmint-17.1-cinnamon-64bit.iso

kvm2

kvm3kvm4

kvm5

kvm6

kvm7

Nota: Los formatos qcow2 y qed no permiten la asignación de disco completa. El tamaño de la imagen irá ascendiendo conforme vayamos instalando herramientas en el OS guest

kvm8

kvm9

Importante: Si la máquina que estáis creando va a ser para trabajar de una forma mas o menos seria os recomendaría que os pararais en este punto y fueseis configurando pestaña por pestaña para adaptarla a las necesidades. Yo voy a ir a alguna de las mas importante. En primer lugar a la pestaña de Processor donde podréis dejarla por defecto:

kvm10

O personalizarla en la manera de lo posible:

kvm11

kvm12

Nota: Configurar el bus de disco como VirtIO nos dará mejor rendimiento. Aplicar cambios!

kvm13

 

Iniciamos la instalación!

kvm15

kvm16

Importante: Una vez terminada la instalación y apagada la máquina virtual, procederemos de la siguiente manera para hacer que al siguiente inicio arranquemos ya desde nuestra imagen qcow2, es decir desde la propia máquina y no desde la .iso:

kvm17

kvm18

kvm19

 

Y listo!!! En la próxima y última entrada* de esta serie de posts sobre virtualización, veremos como virtualizar en una arquitectura de Para-virtualización o Baremetal con Xen lo que nos dará los mejores resultados.

 

* En realidad entre esta y la entrada de Xen escribiré otra donde aprendamos a crear y gestionar máquinas virtuales con KVM/QEMU desde la consola, sin necesidad de gráficos, así no hará falta ni redirigir el tráfico con -X por ssh a un host con Desktop ni a instalar un entorno gráfico en un servidor de virtualizción.

 

 

 

 

 

Anuncios

Deja un comentario, Gracias!

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: