jueves, marzo 17, 2011

intentando explicar la virtualización

Permíteme intentar explicar un poco de que va eso de la virtualización.
Un ordenador es hierro (la parte que se puede tocar) y programas.
Uno de los programas es un programa especial, es el sistema operativo (que puede ser Windows, Linux, AIX, Solaris y muchos otros)
Este programa es especial porque es el único que habla con las partes “hierro” (las partes físicas)
El resto de programas le dicen al sistema operativo, escribe en disco tal cosa, pinta en la pantalla tal cosa, escribe en el cable de red tal cosa, etc…
Y es el sistema operativo el que le dice a las aplicaciones, “oye tú, han pulsado tal tecla, y ahora han movido el ratón, etc…)
Por tanto, cada ordenador tiene instalado un sistema operativo para interactuar con el hardware (la parte física)
Ahora supongamos que hacemos un programa mentiroso, y este programa, engaña a otro programa (que es un sistema operativo), haciéndole creer que está hablando con una máquina real, cuando en realidad es un programa mentiroso
Conseguimos de esta forma que un programa diseñado para hablar con la parte física del ordenador, en realidad hable con otro programa, pero sin saberlo, ha sido engañado.

Es como matrix pero al revés (el engañado es un programa)
Una vez dado este paso, es trivial engañarle varias veces. Podemos tener varios sistemas operativos ejecutándose al mismo tiempo en una sola máquina real
¿Para qué sirve esto?
En el pasado se utilizó para probar programas y especialmente probar sistemas operativos mientras estos se están creando.
Ahora se están haciendo populares por ahorro de costes.
Se ahorran costes comprando menos máquinas y no menos importante, se ahorran costes de mantenimiento.
AHORRO POR COMPRA DE MÁQUINAS
Sin extenderme mucho, los programas no son capaces de sacarle jugo a toda la máquina (y en el futuro podrán menos, todo por culpa de una decisión en los años 60)
Además, salvo en contextos específicos, las máquinas están tocándose las narices esperando que le pidan que haga algo.
Por estas dos razones, podrías comprar menos máquinas y compartir los recursos físicos de las máquinas creando máquinas virtuales dentro de la máquina principal.
No hay recursos suficientes para que todos demanden el 100% de la máquina al mismo tiempo, pero… eso no suele pasar; y si sucediera, supondría un comportamiento más lento durante unos segundos de las máquinas. Si eso no es un problema, se ahorra mucho (comprando menos máquinas, uso más eficiente, menos consumo eléctrico)
AHORRO MANTENIMIENTO
Supongamos que se rompe una máquina, hay que comprar otra, reinstalar el sistema operativo y todos los programas, recuperar todos los documentos, configuraciones, etc…
Es una tarea pesada.
Supongamos que hay que cambiar la máquina porque es antigua o le falta memoria o disco duro o…
Lo mismo, muy pesado en tiempo y propenso a problemas (especialmente la parte de resintalación y recupareración de datos y configuraciones)
Para todo esto es necesario sacar copias de seguridad de todo. Esto debería de verificarse periódicamente (casi nunca se hace por lo pesado que es).
Por cierto, todo sistema de contingencia no verificado periódicamente, es peor que ningún sistema de contingencia (crea una falsa sensación de seguridad)
O simplemente hace falta una máquina nueva
¿Cómo sería con un sistema virtualizado?
La máquina virtual con TODO, está en un fichero.
¿Copia de seguridad? Es tan sencillo como copiar el fichero (la máquina virtual).
¿Una máquina necesita más disco duro o memoria?
Pues se le da VIRTUALMENTE, sin necesidad de abrir ninguna caja.
Máquina nueva… copia de fichero, ajustes de configuración y voalá
Se cambia una máquina física y nadie se entera, siendo además un proceso muchísimo más sencillo, sólo hay que copiar un fichero por cada máquina (virtual).
Se pueden virtualizar servidores y ordenadores de trabajo (workstations con su Windows Excel y resto de programas)
Esta es la virtualización de máquinas, pero hay otra cosa llamada virtualización de aplicaciones, que también es muy, muy interesante.
Para sistemas de alto rendimiento o tiempo real (son cosas diferentes), la virtualización es un problema delicado, pero todo depende de los niveles de exigencia que hay que valorar con el ahorro de costes.
La virtualización es algo que los usuarios deberían tener en casa para reducir también costes de mantenimiento (que generalmente un usuario no sabe hacer), pero seguramente llegue antes la nube para ayudar a los usuarios (google tiene un proyecto muy ambicioso en este sentido y los usuarios necesitan mucha ayuda)
De la nube, si quieres te cuento en otro momento, pero te anticipo que suele haber virtualización de máquinas (engañar al programa sistema operativo), virtualización de aplicaciones (engañar a un programa “normal”), sistemas distribuidos (las cosas están por ahí vs las cosas están ahí)
Espero que no hay sido muy aburrido y ojalá haya podido ayudar a que entendáis mejor esto
hablamos

No hay comentarios: