Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Las organizaciones que sufren por tener muchos servidores debido a una estrategia que controla
Microsoft Windows: "una aplicación, un servidor".
Los servidores consumen menos del 5% de los recursos disponibles en cada servidor, porque la
mayoría de los servidores usan mucha E/S y poca CPU.
6. ¿Qué diferencia hay entre el concepto “virtual” que tiene un proceso (direccionamiento en
memoria virtual, system, call, etc.) con esta virtualización?
A diferencia de los sistemas operativos, estas máquinas virtuales no son máquinas extendidas,
con archivos y otras características adecuadas. En vez de ello, son copias exactas del hardware,
incluyendo el modo kernel/ usuario, la E/S, las interrupciones y todo lo demás que tiene la máquina
real.
7. Explique cómo trabajaba un mainframe como el IBM 370
El corazón del sistema, que se conoce como monitor de máquina virtual, se ejecuta en el hardware
solamente y realiza la multiprogramación, proporcionando no una, sino varias máquinas virtuales a
la siguiente capa hacia arriba. En el sistema VM/370 original, algunas ejecutaban OS/360 o uno de los
otros sistemas operativos extensos de procesamiento por lotes o de procesamiento de transacciones,
mientras que otros ejecutaban un sistema interactivo de un solo usuario llamado CMS (Conversational
Monitor System; Sistema monitor conversacional) para los usuarios interactivos de tiempo
compartido. Este último fue popular entre los programadores.
Cuando un programa de CMS ejecutaba una llamada al sistema, ésta quedaba atrapada para el
sistema operativo en su propia máquina virtual, no para VM/370, de igual forma que si se ejecutara
en una máquina real, en vez de una virtual. Después, CMS emitía las instrucciones normales de E/S
de hardware para leer su disco virtual o lo que fuera necesario para llevar a cabo la llamada. Estas
instrucciones de E/S eran atrapadas por la VM/370, que a su vez las ejecutaba como parte de su
simulación del hardware real. Al separar por completo las funciones de multiprogramación y
proporcionar una máquina extendida, cada una de las piezas podían ser más simples, más flexibles
y mucho más fáciles de mantener.
8. ¿A qué se denomina “consolidación de servidores”?.¿Cuáles son las ventajas de la consolidación?
La virtualización del servidor enmascara los recursos del servidor a los usuarios, incluido el número
y la identidad de servidores físicos individuales, procesadores y Sistemas operativos. Esto hace
posible dividir un único host (anfitrión) en múltiples servidores independientes, conservando los
recursos de hardware. Se trata de unificar (consolidar) los servidores físicos en uno sólo virtual.
Al igual que un sistema operativo abstrae los comandos de E/S de disco a un usuario a través del
uso de capas de programas e interfaces, la virtualización abstrae el hardware físico a las máquinas
virtuales que soporta. El monitor de máquina virtual, o hypervisor, es el software que proporciona
esta abstracción. Actúa como un representante autorizado, como un proxy (procurador) para los
invitados (máquinas virtuales) cuando solicitan y consumen los recursos del anfitrión físico.
11. ¿Qué tienen que ver las máquinas virtuales con los archivos?
Las máquinas virtuales están construidas de archivos. Una máquina virtual típica puede consistir de
sólo unos pocos archivos.
Hay un archivo de configuración que describe los atributos de la máquina. Contiene la definición del
servidor, cuántos procesadores virtuales (vCPUs) se asignan a esta máquina virtual, cuánta RAM se
asigna, qué dispositivos de E/S tiene acceso la VM, cuántas tarjetas de interfaz de red (NIC) están en
el servidor virtual, y más. También describe el almacenamiento al que puede acceder la VM. A
menudo, el almacenamiento se presenta como discos virtuales que existen como archivos
adicionales en el sistema físico de archivos.
Que una VM consista de archivos hace que ciertas funciones en un entorno virtual sean mucho más
simples y rápidas que en un entorno físico. Desde los primeros días de las computadoras, el
respaldo de datos ha sido una función crítica. Ya que las máquinas virtuales son archivos, copiarlos,
no sólo produce una copia de seguridad de los datos, sino también una copia de todo el servidor, el
sistema operativo, las aplicaciones y la propia configuración del hardware.
Otro método para suministrar rápidamente nuevas máquinas virtuales es a través del uso de
plantillas. Las plantillas son máquinas virtuales que no se pueden encender, define la configuración
del servidor virtual, y tiene todo el sistema operativo y posiblemente incluso el software de
aplicación instalado.
16. Distinga las ventajas de las máquinas virtuales: consolidación, aprovisionamiento, disponibilidad,
migración.
La ventaja es que una falla en una máquina virtual no ocasiona que las demás fallen de manera
automática. En un sistema virtualizado, se pueden ejecutar distintos servidores en diferentes
máquinas virtuales, con lo cual se mantiene el modelo parcial de fallas que tiene una computadora,
pero a un costo mucho menor y con una administración más sencilla. Claro que consolidar los
servidores de esta forma es como poner todos los huevos en una canasta.
Si falla el servidor que ejecuta todas las máquinas virtuales, el resultado es aún más catastrófico
que cuando falla un solo servidor dedicado. Sin embargo, la razón por la que la virtualización puede
funcionar es que la mayoría de las fallas en los servicios no se deben a un hardware defectuoso,
sino al software presuntuoso, poco confiable y lleno de errores, en especial los sistemas operativos.
Con la tecnología de máquinas virtuales, el único software que se ejecuta en el modo kernel es el
hipervisor, el cual tiene 100 veces menos líneas de código que un sistema operativo completo, y por
ende tiene 100 veces menos errores.
La ejecución de software en las máquinas virtuales tiene otras ventajas además de un sólido
aislamiento.
Una de ellas es que al tener menos máquinas físicas hay un ahorro en hardware y electricidad, y se
ocupa menos espacio en la oficina. Para una compañía como Amazon, Yahoo, Microsoft o Google,
que puede tener cientos de miles de servidores que realizan una enorme variedad de tareas
distintas, la reducción de las demandas físicas en sus centros de datos representa un enorme
ahorro en los costos. Por lo general, en las empresas grandes los departamentos individuales o
grupos piensan en una idea interesante y después van y compran un servidor para implementarla.
Si la idea tiene éxito y se requieren cientos o miles de servidores, se expande el centro de datos
corporativo. A menudo es difícil mover el software a las máquinas existentes, debido a que cada
aplicación necesita con frecuencia una versión distinta del sistema operativo, sus propias
bibliotecas, archivos de configuración y demás. Con las máquinas virtuales, cada aplicación puede
tener su propio entorno.
Consolidación: elimina el costo, con menos servidores físicos, menos energía consumida, menos
energía de enfriamiento y menos cables, menos switches (conmutadores) de red, menos espacio
ocupado. La consolidación de Servidores se convirtió, y continúa haciéndolo, una herramienta
tremendamente valiosa de resolver costos y derroche de consumos. Con la tecnología de máquinas
virtuales, el único software que se ejecuta en el modo kernel es el hipervisor, el cual tiene 100
veces menos líneas de código que un sistema operativo completo, y por ende tiene 100 veces
menos errores
El aprovisionamiento puede tomar semanas o incluso meses dependiendo de los procesos que
sean necesarios hacer. Puesto que una VM consiste de archivos, duplicando esos archivos, en un
ambiente virtual, se puede hacer una copia perfecta del servidor disponible en cuestión de minutos.
Hay algunos cambios de configuraciones por hacer: el nombre del servidor y la dirección IP por
nombrar dos, pero los administradores rutinariamente levantan nuevas máquinas virtuales en
minutos u horas, a diferencia de meses.
Disponibilidad (tolerancia a los fallos): La ventaja es que una falla en una máquina virtual no
ocasiona que las demás fallen de manera automática. Recuperar un servidor virtual puede llevar
minutos, en cambio uno físico puede llevar días. En las máquinas virtuales es mucho más fácil usar
puntos de comprobación.
Migración de datos: migrar datos entre una máquina virtual y otra (por ejemplo, para balancear la
carga entre varios servidores) que migrar procesos que se ejecutan en un sistema operativo normal.
En este último caso, se mantiene una cantidad considerable de información crítica de estado sobre
cada proceso en las tablas del sistema operativo, incluyendo la información relacionada con la
apertura de archivos, las alarmas, los manejadores de señales y demás. Al migrar una máquina
virtual, todo lo que hay que mover es la imagen de memoria, ya que todas las tablas del sistema
operativo se mueven también.
17. ¿Cuál es la diferencia entre los hypervisores tipo 1 y tipo 2?
Hipervisor de tipo 2. El primero de estos hipervisores fue VMWare (Adams y Agesen, 2006; y
Waldspurger, 2002), el fruto del proyecto de investigación DISCO en la Universidad de Stanford
(Bugnion y colaboradores, 1997). VMWare se ejecuta como un programa de usuario ordinario
encima de un sistema operativo anfitrión como Windows o Linux. Cuando se inicia por primera vez,
actúa como una computadora que se acaba de iniciar y espera encontrar en la unidad de CD-ROM
un disco que contenga un sistema operativo.
Después instala el sistema operativo en su disco virtual (que en realidad sólo es un archivo de
Windows o Linux), para lo cual ejecuta el programa de instalación que se encuentra en el
CD-ROM. Una vez que se instala el sistema operativo invitado en el disco virtual, se puede iniciar
al ejecutarlo.
Ahora veamos cómo funciona VMWare con un poco más de detalle. Al ejecutar un programa
binario del Pentium, que puede obtener del CD-ROM de instalación o del disco virtual, primero
explora el código para buscar bloques básicos; es decir, ejecuciones de instrucciones seguidas que
terminan en un salto, una llamada, una interrupción o alguna instrucción que modifica el flujo de
control. Por definición, ningún bloque básico contiene una instrucción que modifique el contador
del programa, excepto el último. Se inspecciona el bloque básico para ver si contiene instrucciones
sensibles (en el sentido de Popek y Goldberg). De ser así, cada una de estas instrucciones se
sustituye con una llamada a un procedimiento de VMWare que la maneja. La instrucción final
también se sustituye con una llamada a VMWare.
Una vez que se realicen estos pasos, el bloque básico se coloca en la caché de VMWare y después
se ejecuta. Un bloque básico que no contenga instrucciones sensibles se ejecutará con la misma
rapidez bajo VMWare que en la máquina básica (ya que se está ejecutando en esa máquina).
Las instrucciones sensitivas se atrapan y emulan de esta manera. A esta técnica se le conoce como
traducción binaria. Una vez que el bloque básico haya completado su ejecución, el control se
regresa a VMWare, que localiza a su sucesor. Si ya se ha traducido el sucesor, se puede ejecutar de
inmediato. Si no, primero se traduce, se coloca en la caché y después se ejecuta. En un momento
dado, la mayor parte del programa estará en la caché y se ejecutará casi a la velocidad completa. Se
utilizan varias optimizaciones; por ejemplo, si un bloque básico termina al saltar (o llamar) a otro, se
puede sustituir la instrucción final mediante un salto o llamada directamente al bloque básico
traducido, con lo cual se elimina toda la sobrecarga asociada con la búsqueda del bloque sucesor.
Además, no hay necesidad de sustituir las instrucciones sensibles en los programas de usuario; el
hardware las ignorará de todas formas.
Ahora debe estar claro por qué funcionan los hipervisores de tipo 2, incluso en hardware que
no se puede virtualizar: todas las instrucciones sensibles se sustituyen mediante llamadas a
procedimientos que emulan estas instrucciones. El verdadero hardware nunca ejecuta las
instrucciones sensibles que emite el sistema operativo invitado. Se convierten en llamadas al
hipervisor, quien a su vez las emula.
Tal vez podríamos esperar que las CPUs con VT tuvieran un rendimiento mucho mayor que las
técnicas de software que se utilizan en los hipervisores de tipo 2, pero las mediciones muestran
otra cosa (Adams y Agesen, 2006). Resulta ser que el método de atrapar y emular que utiliza el
hardware con VT genera muchas interrupciones, y éstas son muy costosas en el hardware moderno,
debido a que arruinan las cachés de las CPUs, los TLBs y las tablas de predicción de bifurcación
internas para la CPU. Por el contrario, cuando las instrucciones sensibles se sustituyen mediante
llamadas a procedimientos de VMWare dentro del proceso que está en ejecución, no se produce
sobrecarga debido a este cambio de contexto. Como muestran Adams y Agesen, algunas veces el
software vence al hardware, dependiendo de la carga de trabajo. Por esta razón, algunos
hipervisores de tipo 1 realizan la traducción binaria por cuestiones de rendimiento, aun cuando el
software se ejecute de manera correcta sin ella.
18. Ventajas de uno sobre otro.
Básicamente: Hipervisor tipo 1 tiene mejor performance (no tiene tantas traducciones). Se tiene
más control de los programas que se ejecutan sobre las máquinas virtuales.
Hipervisor tipo 2: No hace falta tener CPUs con instrucciones VT. No hace falta eliminar el SO
anfitrión, se carga sobre él. Se puede ganar mucho tiempo de traducción/interpretación con el
software adaptado (a veces tiene mejor rendimiento que el tipo 1).
20. ¿En qué puede apoyar el hardware a la virtualización? ¿Qué hicieron Intel y AMD?
AMD-V e Intel VT-x son extensiones de virtualización asistida por hardware que los hipervisores
pueden aprovechar durante el procesamiento. Los procesadores Intel ofrecen un conjunto de
instrucciones adicionales llamado Virtual Machine Extensions (VMX). Al tener algunas de estas
instrucciones como parte del procesador, los hipervisores ya no necesitan mantener estas
funciones como parte de su código base. El código en sí puede ser más pequeño y más eficiente, y
las operaciones que admiten son mucho más rápidas, ya que ocurren por completo en el
procesador.
21. ¿Cuáles son los dos enfoques o estrategias de una máquina virtual para proporcionar recursos de
procesador?
22. ¿Cómo se debería encarar el tema de asignación de procesadores a las máquinas virtuales?
De menor a mayor y controlando rendimiento.
23. ¿A qué se les denomina anillos o Ring, en los procesadores? ¿Para qué sirven en la virtualización?
A los niveles de privilegio o modos de operación: 0 más privilegiado, 1 menos, 2 mucho menos y 3
el menos. Si hay hipervisor 1, éste ejecuta en anillo 0, los SO invitados en anillo 1 y las aplicaciones
en anillo 3. Si hay hipervisor tipo 2, el SO anfitrión en anillo 0, el hipervisor en anillo 1, el SO
invitado en anillo 2 y las aplicaciones en anillo 3.
24. ¿Cómo se debe configurar la memoria asignada a una máquina virtual?
En porciones de tamaño menor que la memoria física, porque se pierde mucho tiempo en
intercambios. Hay que ir probando rendimientos.
25. ¿Cómo administra la memoria un hipervisor, si sobre él hay máquinas virtuales con la misma
versión de SO?
La comparte entre los SO y también si hay aplicaciones repetidas.
26. ¿Cómo trabaja la técnica de Ballooning en la administración de memoria?
Para optimizar el uso de la memoria y recuperar memoria asignada de más. Infla y desinfla “globos”
para “swappear” procesos.
27. ¿Cómo se resuelven las E/S virtuales?
Se arman colas de peticiones. El hipervisor controla y supervisa las solicitudes.
28. ¿Qué ventajas posee la virtualización de E/S?
Las ventajas de virtualizar la carga de trabajos de E/S son muchas. Permite independencia del
hardware mediante la abstracción de los controladores específicos de las versiones que se ejecutan
en el hipervisor. Una máquina virtual que se ejecuta en un servidor IBM como un host puede
migrarse en vivo a un servidor HP blade, sin preocuparse sobre incompatibilidades de hardware o
desajustes de versiones. Esta abstracción permite una de las mayores fortalezas de la
disponibilidad: la migración en VIVO (en caliente).
29. Mencione algunas de las soluciones tecnológicas de hardware que mejoran el rendimiento de la E/S
virtual.
Algunas empresas de hardware disponen de dispositivos aceleradores de placas controladoras-
memoria.
30. Identifique las diferencias entre las máquinas virtuales vistas en este capítulo y la Java VM.
Una máquina virtual generada por un hipervisor genera una copia exacta del hardware. La máquina
virtual Java es sólo válida para una aplicación y tiene un intérprete que se adecua al SO y al
hardware.
31. Adicional: Investigue el trabajo (paper) de requisitos de hardware para virtualización (Popek y
Goldberg).
Concretamente, se trata de requisitos de un hipervisor tipo 1. Si se ejecuta una instrucción de E/S
desde un SO que ejecuta en modo NO privilegiado, el hardware no ignora ni rechaza ese código,
porque dispone de INSTRUCCIONES SENSIBLES, que son un subconjunto de las INSTRUCCIONES
PRIVILEGIADAS. En INTEL, esto es un anillo 1.