Virtualización¶
En general, el objetivo de la virtualización es poder utilizar simultáneamente en un mismo ordenador dos o más sistemas operativos. Por lo tanto, para poder hablar de virtualización tienen que estar funcionando a la vez varios sistemas operativos.
A tener en cuenta
- De acuerdo con esta definición, instalar dos sistemas operativos en un ordenador (Windows y Linux, por ejemplo) y poder elegir uno u otro mediante un arranque dual no se considera virtualización, puesto que mediante un arranque dual no podemos ejecutar a la vez ambos sistemas.
- Los sistemas operativos son los encargados de la gestión del hardware y requieren un control completo del mismo, por lo que dos sistemas operativos no pueden en principio estar funcionando a la vez sobre el mismo hardware.
- La solución para la virtualización es la existencia de un hipervisor (en inglés, hypervisor).
Antes de definir que es el hipervisor, es importante conocer las ventajas que aporta la virtualización.
Ventajas Virtualización¶
La virtualización tiene muchas aplicaciones interesantes:
- La más habitual es poder ejecutar aplicaciones que no están disponibles para el sistema operativo host (anfitrión), pero sí para otro sistema operativo que se instalaría como guest (huésped).
- La virtualización permite la conservación del software. Debido al progreso del hardware, los procesadores antiguos dejan de fabricarse y los sistemas operativos y aplicaciones antiguos dejan de desarrollarse y dejan de funcionar en el hardware moderno. Pero si el sistema operativo puede instalarse como guest, puede seguir utilizándose para siempre.
- La virtualización permite depurar y comprobar el funcionamiento de los programas y los sistemas operativos. Si un programa provoca un fallo de funcionamiento total, si se está ejecutando como guest, el sistema host puede recoger información sobre el motivo del fallo.
- La virtualización permite un mejor aprovechamiento del hardware, ya que un mismo ordenador puede contener muchos sistemas guests utilizados por usuarios diferentes, aislados unos de otros.
Hipervisor¶
Un hipervisor, conocido también como monitor de máquinas virtuales, es un proceso (programa en ejecución) que crea y ejecuta máquinas virtuales. Un hipervisor permite que un ordenador host preste soporte a varias máquinas virtuales invitadas mediante el uso compartido virtual de sus recursos, como la memoria y el procesamiento. Por lo tanto el hipervisor es la pieza fundamental de la virtualización.
Tradicionalmente, se distinguen dos tipos de hipervisores:
- Los hipervisores de tipo 1, denominados «hipervisores bare metal», dichos hipervisores están en contacto directo con el hardware de la máquina, sin necesidad de ningún sistema operativo previo.
- Los hipervisores de tipo 2, denominados «alojados», y son una aplicación más del sistema operativo instalado en la máquina y el hipervisor accede al hardware de la máquina a través de ese sistema operativo.
Cabe destacar:
- En el caso de los hipervisores de tipo 2, el sistema operativo que tiene el control del hardware recibe el nombre de host (anfitrión). Es el sistema operativo que se instaló primero en el ordenador y el que se pone en marcha al arrancar el ordenador. Los demás sistemas operativos reciben el nombre de guests (huéspedes) y pueden ejecutarse o no a voluntad del usuario.
- En el caso de los hipervisores de tipo 1 no hay un sistema operativo host, todos los sistemas operativos son guests del hipervisor.
Ejemplo
- Tipo 1: ejemplos de este tipo de hipervisores son VMware ESXi o Xen, los cuales son utilizados a nivel de centro de datos. Hyper-V de Microsoft se puede considerar un hipervisor de tipo 1, porque aunque necesita que esté instalado primero Windows para poder instalar Hyper-V, una vez instalado convierte a Windows en un guest más de Hyper-V (aunque con acceso prioritario con respecto al resto de guests).
- Tipo 1/Tipo 2: KVM, al estar integrado en el kernel de Linux, se puede considerar tanto de tipo 1 como de tipo 2.
- Tipo 2: VirtualBox es un hipervisor de tipo 2.
Configuración y administración de un sistema virtualizado¶
Los pasos contenidos en este apartado son válidos para cualquier sistema de virtualización de nivel 2, pero se va a centrar los ejemplos en la solución Oracle VM VirtualBox. Esta plataforma permite la creación de máquinas virtuales y una red virtual para conectar estas máquinas sin ocasionar interferencias con las máquinas o redes físicas en las que se encuentre el equipo anfitrión.
Creación de una máquina virtual¶
A la hora de crear una máquina virtual, Oracle VM VirtualBox ofrece un asistente que guiará a través de todo el proceso. Una vez lanzado el asistente ahorraremos tiempo si se usa el botón de Modo Experto el cual mostrará en una sola ventana las opciones de creación de nuestra máquina.
Tres son los elementos que se deben configurar como mínimo para la creación de una máquina virtual:
- El tipo de sistema operativo que contendrá la máquina y su arquitectura,
- El tamaño de la memoria principal.
- Disco duro virtual a asignar como memoria secundaria.
Advertencia
Hay que tener presente los recursos de los que dispone la máquina anfitrión, y no ceder demasiados de éstos para que el rendimiento no caiga hasta límites insufribles. Habitualmente el software de virtualización avisa al usuario si va a superar estos límites.
La elección de un tipo de disco duro determinará en que plataformas será compatible ese disco duro virtual. De esta manera VDI (VirtualBox Disk Image) será el formato nativo de VirtualBox, aunque también disponemos de:
- VHD (Virtual Hard Disk) de Microsoft Virtual PC.
- VMDK (Virtual Machine Disk) propia de VMware Workstation.
- HDD (Parallels Hard Disk) de Parallels.
- QCOW (QEMU Copy-On-Web) y QED (QEMU Enhanced Disk) de la plataforma QEMU.
Otro aspecto a tener en cuenta es el tipo de almacenamiento físico que vamos a dar al disco duro virtual. Existen dos opciones:
- Almacenamiento reservado dinámicamente, aumenta el tamaño del fichero a medida que los archivos se van copiando en el disco duro virtual. En esta configuración no importa el tamaño máximo del disco, ya que tan sólo cuando éste esté lleno, ocupará ese espacio de forma física en el disco anfitrión. Ofrece la ventaja de ahorrar espacio en el disco duro físico, pero es una configuración más lenta ya que tiene que redireccionar espacio nuevo cada vez que se escribe un archivo en el disco duro virtual.
- Almacenamiento en tamaño fijo, reserva el espacio en el disco anfitrión en función del total de la capacidad del disco duro virtual. Si el tamaño máximo del disco duro virtual es de 32 GB, será ese el tamaño del archivo en el disco duro físico. Esta configuración consume más cantidad de recursos del sistema anfitrión. Por contra en acceso al disco es más rápido, ya que no será necesario la redirección de espacio nuevo en el disco duro en cada escritura.
El fichero que contenga en disco duro virtual, tendrá unas dimensiones considerables, sobre todo si se usa la técnica de almacenamiento en tamaño fijo. Oracle VM Workstation ofrece la posibilidad de dividir este fichero en fragmentos de 2 GB lo que permitirá mejor gestión del disco duro, el aumento de seguridad y la compatibilidad. Marcar esta casilla es obligatorio si el disco duro anfitrión posee un sistema de archivos anterior a NTFS (FAT16 o FAT32).
Administrador de medios virtuales¶
La creación del disco duro virtual lleva consigo la asignación de un identificador unívoco basado en UUID (Universal Unique Identifier). Se trata de un número de 128 bits separado en cinco grupos por guiones. Esta identificación única evita que el mismo disco duro virtual sea asignado a varias máquinas virtuales de forma simultánea.
Además, al crear una máquina se le asocia un disco duro nuevo o bien uno ya existente. Mientras este disco esté asignado a una máquina virtual se encuentra en estado ligado y tan solo esa máquina será capaz de escribir en él. Esto quiere decir también que no se puede asignar a ninguna otra.
Si fuera necesario realizar esta asignación, antes se debe liberar ese disco a través del administrador de medios virtuales. De esta forma simulamos el funcionamiento físico de los discos duros y, además, dotamos de más seguridad al sistema virtualizado.
Nota
Desde este mismo menú podremos realizar una copia de un disco duro virtual. Una vez realizada, el disco duro copiado habrá generado un nuevo UUID, indicando que, a pesar de ser una copia exacta del primero, en realidad Oracle VM VirtualBox lo tratará como un disco duro diferente. Este disco recién creado se le puede asignar a cualquier máquina virtual disponible, incluso la que contiene el disco original.
Otras de las acciones que se puede realizar en este administrador, es dotar de funcionalidades especiales a los discos duros virtuales. Existen diferentes modos los cuales se resumen en:
-
normal, esta es la configuración por defecto cuando se crea un nuevo disco duro. No existen restricciones sobre como el sistema operativo huésped lee y escribe en el disco. Los cambios que se produzcan en él serán permanentes.
-
inmutable, cualquier dato escrito por un sistema operativo huésped en un disco inmutable se almacena en una imagen de disco de diferenciación separada. Cuando la máquina virtual a la que se adjunta la imagen de disco se apaga o reinicia, el disco de diferenciación y los contenidos que se encuentran en él se descartan, dejando el disco inmutable inalterado. Este enfoque permite que múltiples máquinas virtuales que comparten el mismo archivo de imagen de disco, cada uno se le asigna su propio disco de diferenciación durante el tiempo de ejecución. A pesar de soportar más de una máquina ligado a un dispositivo inmutable, tan sólo una de ellas puede estar encendida de forma simultanea.
-
escritura simultánea, permite las operaciones de escritura y lectura como en modo normal con la salvedad que al apagar o reiniciar la máquina el disco vuelve a su estado original.
-
compartible, permite compartir un disco duro entre varias máquinas virtuales. Esto lo hace ideal para la formación de clusters. Sólo los discos de tamaño fijo pueden utilizar esta configuración.
-
multiconexión, básicamente se trata de un medio inmutable con conexión de varias máquinas simultáneamente. Además, el disco de diferenciación que crea cada máquina conectada a este disco duro, no se borra al reiniciar o apagar el sistema virtual.
Este administrador también gestiona los discos ópticos y los discos flexibles, indicando a qué máquina virtual están conectados y permitiendo conectarlos a otra máquina si así se requiere. Estos dispositivos funcionan de igual forma que los discos duros virtuales en modo normal, pudiendo estar conectados a una única máquina virtual de forma simultánea.
Configurar redes virtuales¶
Una de las ventajas de trabajar con máquinas virtuales (MVs), es que desde el punto de vista de una red local, podemos tratarla de igual forma que si de un equipo físico se tratase, configurando diferentes opciones de conexión con el resto de MVs en el adaptador de red virtual que tenga asinado, que será el encargado de gestionar la conexión de la máquina.
Las distintas configuraciones que se le pueden asignar a un dispositivo de red virtual son:
- no conectado, la tarjeta virtual existe en el huésped, pero está configurada como si no tuviera ningún cable conectado.
- NAT, (Network Address Translation) es el modo por defecto de la tarjeta de red virtual. La máquina huésped puede conectarse a otras redes mediante un router virtual proporcionado por Oracle VirtualBox. En este modo es posible navegar por Internet sin ser detectado por el resto de nodos de la red. Dicho router sirve direcciones DHCP del tipo 10.0.X.0/24 donde X es igual a dos para la primera tarjeta de red, X es igual a tres para la segunda tarjeta de red y así sucesivamente. En el caso de una única tarjeta de red, el router tiene como puerta de enlace la dirección 10.0.2.2, como servidor DNS la dirección 10.0.2.3 y la primera dirección DHCP asignada es la 10.0.2.15.
- red NAT, configura una red a la que se unen todas las máquinas virtuales que quieran tener acceso a Internet sin interferir con la red en la que está inmersa el anfitrión. Antes de unirnos a una red de estas características habrá que crearla con la herramienta en línea de comandos vboxmanage o a través del administrador de redes.
- Adaptador puente, se crea un tarjeta de red virtual en el anfitrión que intercepta el tráfico del huésped y puede inyectar paquetes en la red, de manera que el huésped se configura como si estuviera conectado por un cable a la tarjeta de red virtual del anfitrión. La máquina huésped es visible en la red.
- red interna, se crea una red virtual visible entre las máquinas virtuales, pero invisible al anfitrión y a máquinas externas a la red. Cada red virtual creada se identifica mediante un nombre. Para conectar a los huéspedes en la misma red virtual, será necesario que sus controladoras de red se sitúen en la red con el mismo nombre.
- adaptador sólo-anfitrión: en este modo se crea una tarjeta de red virtual en el anfitrión que puede conectarse con las máquinas virtuales sin necesitar que el anfitrión tenga una tarjeta destinada a esta tarea.
Modo: Red NAT¶
En "Red NAT" las máquinas virtuales están en una misma subred NAT y se podrán comunicar entre sí, con el añadido que todas las máquinas tendrán acceso a internet, mediante el router virtual que genera VirtualBox para este modo.
Indicación
En nuestras prácticas debemos trabajar en red nat
A partir de la versión 4.3 de VB y de forma experimental, se ha añadido el modo Red NAT, el cual funciona como el router de nuestra casa, es decir, los equipos que estén dentro de la misma red NAT podrán comunicarse entre sí, y es aquí donde radica la diferencia con el modo NAT el cual siempre constituye una red con un único equipo y no de varios como ahora es el caso.
El primer paso que debemos realizar es la creación de una red NAT y esto puede hacerse, de dos formas:
Cabe destacar
Según la versión del VB el acceso a la creación de la red NAT a través de GUI puede cambiar, a nivel de comandos no varia.
- Desde el intérprete de comandos debemos utilizar el comando vboxmanage de la siguiente manera:
$ vboxmanage natnetwork add --netname red-nat-1 --network 172.20.0.0/16
Acabamos de crear una red NAT de nombre red-nat-1 y la IP de la red es 172.20.0.0/16.
- Desde el menú Archivo -> Preferencias -> Red -> Redes NAT.
Pulsando sobre el icono verde con el signo + de la derecha se añade por defecto una red NAT de nombre NatNetwork:
La seleccionamos y pulsamos sobre el icono del destornillador para personalizarla:
Podemos listar la información de las redes NAT disponibles y así comprobamos los parámetros de la que acabamos de crear:
$ vboxmanage list natnets
NetworkName: red-nat-1
IP: 172.20.0.1
Network: 172.20.0.0/16
IPv6 Enabled: No
IPv6 Prefix:
DHCP Enabled: Yes
Enabled: Yes
loopback mappings (ipv4)
127.0.0.1=2
Como vemos, solo hay en estos momentos una única red NAT cuyo nombre es red-nat-1 y podemos destacar la siguiente información que se nos muestra:
- La primera IP de la red, la cual ha sido asignada al router (172.20.0.1).
- Esta red NAT tiene el servidor DHCP activado.
- La red NAT está activada.
Cuando la red NAT está creada simplemente hay que seleccionarla en la sección Red de la MV:
La red NAT puede detenerse y sería como apagar el router, es decir, la red se quedaría sin salida al exterior aunque habría conexión entre los equipos conectados a la misma red NAT. Los comandos a utilizar son los siguientes:
$ vboxmanage natnetwork stop --netname red-nat-1
$ vboxmanage natnetwork start --netname red-nat-1
O bien pulsando en la columna de Activo de la ventana del menú Archivo -> Preferencias -> Red -> Redes NAT.
Si quisiéramos eliminar la red NAT ejecutaríamos:
$ vboxmanage natnetwork remove --netname red-nat-1
O bien desde la misma ventana anterior pulsando sobre el icono que contiene el signo menos.
Configuración servidor DHCP de la Red NAT¶
El servidor DHCP puede detenerse o activarse de forma independiente, para ello usaríamos los siguientes comandos:
$ vboxmanage natnetwork modify --netname red-nat-1 --dhcp off
$ vboxmanage natnetwork modify --netname red-nat-1 --dhcp on
También podríamos haber manipulado el servidor DHCP en el momento de la creación de la red NAT, por ejemplo, si hubiésemos querido empezar con el servidor DHCP apagado, deberíamos haber ejecutado el siguiente comando:
$ vboxmanage natnetwork add --netname red-nat-1 --network 172.20.0.0/16 --dhcp off
Reenvio de puertos¶
Consejo
Para trabajar con Ubuntu Server con cli, es muy comodo realizar un ssh a la MV, para ello se necesita el reenvío de puertos si se ha configurado la Red NAT.
Mediante GUI se realiza en la siguiente pantalla:
También es posible redireccionar puertos en una red NAT, por ejemplo, para redireccionar el puerto 2222 del equipo anfirión al puerto 22 de un servicio ssh instalado en una MV de la red NAT anterior con IP 172.20.0.5, ejecutaríamos el siguiente comando:
$ vboxmanage natnetwork modify -netname red-nat-1 --port-forward-4 "servicio-ssh: tcp: [ ]:2222: [172.20.0.5]:22"
Y para eliminar la redirección anterior:
$ vboxmanage natnetwork modify -netname red-nat-1 --port-forward-4 delete servicio-ssh