Escrito por Sumiciu el llunes, 25 xunu de 2007
A día de hoy, cuando hablamos de virtualización se nos vienen a la cabeza bien extraños procesos, desarrollo avanzado o bien extraños frikis aficionados a la prueba de todo lo que les caiga entre manos que han hecho de VMWare, QEMU y compañía su mejor juguete.
Lo cierto es que la velocidad de los equipos se ha incrementado hasta el punto de que empecemos a pensar en el uso corriente de la virtualización sin que nos llamen chalaos a la cara, o al menos no a las primeras de cambio.
El hecho es que ya están apareciendo soluciones y pasos orientados en este sentido, y GNU/Linux (cómo no..) ya se está dando prisa en aplicarlas. Si lo habitual hasta hoy era usar una máquina virtual proporcionada por un programa de terceros como los mencionados antes, a partir del kernel 2.6.20 en GNU/Linux nos proveen de nuevas herramientas "para empezar a jugar".
A nivel de hardware, tenemos los dos bandos de siempre. Intel nos ofrece la Inter Virtualization Tecnology -alias Intel VT (VT-x para IA-32 y VT-i para Itanium respectivamente)[1]-, mientras que AMD cuenta con la AMD Virtualization o AMD-V. Básicamente, hablamos de unos conjuntos de instrucciones añadidos al procesador que proveen de asistencia via hardware a los hipervisores o vmm (virtual machine monitor), que son los host que crean el entorno virtual en el que podremos cacharrear.
En Linux si queremos saber si nuestra CPU tiene dichas capacidades, si ejecutando el siguiente comando obtenemos alguna respuesta, esta será afirmativa (si no obtenemos nada, debemos tomarlo como un no).
egrep '^flags.*(vmx|svm)' /proc/cpuinfo
Debemos tener en cuenta para ello que /proc/cpuinfo sólo nos mostrará nuestras capacidades de virtualizacióna partir de la version 2.6.15 para Intel y 2.6.16 para AMD. Además, algunos fabricantes desactivan por defecto estas opciones por lo que habrá que meterle mano a la configuración de la BIOS para ponerlo a punto.
A nivel software, y más concretamente de sistemas operativos, la única posibilidad que tenemos hasta el momento (no tardará la competencia, no desespere nadie..) es la anteriormente menciona que proporciona el pingüino y que han dado en llamar KVM. Tal y como podemos leer en la Wikipedia, KMV está implementado actualmente como un módulo para cargar en el kernel, aunque en futuras versiones, probablemente use una interfaz de llamadas al sistema integrada en el núcleo del operativo directamente.
Cabe decir, que realmente, KMV, por si misma, no realiza ninguna emulación, sino que provee de una interfaz que será usada por otro programa desde el espacio de usuario. El único programa capaz de hacerlo, hasta la fecha, es una version modificada de QEMU. KMV, puede usar discos virtuales que soportaba QEMU (incluyendo lo usados por VMWare).
Y llegó el momento de tocar la seguridad, la recomendación principal es usar el dispositivo /dev/kmv (que provee la interfaz para localizar las direcciones virtuales de la máquina virtual cliente) con un usuario distinto al root, para ello es conveniente cambiarle los permisos. Pero esto no acaba aquí, ya que empiezan a surgir los análisis y las búsquedas de agujeros en estos sistemas. Y es que, amiguitos, sólo estamos ante el principio.
Lo cierto es que la velocidad de los equipos se ha incrementado hasta el punto de que empecemos a pensar en el uso corriente de la virtualización sin que nos llamen chalaos a la cara, o al menos no a las primeras de cambio.
El hecho es que ya están apareciendo soluciones y pasos orientados en este sentido, y GNU/Linux (cómo no..) ya se está dando prisa en aplicarlas. Si lo habitual hasta hoy era usar una máquina virtual proporcionada por un programa de terceros como los mencionados antes, a partir del kernel 2.6.20 en GNU/Linux nos proveen de nuevas herramientas "para empezar a jugar".
A nivel de hardware, tenemos los dos bandos de siempre. Intel nos ofrece la Inter Virtualization Tecnology -alias Intel VT (VT-x para IA-32 y VT-i para Itanium respectivamente)[1]-, mientras que AMD cuenta con la AMD Virtualization o AMD-V. Básicamente, hablamos de unos conjuntos de instrucciones añadidos al procesador que proveen de asistencia via hardware a los hipervisores o vmm (virtual machine monitor), que son los host que crean el entorno virtual en el que podremos cacharrear.
En Linux si queremos saber si nuestra CPU tiene dichas capacidades, si ejecutando el siguiente comando obtenemos alguna respuesta, esta será afirmativa (si no obtenemos nada, debemos tomarlo como un no).
egrep '^flags.*(vmx|svm)' /proc/cpuinfo
Debemos tener en cuenta para ello que /proc/cpuinfo sólo nos mostrará nuestras capacidades de virtualizacióna partir de la version 2.6.15 para Intel y 2.6.16 para AMD. Además, algunos fabricantes desactivan por defecto estas opciones por lo que habrá que meterle mano a la configuración de la BIOS para ponerlo a punto.
A nivel software, y más concretamente de sistemas operativos, la única posibilidad que tenemos hasta el momento (no tardará la competencia, no desespere nadie..) es la anteriormente menciona que proporciona el pingüino y que han dado en llamar KVM. Tal y como podemos leer en la Wikipedia, KMV está implementado actualmente como un módulo para cargar en el kernel, aunque en futuras versiones, probablemente use una interfaz de llamadas al sistema integrada en el núcleo del operativo directamente.
Cabe decir, que realmente, KMV, por si misma, no realiza ninguna emulación, sino que provee de una interfaz que será usada por otro programa desde el espacio de usuario. El único programa capaz de hacerlo, hasta la fecha, es una version modificada de QEMU. KMV, puede usar discos virtuales que soportaba QEMU (incluyendo lo usados por VMWare).
Y llegó el momento de tocar la seguridad, la recomendación principal es usar el dispositivo /dev/kmv (que provee la interfaz para localizar las direcciones virtuales de la máquina virtual cliente) con un usuario distinto al root, para ello es conveniente cambiarle los permisos. Pero esto no acaba aquí, ya que empiezan a surgir los análisis y las búsquedas de agujeros en estos sistemas. Y es que, amiguitos, sólo estamos ante el principio.