Expocicion de Virtualización
Expocicion de Virtualización
Expocicion de Virtualización
En la década de los 90, cuando muchas empresas tenían el desafío de mantenerse al día con
pilas de TI de un proveedor y aplicaciones heredadas, se dieron cuenta de la necesidad de
usar mejor sus recursos de servidores, que con frecuencia no se utilizaban lo suficiente. Al
adoptar la virtualización, no solo particionaron su infraestructura de servidor de manera más
eficiente, sino que ejecutaron sus aplicaciones heredadas en tipos y versiones de OS
diferentes. Debido a su gran red compuesta de muchos tipos diferentes de PC ejecutando
diferentes sistemas operativos, el crecimiento de Internet ayudó a impulsar la adopción de la
virtualización. A medida que la virtualización se empezó a utilizar con mayor frecuencia,
redujo la dependencia del proveedor para servidores y fue la base para el desarrollo de la
computación en la nube.
Las organizaciones, tanto grandes como pequeñas, están realizando grandes inversiones en la
virtualización y la computación en la nube. Por lo tanto, es importante que los técnicos y los
profesionales de TI comprendan estas dos tecnologías. Si bien las dos tecnologías se
superponen, de hecho, son dos tecnologías diferentes. El software de virtualización permite
que un servidor físico ejecute varios entornos informáticos individuales. La computación en
la nube es un término que se utiliza para describir la disponibilidad de recursos informáticos
compartidos, software o datos, como un servicio y a pedido a través de Internet.
En este capítulo, aprenderá las ventajas que tiene la virtualización sobre el uso tradicional de
los servidores dedicados, como el uso de menos recursos, menos espacio requerido, la
reducción de costos y el aumento del tiempo de actividad del servidor. También aprenderá los
términos que se utilizan al analizar la virtualización del lado del cliente, como el equipo host,
que se refiere al equipo físico controlado por un usuario. El sistema operativo del host es el
sistema operativo en el equipo host, y el sistema operativo huésped es el sistema operativo
que se ejecuta en la máquina virtual en el equipo host.
Aprenderá sobre los dos tipos de hipervisores: el hipervisor tipo 1 (nativo), también llamado
hipervisor instalado directamente en el hardware, y el tipo 2 (alojado). También aprenderá los
requisitos mínimos del sistema para ejecutar Windows Hyper-V, que es un hipervisor tipo 2,
en Windows 7, WIndows 8 y Windows 10.
Hipervisores de tipo 1 y 2
El hipervisor, también llamado Administrador de máquina virtual (VMM), es el cerebro de la
virtualización. El hipervisor es el software que se utiliza en el equipo host para crear y
administrar las VM.
El hipervisor le asigna a cada máquina virtual recursos físicos del sistema, como la CPU, la
RAM y el disco duro, según sea necesario. Esto asegura que el funcionamiento de una
máquina virtual no interfiera con el de otra.
Existen dos tipos de hipervisores, como se muestra en la figura 1.
● Hipervisor del tipo 1 (nativo)
También llamado hipervisor de metal base, se utiliza comúnmente con la
virtualización de servidores. Se ejecuta directamente en el hardware de un host y
administra la asignación de los recursos del sistema a los sistemas operativos
virtuales.
● Hipervisor del tipo 2 (alojado)
Se aloja en un SO y se utiliza comúnmente con la virtualización del lado del cliente.
Los software de virtualización, como Windows Hyper-V y VMware Workstation, son
ejemplos de un hipervisor del tipo 2.
Los hipervisores del tipo 1 son comunes en los centros de datos y en la computación en la
nube. Algunos ejemplos de hipervisores del tipo 1 incluyen: VMware VSphere/ESXi, Xen y
el Servidor de VM de Oracle
Los hipervisores del tipo 2, como VMware Workstation, funcionan con el equipo host para
crear y utilizar varias VM. Windows Hyper-V también se incluye en Windows 10 Pro y
Windows Server (2012 y 2016).
La figura 2 muestra un ejemplo de la implementación del hipervisor del tipo 1 y del tipo 2.
En la implementación del tipo 1, VMware VSphere se ejecuta directamente en el hardware
del servidor sin un sistema operativo. Para crear una VM de servidor Windows y una VM de
servidor Linux, se ha utilizado VMware VSphere. En la implementación del tipo 2, el SO
host en el equipo es Windows 10. Para crear y administrar la VM Windows 7 y una VM
Linux, se ha utilizado Windows Hyper-V.
Los emuladores del lado del cliente pueden ejecutar software diseñado para un SO huésped
diferente o un SO destinado a un hardware diferente. Por ejemplo, si el SO host fuese Linux y
estamos creando una VM con Windows 7 para ejecutar una aplicación que solo se ejecuta en
Windows 7. el equipo host de Linux se convertirá en un equipo con Windows 7.
Técnicas para una virtualización eficiente
Hoy en día pensar en implementar un proyecto de virtualización se traduce en una
estrategia efectiva para optimizar recursos, ahorrar costos y promover la eficiencia
desde los sistemas operativos y los servidores a los dispositivos de almacenamiento
y los recursos de red. Así las cosas, para muchas empresas, la virtualización forma
parte de las estrategias actuales de los centros de datos cuando de consolidar y
optimizar sus recursos se trata.
Que es la Paravirtualizacion
Virtualización completa:
Tenemos un Hardware, cualquier hardware, y tenemos el hipervisor que tiene el VMM
(Virtual Machine Monitor). Los Sistemas operativos usan drivers genéricos y estos SO
permanecen inalterados. Se traduciría en que el hipervisor hace todo el trabajo sin alterar
nada. Hoy en dia el rendimiento es bastante alto alto (aún haciendo el trabajo el hypervisor)
porque al usar los mismos drivers genéricos que el host el kernel que usan es muy pequeño
“Microkernel” y ademas aprovechan cualidades del hardware que cada vez mas esta
preparado para la virtualización.
Paravirtualización:
Tenemos un Hardware preparado para ser virtualizado (VT hardware), un hipervisor muy
“delgado” y unos sistemas operativos invitados con drivers paravirtualizados. Traduciríamos
como que los invitados hablan directamente con el hardware del host ya que este está
preparado para ello y el hypervisor apenas interviene. Se consigue una virtualización con mas
rendimiento (a día de hoy) que con la completa. Por contra, los SSOO invitados tienen que
estar modificados para que trabajen de esta forma.
———–
La verdad es que la virtualización, cada vez esta mas asistida por el hardware (Intel-VT y
AMD-V están avanzando mucho en este campo) seguramente estas palabras que estamos
definiendo cambiaran su significado con otro mas acorde con las nuevas tecnologías.
¿Que es un Hipervisor?
Los Hipervisores
Históricamente IBM llamaba al sistema operativo “supervisor” ya que en realidad era
básicamente un kernel que supervisaba el hardware. Así que las técnicas de virtualización de
hardware a adoptado la palabra “hipervisor” o hypervisor para referirse a esta nueva forma de
“kernel”.
El hipervisor es el elemento del sistema operativo o de software que administra y hace que
funcionen las maquinas virtuales sobre un hardware virtual. El Hipervisor, (algunos lo llaman
VMM “motor de máquina virtual”, pero por no confundir con el Virtual Machine manager,
no lo nombraré de tal forma) Tiene varias tarea, por un lado presentan a los sistemas
virtualizados, también proveen de un Hardware virtual a las VM y de monitorizar a estas
máquinas.
Por resumir hay dos tipos de hipervisores: los Nativos o unhosted, los llamado “de tipo 1” y
los alojados, “de tipo 2” que necesitan de un Sistema operativo para su ejecución. Abría una
tercera clase denominada híbrida con características de estas dos tecnologías.
● Hipervisores Nativos, el hipervisor se ejecuta directamente sobre el hardware o
máquina Host (bare-metal) y es el que se encarga de controlar todos los accesos al
hardware. Aunque es la tecnologia mas antigua, tambien es la que utilizan las
soluciones de virtualización mas potentes: Hyper-V, Citrix Xen y VMWare
ESX-Server.
● Hipervisor alojado, en este tipo de hipervisores (hosted), el hipervisor es un programa
que se ejecuta sobre un Sistema Operativo como Windows, Linus, OSX, y sobre el
hipervisor se cargan las diferentes máquinas virtuales. Ejemplos claros y puros serian
las máquinas virtuales Java o .Net.
● Un último grupo mezcla de los anteriores son los hipervisores híbridos en los que
Sistema operativo, host e hipervisor compiten por el hardware. Estas serian Virtual
Server de Microsoft, Virtual Box de Oracle.
Diferencias entre Hyper-V y VMWare ESX
En realidad hay mas de las que aparentan, en realidad se basan en soluciones diferentes de
Virtualización Nativa, Virtualización Monolítica y virtualización de Microkernel
La virtualización con microkernel es mas sencilla puesto que las máquina virtuales no
necesitan de drivers específicos sino que acceden directamente al hardware con los mismos
drivers que usa el hypervisor, asi el hypervisor aparece como una capa transparente dedicada
a separar y administrar las diferentes maquinas virtuales. Hyper-V trabaja de esta manera
siendo así mas estable y con un rendimiento mas alto.
Virtualización de memoria
Virtualización de la memoria El sistema de memoria es un componente fundamental de un
computador y, por tanto, su virtualización eficiente es un aspecto clave a la hora de
implementar un hipervisor. Para entender la dificultad de esta labor, hay que tener en cuenta
que toda dirección generada en una máquina virtual (tanto si corresponde a una instrucción
como a un dato; o tanto sea una dirección de usuario como de sistema) tiene que ser
virtualizada, es decir, convertida a la dirección física correspondiente de la memoria real
donde está alojada la máquina virtual. Nótese la diferencia con la virtualización del
procesador, en la que sólo es necesario virtualizar las instrucciones conflictivas, ejecutando
las restantes sin ningún tipo de intervención del hipervisor. La virtualización de la memoria,
por tanto, requiere la intervención continua del hardware de gestión de memoria para poder
llevarse a cabo de forma eficiente; pero ese hardware, al menos hasta hace poco tiempo, es
ajeno a esta labor y hay que engañarle de alguna forma para conseguir el modo de operación
requerido. De manera similar a lo que ocurre con la virtualización del procesador y su
vinculación con el gestor de procesos del sistema operativo, la funcionalidad requerida para
virtualizar la memoria está muy relacionada con la asociada al propio gestor de memoria del
sistema operativo (después de todo, el gestor de memoria proporciona memoria virtual y el
hipervisor debe virtualizar la memoria virtual). Esta similitud no es sorprendente dado que
una de las labores principales del sistema operativo es crear la abstracción de proceso que, al
fin y al cabo, es una especie de máquina virtual extendida que ofrece a un programa en
ejecución la impresión de que tiene un procesador y una memoria sólo para él. Por tanto, de
la misma manera que muchos de los conceptos vinculados con los algoritmos de
planificación de procesos de un sistema operativo pueden aplicarse, con algunas adaptaciones
y extensiones, a la virtualización del procesador por parte del hipervisor (por ejemplo, el
algoritmo de planificación de procesos CFS de Linux también lo puede usar, con ciertas
extensiones, un hipervisor para planificar máquinas virtuales), las técnicas usadas por el
gestor de memoria del sistema operativo pueden trasladarse y adaptarse a la virtualización de
la memoria que lleva a cabo el hipervisor: De la misma manera que el gestor de memoria del
sistema operativo ofrece un espacio de memoria lógico independiente y contiguo (con
direcciones desde 0 hasta un cierto valor N) a cada proceso, el hipervisor debe proporcionar a
cada máquina virtual un espacio de memoria físico (presuntamente, físico) independiente y
contiguo (con direcciones desde 0 hasta un cierto valor N). Para entender la necesidad de esta
contigüidad en el mapa físico, hay que tener en cuenta que algunos sistemas operativos
requieren una memoria física contigua que comience por cero para poder funcionar
correctamente. En cualquier caso, en este aspecto, hay algunas diferencias significativas entre
estos dos niveles de funcionalidad: a cada proceso se le asigna un mapa lógico lo más grande
posible extendiéndose por todo el rango de direcciones lógicas que ofrece el procesador,
mientras que a una máquina virtual se le asigna un mapa físico del tamaño especificado por el
usuario que crea esa máquina. De igual manera que el sistema operativo gestiona estructuras
de datos que, por un lado, mantienen la correspondencia entre las páginas de cada proceso y
los marcos de memoria asignados a las mismas (las tablas de páginas de cada proceso
gestionadas por el sistema operativo) y, por otro lado, una estructura de datos que identifica
qué marcos están libres (la tabla de marcos), el hipervisor debe gestionar estructuras de datos
funcionalmente equivalentes: las tablas que hagan corresponder los marcos de cada máquina
virtual con los marcos de la memoria real asignados a los mismos y una tabla que mantenga
el estado de ocupación de todos los marcos de la memoria real. Igual que el gestor de
memoria del sistema operativo reparte la memoria física entre los procesos mediante políticas
de asignación de espacio y de reemplazo que intentan que los conjuntos de trabajo de los
procesos estén residentes en memoria y usa un dispositivo de memoria secundaria
(denominado, habitualmente, dispositivo de paginación o de swap) para almacenar las
páginas que no caben en la memoria principal, el hipervisor debe repartir la memoria física
real entre las máquinas virtuales teniendo en cuenta el comportamiento de cada máquina
virtual, así como parámetros de configuración especificados por el usuario cuando crea la
misma (como, por ejemplo, cantidad mínima y máxima de memoria física real asignada a una
máquina virtual o su importancia o peso relativo con respecto a las otras máquinas virtuales
que gestiona ese hipervisor para tenerlo en cuenta a la hora de realizar el reparto de la
memoria entre las distintas máquinas virtuales), utilizando también un dispositivo de
paginación para almacenar las páginas de las máquinas virtuales Virtualización de la memoria
Fernando Pérez Costoya (mayo 2017) 2 que no caben en la memoria física real. A pesar de
esas similitudes, en cuanto a este aspecto, hay diferencias significativas entre ambos niveles.
Así, el algoritmo de reemplazo del hipervisor normalmente no dispondrá de información
sobre cómo usan las páginas los procesos de cada sistema operativo lo que puede dificultar la
adaptación directa de los algoritmos de reemplazo planteados en la literatura de sistemas
operativos. Recapitulando, a pesar de que la virtualización de la memoria por parte del
hipervisor puede sacar provecho y reutilizar parte de la funcionalidad que implementa el
gestor de memoria del sistema operativo, tiene que incidir en dos aspectos específicos: cómo
manejar el hardware de gestión de memoria (basado, normalmente, en la técnica de la
paginación) para conseguir que opere en un entorno de virtualización a pesar de no estar
preparado para ello, y la adaptación, así como la concepción de nuevas técnicas cuando así se
requiera, de los esquemas de reparto de memoria que usa el sistema operativo para aplicarlos
a las máquinas virtuales. En este documento se analiza el primer aspecto (es decir, cómo
virtualizar la paginación). Para realizar este análisis se usa como ejemplo la familia de
procesadores x86 por su uso extendido, aunque, como bien es sabido, presentan serias
dificultades para ser virtualizados. En el caso de la memoria, hay dos características de estos
procesadores que no facilitan su virtualización: el uso de una TLB con gestión hardware
(todo componente que se gestione por software es, obviamente, más fácil de virtualizar) que,
además, no incluye identificadores de espacios de direcciones (ASID), lo que impide que
pueda convivir en la TLB información de memoria asociada a distintas máquinas virtuales,
siendo necesario invalidarla completamente cuando el hipervisor reasigna un procesador a
otra máquina virtual (como ya es sabido, también es necesario invalidarla ante un cambio de
proceso aunque ambos ejecuten en la misma máquina virtual). Este análisis se extenderá a las
tres soluciones habituales para lograr la virtualización: Sistemas con paravirtualización,
como, por ejemplo, Xen, en los que el sistema operativo alojado se modifica para facilitar una
virtualización eficiente. Sistemas con virtualización completa sobre un procesador sin
soporte para la misma, como, por ejemplo, VMware sobre un procesador x86 convencional,
que representan el reto con mayor complejidad. Sistemas con virtualización completa sobre
un procesador que da soporte a dicha técnica, como, por ejemplo, los procesadores x86 con
las extensiones de virtualización de Intel (Intel VT-x) o AMD (AMD-V).
Virtualización de memoria
Debido al nivel extra de asignación de memoria introducido por la virtualización,
ESXi puede administrar la memoria de forma efectiva en todas las máquinas
virtuales.
Parte de la memoria física de una máquina virtual podría asignarse a las páginas
compartidas o a las páginas sin asignar, o bien intercambiarse.
Un host administra la memoria virtual sin conocer el sistema operativo invitado y sin
interferir con el subsistema de administración de memoria del sistema operativo
invitado.
El VMM de cada máquina virtual mantiene una asignación desde las páginas de
memoria física del sistema operativo invitado hacia las páginas de memoria física en
la máquina subyacente. VMware se refiere a las páginas físicas del host subyacente
como páginas de la “máquina” y a las páginas físicas del sistema operativo invitado
como páginas “físicas”.
● Los cuadros representan las páginas y las flechas muestran las diferentes
asignaciones de memoria.
● Las flechas de la memoria virtual del invitado a la memoria física del invitado
muestran la asignación que mantienen las tablas de páginas en el sistema
operativo invitado. No se muestra la asignación de memoria virtual a memoria
lineal para procesadores de arquitectura x86.
● Las flechas que van de la memoria física del invitado a la memoria de la
máquina muestran la asignación que mantiene VMM.
● Las flechas discontinuas muestran la asignación de memoria virtual invitada a
memoria de la máquina en las tablas de páginas de sombra que también
mantiene el VMM. El procesador subyacente que ejecuta la máquina virtual
utiliza las asignaciones de tablas de páginas de sombra.
Virtualización de memoria asistida por hardware
Algunas CPU, como AMD SVM-V e Intel Xeon serie 5500, ofrecen
compatibilidad de hardware para virtualización de memoria mediante la
utilización de dos capas de tablas de páginas.
Virtualización de E/S
VIRTUALIZACIÓN DE ENTRADA/SALIDA
La virtualización de la E/S es un área en la que los hipervisores de tipo 2 tienen una
ventaja práctica sobre los hipervisores de tipo 1: el sistema operativo anfitrión
contiene los drivers de dispositivos de E/S conectados a la computadora.