he recopilado documentación sobre el funcionamiento de MPIO en sistemas AIX que seguro que a alguien le viene bien.
¿Qué es MPIO?
El
multipath I/O es la capacidad de tener redundancia de caminos a disco desde un equipo. Para entornos virtualizados, se necesitan al menos dos Virtual I/O Servers (VIOS)
con adaptadores virtuales que serán mapeados desde las particiones cliente.
¿Qué es PCM?
PCM es el
software que gestiona el multipath, es decir, se encarga del reconocimiento de
los dispositivos de almacenamiento y de la gestión y monitorización de los
caminos hacia los mismos.
Elección de "gestor" de MPIO
En AIX, existen varios paquetes distintos para gestionar el multipath:
Opción 1: AIXPCM o AIX default MPIOPCM (Multipathing Input/Output Path Control Module)
Opción 2: SDD (Subsystem Device Driver)
Opción 3: SDDPCM (Subsystem Device Driver Path Control Module)
El primero es el paquete por defecto que viene con el SO de AIX y VIOS, mientras que los dos últimos son paquetes adicionales que el administrador de AIX, normalmente en conjunto con el responsable de storage, decidirá si instalar ya que ofrecen funcionalidades adicionales, tales como múltiples algoritmos de balanceo.
NOTA: Será necesario actualizar SDDPCM cuando se actualice el AIX.
https://www.ibm.com/developerworks/mydeveloperworks/blogs/anthonyv/entry/upgrading_aix_don_t_forget_sddpcm4?lang=en
Como mi intención en este post no es inventar la rueda sino unir conocimientos que, creo, están un poco dispersos en distintas páginas de IBM, no voy a pasar a traducir páginas que explican perfectamente que es cada cosa y su uso, por lo que dejo los enlaces necesarios para aprender la diferencia entre estos términos y escoger el tipo más adecuado en cada caso.
- AIXPCM or SDDPCM?
http://www.ibm.com/developerworks/aix/library/au-multipathing/index.html
- SDD for AIX:
http://www-01.ibm.com/support/docview.wss?uid=ssg1S4000065
- SDD Compatibility Matrix for ESS, DS8000, DS6000 and SVC storage systems.
http://www-01.ibm.com/support/docview.wss?uid=ssg1S7001350#AIXSDDPCM
- Multipath I/O for XIV storage systems.
https://www.ibm.com/developerworks/mydeveloperworks/blogs/anthonyv/entry/xiv_and_aix_part_one32?lang=en
Algoritmos y atributos
PCM puede
ofrecer más de un algoritmo de routing, además de ayudar a recolectar
información utilizada para determinar y seleccionar el mejor camino para
cualquier solicitud de I/O.
La capacidad de
health-checking de PCM permite lo siguiente:
Estas funcionalidades se configuran según ciertos atributos asociados a los dispositivos que podremos ver con el comando:
lsattr -El hdiskX
De entre todos los atributos que nos ofrece este comando, el funcionamiento de multipath depende de los que explicamos a continuación:
- failover: sólo usa un camino cada vez. Si falla utiliza el siguiente según "path_priority".
- round_robin: distribuye el tráfico escogiendo un camino cada vez y según "path priority".
- load_balance: distribuye el tráfico escogiendo el camino con menor uso.
- Enabled: se evalua el healthcheck sobre caminos en estado "enabled".
- Failed: se evalua el healthcheck sobre caminos en estado "failed".
- Nonactive (default): se evalua el healthcheck sobre caminos sin I/O activo, incluidos los "failed".
Para
versiones de SDDPCM posteriores a 2.6.3 se añade el siguiente atributo:
- retry_path: la primera ocurrencia de un timeout no pone el camino en “failed”. Cuando un healthcheck resulte satisfactorio recuperará el camino que se podrá utilizar inmediatamente.
- fail_path: la primera ocurrencia de un timeout pone el camino en “failed”. Se necesitarán dos healthchecks satisfactorios consecutivos para habilitar de nuevo.
- disable_path: la primera ocurrencia de un timeout pone el camino en “failed”. Si en un periodo de tiempo se dan errores de timeout continuos el camino será deshabilitado y la reactivación deberá hacerse de forma manual.
¿Cuándo se marcará un camino como "failed"?
Hay varias
posibilidades para que un camino sea marcado como “failed”. Para detallarlas
dividiremos en los tres tipos de comandos que son enviados a los dispositivos:
1. De I/O:
- Límite: aunque es un atributo del dispositivo se evalúa por path.
- Límite=1.5·”queue depth”; si “queue depth” > 7
- Límite=5+”queue depth”; si “queue depth” <= 7
- Errores dentro del periodo: un error seguido de un timeout o dos timeouts seguidos.
2. Health check:
3. Inband:
Dicho esto, resaltar la importancia de subir el nivel de sddpcm a 2.6.3.x ya que la configuración de "timeout_policy=fail_path" mejorará sustancialmente el reconocimiento de caminos con errores y la recuperación, en caso posible, se realizará de forma mas segura.
Un saludo.