Acelerar inicio de un Vagrant box lento en host Windows

Cuando manejamos maquinas virtuales con VirtualBox todo va de maravilla, pero cuando usamos maquinas virtuales de forma un poco más automatizada encontrar problemas se vuelve un dolor de cabeza. Hace unos meses decidí probar Vagrant para la automatización en la creación de entornos de desarrollo en Windows 10 con maquinas corriendo Ubuntu. El primer y principal problema que note fueron errores del tipo: "This means that Vagrant was unable to communicate with the guest machine within the configured ("config.vm.boot_timeout value) time period.".

powershell vagrant up

Es más que obvio que es un timeout pero la razón principal la encontré al leer un blog que explicaba que cuando ajustamos la configuración de la maquina virtual para usar mas núcleos del procesador en lugar de acelerar la maquina provocamos que está se ponga lenta por un error en el que VirtualBox no reconoce los núcleos reales del procesador de los creados por las tecnologías HyperThreading de Intel y SMT de AMD.

Entonces para acelerar una maquina virtual en Vagrant ajustamos el numero de cores a 1 y aumentamos el uso de memoria RAM hasta lo que sea necesario.

En nuestro "Vagrantfile" buscamos la seccion que tenga config.vm.provider "virtualbox" do |vb| o lo más similar posible para que quede así:


  config.vm.provider "virtualbox" do |vb|
  #   # Display the VirtualBox GUI when booting the machine
  #   vb.gui = true
  #
  #   # Customize the amount of memory on the VM:
    vb.memory = "2048"
    vb.cpus = 1
  #  vb.gui = true
  end

La opcion vb.cpus es la que tenemos que ajustar en 1. Para revisar que tal la velocidad podemos activar el GUI con vb.gui = true. El uso de memoria RAM lo ajustamos con la opción vb.memory y es en MB. Para obtener un mejor desempeño lo ideal es colocar el box en un disco de estado solido y agregarle swap para no tener problemas con herramientas como composer. Otro consejo pero un poco más complicado de implementar es evitar el uso de las carpetas compartidas de VirtualBox que son las que Vagrant usa por defecto, y usar de forma alternativa NFS, lo ideal es una combinación entre carpetas compartidas y NFS. Para compartir archivos entre Ubuntu como guest y Windows 10 como host con NFS.

Comentarios