Buscar este blog

miércoles, 12 de diciembre de 2012

Scripting en VIO Server

En este post explico como ejecutar comandos propios de la CLI del VIO desde la shell de AIX (del VIO Server).

Esto permite definir scripts y ejecutarlos para realizar tareas que de otra forma se tendrían que hacer a mano.

Es un tema que yo ya conocía, y es probable que vosotros también, pero como me ha sido bastante útil hace poco lo pongo en el blog por si a alguno le viene bien.

Al iniciar sesión en un VIO Server (normalmente con el usuario padmin) se accede a una CLI propia del VIO, con restricciones a la hora de realizar algunas tareas.

Esto se soluciona accediendo a la shell propia del AIX con el comando oem_setup_env. El problema es que en la shell normal de AIX no están disponibles los comandos de la CLI del VIO, solo están los comandos propios de AIX.

Si se necesita ejecutar comandos de la CLI del VIO desde la shell de AIX se puede hacer mediante el comando ioscli (/usr/ios/cli/ioscli), pasando como parámetros el comando de la CLI del VIO, con sus correspondiente parámetros.

Ejemplo:
# /usr/ios/cli/ioscli lsmap -vadapter vhost0

O también:
# /usr/ios/cli/ioscli mkvdev -vdev hdisk54 -vadapter vhost1 -dev mapeo_disco54

De esta forma podemos crear un script que ejecute tanto comandos de la shell de AIX como de la CLI del VIO. Esto me ha sido muy útil hace poco al levantar sistemas en un centro de respaldo.

En el centro principal todos los discos de los AIX y los VIO (incluso rootvg de los VIO) son discos de una cabina, y están replicados en otra cabina en el respaldo.

Al ser réplicas por cabina yo pensaba que los VIO de respaldo cogerían los discos y los mapeos sin tener que tocar nada, ya que tienen el mismo PVID que los de producción, pero no ha sido el caso.

Me tocaba entonces (entre otras tareas) borrar todos los mapeos ya existentes y borrar los discos (Defined y Available) para volver a detectarlos.
Para esto me he creado un script que lanza tanto comandos de AIX como comandos de VIO.

Ejemplo:
# Borramos los mapeos
/usr/ios/cli/ioscli lsmap -all | grep VTD | grep -v "NO VIRTUAL TARGET DEVICE FOUND" | awk '{print $2}' | while read param_vtd
do
   /usr/ios/cli/ioscli rmvdev -vtd $param_vtd
done

# Borramos todos los discos de la cabina
lsdev -Cc disk | grep HSV450 | awk '{print $1}' | while read param_disco_old
do
   rmdev -dl $param_disco_old
done

# Reescaneamos los discos de la cabina
cfgmgr

# Cambiamos el reserve_policy
lsdev -Cc disk | grep HSV450 | awk '{print $1}' | while read param_disco_new
do
   chdev -l $param_disco_new -a reserve_policy=no_reserve
done


Como se puede ver el mismo script ejecuta comandos de AIX y de VIO.

Por otro lado este mismo script me guarda:
 - relación hdisk <-> Lun ID antigua
 - relación hdisk <-> mapeo antiguo
 - relación hdisk <-> Lun ID nueva
Con estos datos copiados en un excel (bendita función concatenate) he podido generar otro script que me vuelve a hacer todos los mapeos de nuevo, del estilo:
/usr/ios/cli/ioscli mkvdev -vdev hdisk2 -vadapter vhost0 -dev lpar1_rootvg
/usr/ios/cli/ioscli mkvdev -vdev hdisk3 -vadapter vhost0 -dev lpar1_swap
/usr/ios/cli/ioscli mkvdev -vdev hdisk4 -vadapter vhost1 -dev lpar2_rootvg

etc...

Y no tenido que volver a hacer los casi 100 mapeos de nuevo a mano.


No hay comentarios:

Publicar un comentario