Instalar HVM en Xen


Xen es un monitor de máquinas virtuales que utiliza el método de la paravirtualización, que tiene como gran ventaja el alto rendimiento de las máquinas virtuales, pero como principal desventaja el que necesita hacer pequeñas modificaciones sobre el núcleo de los sistemas operativos de las máquinas virtuales.

En este artículo explicaremos los pasos que hay que dar para utilizar en Xen una máquina virtual sin modificar su núcleo, en estos casos se utiliza la técnica de virtualización completa en lugar de la paravirtualización y es necesario tener soporte de virtualización en la CPU. Por todo esto es por lo que en Xen se conoce esto como Hardware Virtual Machine o HVM.

¿Tengo la CPU adecuada?

Para saber si nuestra CPU tiene soporte para virtualización, hay que ejecutar:

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

De lo que tendremos que obtener una salida como:

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow pni cx16 lahf_lm svm cr8_legacy

donde hemos destacado la etiqueta svm que indica que es un microprocesador AMD con soporte para virtualización. En el caso de un microprocesador Intel, aparecería la etiqueta vmx.

Si no se obtiene ninguna salida de la instrucción anterior, no será posible instalar HVM en Xen.

Instalar la HVM

Supondremos lógicamente que Xen está instalado y funcionando en el equipo que actúa como dom0. El primer paso que hay que dar es crear el espacio en el que se ubicará la nueva máquina virtual, que puede ser un fichero, una partición o un volúmen lógico.

Creando ficheros para las imágenes

Supongamos que vamos a utilizar un fichero de 8 GiB como máximo, lo creamos con ayuda de qemu-img:

qemu-img create -f qcow vdisk.img 8G

por otra parte, volcamos el contenido del CD de instalación del nuevo sistema operativo al disco duro, con:

dd if=/dev/cdrom of=/vm/hvm1/hvm.iso

Instalando hvm

Creamos un fichero con el siguiente contenido:

kernel="/usr/lib/xen-3.2-1/boot/hvmloader"
builder='hvm'
device_model='/usr/lib/xen-3.2-1/bin/qemu-dm'
memory=256
name='vm1'
#vif=[ 'type=ioemu, bridge=xenbr0' ]
vif=[ 'type=ioemu, bridge=10.0.0.5' ]
disk=['file:/vm/hvm1/vdisk.img,ioemu:hda,w' , 'file:/vm/hvm1/hvm.iso,hdc:cdrom,r' ]
cdrom='/dev/hdc'
boot='d'
acpi=0
apic=0
sdl=1
vnc=0

Lo denominamos /etc/xen/hvm1.cfg.

Ejecutamos:

xm create hvm1.cfg

Que nos abrirá una ventana en la que procederemos a la instalación del nuevo sistema operativo de la manera habitual.

Ejecutando el nuevo hvm

Para utilizar la nueva máquina virtual, debemos editar el fichero de configuración, cambiando la línea:

boot='d'

por:

boot='c'

Para que arranque de la unidad «C:» en lugar de la «D:», siguiendo la terminología clásica de MS-DOS.

Instalar HVM en Xen

5 comentarios en “Instalar HVM en Xen

  1. Hola,

    Supongo que tras virtualizar y no paravirtualizar, se podrá crear una máquina virtual con el SO que se quiera, entrando en el saco, Windows, Solaris… no ?

    Porqué usar esta técnica ?? que ventajas tiene sobre la paravirtualización ?? cómo es el rendimiento ??

    Un saludo maestro.

    Me gusta

  2. Hola Manolo,

    ¡qué bueno leerte por aquí!

    Se utiliza HVM para los sistemas operativos que no se puede utilizar la técnica de la paravirtualización de Xen. ¡Tú lo has dicho el «innombrable» :-)! Y efectivamente se puede (en principio) instalar cualquier sistema operativo al igual que en Kvm, VMware y demás que utilizan virtualización completa.

    Por cierto, yo ya no sé quién es maestro de quién ;)

    Me gusta

  3. Rafa dijo:

    Yo me he liado, yo creo que se utiliza HVM cuando la máquina lo soporta a nivel físico (el procesador en este caso) por lo cual podemos virtualizar sin hacer ninguna modificación en el sistema «huesped» (en su núcleo) dado que la «carga» de la virtualización se la «lleva» el micro.

    En el caso de no poseer un procesador que soporte HVM hay que usar un kernel PV (para-virtualizado) o mejor dicho modificar el núcleo (kernel) del sistema «huesped»

    ¿es así? ¿me he liado?

    un saludo desde Vigo.

    Me gusta

    1. Hola Rafa,

      Creo que decimos más o menos lo mismo, pero de todas maneras te hago una aclaración. Si tenemos un micro que no tiene extensiones de virtualización, no podemos hacer HVMs, por lo que sólo podremos utilizar Xen en modo paravirtualizado, vamos que sólo podremos utilizar máquinas virtuales de alguna variedad de GNU/Linux.

      Si nuestro micro sí tiene extensiones de virtualización podemos utilizar HVM o paravirtualización para las máquinas virtuales GNU/Linux (preferiblemente la segunda) y HVM para el resto de sistemas operativos.

      Me gusta

Deja un comentario