# OpenStack
## Introducción a OpenStack

Estudio sobre la virtualización con OpenStack

## Sobre esta obra

El presente documento es el resultado de la colaboración de diferentes autores durante el estudio de OpenStack y la virtualización con software libre.

## Introducción histórica

En informática la virtualización no es un concepto nuevo, pero gracias a la evolución de los últimos tiempos se ha convertido en un concepto cotidiano ya que el hardware actual permite virtualizar con muy poca pérdida de rendimiento.
Lo que unido al desarrollo de herramientas de virtualización y de gestión de máquinas virtuales ha hecho que la virtualización irrumpa con fuerza en muchos ámbitos. Máquina física, sistema operativo, hipervisor y máquinas virtuales Explicar evolución: - Máquina física que ejecuta un programa - Se añade el monitor para que se cargue un lote tras otro - El monitor evoluciona en sistema operativo. De modo que en la actualidad, los sistemas operativos de tiempo compartido permite ejecutar múltiples procesos de manera concurrente. - Una nueva capa, el hipervisor, hace de supernúcleo para las máquinas virtuales

### Emulación y virtualización

Para poder entender la emulación y virtualización es necesario saber cuál es la diferencia entre estas.
Mientras que la emulación nos permite ejecutar un programa en un dispositivo o equipo para el que no fue desarrollado, modelando a la perfección el hardware del dispositivo original, en la virtualización la máquina virtual y la máquina física comparten el hardware.
Lo que permite un mayor rendimiento que en el caso de tener que emular un hardware diferente.

### Virtualización de la red

La virtualización es la capacidad de simular una plataforma de hardware, tal como un servidor, un dispositivo de almacenamiento o recurso de red a través del software. Cuando se aplica a una red, la virtualización crea una vista lógica en software del hardware y software de recursos de red (switches, routers, etc.) Los dispositivos de red físicos son simplemente responsable del envío de paquetes, mientras que la red virtual (software) proporciona una abstracción inteligente que hace que sea fácil de implementar y administrar servicios de red.

### Escenarios cotidianos para la virtualización
## Tipos de virtualización
### Virtualización completa

La virtualización completa es donde la máquina virtual simula un hardware equivalente al virtualizado permitiendo un sistema operativo "huésped" ejecutandose de forma aislada y segura. Hay dos técnicas distintas por el motivo de la arquitectura x86 que utiliza diferentes niveles de acceso para el sistema operativo y para las aplicaciones de usuario:
* Virtualización completa con traducción binaria: esta técnica traduce las instrucciones del kernel y del sistema operativo virtualizado mientras que se ejecutan directamente las instrucciones de las aplicaciones del usuario. Puede llevarse a cabo en cualquier hardware.
* Virtualización completa asistida por hardware: en esta técnica la tecnología para que las máquinas virtuales puedan ejecutar el sistema operativo en el nivel privilegiado como si estuviera instalado físicamente. En otras palabras, lo que antes se hacía con una traducción binaria ahora se ejecuta directamente.

### Paravirtualización

Es una técnica que permite virtualizar sistemas operativos. Cada máquina virtual emula a una máquina independiente, permitiendo así utilizar un sistema operativo o varios por cada máquina.
El sistema operativo guest debe tener un código hipervisor especifico para poder realizar las llamadas (hypercall) a la estación de trabajo paralela y poder efectuar la comunicación.
El envio de paquetes lo efectua el monitor de máquina virtual y las señales NIC también.
El envío de señales al sistema guest es costoso, así que el rendimiento se reducirá.
Bibliografía https://es.wikipedia.org/wiki/Paravirtualizaci%C3%B3n

## Descripción de OpenStack

OpenStack es un proyecto de [software libre]

### Virtualización de aplicaciones

La virtualización de aplicaciones el usuario podrá ejecutar en su ordenador la aplicación que realmente no está instalada en su equipo. Con está aplicación descargada desde un servidor de la red que suministrará el paquete del que obtiene la aplicación y sus configuraciones necesarias para su ejecución. Esta aplicación se ejecutará localmente en el sistema en un entorno virtual protegido sin ser modificado por nada del sistema local o interfiera en el resto de aplicacaciones.

## Bibliografía

Documentación oficial de OpenStack: http://docs.openstack.org/