Conceptos Fundamentales de Virtualización en Computación

Introducción a la Virtualización

Cuando hablamos de virtualización, comúnmente pensamos en ejecutar una máquina virtual (en lugar de una física). Sin embargo, este concepto no se limita a las máquinas; también se aplica a dispositivos de almacenamiento, redes y otros recursos. La virtualización, en su sentido amplio, puede implementarse mediante simulación por software, virtualización de hardware, contenedores y otros métodos. En este artículo, exploraremos los conceptos principales con ejemplos prácticos.

Emulación

La emulación consiste en usar software para simular otro sistema, creando así una "máquina virtual". Por ejemplo, podemos emular computadorsa clásicas basadas en Z80 como Spectrum, Amstrad o Commodore. MAME (Multiple Arcade Machine Emulator) es un conocido emulador para máquinas arcade clásicas, mientras que DOSBox es otro ejemplo utilizado para ejecutar juegos y programas antiguos de DOS.

Un emulador puede definirse como hardware o software que hace que un sistema informático se comporte como otro. A menudo, los emuladores solo simulan la arquitectura de hardware; si se necesita firmware u sistema operativo específicos, también deben proporcionarse o emularse.

Tipos de emuladores:

  • Emuladores de consolas: Existen numerosos emuladores para diferentes plataformas, como Fuse para Spectrum, Caprice para Amstrad, PPSSPP para PlayStation Portable, entre otros.
  • Emuladores de terminal: Programas como PuTTY permiten conexiones remotas a sistemas desde terminales modernas.
  • Emuladores de impresoras: Muchas impresoras usan emulación para soportar lenguajes como PCL (Printer Command Language).
  • Emuladores de red: Herramientas como GNS3 y Cisco Packet Tracer permiten probar configuraciones de red y routers.
  • Emuladores de sistema: Programas como QEMU simulan sistemas completos, como la ejecución de PowerPC en arquitectura x86.

Simulación

La simulación es un concepto similar a la emulación, aunque existen diferencias. En un simulador, el objetivo principal es replicar el comportamiento del sistema original, mientras que un emulador se enfoca en proporcionar la misma funcionalidad, no necesariamente con el mismo funcionamiento.

Virtualización

Inicialmente, las máquinas virtuales se implementaban únicamente mediante software, pero Intel y AMD introdujeron extensiones específicas en sus procesadores (Intel VT-x y AMD-V) para mejorar el rendimiento mediante virtualización asistida por hardware. En sistemas Linux, podemos verificar estas capacidades en el archivo /proc/cpuinfo:

Para procesadores Intel:

grep vmx /proc/cpuinfo

Para procesadores AMD:

grep svm /proc/cpuinfo

El software que gestiona las máquinas virtuales se denomina hipervisor (o monitor de máquina virtual). Existen dos tipos principales:

  • Hipervisor de Tipo I ("bare metal"): Se ejecuta directamente sobre el hardware. Ejemplos incluyen VMware ESXi, Microsoft Hyper-V y Xen.
  • Hipervisor de Tipo II: Se ejecuta como aplicación sobre un sistema operativo. Ejemplos son VMware Workstation, Oracle VirtualBox y Microsoft Virtual PC.

Tipos de Virtualización:

  • Virtualización completa: El hipervisor recrea casi todos los componentes del sistema original, permitiendo que el sistema operativo cliente se ejecute sin modificaciones.
  • Virtualización paravirtualizada: Proporciona acceso a recursos hardware mediante interfaces especiales, lo que es más eficiente pero requiere modificaciones en el sistema operativo cliente.

Cuando usamos virtualización paravirtualizada, hablamos de máquinas virtuales paravirtualizadas (PV). Con virtualización completa, nos referimos a máquinas virtuales de hardware (HVM).

Ventajas y Desventajas de la Virtualización:

Ventajas:

  • Eficiencia en el uso de hardware
  • Simplificación de la gestión mediante instantáneas y orquestación
  • Mayor eficiencia energética

Desventajas:

  • No todo el software y hardware se virtualiza fácilmente
  • El acceso al hardware es indirecto, lo que reduce la eficiencia

Migración de Máquinas Físicas a Virtuales (P2V)

La migración de sistemas físicos a máquinas virtuales permite aprovechar los beneficios de la virtualización. Algunas herramientas comunes para este proceso son:

  • VMware Converter: Herramienta comercial popular para conversiones P2V.
  • virt-p2v: Convierte máquinas físicas a máquinas virtuales gestionadas por KVM.
  • openQRM: Plataforma de gestión de infraestructura de centros de datos con capacidades P2V y V2V.
  • Clonezilla: Permite clonar discos de servidores para luego convertirlos al formato requerido por el hipervisor.

Migración de Máquinas Virtuales entre Sistemas (V2V)

Además de la migración P2V, a veces es necesario migrar máquinas virtuales entre diferentes hipervisores (V2V). Este proceso se tratará con más detalle en capítulos posteriores.

Conceptos de Virtualización con Contenedores

Los contenedores esencialmente son una serie de procesos aislados. Dependen de características del sistema operativo anfitrión para proporcionar esta aislamiento, principalmente mediante espacios de nombres (namespaces) y grupos de control (cgroups).

Contenedores de Sistema vs Contenedores de Aplicación:

  • Contenedores de Sistema: Ejecutan un sistema operativo completo.
  • Contenedores de Aplicación: Paquetes mínimos e independientes que contienen solo lo necesario para ejecutar una aplicación específica.

Espacios de Nombre del Kernel (Kernel Namespaces)

Los espacios de nombre son una característica del kernel de Linux que permite particionar recursos del kernel. Con ellos, un proceso o grupo de procesos solo puede ver recursos específicos, mientras que otros ven diferentes recursos. Los tipos comunes incluyen:

  • Espacio de nombres de montaje (Mount)
  • Espacio de nombres de ID de proceso (PID)
  • Espacio de nombres de red (Network)
  • Espacio de nombres de comunicación entre procesos (IPC)
  • Espacio de nombres UTS
  • Espacio de nombres de ID de usuario (User)
  • Espacio de nombres cgroup
  • Espacio de nombres de tiempo

Para listar los espacios de nombre en uso en el sistema, se puede utilizar el comando lsns.

Etiquetas: virtualización hipervisores contenedores KVM emulación

Publicado el 7-8 08:32