jump to navigation

Virtualización con KVM/Qemu en Debian 5/Ubuntu 9.10 7 diciembre, 2009

Posted by ubanov in Informática-Linux.
Tags: , ,
trackback

Tenía pendiente el volver a probar el Qemu bien, dado que parece que este es el virtualizador Open Source que más futuro tiene. Lo he probado sobre dos máquinas, una con Debian 5 y otra sobre Ubuntu 9.10, y en ambos utilizando el acelerador KVM.

En esta entrada pongo unas notas básicas de las cosas que he ido recopilando y otras cosas que he tenido que probar e investigar (la parte de la red no estaba muy clara en ninguna parte).

Para poder probar esto (el tema de KVM) es necesario que el procesador tenga las extensiones para virtualización (vamos que sea una máquina moderna, con procesador moderno). Se puede comprobar si la CPU tiene todo lo necesario ejecutando “grep flags /proc/cpuinfo” y ver si aparece dentro de los flags vmx o svm (vamos que sea un procesador Intel VT o AMD-V).

Una vez que sabemos que podemos usar el KVM , para hacer la instalación lo que tenemos que ejecutar es el siguiente comando (voy a poner los comandos de ubuntu o una debian en la que no usemos el usuarios root).

sudo apt-get install qemu-kemu

Una vez hecho esto vamos a crear nuestra primera máquina virtual. La máquina que vamos a crear, la vamos a instalar desde el CD de instalación (en mi caso ha sido un Windows 7), para ello primero le creamos un disco, por ejemplo de 8 Gigabytes:

qemu-img create -f qcow2 disk0.qcow2 8G

Una vez creado el disco (tarda muy poco y no va a ocupar los 8G de disco, sino un unos 250Kb), se puede instalar la primera máquina virtual. Para ello ejecutar el siguiente comando desde XWindows:

qemu -hda disk0.qcow2 -cdrom /dev/cdrom -enable-kvm -m 1G

Esto nos arrancará la máquina virtual con 1G de RAM, la cual arrancará del cdrom  y nos dejará instalar el sistema operativo que tengamos. Pasado el tiempo necesario tendremos instalado el sistema operativo.

Cuando apaguemos la máquina se parará el proceso qemu.

Otros parámetros importantes:

– Si no tenemos procesador que acepte las instrucciones de virtualización, supongo que se podría quitar el parámetro enable-kvm (aunque será más lento).

-smp 2: cualquier procesador moderno tiene más de un core (tiene más de un procesador dentro), si no añadimos esta línea la máquina virtual sólo tendrá un procesador y por lo tanto sólo usará uno de los cores. Es decir si por ejemplo una máquina fisica tiene un core 2 duo (2 procesadores), y la máquina virtual tiene un procesador al 100%, la máquina física tendrá sólo uno de sus procesadores al 100%, es decir la máquina estará al 50%…

-snapshot: nos permitirá ejecutar una máquina virtual, sin grabar los cambios que se hagan sobre el disco, se hará un snapshot pero sobre memoria. Esto nos permitiría por ejemplo ejecutar todos los días una misma máquina virtual, y que cada mañana estuviese limpita (muy útil para máquinas windows🙂

-vnc :10 -k es  hacer que la máquina no le aparezca la pantalla en las XWindows y en su lugar lo mande por VNC. Con VNC es necesario configurar el idioma de teclado (sino te lo pondrá en inglés), por eso va lo del “-k es”. En principio nos podremos conectar a la máquina sin validación, aunque hay otros parametros para pedirla.

-net tap: otra configuración de red más avanzada, debajo hay más detalles sobre este tema.

-soundhw all: habilitar tarjeta de sonido en la máquina virtual

-usb: habilitar acceso a dispositivos USB

Para ver la lista completa de las opciones (y su explicación más detallada) ejecutar “man qemu”

En la configuración por defecto la red estará configurada de tal forma que se habrá creado una red “virtual” y en esta red todos los accesos de la máquina virtual a la red se harán simulados y cuando tenga que salir a la red, lo hará con la dirección IP de la máquina anfitriona. Por defecto es como si se hubiese ejecutado “-net user,net=10.0.2.0/24,host=2,dhcpstart=16,dns=3”. En esta configuración de red no se necesitan permisos para ejecutar el qemu (cualquier usuario puede hacerlo, como hemos hecho antes), pero no podremos acceder a ningún puerto de la máquina virtual.

Antes proponía que una opción interesante era la opción “-net tap”, esta opción por defecto lo que hará es ejecutar un script para poner en marcha la red (/etc/qemu-ifup) pasándole como parámetro el nombre del interface virtual que creará (tap0, tap1…por defecto será tap0, salvo que uses ifname=tapX). El script lo que hace es buscar cual es el interface que se utiliza por defecto y le añade con el comando brctl addif el nuevo interface. Este script supone que los interfaces de red están configurados en modo bridge.Para ejecutar qemu con esta opción es necesario ejecutarlo como root (por los cambios que se hacen en la red).

Si no tienes configurado bridge te saldrá al ejecutarlo un mensaje como el siguiente: “can’t add tap0 to bridge eth0: Operation not supported”. Podría ejecutarse los siguientes comandos para

sudo ifconfig eth0 down
sudo brctl addbr br0
sudo brctl addif br0 eth0
sudo ifconfig eth0 up

Configurar interface br0 (también puede hacerse como proponen en la página http://www.howtoforge.com/virtualization-with-kvm-on-ubuntu-9.04).

Todo esto vale para hacer una configuración de qemu sencilla. Si lo que se quiere es ejecutar un servidor con varias máquinas virtuales, lo que se hace es ejecutar un programa que se llama virst, de forma resumida este software de gestión se instalaría con:

sudo apt-get install ubuntu-virt-server python-vm-builder
sudo apt-get install bridge-utils
sudo adduser ivan libvirtd
virsh -c qemu:///system list
sudo virsh -c qemu:///system list

No voy a entrar en más detalle sobre esto, por que creo que la entrada http://www.howtoforge.com/virtualization-with-kvm-on-ubuntu-9.04 lo explica bien.

Otras ideas, utilizando vnc podríamos tener un servidor de pcs virtuales, dependiendo del software instalado se podría tener hasta el mismo disco duro… o sino crear discos diferenciales con “qemu-img create -b discoOriginal.qcow2 -f qcow2 discoDiferencial.qcow2” y usar el discoDiferencial.qcow2 (este no modificará el discoOriginal).

Esta entrada todavía no la he acabado, pero ya lo haré….

Actualización 22/5/10: para no tener que estar luchando con los diferentes parámetros del Qemu (vale también para Xen) es posible utilizar virt-manager para simplificar todas estas gestiones. Lo he probado sobre una Ubuntu 10.4, e instalado con “sudo apt-get install virt-manager” y va muy bien😀

Comentarios»

1. David Calvache - 4 enero, 2010

Echale um ojo a Proxmox VE, (una plataforma GPL de virtualizacion sobre KVM y openVz. Te sorprenderas!)

2. Máquinas virtuales (Qemu) « Blog de apoyo a las clases - 10 marzo, 2010

Responder

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: