SI - U02 Sistemas Operativos y Virtualización
SI - U02 Sistemas Operativos y Virtualización
SI - U02 Sistemas Operativos y Virtualización
Tabla de contenido
Instalación de Sistemas Operativos: .................................................................................................2
Introducción ..................................................................................................................................2
Concepto ...................................................................................................................................2
Objetivos. ..................................................................................................................................2
Funciones de un sistema operativo. .............................................................................................3
Tipos de sistemas operativos. .......................................................................................................4
Según su estructura...................................................................................................................4
Según el número de usuarios ....................................................................................................6
Según su función .......................................................................................................................8
Según su disponibilidad .............................................................................................................9
Licencias y tipos de licencias. ..................................................................................................... 10
Mercado actual de los sistemas operativos en las distintas plataformas existentes ................ 12
Instalaciones de sistemas operativos libres y propietarios (atendidas y desatendidas) ........... 12
Controladores de dispositivos: tipología e instalación .............................................................. 12
Gestores de arranque................................................................................................................. 13
Máquinas virtuales. .................................................................................................................... 13
Conceptos de Anfitrión y Huésped ........................................................................................ 14
Requisitos Hardware .............................................................................................................. 15
Tipos de Máquinas Virtuales .................................................................................................. 17
Técnicas de Virtualización ...................................................................................................... 18
Ventajas de la Virtualización .................................................................................................. 19
Soluciones de Virtualización................................................................................................... 21
Uso de VMWare Workstation 12 ........................................................................................... 30
VMWare Tools ........................................................................................................................ 38
Contenedores ......................................................................................................................... 40
Consideraciones previas a la instalación de sistemas operativos libres y propietarios. ............ 46
Instalación de sistemas operativos. Requisitos, versiones y licencias. ...................................... 47
Instalación/desinstalación de aplicaciones. Requisitos, versiones y licencias. .......................... 47
Actualización (on-line y off-line) de sistemas operativos y aplicaciones. .................................. 48
Instalación de Sistemas Operativos:
Introducción
El ordenador es un sistema programable formado por un conjunto de elementos hardware que
necesitan instrucciones que le indiquen cómo utilizar los recursos. El conjunto de instrucciones o
programas es lo que conocemos como soporte lógico o software. Un ordenador, sin software que
lo programe, es básicamente un bloque de metal inútil, pero con el software puede almacenar,
procesar y obtener información, editar textos, controlar el entorno, etc.
Concepto
Sin duda alguna, la utilización de los recursos mediante programas es muy complicada, puesto que
cada dispositivo es diferente y con gran cantidad de características a controlar. Por ello, una de las
primeras acciones a llevar a cabo es el diseño y codificación del software que nos facilite el manejo
de estos recursos, evitando, en lo posible, que debamos poseer profundos conocimientos del
hardware, cediéndole esta tarea a un reducido número de profesionales que serán los que
construyan dicho software. Una vez realizado este esfuerzo de diseño, cabe pensar por que no se
completa un poco más con el fin de dotar a los usuarios de unas cuantas funciones adicionales,
que no sólo faciliten el uso de estos recursos, sino que además los potencien lo más posible. Pues
bien, este software así diseñado, cuya finalidad es gestionar adecuadamente los recursos para que
realicen el trabajo que se les ha encomendado, y que, además, potencien las funciones de los
mismos, es lo que denominaremos sistema operativo, pudiéndolo definir como:
Objetivos.
Desde el punto de vista del usuario, el sistema operativo consiste
en una serie de programas y funciones que ocultan los detalles del
hardware, ofreciéndole una vía sencilla y flexible de acceso al
mismo, teniendo dos objetivos fundamentales:
Para ello, algunos sistemas proporcionan dos estados, llamados estado protegido (Sistema o
Kernel), en el cual se ejecuta el sistema operativo, y estado no protegido (Usuario o User), que es
el destinado a la ejecución de los programas de usuario y de aplicación. De esta manera se impide
que los programas de los usuarios puedan tener contacto directo con el hardware, o puedan forzar
un incorrecto funcionamiento del sistema.
Desde el punto de vista de un programa o usuario, la máquina física se convierte, gracias al sistema
operativo, en una máquina virtual, también conocida como máquina extendida, que presenta la
ventaja respecto a la física de ofrecer más funciones de las que normalmente soportaría esta
última. Desde el punto de vista del usuario, el sistema operativo proporciona servicios que no
están presentes en la máquina subyacente. Estos servicios incluyen las facilidades de carga y
ejecución de programas, interacción entre el usuario y los programas, permitiendo que se ejecuten
varios al mismo tiempo, gestión de la contabilidad para facturar los servicios y almacenamiento
de datos y programas.
Como resumen, podemos decir que el sistema operativo persigue alcanzar la mayor eficiencia
posible del hardware y facilitar el uso del mismo a los usuarios y a las aplicaciones.
Gestión de procesos. Hay que diferenciar entre los conceptos programa y proceso. Un
programa es un ente pasivo, que cuando se carga en memoria y comienza a ejecutarse, origina
uno o varios procesos.
Gestión de ficheros. Un fichero es una abstracción para definir una colección de información
no volátil. Su objetivo es proporcionar un modelo de trabajo sencillo con la información
almacenada en los dispositivos de almacenamiento. Estos ficheros deben tener espacio asignado
en los dispositivos, deben estar protegidos entre ellos, deben organizarse según unos
determinados esquemas… todo esto es la gestión de ficheros.
Gestión de los dispositivos de E/S. La gestión de la entrada salida (E/S) tiene como objetivo
proporcionar una interfaz de alto nivel de los dispositivos de E/S sencilla de utilizar.
Gestión de la red. El sistema operativo es el encargado de gestionar los distintos niveles de red,
los drivers (controladores) de los dispositivos involucrados en la red, los protocolos de
comunicación, las aplicaciones de red, etc.
Protección y seguridad. Mecanismos para permitir o denegar el acceso a los usuarios y a sus
procesos a determinados recursos (ficheros, dispositivos de E/S, red, etc.).
Para comprender mejor porqué existen dichas funciones y cuáles son sus objetivos, las iremos
estudiando mientras hacemos un breve recorrido a través de la historia de los ordenadores y la
informática, ya que nos ayudara a comprender mejor el concepto de sistema operativo.
Los objetivos fundamentales de los sistemas operativos respecto a conseguir la mayor eficiencia y
facilidad de uso posibles no son siempre compatibles, ya que cualquier sistema que deba ser
eficiente, normalmente no será fácil de usar, mientras que, si es fácil de usar, se deberá ofrecer a
los usuarios muchas facilidades y ayudas, incluyendo muchos pasos e información que para un
usuario experto no serían necesarias, lo que implica, obviamente, una pérdida de eficiencia.
Según su estructura
Si estudiamos los sistemas operativos atendiendo a su estructura interna, veremos que existen
dos tipos fundamentales, los sistemas de estructura monolítica y los sistemas de estructura
jerárquica.
En los sistemas operativos de estructura monolítica nos encontramos con que el sistema operativo
está formado por un único programa dividido en rutinas, en donde cualquier parte del sistema
operativo tiene los mismos privilegios que cualquier otra. Estos sistemas tienen la ventaja de ser
muy rápidos en su ejecución (solo hay que ejecutar un programa) pero cuentan con el
inconveniente de carecer de la flexibilidad suficiente para soportar diferentes ambientes de
trabajo o tipos de aplicaciones. Es por esto que estos sistemas operativos suelen ser hechos a
medida, para solucionar un problema en concreto y no para trabajar de forma generalista.
A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los sistemas,
se hizo necesaria una mayor organización del software, del sistema operativo, donde una parte
del sistema contenía partes más pequeñas y esto organizado en forma de niveles. Se dividió el
sistema operativo en pequeñas partes, de tal forma que cada una de ellas estuviera perfectamente
definida y con un claro interface con el resto de elementos.
Cada capa supervisa a la capa que tiene por encima, de modo que para que algo se ejecute en la
capa 5, por ejemplo, debe recibir permiso y supervisión de la capa 4, que esta supervisada por la
3, y así sucesivamente. Evidentemente cuanto más al “exterior” de la estructura se ejecute un
programa, más lento va a ser su funcionamiento ya que va a recibir un gran número de
supervisiones. Por el contrario, cuanto más en el interior se ejecute un proceso, mayor será su
velocidad.
En el centro de esta estructura se encuentra el Kernel o Núcleo del sistema operativo, que es su
parte más importante.
Monousuarios. Los sistemas operativos monousuarios son aquéllos que soportan a un usuario
a la vez, sin importar el número de procesadores que tenga la computadora o el número de
procesos o tareas que el usuario pueda ejecutar en un mismo instante de tiempo. Las
computadoras personales típicamente se han clasificado en esta sección.
Multiusuario. Los sistemas operativos multiusuario son capaces de dar servicio a más de un
usuario a la vez, ya sea por medio de varias terminales conectadas a la computadora o por medio
de sesiones remotas en una red de comunicaciones. No importa el número de procesadores en la
máquina ni el número de procesos que cada usuario puede ejecutar simultáneamente.
Monotareas. Los sistemas monotarea son aquellos que sólo permiten una tarea a la vez por
usuario. Puede darse el caso de un sistema multiusuario y monotarea, en el cual se admiten varios
usuarios al mismo tiempo, pero cada uno de ellos puede estar haciendo solo una tarea a la vez.
Multitareas. Un sistema operativo multitarea es aquél que le permite al usuario estar realizando
varias labores al mismo tiempo. Por ejemplo, puede estar editando el código fuente de un
programa durante su depuración mientras compila otro programa, a la vez que está recibiendo
correo electrónico en un proceso en background (segundo plano). Es común encontrar en ellos
interfaces gráficas orientadas al uso de menús y el ratón, lo cual permite un rápido intercambio
entre las tareas para el usuario, mejorando su productividad.
Cuando se trabaja de manera simétrica, los procesos o partes de ellos (threads, hebras o hilos)
son enviados indistintamente a cualquiera de los procesadores disponibles, teniendo una mejor
distribución y equilibrio en la carga de trabajo bajo este esquema. Se dice que un thread es la parte
activa en memoria y corriendo de un proceso, lo cual puede consistir de un área de memoria, un
conjunto de registros con valores específicos, la pila y otros valores de contexto. Es un sistema
mucho más difícil de construir, y es también tremendamente complicado añadir más
procesadores, pero tiene la gran ventaja de ser muchísimo más práctico, ya que cada procesador
tiene acceso a todos los recursos y las cargas de trabajo se pueden dividir de forma mucho más
rápida. Además, este sistema simétrico permite gestionar los recursos como la memoria de forma
compartida entre los distintos procesadores.
Prog A Prog B
Bloque 2 Fin
Bloque 3
Bloque 4
Fin
Monousuario
Por número de
usuarios
Multiusuario
Monotarea
Por número de
tareas
Multitarea
Uniproceso
Por el número de
Simetricos
procesadores
Multiproceso
Asimetricos
Según su función
Esta clasificación se refiere a la función que el sistema va a realizar. Generalmente se suele referir
a sistemas operativos de escritorio (clientes), o sistemas operativos de servidor (servidor), pero
dada la proliferación de multitud de variantes y sistemas de propósito específico se puede
completar con sistemas operativos embebidos (versiones CE) con infinidad de funciones
dependiendo del uso que se les vaya a dar.
Sistemas de Escritorio
Estos sistemas operativos se utilizan en los equipos personales, estaciones de trabajo, portátiles,
etc. También se suelen conocer como sistemas operativos clientes. Windows 7 por ejemplo, es un
sistema operativo de escritorio. Suelen ser sistemas operativos preparados para permitir un uso
fácil por parte del usuario, destacan en multimedia, juegos, sonido, ofimática, etc.
Hoy en día todos los sistemas operativos de escritorio son sistemas operativos de red también,
cosa que no ocurría anteriormente. Normalmente solemos llamar sistemas operativos en red a los
sistemas operativos que funcionan como servidores en una red, como es el caso del Windows
Server o Linux Server.
Sistemas Distribuidos
Un sistema distribuido se define como una colección de equipos informáticos separados
físicamente y conectados entre sí por una red de comunicaciones distribuida; cada máquina posee
sus componentes de hardware y software de modo que el usuario percibe que existe un solo
sistema (no necesita saber qué cosas están en qué máquinas). El usuario accede a los recursos
remotos de la misma manera en que accede a recursos locales ya que no percibe que existan varios
ordenadores, sino que solo es capaz de ver uno formado por todos los anteriores.
Una ventaja fundamental de los sistemas distribuidos es que permiten aumentar la potencia del
sistema informático, de modo que 100 ordenadores trabajando en conjunto, permiten formar un
único ordenador que sería 100 veces más potente que un ordenador convencional.
Los sistemas distribuidos son muy confiables, ya que si un componente del sistema se descompone
otro componente debe de ser capaz de reemplazarlo, esto se denomina Tolerancia a Fallos.
El tamaño de un sistema distribuido puede ser muy variado, ya sean decenas de hosts (red de área
local), centenas de hosts (red de área metropolitana), y miles o millones de hosts (Internet); esto
se denomina escalabilidad. De hecho, si un ordenador formando por un sistema distribuido se
queda “corto” para las necesidades de la empresa, basta con instalar más
La computación distribuida ha sido diseñada para resolver
problemas demasiado grandes para cualquier
supercomputadora y mainframe, mientras se mantiene la
flexibilidad de trabajar en múltiples problemas más
pequeños. Esta forma de computación se conoce como grid.
En un cluster normalmente todos los equipos están ubicados en una misma red de área local,
mientras que en un grid los equipos suelen estar distribuidos por todo el mundo.
Algunos sistemas operativos que permiten realizar clustering o grid, son; Amoeba, BProc,
DragonFly BSD, Génesis, Kerrighed, Mosix/OpenMosix, Nomad, OpenSSI, Plurid.
Un cluster que usamos habitualmente, es el que forma Google. Se estima que en 2010 usaba unos
450.000 ordenadores, distribuidos en varias sedes por todo el mundo y formando clusters en cada
una de dichas sedes.
Cada cluster de Google está formado por miles de ordenadores y en los momentos en que se
detecta que el sistema está llegando al límite de su capacidad, se instalan cientos de ordenadores
más en pocos minutos, aumentado así la potencia de cada cluster. Estos equipos normalmente
con ordenadores x86 como los que solemos usar nosotros, corriendo versiones especiales de
Linux, modificadas por la propia Google para que permitan la formación de estos clusters. (Buscar
en google “google centro de datos” para ver algunas informaciones sobre ellos).
Según su disponibilidad
Dividimos aquí los sistemas operativos por la forma en que se ponen disponibles a los usuarios.
Sistemas Operativos Propietarios
Se les denomina propietarios porque son sistemas propiedad de la empresa que los desarrolla. La
empresa no vende en realidad el sistema operativo, sino una licencia de uso del mismo. No se
tiene acceso al código fuente del sistema, o por lo menos, no se tiene permiso para modificarlo
libremente.
También está prohibido distribuir estos sistemas, o usarlos de formas no autorizadas por la
empresa desarrolladora. Toda la familia Windows es un claro ejemplo de sistema operativo
propietario.
No hay que confundir el hecho de que sean libres con el hecho de que sean gratuitos.
Posteriormente trataremos en profundidad el tema de las licencias de software.
En general, tanto los sistemas operativos como las aplicaciones normales, pueden definirse según
su disponibilidad en alguno de estos apartados:
Gratuitas
(freeware)
Por su coste
económico
Comerciales
Libres
Tipos de Por su propiedad
aplicaciones y S.O. intelectual
propietarias
Abiertas (Open
Source)
Por el acceso al
código fuente
Cerradas o
privativas
OEM
OEM (abreviatura del inglés original equipment manufacturer, en español sería fabricante de
equipamiento original). Este tipo de licencias se las otorga el desarrollador del sistema operativo
al fabricante de hardware, de modo que cuando nosotros compramos uno de sus productos, este
viene con una licencia de uso del sistema operativo de tipo OEM. La particularidad de este tipo de
licencias es el que el sistema operativo viene preparado para ese hardware específicamente, de
modo que no tenemos realmente una licencia de uso del sistema operativo, sino una licencia de
uso del sistema operativo únicamente para ese hardware en concreto.
Estas licencias son las más económicas, y suelen poseer restricciones especiales, aparte de venir
sin manuales ni caja.
Retail
Es la licencia que compramos directamente del desarrollador. Somos propietarios de la licencia,
podemos instarlo en cualquier tipo de hardware compatible, podemos revender la licencia o
cederla, etc.
Normalmente solo permiten su uso en una sola maquina a la vez. Vienen con su caja y manuales.
En las licencias de tipo retail, normalmente podemos elegir entre una licencia completa, o una
licencia de actualización, que permite actualizar un sistema anterior al nuevo, por un coste algo
más reducido.
Son las licencias más caras evidentemente, aunque son bastante más económicas que comprar
cada una de las licencias individualmente.
El proceso de instalación se verá de forma práctica por cada uno de los sistemas operativos que
utilizaremos, pautando una serie de pasos e indicaciones básicas y atendiendo a la normativa legal
existente en este momento.
Será por tanto importante conocer la normativa sobre protección de datos existente en España
(LOPD), así como la aplicación del nuevo RGPD, que afecta a la implantación y explotación de
sistemas operativos y de sistemas informáticos en general.
Estas pautas de instalación y explotación serán explicadas y analizadas en el aula durante las
sesiones dedicadas a la instalación de los diferentes sistemas operativos, por lo que no se van a
desarrollar en este documento.
Existen dos tipos principales de controladores de dispositivos: los genéricos y los específicos. Si
bien la mayoría de los sistemas operativos moderno cuentan con controladores genéricos para la
mayoría de los dispositivos más habituales y hacen que los dispositivos funcionen, no siempre son
los óptimos o más adecuados o limitan las posibles funcionalidades de dichos dispositivos.
Los controladores de dispositivos específicos suelen estar desarrollados por los propios
fabricantes de los dispositivos y están
optimizados para obtener todas las
funcionalidades y el máximo rendimiento
de estos dispositivos.
En el caso de sistemas operativos libres del tipo GNU/Linux, cada distribución dispondrá (o no) de
su propia herramienta para conocer el estado de los dispositivos y los controladores de estos. En
cualquier caso, cabe destacar como una posible herramienta denominada HardwareMap que
resulta muy similar en uso a l existente para Windows que hemos visto anteriormente.
Gestores de arranque.
Los gestores de arranque son pequeñas aplicaciones que permiten seleccionar la forma en la que
los sistemas operativos se cargar al iniciar el equipo.
Se trata de una aplicación propia de sistemas operativos GNU/Linux y Unix que se carga tras el
proceso POST de inicio del equipo y permite seleccionar el tipo de arranque del sistema operativo,
o en caso de tener más de un sistema operativo instalado, nos permitirá elegir cual de ellos
queremos que cargue.
En equipos con un solo sistema operativo, el gestor de arranque nos permitirá pasar determinados
parámetros al inicio o carga del sistema operativos, como el nivel de ejecución, u opciones de
depuración o restauración y recuperación del sistema.
Como curiosidad, esta posibilidad de seleccionar el nivel de ejecución del sistema operativo
durante el inicio en el propio gestor de arranque permite en algunas distribuciones arrancar como
superusuario o root sin necesidad de contraseña, lo que constituye en terrible fallo de seguridad
durante el despliegue del sistema operativo.
Para solventar este problema se debe siempre proteger el acceso al gestor de arranque con una
contraseña, de modo que todos estos parámetros adicionales de carga del sistema operativo
queden de esta forma “blindados” para cualquier posible usuario que no sea el propio
administrador o superusuario (root).
Existen varios gestores de arranque diferentes, pero hay dos que son los más habituales: LiLo y
Grub.
LiLo es muy antiguo y prácticamente está obsoleto, por lo que difícilmente lo vamos a encontrar
en sistemas operativos modernos, mientras que Grub se puede considerar como el estándar y nos
lo vamos a encontrar prácticamente en todas las distribuciones GNU/Linux más habituales
Máquinas virtuales.
Ya vimos en el tema 1 de Sistemas Operativos de 1º de ASIR como uno de los objetivos de los
sistemas operativos consiste en la abstracción, es decir, abstraer o separar a los programas en
funcionamiento del hardware del equipo. Decíamos entonces que los sistemas operativos
conseguían realizar este objetivo creando una serie de máquinas virtuales en las que se
ejecutaban las aplicaciones.
APLICACIÓN
APLICACIÓN
HARDWARE
MÁQUINA VIRTUAL
Cada una de estas máquinas virtuales generadas por el sistema operativo ofrece a las aplicaciones
una serie de recursos virtuales (espacio de almacenamiento, impresora, video, etc.) de modo que
un error en la aplicación no afecte al hardware real del sistema informático, sino a este hardware
virtual. Sin embargo, estas máquinas virtuales creadas por el sistema operativo no se comportan
realmente como máquinas completas, ya que solo ofrecen a las aplicaciones algunos recursos, no
replican todos los recursos existentes en una máquina real.
El concepto de virtualización nace cuando a alguien se le ocurre ir un paso más allá, crear una
máquina virtual que replique completamente a una máquina real, de modo que sobre dicha
máquina ficticia podamos correr un sistema operativo completo, el cual sería “engañado” (*),
ya que creería que se está ejecutando sobre una máquina normal cuando en realidad se está
ejecutando sobre una máquina virtual.
SISTEMA
OPERATIVO *
MÁQUINA VIRTUAL
SISTEMA APLICACIÓN DE
OPERATIVO VIRTUALIZACIÓN
HARDWARE SISTEMA
OPERATIVO *
MÁQUINA VIRTUAL
A partir de este momento, siempre que hablemos de máquinas virtuales estaremos hablando
de este tipo, es decir, máquinas virtuales creadas no por el sistema operativo en sí, sino por un
software especializado en crear máquinas ficticias capaces de comportarse como máquinas
reales a fin de montar sobre ellas sistemas operativos. Este tipo de software se conoce como
aplicaciones de virtualización.
Es decir, el anfitrión (también conocido como host) es que alberga al invitado (también conocido
como guest). Un anfitrión puede tener varios invitados, no está limitado solo a uno.
Del mismo modo, por mucho que el anfitrión quiera, hay un límite en el número de invitados
que puede albergar su casa, que son los metros cuadrados con los que cuente. Volviendo al
ámbito informático, podemos decir que a nivel físico solo tenemos un ordenador, pero a nivel
lógico podemos tener varios ordenadores trabajando a la vez.
Requisitos Hardware
Para construir la máquina virtual tenemos que asignar determinados recursos de hardware,
como son espacio en disco duro, memoria RAM, número de procesadores, etc. que el anfitrión
cederá o compartirá con el invitado.
Cuando tengamos nuestra máquina virtual el siguiente paso que debemos hacer consistirá en
instalar un sistema operativo, ya sea Windows o Linux y funcionará con las mismas reglas que lo
hace en un ordenador normal, actualizaciones, licencias, instalación de software adicional, etc.
Realizar una virtualización completa mediante software es un proceso engorroso y lento, por
eso los fabricantes de microprocesadores han incorporado en algunos de sus productos
soluciones hardware especializadas en virtualización que han conseguido que la velocidad de las
soluciones virtuales aumente considerablemente, siendo esta una de las principales causas del
gran empuje que ha recibido la virtualización últimamente.
VT Intel (VTI)
La extensión de Intel para virtualización de la arquitectura de 32 y 64 bits se llama IVT (Intel
Virtualization Technology). Está disponible para todos los procesadores de última generación de
Intel (Quad Core, I3, I5, I7) y en algunos modelos de los procesadores anteriores. Si queremos
ver si nuestro procesador cuenta con estas extensiones VT que nos permiten trabajar sin
problemas con la virtualización, podemos o bien instalar un software en Windows que nos
informe de ello o bien mirar en la página de Intel donde viene la lista de procesadores con VT
incorporado.
Evidentemente todos los micros AMD de nueva generación también incluyen estas extensiones.
El mismo software que nos daba información sobre micros Intel evidentemente también
funciona para micros AMD.
El ejemplo más conocido actualmente de este tipo de máquina virtual es la máquina virtual de
Java.
Técnicas de Virtualización
Hoy en día se usan 3 técnicas de virtualización distintas:
• Virtualización nativa.
• Virtualización no nativa.
• Paravirtualización
También veremos cómo existe una variedad de la virtualización nativa conocida como
paravirtualización.
Virtualización Nativa
Cada máquina virtual puede ejecutar cualquier sistema operativo soportado por el hardware
real del sistema. Así los usuarios pueden ejecutar dos o más sistemas operativos distintos
simultáneamente en computadoras “privadas” virtuales, pero siempre que dichos sistemas
operativos puedan funcionar en la arquitectura hardware de la máquina física.
Así, por ejemplo, en un PC (arquitectura x86) podemos instalar máquinas virtuales para correr
Windows, Linux, MacOS, etc. Sin embargo, no podríamos correr sistemas operativos que no
puedan funcionar en arquitecturas x86 como sería por ejemplo un IBM AIX o el sistema
operativo de una XBOX.
Esta técnica de virtualización es la más usada, y la única que vamos a tratar nosotros en este
curso.
Virtualización No Nativa
Las máquinas virtuales también pueden actuar como emuladores de hardware, permitiendo que
aplicaciones y sistemas operativos concebidos para otras arquitecturas de procesador se puedan
ejecutar sobre un hardware que en teoría no soportan.
Algunas máquinas virtuales que usan esta técnica, aprovechan para emular un hardware que
sólo existe como una especificación, es decir, un hardware común teórico. Esta técnica la utiliza
por ejemplo la máquina virtual de Java, permitiendo así que el mismo programa se pueda
ejecutar en un PC, en un móvil o en una consola de juegos. La misma técnica utiliza el motor de
la máquina virtual de .NET.
Paravirtualización
Es una variante de la virtualización nativa. Consiste en permitir que los sistemas operativos que
corren en las máquinas virtuales ataquen en algunos casos directamente el hardware del
sistema, de modo que las instrucciones llegan directamente al hardware de nuestra maquina
real o anfitrión, sin tener que ser traducidas y gestionadas por el hipervisor. Esto conlleva que
esta paravirtualización es más rápida y eficiente.
Evidentemente esto lo podemos hacer si el SO tiene una licencia de software abierto, como Linux
por ejemplo, pero es imposible realizarlo con SO de licencias cerradas como Windows o Mac OS,
lo que implica que en las máquinas virtuales que se monten con este sistema de
paravirtualización no podremos emular ningún sistema operativo comercial cerrado. En la
actualidad los SO que han sido modificados son NetBSD, Linux, FreeBSD y Plan 9 entre otros.
Ventajas de la Virtualización
Hemos visto algunos conceptos de la virtualización, vamos a hablar ahora de las ventajas de la
virtualización, y por qué se ha producido en los últimos años el despegue definitivo de este tipo
de tecnología. Aunque ya hacía bastante tiempo que la virtualización se usaba, ahora se ha
producido la implantación definitiva en muchas empresas, sobre todo de gran tamaño.
Y la adopción por gran parte de las empresas se debe sin lugar a dudas a las ventajas que este
tipo de tecnología ofrece como puede ser el ahorro de costes, la posibilidad de crear entornos
de pruebas, entornos aislados seguros u olvidarnos de los problemas de compatibilidad de los
programas cuando no trabajamos con Windows. Vamos a ver un poco más en detalle estos
puntos
• Ahorro de costes: es una de las cuestiones por las cuales más se han interesado las
empresas en la virtualización, puesto que donde antes necesitaban dos máquinas ahora
puede utilizar sólo una. Pero no sólo queda aquí, sino que además podemos ahorrar
mucho tiempo gracias a la facilidad de administración o de clonación de los discos duros
virtuales, que se realizarán como cualquier otro archivo, con las ventajas que esto tiene
asociado.
• Entornos de prueba: si sois de los que no pueden esperar a que salga la versión definitiva
de un programa y estamos probando versiones beta o instalando programas de software
que pensamos que nos serán útiles, tal vez nos interesa virtualizar nuestro propio
sistema para realizar todas estas instalaciones en el sistema virtual y dejar nuestro
sistema anfitrión “limpio”, instalando sólo aquello que definitivamente vamos a usar.
• Entornos aislados de seguridad: si estáis obsesionados con la seguridad seguro que os
interesa crear un sistema aislado donde las únicas conexiones con internet se harán en
entornos seguros y la navegación se realizará con mucho más cuidado. Kaspersky ha
presentado una solución de este tipo con su última versión de su antivirus para crear
este tipo de entornos aislados.
• Compatibilidad de programas: cuando utilizas un sistema operativo Linux o Mac a veces
no es posible encontrar el programa que necesitamos para estas plataformas, por lo que
o tenemos instalado Windows o nos buscamos otra alternativa. Afortunadamente este
tipo de cosas cada vez pasan menos, pero continúan pasando, con lo cual tener
virtualizado Windows dentro de nuestro Mac o Linux nos puede ahorrar una buena
cantidad de problemas y tiempo buscando el equivalente de un programa para estos
sistemas.
• Rápida incorporación de nuevos recursos para los servidores virtualizados, es muy fácil
asignar hardware nuevo a una máquina virtual.
• Reducción de los costes de espacio y consumo energético necesario de forma
proporcional al índice de consolidación logrado (Estimación media 10:1).
• Administración global centralizada y simplificada.
• Nos permite gestionar nuestro CPD como un pool de recursos o agrupación de toda la
capacidad de procesamiento, memoria, red y almacenamiento disponible en nuestra
infraestructura. Se calcula que un servidor con 1 solo sistema operativo deja sin usar un
70% de su capacidad.
• Aislamiento, un fallo general de sistema de una máquina virtual no afecta al resto de
máquinas virtuales. Un fallo en la máquina física se solventa sustituyendo la máquina
completa, las máquinas virtuales se pueden montar en cuestión de minutos sobre esta
nueva máquina, por lo que la empresa no queda paralizada mientras se procede a la
instalación manual de todos los sistemas.
• Reduce los tiempos de parada necesarios. Migración en caliente de máquinas virtuales
(sin pérdida de servicio) de un servidor físico a otro, eliminando la necesidad de paradas
planificadas por mantenimiento de los servidores físicos.
• Balanceo dinámico de máquinas virtuales entre los servidores físicos que componen el
pool de recursos, garantizando que cada máquina virtual ejecute en el servidor físico
más adecuado y proporcionando un consumo de recursos homogéneo y óptimo en toda
la infraestructura.
• Posibilidad de migración de toda nuestra infraestructura de una localización a otra de
forma muy simple.
• Simplificación de la administración de sistemas, posibilidad de que el administrador
cuente con toda la infraestructura clonada para fines de prueba y aprendizaje.
Soluciones de Virtualización
Existen varios fabricantes que han desarrollado software especializado en virtualizar sistemas.
Aquí vamos a ver monitores (hipervisores) tanto de tipo 1 como de tipo 2.
Vamos a ver cómo podemos crear una máquina virtual e instalar en ella un sistema operativo
completo utilizando VirtualBox. Para ello utilizaremos como sistema operativo anfitrión un
equipo que tiene instalado Ubuntu 9.04 y como sistema invitado Windows 7. Para Windows 7 le
cederemos 1 GB de memoria RAM y nos pedirá durante la instalación un espacio para la
instalación recomendado de 20 GB.
Para hacerlo aún más sencillo instalaremos la versión de Virtual Box que tenemos en el gestor
de paquetes Synaptic de Ubuntu.
Una vez instalado VirtualBox comenzaremos por crear una máquina virtual, para ello
simplemente bastará con pulsar la opción del menú nueva y comenzaremos con nuestra
selección de las opciones en la que nos guiará un asistente para creación de máquinas virtuales.
En primer lugar, debemos seleccionar el tipo de sistema operativo, Windows, Linux, Solaris, etc.
después pasaremos a seleccionar cantidad de memoria y disco duro.
En este último caso se nos abrirá un nuevo asistente para seleccionar la cantidad de espacio que
cedemos al disco duro y en que directorio se alojará. En la elección del hardware siempre
tendremos unas recomendaciones y en caso de equivocarnos una vez creada la máquina virtual
podemos modificar sus recursos. En este caso como hemos indicado antes, nos recomienda
ceder un espacio de 20 GB para crear el disco duro virtual. El disco duro virtual lo podemos alojar
en nuestro disco duro, en uno externo o en una unidad de red, y puede ser de tamaño fijo o de
tamaño variable.
Ya tenemos nuestra máquina virtual creada, que es lo mismo que si hubiéramos montado un
ordenador desde cero, ahora tenemos que instalar el sistema operativo. Esto lo podemos hacer
a la manera tradicional, introduciendo un CD de instalación en nuestro lector que reconocerá
perfectamente y al iniciar la máquina comenzará la instalación. La otra opción es seleccionar una
imagen iso de nuestro sistema operativo que tengamos guardada en nuestro disco duro. Es muy
sencillo puesto que nos aparecerá un asistente de primera ejecución que nos permitirá elegir
como queremos instalar.
Si lo hemos hecho todo bien, al finalizar el asistente comenzará la instalación de nuestro sistema
operativo guest. Las instalaciones en máquinas virtuales se realizan de la forma habitual así que
hay que tener preparada la licencia del sistema operativo, en nuestro caso Windows 7. Lo
primero que nos pide es seleccionar los idiomas. Marcamos con el ratón las opciones y una vez
seleccionadas veremos que el ratón se encuentra atrapado en la ventana de instalación de
Windows 7 y no se puede desplazar hacia el resto de nuestro escritorio. Para ello tenemos que
pulsar la tecla Control de la derecha del teclado y podremos mover el ratón por el resto de
nuestro escritorio con normalidad.
Una vez concluida la instalación del sistema operativo y puesto en marcha nuestra máquina
virtual vamos a proceder a instalar unas cuantas opciones que mejorarán nuestra experiencia
con la virtualización. En primer lugar, habilitaremos que parte de la memoria le destinamos al
vídeo y habilitaremos la aceleración 3D. Después en al apartado de sonido seleccionamos como
controlador Alsa y lo habilitamos. Por último, tendríamos que asignar que carpetas
compartiremos entre ambos sistemas.
Por último, es importante instalar las Guest Addition de VirtualBox, que nos permitirán realizar
una transición entre equipo invitado y anfitrión sin tener que estar pulsando la tecla Control
para cambiar la opción de usar teclado y ratón entre sistemas anfitrión e invitado. Además nos
posibilita la opción de cortar y pegar texto entre documentos de los distintos sistemas y varias
mejoras gráficas bastante apreciables.
Una vez finalizado ya tenéis vuestro sistema virtualizado para poder trabajar. La ventaja de
VirtualBox es sobre todo su sencillez. Crear y administrar una máquina virtual es muy sencillo.
Su principal desventaja respecto a otras soluciones es el rendimiento y la falta de opciones
avanzadas.
Al contrario que VirtualBox, que es un único programa, VMware presenta varias soluciones
para la virtualización, enumeremos algunas de ellas (las más importantes, existen bastantes
más):
• VMware Converter: esta herramienta nos permite virtualizar nuestro propio equipo o
hacerlo con cualquier otro de nuestra red. Muy interesante cuando se realiza una
migración a sistemas virtuales y no se quiere perder ninguna funcionalidad. Además,
nos permite elegir que particiones queremos virtualizar, permitiendo hacerlo con la
partición del sistema y no necesariamente con los datos. GRATUITO.
• VMware player: es un hipervisor de tipo 2 de virtualización completa o nativa al igual
que VirtualBox. Nos permite crear y ejecutar máquinas virtuales. Es ligero y tiene un
rendimiento estupendo. Reconoce sin problemas todos los USB y permite utilizarlos de
forma sencilla, así como compartir carpetas de una forma muy cómoda. GRATUITO.
• VMware Horizon con View: Parecido al VMware player, pero sin la posibilidad de crear
máquinas virtuales. Está pensado para distribuir escritorios y aplicaciones virtualizados
y remotos a través de una plataforma única. DE PAGO.
• VMware Workstation: es un hipervisor de tipo 2 de virtualización completa o nativa. Es
una versión más potente del VMware player, añadiendo funciones como son la toma de
instantáneas de las máquinas virtuales (esto viene incluido por defecto en VirtualBox,
clonado en caliente de máquinas virtuales, posibilidad de crear grupos de máquinas
virtuales que trabajen en conjunto, etc.). DE PAGO.
• VMware ThinApp: no es un hipervisor, sino una máquina virtual de proceso. Sirve para
que preparemos una aplicación de modo que funcione en cualquier ordenador,
independientemente del sistema operativo que dicho ordenador use. Es un software de
pago.
• VMware Fusión: es un hipervisor de tipo 2 para sistemas operativos Mac. Es un
software de pago. El equivalente del Workstation para Apple.
• VMware ESXi: es un hipervisor de tipo 1 de virtualización
completa o nativa. VMware ESXi se comporta como si fuera
un sistema operativo en sí mismo y hace innecesario tener
instalado en el servidor ningún sistema operativo para que
haga las funciones de anfitrión. GRATUITO.
• VMware vSphere Client: Es un software que nos permite gestionar los servidores ESXi
de nuestra empresa, de forma centralizada. Se instala en una maquina cliente cualquiera
(el portátil del Administrador, por ejemplo). Para instalaciones no muy grandes es
suficiente. GRATUITO.
• VMware vCenter server: Es un software parecido a vSphere Client, pero mucho más
poderoso. Tiene más opciones a la hora de controlar los servidores ESXi y las máquinas
virtuales que corren en ellos, permitiendo utilizar conceptos como vMotion, HA, DRS,
etc. Debe instalarse en su propio servidor ya sea Windows o Linux. DE PAGO.
Virtual PC está totalmente integrado en el sistema operativo anfitrión de modo que cuando se
instala nos crea una carpeta en Mis Documentos llamada Mis Equipos Virtuales, donde por
defecto irán los archivos de las máquinas virtuales que creamos. A la hora de crear una nueva
máquina virtual nos aparecerá un Asistente para la creación de un nuevo equipo virtual, que nos
guiará para elegir las opciones básicas a la hora de crear una nueva máquina virtual. Todas estas
opciones las podremos modificar posteriormente desde la consola de Virtual PC.
Este hipervisor de tipo 2 es el más limitado de los que hemos visto hasta ahora, aunque cumple
con su cometido de permitir instalar una máquina virtual Windows de forma fácil. Como
curiosidad, indicar que Windows 7 en sus versiones profesional y ultimate, cuenta con un modo
XP, que en realidad es el propio Virtual PC corriendo una máquina virtual en la que se encuentra
instalado Windows XP.
Para instalarlo lo primero que debemos saber es si nuestro procesador es compatible. Para ello
introduciremos los siguientes comandos en Linux:
Una vez realizado todos estos pasos tendremos que reiniciar la sesión, dependiendo de la
versión de Ubuntu que estemos utilizando. Si todo ha ido bien, tendremos una nueva entrada
en nuestro menú Aplicaciones/Herramientas del Sistema/Administrador de Máquina Virtual
desde donde podemos comenzar la instalación de nuestras máquinas virtuales.
KVM es un software que ofrece un buen rendimiento en máquinas virtuales, pero que presenta
los problemas de no ser multiplataforma (solo funciona en Linux) y de una interfaz algo más
engorrosa que la de las otras soluciones propuestas. A su favor indicar que es código libre, por
lo que su uso es gratuito y existe una gran comunidad de usuarios detrás.
Virtualización con XenServer
Xen es un hipervisor de tipo 1 de máquina virtual de
código abierto desarrollado inicialmente por la
Universidad de Cambridge, que también permite
utilizar directamente la paravirtualización.
Intel modificó Xen para permitir que utilizara las técnicas de virtualización que incluyen sus
micros (VT) para poder virtualizar máquinas de forma normal, sin tener que usar la
paravirtualización. Posteriormente también se añadieron las instrucciones para virtualizar
usando las técnicas de AMD. Con estos cambios, Xen se comporta como un hypermonitor de
tipo 2 de la misma forma que lo hace VMware por ejemplo.
Las máquinas virtuales Xen pueden ser migradas en caliente entre equipos físicos sin pararlos.
Durante este proceso, la memoria de la máquina virtual es copiada iterativamente al destino sin
detener su ejecución. Una parada muy breve de alrededor de 60 a 300 ms es necesaria para
realizar la sincronización final antes de que la máquina virtual comience a ejecutarse en su
destino final. Una tecnología similar es utilizada para suspender las máquinas virtuales a disco y
cambiar a otra máquina virtual.
El 2007 Citrix adquiere XenSource, por un valor de 500 millones de dólares estadounidenses.
Esta empresa ha lanzado recientemente XenServer 4.1, habiendo un producto gratuito, el
XenServer Express Edition, aunque solo puede soportar cuatro máquinas virtuales.
El Kernel de Linux desde su versión 2.6.23 incluye una serie de técnicas que permiten ejecutar
Xen de forma rápida y eficaz, algo parecida a lo que vimos anteriormente con KVM.
Proxmox permite tener muchas características de vmWare ESXi como migración en cliente de
máquinas virtuales, alta disponibilidad, redes avanzadas, almacenamiento flexible, plantillas de
S.O., copias de seguridad automáticas, etc.
Proxmox es mucho más “engorroso” de instalar, configurar y gestionar que vmWare ESXi pero
tiene la ventaja por otro lado de ser software libre y gratuito. Uno debe sopesar bien las
ventajas y desventajas de usar una herramienta de este tipo.
.
La versión incluida conjuntamente con Windows 2008 R2 server se activa y administra como un
“rol” más del servidor, al igual que podemos activar el rol de servidor de ficheros o el rol de
controlador de dominio.
Hyper-V trabaja mediante lo que denomina particiones. Una partición es un contenedor lógico,
creada por el hipervisor, en el que se ejecuta un sistema operativo virtualizado.
En general, Hyper-V es un gran gestor de virtualización que permite realizar todo lo que las
demás soluciones realizan, aunque su soporte de sistemas operativos invitados no Windows es
limitado. En sus últimas versiones, también permite trabajar con contenedores y parece que se
esta abriendo algo más a la competencia.
Esta captura de pantalla que vemos aquí pertenece a la pantalla principal de VMware
Workstation 10. Las opciones principales que aparecen en su menú son:
• Create a New Virtual Machine: Nos permite crear una nueva máquina
virtual.
• Open a Virtual Machine: Nos permite abrir una máquina virtual que se
haya creado anteriormente.
• Connect to a Remote Server: Nos permite conectar VMware a un servidor
remoto VMware de modo que podamos abrir una máquina virtual que se
encuentre instalada en dicho servidor. Los servidores remotos pueden
correr VMware Workstation, ESC, o vCenter Server.
• Virtualize a Physical Machine: Crea una nueva máquina virtual a partir de
una máquina física. Para que esta opción funcione, el programa debe
bajarse el VMware vCenter converter. (Esta opción no la veremos en el
VMware 12, aunque si aparece en versiones anteriores.
• Connect to VMware vCloud Air. Nos permite conectarnos a una nube
propia de VMware que se puede montar en una instalación vSphere.
Posteriormente se nos pedirá que escojamos desde donde queremos instalar el sistema
operativo en la nueva máquina:
Si escogemos la opción de utilizar una imagen ISO (que suele ser la más
aconsejable), veremos cómo VMware Workstation tiene la capacidad de reconocer
automáticamente el sistema operativo que deseamos instalar, y en caso de que se
reconozca activa una característica de instalación simple (Easy
Install).
Esta opción Easy Install permite que VMware instale el sistema operativo en la
máquina virtual de una forma muy rápida y cómoda, ya que nos pedirá al principio
todas las preguntas que son necesarias para instalar el sistema, y posteriormente
instalará el sistema y el mismo responderá a las preguntas del sistema operativo
cuando vaya siendo necesario, de esta forma se puede realizar la instalación de
forma desatendida.
Además, VMware optimiza varios pasos de la instalación para que esta sea mucho más fluida.
Al continuar con la instalación veremos cómo VMware nos pregunta que nombre
vamos a darle a la máquina virtual, y donde queremos almacenar dicha máquina.
Es muy importante indicar un directorio de nuestro sistema que luego seamos
capaces de recordar. Se recomienda crear un sitio especial en nuestro disco duro,
y allí almacenar todas nuestras máquinas virtuales, de forma organizada.
Posteriormente Workstation nos pedirá un tamaño para el disco duro virtual que
se le va a asignar a nuestra máquina. Hay que tener en cuenta que en nuestro
sistema operativo host se va a crear un fichero representando al disco duro virtual,
y que dicho fichero como MAXIMO tendrá el tamaño que aquí le indiquemos. Así,
si indicamos que queramos crear un disco duro de 60 GB, el fichero que almacena
dicho duro virtual podrá tener como máximo un tamaño de 60 GB. Si en el disco
duro virtual solo estamos utilizando 10 GB de espacio, el tamaño del fichero en el
SO host será de 10 GB, y podrá ir aumentando hasta el límite que aquí le
indiquemos.
Esta otra opción nos permite indicar si queremos que el fichero de imagen del disco
duro virtual se almacene como un único fichero (single file) o bien que se vayan
creando varios ficheros de menor tamaño. Esta segunda opción no es
recomendable, ya que baja el rendimiento de la máquina virtual.
Por otro lado, si creamos un disco duro virtual por ejemplo de 100 GB en un único
fichero es evidente que tendremos algunos problemas a la hora de realizarle una
copia, para moverlo por ejemplo a otro equipo, mientras que si estuviera dividido
en 50 ficheros de 2 GB sería más simple realizar dicho movimiento.
Una vez pasada esta pantalla, VMware Workstation nos presentará un resumen de
todas las opciones que le hemos indicado, y posteriormente iniciará la máquina
virtual, procediendo a instalar el sistema operativo indicado.
La mayoría de opciones son fáciles de entender. Hay que tener en cuenta que la
memoria RAM que les asignemos a los invitados, se restará de la memoria RAM
disponible para el host. Hay que llegar a un compromiso, de modo que los invitados
tengan una memoria aceptable, sin dejar sin memoria al host. De hecho, si notamos
que todo nos funciona muy lento a la hora de usar las máquinas virtuales lo que os
recomiendo es bajar la memoria asignada a las mismas, ya que en la mayoría de las
ocasiones si el sistema se resiente es debido a que el anfitrión se está quedando sin
memoria.
Una máquina virtual Windows puede correr generalmente con unos 300 MB de
RAM sin problemas (256 como mínimo práctico). Para el host nunca deberíamos
dejar menos de 512 MB de RAM. Un Linux dependiendo de lo que queremos hacer
con él, puede variar sus requisitos desde unos 128 MB de RAM hasta unos 512 MB.
En la configuración de discos duros, podremos variar el tamaño del disco duro que
se creó al crear la MV, pero esto no significa que se aumente el tamaño de la
partición que se creó al inicio.
• Bridged
• NAT
• Host only
• Custom
• LAN Segment
Configuración en modo Brisge
MAQUINA VIRTUAL. CONFIGURACIÓN DE RED: BRIDGED.
192.168.11.21 192.168.11.201
TARJETA DE
RED VIRTUAL
(Bridged)
RED DE AREA LOCAL
A todos los efectos, nuestra máquina virtual se transforma en nuestra red en una
maquina real, de modo que puede conectarse sin ningún problema a cualquier equipo
de la LAN, incluido el equipo host.
Una cuestión que nos puede dar problemas es controlar con cuál de las tarjetas de
red del host se va a realizar el puente, en caso de que contemos con varias tarjetas
de red. Esto lo podemos controlar desde el “Virtual Network Editor” que podemos
encontrar en el menú principal de VMware.
Desde aquí, como vemos en la captura anterior podemos cambiar con que tarjeta
de red se realiza el Bridged. Normalmente podemos dejarlo en automático, pero si
cambiamos frecuentemente en nuestra máquina física entre las tarjetas de red
(caso típico en un portátil) es posible que tengamos problemas y tengamos que
configurar directamente el puente.
Esto permite que la máquina virtual tenga conexión a Internet sin que tengamos
que realizar ningún tipo de configuración adicional en la MV ni en el host. Hay que
tener claro que no es posible realizar conexiones ni con el sistema operativo host
ni con otras máquinas virtuales, nuestra MV pasa a estar incomunicada detrás del
router virtual, y solo tiene la posibilidad de conectarse a Internet.
MAQUINA VIRTUAL. CONFIGURACIÓN DE RED: NAT.
10.10.1.1
ROUTER
VIRT.
HOST
Los segmentos de red los podemos crear desde el mismo botón “LAN Segments”
que vemos en la pantalla de configuración de la red. Podemos crear tantos
segmentos como queramos, y no importa el nombre que les pongamos.
Configuración Host-only
Mediante esta configuración creamos una conexión de red directa entre el host y
una máquina virtual. Cada máquina virtual que configuremos en host only podrá
conectarse con el host y con las otras máquinas virtuales, pero no podrá conectarse
ni con la red externa ni con Internet. Es como si estableciéramos un lan segment
directo entre el anfitrión (host) y los SO de las máquinas virtuales (guest).
VMWare Tools
Las VMware tools son un conjunto de utilidades que mejora el rendimiento del sistema
operativo huésped de la máquina virtual. Sin instalar las VMware Tools, el rendimiento del
huésped carece de varias funcionalidades importantes. La instalación de VMware Tools elimina
o mejora los siguientes problemas:
Las VMware tools suelen venir como una imagen ISO de CD que se incluye en el propio paquete
de VMware. Existe una imagen ISO distinta para cada tipo de sistema operativo huésped, así
que encontraremos una imagen para Windows, otra para Linux, etc.
La forma de instalar estas VMware tools difieren según el sistema operativo huésped y del
proceso en el que hayamos instalado dicho SO.
Si al crear la máquina virtual permitimos que VMware utilizara el sistema de “Easy Install” que
vimos anteriormente, lo primero que hará VMware cuando se inicie por primera vez el SO será
instalar automáticamente estas herramientas.
Si queremos instalar las VMware tools en otros sistemas operativos distintos de Windows,
tendremos normalmente que montar el CD, descomprimir los ficheros en el disco duro, y lanzar
un script de instalación desde el símbolo de comandos.
CONTENEDORES.
Contenedores
Un contenedor Linux (LXC) es una tecnología de virtualización ligera de código abierto que solo
funciona en sistemas GNU/Linux. Esta virtualización se consigue a nivel de kernel y permite
correr varios contenedores al mismo tiempo en el mismo host.
La gran diferencia entre una máquina virtual y un contenedor es que mientras la máquina virtual
nos permite ejecutar un SO completo, un contenedor está diseñado para ejecutar únicamente
una serie de procesos limitados, como por ejemplo una aplicación, un servidor web, etc.
Los contenedores (Linux Containers, LXC) se conocen en Linux desde hace mucho tiempo, pero
una compañía (Docker) ha refinado esta tecnología simplificándola y reduciendo la carga que
cada uno de estos contenedores representan para el sistema host.
El problema de las máquinas virtuales es que existe mucho “overhead”, mucho trabajo extra.
Cada máquina virtual tiene que simular un ordenador completo, mientras que un contenedor
simplemente se encarga de simular la parte del sistema donde corre una aplicación, dejando
todo el resto de componentes como transparentes, de modo que necesita mucha menos
potencia que una máquina virtual completa. Se presupone como regla general que una máquina
virtual consume un 15% de la potencia de un host cuando se ejecuta (como regla general, en
ordenadores digamos normales). Así si lanzamos 7 máquinas virtuales en un host nos estamos
“comiendo” el 95% de potencia de dicho host. Los contenedores no tienen este problema ya
que consumen muchísimos menos recursos del host, de modo que es factible tener una máquina
donde corran 10 15 o 20 contenedores, por ejemplo.
Los contenedores sin embargo presentan muchos problemas que no presentan las máquinas
virtuales, como soporte de OS (Operating System) que están limitadas a Linux, visibilidad (no se
pueden ver fuera del host), migración, administración centralizada, etc. Estas ventajas e
inconvenientes hacen que ambas soluciones, virtualización y contenedores sean
complementarias entre sí, de modo que no se pueden ver como competidores, sino como
diferentes soluciones a distintos problemas.
Si necesitamos instalar un servidor web en una máquina Linux podemos montar perfectamente
un contenedor y dentro ejecutar el servidor web. Así, separaríamos la configuración del
contenedor de la configuración del host y podríamos tener varios contenedores cada uno de
ellos con su propio servidor, bien web o del tipo que sea. Cada uno de ellos cuenta con su propio
sistema de red independiente, su propio sistema de configuración del sistema, etc.
Característica de LXC Ventaja
Solución ligera de virtualización, consumiendo Permite ejecutar múltiples instancias de una
pocos recursos. aplicación en un host, sin el overhead de cpu y
memoria que presentan las máquinas virtuales.
Aislamiento de recursos y procesos. Permite ejecutar múltiples aplicaciones en un host
sin el riesgo de que interfieran entre ellas.
Múltiples distribuciones en un servidor. Podemos correr múltiples distribuciones de Linux
en un host.
Despliegue rápido. Los contenedores nos permiten crear “sandbox”
de una forma rápida para testear o simular un
entorno limpio. Si usamos el sistema de ficheros
Btrfs, podemos crear nuevas instancias de un
contenedor, clonándolas y lanzándolas en
segundos.
Docker es una nueva implementación de LXC que reduce la idea de contenedor para que solo se
ejecute un único proceso aislado. Así, en un contenedor Docker ni siquiera podemos ejecutar
comandos del sistema operativo, únicamente podemos ejecutar el proceso o aplicación. Todas
las operaciones que deseemos realizar con el sistema debemos realizarla con la propia
configuración de Docker y no tenemos las opciones de personalización que tenemos con LXC.
Entonces, ¿Cuál es la ventaja de Docker? Pues esa ligereza que permite que ocupe muchos
recursos viene muy bien para lanzar muchos contenedores en un entorno PaaS (entorno que
veremos en el siguiente apartado).
Tecnología Recomendado para:
LXC Un sustituto de la virtualización, que ocupa menos
recursos y solo funciona en Linux.
Docker Una forma de distribuir aplicaciones Linux (una
aplicación en cada contenedor).
Últimamente Canonical (Ubuntu) está lanzando una “nueva” tecnología basada en LXC conocida
como LXD, que viene a ser un contenedor LXC pero algo más potente. LXD todavía se encuentra
en un estado muy temprano, y no se tiene claro que acabará ocurriendo con esta tecnología.
En informática se tiende mucho a crear nombres “llamativos” que pasan a englobar miles de
soluciones distintas sin demasiado rigor, creándose muchas veces “líneas de moda” en lugar de
líneas tecnológicas. Algo así pasa por ejemplo con el término “Web 2.0” que no tiene una
definición precisa, sino que se transformó en una moda hace pocos años, nada era digno de ser
tenido en cuenta si no seguía el paradigma web 2.0, aunque nadie tuviera una idea clara de que
significaba en sí mismo tal concepto, hecho que venía promovido por que en realidad el
concepto no significaba nada.
Algo así pasa hoy en día con el “cloud computing”, conocido en castellano como “informática en
la nube”. Es un término que se utiliza para cientos de cosas distintas, ya que es el “termino de
moda” actual.
El cliente que accede a servicios de cloud computing va a trabajar con una máquina virtual, pero
está se estará ejecutando en un proveedor de cloud computing y accederá a la máquina virtual
mediante la red. Las características esenciales de la computación en la nube son:
• Servicios bajo demanda. Un cliente puede acceder a varios servicios como por ejemplo
servidores o almacenamiento de forma automática, aumentando o disminuyendo sus
necesidades automáticamente si necesidad de que una persona reconfigure esos
servicios.
• Acceso mediante red. Se puede acceder a los servicios mediante la red, usando
protocolos comunes lo que permite acceder a dichos servicios desde una gran cantidad
de dispositivos (móviles, tablets, ordenadores, etc.).
• Pool de recursos. (Se conoce como pool una colección de recursos agrupados que
pueden ser accedidos como un solo). Esto permite aunar todos los recursos del sistema
e ir asignándolos según hagan falta a los usuarios. De hecho, estos usuarios no tienen ni
idea de en qué maquina (host) se está ejecutando realmente el proceso que él está
viendo.
• Elasticidad. Los recursos que se le asigna a cada cliente son elásticos, es decir, pueden
crecer o disminuir de forma automática según hagan falta por la demanda del cliente.
Así, un cliente puede “contratar” una máquina virtual con 4 GB de RAM, pero si se da
cuenta que en un momento determinado necesita más RAM puede “contratarla” y su
máquina crecerá automáticamente. Cuando baje la demanda, el sistema se puede
ajustar de nuevo perdiendo los recursos que habían aumentado.
• Medición del uso y pago del mismo. Los sistemas de cloud computing permiten en cada
momento conocer qué cantidad de recursos está utilizando cada cliente, y permite
establecer un cobro por los mismos, de modo que un usuario puede ajustar sus recursos,
y por lo tanto, ajustar cuanto paga a la empresa.
Imaginemos una empresa que en un momento dado necesita utilizar para realizar un trabajo 10
servidores Linux con 16 GB de RAM y 500 GB de HD cada uno de ellos. El coste de comprar todo
este material es muy alto, sobre todo si tenemos en cuenta que es posible que una vez realizado
el trabajo en cuestión a la empresa no le hagan falta todos estos servidores.
Una solución que existe es el “renting”, esto es, alquilar dichos equipos a una empresa en lugar
de comprarlos. Es la misma solución que se aplica en las empresas de alquiler de coches. Esta
solución sin embargo es bastante cara y sobre todo muy “engorrosa” para la empresa (hay que
pagar portes, gastos de consumo eléctrico de los servidores, hay que preparar sitio en la
empresa para los servidores, pagar un seguro aparte, etc.).
Cloud Computing (computación en la nube) nos permite ofrecer una mejor solución al problema
planteado. La empresa simplemente contrataría al proveedor de cloud los 10 equipos, se
conectaría directamente desde sus propios equipos mediante internet a esos servidores y podría
usarlos como si estuvieran en su propia empresa. A todos los efectos esos 10 servidores se
comportarían como equipos reales. Una vez que la empresa ha terminado el trabajo, se limita a
dar de baja los equipos en el proveedor y paga simplemente por las horas que haya estado
usando dichos equipos.
Estas aplicaciones son accesibles por múltiples clientes directamente a través de la red utilizando
para conectarse cualquier tipo de dispositivo (pc con navegador web, móvil con navegador web,
un programa específico de conexión, etc.).
El cliente no controla (ni siquiera ve) la infraestructura donde se está ejecutando la aplicación
en el proveedor. No puede conocer ni controlar que versión de sistema operativo utiliza, ni el
software instalado en dicho sistema operativo, ni el hardware donde corre, etc.
Ejemplos de SaaS son los servicios de Google Apps, Office 365, SalesForce, etc.
Normalmente esta solución es utilizada por desarrolladores o programadores, que pueden tener
una máquina preparada para escribir y probar sus programas rápidamente sin tener que contar
con un ordenador configurado propio. Además, es perfectamente posible que una vez que el
desarrollador haya realizado el programa siga utilizando la misma máquina para que sus clientes
puedan acceder a dicha aplicación.
El cliente de un PaaS obtiene una plataforma de desarrollo, pero no puede tocar ni modificar el
sistema operativo instalado, los drivers usados en el sistema, los programas que no hayan sido
creados por el mismo, etc.
Ejemplos de PaaS son el google app engine, Windows Azure, Heroku, OpenShift, CloudFoundry,
Nitrous.io, etc.
IaaS Intfrastructure as a Service
El cliente obtiene del proveedor de cloud computing una infraestructura completa, es decir,
accede a una máquina creada donde puede hacer lo que quiera. El cliente puede instalar sus
propios sistemas operativos, particionar el disco duro, instalar cualquier tipo de programa, etc.
Es como montar una máquina virtual propia en nuestro equipo, podemos hacer con la misma lo
que queramos.
Ejemplos de IaaS son Amazon Web Services, Joyent, Windows Azure, Rackspace Cloud Servers,
Google Compute Engine, etc.
Vemos en esta imagen (fuente: ad-hoc.net/blogs) una comparación entre la virtualización
habitual, IaaS, PaaS y SaaS. Las características en azul caen directamente bajo nuestro control,
las que están en verde nos son dadas y no nos tenemos que preocupar de ellas ya que no
podemos tocarlas.
Lo primero será elegir el sistema operativo que más se adapte a las necesidades de uso que se
va a dar al equipo. Será importante conocer de antemano el uso que se va a dar al equipo, las
aplicaciones que va a necesitar, la formación de quien lo va a utilizar, el resto de equipos y
sistemas existentes en la empresa/organización…
Una vez decidido el sistema operativo a instalar lo siguiente será elegir la versión más adecuada
del mismo. Ya sabemos que de cada sistema operativo existen multitud de versiones. Desde
versiones embebidas, versiones destinadas al hogar o versiones profesionales, cada una de ellas
tiene un propósito diferente y deberemos elegir la más adecuada en cada situación.
Para decidir entre todas las opciones de sistemas operativos disponibles, otro de los criterior
más habituales puede ser el coste de los sistemas operativos. En este caso no vale sólo con
pensar en el coste propio del sistema operativo (licenciaciamiento), sino también en otros costes
que puede tener asociados, como las posibles necesidades de formación de los usuarios que van
a utilizar un nuevo sistema operativo que desconocen, o el posterior coste de aplicaciones que
vayan a necesitar instalar a posteriori.
Además, será importante también conocer los costes asociados al soporte técnico de
determinados sistemas que, bien por muy específicos o por poco habituales, pueden ser
costosos de mantener y/o gestionar.
En este punto es importante destacar la compatibilidad tanto hardware como software con el
resto del sistema informático, así como por el equipamiento e infraestructura existente.
En este punto, y antes de proceder a la propia instalación del sistema operativo, deberemos
pararnos a analizar por un momento la normativa legal a la que nos tenemos que adaptar y que
debemos cumplir. En concreto el marco legal principal al que tenemos que atender es el RGPD
y como base de aplicación para el mismo la LOPD.
Esta normativa nos va a marcar ciertas pautas de obligado cumplimiento en aquellos sistemas y
equipos en los que se va a almacenar datos de carácter personal.
Lo siguiente que debemos revisar son las HCL de cada sistema operativo y que nos van a
garantizar el buen funcionamiento de nuestro sistema operativo con el hardware disponible en
el equipo.
A partir de aquí, el paso siguiente será conocer los requisitos de hardware marcados por el
desarrollador del sistema operativo para el mismo. Hay que tener en cuenta que son unas
recomendaciones generales y que pueden resultar un poco ambiguas dada la cantidad de
versiones diferentes que existen de cada sistema operativo.
Se debe prestar especial atención a los requisitos en cuanto a procesador, memoria RAM,
arquitectura y espacio en disco, aunque pueden existir también otros requisitos específicos de
ciertos sistemas operativos con propósitos específicos como ciertos servidores.
De todas formas, se debe seguir como criterio general las indicaciones marcadas para la
instalación de sistemas operativos, poniendo especial atención en la parte relativa a
compatibilidad y requisitos de las aplicaciones que queremos instalar
Actualización (on-line y off-line) de sistemas operativos y aplicaciones.
Uno de los aspectos más importante durante la explotación de un sistema informático es que
todo funcione bien y sin problemas. Es decir, que sea confiable y esté siempre disponible. Sin
embargo, muchas veces la disponibilidad de los sistemas informáticos bien condicionada por
causas que en muchas ocasiones son ajenas a nosotros mismos.
Quién no ha oído habar en más de una ocasión de que el sistema se ha caído o no está disponible,
que lo intentemos de nuevo en un rato, que ha fallado la red o que algún tipo de virus u otro
tipo de ataque ha causado daños en el sistema.
Una de las medidas clave que debemos tomar siempre que nos enfrentemos al despliegue y
explotación de sistemas informáticos es el hecho de mantenerlos actualizados.
Parece obvio, pero la verdad es que si nos paramos a pensarlo con detenimiento cuantas veces
no hemos visto que nuestro sistema requiere realizar actualizaciones y lo hemos pospuesto por
lo pesado que resulta y por el hecho de tener que reiniciar y esperar a que el asistente de turno
termine con ese proceso de actualización tan pesado y aburrido…
Pues el caso es que en las empresas también ocurre lo mismo y muchas veces nos vamos a
encontrar equipos sin actualizar. Pero ¿por qué son tan importantes las actualizaciones? Pues ni
más ni menos que porque las actualizaciones son principalmente mejoras o parches para fallos
o agujeros de seguridad que se han detectado en los sistemas operativos, de modo que no tener
un equipo actualizado significa que tenerlo expuesto a posibles fallos de seguridad que pueden
desencadenar ataques y fallos del sistema.
Según lo anterior debemos tener como regla general la de tener siempre actualizados los
sistemas informáticos (no solo los sistemas operativos) en los que trabajamos o con los que
trabajamos.
Pero esto no siempre tiene que ser así. En el caso de servidores críticos para el funcionamiento
del negocio o de la empresa en los que hay aplicaciones especiales o incluso desarrolladas ex
proceso para dicho sistema, el propio hecho de realizar una actualización puede suponer la
corrupción del propio sistema.
En estos casos, y solo en estos casos, las actualizaciones no se deben configurar para que se
ejecuten de forma automática, sino que deberán probarse en un entorno de laboratorio antes
de pasarlas a los servidores que se encuentren en producción.
En caso de poseer muchos equipos en la organización puede resultar una buena práctica utilizar
un servidor que actúe como servidor de actualizaciones para evitar que todos los equipos se
pongan a descargar las actualizaciones de forma simultánea a través de Internet y colapsen o
saturen de tráfico la red corporativa impidiendo que el resto de usuarios del sistema puedan
desarrollar su trabajo con normalidad.