Base de Conocimiento Base de Conocimiento

« Volver a Servidor de...

Kernel Based Virtual Machine (KVM)

Etiquetas: kvm virtualizacion

Table of Contents [-]

  1. Tipos de virtualización
    1. Emulación
      1. Virtualización Completa.
        1. Paravirtualización
        2. Características KVM
          1. Instalar KVM
            1. Verificación del modulo virtualización
              1. Instalación de KVM
                1. Usuario KVM
                  1. Partición VM
                  2. RED en KVM
                    1. Bridge
                      1. Configuración modo Bridge
                      2. NAT
                        1. Configuraron modo NAT
                          1. Configuración de Dnsmasq
                            1. Configuración de interfaces de red
                            2. Configuración del firewall
                            3. Administración vía consola
                              1. Instalación VM vía comandos
                                1. Visualizar una MV
                                  1. Conectarse al hypervisor
                                    1. Listar Máquinas Virtuales
                                      1. Iniciado automáticamente de MV
                                        1. Iniciando Máquina Virtual
                                          1. Suspender Máquina Virtual
                                            1. Reanudar Máquina Virtual
                                              1. Apagar Máquina Virtual
                                                1. Reiniciar Máquina Virtual.
                                                  1. Matar Máquina Virtual
                                                    1. Información Máquina Virtual
                                                      1. Estado de las máquinas virtuales
                                                        1. Información Máquina física
                                                          1. Capacidad de la Máquina física
                                                            1. Información de CPU virtuales
                                                              1. Editar información de la Máquina virtual
                                                                1. Memoria de intercambio de CPUS
                                                                  1. Nombre la máquina física
                                                                    1. Consola de Máquina virtual
                                                                      1. Redes virtuales configuradas.
                                                                        1. Información de redes virtuales
                                                                          1. Crea y inicia red virtual
                                                                            1. Crear red virtual
                                                                              1. Iniciar red virtual.
                                                                                1. Iniciar automáticamente red virtual
                                                                                  1. Editar una red virtual
                                                                                    1. Destruir una red virtual
                                                                                      1. Listar volúmenes de almacenamiento
                                                                                        1. Capacidad del volumen fisico
                                                                                          1. Editar del volumen fisico
                                                                                            1. Lista del volúmenes virtuales
                                                                                              1. Capacidad de volumen virtual
                                                                                                1. Ayuda en linea
                                                                                                  1. Salir del administrador
                                                                                                  2. Administración Gráfica
                                                                                                    1. Virt-Manager
                                                                                                      1. Instalando VM con Virt-Manager
                                                                                                      2. Estado de las MV
                                                                                                        1. Administración de MV
                                                                                                          1. Propiedades de las MV
                                                                                                            1. Configuraciones Máquina Física
                                                                                                              1. Repaso
                                                                                                                1. Redes Virtuales
                                                                                                                  1. Grupos de Almacenaje

                                                                                                                En virtualización existen múltiples tipos de herramientas, pero todos poseen algo en comun, se trata de programas o herramientas que hacen creer a otros programas que son el HW y SW que necesitan.

                                                                                                                La virtualización hace posible tener de uno a varios sistemas operativos sobre uno ya existente, permaneciendo este sin verse afectado y pudiendo arrancarlos de manera independiente.

                                                                                                                La virtualización permite:

                                                                                                                • Ahorra reinicio en caso de que tengamos que cambiar habitualmente de S.O.
                                                                                                                • Permite lanzar varios sistemas operativos diferentes en una misma computadora.
                                                                                                                • Facilita la administración de los sistemas operativos virtualizados.
                                                                                                                • Tan puede ser ocupado para sistemas de pruebas.
                                                                                                                • Migración dinámica de aplicaciones.
                                                                                                                • Y también porque esta de moda o para aprender.
                                                                                                                • La virtualización favorece en los siguientes punto:
                                                                                                                • Ahorro de costes de HW y alojamiento de equipos
                                                                                                                • Mantenimiento de cada servidor.
                                                                                                                • Sistemas centralizados.
                                                                                                                • Aprovechamiento de recursos.
                                                                                                                • Sistemas de prueba.
                                                                                                                • Simplicidad.
                                                                                                                • Compatibilidad.
                                                                                                                • Seguridad.
                                                                                                                • Consumo de energía.

                                                                                                                Tipos de virtualización#

                                                                                                                Solamente tenemos 3 tipo de virtualización:

                                                                                                                • Emulación
                                                                                                                • Virtualización completa
                                                                                                                • Paravirtualización

                                                                                                                Emulación#

                                                                                                                La emulación se basa en crear máquinas virtuales que emulan el hardware de una o varias plataformas hardware distintas. Este tipo de virtualización es la mas costosa y la menos eficiente, ya que obliga a simular completamente el comportamiento de la plataforma hardware a emular e implica también que cada instrucción que se ejecute en estas plataformas sea traducida al hardware real y es demasiado lento en su ejecución.

                                                                                                                En Linux existen varios emuladores pero los mas conocidos son: qemu, Bochs, VirtualBox y Virtuozzo.

                                                                                                                Virtualización Completa.#

                                                                                                                Con este termino se denominan aquellas soluciones que permiten ejecutar sistemas operativos huésped (Guest), sin tener que modificarlos, sobre un sistema anfitrión (Host), utilizando en medio un Hypervisor o Virtual Machine Monitor que permite compartir el hardware real. Esta capa intermedia es la encargada de monitorizar los sistemas huésped con el fin de capturar determinadas instrucciones protegidas de acceso al hardware, que no pueden realizar de forma nativa al no tener acceso directo a el.

                                                                                                                Su principal ventaja es que los sistemas operativos pueden ejecutarse sin ninguna modificación sobre la plataforma, aunque como inconveniente frente a la emulación, el sistema operativo debe estar soportado en la arquitectura virtualizada.

                                                                                                                Existen herramientas para poder hacer una virtualización completa XEN, KVM, Local Domains y VMWARE. Hay que tener en cuenta también que la virtualización completa no se refiere a todo el conjunto de hardware disponible en un equipo, sino a sus componentes principales, básicamente el procesador y memoria.

                                                                                                                Paravirtualización#

                                                                                                                Paravirtualización surgió como una forma de mejorar la eficiencia de las máquinas virtuales y acercarlo al rendimiento nativo. Para ello se basa en que los sistemas virtualizados (huésped) deben estar basados en sistemas operativos especialmente modificados para ejecutarse sobre un hypervisor.

                                                                                                                Los sistemas virtualizados (huésped) deben estar basados en sistemas operativos especialmente modificados para ejecutarse sobre un hypervisor.

                                                                                                                Con la paravirtualización, se puede alcanzar alto rendimiento incluso en arquitecturas (x86) que no suelen conseguirse con técnicas tradicionales de virtualización. A diferencia de las máquinas virtuales tradicionales, que proporcionan entornos basados en software para simular hardware.

                                                                                                                Características KVM#

                                                                                                                KVM (Kernel-Based Virtual Machines), es una solución de virtualización completa sobre GNU/Linux que depende de la extensión de espiritualizaron de los procesador como INTEL VT” o AMD-V. KVM se incluyo oficialmente en el kernel 2.6.20 y consiste en un modulo para el kernel "kvm.ko" que ṕorṕorciona al nucleo la infrestructura de virtualizacion y tiene un modulo por cada tipo de procesador.

                                                                                                                • INTEL "kvm-intel.ko"
                                                                                                                • AMD "kvm-amd.ko"

                                                                                                                Se completa con la version de QEMU que porciona toda funcionalidad de Hardware Virtual para los sistemas virtualizados. Todo la nuevas tecnologicas de desarrollo estan llevando acabo en KVM, ya que va hacer la solucion mas recomendada, soportada por varios sistemas operativos como GNU/Linux, BDS, Solaris, MAC y Windows. Tambien te mayor seguridad entre las maquinas virtuales y una configuracion mas amigable para los administradores, en varias distribuciones que van a cambiar a KVM por Xen entre estas ya estan debian, ubuntu, RHEL, Centos, Fedora, opensuse, mandriva y entre otras mas.

                                                                                                                Ventajas de KVM://

                                                                                                                • Esta diseñado para procesadores x86, centrando en un virtualizacion total.
                                                                                                                • No se modifica el kernel de GNU/Linux.
                                                                                                                • Solamente es un modulo que no necesita parches.
                                                                                                                • Contiene soporte de paravirtualización.
                                                                                                                • KVM funciona en todo tipo de máquinas, servidores, escritorio o laptop.
                                                                                                                • Migración en caliente de máquinas virtuales.
                                                                                                                • Tiene administarcion via web, grafica y consola.
                                                                                                                • La administracion de las maquinas virtuales de hacen por medio de un usuario mortal.
                                                                                                                • Podemos utilizar utilizar el comando kill para matar maquina virtuales ya con KVM son reconocidos como procesos.
                                                                                                                • Maneja 3 tipos de configuracion de red, "Bridge, Route, NAT".
                                                                                                                • Permite ejecutar multitples maquinas virtuales cada una con su propia instancia.

                                                                                                                Instalar KVM#

                                                                                                                Antes de poder instalar es necesario ver los requisitos:

                                                                                                                • Como mínimo un 1 GB de memoria.
                                                                                                                • Disco duro con buena capacidad.
                                                                                                                • Procesador con soporte virtualización.
                                                                                                                • Particiones independientes para el sistema ya de forma clásica o LVM:

                                                                                                                       /boot 
                                                                                                                /tmp / /swap /home /var }}}

                                                                                                                • Partición independiente para las máquinas virtuales:

                                                                                                                /vm

                                                                                                                • Instalación de la distribución debian Lenny y actualizada.
                                                                                                                • Tarjetas de red de buen rendimiento.

                                                                                                                Verificación del modulo virtualización#

                                                                                                                Antes de todo es necesario saber que si nuestro procesador tiene el modulo de virtualización integrado en el procesador. Para esto tendremos que saber si nuestro procesadores tiene soporte, para INTEL es vmx y Amd es svm. Ya sabiendo esto solo queda consultar, por medio del siguiente comando:

                                                                                                                hades:~# egrep '(vmx|svm)' --color=always /proc/cpuinfo
                                                                                                                Nos tiene que devolver la siguiente información:
                                                                                                                flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse
                                                                                                                sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm

                                                                                                                flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc up pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm}}} Con esto indica que el procesador es del tipo INTEL, en caso de que no muestre ninguna información puede ser que el modulo este desactivado y lo tendrán que dar de alta desde el BIOS o no viene integrado con el modulo. Si KVM no detecta el modulo de virtualización asistida por Hardware entonces KVM trabajara de modo paravirtualización pero sin modificar el kernel de GNU/Linux.

                                                                                                                Instalación de KVM#

                                                                                                                Ya que tenemos toda la información para poder iniciar la instalación, se requieren los siguientes paquetes:

                                                                                                                • kvm: El paquete kvm instalar el modulo para el kernel en el cual permitirá tener máquina virtuales huésped
                                                                                                                • libvirt-bin: La librería libvirt-bin es la encargada de la virtualizar a las máquinas huésped.
                                                                                                                • virtinst: La herramienta virtinst nos ayudara a la instalación, administración y configuración de la máquinas huésped.

                                                                                                                Con esto ya sabremos para que nos sirve cada paquete solo queda instalarlos.

                                                                                                                hades:~# apt-get install kvm libvirt-bin virtinst

                                                                                                                Usuario KVM#

                                                                                                                Cuando se termine la instalación, tendremos que asignar un usuario mortal el cual sera el encargado de instalar, administrar y configurar las máquinas virtuales, este usuario se ocupa como medida de seguridad ya que la configuración con XEN es por medio del usuario root y es muy peligroso. Por eso KVM usa un usuario mortal y que que pertenezca al grupo de libvirt.

                                                                                                                hades:~# adduser administrador libvirt
                                                                                                                Añadiendo al usuario `administrador' al grupo `libvirt' ... Añadiendo al usuario administrador al grupo libvirt Hecho. }}} Como podemos ver agregamos al usuario administrador al grupo libvirt.

                                                                                                                Partición VM#

                                                                                                                Se recomienda tener las máquinas virtuales dentro de una partición del disco duro independiente o si se puede mejor en otro disco duro y partición se llamada /vm. La partición debe tener un tamaño superior y dependiendo de cuantas máquinas virtuales se van a alojar con su capacidad de cada disco virtual. Debe pertenecer al grupo libvirt con los siguientes permisos.

                                                                                                                hades:~# chown root.libvirt /vm
                                                                                                                hades:# chmod 775 /vm }}}

                                                                                                                RED en KVM#

                                                                                                                Existen tres tipos de redes en la configuración KVM:

                                                                                                                • bridge
                                                                                                                • Nat

                                                                                                                Pero se recomienda la configuración tipo bridge ya que es la fácil de configurar y la que mas se ocupa en los servidores.

                                                                                                                Bridge#

                                                                                                                Este tipo de configuración nos permite crear un puente entre las tarjeta de red física y las virtuales, permitiéndonos conectarnos a la red local de la empresa como si fueran otras máquinas que estuvieran en la red local. Para pode tener este tipo de configuración es necesario instalar el siguiente paquete.

                                                                                                                hades:~# apt-get install bridge-utils

                                                                                                                Configuración modo Bridge#

                                                                                                                Como sabemos estamos ocupando la distribución debian lenny, por cual tendremos que configurar nuestro puente en el archivo /etc/network/interfaces. Abrimos el archivo con nuestro editor vim.

                                                                                                                hades:~# vim /etc/network/interfaces
                                                                                                                Dentro de este archivo de configuración encontraremos la interfaz loopbak o local “lo” y la interfaz de red “eth0”, por el cual obtendrá una IP Dinámica de nuestra red.
                                                                                                                # The loopback network interface
                                                                                                                auto lo iface lo inet loopback

                                                                                                                1. The primary network interface

                                                                                                                allow-hotplug eth0 iface eth0 inet dhcp }}} Con esta configuración no podremos hacer el puente, lo que tenemos que hacer es cambiar la configuración de la tarjeta de red “eth0”.

                                                                                                                allow-hotplug eth0 
                                                                                                                iface eth0 inet dhcp por auto eth0 iface eth0 inet manual }}}

                                                                                                                Con esto hemos cambiado la interfaz eth0 a un modo de configuración especial en nuestro caso la vamos a hacer tipo puente.

                                                                                                                Agregaremos dentro de mismo archivo la configuración la interfaz br0 la cual se encargara de crear y dejar funcionando nuestro puente entre las máquinas virtuales para que sean visibles dentro de nuestra red local.

                                                                                                                auto br0 
                                                                                                                iface br0 inet static address 192.168.1.244 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1 bridge_ports eth0 bridge_stp off bridge_maxwait 5 }}} A esta interfaz tendremos que asignar una IP estática, mascara de red, segmento de red, broadcast, puerta de enlace, tarjeta física que esta permitiendo el puente. Con esto guardamos el archivo y reiniciamos el servicio de red de debian lenny.
                                                                                                                hades:~# /etc/init.d/networking restart 
                                                                                                                Para comprobar que nuestra configuración quedo realizada ejecutamos el comando ifconfig, para que nos muestre las interfaces de red que tiene nuestro sistema.
                                                                                                                hades:~# ifconfig 
                                                                                                                br0 Link encap:Ethernet HWaddr 00:b0:c4:00:35:c1 inet addr:192.168.1.244 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::2b0:c4ff:fe00:35c1/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1319 errors:0 dropped:0 overruns:0 frame:0 TX packets:774 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1414607 (1.3 MiB) TX bytes:73115 (71.4 KiB) eth0 Link encap:Ethernet HWaddr 00:b0:c4:00:35:c1 inet6 addr: fe80::2b0:c4ff:fe00:35c1/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:6541519 errors:0 dropped:0 overruns:0 frame:0 TX packets:3021817 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1286103822 (1.1 GiB) TX bytes:205104301 (195.6 MiB) Interrupt:20 Base address:0xa000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:10 errors:0 dropped:0 overruns:0 frame:0 TX packets:10 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1008 (1008.0 B) TX bytes:1008 (1008.0 B) }}} Como podemos ver nos mostró 3 tres interfaces:

                                                                                                                • interfaz lo: como interfaz loopback o local.
                                                                                                                • interfaz eth0: configuración en modo puente.
                                                                                                                • Interfaz br0: conexión a la red para la máquinas virtuales.

                                                                                                                Con todos estos pasos hemos creado un puente para que las máquinas virtuales pertenezcan a la red local de nuestra empresa

                                                                                                                NAT#

                                                                                                                Este tipo de configuración nos permitirá tener nuestra máquinas virtuales dentro de una red virtual, que nos ayudaría tener mayor seguridad para las MV. Para poder tener este tipo de configuración es necesario instalar el siguiente paquete.

                                                                                                                lucifer:~# apt-get install uml-utilities 
                                                                                                                En este tipo de caso la máquina física toma la petición de algún servicio, la analiza y si se cuenta con el acceso a este mismo de una MV sera permitido conectarse de lo contrario la petición sera denegada, todas estas solicitudes serán analizadas por medio de un firewall.

                                                                                                                Configuraron modo NAT#

                                                                                                                Para poder configurar este tipo de red, primero tendremos que checar que tipo de redes tenemos habilitadas dentro de nuestro KVM, para eso ejecutaremos el siguiente comando.

                                                                                                                lucifer:~# virsh net-list --all
                                                                                                                Name State Autostart ----------------------------------------- }}} En nuestro caso no tenemos configurada ninguna red dentro de KVM, por lo cual procederemos a crear nuestra red virtual. Por default KVM ya tiene configurado una red virtual controlada por un servidor DHCP integrado en KVM. Definimos nuestra red virtual que utilizara kvm.
                                                                                                                Lucifer:~# virsh net-define /etc/libvirt/qemu/networks/default.xml
                                                                                                                Network default defined from /etc/libvirt/qemu/networks/default.xml }}} Indicamos que cada vez que se inicie el sistema KVM levantara la red virtual.
                                                                                                                Lucifer:~# virsh net-autostart default
                                                                                                                Network default marked as autostarted }}} Iniciamos la red virtual.
                                                                                                                lucifer:~# virsh net-start default
                                                                                                                Network default started }}} Como va ser una configuración tipo NAT, es conveniente habilitar el reenvío de paquetes a la red virtual. Para esto editamos el archivo de configuración sysctl.conf.
                                                                                                                lucifer:~# vim /etc/sysctl.conf
                                                                                                                Buscamos el parámetro net.ipv4.ip_forward y lo modificamos.
                                                                                                                net.ipv4.ip_forward = 0
                                                                                                                por
                                                                                                                net.ipv4.ip_forward = 1 

                                                                                                                Con esto ya tendremos configurada nuestra red virtual.

                                                                                                                Configuración de Dnsmasq#

                                                                                                                Dnsmasq es un servidor que tiene agregado los servicios de DNS/DHCP, por lo cual puede resolver los nombres tus equipo, como también puede ser un servidor DNS Cache el cual almacenara las IP consultadas, con esto hacemos que sea mas rápido el acceso a internet. Lo que vamos hacer es permitir la resoluciones de dominios de las MV dentro de la red virtual. Para esto editaremos el archivo de configuración dnsmasq.conf.

                                                                                                                lucifer:~# vim /etc/dnsmasq.conf
                                                                                                                Modificaremos el parámetro listen-address, para indicarle en donde se encuentra escuchando el servicio.
                                                                                                                listen-address=eth0
                                                                                                                por
                                                                                                                listen-address=127.0.0.1
                                                                                                                Habilitaremos el parámetro bind-interfaces, obliga a escuchar en la tarjeta o la IP especificada.
                                                                                                                #bind-interfaces
                                                                                                                por
                                                                                                                bind-interfaces
                                                                                                                Reiniciamos el servicio.
                                                                                                                lucifer:~# /etc/init.d/dnsmasq restart

                                                                                                                Configuración de interfaces de red#

                                                                                                                También tendremos que configurar nuestra tarjeta de red vlan0, la cual se encargara del controlar la red virtual para eso tenemos que agregarla dentro del fichero interfaces.

                                                                                                                lucifer:~# vim /etc/network/interfaces
                                                                                                                Se recomienda que la tarjeta de red física siempre tenga una IP estática.
                                                                                                                allow-hotplug eth0 
                                                                                                                iface eth0 inet dhcp por auto eth0 iface eth0 inet static address 192.168.1.248 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.1 }}}

                                                                                                                Agregaremos la configuración de la interfaz vlan0, encargada de la red virtual.

                                                                                                                auto virbr0 
                                                                                                                iface virbr0 inet static address 192.168.122.1 netmask 255.255.255.0 network 192.168.122.0 broadcast 192.168.122.255 }}} Reiniciamos el servicio de red.
                                                                                                                lucifer:~# /etc/init.d/networking restart 
                                                                                                                Para comprobar que nuestra configuración quedo realizada ejecutamos el comando ifconfig, para que nos muestre las interfaces de red que tiene nuestro sistema.
                                                                                                                lucifer:~# ifconfig 
                                                                                                                eth0 Link encap:Ethernet HWaddr 00:08:54:b2:d9:74 inet addr:192.168.1.248 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::208:54ff:feb2:d974/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:17905 errors:0 dropped:0 overruns:0 frame:0 TX packets:3638 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2470005 (2.3 MiB) TX bytes:978871 (955.9 KiB) Interrupt:20 Base address:0xa000

                                                                                                                lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:4 errors:0 dropped:0 overruns:0 frame:0 TX packets:4 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:280 (280.0 B) TX bytes:280 (280.0 B)

                                                                                                                virbr0 Link encap:Ethernet HWaddr 00:ff:20:05:7a:85 inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0 inet6 addr: fe80::502d:d9ff:fe75:474/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:107 errors:0 dropped:0 overruns:0 frame:0 TX packets:120 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:9675 (9.4 KiB) TX bytes:9928 (9.6 KiB)

                                                                                                                vnet0 Link encap:Ethernet HWaddr 00:ff:20:05:7a:85 inet6 addr: fe80::2ff:20ff:fe05:7a85/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:54 errors:0 dropped:0 overruns:0 frame:0 TX packets:4294 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:6108 (5.9 KiB) TX bytes:225566 (220.2 KiB) }}}

                                                                                                                Con este tipo de configuración deben aparecer 4 interfaces de red:

                                                                                                                • interfaz lo: como interfaz loopback o local.
                                                                                                                • interfaz eth0: configuración en modo puente.
                                                                                                                • Interfaz virbr0: conexión a la red virtual.
                                                                                                                • Interfaz vnet#: esta interfaz sera levantada cada ves que una MV se conecta a la red virtual.

                                                                                                                Configuración del firewall#

                                                                                                                Debemos crear las reglas de iptables para poder permitir el acceso a los servicios que tienen alojados las MV, pero desde la IP física con el manejo de puertos. Ejemplos Todas la peticiones hacia el puerto 80 de la red local, redirigirlas hacia la red virtual con la MV con IP 192.168.122.10 al puerto 80.

                                                                                                                iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j DNAT --to 192.168.122.10:80 
                                                                                                                Todas la peticiones hacia el puerto 59345 de la red local, redirigirlas hacia la red virtual con la MV con IP 192.168.122.20 al puerto 22.
                                                                                                                iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 59345 -j DNAT --to 192.168.122.20:22 

                                                                                                                Esta la configuración de KVM en modo NAT, en este diagrama se tienen varios servicios como 2 Servidores Apache, 1 FTP y conexión remota vía ssh a los 3 servidores virtuales.

                                                                                                                Toda la peticiones serán analizadas en el servidor por el firewall, si una petición es verdadera entonces la redireccionara dentro de la red virtual hacia la MV que esta ofreciendo el servicio, de lo contrario denegara la petición.

                                                                                                                Administración vía consola#

                                                                                                                La administración de Máquinas Virtuales, es muy importante dentro KVM, ya por medio de esta nosotros podremos:

                                                                                                                Instalar MV.Eliminar MV.Estado MV.
                                                                                                                Características.Modificar recursos.Configuración de red.

                                                                                                                Para esto ocuparemos la herramienta virsh, esta herramienta funciona bajo la librería libvirt y funciona de modo de solo lectura para el usuario con permisos al grupo libvirt y el usuario administrador es el único que puede modificar los datos. Nos conectaremos de la siguiente manera:

                                                                                                                administrador@hades:~$ virsh -c qemu:///system 
                                                                                                                Welcome to virsh, the virtualization interactive terminal. Type: 'help' for help with commands 'quit' to quit virsh # }}} Tendremos la habilidad de tener un interprete de comandos internos de la herramienta virsh, con los cuales administraremos las MV.

                                                                                                                Instalación VM vía comandos#

                                                                                                                Para poder hacer la instalación desde consola de una MV, tendremos que ejecutar el comando virt-install.

                                                                                                                virt-install [conexión][opciones]  
                                                                                                                En tipo de conexión siempre va hacer --connect qemu:/system y en opciones podremos poner los siguientes parámetros:

                                                                                                                ParámetroDescripción
                                                                                                                -nNombre la máquina virtual.
                                                                                                                -rMemoria RAM virtual.
                                                                                                                -fRuta del Disco Duro Virtual.
                                                                                                                -sTamaño del disco duro
                                                                                                                -cUnidad DVD/CDRom o imagen ISO.
                                                                                                                -lIndicamos si la instalación va hacer vía red por medio de http, ftp o nfs.
                                                                                                                --network=br0 Modo de conexión a la red física en puente.
                                                                                                                -w network=defaultModo de conexión a la red virtual en NAT.
                                                                                                                -vcpusNumero de CPU virtuales.
                                                                                                                --vncConexión tipo VNC.

                                                                                                                Ejemplos:

                                                                                                                • Modo BRIDGE

                                                                                                                virt-install --connect qemu:///system -n Centos-db -r 512 -f /vm/centos-db.img
                                                                                                                -s 20 -c CentOS-5.3-i386-bin-DVD.iso --network=br0 }}}

                                                                                                                • Modo NAT

                                                                                                                virt-install --connect qemu:///system -n mantis -r 512 -f /vm/mantis.img -s 20
                                                                                                                -l http://192.168.1.109/isos/centos -w network=default}}} Con esto nos desplegara la pantalla de instalación de S.O a instalar, la instalación depende de cada S.O

                                                                                                                Visualizar una MV#

                                                                                                                Cuando hayamos terminado de instalar o ya tengamos instalada una máquina virtual y queremos visualizar que esta pasando en un modo gráfico para esto nos sirve la herramienta virt-viewer, ver figura 2.1.

                                                                                                                administrador@lucifer:~$ virt-viewer -c qemu:///system belzebu

                                                                                                                Conectarse al hypervisor#

                                                                                                                Para poder conectarse al hypervisor para poder ejecutar comandos de administración en consola.

                                                                                                                administrador@lucifer:~$ virsh -c qemu:///system 

                                                                                                                Listar Máquinas Virtuales#

                                                                                                                Para poder listar las máquinas virtuales que están encendidas.

                                                                                                                virsh # list 
                                                                                                                Id Name State ---------------------------------- 1 ascariote running Podemos ver todas las máquinas de la siguiente manera: virsh # list --all Id Name State ---------------------------------- 1 ascariote running - belzebu shut off }}}

                                                                                                                Iniciado automáticamente de MV#

                                                                                                                Cuando nuestro sistema tienen un apagado físico y queremos que nuestras máquinas virtuales se enciendan automáticamente, tenemos que hacer lo siguiente:

                                                                                                                virsh # autostart belzebu 
                                                                                                                Domain belzebu marked as autostarted }}} Si ya teníamos a nuestra máquina virtual en encendido automático y lo queremos desactivar.
                                                                                                                virsh # autostart --disable ascariote 
                                                                                                                Domain ascariote unmarked as autostarted }}}

                                                                                                                Iniciando Máquina Virtual#

                                                                                                                Cuando nuestra máquina virtual le indicamos que no inicie en automático, entonces haremos un encendido manual de la máquina virtual.

                                                                                                                virsh # start ascariote 
                                                                                                                Domain ascariote started }}}

                                                                                                                Suspender Máquina Virtual#

                                                                                                                También podemos suspender una máquina virtual, es como si pusiéramos en pausa la máquina virtual.

                                                                                                                virsh # suspend belzebu 
                                                                                                                Domain belzebu suspended }}}

                                                                                                                Reanudar Máquina Virtual#

                                                                                                                Para poder reanudar una máquina virtual suspendida solamente tendremos que hacer lo siguiente:

                                                                                                                virsh # resume belzebu 
                                                                                                                Domain belzebu resumed }}}

                                                                                                                Apagar Máquina Virtual#

                                                                                                                Apagar una máquina solamente tenemos que hacer lo siguiente:

                                                                                                                virsh # shutdown belzebu 
                                                                                                                Domain belzebu is being shutdown}}}

                                                                                                                Reiniciar Máquina Virtual.#

                                                                                                                Reiniciar máquinas virtuales es de la siguiente manera:

                                                                                                                virsh # reboot minos 
                                                                                                                Domain minos is being reboot}}}

                                                                                                                Matar Máquina Virtual#

                                                                                                                En caso de que nuestra máquina virtual no pueda apagarse, apagar o el sistema operativo este congelado.

                                                                                                                virsh # destroy thanatos 
                                                                                                                Domain thanatos destroyed }}}

                                                                                                                Información Máquina Virtual#

                                                                                                                Con esto obtendremos la información de la máquina virtual, como nombre, estado,CPU, Memoria ,etc.

                                                                                                                virsh # dominfo minos 

                                                                                                                Estado de las máquinas virtuales#

                                                                                                                Por este comando sabremos el estado de la maquina, encendido, apagado, pausado, etc.

                                                                                                                virsh # domstate belzebu

                                                                                                                Información Máquina física#

                                                                                                                Muestra información relacionada de la máquina física, como del CPU, memoria.

                                                                                                                virsh # nodeinfo 

                                                                                                                Capacidad de la Máquina física#

                                                                                                                Muestra la capacidad de las plataforma en KVM.

                                                                                                                virsh # capabilities

                                                                                                                Información de CPU virtuales#

                                                                                                                Ver cuantos CPU virtuales tiene la máquina virtual.

                                                                                                                virsh # vcpuinfo hypnos

                                                                                                                Editar información de la Máquina virtual#

                                                                                                                Podemos editar la información de la máquina virtual de la siguiente manera.

                                                                                                                virsh # edit hypnos

                                                                                                                Memoria de intercambio de CPUS#

                                                                                                                Esta opción solamente nos funciona cuando tenemos de dos a mas procesadores ya que verifica la memoria que se esta ocupando entre la comunicación en los CPU.

                                                                                                                virsh # freecell

                                                                                                                Nombre la máquina física#

                                                                                                                Saber el nombre o como se llama la máquina física que aloja el servicio de KVM.

                                                                                                                virsh # hostname

                                                                                                                Consola de Máquina virtual#

                                                                                                                Dispositivo físico de salida para la consola tty en máquinas virtuales.

                                                                                                                virsh # ttyconsole belzebu 

                                                                                                                Redes virtuales configuradas.#

                                                                                                                Veremos las redes virtuales configuradas en KVM

                                                                                                                virsh # net-list 

                                                                                                                Información de redes virtuales#

                                                                                                                Información sobre la configuración y propiedades de una red virtual.

                                                                                                                virsh # net-dumpxml default

                                                                                                                Crea y inicia red virtual#

                                                                                                                Para poder crear una red virtual, se debe generar un archivo en formato xml y se recomienda que este almacenado en /etc/libvirt/qemu/networks y debe contener la siguiente información.

                                                                                                                <network> 
                                                                                                                <name>factor</name> <uuid>6cbbd170-c641-8d6c-ae79-6791b3288426</uuid> <forward mode='nat'/> <bridge name='virbr1' stp='on' forwardDelay='0' /> <ip address='192.168.200.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.200.100' end='192.168.200.200' /> </dhcp> </ip> </network> }}}

                                                                                                                Ya creado el archivo solamente tenemos que ejecutar el siguiente desde la consola de virsh e indicando la ruta del archivo de configuración de la nueva red virtual.

                                                                                                                virsh # net-create /etc/libvirt/qemu/networks/factor.xml

                                                                                                                Crear red virtual#

                                                                                                                Crea una red virtual pero no la inicia, solamente se define dentro de KVM.

                                                                                                                virsh # net-define /etc/libvirt/qemu/networks/linuxparatodos.xml

                                                                                                                Iniciar red virtual.#

                                                                                                                Iniciando una red virtual.

                                                                                                                virsh # net-start linuxparatodos

                                                                                                                Iniciar automáticamente red virtual#

                                                                                                                Iniciar automáticamente una red virtual cuando la máquina física tenga un encendido.

                                                                                                                virsh # net-autostart factor

                                                                                                                Editar una red virtual#

                                                                                                                Desde la consola de virsh, podemos editar el archivo de configuración de una red virtual.

                                                                                                                virsh # net-edit factor

                                                                                                                Destruir una red virtual#

                                                                                                                Esta opción nos permite detener y destruir una red virtual.

                                                                                                                virsh # net-destroy factor

                                                                                                                Listar volúmenes de almacenamiento#

                                                                                                                Veremos en donde se encuentran almacenados los disco duros virtuales.

                                                                                                                virsh # pool-list 

                                                                                                                Capacidad del volumen fisico#

                                                                                                                En nuestro caso el volumen vm es un partición por lo cual nos mostrara la información del tamaño de la partición, lo ocupado y disponible que tenemos en la misma.

                                                                                                                virsh # pool-info vm  

                                                                                                                Editar del volumen fisico#

                                                                                                                Tenemos la propiedad de editar el volumen.

                                                                                                                virsh # pool-edit vm

                                                                                                                Lista del volúmenes virtuales#

                                                                                                                Listara todos los discos duros virtuales.

                                                                                                                virsh # vol-list vm 

                                                                                                                Capacidad de volumen virtual#

                                                                                                                Muestra la capacidad del disco duro virtual, como espacio ocupado y libre.

                                                                                                                virsh # vol-info /vm/mantis.img 

                                                                                                                Ayuda en linea#

                                                                                                                Cuando tenemos dudas sobre algún comando que están dentro de la herramienta virsh, solamente ejecutamos el comando help seguido del comando que tenemos duda.

                                                                                                                virsh # help vol-list 

                                                                                                                Salir del administrador#

                                                                                                                Para poder salir del administrador de máquinas virtual, solamente tecleamos.

                                                                                                                virsh # quit

                                                                                                                Administración Gráfica#

                                                                                                                La instalación de la Máquinas virtuales dentro de KVM, existen dos métodos por el cual lo podemos realizar.

                                                                                                                • virt-manager: Que es una herramienta en modo gráfico que nos permite instalar la máquinas virtuales.
                                                                                                                • virt-install: Este método es por medio de comando desde una terminal o interprete de comandos.

                                                                                                                Estas 2 herramientas vienen dentro del paquete virt-manager, por lo cual procederemos a su instalación.

                                                                                                                hades:~# apt-get install virt-manager 
                                                                                                                Terminada la instalación reiniciamos el servicio libvirt.
                                                                                                                /etc/init.d/libvirt-bin restart
                                                                                                                Con esto ya podremos instalar las máquinas virtuales.

                                                                                                                Virt-Manager#

                                                                                                                Esta herramienta nos permitirá realizar las siguientes características:

                                                                                                                • Instalación de Máquinas Virtual.
                                                                                                                • Administración de la máquinas.
                                                                                                                • Recursos de las máquinas virtuales “memoria,cantidad de procesadores virtuales, entre otros dispositivos de los mismos”.
                                                                                                                • Uso de CPU, Memoria de la máquina física.
                                                                                                                • Termine iniciar, pausar, reiniciar, apagar y forzar el apagado sencillamente.
                                                                                                                • Permite ver el estado actual de las máquinas virtuales. Numero de proceso, Estado “Ejecutándose o Callar”, uso de CPU, procesadores virtuales y cantidad de memoria ocupada.
                                                                                                                • Borrado de las máquinas virtuales.
                                                                                                                • Configuración del almacenaje de los discos duros de las máquinas virtuales.
                                                                                                                • Configuración de red interna por medio de DHCP.
                                                                                                                • Tiempo de refresco de la información.

                                                                                                                Instalando VM con Virt-Manager#

                                                                                                                Para poder ocupar la herramienta tendremos que ir al Menú Aplicaciones ---> Administración ---> Administración de máquinas virtuales Con esto nos abrirá la aplicación y nos mostrara en pantalla la palabra localhost, ver figura 4.1, el localhost es la máquina física, en la cual es la que esta alojando a la máquinas virtuales.

                                                                                                                Para poder conectarnos a KVM tendremos que dar click derecho sobre localhost y nos permitirá conectarnos al dominio 0. Con esto podremos crear las máquinas virtuales, tendremos que dar click sobre el botón de Nuevo para iniciar el asistente de instalación.

                                                                                                                Dentro del asistente nos preguntara los siguientes requisitos que necesita para la instalación de la máquina virtual:

                                                                                                                • Nombre de la MV.
                                                                                                                • Virtualización completa o Paravirtualización.
                                                                                                                • Método de instalación.
                                                                                                                • Ruta del Disco Duro virtual.
                                                                                                                • Memoria y CPU.
                                                                                                                • Configuración de la red virtual.

                                                                                                                Primero nos pregunta el nombre de la máquina virtual. Esto nos sirve para tener un control de las máquinas virtuales ya que la administración de ellas, es por el nombre o ID. Con esto KVM puede iniciar, apagar, reiniciar, pausar en la máquinas virtuales. También por el nombre es controlado la administración de recursos como memoria, cpu, etc. Y su estado actual de la máquina virtual.

                                                                                                                En el método de virtualización solamente tenemos dos opciones:

                                                                                                                • Paravirtualización.
                                                                                                                • Completamente virtual izado.

                                                                                                                Podemos seleccionar la arquitectura del procesador de los cuales tenemos disponibles:

                                                                                                                686mipssparc
                                                                                                                X86_64mipselppc

                                                                                                                Método de hipervisor lo tenemos a qemu.

                                                                                                                Tenemos a disposición varios métodos de instalación como:

                                                                                                                • Imagen ISO o DVD/CDRom.
                                                                                                                • Vía red por medio de HTTP, FTP o NFS.
                                                                                                                • Booteo por medio de red PXE.

                                                                                                                Nos permite seleccionar que sistema operativo se va a instalar:

                                                                                                                LinuxWindowsGenéricoUnixOtros

                                                                                                                También nos pregunta que versión del sistema operativo deseamos instalar o su distribución que esta por instalar.

                                                                                                                Ubicando el medio óptico para la instalación, en nuestro caso tenemos la imagen iso de la distribución de debian y en su caso contáramos con algún dispositivo DVD/CDRom podremos utilizarlo sin ningún problema. Este pantalla puede ser diferente dependiendo del método de instalación.

                                                                                                                Asignación de espacio para la máquina virtual, tenemos dos opciones:

                                                                                                                • Una partición del disco duro físico.
                                                                                                                • Un archivo simple.

                                                                                                                Indicamos la ruta en donde se encuentra el disco duro virtual para la instalación. Siempre se ha utilizado la opción de archivo simple para generar un disco duro es de la siguiente manera:

                                                                                                                dd if=/dev/zero of=/vm/raimi.img oflag=direct bs=1M seek=20099 count=1}}
                                                                                                                Con esto estamos creando un disco duro de 20 GB.

                                                                                                                Configuración de la red de las máquinas virtuales, tenemos la opciones de:

                                                                                                                • Red virtual: Este método nos sirve si tenemos una vlan en modo route o nat.
                                                                                                                • Dispositivo físico compartido: Este método nos permite conectarnos a nuestra red local de nuestra oficina o casa.
                                                                                                                • Configuración por medio de MAC: Con esto ya tendremos configurado el método de red de las máquinas virtuales.

                                                                                                                Configuramos la memoria virtual que tendrán la máquina virtual por default tenemos 512 MB y nos marca que tenemos un limite de 1.48 GB en memoria virtual para la máquina virtual. Podemos asignarle cuantos CPU virtuales puede tener nuestra máquina virtual, por default siempre es uno y tenemos en nuestro caso un máximo de 16 procesadores virtuales.

                                                                                                                Este seria el ultimo paso y este nos genera un resumen total de toda la información solicitada por virt-manager para poder iniciar la instalación de la máquina virtual. Muestra las siguientes características:

                                                                                                                Nombre de la MV.Cantidad de CPU.
                                                                                                                Método de virtualización.Sistema operativo y versión.
                                                                                                                Memoria inicial y máxima.Ruta del disco duro virtual y tamaño.
                                                                                                                Tipo de conexión redSin sonido.

                                                                                                                Con todos estos pasos ya instalación comenzara sin ningún inconveniente.

                                                                                                                Estado de las MV#

                                                                                                                Al abrir la aplicación de virt-manager, nos mostrara las MV que tenemos ya instaladas y configuradas. Pero con esta herramienta nos informa del estado actual de nuestra MV y sus características:

                                                                                                                Nombre de la MVNumero Identificador MVEjecutando o apagado
                                                                                                                Uso de CPUCuantos VCPUSUso de memoria

                                                                                                                Nos muestra información en tiempo real de lo que esta pasando en las MV. Pero también nos muestra la información de la máquina física, comúnmente llamada localhost.

                                                                                                                Administración de MV#

                                                                                                                La administración de las MV por medio de la herramienta de virt-manager, no simplifica la manera de:

                                                                                                                IniciarApagarMatarPausarReiniciar

                                                                                                                Nuestras MV instaladas dentro del servidor, por cual solamente tendremos que seleccionar la MV y dar click con el botón derecho y nos aparecerán todas las opciones anteriormente comentas. Con esto nosotros podemos iniciar, apagar, reiniciar, etc una MV con un simple click de ratón.

                                                                                                                Propiedades de las MV#

                                                                                                                Para poder las propiedades de las MV virtuales tendremos que seleccionar la MV y dar en botón de abrir, mostrara una nueva pantalla con la información mas relevante del sistema.

                                                                                                                Obtendremos las siguientes características:

                                                                                                                • Conexión a la consola o al ambiente gráfico del S.O.
                                                                                                                • Repaso, encontraremos la información actual de la cantidad usada en CPU y Memoria.
                                                                                                                • Hardware, tendremos toda la información del hardware de la MV.
                                                                                                                • Tenemos las opciones de apagar, reiniciar, pausar, matar, etc.
                                                                                                                • Podremos tomar fotos de la MV.
                                                                                                                • Vista completa o escalada
                                                                                                                • Entre mas opciones.

                                                                                                                Configuraciones Máquina Física#

                                                                                                                Como obtener información y configuraciones de la máquina física, ya que es muy importante saber como se encuentra.. Para obtener esta información tendremos que ir al menú de editar ---> Editar ---> Connection Details, nos desplegara una pantalla con 3 pestañas:

                                                                                                                • Repaso.
                                                                                                                • Redes Virtuales.
                                                                                                                • Grupos de Almacenaje.

                                                                                                                Repaso#

                                                                                                                Esto mostrara el estado actual de nuestra información de la máquina física.

                                                                                                                Nombre la máquina físicaCantidad de memoria física y ocupadaTipo de procesador físico y su estado

                                                                                                                Redes Virtuales#

                                                                                                                En este apartado nosotros podremos configurar nuestra red interna que tendrán nuestra MV, ya que el mismo KVM tiene por default integrado un servidor DHCP. Esta configuración nos permitirá tener una red del tipo NAT dentro del mismo KVM para las MV.

                                                                                                                Grupos de Almacenaje#

                                                                                                                Esta ultima pestaña nos muestra la información en donde se encuentran los discos duros virtuales y la capacidad física de la misma como su porcentaje de utilizado. Para los discos duros virtuales nos mostrara:

                                                                                                                • Nombre del disco duro virtual.
                                                                                                                • Tamaño del disco duro virtual
                                                                                                                • Ruta en donde se encuentran alojados los discos duros virtuales.
                                                                                                                0 archivos adjuntos
                                                                                                                23342 Accesos
                                                                                                                Promedio (0 Votos)
                                                                                                                La valoración media es de 0.0 estrellas de 5.
                                                                                                                Comentarios