Está en la página 1de 14

Historia de la virtualización

El origen de la virtualización data de los días de los grandes PC mainframe en la década de


los 60, cuando cada una de estas masivas piezas de hardware solo podía funcionar en un
proceso a la vez. Con el tiempo, los clientes comenzaron a exigir que estas importantes
inversiones pudieran admitir a más de un usuario o proceso a la vez. A fines de la década de
los 60, IBM desarrolló el sistema operativo CP-67, un hipervisor inicial que introdujo la
memoria virtual a la familia de servidores System 360 de la empresa. Sin embargo, se
desarrollaron otras soluciones para que múltiples usuarios trabajen en un solo servidor, y la
virtualización languideció como tecnología de nicho durante varias décadas.

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.

Es importante no solo aprender sobre la virtualización y la tecnología de la nube, sino


también crear habilidades prácticas. En este capítulo, completará una práctica de laboratorio
de la instalación de Linux en una máquina virtual.
Requisitos para la virtualización

Requisitos de las máquinas virtuales


La informática virtual requiere configuraciones de hardware más potentes debido a que cada
instalación necesita sus propios recursos.
Todas las máquinas virtuales comparten los siguientes requisitos básicos del sistema:
● Soporte del procesador
Los procesadores, como Intel VT y AMD-V, se diseñaron específicamente para
admitir la virtualización. Es posible que se deba activar la característica de
virtualización en estos procesadores. También se recomiendan procesadores con
varios núcleos, ya que los núcleos adicionales aumentan la velocidad y la capacidad
de respuesta cuando se ejecutan varias VM.
● Soporte de memoria
Tenga en cuenta que necesita memoria para su SO host y que ahora necesitará
suficiente RAM para cumplir con los requisitos de cada VM y su SO invitado.
● Almacenamiento
Cada VM crea archivos muy grandes para almacenar los sistemas operativos, las
aplicaciones y todos los datos de la VM. También debe tener en cuenta que una VM
activa requerirá algunos GB de espacio de almacenamiento. Por lo tanto, se
recomiendan unidades grandes y rápidas.
● Requisitos de red
Los requisitos de conexión de red dependen del tipo de VM. Algunas VM no
requieren conexiones externas, mientras que otras sí. Las VM se pueden configurar en
una red puente, NAT, solo host o especial para conectarse solo a otras VM. Para
conectarse a Internet, una VM utiliza un adaptador de red virtual que simula ser el
adaptador de host real. A continuación, el adaptador de red virtual se conecta a través
de la NIC física para establecer una conexión a Internet.
Los requisitos mínimos del sistema para Windows Hyper-V para Windows 10 y Windows 8,
y para Windows Virtual PC para Windows 7 se muestran en las figuras 1, 2 y 3,
respectivamente.
Al igual que un equipo físico, las VM son vulnerables a las mismas amenazas y ataques
malintencionados. Si bien las VM se aíslan del host, pueden compartir recursos (por ejemplo,
la NIC, carpetas y archivos). Los usuarios deben tomar las mismas consideraciones de
seguridad que el host e instalar el software de seguridad, activar las funciones del firewall,
instalar parches y actualizar tanto el sistema operativo como los programas. También es
importante mantener actualizado el software de virtualización.
Hipervisores tipo 1 y tipo 2

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.

Para poder identificar cuando se es requerido implementar un proceso de


virtualización, en principio se deben considerar y analizar sus ventajas y
desventajas, de forma tal que puedan alinearse a los objetivos estratégicos
propuestos por la alta dirección.

Pero antes de comenzar a discutir las ventajas y desventajas de un proyecto de


virtualización, vale la pena clarificar de una manera sencilla a que nos referimos con
virtualización. Virtualizar un servidor, simplemente es dividir un servidor físico en
partes más pequeños llamadas servidores virtuales con la ayuda de un software de
virtualización.

La decisión de si cambiar la plataforma de IT a un ambiente virtualizado puede


causar dudas para algunas compañías, sin embargo muchas empresas han visto en
la virtualización el futuro de la computación luego de analizar sus beneficios y
desventajas. A continuación, enumeraré los principales pros y contras que servirán
como base para tomar una decisión de abordar un proyecto de virtualización acorde
a las necesidades de una compañía.

Ventajas de un proyecto de virtualización


