En ocasiones podría sucecer que algunas máquinas virtuales aparecen como “inaccesible” en el inventario de vCenter debido a algun problema que ha ocurrido en la comunicación con el Storage Array.

Es fácil saber en qué datastore está corriendo esa máquina virtual si la máquina virtual no está almacenada dentro de un clúster de datastores, sólo tienen que revisar qué datastore aparece sobre la máquina virtual en el vShere Web Client o HTML5, específicamente en la pestaña Resumen o Summary.

Sin embargo, ¿qué sucede si la máquina virtual está realmente almacenada en un clúster de datastores? El vSphere Web Client o el HTML5 les dirá que corre desde un clúster de datastores, pero no en dirá nada acerca de un datastore específico. Entonces, ¿qué hacemos?

Considere lo siguiente

Si tiene máquinas virtuales que aparecen inaccesibles, es posible que el ESXi tenga problemas de conectividad hacia uno o varios datastores. Lo mejor será enfocarse en este problema y solucionarlo lo antes posible y quizás el siguiente proceso podría no ser necesario.

Obteniendo la información desde la base de datos de vCenter

Hay algunos campos en la base de datos de vCenter que pueden ayudarnos a determinar dónde reside una máquina virtual. Sigan los pasos a continuación:

  • Inicie sesión en la Base de Datos de vCenter. Use SQL Management Studio si MSSQL o psql si es vPostgres. El KB 2147285 les explicará como conectarse con psql.
  • Corran los siguientes queries.
    • Obtenga el  “Host ID” del ESXi que tiene máquinas como “inaccessible“.

SELECT ID, DNS_NAME FROM VPX_HOST WHERE DNS_NAME = 'nombre del ESXi';

Hostd id 359172 – esxi1.ps.com

  • Luego determinen la ubicación del archivo de configuración (.vmx) de cada VM con el “host id” del query anterior:

SELECT LOCAL_FILE_NAME FROM VPX_VM WHERE HOST_ID = 359172 AND GUEST_STATE = 'unknown';

Ejemplo de salida del comando anterior:

/vmfs/volumes/53b1a68d-6baa3b83-1b46-0025b5aa001e/vm1/vm1.vmx
/vmfs/volumes/53b1a8fb-0fff3a18-a8a2-0025b5aa001e/vm2/vm2.vmx
/vmfs/volumes/53b1a762-2a9e3838-8628-0025b5aa001e/vm3/vm3.vmx

Convirtiendo el UUID hacia un nombre de datastore

El query anterior nos da la ruta completa del datastore que tiene las VMs, pero nos los da con el UUID del Datastore y no con el nombre.

Con este otro query podemos saber cuál es el nombre:

SELECT NAME, URL FROM VPX_DS_INFO WHERE VMFS_UUID = 'uuid del query anterior';

Es necesario ejecutar ese query por cada UUID que apareció en el query donde encontramos la ruta del .vmx de cada VM.