Buscar este blog

martes, 5 de abril de 2011

NIM

Este post no pretende ser una guía completa de NIM, para eso ya hay excelentes documentos, como por ejemplo:
- NIM Nutshell, de Doug Ranz (http://rainsux.dyndns.org/NIM-Nutshell.pdf)
- NIM from A to Z, IBM Redbook (http://www.redbooks.ibm.com/abstracts/sg247296.html)

Lo que pretendo en este post es simplemente poner ideas, scripts e implementaciones que tengamos hechas en algún cliente para ayudarnos unos a otros a definir entornos NIM útiles y fáciles.



En mi caso voy a poner un ejemplo de como están automatizadas las copias mksysb por NIM.
La plataforma ya está montada, y ya están todos los clientes definidos. Lo único que voy a poner es como se ha dejado automatizado para hacer las copias semanales.


Hay 2 scripts creados:
- el primero se lanza desde crontab, y lo que hace es un listado de los clientes de NIM, y para cada cliente lanza el segundo script
- el segundo, que se lanza desde el primer script como hemos visto, borra el mksysb anterior y lanza un nuevo mksysb


Script 1 (nim_script1.ksh):
#!/usr/bin/ksh
#
# Este script se lanza desde el crontab
# No lleva parámetros
#
DIR=/directorio/scripts

/usr/sbin/lsnim -t standalone | awk '{print $1}'| while read param
do
$DIR/nim_script2.ksh $param
done


Si por algún casual no queremos realizar mksysb de todos los clientes (por ejemplo si algún cliente está apagado) añadidos un grep -v, o egrep si son varios, después del lsnim:

/usr/sbin/lsnim -t standalone | egrep -v 'cliente1|cliente2|...' | awk '{print $1}'| while read param


Como vemos este script hace un listado de todos los clientes del nim master, y llama al segundo script pasando el cliente como parámetro.

El segundo script recoge el nombre del cliente como parámetro y lanza un mksysb.

Script 2 (nim_script2.ksh):
#!/usr/bin/ksh
#
# Este script se lanza desde nim_script1.ksh
# Recibe un parámetro --> El nombre del cliente
#
CLIENTE=$1
IMG_MKSYSB=img_mksysb_$1
FICHERO=/directorio/imagenes/nim/$IMG_MKSYSB

# Primero borramos de NIM el mksysb anterior
# Esto lo hacemos ya que se definen siempre con el mismo nombre
/usr/sbin/nim -o remove $IMG_MKSYSB

# Borramos la imagen mksysb del disco
rm $FICHERO

/usr/sbin/nim -o define -t mksysb -a server=master -a source=$CLIENTE -a mk_image=yes -a location=$FICHERO $IMG_MKSYSB


Este script primero elimina de NIM la definición del mksysb anterior, y también borra la imagen mksysb del disco (se supone que previamente se ha guardado en TSM/Netbackup/Data Protector/etc...).
Luego lanza un mksysb del cliente. Este mksysb aparecerá en NIM con el nombre de recurso img_mksysb_<nombre_cliente>, y la imagen mksysb en disco será /directorio/imagenes/nim/img_mksysb_<nombre_cliente>.

En este caso estamos elimando la definición del mksysb anterior, pero se podrían mantener las distintas definiciones. Para ello habría que poner un distintivo (por ejemplo la fecha) tanto en el nombre del mksysb dentro de NIM como en el nombre del fichero, y eliminar el comando nim -o remove.
De esta forma se mantienen dentro de NIM definidos todos los mksysb, y se podría restaurar a distintas versiones.
Si se hace de esta forma habría que modificar el script para que sea capaz de borrar del disco la imagen mksysb de la semana anterior para que no ocupe demasiado en el filesystem, o también se puede indicar al servidor de backup que borre el contenido de ese directorio después de copiarlo (TSM por ejemplo puede hacerlo).

De todas maneras estos scripts no borran copias mksysb definidas a mano, siempre que no tengan el mismo nombre, por lo que es fácil guardar además un histórico de las versiones, lanzando los mksysb a mano, mientras se ponga un nombre distinto (por ejemplo img_mksysb_<nombre_cliente>.<oslevel>).

La pega de hacer los mksysb con nombre distinto para mantener un histórico, es que de vez en cuando convendría eliminar a mano los mksysb antiguos para no tener un histórico demasiado grande.

Una vez que tenemos estos 2 scripts lo que hay que hacer es programar el script 1 para que se lance el día y a la hora que queremos.

Pues nada, esto es solo una forma sencilla de automatizar los backups mksysb a través de NIM.
Si vosotros teneis otros scripts, u otras formas de hacer lo mismo estaría bien que los pusieseis.

3 comentarios:

  1. Por cierto, para hacer una copia de seguridad del nim master lo que se puede hacer es asignarle un disco adicional (del tamaño del de rootvg), y programar un alt_disk_install.
    De esta forma tenemos un clonado del rootvg cada semana.

    ResponderEliminar
  2. Otra forma de hacer copia de seguridad del nim master es realizar lanzar un mkdvd, pero dejandolo en disco en vez de grabarlo directamente en DVD.
    Esto deja una imagen DVD (o varias) en el directorio especificado. Luego esta imagen se puede copiar al sevidor de backup.
    Para recuperar el nim master habría que recuperar la imagen DVD (en cualquier otro cliente) pasarla a cualquier PC con grabadora DVD y grabarlo como una imagen iso en DVD. Luego se puede arrancar e instalar el nim master desde este DVD.

    ResponderEliminar
  3. Para incluir un exclude en el script, hay que d jar ese exclude en el master y definirlo. ese exclude debe tener todo lo que queremos excluir de los clientes.

    La orden a ejecutar es:

    /usr/sbin/nim -o define -t mksysb -a server=master -a source=$CLIENTE -a mk_image=yes -a location=$FICHERO -a exclude_files=exclude $IMG_MKSYSB

    ResponderEliminar