Cree un servidor virtual basado en KVM

Construcción en tres pasos de un servidor virtual sobre un hipervisor KVM de Linux con virtualización total

En tres pasos relativamente simples, usted podrá crear un servidor virtual sobre el host del ® hipervisor KVM de Linux usando virtualización total. Kernel-based Virtual Machine (KVM) es un software de virtualización libre y de código abierto para Linux que se basa en extensiones de virtualización (Intel VT-X y AMD-V) y una versión modificada de QEMU.

Da Shuang He, Software Engineer, IBM

Photo of Da Shuang HeDa Shuang He se desempeña como Software Engineer en el Laboratorio de Desarrollos de IBM China en Shanghai, China. Actualmente trabaja en programas de gestión de sistemas, dedicándose especialmente a la creación de servidores de auto-arranque, la instalación de sistemas de operación remota y la gestión de la energía.



05-03-2010

Únase a los grupos ecológicos de My developerWorks

Trate distintos temas y comparta recursos sobre la energía, la eficiencia y el medioambiente en el espacio GReen IT Report y el Green computing group de My developerWorks.

Kernel-based Virtual Machine (KVM) es un software de virtualización libre y de código abierto para Linux que se basa en las extensiones de virtualización de hardware Intel VT-X y AMD-V y una versión modificada QEMU (se está trabajando para obtener el flujo ascendente de cambios requerido). KVM —, en forma de kvm.ko, un módulo de kernel cargable que brinda la infraestructura de virtualización central y módulos kvm-intel.ko y kvm-amd.ko específicos del procesador, — está diseñada para permitir una emulación de hardware total en lo que resulta necesario para el arranque de numerosos sistemas operativos de PC en forma no modificada.

Añ usar KVM, usted puede ejecutar múltiples máquinas virtuales que a su vez ejecutan imágenes X de Linux, Windows® o Mac OS® sin modificaciones. Cada una de las máquinas virtuales posee su propio hardware virtual, como por ejemplo tarjeta de red, disco, adaptador de gráficos, etc.

Para este artículo, utilicé una IBM® Blade Server HS21 con SUSE 11 como sistema operativo. El HS21 soporta la extensión Intel VT, y la versión del kernel de SUSE 11 es 2.6.27.13, que ya contiene KVM (KVM se incluye en las versiones de kernel de Linux a partir de la versión 2.6.20).

A continuación detallamos los principales tres pasos que ponen en funcionamiento su servidor virtual:

  1. Instalar el sistema operativo y el software necesario.
  2. Crear el servidor virtual.
  3. Configurar la red del servidor virtual.

Paso 1. Instalar el sistema operativo y el software necesario

Esta sección abarca:

  1. Cómo instalar el sistema operativo y el software necesario
  2. Cómo determinar si la CPU es compatible con KVM
  3. Cómo asegurar la correcta instalación del software

Instalar el sistema operativo y el software necesario

Después de instalar el sistema operativo, usted podrá buscar la versión instalada del kernel de Linux con el siguiente comando:

kvm:~ # uname -a Linux kvm 2.6.27.13-1-pae #1 SMP
2009-01-27 13:41:16 +0100 i686 i686 i386 GNU/Linux

A continuación, seleccione e instale los paquetes predeterminados kvm y kvm-kmp (que ya incluyen un QEMU modificado para la emulación del hardware de E/S). Como se muestra en la Figura 1, seleccione estos paquetes y presione sobre Accept (Aceptar) para instalarlos:

Figura 1. Cómo encontrar el kernel instalado
Finding the installed kernel

En este momento, la versión predeterminada de kvm-kmp deberá ser 78_2.6.27.13_1-11.3. (78 es la versión de KVM, y el resto de la información indica la versión del kernel.)

La típica instalación de KVM consta de estos componentes:

  • Un dispositivo para gestionar el hardware de virtualización; esta unidad expone sus capacidades a través de un dispositivo de caracteres /dev/kvm
  • Un componente de espacio de usuario para emular el hardware de la PC; en la actualidad, esto se maneja en el espacio del usuario y constituye un proceso QEMU levemente modificado
  • El modelo de E/S, que deriva directamente del modelo de QEMU con soporte para imágenes de disco copy-on-write y otras características de QEMU

Determinar si la CPU es compatible con KVM

KVM depende de las extensiones de virtualización x86. Para verificar la compatibilidad, ejecute el comando grep vmx /proc/cpuinfo (en AMD, ejecute el comandogrep svm /proc/cpuinfo). Si el resultado es similar al del Listado 1, entonces la CPU es compatible con KVM; de lo contrario, su CPU no es compatible con KVM.

Listado 1. Cómo verificar la compatibilidad de la CPU con KVM
kvm:~ # grep vmx
/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 lm constant_tsc
arch_perfmon pebs bts pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr dca lahf_lm
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 lm constant_tsc arch_perfmon pebs
bts pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr dca lahf_lm flags : fpu vme de
fxsr sse sse2 ss ht tm pbe lm constant_tsc arch_perfmon pebs bts pni monitor ds_cpl
vmx est tm2 ssse3 cx16 xtpr dca lahf_lm 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
lm constant_tsc arch_perfmon pebs bts pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr
dca lahf_lm

Determinar la correcta instalación del software

Ejecute el comandolsmod | grep kvmpara verificar si el módulo KVM se ha instalado correctamente. Si el resultado es similar al que figura a continuación, el módulo de KVM se ha instalado correctamente:

