Información blog

Linux, tutoriales, noticias, sistemas, redes y seguridad informática, entre otras cosas.

Mostrando entradas con la etiqueta Virtualización. Mostrar todas las entradas
Mostrando entradas con la etiqueta Virtualización. Mostrar todas las entradas

domingo, 5 de junio de 2016

Diferencia entre virtualización KVM y OpenVz

Hoy quiero hablaros sobre una de las mayores modas del presente: La virtualización. En anteriores artículos ya he hablado algo sobre tecnologías de virtualización, tales como Proxmox, pero hasta ahora me he centrado más en la herramienta que en el concepto... Cosa que en general no es malo, pero hoy quiero hablar de la virtualización en un sentido más teórico con el fin de que entendáis qué tipo de virtualización elegir dependiendo de vuestras necesidades.

KVM&OpenVZ

A lo largo de los años la virtualización ha ido evolucionando y ha ido adaptándose a las necesidades de los usuarios y/o del mercado. Dicha evolución se ha traducido en diferentes tipos de virtualización que van mucho más allá de las herramientas "clásicas", tales como VMware o VirtualBox, otorgándonos un amplio abanico de posibilidades para elegir. Entre dichos tipos, hay dos de ellos que han demostrado ser los más eficientes de todos y los más "innovadores" en el campo de la virtualización. Dichos tipos de virtualización se denominan Virtualización a nivel de sistema operativo y Virtualización a nivel de Kernel; si bien son más conocidos por las herramientas que hacen uso de dichas tecnologías: Openvz y KVM (respectivamente).

Ambas virtualizaciones son muy útiles, pero tienen una serie de diferencias entre sí que, si bien a primera vista no pueden parecer muy significativas, en la práctica pueden ser decisivas a la hora de decantarse por una elección u otra. Para entender la diferencia entre ambas lo mejor sería entender lo que nos ofrece cada tipo de virtualización.

Comencemos por la virtualización a nivel de sistema operativo. Esta tecnología virtualiza los sistemas sobre el propio sistema operativo, es decir que, a diferencia de las virtualización tradicional, no usa ninguna capa intermedia de virtualización. La máquina virtual creada mediante esta tecnología es denominada container, y tiene la gran ventaja de que tiene un gran rendimiento y que permite hacer cambios en el container sin necesidad de apagar/reiniciar dicho container. Dichos cambios pueden ser desde cambiar el tamaño del disco duro hasta aumentar la memoria RAM. El motivo de dicha eficiencia en los containers es que éstos comparten el mismo kernel y los mismos binarios que el sistema operativo original, haciendo que se pierda muy poca eficiencia en el entorno virtualizado... Aún así, dicha compartición  hace que el container solamente pueda tener instalado un sistema operativo que tenga unos binarios parecidos al sistema operativo original. La tecnología de de containers es usada en distribuciones Linux, con lo que es imposible crear un container Windows. Además, si por ejemplo el sistema operativo original fuese Debian; no podríamos instalar un container con un sistema operativo basado en tecnología Red-Hat. Con lo que a modo de resumen se podría decir que los containers:

  • Son muy eficientes a nivel de rendimiento.
  • Ofrecen una gran flexibilidad a la hora de manipular el hardware virtualizado, pues se puede modificar éste sin necesidad de reiniciar, cosa especialmente útil para un servidor web o un servidor ftp.
  • Usa el mismo Kernel y binarios que el sistema operativo original.
  • Tiene ciertas limitaciones con los sistemas a instalar. Solo puede instalar distribuciones "parecidas" a la original y es imposible instalar Windows.

