El "Cloud Computing" ("Computación en la Nube") se ha convertido en el nuevo paradigma tecnológico de la década. Las ventajas son palpables -optimización de los recursos, diversificación de los servicios, independencia real entre hardware y software, adaptación en tiempo real a las demandas de capacidad y la flexibilidad...- y han hecho que esa cosa conocida como "la nube" se esté convirtiendo en el lugar en el que muchos proveedores almacenan sus datos y desde el que ofrecen sus servicios.
Este proyecto se sumerge de lleno en "la nube" y explora tanto el ámbito de aplicación -publico/privado-, como los diferentes servicios para los que se utiliza: software como servicio "SaaS", plataforma como servicio "PaaS", infraestructura como servicio "IaaS". Centrándose en este último, se estudian algunas de las aplicaciones software que hacen posible la IaaS, es decir, que posibilitan la utilización de diversos recursos físicos (procesadores, memorias,discos duros) por múltiples clientes (sistemas operativos, programas...): OpenStack, Eucalyptus, VMware y, más en profundidad, OpenNebula.
De la mano de esta última, revisamos las soluciones de virtualización (hipervisores) más populares y que permiten la utilización del hardware por múltiples sistemas operativos al mismo tiempo. Centrarán nuestra atención
KVM, XEN, VMware y, sobre todo, VirtualBox.
El grueso de nuestro trabajo estará en el desarrollo de un "driver" de VirtualBox para OpenNebula. Mediante este driver, OpenNebula será capaz de crear, monitorizar, administrar y migrar máquinas virtuales que funcionan
sobre VirtualBox.
El driver de VirtualBox, escrito en Ruby e integrado a modo de "plugin", será totalmente independiente de OpenNebula y fácilmente instalable. Tomando como base las descripciones en XML de máquinas virtuales generadas por OpenNebula, interactuará directamente con VirtualBox a través de la interfaz de línea de comandos que ofrece. Evitaremos así la utilización de capas intermedias (como libvirt), y procuramos un mayor control sobre las acciones que se realizan.
De esta manera, conseguimos ampliar las posibilidades de utilización de OpenNebula con una característica demandada por su comunidad de usuarios, aumentando su versatilidad y habilitando a VirtualBox como una opción más de virtualización dentro del campo de la "IaaS".
[ABSTRACT]
Cloud Computing has become the new technological paradigm of the decade. The advantages are real (resource optimization, diversification of services, real independence between hardware and software, real-time response to the capacity and flexibility demands) and have made that many providers keep their data and offer their services from that thing known as “The Cloud”.
This project dives into The Cloud, and explores both the public/private use case and the different services supported: Software As A Service (SaaS), Platform As A Service (PaaS), Infrastructure As a Service (IaaS). Paying
attention to the latter, some of the applications making IaaS possbile are studied. These applications allow the use of several physical resources (processors, memories, storage) by multiple clients (operating systems, software...). OpenStack, Eucalyptus, VMware and OpenNebula, in which we will go in depth, are some of them.
Hand in hand with OpenNebula, we will explore the most popular virtualization solutions (hypervisors) which allow the use of a single piece of hardware by several operating systems at the same time, together with the management and assignment of its resources. We will mention KVM, XEN,
VMware and above all, VirtualBox.
Our work will be focused on the development of a VirtualBox driver for OpenNebula. Using this driver, OpenNebula will be able to create, monitor, manage and migrate virtual machines running on VirtualBox.
The VirtualBox driver, written in Ruby and pluggable to the OpenNebula installation, will be totally independent and will come with an easy setup. Taking the XML virtual machine’s descriptions generated by OpenNebula as the starting point, the driver will communicate directly with VirtualBox through its command line interface. This way, we will avoid using extra layers (such as libvirt) and gain greater control over the actions that are runned.
By making VirtualBox one more option for IaaS virtualization, we will manage to increase OpenNebula’s versatility and use cases and give answer to a feature which was requested by its user community