kvm:~ # lsmod | grep kvm kvm_intel 42604 0 kvm 150264
                1 kvm_intel

Paso 2. Crear el servidor virtual

Esta sección abarca:

  1. Cómo crear la imagen de disco raw
  2. Cómo instalar el sistema operativo sobre esta imagen
  3. Cómo encender el servidor virtual

Cómo crear una imagen de disco raw

Para crear una imagen de disco raw, se deberá usar el siguiente comando:

dd if=/dev/zero of=/mnt/kvmtest.img bs=1024 count=0 seek=$[10*1024*1024]

Con este comando, usted creará una imagen de 10GB con el nombre de kvmtest.img.

Cómo instalar el sistema operativo sobre esta imagen

Para lograr la instalación del sistema operativo sobre esta imagen, se deberá usar el siguiente comando:

/usr/bin/qemu-kvm -hda /mnt/kvmtest.img -boot d -cdrom /mnt/SLES-11-DVD-i586-RC3-DVD1.iso -m 1024

Debido a que usted está instalando un paquete de KVM y no lo está construyendo desde la fuente, podrá usarqemu-kvm pero no qemu-system-x86_64.

-boot d significa que usted hará que el servidor virtual arranque desde el CDROM. -m 1024 significa que especificamos una memoria de 1GB para el servidor virtual.

Luego de ejecutar este comando, la pantalla de instalación del sistema operativo deberá ser como la de la Figura 2:

Figura 2. Pantalla de instalación del sistema operativo
The OS installation screen

A continuación, instale el sistema operativo como lo haría normalmente.

Ahora, encienda su servidor virtual

Luego de la instalación exitosa del sistema operativo, usted podrá iniciar el servidor virtual con este comando:

/usr/bin/qemu-kvm -hda /mnt/kvmtest.img -m 1024

Su servidor deberá funcionar igual que in servidor normal ejecutado sobre el hardware físico.


Paso 3. Configurar la red del servidor virtual

Hasta ahora, usted ha visto cómo se crea exitosamente un servidor virtual, pero no la red para dicho servidor virtual. A continuación verá cómo se crea una red puente para el servidor virtual:

  1. Cómo instalar el paquete bridge-util
  2. Cómo crear la interfaz de red puente
  3. Cómo crear el script para el control de la red
  4. Cómo iniciar la red del sistema operativo invitado
  5. Cómo configurar la red del sistema operativo invitado

Instalación del paquete bridge-util

Debemos crear una red puente, por lo cual debemos instalar el paquete bridge-util en la sección de gestión de software del sistema operativo.

Figura 3. Cómo instalar el paquete bridge-util
Installing the bridge-util package

Cómo crear la interfaz de la red puente

En la pantalla de configuración de red del sistema operativo, presione sobre Add a new network interface (Agegar una nueva interfaz de red)(Ver Figura 4):

Figura 4. Cómo agregar una nueva interfaz de red
Adding a new network interface

Se deberá visualizar un Diálogo de Hardware como el que se muestra en la Figura 5:

Figura 5. Diálogo de hardware para la nueva interfaz de red
The hardware dialog for new network interface

Elija el tipo de dispositivo Bridge (puente); presione sobreNext (Siguiente)para continuar con la configuración de la red. Verá la pantalla de configuración que se muestra en la Figura 6:

Figura 6. Pantalla de configuración de la red
Network configuration screen

Elijaeth0en "Bridged Devices (Dispositivos puenteados)" y configure un IP estático para la interfaz del puente, que tiene la misma configuración que eth0(ver Figura 7).

Figura 7. Cómo configurar un IP estático para la interfaz del puente
Configuring a static IP for the bridge interface

Luego, la configuración de eth0 quedará aprobada, y usted deberá presionar Next para continuar, y regresar a la pantalla de configuración de red. Verá que se ha creado una nueva interfaz de red para el puente y que la configuración eth0 está aprobada.

Cómo elaborar el script de control de red

El contenido de un script de control de red deberá ser similar al del Listado 2:

Listado 2. Script de control de red
#!/bin/sh set -x switch=br0 if [ -n "$1" ];then tunctl
-u `whoami` -t $1 ip link set $1 up sleep 0.5s brctl addif $switch $1 exit 0 else
echo "Error: no interface specified" exit 1 fi

Cómo iniciar el sistema operativo invitado

Inicie el sistema operativo invitado con una interfaz de red usando el siguiente comando:

/usr/bin/qemu-kvm -hda /mnt/kvmtest.img -m 1024 -net nic,macaddr=52:54:00:12:34:56 -net tap,script=/etc/qemu-ifup

Usted deberá especificar una interfaz de red cuando inicie el servidor virtual.

Cómo configurar la red del sistema operativo invitado

Luego del arranque del sistema operativo invitado, configure su red como lo haría normalmente.

¡Felicitaciones! Usted ha creado con éxito un servidor virtual sobre KVM.

Recursos

Aprender

Obtener los productos y tecnologías

Comentar

  • Involúcrese en la comunidad My developerWorks . Contáctese con otros usuarios de developerWorks mientras explora los blogs, foros, grupos y wikis impulsados por desarrolladores.

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Linux
ArticleID=480673
ArticleTitle=Cree un servidor virtual basado en KVM
publish-date=03052010