La virtualización a nivel de Kernel, en cambio, es algo más "sutil" que los containers, Esto es debido a que convierte el kernel en hipervisor (capa intermedia de virtualización), y hace que la virtualización se ejecute en el propio núcleo del sistema operativo, logrando una gran eficiencia y estabilidad... Esto no significa que la máquina virtual que instalemos comparta el mismo núcleo que el sistema operativo original (como ocurre con los containers) sino que la capa de virtualización se encuentra en el núcleo en vez de en el sistema operativo (como ocurre habitualmente), quitando capas innecesarias y haciendo que la virtualización sea muy eficiente. Otra de las grandes ventajas que ofrece este tipo de virtualización con respecto a los containers, es que las máquinas virtuales creadas aquí  son completamente independientes del sistema operativo original, haciendo que sea una alternativa mucho más recomendable en términos de seguridad. Resumiendo, esta virtualización ofrecería:

  • Máquinas virtuales que pueden ser tratadas cómo sistemas independientes (a diferencia de los containers). Esto significa que puede instalar sistemas de cualquier tipo, incluido Windows.
  • Máquinas virtuales que ofrecen un gran rendimiento.
  • Máquinas virtuales que se pueden securizar de forma eficiente.

Visto esto, se podría decir que en caso de instalar un sistema operativo Linux, habría que valorar si deseamos una máquina más orientada a la estabilidad/seguridad, para lo cual usaríamos KVM; o una máquina más orientada a la flexibilidad y escalabilidad, para lo cual usaríamos OpenVz. Obviamente habría que tener cuidado con los sistemas que instalaríamos en los containers, pues hemos de tener en cuenta que los binarios tienen que ser compatibles con el sistema operativo original. En caso de optar por un sistema operativo Windows; aquí la única opción posible sería KVM, pues sería el único que ofrecería un entornos virtualizado independiente.

Espero que con este pequeño articulo os hayan quedado más claros los conceptos más importantes de la virtualización y que gracias a esto tengáis una pequeña referencia las ventajas y desventajas que ofrece cada tipo de virtualización.

Saludos.

miércoles, 25 de marzo de 2015

Instalando y configurando Proxmox

Proxmox es un entorno de virtualización  libre, basado en KVM, muy conocido entre los amantes del Open Source que funciona bajo el sistema Debian. Aún siendo un software que se puede descargar gratis (a diferencia de otros que suelen ser más conocidos) se trata de una solución muy completa que puede equipararse a la competencia y que en caso de ser necesario te ofrece la posibilidad de pagar una tarifa que te permite tener soporte técnico para poder solventar cualquier incidencia relacionada con la virtualización; Al ser una herramienta muy completa que puede usarse tanto en entornos personales cómo profesionales, es interesante probarla cómo alternativa a los habituales virtualbox y vmware, y la verdad es que estoy satisfecho con lo que he probado hasta el momento y no he echado en falta ninguna funcionalidad en este sistema.

Proxmox ofrece la opción de descargar una ISO especialmente diseñada para que simplemente instalándola se obtenga el entorno de virtualización ideal, con lo que lo mejor es aprovechar esa posibilidad y descargar la iso aquí. El proceso de instalación es muy sencillo y la interfaz gráfica de la instalación es más depurada que antes, la cual empieza mostrando la siguiente pantalla:


En la gran mayoría de los casos habría que escoger la primera opción que es la seleccionada por defecto, la cual nos trasladaría al asistente de instalación en el que el primer paso que tenemos que hacer (aparte de leer los términos y condiciones) es escoger el disco duro en el que deseamos instalar el sistema en cuestión:


Tras realizar dicha selección pasaríamos a la selección del idioma en la cual simplemente habría que escoger el deseado y pasaríamos a la selección de una contraseña. Esta contraseña es muy importante pues va a salvaguardar la máquina virtual (y todo su contenido) con lo que hay que evitar a toda costa el uso de contraseñas cortas y/o sencillas; A poder ser una contraseña alfanumérica y de una longitud mínima de 7 caracteres.


Ahora sólo quedaría un paso: La configuración de los parámetros de red. En caso de que el servidor recibiese ip desde un servidor DHCP aparecería todo configurado por defecto a falta de poner el Hostname que uno desee. En caso de que no hubiese ninguno debido al motivo que sea, habría que configurarlo a mano, lo cual requeriría nociones básicas de redes LAN. En caso de no poseer dichas nociones sería interesante acceder aquí antes de continuar.



