You could put your verification ID in a comment Or, in its own meta tag Or, as one of your keywords Your content is here. The verification ID will NOT be detected if you put it here. Linux para Noveles: Virtualización con Ubuntu y KVM

Mi blog ha sido movido!

Seras automaticamente redirigido a la nueva direccion. Si esto no ocurre, visita
http:http://www.linuxnoveles.com/
Y actualiza tus Favoritos.

miércoles, 20 de abril de 2011

Virtualización con Ubuntu y KVM

Para un desarrollador o administrador de sistemas, la virtualización puede ser muy útil:
  • puedes desarrollar aplicaciones o probar aplicaciones en hardware que realmente no existe
  • puedes aislar aplicaciones para estudiarlas con detenimiento
  • facilitar el proceso de actualizaciones
  • facilitar la implementación de recuperación de desastres o continuidad de negocio
  • aislar a los usuarios para que no anden jugando con el sistema
  • asignación de más hardware o nuevo hardware a un sistema operativo
  • ejecución de aplicaciones antiguas
En los entornos Linux encontramos virtualización de software cerrado como puede ser Parallels o VMWare así como alternativas de software libre como openVZ, Xen, UML, qemu.

KVM realmente es un acelerador de qemu y no un software de virtualización, tal y como dicen en su web:

KVM ha sido desarrollado por una empresa de Israel llamada Qumranet. KVM presenta una serie de ventajas (creo yo) frente a Xen (que tanto de moda está ahora):
  • es un módulo del kernel, luego no tienes que arrancar kernels especiales ni aplicar parches
  • está aceptado en el kernel desde la versión 6.20
  • no es necesario modificar el kernel del sistema operativo que vas a ejecutar dentro de la máquina virtual
  • soporta tecnología NUMA por lo que la escalabilidad es casi “infinita
  • tiene muy pocas líneas de código
  • utiliza el scheduler y gestor de memoria propio del kernel
Claro está, tiene sus inconvenientes
  • necesitas tener un procesador con soporte para virtualización por hardware, como son los procesadores con tecnología AMD-V e Intel-VT
  • no tiene el soport ni el número de seguidores que tiene Xen
  • no tiene el apoyo económico que tiene Xen: Red Hat, Novell, Citrix
  • no tiene el apoyo tecnológico que tiene Xen: Red Hat, Novell, Citrix
  • no tiene interfaces gráficas bonitas y sencillas de usar para configurar y administrarlo
He puesto esta última línea en inconvenientes ya que hoy en día se considera que algo sin interfaz gráfica es difícil de instalar y gestionar. Yo creo que no es así ya que para instalar kvm necesitas los siguientes paquetes (openSUSE 10.3):
  • qemu
  • kvm
  • kvm-kmp- (puedes tener un kernel “default”, “SMP”, …, en mi caso es kvm-kmp-default)
Como se puede ver, son muy pocos. Existe una interfaz gráfica que se llama qtemu, pero es una inerfaz gráfica para Qemu, no para KVM.

Pasos preliminares
Primero para comprobar que nuestra máquina soporta virtualización ejecutamos el siguiente comando:

# kvm-ok
INFO: Your CPU supports KVM extensions
INFO: /dev/kvm exists
KVM acceleration can be used

Si no soporta virtualización saldría:
INFO: Your CPU does not support KVM extensions
KVM acceleration can NOT be used
También lo podemos comprobar ejecutando:

# egrep '(vmx|svm)' --color=always /proc/cpuinfo

Hay que usar un Host 64 bits siempre que sea posible, ya que en uno de 32 bits estaremos limitados a poner un máximo de 2Gb de RAM por máquina virtual (limite en 64 bits?) y un host 64 bits puede albergar guests 64 y 32 bits, mientras que un un host 32 bits, solo puede albergar máquinas virtuales de 32 bits.
Para comprobar que tenemos un procesador 64 bits, ejecutamos:

# grep ' lm ' /proc/cpuinfo

Si no sale nada es que no tenemos un host 64 bits.
También hemos de comprobar que tenemos una distribución de 64 bits. Para ello ejecutamos:
dmesg | grep kvm
# uname -m

y nos ha de salir ‘x86_64′.
Si ves que te sale 386, i486, i586 o i686, es que estas ejecutando una distro con un kernel 32 bits.

Instalación
Para instalar KVM en Ubuntu lo podemos hacer seleccionándolo durante la instalación (Virt Host o algo así) o si ya tenemos instalado un servidor pelado instalamos este meta-paquete:

 

