Error en xenserver SR_Backend_Failure_47

El otro día un cliente me llamó diciéndome que su sistema iba extremadamente lento. En un principio me acojoné un poco porqué este cliente funciona con Datacore SANsymphony en su versión 9.0 PSP4 (algún día hablaré del Virtual Storage) y con un sistema horrendo llamado Citrix XenServer.

Vale…supongo que ya habré herido algún sentimiento, pero pienso lo escribo: en mi particular ranking, este sistema ocupa el último puesto en cuanto a virtualización. No me gusta nada. Pero como tengo clientes que lo usan, debo saber aprender a manejarlo.

Siguiendo con lo que decía, mi cliente me llamó informándome que todo iba muy lento y cuando me conecté a la consola XenCenter, me fijé que todos los discos virtuales (a.k.a SR), habían perdido un path iSCSI hacia la V-SAN. (NOTA: los errores de multipathing son parecidos a la imagen siguiente, ya que podemos ver los dos servidores y en uno de ellos nos marca Connected y en el otro Unplugged)

¿Y ahora como los conecto? Bueno … pues tirando de manuales:

  • Hacemos clic sobre el servidor xenserver que ha perdido la conexión (NOTA: En un entorno multipathing, los servidores tienen varios caminos o path para acceder a los discos duros de la cabina) y pulsamos la pestaña “Console”

image

  • Veréis que es una consola Linux
  • En ella sacaremos primero de todo el error que nos da. Para ello, primero de todo buscamos el uuid (Universal Unique IDentifier) de nuestro SR asociado al host que ha perdido el path
[root@nuestroservidorxen]# xe sr-list
  • Cogemos el uuid del PBD (Physical Block Disk) asociado al SR anterior
[root@nuestroservidorxen]# xe pbd-list sr-uuid=<em>[Valor que nos a dado el comando anterior]</em>
  • Buscamos el parámetro que nos da el problema:
[root@nuestroservidorxen]# xe pbd-param-get param-name=other-config uuid=<em>[Valor que nos a dado el comando anterior]</em>

Bien, pues nos econtramos con un SR_Backend_Failure_47, que nos viene a decir que el servidor xenserver no se puede conectar con el recurso iSCSI. Dicho esto, debemos comprobar si realmente no existe comunicación entre el host i el recurso. Para ello haremos un ping a la interface de red del recuso iSCSI. Si NO responde, deberemos hallar el problema que muy probablemente será físico, pero si el ping responde, lo más seguro es que el problema sea lógico.

En nuestro error, el problema es lógico, ya que los ping responden sin problemas. Así mismo, para terminar de verificar el problema, podemos probar los siguientes comandos:

[root@nuestroservidorxen]# iscsiadm –m node

Con este comando veremos todos los IQNs disponibles y activos

[root@nuestroservidorxen]# iscsiadm –m session

Con este comando veremos todas la conexiones activas. Si no hay ningún error en ningún comando, entonces es que nuestro xenserver no se puede conectar al SR iSCSI (problema lógico). Pues ale, vamos a probar de conectarlos de nuevo…y lo haremos de dos formas. Pero ¡ojo! la/s máquina/s virtual/es asociada/s a este SR, deben estar apagadas.

Por consola:

root@nuestroservidorxen]# xe sr-list

[root@nuestroservidorxen]# xe pbd-list sr-uuid=<em>[Valor que nos a dado el comando anterior]</em>

[root@nuestroservidorxen]# xe pbd-plug uuid=<em>[Valor que nos a dado el comando anterior]</em>

Por el XenCenter

  1. Apagamos la/s máquina/s virtual/es asociada/s al SR que ha perdido la conexión
  2. Hacemos clic con el botón derecho sobre el SR que ha perdido la conexión y seleccionamos Detach con lo que desconectaremos el SR de todos los xenserver
  3. Hacemos clic con el botón derecho sobre el SR que hemos desconectado y seleccionamos Attach, con lo que podremos generar una conexión nueva

Si todo a ido bien, nuestro SR volverá a estar operativo con los dos (o los que sean) path iSCSI activos de nuevo.

Tip: Múltiples conexiones Terminal Server en Windows 7

Un dia me encontré que mientras estaba conectado a mi HTPC con Windows 7 (¿que passa?  ^_^ a mi me funciona muy bien), decidí abrir la conexión Terminal Server para poder conecatarme mediante DynDNS y poder gestionat mi JDownloader en mi escritorio remoto y …. ¡tachán! Windows 7 no deja tener 2 usuarios conectados ni por Terminal Server ni por nada. Por lo que leí, se trata de una limitación hecha a propósito por parte de Microsoft.

Al final y googleando un poco (señores de la RAE, una palabra más a tener en cuenta) encontré la solución tanto para la versión 32 bits, como para la de 64 bits.

Se trata de sustituir el fichero termsrv.dll. Una vez hecho esto, hacemos lo siguiente:

  • Para la versión 32 bits:

Inicio -> ejecutar y escribimos

%WINDIR%\system32\termsrv.dll y lo sustituimos

  • Para la versión 64 bits:

Inicio -> ejecutar y escribimos

%WINDIR%\SysWOW64\termsrv.dll

NOTA IMPORTANTE: Debemos renombrar el fichero 32_termsrv.dll por sólo termsrv.dll

Ahora ejecutamos el install.cmd y ¡listo! La única cosa que nos quedará por hacer es crear un usuario nuevo y ponerlo en el grupo de TerminalServer 🙂

Archivo comprimido con los dos dll y el cmd | Descárgalo aquí Si no funciona, mandadme un mail y lo reviso