Virtualización
es un término amplio que se refiere a crear objetos virtuales a partir de objetos reales.
Actualmente es un tema en gran desarrollo por los nuevos procesadores Intel-VT y AMD-V, que soportan la
virtualización de la CPU.
Básicamente hay dos tipos de virtualización:
- Virtualización de plataforma: se trata de simular
máquinas virtuales
para poder ejecutar varios Sistemas Operativos en una sola máquina. Hay varias tecnologías:
- Emulación del hardware:
la máquina virtual simula un hardware completo permitiendo correr de forma aislada instancias
de los Sistemas Operativos guest. Por ejemplo
Qemu o
Bochs
(MS-Virtual PC en Windows).
- Virtualización
a nivel de librerías: mediante librerías se consigue una capa de compatibilidad
que emula un Sistema Operativo y permite ejecutar binarios de otro Sistema Operativo. Por ejemplo
WINE,
una implementación de la API de Windows para Linux.
- Virtualización con hypervisor:
las instancias de los Sistemas Operativos guest corren sobre el hypervisor o
VMM (Virtual Machine Monitor) que les permite acceder directamente al hardware y no a un
hardware simulado como en el caso de los emuladores.
Si no es necesario modificar el Sistema Operativo guest hablamos de
virtualización completa,
por ejemplo VMware en Windows.
Otro ejemplo de virtualización completa es
KVM,
un módulo que convierte el kernel Linux en un hypervisor.
Si es necesario modificar el Sistema Operativo guest se denomina
paravirtualización,
por ejemplo Xen.
Otro ejemplo de paravirtualización es
User-Mode Linux,
donde un kernel guest corre como una aplicación de usuario y el kernel host
actúa de hypervisor.
- Virtualización a nivel de Sistema Operativo (jaulas):
en este caso sólo hay un Sistema Operativo en el que se virtualizan aplicaciones (generalmente
servidores) de manera que las aplicaciones que corren en el entorno guest lo ven como un
sistema autónomo.
Por ejemplo
chroot,
OpenVZ o
Linux-VServer
(MS-Virtual Server
en Windows).
- Virtualización
de aplicaciones (pseudo-code machine): la máquina virtual crea un pequeño entorno
virtual que aisla las aplicaciones del hardware, del Sistema Operativo y de otras aplicaciones.
Por ejemplo
Java Virtual Machine,
P-code machine,
Parrot,
Smalltalk o
MS-Common Language Runtime.
- Virtualización de recursos: se trata de simular recursos, por ejemplo
combinando componentes pequeños para simular un recurso mayor o dividiendo un recurso grande
en varios más pequeños virtuales. Algunos ejemplos son:
- Clusters:
combinan múltiples computadoras en una gran metacomputadora. Los clusters son
supercomputadores baratos: un grupo de PCs construidos con hardware barato
conectados en red que se comportan como un único ordenador de gran potencia.
¿Qué es un supercomputador? Un
supercomputador
es un ordenador de muy altas prestaciones respecto a lo habitual en la época en que
fue construido, con varias CPUs y que utiliza
computación paralela.
¿Qué Sistema Operativo utilizan los supercomputadores? Territorio Linux: el 75% de los
supercomputadores utiliza Linux (Fuente: top500.org).
¿Qué hace un supercomputador? De un supercomputador se pretende que proporcione
una o varias de las siguientes características:
- Alto rendimiento
(High Performance).
- Alta disponibilidad
(High Availability).
- Balanceo de carga
(Load Balancing).
- Escalabilidad
(Scalability).
¿Cómo son los verdaderos supercomputadores? Un verdadero supercomputador
es una única máquina construida con hardware especial, con múltiples CPUs
comunicadas por bus de datos, que cuesta del orden de 30 mill $
(Cray,
SGI,
IBM...). Puede ser
SMP
(Symmetric Multiprocessors) o
MPP
(Massively Parallel Processors).
- Almacenamiento virtual:
- RAID
(Redundant Array of Inexpensive Disks): simula un único dispositivo de almacenamiento
a partir de múltiples dispositivos.
- LVM
(Logical Volume Management): combina muchos discos en un gran disco lógico.
- SAN
(Storage Area Network): simula dispositivos de almacenamiento locales a partir de dispositivos remotos.
- DRBD
(Distributed Replicated Block Device): permite mirror remoto sobre TCP/IP (equivale a RAID 1 en red).
- Particionar un disco duro:
divide un disco grande en varios discos pequeños virtuales.
- Unión de interfaces de red
(channel bonding): simula un dispositivo de red único con gran ancho de banda
utilizando múltiples dispositivos de red independientes.
- Red privada virtual
(Virtual Private Network):
OpenVPN y
OpenSwan
permiten crear una red virtual dentro de otra o a través de otras.
- Zoning:
se divide el ancho de banda en una red de almacenamiento.