Después de configurar nuestra librería de cintas emulada, usando MFNetDisk, vamos a aprovechar para implementar DFHSM. Anteriormente ya hicimos la configuración de NFNetDisk. Además de SMS, RMM y OAM.
MFNetDisk - Emulando VTS - Parte 1/2
Comentar que tuve que instalar MFNetDisk en un Windows XP ya que con Windows 10, daba bastantes errores.
He logrado configurar DFHSM en la versión de z/OS 1.10 y 1.13. Aparentemente, funciona bien. En z/OS 2.3, no he logrado hacerlo funcionar por problemas con MFNetDisk, pero, como el objetivo del blog es aprender, se mostrará la instalación en z/OS 1.13.
Para esta entrada nos guiaremos con el siguiente manual de IBM:
El manual es de la versión 2.1, pero, en principio, nos servirá.
En la librería SYS1.SAMPLIB encontraremos un job llamado ARCSTRST que sirve para crear todos los ficheros que utilizaremos para implementar HSM.
Primero lo copiaremos a una librería nuestra, para modificarlo.
Este job creará una librería que, por defecto, se llamará HSM.SAMPLE.CNTL con todos los siguientes miembros:
Member |
Description |
STARTER |
Contains the DFSMShsm starter set. |
ARCCMD01 |
Contains DFSMShsm parameter specifications for using migration level 2 tape. |
ARCCMD90 |
Contains sample ADDVOL commands for the starter set. |
ARCCMD91 |
Contains sample ADDVOL commands for the starter set using migration level 2 tape. |
HSMHELP |
Contains a sample of the help file listing DFSMShsm commands and syntax. |
HSMLOG |
Contains a job to print the DFSMShsm log. |
HSMEDIT |
Contains a job to print the edit-log. |
ALLOCBK1 |
Contains a sample job to allocate four control data set backup version data sets for each control data set. |
ALLOSDSP |
Contains a sample job to allocate a small data set packing data set. |
HSMPRESS |
Contains a job to reorganize the control data sets. |
Ahora lo editamos para poner una ficha job. Además yo he cambiado el nombre de la librería por HSM1.SAMPLE.CNTL para evitar problemas al crear un alias más adelante. Hay que cambiarlo en dos sitios. Lo ejecutamos.
Terminará correctamente.
Entramos en la librería que acabamos de crear y editamos el miembro STARTER, que creará varios ficheros. Con este job crearemos un HSM básico.
NOTA: Antes de empezar con este job, he inicializado varios discos modelo 3390-3 (HSM000-HSM009) para utilizarlos con HSM.
Empezaremos añadiendo la ficha job y modificaremos los siguientes parámetros antes de ejecutar el job. Es mejor utilizar el comando “change” para cambiarlos ya que pueden aparecer en varias líneas.
?MCDSVOL - MCDS VOLUME > HSM001
?MCDSUNT - UNIT MCDS VOLUME > 3390
?BCDSVOL - BCDS VOLUME > HSM002
?BCDSUNT - UNIT BCDS VOLUME > 3390
?OCDSVOL - OCDS VOLUME > HSM003
?OCDSUNT - UNIT OCDS VOLUME > 3390
?CDSSIZE - CYLINDERS TO INITIALLY ALLOCATE FOR ANY CONTROL DATA SET > 20
?JRNLVOL - JOURNAL VOLUME > HSM004
?JRNLUNT - UNIT JOURNAL VOLUME > 3390
?LOGVOL - LOG VOLUME > HSM004
?LOGUNIT - UNIT LOG VOLUME > 3390
?TRACEVOL - PROBLEM DETERMINATION AID VOLUME > HSM004
?TRACEUNIT - UNIT PROBLEM DETERMINATION AID VOLUME > 3390
?UCATNAM - NAME USER CATALOG FOR DATA SETS. > CATALOG.HSM
?UCATVOL - USER CATALOG VOLUME > HSM004
?UCATUNT - UNIT USER CATALOG VOLUME > 3390
?CTLAUTH - THE USER ID THAT CAN ISSUE DFSMSHSM AUTH COMMANDS > HSM
?UID - AUTHORIZED USER ID (1 - 7 CHARACTERS) FOR THE
DFSMSHSM-STARTED PROCEDURE IN A NON-FACILITY CLASS
ENVIRONMENT (SEE NOTE BELOW). THIS IS THE
HIGH-LEVEL QUALIFIER FOR DFSMSHSM DATA SETS. > HSM
?JESVER - THE JOB ENTRY SUBSYSTEM (JES); EITHER JES2 OR JES3 > JES2
?JOBPARM - JOB CARD PARAMETERS > Los correspondientes a cada instalación
?SCLOGNM - STORAGE CLASS FOR LOG AND JOURNAL > No lo uso. Además, quito las referencias a este parámetro para evitar errores.
?SCCDSNM - STORAGE CLASS NAME FOR CONTROL DATA SETS > No lo uso. Además, quito las referencias a este parámetro para evitar errores.
?MCDFHSM - MANAGEMENT CLASS NAME FOR DATA SETS > No lo uso. Además, quito las referencias a este parámetro para evitar errores.
?HOSTID - PROCESSING UNIT ID FOR THE PROBLEM DETERMINATION
AID FACILITY AND FOR IDENTIFYING THE HOST TO
DFSMSHSM > 1
?PRIMARY - YES OR NO; DEFINES THE HOST PERFORMS AS A PRIMARY HOST > YES
?NEW - EXTENSION OF CDS NAME FOR IMPORT (HSMPRESS) > Se modifica en el job HSMPCTLAUTH RESS. > NUEVO
Este job crea unos ficheros en SYS1.PROCLIB y SYS1.PARMLIB. Si queremos tenerlos en otras librerías, debemos cambiar estos parámetros en varios lugares del job.
Una vez modificados todos los parámetros, lo ejecutamos.
Terminará correctamente.
De forma opcional, podemos renombrar la STC que hemos creado “DFSMSHSM” con un nombre más corto, como HSM.
Como queremos que HSM pueda migrar ficheros a cinta, editaremos el miembro HSM1.SAMPLE.CNTL(ARCCMD01) porque nuestras cintas son tipo 3490.
Ahora lo copiamos al final del fichero de parámetros ADCD.Z113.PARMLIB(ARCCMD00) de nuestra parmlib.
Modificamos el miembro HSM1.SAMPLE.CNTL(ARCCMD91) para indicar las cintas que serán usadas para migrar ficheros. Yo añadiré varias cintas para probar. La unidad, en mi caso, es 3490.
Como hicimos con el fichero anterior, copiamos el miembro HSM1.SAMPLE.CNTL(ARCCMD91) al final del fichero ADCD.Z113.PARMLIB(ARCCMD00).
Modificaremos el fichero ARCCMD90 de HSM1.SAMPLE.CNTL. Este fichero de configuración sirve para añadir discos que usará HSM (ML1, Backup, Recall, etc.).
En mi caso, el nombre de los discos empieza por HSM* (unidad 3390) y las cintas por MTP* (unidad 3490).
Por ejemplo, en el disco HSM000 se guardarán los ficheros que se recuperen mediante recall.
Para las cintas, usaré el rango de MTP000 a MTP031, que definiremos más adelante en el programa MFNetDisk.
Revisad los comentarios que contiene el fichero para entender cada una de las opciones.
Como hicimos con los ficheros anteriores, copiamos el miembro HSM1.SAMPLE.CNTL(ARCCMD90) al final del fichero ADCD.Z113.PARMLIB(ARCCMD00).
Además, debemos cambiar todas las referencias que se hagan a unidades 3590-1 por 3490 en el fichero ARCCMD00, ya que es el tipo de cinta que se usa en MFNetDisk.
Para evitar que cuando intentemos recuperar un fichero migrado nos aparezca el reply de la imagen, modificaremos los siguientes parámetros del fichero ARCCMD00.
Pondremos los parámetros TAPEINPUTPROMPT a NO.
Ya tenemos nuestro fichero de parámetros.
Ahora vamos a ver la configuración necesaria en MFNetDisk.
Primero editamos el fichero de parámetros MPC.V013.SAMPLIB(MPCOPT).
Ponemos en el parámetro TPDRV el número de unidad inicial que simula las “bocas” del robot y cuantas tendremos. En mi caso, las unidades serán 8 de 0580 a 0587.
TAPEDRV MVSDVNUM=0580,RANGE=8
NOTA: Cojo la unidad 0580 porque es la que está definida en el IODF (HCD) como 3490. No puedo usar la unidad 0570, que definimos en entradas anteriores, porque se usa para la librería de cintas.
En el parámetro TAPELOC definimos el nombre del volumen de las cintas y la cantidad. En mi caso, 32 cintas cuyo rango de nombres será MPT000 a MPT031.
NOTA: Debemos tener en cuanta que deben ser un rango que incluya las cintas que definimos en el fichero ARCCMD00 de HSM.
Vamos al programa PCTOOL y añadimos el rango de cintas que será NO-MTL. Config -> Tape -> TapesRange -> AddTapesRange -> NonMTL
Rellenamos el comando poniendo el nombre del volumen (MPT000) y el número de cintas (32).
Ahora arrancamos la tarea MPC con el comando S MPC,PRM=COLD.
Ponemos las unidades de las “bocas” online. En mi caso, pondré 6 con el comando V 0580-0585,ONLINE.
Ya tenemos la parte de las cintas terminada.
Antes de arrancar HSM, debemos revisar la tarea en la librería PROCLIB para confirmar que la parmlib del parámetro HSMPARM es la correcta. También podemos borrar o comentar este parámetro para usar la concatenación de parmlibs del sistema (comando “d parmlib”).
//HSMPARM DD DSN=SYS1.PARMLIB,DISP=SHR
En mi caso sería:
//HSMPARM DD DSN=ADCD.Z113.PARMLIB,DISP=SHR
Ahora arrancaremos HSM.
Nos aparecerá un warning de RACF, pero continuará cargando.
ARC0099E WARNING - RACF SPECIFIED WITH TAPESECURITY 899
ARC0099E (CONT.) PARAMETER BUT RACF TAPEVOL RESOURCE CLASS NOT ACTIVE
Nos fijaremos que aparezca el mensaje “DFSMSMHSM INITIALIZATION SUCCESSFUL”.
Ahora voy a coger un dataset para realizar pruebas de backup, migrado y recall.
Empezaremos migrando el fichero con el comando HMIG.
Con las opciones por defecto, intentará migrarlo a ML1 (Migration Level 1), es decir, lo migrará a uno de los discos (HSM*) que definimos anteriormente.
Aparecerá un mensaje indicando que le proceso ha terminado.
El volumen del dataset será MIGRAT1.
Si entramos en el fichero, con Browse, por ejemplo, o ponemos el comando “HRECALL”. Recuperaremos el fichero. La diferencia es que con una “B” nos dejará la sesión pillada hasta que se desmigre el fichero y con “HRECALL” no.
Si nos fijamos en el volumen, ahora será el HSM000. Esto es debido a la definición que hicimos en el fichero de parámetros.
Ahora vamos a intentar migrar el fichero a ML2 (Migration Level 2), que, en nuestro caso, se trata de cintas.
La configuración más habitual que he visto, en los clientes que he trabajado, es migrar directamente a ML2, sin tener ML1 configurado. Normalmente, lo tienen así por el precio. Intentaré hacer una entrada para mostrar cómo quitar ML1 de la configuración y dejar sólo ML2.
Usaremos el comando TSO HMIG nombre_fichero ML2. En mi caso, TSO HMIG IBMUSER.PRUEBA.HSM ML2.
En mi caso, aparecer un mensaje indicando que el fichero necesita un backup antes de poder ser migrado.
Usaremos el comando HBACK.
Terminará correctamente.
Volvemos a intentar migrarlo a ML2.
Ahora aparecerá en MIGRAT2.
Cuando tenemos ML1 y ML2, la migración de ficheros de ML1 a ML2 se puede hacer de forma automática según lo que definamos en los parámetros de HSM o también se puede hacer de forma manual.
Si queremos liberar uno o varios volúmenes de ML1, podremos migrarlos a ML2 usando el comando “TSO HSEND FREEVOL MIGRATIONVOLUME(nombre_disco) AGE(antigüedad_en_ML1)”.
Por ejemplo:
Tenemos el siguiente dataset migrado a ML1 (MIGRAT1).
Sé que el único disco que uso para migrar ML1 es el HSM005.
Si compruebo el contenido del disco HSM005 desde 3.4, veo lo siguiente:
Para migrar a ML2 los ficheros que están en ML1 en este disco, usaré el siguiente comando desde la opción 6 de ISPF:
“HSEND FREEVOL MIGRATIONVOLUME(HSM005) AGE(0)”.
En el parámetro AGE, pongo 0 porque el fichero ha sido migrado hoy. Si pusiese AGE(1), migraría los ficheros que llevasen 1 día o más en ML1.
Si volvemos a buscar el contenido del disco HSM005, veremos que ya no estará el fichero.
Si buscamos el fichero IBMUSER.PRUEBA.HSM, veremos que ahora está en ML2 (MIGRAT2).
Espero que os haya gustado esta entrada. Aunque es una configuración muy básica, sirve para poder profundizar más en ello en el futuro.