Una semana más os traigo un post de troubleshooting en VMware, no hace mucho he estado montando una replicación entre servidores de base de datos MySQL y me he encontrado esta semana un problema al consolidar el snapshot de la máquina virtual, que realicé antes de cargar los datos.
A veces tenemos la mala costumbre de hacer snapshots de máquinas virtuales y olvidarlos, en este post no voy a entrar en cómo funcionan los snapshots, si alguno no lo sabe, os recomiendo leer el post de Federico Cinnalli "Todo sobre los Snapshots en VMware"
Cuando un snapshot necesita consolidarse, en la pestaña summary de la máquina virtual veremos una alerta indicandolo:
Lo normal sería ir a la máquina virtual, a las opciones de snapshot y consolidarlo, de esta forma uniremos los redo logs en un único disco.
Al realizar dicha operación, despues de bastante tiempo de proceso, me he encontrado con un error indicando:
maximum consolidate retries was exceeded for scsix:x Consolidate Disks message: The virtual machine has exceeded the maximum downtime of 12 seconds for disk consolidation
Cómo he comentado anteriormente, el servidor en el cual es necesaria la consolidación, es un servidor de réplica de MySQL en modo esclavo, constantemente está realizando operaciones de escritura en disco, aplicando los binlog que son enviados por el master, por lo que a la hora de consolidar el snapshot se genera más transferencia de datos que el ratio de consolidación, de esta forma despues de 10 intentos (valor por defecto en snapshot.maxIterations) no encuentra el momento de realizar una consolidación del snapshot de forma sincronizada.
Si esto es un problema puntual, tiene fácil solución, si no nos importa que la máquina virtual pueda estar sin responder segundos / minutos durante la consolidación. Unicamente necesitamos cambiar un parámetro en la configuración avanzada de la máquina virtual, para forzar que la consolidación sea asíncrona, este cambio podemos realizarlo con PowerCLI en caliente y sería así:
get-vm dbigcloud01 | New-AdvancedSetting -Name snapshot.asyncConsolidate.forceSync -Value TRUE -Confirm:$False
De esta forma, hemos forzado que la consolidación sea asíncrona y la consolidación se pueda llevar a cabo, aun permitiendo que la máquina virtual llegue a estar sin responder mientras dure el proceso.
Si este proceso es provocado por algún sistema de backup, tendréis que jugar con los párametros siguientes:
snapshot.maxConsolidateTime snapshot.maxIterations
Con ésto conseguimos aumentar o reducir el numero de intentos y el tiempo que pueda llevarse la consolidación.
Os recomiendo leer los KB2082886 y KB2039754 ya que os puede ayudar a entender algo mejor este proceso.