Hercules y los Shadow Files

En esta entrega voy a hablar de los Volúmenes Shadow, o la capacidad que tiene Hercules para crear copias instantáneas o snapshots de volúmenes de discos de mainframe emulados.

Tradicionalmente, un volumen de disco de mainframe, se define en Hercules de la siguiente manera: En primer lugar, se le indica la dirección o IODEVICE de dicho disco, según la configuración HCD del sistema z/OS que tengamos por encima. La segunda columna, indica el tipo de disco a emular, en nuestro caso el modelo mas común y extendido es el IBM 3390. Y como última columna, se define el Path donde reside ese fichero emulado de disco en el disco duro de nuestro PC.

0A80 3390 C:\ZOS110\JARES1.CCKD

En este ejemplo, tenemos un disco 3390 definido bajo la dirección 0A80 que esta grabado en el disco C de nuestro PC bajo la carpeta ZOS110, y que cuyo fichero es el JARES1.CCKD.

En esta configuración, todo tipo de acceso, lectura y escritura (sobre todo esto último), altera el fichero original, de forma que si accidentalmente borramos datasets de dicho volumen por accidente o error, no tenemos la capacidad de volver a recuperarlos. Hasta ahora.

Con el Hercules Shadow file, podemos convertir nuestros volúmenes de disco a un entorno basado en instantáneas o snapshots, de forma que podemos crear en todo momento una copia viva de nuestros volúmenes, y pudiendo hacer y deshacer cambios a placer, saltando de un snapshot a otro (o volviendo al snapshot original).

Como Funcionan los Shadow Files

En primer lugar, necesitamos que el volúmen de disco al que le queremos crear snapshots sea en formato CCKD o CFBA comprimido, ya que un volumen sin compresión no está soportado. En nuestra instalación ADCD, dado que todos los volúmenes tienen formato CCKD, están comprimidos.

En segundo lugar, debemos modificar la definición del volumen añadiendo un parámetro a cada disco llamado SF (Shadow File) y a continuación, poner el path de nuestros discos con copias “delta” o los snapshots. Siguiendo nuestro ejemplo, la configuración anterior quedaría así:

0A80 3390 C:\ZOS110\JARES1.CCKD sf=C:\ZOS110\JARES1_*.CCKD

Esto significa que cuando realicemos un Snapshot, Hercules creará un nuevo fichero delta llamado JARES1_1.CCKD donde comenzarán a escribirse las nuevas escrituras a disco. Si hacemos otro Snapshot, se creará un nuevo fichero llamado JARES1_2.CCKD, donde se realizarán las nuevas escrituras a partir de ese momento, todo esto hasta 8 veces (es decir, no nos dejará hacer un nuevo Snapshot en cuanto hayamos llegado al fichero delta JARES1_8.CCKD).

Comandos para crear, borrar y modificar Shadow files

El objeto de todo esto es el de mantener los ficheros originales de la distribución ADCD sin tocar, de forma que si la cagamos borrando algo o por corrupción de datos, no tengamos que volver a reinstalar todo.

Si nosotros hemos añadido el comando SF= a todos nuestros discos según el ejemplo anterior y arrancamos Hercules, los volúmenes se cargarán como siempre, y en cuanto hagamos IPL los volúmenes ORIGINALES (JARES1, JARES2, etc) se modificarán. Para evitar esto, ANTES de hacer IPL, vamos a lanzar un comando en la consola de Hercules, llamado sf+”UNIT”, siendo UNIT la dirección hexadecimal de nuestro volumen y el símbolo “+” porque vamos a añadir un nuevo shadow. El comando sf+* hará que TODOS los volúmenes por igual realicen un snapshot (de ahí el “*“), por lo que si listamos la carpeta donde residen nuestros discos, veremos que ademas del volumen JARES1.CCKD que ocupa un giga y pico, existe un NUEVO FICHERO llamado JARES1_1.CCKD que ocupa unos 30 KB. Si en este momento, hacemos IPL a nuestro ADCD, veremos como los volúmenes originales del ADCD no se tocan mas que en lectura, y que las escrituras comienzan a realizarse en los ficheros Shadow, creciendo de tamaño a medida que se van escribiendo datos en ellos.

Que queremos hacer otro Snapshot porque queremos hacer una prueba que puede corromper todos los volumenes? No hay problema: Desde la consola de Hercules (NO la de z/OS), escribimos el comando sf+* y en este preciso momento tendremos 3 ficheros por cada volumen: JARES1.CCKD, volumen snapshot JARES1_1.CCKD (ahora en modo lectura) y el nuevo JARES1_2.CCKD al que se escribirán las modificaciones.

Que ha salido bien y queremos plasmar las modificaciones en el último snapshot? Pues con un sf-* (el “” para quitar el último Shadow y el “*” para todos los volúmenes) lo hemos solucionado, las modificaciones del JARES1_2.CCKD se escribirán sobre JARES1_1.CCKD y luego se borrará el fichero JARES1_2.CCKD.

Que hacemos la prueba y la cagamos? Hemos perdido datasets vitales y/o se han corrompido los datos. Pues no hay problema, con el z/OS apagado, eso si, y con el comando sf- explicado en el anterior párrafo volvemos al shadow o snapshot previo, pero CUIDADO!!!: Si escribís solamente el comando sf-* por defecto os va a hacer un MERGE, es decir, os va a plasmar las modificaciones del último snapshot sobre el anterior como hemos visto, y en este caso, eso no lo queremos hacer ya que los datos corruptos viajarían al anterior snapshot descojonando nuestra instalación, así que el comando para descartar el último snapshot es: sf-* nomerge para que no haga el merge.

También podemos conocer mas datos de nuestros shadows sdf * o sdf UNIT, en función de que queramos estadísticas de todos los shadows o solo de un volumen en concreto.

Limitaciones

No recuerdo si a día de hoy sigue vigente, pero existe una limitación en cuanto a tamaño máximo de cada volumen Shadow, el cual no debe sobrepasar el tamaño de 2 GB, si se sobrepasa ese tamaño podría dar problemas nuestra instalación, así que cuidado con esto.

Recomendación

En mi caso, como recomendación, y sobre todo cuando tengáis una nueva distribución ADCD “sin tocar”, os recomiendo siempre hacer AL MENOS un Shadow file, de forma que los volúmenes originales no se sobrescriban nunca, sino que lo hagan en los ficheros Shadow, dejando así siempre una copia sin modificar de nuestros volúmenes originales por si necesitamos volver a partir desde cero.

About Urtzi Larrieta

Director de Proyectos de entornos Mainframe, AIX y AS/400, llevo mas de 10 años trabajando para el sector servicios y banca, así como proyectos de sistemas, renovación tecnológica, estrategias de backup, y consultoría de sistemas.