En esta ocasión nos vamos a centrar en la solución de un par de errores que me han aparecido varias veces en los últimos días durante una actualización de infraestructura en la cual se debía constantemente liberar hosts entrándolos en modo mantenimiento para que a través de las funcionalidades de DRS y vMotion evacúe las VMs y de esta manera poder realizar la correspondiente actualización del hipervisor. Es por esta razón hemos replicado su comportamiento en un ambiente controlado de laboratorio.
Pues bien, el problema radica en que algunas máquinas fallan en la tarea de vMotion con el error: “The VM failed to resume on the destination during early power on”, impidiéndonos hacer el movimiento en caliente y como consecuencia no podemos ingresar el host en modo mantenimiento. Hasta ahí un parte del problema ya que al apagar la VM esta se migra como es de esperarse, pero no enciende indicando ahora que no es posible crear el archivo .vswp con el error “Unable to create a swap file. The value of ‘sched.swap.dir’ specified in the VM’s configuration file is invalid”
A los que no les ha pasado que suertudos son. Sin embargo, pueda que en algún momento les pase y en ese momento !que no panda el cunico!, siguiendo el procedimiento a continuación saldremos adelante.

CAUSA #1
Este problema se produce cuando se realiza un Storage vMotion para mover los disco de la máquina virtual a otro Datastore mientras el Change Block Tracking (CBT) está habilitado y la máquina virtual está encendida. Esto provoca que los archivos de configuración de la máquina virtual permanezcan en la ubicación original y adicionalmente los archivos Disk-Name.ctk de la máquina virtual queden en un estado bloqueado, lo que evita que las futuras operaciones de vMotion tengan éxito.
SOLUCIÓN #1
Una vez entendido por qué no podemos mover la maquina, vamos a resolver el problema siguiendo los siguientes pasos:
1. Apague la máquina virtual de manera controlada
2. Click derecho sobre la máquina y Edit Settings
3. Click en la pestaña VM Options
4. Expanda la opción Advanced y click en Edit Configuration… frente a Configuration Parameters
5. Para filtrar la búsqueda escriba ctkEnabled en el campo superior derecho
6. Verifique que los valores de ctkEnabled y scsix:x.ctkEnabled se encuentren en False, sino es así cámbielos. y haga click en OK

7. Verifique que en la opción ‘Swap File location’ se encuentre en la opción Default, a no ser que en su infraestructura tenga un datastore con discos de estado solido dedicado a los archivos swap. Haga click en OK para aceptar el cambio en la configuración

8. Migre la máquina a otro host disponible y enciéndala
9. Verifique que la VM se pueda mover entre diferentes hosts en el estado Powered On.
Nota: Si después de realizar el procedimiento anterior no presenta ningún problema, usted ha sido bendecido y puede irse a tomar un café con la satisfacción de haber resuelto el problema.
Pero si por el contrario, luego de hacer el procedimiento anterior la máquina no enciende en el otro host con el siguiente error “An unexpected error was received from the ESX host while powering on VM vm-xxxxx,
Failed to power on VM, Unable to create a swap file. The value of ‘sched.swap.dir’ specified in the VM’s configuration file is invalid”, entonces continúe con el procedimiento.
CAUSA #2
Este problema ocurre cuando la ruta sched.swap.dir no se actualiza en el archivo .vmx de la máquina virtual después de migrarla.
SOLUCIÓN #2
1. Apague la máquina virtual de manera controlada
2. Migre la máquina a otro Datastore de manera temporal o definitiva
3. Inicie sesión en el host en donde se aloja la VM. Utilice SSH con Putty.exe si es amante de la línea de comandos o una sesión SFTP con WinSCP si prefiere la interfaz grafica. Navegue hasta la siguiente ruta
/vmfs/volumes/datastore/virtual_machine/, donde datastore es el nombre del datastore y virtual_machine es el nombre de la máquina
4. Si utiliza Putty.exe, ejecute el comando vi virtual_machine.vmx para ingresar y editar el archivo de configuración de la máquina. Por otra parte, si utiliza WinSCP haga doble click en el archivo virtual_machine.vmx para abrirlo
5. Cualquiera que haya sido el método para ingresar al archivo de configuracion .vmx, busque la entrada nombrada como sched.swap.dir. Podrá observar que la ruta indicada para dicha entrada no corresponde con el datastore que almacena los archivos de la maquina. Proceda entonces a borrar el contenido dentro de las comillas para forzar a que en el próximo encendido se actualice la entrada.

6. Si usó Putty.exe y el comando vi para editar el archivo, presione la tecla Esc, luego escriba :wq! para guardar y salir. Si por el contrario usó WinSCP haga click en el icono de guardar
7. Recargue el archivo de configuración de la máquina virtual en el host ESXi ejecutando el siguiente comando a través de una sesión SSH en el host que aloja la VM
for a in $(vim-cmd vmsvc/getallvms 2>&1 |grep invalid |awk ‘{print $4}’|cut -d \’ -f2);do vim-cmd vmsvc/reload $a;done
8. Antes de encender la maquina volvamos a Edit Settings | VM Options | Advanced | Configuration Parameter | Edit Configuration… y verifique que los valores de ctkEnabled y scsix:x.ctkEnabled se encuentren en False, sino es así cámbielos. y haga click en OK hasta cerrar la ventana de configuración de la VM.
9. Encienda la máquina virtual. Si todo ha ido bien la máquina encenderá sin problemas y podrá hacer el vMotion en el estado Powered On como debe ser.


ATENCIÓN!!!
TODOS LOS NOMBRES DE VMS USADOS EN ESTE BLOG SON INVENTADOS Y OBEDECEN A UN AMBIENTE DE LABORATORIO TEMPORAL, UTILIZADO PARA FINES DE ESTUDIO.
REFERENCIAS
- Migrating a virtual machine using vMotion fails after performing a disk-only Storage vMotion operation with change block tracking enabled (2082649)
- Investigating virtual machine file locks on ESXi (10051)
- Finding the lock owners of a VMDK or file on a VMFS datastore in VMware ESXi 5.5 P05 and later (2110152)
- Unable to create a swap file. The value of ‘sched.swap.dir’ specified in the VM’s configuration file is invalid» error in ESXi 5.0 host (2119464)
- Reloading a vmx file without removing the virtual machine from inventory (1026043)