kvm: the kernel virtual machine -...

17
KVM: The Kernel Virtual Machine Virtualizando con GNU/Linux Versión 1.0 Juan Matias Granda – [email protected] Algunos derechos reservados: Licencia GFDL - 2008 http://www.gnu.org/copyleft/fdl.html traducción NO oficial al español: http://gugs.sindominio.net/licencias/gfdl-1.2-es.html

Upload: nguyenkien

Post on 09-Nov-2018

233 views

Category:

Documents


0 download

TRANSCRIPT

KVM: The Kernel Virtual MachineVirtualizando con GNU/Linux

Versión 1.0

Juan Matias Granda – [email protected] derechos reservados: Licencia GFDL ­ 2008

http://www.gnu.org/copyleft/fdl.htmltraducción NO oficial al español: 

http://gugs.sindominio.net/licencias/gfdl­1.2­es.html

Introducción:

KVM es una solución para implementar virtualización completa con Linux sobre hardware x86. Está formada por un módulo del núcleo (con el nombre kvm.ko) y herramientas en el espacio de usuario, siendo en su totalidad software libre. El componente KVM para el núcleo está incluido en Linux desde la versión 2.6.20.

KVM permite ejecutar máquinas virtuales utilizando imágenes de disco que contienen sistemas operativos sin modificar. Cada máquina virtual tiene su propio hardware virtualizado: una tarjeta de red, discos duros, tarjetas gráfica, etc.

Lo que se verá en este documento son todos los pasos necesarios para montar un Servidor de maquinas virtuales por medio de KVM y las herramientas necesarias para poder administrar tanto al servidor como así también a sus respectivas maquinas virtuales.

Reuniendo lo necesario

Hardware a utilizar

El hardware a utilizar es muy importante ya que no todos los equipos permiten realizar este tipo de virtualización, para ello el procesador del equipo deberá tener una de las siguientes micro instrucciones:

• Procesadores Intel: INTEL-VT• Procesadores AMD: AMD-V•

Para comprobar si nuestro equipo posee alguna de estas micro instrucciones deberemos ejecutar en consola:

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

Lo que nos devolverá algo como:

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 syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm ida

Esto es así ya que grep encontró la micro instrucción “vmx” en el microprocesador del equipo, si hubiera sido un equipo AMD, la micro instrucción a encontrar sería “svm”.

Si bash no nos devolvió nada quiere decir que el equipo no podrá correr KVM.

Software a utilizar

Si todo ha ido bien en el punto anterior, el Software a usar sera el siguiente:

• Ubuntu Linux 8.04.1 Server Edition, arquitectura 64bits.• Kernel Linux 2.6.24 (versión del manual: 2.6.24-21-generic).• libvirt0 0.4.0 (versión del manual: 0.4.0-2ubuntu8 ).• virt-manager 0.5.3 (versión del manual: 0.5.3-0ubuntu9).

todo el software a utilizar se encuentra en los repositorios de Ubuntu, ya que Ubuntu eligió a KVM como sistema de virtualización, lo que nos asegura un buen rendimiento.

Instalando y Configurando

Instalando KVM y herramientas necesarias

La instalación de KVM y sus herramientas es prácticamente sencillo, solo deberemos ejecutar:

$ sudo apt-get install kvm libvirt-bin virt-manager

• libvirt-bin: trae el demonio libvirtd el cual se usara para administrar KVM.• Kvm: el emulador x86.• Virt-manager: Interfaz gráfica que nos permitirá crear y administrar las

maquinas virtuales.

Con esto ya tendremos corriendo nuestro KVM, pero antes de utilizarlo deberemos hacer un par de configuraciones previas.

Incorporando usuarios al grupo libvirtd

Para poder administrar KVM debemos ingresar el/los usuario(s) administrador al grupo libvird, para ello:

$ sudo adduser `id -un` libvirtd

El comando `id -un` nos devolverá el usuario que estamos utilizando en estos momentos, cabe aclarar que para poder agregarlo el mismo debe poder hacer uso del comando sudo.

Si deseamos agregar mas usuario, debemos cambiar el comando `id -un` por el nombre del usuario, por ejemplo:

$ sudo adduser admin2 libvirtd