sudo apt-get install virt-manager virt-viewer

Que instala entre otros los paquetes ‘kvm libvirt-bin ubuntu-vm-builder bridge-utils’.
- kvm – es la solución de virtualización que se compone de una serie de módulos para el núcleo linux.Usa QEMU
- libvirt-bin – son unas herramientas para administrar kvm y libvirt.
- bridge-utils – sirve usar la red local con la red virtual
Podemos comprobar que todo ha ido bien ejecutando:

# virsh -c qemu:///system list

Y nos debe salir:

Id Name State
----------------------------------

NOTA:
Nos aseguramos que el usuario que va a crear y gestionar las VM’s sea incluido en el grupo libvirtd.
En Lucid por defecto lo hace si no, lo haríamos a mano:

# adduser $USER libvirtd

Configurar la red
Hay varias maneras de permitir acceder al interfaz de red físico del host desde las diferentes VM’s.
La forma predefinida es en modo ‘usermode’, el cual usa el protocolo SLIRP para acceder por NAT al la red (de esta forma las VM’s no pueden tener el mismo rango de red que el host).
La mejor forma es hacer un bridge. De esta forma la red de las diferentes VM’s pueden estar en el mismo rango de red que el Host.
Para ello instalamos las bridge-utils:

aptitude install bridge-utils

Y configuramos la red:

sudo gedit /etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback

auto br0
iface br0 inet static
address 192.168.1.3 # pon los datos que tengas tu
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off

Finalmente reiniciamos la red con un:

# /etc/init.d/networking restart

Y ya deberíamos ver un interfaz de red br0

Vayamos con un ejemplo y veremos que con 5 simples pasos (que incluso se puden copiar y pegar) nos funcionará a las mil y una maravillas ;)
  1. Cargar módulo del kernel (dependiendo del procesador, cargaremos uno u otro módulo. En mi caso cargo el módulo kvm-amd y aque tengo un AMD). Este paso lo hacemos como root:
  2. modprobe kvm-amd // modprobe kvm-intel
  3. Como root, cambiamos el valor de /proc/sys/dev/rtc/max-user-freq para conseguir un mejor rendimiento:
  4. echo 1024 > /proc/sys/dev/rtc/max-user-freq
  5. Ahora, como usuario creamos la imagen o disco virtual que usaremos como destino de instalación de nuestra máquina virtual. Es aconsejable que el usuario pertenezca al grupo kvm.
  6. qemu-img create hdd_drive.img -f qcow2 6G
  7. Ahora empezamos la instalación del sistema operativo que se ejecutará en nuestra máquina virtual. Podemos usar una imagen iso o bien un CD/DVD. Pongo un ejemplo de cada uno por si queréis experimentar:
  8. qemu-kvm -m 1024 -hda hdd_drive.img -cdrom /ruta/imagen.iso -boot d 
    qemu-kvm -m 1024 -hda hdd_drive.img -cdrom /dev/cdrom -boot d
          kvm -boot d -cdrom /dev/cdrom   arranca la instalacion desde el CD
     
  1. Una vez instalada la nueva máquina virtual, arrancamos el sistema recientemente instalado :)
  2. qemu-kvm -no-acpi -m 1024 -hda hdd_drive.img

Qemu-KVM tiene actualmente una interfaz gráfica brillante: Virtual Machine Manager
(http://virt-manager.org/)

Para las distros basadas en Debian, #apt-get install virt-manager

Nota importante: instalar kvm bloquea VirtualBox con el siguiente mensaje:
Fallo al iniciar la máquina virtual VM01.
VirtualBox can’t operate in VMX root mode. Please disable the KVM kernel extension, recompile your kernel and reboot (VERR_VMX_IN_VMX_ROOT_MODE).
Si quieres correr VirtualBox en un sistema con KVM instalado, deberás ejecutar antes
# modprobe -r kvm-intel
# modprobe -r kvm-amd


Ya está, 5 simples pasos para tener una nueva máquina virtual corriendo en nuestro sistema.


Gracias a thrash

No hay comentarios:

Publicar un comentario

Comentario inicial

Alguna vez te has cansado de windows, pero no te atreves a dejarlo, esta es tu pagina. Te enseñaremos pequeños trucos y guías para que puedas hacerlo fácilmente. Ubuntu, fedora, debian, linux mint, unity, gnome, kde, kubuntu

Esta web es sin animo de lucro, solo para facilitar el aprendizaje a los noveles. Toda la información aquí recopilada se obtiene libremente en Internet.