Tras concluir la instalación en cuestión, ya tendríamos el entorno preparado para usarse, pero antes de nada hay que analizar bien qué máquina virtual queremos añadir y cual va a ser su función. Uno de los errores más comunes a la hora de instalar un nuevo entorno virtualizado es el dimensionamiento de éste: En el mayor de los casos se escoge un tamaño de disco duro demasiado grande o una reserva de ram excesiva, haciendo que se desaproveche la máxima capacidad de entornos virtualizados simultáneos que se pueden llegar a tener; por ello lo más recomendable es analizar qué tipo de escenario es: ¿Qué servicios alojará y cuantos? ¿Irá almacenando contenido progresivamente? Una vez se tengan claro estos puntos se procedería a instalar la máquina virtual.

Para dicho propósito, proxmox posee una interfaz web bastante amigable que te permite gestionar con facilidad las diferentes máquinas; Para acceder a dicha interfaz sólo habría que escribir

https://ip_servidor:8006

En mi caso por ejemplo https://192.168.1.10:8006, lo cual mostraría algo cómo ésto:



Al loggearse con las credenciales adecuadas, aparecerán una serie de opciones a elegir; entre éstas hay una llamada create VM, ésta es la que usaremos para crear la maquina virtual que deseemos:


Y sólo tocarían seguir los pasos que te va indicando. El primero simplemente hace referencia al nombre de la maquina. El segundo paso se basa en la selección del sistema operativo. En caso de ser Windows te muestra todos los sistemas operativos disponibles perfectamente diferenciados entre sí, en cambio, si se quiere usar una distribución de Linux que no sea Solaris, es muy importante saber si se va a usar una versión actual o una bastante antigüa, eso es debido a que a la hora de elegir una de las opciones hay que especificar si va a usar un Kernel 2.4 o uno entre el 2.6 y un 3.X; En caso de escoger un sistema operativo bastante reciente indudablemente escoger el la versión entre 2.6 y 3.X:


La parte del CD/DVD consiste en elegir la ISO. Se puede escoger una ISO almacenada en el equipo, un CD físico introducido en la unidad de CD/DVD o  simplemente no escoger ninguna de dichas opciones:


Con respecto al disco duro cada uno debe de escoger el tamaño de disco deseado según sus necesidades, y especialmente es importante conocer qué tipo de disco duro se tiene SATA,IDE o SCSI. Lo más común suele ser que se tenga un disco SATA, a menos que se tenga un disco duro muy antiguo.


Para la CPU no sería necesario tocar nada; Con dejar los valores por defecto bastaría, especialmente si no se tienen conocimientos de éste tema. Cómo mucho recomiendaría poner dos núcleos (cores) para sistemas operativos que tengan que soportar una carga de trabajo considerable:


Ahora tocaría el turno de escoger la cantidad de RAM que queremos asignar al sistema operativo. Tal y cómo he dicho antes es uno de los puntos más importantes a la hora de crear una máquina virtual. Tenemos para escoger un tamaño fijo de memoria o un rango automático de memoria. Yo personalmente recomiendo usar un tamaño fijo para tener un mejor control de los sistemas operativos, pero cada uno debe de ver qué es lo que más le conviene.


El penúltimo paso consistiría en cómo queremos que la máquina se comunique a nivel de red. Es decir; Obviamente la máquina virtual carece de tarjeta de red física, con lo que debe de obtener las propiedades de red de la tarjeta de red física instalada en la máquina. Poseemos dos métodos de comunicación: Bridged y NAT. Bridged equivaldría a tener un nuevo equipo físico con su propia dirección ip mientras que NAT sale a internet emulando la misma ip que la del propio Proxmox. Para este tipo de entornos suele ser recomendable usar Bridged.


El último paso simplemente consiste en verificar que tenemos todo a nuestro gusto antes de confirmar la creación de la máquina virtual. En caso correcto ya tendríamos que clickar Finish y ya tendríamos la máquina virtual lista para ser usada.

Saludos cordiales.