Recuerde que para que los nuevos grupos sean agregados a su usuario deberá loguearse nuevamente, NO en el entorno gráfico, sino en las consolas que este usando en ese momento.

NOTA: Este punto no es del todo necesario si es que vamos a utilizar virt-manager (ya que lo correremos con permiso de root), pero se pretende enseñar en una nueva versión del manual herramientas como virsh, las cuales nos permitiran administrar KVM usando nuestro usuario y no root.

Creando bridged network (red virtuales usando puente )

Para que las máquinas virtuales puedan tener conexión a redes físicas reales, debemos crear puentes o bridges entre las placas reales (eth0, eth1, etc) y placas virtuales que crearemos (br0, br1, etc).

Como vamos a modificar la configuración de la red, seria conveniente parar el sistema de red un momento:

invoke-rc.d networking stop

Luego editamos el archivo “ /etc/network/interfaces “ y agregamos las siguientes lineas al final del mismo:

auto br0 iface br0 inet static address 192.168.1.200 network 192.168.0.0 netmask 255.255.0.0 broadcast 192.168.255.255 gateway 192.168.2.1 bridge_ports eth0 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp off bridge_maxwait 5

Suponemos que el lector comprende las lineas agregadas, la única que vale la pena explicar es:

bridge_ports eth0

La cual nos esta diciendo que la placa asociada a la placa bridge virtual es la placa “real” eth0.

Una vez creadas todas las placas bridge que necesitamos, reiniciamos el sistema de red:

$ sudo /etc/init.d/networking restart

virt-manager: Creando VMs

virt-manager (Virtual Machine Manager) es una aplicación de escritorio para administrar maquinas virtuales. La misma presenta un sumario de los “dominios” o maquinas virtuales que están corriendo, mostrando la performance y sus estadísticas. virt-manager posee un Wizard para la creación de nuevas VM, permitiendo configurar y ajustar los recursos y hardware virtual de las mismas. Este programa también posee embebido un cliente VNC para ver gráficamente los dominios que se estén corriendo.

virt-manager aún se encuentra en desarrollo (y que software no?) por eso encontraremos ciertas fallas en el, como así también la falta de traducción a nuestro idioma nativo, el español.

Corriendo el virt-manager

Al programa lo ejecutaremos con sudo ya que sino habrá ciertas características inhabilitadas:

$ sudo virt-manager

imagen 1

En la imagen 1 podemos observar que tenemos un host cargado de forma predeterminada, el localhost, al cual virt-manager no se encuentra conectado (ver estatus “disconnected”), para conectarnos y poder trabajar sobre nuestro KVM del localhost, haremos click derecho sobre el host y seleccionaremos “conectar”. Ahora el estado ha cambiado a “active” y ya nos muestra la cantidad de CPUs que posee el equipo, en este caso 2 (imagen 2).

imagen 2

Creando una Maquina Virtual

Una vez conectados al host, se nos habilitará el botón “nuevo”, el cual al hacer click nos permitirá crear una máquina virtual (desde ahora VM).

imagen 3

Eligiendo un nombre

Lo primero que se nos preguntará sera el nombre de la nueva VM (imagen 4).

imagen 4

Método de virtualización

Se nos preguntará el método de virtualización (ya que virt-manager puede ser utilizado con Xen veremos que se encuentra una opción “Paravirtualized”, la cual no esta habilitada para KVM) aquí dejaremos todo como esta, manteniendo la arquitectura del CPU en x86_64 y habilitada la aceleración por hardware (imagen 5).

imagen 5

Medio de instalación y tipo de host

Podremos elegir entre 3 métodos para instalar el nuevo sistema operativo de nuestra VM:• Imagen ISO.• CD-ROM o DVD.• Booteo por red.

El tipo de Host a elegir dependerá del sistema operativo que querramos instalar, en este ejemplo seleccionaremos como “OS Type” a Linux y como “OS Variant” a Ubuntu Hardy (imagen 6).

imagen 6

Seleccionando el medio de almacenamiento

Para almacenar los datos de nuestra VM, podremos elegir entre una partición real o un simple archivo o “disco virtual”.

