Virtualización en Debian GNU/Linux con KVM

0
18929

Creación: 09-10-2007

Índice de contenidos

1. Introducción
2. Entorno
3. Instalación
4. Arrancando nuestras imágenes del qemu
5. Mejoras de rendimiento para virtualización de XP
6. Conclusiones
7. Sobre el autor

1. Introducción

Ya hemos visto en otros tutoriales como emular con Qemu otras máquinas:

Esto, aun usando el módulo KQemu, es una emulación por software. Pero lo que hoy en día está de moda es la virtualización por hardware. Cada día oímos hablar más de ellos y todavía nos queda mucho por ver.

En este tutorial vamos a ver como podemos sacar provecho de la virtualización por hardware (por supuesto nuestra máquina debe soportarlo: processor extensions HVM) con el módulo KVM (Kernel-based Virtual Machine). Este es un módulo que debemos activar en el kernel (viene activado por defecto en las últimas versiones del kernel) y además debemos hacer un par de cositas que vamos a ver seguidamente.

También decir que para levantar nuestras máquinas virtuales usaremos la aplicación kvm. Esta aplicación es como el qemu, es decir es el encargado de arrancar nuestros ficheros con la imagen de la máquina virtual. De hecho con kvm podemos arrancar las imágenes que hayamos creado con el qemu.

2. Entorno

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil Asus G1 (Core 2 Duo a 2.1 GHz, 2048 MB RAM, 120 GB HD).
  • Sistema Operativo: GNU / Linux, Debian (unstable), Kernel 2.6.22, KDE 3.5
  • kvm 36-0.1
  • kvm-sources 36-0.1


3. Instalación

Antes de hacer nada debemos comprobar si nuestro hardware soporta KVM. Para ello basta con ejecutar:

$ egrep '^flags.*(vmx|svm)' /proc/cpuinfo

Si este comando produce alguna salida es que nuestro procesador soporta virtualización de hardware y podemos usar KVM.

Ahora que ya sabemos que nuestro procesador soporta virtualización, podemos usar uno de los últimos kernel (a partir del 2.6.20) que ya vienen con el módulo KVM compilado tanto para Intel como para AMD.

Si compilamos nosotros mismos el kernel
(https://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=debianInstall)
tenemos que asegurarnos de que tenemos activa la opción CONFIG_KVM, que podemos encontrar en Device Drivers ---> Virtualization ---> Kernel-based Virtual Machine (KVM) support. Podemos activarlo como módulo y activar la plataforma para la que nos interese (Intel o AMD o los dos).

Si estamos editando la configuración con make menuconfig, deberíamos ver algo así:

Necesitamos instalar también el paquete kvm. Esta es una aplicación como el qemu (de hecho es un qemu modificado). Es decir es la aplicación con la que ejecutaremos nuestras imágenes.

# apt-get -u install kvm
kvm-sources

En el repositorio de paquetes también podemos encontrar kvm-source. Este paquete son los fuentes del driver del kernel. No es necesario instalarlo ya que, como hemos dicho y visto antes, el driver ya está incluido en el kernel desde la versión 2.6.20.


4. Arrancando nuestras imágenes del qemu

Ya estamos en disposición de arrancar con kvm cualquiera de nuestras imágenes que teníamos creadas con el qemu. De echo los parámetros del kvm son los mismos que los del qemu (ya dijimos que kvm no es más que una modificación del qemu).

Podríamos hacer algo como:

# modprobe kvm-intel
# echo 1024 > /proc/sys/dev/rtc/max-user-freq
# kvm -m 1024 -net nic -net tap -hda mi_imagen_de_qemu.qcow2

Esto estaría bien meterlo en un script; y ojo, que todas las operaciones las hemos hecho como root (seria conveniente configurar nuestro sistema para que no fuera necesario el uso de root).

Con modprobe kvm-intel estamos cargando el driver del kernel, así que tener en cuenta que si vuestro equipo es AMD tendrías que usar modprobe kvm-amd.

Para configurar la red lo he hecho como decía en el apartado 8.1 del tutorial:
https://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=debianQemu

He sustituido el contenido del fichero /etc/kvm/kvm-ifup (es el sctip que ejecuta por defecto kvm cuando usamos la opción -net tap) con el siguiente contenido:

ifconfig $1 172.20.0.1
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
exit 0

Ojo, yo en el script he puesto eth1, pero acordaros de poner vuestra interfaz de red. O en general configurar la red como mejor os convenga.


5. Mejoras de rendimiento para virtualización de XP

Si el sistema operativo que estamos virtualizando es Windows XP, es muy recomendable, para mejorar el rendimiento, seguir los pasos descritos en:

http://kvm.qumranet.com/kvmwiki/Windows_ACPI_Workaround

Antes de hacer estos pasos os recomiendo que os hagáis una copia de vuestra imagen por si hay problemas.

Si cuando reiniciéis el XP no sois capaces de evitar el BSOD (Blue Screen of Death). Recuperar la copia que os habíais hecho. Y repetir los pasos, pero esta vez en vez de reiniciar después de los cambios en el administrador de dispositivos, decirle que no, y hacer directamente los cambios en el registro. Después reiniciáis y debería funcionar bien.

Intentarlo porque realmente se nota la mejora de rendimiento !!!

6. Conclusiones

La virtualización está resultando ser un gran aliado, para entornos de desarrollo, pruebas, e incluso producción (mejorando el time to market, ahorro de energía, recuperación de entornos, … ). Tanto es así que cada vez encontramos más soporte directamente en el hardware (hasta ahora el gran inconveniente era el rendimiento, pero con estas mejoras en el hardware cada vez se mejora más este punto).

Por esto en Autentia (http://www.autentia.com) os recomendamos que estéis atentos a este tipo de tecnologías y que ventajas o posibilidades nos ofrecen.

7. Sobre el autor

Alejandro Pérez García, Ingeniero en Informática (especialidad de Ingeniería del Software)

Socio fundador de Autentia (Formación, Consultoría, Desarrollo de sistemas transaccionales)

mailto:alejandropg@autentia.com

Autentia Real Business Solutions S.L. – «Soporte a Desarrollo»

http://www.autentia.com

 

Alejandro Pérez García
Alejandro es socio fundador de Autentia y nuestro experto en Java EE, Linux y optimización de aplicaciones empresariales. Ingeniero en Informática y Certified ScrumMaster. Seguir @alejandropgarci Si te gusta lo que ves, puedes contratarle para darte ayuda con soporte experto, impartir cursos presenciales en tu empresa o para que realicemos tus proyectos como factoría (Madrid). Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo, factoría y formación.

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad