miércoles, 30 de noviembre de 2011

HP-UX: Working with SAN LUN's and LVM

Las redes de storage se integran cada día más como una de las tecnologías que mas fuertemente se utilizan en los datacenters. HP-UX si bien es un OS horrible (a gusto personal), sigue teniendo gran repercusión en entornos enterprise. Muchos de estos equipos trabajan con LUN's exportadas desde un storage, como puede ser un HP EVA y más de una vez se me ha hecho necesario trabajar con ellas. En este texto, voy a comentarles como reescanear las LUN's exportadas (partiendo desde el principio que el equipo tiene una HBA), y como crear Physical Volumes, Volumen Groups y Logical Volumes con estas en HP-UX 11.31.

Como consejo, si la LUN que queremos presentarle al server, es demasiado grande, y tenemos la intención de crear un solo LV con ella, es recomendable elegir un tamaño grande de LE, >= 8, o mas conveniente aún (para futuros resizes) >= 16, aunque esto puede impactar en la performance del filesystem creado en ella dependiendo el tipo de datos que contengamos. Si utilizamos tamaños chicos de LE (4 Mb.) y la LUN es demasiado grande, superaremos el límite establecido por el OS de LE máximos por LV y tendremos problemas (lo digo por experiencia :-P). Comenzemos:

Como primera medida, tenemos que tener las LUN creadas y presentadas en el storage (suponiendo que estamos utilizando FCoE o FC-SW). Una vez que esto es realizado, procedemos a reescanear las LUN's que ve el equipo con ioscan:

# ioscan -funC disk

Class     I  H/W Path      Driver         S/W State   H/W Type     Description
===============================================================================
disk      1  0/0/2/1.0.16  UsbScsiAdaptor   CLAIMED     DEVICE       USB SCSI Stack Adaptor
                          /dev/deviceFileSystem/Usb/MassStorage/dsk/disk@hp-1008+294=A60020000001
                          /dev/deviceFileSystem/Usb/MassStorage/rdsk/disk@hp-1008+294=A60020000001
disk      2  0/1/1/0.0.0.0.0      sdisk            CLAIMED     DEVICE       HP      DG072BB975
                          /dev/dsk/c0t0d0     /dev/dsk/c0t0d0s2   /dev/rdsk/c0t0d0    /dev/rdsk/c0t0d0s2
                          /dev/dsk/c0t0d0s1   /dev/dsk/c0t0d0s3   /dev/rdsk/c0t0d0s1  /dev/rdsk/c0t0d0s3
disk      3  0/1/1/0.0.0.1.0      sdisk            CLAIMED     DEVICE       HP      DG072BB975
                          /dev/dsk/c0t1d0     /dev/dsk/c0t1d0s2   /dev/rdsk/c0t1d0    /dev/rdsk/c0t1d0s2
                          /dev/dsk/c0t1d0s1   /dev/dsk/c0t1d0s3   /dev/rdsk/c0t1d0s1  /dev/rdsk/c0t1d0s3
disk     37  0/2/1/0.2.0.0.0.0.1  sdisk            CLAIMED     DEVICE       HP      HSV200
                          /dev/dsk/c12t0d1   /dev/rdsk/c12t0d1
disk     39  0/2/1/0.2.0.0.0.0.3  sdisk            CLAIMED     DEVICE       HP      HSV200
                          /dev/dsk/c12t0d3   /dev/rdsk/c12t0d3
disk     40  0/2/1/0.2.0.0.0.0.5  sdisk            CLAIMED     DEVICE       HP      HSV200
                          /dev/dsk/c12t0d5   /dev/rdsk/c12t0d5
disk     33  0/2/1/0.2.4.0.0.0.1  sdisk            CLAIMED     DEVICE       HP      HSV200

Bien, ya tenemos todo reescaneado, notesé que por cuestiones de comodidad de lectura acorte la salida que es muchísimo más larga y así de desprolija. Ahora tenemos que crear las entradas correspondientes en /dev/disk/, de la siguiente forma:

# insf -e