Cuando elegimos un disco virtual deberemos especificar el tamaño máximo que tendrá y si se debe reservar todo el espacio asignado al crearlo o que vaya creciendo incrementalmente a medida que se use (imagen 7).

imagen 7

Eligiendo la conexión de red

Tendremos dos métodos de red para nuestra VM, una red virtual, entre el host y la VM (“Virtual Network”) y la otra que nos permite conectar la VM a un dispositivo físico del host, permitiendo conectar la VM a redes fisicas reales usando de puente el host donde esta alojada esta(“Shared physical device”).

En este punto seleccionaremos en “Shared physical device” la placa de red virtual “br0” creada previamente (imagen 8).

Veremos un punto también llamado “set fixed MAC...” esto nos permitirá modificar la MAC address de la placa de red a utilizar.

imagen 8

Cantidad de memoria y CPU

En este punto deberemos seleccionar la cantidad de memoria ram que será asignada a nuestra VM.

Aquí veremos que podemos elegir la cantidad máxima de memoria y la cantidad de memoria reservada al inicio, esto es así por Xen (recuerden que la aplicación sirve para administrar host con Xen o KVM), KVM no permite aún manejar memoria incremental, así que en este punto se asignara en los 2 campos la misma cantidad de memoria.

Con respecto a los Virtual CPUs que utilizaremos queda a criterio de cada uno (imagen 9).

imagen 9

Finalizando

Lo ultimo que resta es ver si todos los datos ingresados son los correctos, al dar click en “Finish” se creara la VM (imagen 10).

imagen 10

imagen 11

virt-manager: Administrando Vms

Ya tenemos nuestra VM creada, ahora lo único que resta ver es como administrarla y realizarle modificaciones en caso de necesitarlas.

Viendo el estado y el hardware

Podremos ver el estado de nuestra VM haciendo click sobre ella y seleccionando el botón “details”. Esto nos abrirá 2 solapas, una “Overview” donde podremos observar los detallas del uso de CPU y memoria (imagen 12).

imagen 12

La otra solapa “Hardware” nos permitirá administrar el hardware virtual de nuestra VM, por defecto encontraremos estos:

• Processor: Permite cambiar la cantidad de CPUs.• Memory: Permite cambiar la cantidad de memoria ram.

• Boot Options: Podremos elegir el método de booteo (cd, hd, floppy, etc). También veremos la opción “Autostart VM”, esta opción es muy importante, sirve para decirle al demonio libvirtd que cuando inicie KVM inicie la VM también, esto nos servirá para arrancar los servidores en producción al mismo tiempo que inicia el host.

• Disk hda: Solo veremos la información del disco, ya sea virtual o real.• NIC: Aquí podremos cambiar la MAC address de la placa de red si es que

fuera necesario.• Mouse: Información que tenemos un mouse conectado a nuestra VM.• Display: que hace referencia al servidor VNC que trae el virt-manager.

Por ultimo veremos el botón “añadir”, el que nos permitirá agregar nuevo hardware virtual (imagen 13).

imagen 13

Agregando nuevo Hardware

Como nombramos anteriormente podremos agregar nuevo hardware haciendo click en el botón “Añadir” de la solapa “Hardware”, al hacerlo virt-manager nos preguntará que tipo de hardware deseamos agregar:

• Storage device: dispositivos de almacenamiento.• Network card: placas de red.• Input device: mouse o teclados.• Graphics device: dispositivos visuales (servidores VNC).

Veremos un ejemplo de como agregar un dispositivo de almacenamiento (lectora de CD), para ello elegiremos “storage device” (imagen 14).

imagen 14

En el siguiente punto deberemos marcar “Simple File” para agregar la imagen iso y elegir en “Target” “IDE cdrom”. Si queremos enlazar a un dispositivo real elegiremos “Source” y pondremos por ejemplo “/dev/cdrom” (imagen 15).

Con esto ya tendremos nuestra VM funcionando y con los conocimientos básicos de administración.

Imagen 15

Bibliografía

• http://es.wikipedia.org/wiki/KVM • https://help.ubuntu.com/community • http://virt-manager.et.redhat.com/

Versiones lanzadas

• Versión 1.0: 28/08/2008, 1er lanzamiento.