Reducción de costos: este es tal vez el punto más ventajoso al virtualizar, debido a
que ya no se tienen que comprar múltiples servidores físicos con sus respectivos
recursos y sus gastos asociados de energía y espacio, sino que se obtiene el mismo
potencial de computo con una sola máquina.

Fácil respaldo y recuperación en caso de desastres: Debido a que las máquinas


virtuales se manejan como archivos, la recuperación de los mismos es sencilla, más
si la herramienta de virtualización cuenta con snapshots. Igualmente se requieren
menos recursos de TI para manejarlos.

Automatización: Los gastos operativos se disminuyen debido a la gran cantidad de


operaciones que se pueden automatizar en un ambiente virtual. Al tener mayor
automatización se requieren menos recursos de TI realizando estas tareas.
Escalabilidad y Uptime: Muchos programas de virtualización permiten la asignación
dinámica de recursos (CPU, memoria, disco) a los servidores virtuales, permitiendo
que esta asignación sea en línea y sin necesidad de programar ventanas de
mantenimiento para tales cambios.

Aislamiento de aplicaciones: normalmente teniendo máquinas físicas, se dedica una


máquina por cada aplicación a utilizar, provocando el aumento sin control de estas
en un datacenter. Teniendo virtualización podemos aprovechar una sola máquina
física o unas pocas para contener cada una de estas aplicaciones en su propio
ambiente disminuyendo el desperdicio de recursos y asignando la cantidad
apropiada de recursos a cada una.

Posibles desventajas de un proceso de virtualización


Costos iniciales: aunque una de las ventajas de virtualizar es la reducción de costos,
también se debe pensar que inicialmente debemos hacer una inversión que puede
ser alta. Se debe considerar que normalmente el hardware apto para virtualizar es
un poco más costoso que el hardware normal. Igualmente se debe tener en cuenta
el costo del licenciamiento del software, sin embargo si miramos estos costos a
largo plazo, la virtualización seguirá ganando campo en el plano de la productividad.

Seguridad: La virtualización se puede llevar a cabo contratando un proveedor de


servicios en la nube al igual que teniendo nuestra propia infraestructura.
Dependiendo del modelo de virtualización que se escoja debemos entrar a analizar
qué tan segura estará nuestra información en los servidores del proveedor de
servicio que escojamos.

Aprendizaje: Un proyecto de virtualización requerirá de personal de TI entrenado en


el tema, ya que no es un tema fácil y esto implica una curva de aprendizaje que
debe tenerse en cuenta al momento de emprender el proyecto. Igualmente nos
debemos preparar para enfrentar y resolver situaciones como la posible
incompatibilidad de algunas aplicaciones en un ambiente virtual. Desde el punto de
vista de los usuarios, una máquina virtual opera de manera similar a una máquina
física, por lo tanto para los usuarios finales será casi transparente el cambio.

En resumen, comparando las ventajas y desventajas de un proceso de


virtualización, para la mayoría de las compañías resulta atractivo el migrar a este
modelo. Desde otro punto de vista, las desventajas se pueden ver como simples
retos que con una buena planeación y un equipo de IT entrenado en el tema, se
pueden superar de manera exitosa.
¿Se hacen los microkernels de hipervisores correctamente?

Que es la Paravirtualizacion

Virtualización vs ParavirtualizaciónEste si que es un problema….. ¿que es cada cosa? A raid


de dar un curso de Hyper-V a salido esta pregunta entre mis alumnos que después de mirar en
internet no les quedaba claro la explicación porque ponían cosas contradictorias. Realmente
el título de la entrada deberia ser Virtualización completa Vs Paravirtualización que es mas
apropiado para las definiciones que voy a dar. También recomiendo que echéis un vistazo a
estas dos entradas para aclarar conceptos: ¿Que es la virtualización? y ¿Que es un
Hipervisor?
Bueno, voy a explicar que es cada cosa a riesgo de meter la pata, porque si que es cierto que
hay cosas en la red mal definidas pero los conceptos son claros. Para que quede bien definido
voy a ser drástico en las definiciones, o negro o blanco, ya que hay una gama gris intermedia
“Virtualización parcial“, “Virualización asistida por hardware“… que aunque se puede definir
bien, puede dar a equivocaciones, aquí la tecnología y los avances del harware tienen mucho
que decir.
¿no es suficiente la virtualización? A la virtualización, tan buena, se le sacó una pega que es
el rendimiento, siempre se desea un mayor rendimiento y todos los avances en virtualización
son precisamente para mejorar esto. De ahí que los fabricantes de hardware han empezado a
producir sus máquinas preparadas para dar un mejor rendimiento en entornos virtuales.

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?

