vSphere – ¿Que es VMware PSA?

Que tal gente, hoy les voy a hablar de un tema muy interesante e importante de entender. Con este post espero dejar en claro cual es su funcionalidad y los elementos que lo conforman.

VMware PSA o Pluggable Storage Architecture es una serie de APIs que forman parte de vStorage  a través de los cuales terceros pueden insertar su propio código para multipathing y/o balanceo de almacenamiento, con esto se tiene una integración mucho más completa entre VMware y los sistemas de almacenamiento.

Como podemos ver en esta imagen VMware PSA está constituida por varios elementos que estaremos comentando a continuación. Comencemos por conocer que tareas tiene PSA:

  • Se encarga del escaneo y descubrimiento de paths hacia el almacenamiento y también de eliminar paths.
  • Una vez descubierto los paths se basa en reglas definidas (claim rules) para asignar un MPP para el manejo de los mismos.
  • se encarga del manejo de I/O.
  • Crea estadísticas de operaciones I/O para dispositivos lógicos y físicos.

Perfecto, ya tenemos una idea de las tareas que se encarga PSA vamos a ir describiendo los demás componentes:

MPP: Por sus siglas Multipathing Plugin, VMware ofrece un MPP nativo llamado NMP (Native Multipathing) , básicamente esta capa de la arquitectura PSA se encarga de reconocer el tipo de arreglo activo/activo, activo/pasivo , IBM , EMC, Netapp,etc,etc. una vez que se tiene claro que tipo de almacenamiento es con el que se está trabajando MPP o NMP se encarga de asignar un PSP basado en reglas definidas  (las cuales también tenemos capacidad de crear) y un SATP basado en el tipo de arreglo que se detecto.

Como se comentaba anteriormente a través de la arquitectura PSA terceros pueden crear sus plugins específicos , en este caso podemos encontrar a EMC con Powerpath el cual es un MPP creado exclusivamente para arreglos EMC.

SATP: Storage Array Type Plugin, esta capa o plugin de PSA se encarga de monitorear el estado de los paths físicos, dado a que este plugin es activado según el tipo de arreglo con el que estamos trabjando, es capaz de activar paths que estén en estado passivo o standby en el caso de arreglos activos/pasivos si es que se detecta que el path activo tiene problemas, en pocas palabras se encarga del failover de los paths. Este se configura globalmente para cierto tipo de almacenamiento, es decir este no se configura por LUN.

Podemos conocer todos los SATPs que VMware ofrece en su NMP desde la linea de comando haciendo uso de esxcli

Nuevamente cabe recordar que aquí se podrían estar teniendo SATPs de terceros ya que en cualquier elemento de PSA se puede tener código de terceros.

PSP: Path Selection Plugin, esta capa o plugin  se encarga de balanceo de cargas entre los paths, es responsable de seleccionar el path por el cual los datos estarán viajando hacia el almacenamiento, en el caso de almacenamientos que funcionen con ALUA (Asymmetric Logical Unit Access) se encarga de seleccionar el path óptimo o con mejores características.

VMware ofrece como parte de su NMP 3 tipos de PSPs:

  • Fixed: Utiliza el path que hayamos definido como “preferred” , en el caso que esto no se haya hecho, en el momento de booteo se selecciona el primer path descubierto. En el caso que el path preferido no se encuentre funcionando se selecciona uno alternativo para mandar los datos, en cuanto el path preferido se muestra como funcional se regresa a utilizar este path. Este es el PSP default para almacenamientos de tipo activo/activo.
  • MRU: Most Recently Used por sus siglas en ingles,utiliza el primer path descubierto en el momento de booteo, en el caso que este path se encuentre abajo se utiliza otro path alterno y se continua utilizando este mismo. Este PSP es el default para arreglos activo/pasivo. Este PSP funciona con almacenamientos que soportan ALUA en el momento de booteo selecciona el path que tenga un estado óptimo.
  • Round Robin: hace uso de todos los paths disponibles hacia el almacenamiento, va rotando entre los paths basado en un número de operaciones I/O (1000 iops por default) con esto se logra un balanceo de los datos a través de todos los paths disponibles. Cabe destacar que el valor de operaciones para hacer la rotación es configurable desde esxcli. Este PSP también funciona con almacenamientos que soportan ALUA, solo que en este caso se estarán utilizando todos los paths en estado óptimo para estar enviando datos a través de ellos.

¿Cómo podemos ver las reglas o claim rules en las cuales se basa PSA para asignar ya sea NMP o un MPP de terceros?

esxcli corestorage claimrule list

¿Cómo podemos saber que PSPs tenemos disponibles en NMP?

esxcli nmp psp list

¿Cómo podemos asignar un PSP especifico a un dispositivo?

Primero tenemos que averiguar el NAA (Network Address Authority) , para esto tenemos varias opciones, esxcfg-scsidevs, esxcfg-mpath o esxcli, para continuar con el uso de esxcli vamos a averiguarlo haciendo uso del mismo:

esxcli nmp device list

En la imagen podemos ver que tenemos el valor ” naa.60a980006e424f4f6c4a595a6d666f58 ” , si quisiéramos asignar el PSP MRU a este dispositivo tendríamos que ingresar lo siguiente:

esxcli nmp device setpolicy –device naa.60a980006e424f4f6c4a595a6d666f58 –psp VMW_PSP_MRU

¿Cómo podemos ver información sobre los PSPs y SATPs que están en uso en mis dispositivos utilizando el vSphere client?

Ingresamos con nuestro vSphere Client a nuestro vCenter o ESX, una vez dentro seleccionamos un host y vamos a la pestaña de “configuration” , dentro de la pestaña de configuration, en el lado izquierdo tenemos un menú de “Hardware” , damos click en “Storage” y se nos mostrarán los datastores que tenemos , damos click en uno para seleccionarlo y en la parte inferior podemos ver información sobre el mismo, tenemos un link de “properties”, damos click sobre dicho link y se nos abrirá una nueva ventana, donde daremos click en “manage paths” dentro de la ventana que se nos abrirá tendremos la información , aquí les dejo una imagen: