Este documento describe diferentes técnicas de virtualización como paravirtualización, virtualización mediante SO, virtualización completa y virtualización por hardware. También habla sobre consolidación de servidores mediante estas técnicas para mejorar la eficiencia. Luego, se enfoca en OpenVZ como un ejemplo de virtualización por SO, describiendo su instalación, creación de máquinas virtuales, límites y migración en vivo.
2. Introducción
¿Quiénes somos?
Área dentro de IAVANTE centrada en la aplicación de las
Tecnologías de la Información y las Comunicaciones (TICS) al
entorno de la salud
Objetivos:
Promoción y desarrollo de productos
y proyectos innovadores de alto
contenido tecnológico, de interés
para el Sistema Sanitario Público de
Andalucía
3. Introducción
¿Qué hacemos?
IAVANTE gestiona varios proyectos de la Consejería de Salud
de la Junta de Andalucía como:
• Informarse es salud.
• Banco de prácticas innovadoras.
• Portalmir.
• Paciente Simulado Virtual.
Todos ellos se sirven desde nuestro CPD
de Granada, donde hemos estudiado y
puesto en práctica cada una de las
técnicas que vamos a describir a
continuación ...
4. Índice
• ¿Qué es la virtualización?
• Ventajas e inconvenientes.
• Diferentes técnicas de virtualización.
• Paravirtualización
• Virtualización mediante el S.O.
• Virtualización completa.
• Virtualización por hardware.
• Consolidación.
5. Índice (II)
OpenVZ un ejemplo de virtualización por S.O.:
• Que nos ofrece OpenVZ frente a otras técnicas similares.
• Parcheo y compilación del kernel.
• Creación, arranque y parada de las
máquinas virtuales.
• Límites y garantías.
• Migración de máquinas virtuales.
• Interfaces de administración remota.
6. ¿Qué es la virtualización?
Se trata de correr un entorno software dentro de
una abstracción de los recursos hardware
existentes.
No es un término nuevo, IBM ya lo usó en los
años 60 en sus máquinas M44/44X.
Últimamente está teniendo una alta popularidad
debido a la llegada de la virtualización al escritorio
(Qemu, VMWare, VirtualBox, etc).
7. Ventajas
• Mejora la continuidad de negocio.
• Mejora la agilidad del negocio.
• Reduce los tiempos de caída.
• Consolidación de servidores.
• ¿Seguridad?*
8. Inconvenientes
• Más complejo la puesta en marcha de sistemas.
• El departamento de IT necesita nuevas
habilidades y formación.
• Incrementa la complejidad de los sistemas.
• Más complejo aislar errores o cuellos de botella.
• ¿Seguridad?*
9. Técnicas de virtualización – Paravirtualización
Consiste en la virtualización del sistema huésped sin emulación en
hardware.
El host anfitrión debe ofrecer una API de acceso a los recursos del
sistema, hay que modificar el S.O. huésped
Ejemplos: Xen, VMWare ESX Server.
10. Comparativa de técnicas - Paravirtualización
La Paravirtualización ofrece gran rendimiento y un fuerte
aislamiento y disponibilidad de los recursos del sistema. Los
sistemas virtualizados corren directamente sobre el hardware, es
decir, el anfitrión no tiene la necesidad de emular “hardware”.
Se utilizan los distintos niveles de anillos
disponibles en los nuevos procesadores para
implementar la seguridad y acceso a los recursos
del sistema. El hypervisor siempre se ejecuta en
el nivel 0, el sistema operativo en el 1.
11. Técnicas de virtualización – Virtualización mediante S.O.
Todos los sistemas hospedados comparten el kernel con el sistema
anfitrión. Los huéspedes tienen la impresión de correr en un
sistema “real”.
Ejemplos: Virtuozzo, OpenVZ, SUN LDom, Vserver.
12. Comparativa de técnicas – Virtualización por SO's
La virtualización mediante sistema operativo está orientada a un
menor uso de recursos y un mejor aprovechamiento de éstos.
Permite la migración de los huéspedes de forma ágil. (Load
Balancing / Live Migration).
• No requiere hardware especializado
• Carece de flexibilidad: Los huéspedes tienen
que ser sistemas iguales que el host anfitrión.
Ej. Si disponemos de un anfitrión Linux, no
podremos hospedar máquinas virtuales Hurd.
13. Comparativa de técnicas – Virtualización por SO's (II)
• Manejo de los sistemas de ficheros hospedados a nivel de
fichero y no de bloques: se mejora la eficiencia del uso del
espacio, simplifica su administración y backups.
• Restricciones impositivas por seguridad: no
pueden crear nuevos dispositivos, des/montar
sistemas de archivos, modificar el kernel,
modificar parámetros de ejecución del kernel,
etc.
14. Técnicas de virtualización – Virtualización completa
El sistema anfitrión emula todo el hardware. Los huéspedes
pueden correr sin necesidad de realizar cambios (kernel, stage's,
patcheos). Suele ser la técnica más costosa en recursos.
Ejemplos: Qemu, Virtualbox, VMWare, Parallels
15. Comparativa de técnicas – Virtualización completa
• La virtualización completa reduce la sobrecarga de
mantenimiento en comparación con otras técnicas.
• Reduce el número de cambios sobre los huéspedes.
• Permite la ejecución de sistemas operativos tan
heterogéneos como Windows y/o Linux.
• En general, la creación de máquinas virtuales es
mucho más rápida que en otras técnicas.
16. Comparativa de técnicas – Virtualización completa (II)
• Puede emular diferentes arquitecturas: PowerPC, ARM, etc;
distintas al host anfitrión. Podemos ejecutar varias máquinas, cada
una con un procesador de distinto tipo.
• Es la que tiene mayor uso de recursos
y peor aprovechamiento de los mismos tiene.
17. Técnicas de virtualización – Virtualización por hardware
El sistema anfitrión emula todo el hardware, igual que en el
caso de la virtualización completa, pero esta se consigue con
asistencia por medio del propio hardware.
Ejemplos: IBM System/370, AMD Pacifica, Intel Vanderpool,
UltraSPARC T2+ Hiper-privileged.
18. Comparativa de técnicas – Virtualización por Hardware
• Requiere de hardware especializado.
• La virtualización por hardware es muy lenta,
ya que cada instrucción debe ser simulada en la
capa de hardware.
• Gran utilización de CPU e I/O
(afecta a la escalabilidad y consolidación).
19. Consolidación
• Aprovechamiento eficiente de todos los recursos de
servidor/es para obtener una reducción del consumo de
energía, del número de los mismos, del espacio utilizado en
una organización.
• Es la respuesta al problema
“server sprawl”: Es una situación
que se genera cuando se requieren
gran cantidad de servidores debido a
una gran carga de trabajo, y dedicando
cada servidor a una sola tarea o aplicación.
20. Consolidación (II)
• Según Tony Lams, Analista Senior en NY, los servidores de
compañías son usados al 15-20% de su capacidad, lo cual no
es sostenible en el medio económico actual.
• Un servidor consume alrededor de
255 Watios/Hora. Aproximadamente
el 27% de los servidores son Linux.
Somos responsables de producir alrededor
de 5 millones de toneladas de emisiones de
CO2 anualmente.
21. Consolidación (III)
Algunas iniciativas existentes relacionadas con el
ahorro:
•IBM's Big Green Linux
•Intel's Lesswatts.org
•Jon 'maddog' Hall: “Utilizing
fewer systems and sharing the load
is goodness”
22. OpenVZ : Virtualización por S.O's
Escogimos este software de virtualización desarrollado por Swsoft
porque presenta varias ventajas respecto a otros sistemas de
virtualización por S.O. existentes en software libre:
• Reparticionamiento dinámico en tiempo real.
• Live migration y check-pointing.
• Posibilidad de compartir el interfaz de red del anfitrión con los
huéspedes.
• Establecimiento de límites y garantías de los
recursos
23. Instalación de OpenVZ
En Gentoo:
Kernel ya parcheado con:
# emerge openvz-sources
En Fedora Core:
Existen kernels precompilados:
http://openvz.org/download/kernel/
Sólo hay que descargar e instalar con:
# rpm -ihv vzkernel-name*.rpm
24. Instalación de OpenVZ (II)
Desde los fuentes del kernel Linux:
• Obtener el “vanilla source”.
• Obtener el parche.
• Cruzar los dedos y parchear con patch -p1
• Proceder a la configuración del kernel
26. Creación de una máquina virtual en OpenVZ
Podemos escoger entre descargarnos un template ya creado …
http://openvz.org/download/template/
… o crearnos nuestro propio template, todos los pasos necesarios
están muy bien definidos ...
http://wiki.openvz.org/Gentoo_template_creation
… podemos partir desde una stage3 mínima y
personalizarlo a nuestro gusto.
27. Creación de una máquina virtual en OpenVZ (II)
El siguiente paso es crear un nuevo VPS desde este template:
# vzctl create 101 –ostemplate gentoo –config vps.basic
# Creating VE private area (gentoo)
# Performing postcreate actions
… una vez creado podemos ya arrancar la máquina y conseguir
una consola:
# vzctl start 101
# Starting VE...
# VE is mounted
# Setting CPU units: 1000
# Configure meminfo: 65536
# VE start in progress...
# vzctl enter 101
openvz-vps-101 #
28. Creación de una máquina virtual en OpenVZ (III)
El fichero de configuración generado tiene este aspecto:
ONBOOT="yes"
KMEMSIZE="2211840:2359296"
NUMIPTENT="128:128"
DISKSPACE="700000:700000"
DISKINODES="200000:220000"
CPUUNITS="1000"
VE_ROOT="/vz/root/$VEID"
VE_PRIVATE="/vz/private/$VEID"
OSTEMPLATE="gentoo"
ORIGIN_SAMPLE="vps.basic"
#UUID: 1623dcd4-c44a-393b-0c99-e763e3e32d59
29. Límites y garantías
Podemos ajustar los siguientes límites y garantías a recursos
del sistema:
• CPU (unidades de procesamiento, % límite de CPU).
• Memoria (cantidad usada por el VPS).
• Disco (quota).
• Red (tamaño total de los buffers de
salida/entrada en sockets TCP).
30. Cambio en caliente de límites OpenVZ
Como ejemplo reducimos el espacio en disco asignado a un VPS:
openvz-vps-101 # df -m
Filesystem 1M-blocks Used Available Use% Mounted on
simfs 1000 573 112 84% /
openvz-vps-101 # exit
# vzctl set 101 --diskspace 700000 --save
# Saved parameters for VE 101
# vzctl enter 101
openvz-vps-101 # df -m
Filesystem 1M-blocks Used Available Use% Mounted on
simfs 684 573 112 84% /
31. Live Migration
Es el efecto o método por el cual se pueden realizar la
transferencia de máquinas virtuales a otros anfitriones de los
cuales sabemos que se disponen bastante más recursos libres, por
lo que liberamos recursos de una máquina, que por motivo de
sobrecarga de trabajo, no se disponía de un alto nivel de
rendimiento.
Existen diferentes modos de realizar
live migration: manual o automática.
32. Live Migration - Manual
• Normalmente, para la migración seguimos
los siguiente pasos:
• Apagamos la máquina virtual.
• Generamos un paquete (tar.bz2) del
contenido de la misma, o si por el contrario
es un fichero tipo img.
• Copiamos a otro servidor: scp, samba, nfs,
etc.
• Reiniciamos el VPS en la nueva ubicación
33. Live Migration – Manual (II)
Parada y empaquetado:
machine1# vzctl stop 101
machine1# cd /vz/private/101/
machine1# tar jcpvf /tmp/101.tar.bz2 .
Movemos la máquina a la nueva ubicación
mediante scp, ftp, samba, etc.
Desempaquetamos la máquina y rescatamos su
fichero de configuración de /etc/vz/conf/
Ya podemos arrancarla con:
machine2# vzctl start 101
34. Live Migration - Automático
Existen numerosos scripts que realizan live migration en sistemas
de virtualización.
Por ejemplo, openvz incluye las herramientas necesarias para el
live migration.
Por otra parte, existen interfaces que facilitan las tareas de
gestión y mantenimiento de las máquinas virtuales: vtonf
(openVZ), ovirt (KVM), openQRM
(Xen, KVM, Vmware, vserver),
enomaly (Xen, KVM)
35. Live Migration – Automático (II)
Realizamos un intercambio de claves rsa entre las
máquinas que van a participar del “live migration”
automático:
# ssh-keygen -t rsa
Ejecutamos el live migration. ¡Incluso con la
máquina online!:
# vzmigrate -v --online 192.168.10.239 101
Ya tenemos la máquina funcionando en la nueva
ubicación (espacio, ips, etc, son conservadas).
36. Otras interfaces administrativas
Existen otras herramientas que nos permiten manejar todas las
características de uno o incluso varios sistemas de virtualización
simultáneamente (vtonf, ovirt, enomaly), sin duda son un gran
alivio para el administrador de sistemas ;)
37. Agradecimientos
• A Fundación IAVANTE por los medios y
apoyo otorgados.
• A mi compañero Juan Pedro Escalona y
Francisco Moreno por toda su ayuda,
tanto para este taller como para cualquier
otra cuestión profesional.
• A todos los desarrolladores/defensores
del software libre (sin ellos nada de esto
hubiera estado a mi alcance).