La Virtualización (ver aqui)


La virtualización consiste en alojar sistemas operativos fuera de su harware. Para ello se
necesita un software que emule un hardware sobre el que se alojará el sistema operativo. Al
software que realiza tal operación se le denomina hypervisor y se ejecuta en una máquina
host o anfitrión, El software virtualizado se denomina maquina virtual o sistema operativo
invitado.

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 Monolítica es complicada, ya que cuando una VM hace una llamada al


Hardware, el hardware virtualizado redirige la llamada a drivers en el hipervisor, el cual
enruta esa llamada al recurso real. Así es como opera VMWare, el cual utiliza mucho código
para conseguir esto.

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”.

Cada máquina virtual ve un espacio de memoria física contigua, de base cero y


direccionable. La memoria de la máquina subyacente en el servidor que cada
máquina virtual utiliza no es necesariamente contigua.

El sistema operativo invitado administra las direcciones virtuales a físicas del


invitado. El hipervisor solo es responsable de traducir las direcciones físicas del
invitado a direcciones de la máquina. La virtualización de memoria asistida por
hardware utiliza la funcionalidad de hardware para generar las asignaciones
combinadas con las tablas de páginas del invitado y las tablas de páginas anidadas
que mantiene el hipervisor.

El diagrama muestra la implementación de ESXi de la virtualización de memoria.

Asignar memoria de ESXi

● 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 memoria asistida por hardware


La primera capa de tablas de páginas almacena traducciones virtuales a físicas de
invitados, mientras que la segunda almacena traducciones físicas a virtuales de
invitados. El búfer de traducción de direcciones (TLB) es una memoria caché de
traducciones mantenida por el hardware de la unidad de administración de memoria
(MMU) del procesador. Una omisión de TLB es una omisión en esta memoria caché,
y el hardware debe acudir a la memoria (posiblemente varias veces) para encontrar
la traducción requerida. En el caso de una omisión de TLB en una determinada
dirección virtual de invitado, el hardware analiza ambas tablas de páginas para
traducir la dirección virtual del invitado a una dirección de máquina. El sistema
operativo invitado mantiene la primera capa de tablas de páginas. El VMM solo
mantiene la segunda capa de tablas de páginas.

Consideraciones sobre rendimiento

Cuando utiliza la asistencia de hardware, elimina la sobrecarga de virtualización de


memoria de software. En particular, la asistencia de hardware elimina la sobrecarga
requerida para mantener las tablas de páginas de sombra sincronizadas con las
tablas de páginas de invitados. Sin embargo, la latencia de la omisión de TLB al
utilizar asistencia de hardware es significativamente más alta. De forma
predeterminada, el hipervisor utiliza páginas grandes en modos asistidos de
hardware con el fin de reducir el costo de las omisiones de TLB. En consecuencia, si
una carga de trabajo se beneficia o no con la utilización de asistencia de hardware
depende principalmente de la sobrecarga que provoca la virtualización de memoria
cuando se utiliza la virtualización de memoria de software. Si una carga de trabajo
incluye una pequeña cantidad de actividad de tablas de páginas (como creación de
procesos, asignación de memoria o cambios de contexto), la virtualización de
software no causa una sobrecarga significativa. De manera inversa, las cargas de
trabajo con una gran cantidad de actividad de tablas de páginas probablemente se
beneficien con la asistencia de hardware.

De forma predeterminada, el hipervisor utiliza páginas grandes en modos asistidos


de hardware con el fin de reducir el costo de las omisiones de TLB. El mejor
rendimiento se logra mediante la utilización de páginas grandes en traducciones
virtuales de invitado a físicas de invitado y en traducciones físicas de invitado a
direcciones de máquina.

La opción LPage.LPageAlwaysTryForNPT puede cambiar la directiva para utilizar


páginas de gran tamaño en traducciones físicas de invitado a direcciones de
máquina. Para obtener más información, consulte Atributos avanzados de memoria.

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.

Es decir es la abstracción de los protocolos de capas superiores de las conexiones


físicas o del transporte físico. En este caso, los recursos que se abstraen son las
conexiones de entrada/salida y transporte.

También podría gustarte