domingo, 20 de noviembre de 2011

VirtualBox: Usando el memory ballooning

Cuando se hacen funcionar varias máquinas virtuales al mismo tiempo, es fácil quedarse sin memoria. Para esas situaciones, VirtualBox nos permite compartir cierta parte de memoria de unas máquinas virtuales a otras. Esto es muy útil cuando queremos abrir temporalmente una máquina sin cerrar otra que estaba ocupando un gran espacio de memoria.
La técnica del memory ballooning, que podríamos traducir como globo de memoria, sirve para hacer que una de las máquinas virtuales comparta temporalmente parte de su memoria para su uso por otras máquinas.
Para utilizarlo, necesitamos:
  • VirtualBox 3.2 o superior.
  • Sistema anfitrión (base) de 64 bits (Windows o Linux). Esta técnica no se soporta en Mac ni en sistemas de 32 bits. Las máquinas virtuales sí pueden ser de cualquier sistema y arquitectura.
  • Los sistemas huésped (virtuales) que vayan a ceder su memoria han de tener instaladas las VirtualBox Guest Additions
Para aplicar el memory ballooning, utilizamos el siguiente comando (que no existe en la interfaz gráfica):
VBoxManage controlvm "<nombre huésped>" guestmemoryballoon <megabytes>
Por ejemplo, si tenemos una máquina denominada "Windows7" y queremos que ceda un globo de 256 MB, el comando será el siguiente:
VBoxManage controlvm "Windows7" guestmemoryballoon 256
Para desactivarlo, simplemente asignamos al globo el valor 0:
VBoxManage controlvm "Windows7" guestmemoryballoon 0
Ambos comandos se usan cuando la máquina está funcionando. También podríamos asignar el globo permanentemente, de manera que cada vez que arranque ceda el mismo globo. Para eso usamos el comando modifyvm en lugar de controlvm (cuidado porque la sintaxis no es exactamente igual).
VBoxManage modifyvm "<nombre huésped>" --guestmemoryballoon <megabytes>
¿Cómo funciona?

El driver de las Guest Additions funciona dentro de la máquina huésped (virtualizada) y puede acceder al modo núcleo (kernel) del sistema operativo huésped. Cuando se solicita el globo de memoria, este driver solicita esa cantidad de memoria al kernel, dejandolo bloqueado para su uso exclusivo. El driver Additions se comunica internamente con el hipervisor de VirtualBox en el sistema anfitrión, cediendole esa memoria que ha reservado.
Es importante aclarar que el total de memoria gestionado por cada sistema (huésped y anfitrión) no se ve alterado. El sistema huésped sigue creyendo que esa memoria está bajo su control, aunque no la usa por estar bloqueada por el driver de Additions. El sistema anfitrión, por su parte, no ve incrementada su memoria libre, dado que el globo lo tiene reservado el hipervisor de VirtualBox, el cual lo usará para darle más memoria a otras máquinas huésped.

Una variante aún más avanzada del memory ballooning es la denominada page fusion, la cual abordaremos en un futuro artículo.

Fórum Técnico ofrece gratuitamente y bajo licencia Creative Commons BY-NC-ND 3.0 un excelente curso de Introducción a la Virtualización con VirtualBox.

VirtualBox es un software gratuito y (parcialmente) de código abierto propiedad de Oracle Corporation.

No hay comentarios:

Publicar un comentario

Expresa tu opinión respetando a los demás y a unas mínimas reglas del lenguaje castellano.