Your SlideShare is downloading. ×

Virtualización con kvm

868

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
868
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
28
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Virtualización con KVM, virtualización de código abierto KVM me parece una opción de futuro puesto que recientemente Red Hat a apostado fuerte por esta solución, lo que le garantiza un recorrido y un desarrollo importante en los próximos años. KVM se encuentra integrado en el núcleo de Linux a partir de la versión 2.6.20 del kernel. Esta aplicación necesita soporte de hardware para ejecutar la virtualización, ya sea con procesadores de Intel o de AMD. En caso de que nuestro procesador no soporte dichas tecnologías de virtualización será inútil intentar instalarlo. Instalación de KVM Por lo tanto estamos hablando de una solución de virtualización para utilizar en los sistemas Linux. KVM utiliza Virt-Manager como administrador de máquinas virtuales y un Qemu modificado como hypervisor. Para instalarlo lo primero que debemos saber es si nuestro procesador es compatible. Para ello introduciremos los siguientes comandos: $ cat /proc/cpuinfo | grep vmx # para CPUs Intel $ cat /proc/cpuinfo | grep svm # para CPUs AMD Si el sistema no nos devuelve nada me temo que no tenemos soporte de virtualización en nuestro procesador o no lo tenemos activado. En caso afirmativo, instalamos los paquetes necesarios: $ sudo apt-get install kvm libvirt-bin ubuntu-vm-builder bridge-utils e incluimos el usuario en el grupo de kvm $ sudo adduser $USER kvm Una vez realizado todos estos pasos tendremos que reiniciar la sesión, dependiendo de la versión de Ubuntu que estemos utilizando. Si todo ha ido bien, tendremos una nueva entrada en nuestro menú Aplicaciones/Herramientas del Sistema/Administrador de
  • 2. Máquina Virtual desde donde podemos comenzar la instalación de nuestras máquinas virtuales. Creación de las máquinas virtuales Una vez abierto el Administrador de Máquina Virtual tendremos que crear una conexión, en caso de que no nos aparezca por defecto. Para ello lo único que tenemos que seleccionar es QEMU como hipervisor y Local como conexión. Tras seleccionar la nueva entrada creada nos aparecerá activo el botón Nuevo, donde tras pulsarlo accedemos al Asistente para la creación de máquinas virtuales. Lo primero que tenemos que hacer es asignar un nombre al sistema que vamos a virtualizar, y luego nos permite elegir cómo queremos virtualizarlo, ya sea virtualización completa o paravirtualización. Este segundo método utiliza el hipervisor para compartir el acceso al hardware subyacente pero integra código que está al tanto de la virtualización en el propio sistema operativo. Es necesario que los sistemas operativos alojados sean modificados por el hipervisor. Ofrece un rendimiento próximo al de un sistema no virtualizado. En mi caso he optado por una virtualización completa para tratar de aproximar los resultados al resto de opciones que hemos virtualizado.
  • 3. Comenzamos con el asistente a definir las opciones de nuestra máquina virtual. Podemos elegir visor, ya sea KVM o QEMU y la instalación la podemos llevar a cabo mediante una imagen ISO, un CD o a través de la red. Lo siguiente que debemos hacer es indicar donde está la imagen *.ISO y dónde vamos a alojar nuestro disco duro virtual. Podemos elegir si le damos el tamaño fijo o dentro del tamaño asignado el archivo de imagen va creciendo a medida que vamos instalando archivos. Después nos bastará con elegir las opciones de red, ya sea red virtual o compartir la tarjeta de red física con el equipo anfitrión. Por último asignamos memoria y CPU a la máquina virtual y ya tendremos creada nuestra máquina virtual. Una vez creada la máquina virtual tendremos que instalar el sistema operativo que hayamos elegido al igual que haríamos en este caso con un ordenador al que le acabamos de instalar el disco duro. Este proceso nos llevará más o menos tiempo en función de la memoria y procesador que hayamos asignado a nuestra máquina virtual, así como si instalamos a través de CD, de una imagen *.ISO o de la red que son las opciones disponibles. Funcionamiento general Las máquinas virtuales tienen un rendimiento muy bueno, comparando con el funcionamiento general de otras máquinas virtuales de las aquí examinadas. No tienen nada que envidiar en ningún aspecto. Una de las cosas que me ha gustado bastante es el modo fluido que funciona automáticamente en Windows sin necesidad de tener que instalar aplicaciones extras para equipos invitados. No ocurre lo mismo con los sistemas
  • 4. virtualizados en Linux donde no he conseguido tener un modo fluido semejante al obtenido con sistemas Windows. El soporte de los USB es bastante bueno. Tenemos que seleccionar la opción de añadir hardware en las opciones de la consola, hardware donde tenemos una opción para añadir hardware. En este caso para dispositivos USB podemos añadirlos como dispositivos de almacenamiento, seleccionando directamente la partición de disco y la opción de disco USB. Con esta opción podemos utilizar nuestro dispositivo tanto en nuestro sistema anfitrión como en nuestro invitado. Siempre es posible realizar mejoras en este sector que creo que es uno donde todos los sistemas tiene margen para conseguir que la experiencia del usuario sea más satisfactoria. Respecto a la instalación de los dispositivos USB uno de los aspectos positivos es que una vez instalado el controlador del dispositivo en el equipo invitado podremos conectarlo directamente en caliente. No es necesario tener previamente seleccionado el dispositivo antes de arrancar el sistema, ni siquiera es necesaria que la unidad esté montada en nuestro sistema. El aspecto que menos me ha gustado ha sido el gráfico, donde creo que KVM rinde peor que otras soluciones en el apartado gráfico puesto que no soporta la aceleración por hardware 3D que si está disponible por ejemplo en VirtualBox. Un aspecto que me ha parecido interesante es la incorporación de los gráficos de rendimiento de los sistemas virtuales dentro de Virtual Manager que nos indica como se está comportando nuestro sistema virtual, qué uso está haciendo de la CPU o de la memoria, datos que nos ayudan a ver el rendimiento de estas máquinas y hasta que punto podemos tener varias trabajando en paralelo en nuestro ordenador.
  • 5. Respecto a los puntos negativos de este sistema podemos subrayar que únicamente está disponible para Linux, por lo tanto no se trata de un sistema multiplataforma y esto sin duda le resta puntos. Podríamos decir que es el equivalente de Virtual PC en sistemas Linux, con un buen rendimiento aún a costa de una peor resolución gráfica. La parte buena es que al estar integrado en el kernel de Linux la relación entre sistemas es bastante buena. En general KVM no me parece muy intuitivo, no es que tampoco podamos decir que es complicado, pero si es verdad que para usuarios noveles no es el sistema con el cual yo les recomendaría que se iniciasen en la virtualización. Existen formas más sencillas de dar soluciones a distintos aspectos de la virtualización, y no me refiero a nivel técnico, sino respecto a la usabilidad del programa, que a veces te puedes perder un poco entre las distintas opciones. Virtualización con Ubuntu y KVM – parte 2 En esta segunda parte veremos como instalar y gestionar alguna máquina virtual, tanto windows como linux. Instalar y manejar VM’s Para crear y manejar las máquinas virtuales (guests) podemos hacerlo gráficamente o por consola.
  • 6. Por línea de comandos (virt-install y virsh): Tenemos las siguientes herramientas:  ubuntu-vm-builder – es una herramienta desarrollada por Canonical para crear maquinas virtuales Ubuntu. Realmente lo que instala es el paquete python-vm-builder  python-vm-builder – Script que automatiza la creacción de una VM basada en Linux (por línea de comandos) Las instalamos con: # aptitude install ubuntu-vm-builder Creación de VM’s por línea de comando – virt-install: Para mi la mas potente es la herramienta desarrollada por Red Hat (que es la que ha desarrollado e invertido en KVM. Ubuntu simplemente se ha apuntado al carro en plan oportunista…como siempre), que es virt-install, ya que permite crear máquinas de todo tipo (incluido windows). Virt-install es un Script desarrollado por Red Hat que automatiza la creacción de una VM de cualquier tipo (Linux, Windows, BSD…). Virt-install utiliza la librería ‘libvirt’. Lo instalamos con: # aptitude install virtinst Para ver todas las opciones hacemos un ‘man virt-install’ Para crear una VM de Lucid Server 64bits haremos: # virt-install --connect=qemu:///system --name=lucid --ram=512 --vcpus=1 --check-cpu --os-type=linux --hvm --vnc --accelerate --disk=/home/gonzalo/Src/libvirt/images/lucid.img,size=4,sparse= true --cdrom=/home/gonzalo/Src/libvirt/ubuntu-10.04-serveramd64.iso --network=bridge:br0 Lo cual significa: –name=lucid -> El nombre que le vamos a dar a la VM –ram=512 -> La RAM que le vamos a asignar (se puede modificar posteriormente) –vcpus=1 -> CPU’s virtuales que le vamos a asignar –check-cpu -> Comprueba que el nº de CPU’s asignadas no exceda el del Host y si es así nos avisa
  • 7. –os-type=linux -> Tipo de Sistema Operativo que vamos a instalar (linux o windows) –os-variant=OS_VARIANT -> Variante para ajustar mas la instalación. Si se pone esta opción no hace falta la anterior (–os-type). Hay varios tipos ‘winxp’, ‘ubuntukarmic’ (consultar man). –hvm -> Que utilice full-virtualization. Si quisiésemos usar paravirtualizacion usaríamos la opción –paravirt –acelerate -> Esta opción se usa ya por defecto y está deprecated (se puede omitir) –disk=/home/gonzalo/Src/libvirt/images/lucid.img,size=4,sparse=true -> El disco que vamos a crear, size=4 el tamaño en GB, sparse=true que no reserve todo el espacio y que lo vaya asignando a medida que crece el disco (.img) –cdrom=/home/gonzalo/Src/libvirt/ubuntu-10.04-server-amd64.iso -> La iso o el cd si está puesto y montado en la bandeja ( –network=bridge:br0 -> Que utilice como red el dispositivo bridge ‘br0 ′ para poder tener la red en el mismo rango que el host Mas opciones: –sound -> Attach a virtual audio device to the guest. –vnclisten=VNCLISTEN -> Por defecto solo escucha en localhost (127.0.0.1), pero podemos hacer que se puedan conectar desde una ip en concreto, varias separadas por comas o rango entero. Para crear un VM de windows XP: # virt-install --connect=qemu:///system --name=server2003 --ram=1024 --vcpus=1 --check-cpu --os-variant=win2k3--hvm --vnc --accelerate --disk=/home/gonzalo/Src/libvirt/images/server2003.img,size=14,s parse=true --cdrom=/home/gonzalo/Src/windows/Windows Server 2003 R2 SP2 Enterprise Spanish Volume License Edition CD1.iso --network=bridge:br0 --sound Saldría algo como: Empezando la instalación...
  • 8. Creando archivo de almace 100% |=========================| 4.0 GB 00:00 Creando dominio... 0 B 00:00 No se ha podido conectar a una consola gráfica: no está instalado el virt-viewer. Por favor, instale el paquete "virtviewer". La instalación del dominio continúa en progreso. Puede reconectarse a la consola para completar el proceso de instalación. Tal y como indica la instalación empieza pero como no tenemos X, no puede mostrarnos el proceso. Si tuviesemos X en el mismo servidor, sería tan fácil como: # sudo virt-viewer vm10 Desde otro equipo podemos instalar el paquete virt-viewer y conectarnos haciendo: # sudo virt-viewer --connect qemu+ssh://root@gonzalomarcote.com:22003/system lucid Ahora si se abre la ventana y podemos continuar con la instalación. Nota: Una vez instalado no reinicia la VM. Esta queda apagada. Habría que iniciarla (lo explico mas abajo). También podemos usar virt-install en modo prompt y nos va solicitando las opciones: # virt-install --prompt Gestión de las VM’s por línea de comando – virsh: La creación de la máquina virtual ha generado un archivo xml con el nombre de la VM en /etc/libvirt/qemu/ Para arrancarlas ejecutamos: # virsh start lucid Para crear una VM, no hace falta crearla siempre con ‘virt-install’. Podemos tener una VM básica modelo y clonarla. Pueden ser creadas a partir de los ficheros XML. 1º – Volcamos una imagen de una VM ya existente # virsh dumpxml GuestID > guest.xml
  • 9. Ej: # virsh dumpxml 2 > ubuntu.xml 2º – Creamos e iniciamos la nueva máquina: # virsh create /etc/libvirt/qemu/ubuntu.xml Para ver las VM’s que tenemos en este mismo momento podemos ejecutar: # virsh -c qemu:///system list Id Nombre Estado ---------------------------------2 lucid ejecutando Para que arranque la máquina con el host haremos: # virsh -c qemu:///system autostart nºid Y para desactivar este arranque: # virsh -c qemu:///system autostart --disable domain-id Para apagar una máquina virtual de forma ordenada: # virsh -c qemu:///system shutdown 2 El dominio 2 está siendo apagado Para que las VM’s Linux apaguen correctamente hay que instalar el demonio ‘acpid’: # aptitude install acpid Si una VM no responde podemos destruir el dominio: # virsh -c qemu:///system destroy 6 Si hemos definido una VM y la queremos borrar ‘completamente’ hemos de ejecutar el siguiente comando: # virsh destroy guindous # virsh undefine guindous Esto significa que ya podemos volver a crear un guest que se llame ‘guindous’. Para poner y quitar un CD o una iso: Vamos a los xml de configuración de cada guest en /etc/libvirt/qemu y lo editamos. Donde pone: <disk type='file' device='cdrom'>
  • 10. <driver name='qemu' type='raw'/> <target dev='hdc' bus='ide'/> <readonly/> </disk> Ponemos: <disk type='file' device='cdrom'> <driver name='qemu'/> <source file='/home/gonzalo/Src/windows/winxp.iso'/> <target dev='hdc' bus='ide'/> <readonly/> </disk> Si en vez de una iso queremos poner el cd o dvd que haya en la bandeja del host, ponemos: <disk type='file' device='cdrom'> <driver name='qemu'/> <source file='/media/cdrom'/> <target dev='hdc' bus='ide'/> <readonly/> </disk> Gestionar las VM’s Gráficamente: Para gestionar las Máquinas virtuales gráficamente desde un Ubuntu con X, podemos instalar el meta-paquete ‘ubuntu-virt-mgmt’, que instala el paquete ‘virt-manager’ y ‘virt-viewer’ en nuestro desktop para gestionar y crear las máquinas y acceder (por VNC) a los guests. # aptitude install ubuntu-virt-mgmt Leyendo lista de paquetes... Hecho Creando árbol de dependencias Leyendo la información de estado... Hecho Leyendo la información de estado extendido Inicializando el estado de los paquetes... Hecho Se instalarán los siguiente paquetes NUEVOS: acl{a} bsd-mailx{a} build-essential{a} cvs{a} dctrl-tools{a} debootstrap{a} devscripts{a} diffstat{a} dpkg-dev{a} dput{a} g++ {a} g++-4.4{a} gettext{a} intltool-debian{a} kpartx{a} libapt-
  • 11. pkg-perl{a} libauthen-sasl-perl{a} libdevel-symdump-perl{a} libio-ptyperl{a} libio-stringy-perl{a} libipc-run-perl{a} libparsedebcontrol-perl{a} libpod-coverage-perl{a} libstdc++6-4.4-dev{a} libterm-size-perl{a} libtest-pod-perl{a} lintian{a} patchutils{a} postfix{a} python-cheetah{a} python-gtk-vnc{a} python-libvirt{a} python-urlgrabber{a} python-vm-builder ubuntuvirt-mgmt virt-manager virt-viewer virtinst{a} wdiff{a} xz-utils{a} 0 paquetes actualizados, 40 nuevos instalados, 0 para eliminar y 0 sin actualizar. Necesito descargar 17,0MB de ficheros. Después de desempaquetar se usarán 62,9MB. instala entre otros:  virt-manager – Aplicación de escritorio GUI para gestionar máquinas virtuales. Hay otras como convirt o convirt2 que es por web.  virt-viewer – un VNC para conectarnos a las máquinas Es conveniente instalrlo en otra máquina con X (desktop o laptop) y no en el mismo servidor, ya que recordemos que KVM lo estamos instalando en un server sin X y no podríamos acceder desde el (aunque no pasa nada porque este en la misma máquina si es que si que tenemos las X instaladas). Una vez instalado debemos configurar que por defecto cree los guest con la red en modo bridge (que use br0) por defecto, para así poder poner rangos de red iguales que el host. La VM’s están definidas en ficheros XML. ubuntu-vm-builder, la utilidad que usaremos en modo comando para crear las VM’s (solo basadas en linux), se basa en el siguiente template: /etc/vmbuilder/libvirt/libvirtxml.tmpl Por lo cual haremos un backup y lo editamos poniendo: <interface type='network'> <source network='default'/> </interface> a:
  • 12. <interface type='bridge'> <source bridge='br0'/> </interface>

×