Ahora es posible que necesitemos identificar, los discos exportados, por lo cual podemos hacer esto mediante su WWN o World Wide Name, de la siguiente manera:

# scsimgr -p get_attr all_lun -a device_file -a wwid -a state
/dev/rdisk/disk20:0x600508b40006d93d0000c000001c0000:ONLINE
/dev/rdisk/disk21:0x600508b40006d93d0000c00000170000:ONLINE
/dev/rdisk/disk22:0x600508b40006d93d0000c00000210000:ONLINE

En este caso vemos que disk20, disk21, y disk22 son las LUNs, y podemos revisar en el storage su WWN para identificar cual es cada una.

Si queremos escanear los adaptadores de Fiber Channel, hacemos:

ioscan -fnC fc

En cambio si necesitamos consultar los WWN de las HBA's, podemos hacer:

fcmsutil /dev/fcd0

Ahora procederemos a trabajar con LVM, para ello, podemos utilizar SAM (o SMH) o hacerlo directamente desde la línea de comandos, nosotros elegimos esta última. Lo primero es inicializar a los discos como PV, para ello utilizaremos pvcreate:

# pvcreate /dev/dsk/dsk{20,21,22} 

Una vez creados los PV, vamos a crear el VolumenGroup que se va a llamar vgfoobar, para ello, tal como en Linux, vamos a utilizar vgcreate:

# vgcreate vgfoobar /dev/dsk/disk{20,21,22} 

Si esto falla, probablemente necesitemos preparar el device file en /dev, de la siguiente forma

# mkdir /dev/vgfoobar/
# cd /dev/vgfoobar/
# mknod group c 64 0x010000

Ahora ya estamos en condiciones de crear los LV que hagan falta, una de las cosas que suckea de LVM en HP-UX es que tenemos que especificarle la capacidad de los LV en Mb o LE. Por lo cual por cuestiones de redondeo nosotros crearemos uno de 10.000 Mb.

# lvcreate -n lvexample -L 10000 vgfoobar 

Y listo ya tenemos nuestro LV creado, podremos crear todos los que hagan falta. Ahora solo nos queda darle formato, en este caso bajo VxFS:

# newfs -F vxfs /dev/vgfoobar/lvexample 

Nuestro LV debería montar en /mnt, en caso de elegir otro mountpoint debemos crearlo previamente (con mkdir), caso contrario, procedemos a montarlo directamente:

# mount /dev/vgfoobar/lvexample /mnt

Si queremos que persista a los reboots, debemos agregarlo al /etc/fstab como se muestra a continuación:

/dev/vgfoobar/lvexample /mnt vxfs delaylog 0 2

6 comentarios:

  1. se nota que tenes poca experiencia con hp-ux...

    ResponderEliminar
    Respuestas
    1. Como haría esto mismo una persona con experiencia?

      Eliminar
    2. Se nota que el que no tiene experiencia es otro (me refiero al anonimo), el hecho que en el ejemplo mostrado para hpux 11.31 hayan pasos que sobren no quiere decir que este mal hecho, este ejemplo esta bien para HPUX 11.23 y HPUX 11.31, asi sobren pasos como el insf -e (no te recomiendo que lo ejecutes si tienes un ambiente oracle rac, mejor ejecutar el comando insf -C disk), o el mknod (es raro que falle la creacion de un vg en hpux 11.31, de hecho nunca me ha pasado, pero si algun dia falla pues se hara el mknod como se hacia en hpux 11.23)

      Eliminar
    3. Buenas, por entonces no había trabajado demasiado con HP-UX, y esta fue mi primera experiencia con SAN en el OS. La verdad que siempre administre Linux BSD, y Solaris y escribía estos artículos como una especie de auto-documentar los procedimientos que seguramente luego debería volver a aplicar.

      Eliminar
  2. Si seguramente, yo solo comparto las cosas que voy aprendiendo, quizás a alguien con mi mismo nivel de experiencia le sirva.

    ResponderEliminar
  3. Gracias,, A mi si me ha servido de mucho..

    ResponderEliminar