En cualquier sistema debemos tener discos de usuario para poder guardar nuestros datos. Veremos cómo crear discos en ZD&T (3390 modelo 1, 2, 3, 9, 27, 54 y EAV), iniciarlos en z/OS (SMS y NO-SMS) y compartirlos con otro sistema (ZD&T y z/OS).
Como referencia utilizaremos el Redbook de zPDT
Para crear discos emulados, usaremos el comando alcckd.
alcckd file_name -ddevice_type
Se pueden crear modelos predefinidos mediante la opción device_type.
Los modelos pueden ser: 3390-1 (cyl: 1.113), 3390-2 (cyl: 2.226), 3390-3 (cyl: 3.339), 3390-9 (cyl: 10.017), 3390-A (EAV – Extended Address Volumes – cyl: 65.667)
Por ejemplo:
Mod 3390-3 (cyl: 3.339)
alcckd /home/ibmsys1/volumes/PRD000 -d3390-3
Mod 3390-9 (cyl: 10.017)
alcckd /home/ibmsys1/volumes/PRD000 -d3390-9
Mod 3390-A EAV (cyl: 65.667)
alcckd /home/ibmsys1/volumes/PRD000 -d3390-A
Tamaño de modelo 3390-3.
Tamaño de modelo 3390-9.
También podemos crear otros modelos que no sean “predefinidos”, como el modelo 3390-27, 3390-54 y EAV (más de 65.520 cilindros). Usaremos el comando:
alcckd file_name -d3390 -snumber_of_cylinders
Por ejemplo:
Mod 3390-27 (cyl: 32.760)
alcckd /home/ibmsys1/volumes/PRD000 -d3390 -s32760
Mod 3390-54 (cyl: 65.520)
alcckd /home/ibmsys1/volumes/PRD000 -d3390 -s65520
Mod 3390-A EAV (más de cyl: 65.667. Siempre debe ser múltiplo de 1.113 cyl, por ejemplo, 72.345 cyl)
alcckd /home/ibmsys1/volumes/PRD000 -d3390 -s72345
Tamaño de modelo EAV – 72.345 cyl.
Para poder acceder a estos discos desde z/OS, debemos añadirlos al fichero de configuración (de la misma forma que los volúmenes que ya tenemos).
Si ya tenemos arrancado un sistema, podemos añadirlos al fichero y, después, asignarlos al sistema de forma dinámica con el comando:
awsmount device -m volumen_path
Por ejemplo:
awsmount 0AA5 -m /home/ibmsys1/volumes/PRD001
Podemos comprobar el disco que tenemos montado en un dispositivo con el comando:
awsmount device -q
Por ejemplo:
awsmount 0AA5 -q
Una vez tenemos los discos montados en el sistema z/Os, vamos a inicializarlos para poder empezar a utilizarlos.
Antes de inicializar un disco debemos decidir si este disco será SMS (si lo incluiremos en un Storage Group) o si será NO-SMS. Vamos a ver ambos ejemplos:
Inicializar disco NO-SMS
Para inicializar un disco NO-SMS, tendemos que:
Poner offline la unidad. Comando:
VARY xxxx,OFFLINE
Por ejemplo:
V 0AA2,OFFLINE
Ejecutar el job para inicializar el disco.
El job se puede descargar al principio de la entrada.
UNITADDRESS. Unidad que pusimos offline.
VOLID. Nombre que le daremos al volumen. Debe ser único.
VTOC. Volume Table Of Contents. Este número puede ser variable porque depende del número de ficheros que tendremos en el disco. Los tres parámetros que usaremos son: cylinder, head y extent. Cylinder y head es la “posición” en el disco y extent, lo que ocupará.
INDEX. Es el índice de la VTOC. Los tres parámetros que usaremos son: cylinder, head y extent. Cylinder y head es la “posición” en el disco y extent, lo que ocupará. El índice se puede poner a continuación de la VTOC dentro del disco (si nuestra VTOC son 149 tracks, el siguiente cilindro sería el 10 (150 tracks dividido entre 15)), pero si queremos extender esta VTOC porque se ha llenado, pienso que es más fácil mover cualquier otro fichero a otro disco, que mover el índice, por lo tanto, no lo pongo seguido.
Respondemos “U” al reply.
Terminará correctamente.
Poner online la unidad. Comando:
VARY xxxx,ONLINE
Por ejemplo:
V 0AA2,ONLINE
Ahora podremos comprobar la unidad.
Cuando tenemos un disco EAV veremos la información de la VTOC de la siguiente forma.
Si tenemos un disco de hasta modelo 54, lo veremos así.
Ahora vamos montar una unidad. En mi caso, uso el comando:
m /0AA5,vol=(sl,PRD001),use=STORAGE
NOTA: Si el comando se da desde SDSF, será: "/m /0AA5,vol=(sl,PRD001),use=STORAGE"
El atributo "use" puede ser uno de los siguientes:
PRIVATE. Solo se crearán nuevas librerías en ese disco, si al crearlos especificamos que se
haga en ese volumen (VOL=SER=xxxxxx).
PUBLIC. Se guardarán las librerías temporales, si no se especifica un volumen al crearlas.
También se guardarán las librerías que, al crearlas, especifiquemos que se haga en ese
volumen (como ocurre en private).
STORAGE. Se guardarán librerías permanentes y temporales en las que no se especifique un
volumen al crearlas. También aquellas que especifiquemos que se guarden en ese volumen.
Además, podemos añadir el disco NO-SMS al miembro VATLSTxx de la PARMLIB para que se monte automáticamente después de un IPL.
En el siguiente enlace se explica:
Los parámetros para cada entrada siguen la siguiente estructura:
Columna 1 a 6. Es el nombre del volumen. Podemos usar los comodines: * o %.
Columna 8. 0 para "resident volumes" y 1 para "reserved volumes".
Columna 10. Para definir el atributo de uso. 0 - STORAGE, 1 - PUBLIC, 2 - PRIVATE.
Columna 12 a 19. Es el tipo de disco. Es necesario poner bien el tipo, ya que cuando arranquemos el sistema, lo desmontará si no es correcto.
Columna 21. (Y o N) Indica si el volumen es necesario para que arranque el sistema. Si
ponemos "Y" aparecerá una reply solicitando que se monte el disco.
Columna 23 a 71. Se usa para comentarios.
Inicializar disco SMS
Para inicializar un disco SMS, tendemos que:
Poner offline la unidad. Comando:
VARY xxxx,OFFLINE
Por ejemplo:
V 0AA4,OFFLINE
Ejecutar el job para inicializar el disco.
El job se puede descargar al principio de la entrada.
UNITADDRESS. Unidad que pusimos offline.
VOLID. Nombre que le daremos al volumen. Debe ser único.
VTOC. Volume Table Of Contents. Este número puede ser variable porque depende del número de ficheros que tendremos en el disco. Los tres parámetros que usaremos son: cylinder, head y extent. Cylinder y head es la “posición” en el disco y extent, lo que ocupará.
INDEX. Es el índice de la VTOC. Los tres parámetros que usaremos son: cylinder, head y extent. Cylinder y head es la “posición” en el disco y extent, lo que ocupará. El índice se puede poner a continuación de la VTOC dentro del disco (si nuestra VTOC son 149 tracks, el siguiente cilindro sería el 10 (150 tracks dividido entre 15)), pero si queremos extender esta VTOC porque se ha llenado, pienso que es más fácil mover cualquier otro fichero a otro disco, que mover el índice, por lo tanto, no lo pongo seguido.
STORAGEGROUP. Requerido para inicializar el disco como SMS y poder añadirlo a un Storage Group.
Respondemos el reply. El job debería termina correctamente.
Poner online la unidad. Comando:
VARY xxxx,ONLINE
Por ejemplo:
V 0AA4,ONLINE
Añadir el disco a un STORAGE GROUP.
Vamos a ver un ejemplo de añadir un disco a un storage group.
Entramos en ISMF. Si es la primera vez que entramos, es posible que no veamos todas las opciones. Entramos en la opción 0 – ISMF Profile.
Opción 0 – User Mode Selection.
Marcamos la opción 2 – For a Storage Administrator (SA). Pulsamos enter y salimos / entramos en ISMF de nuevo.
Ya tendemos la opción 6 – Storage Group disponible.
Si queremos consultar la configuración SMS activa, debemos poner ‘ACTIVE’ en el campo “CDS Name”. Ponemos “*” en “Storage Group Name”.
Pulsamos enter para ver el listado de todos los Storage Groups.
Si queremos ver los discos que contiene un SG, usamos el comando “LISTV”.
En mi caso, hay muchos discos definidos, pero solo está online en el sistema el disco A4USR1.
Para añadir un disco al storage group “SGBASE”, primero debemos conocer el nombre del fichero CSD. En SDSF, usamos el comando:
D SMS
En “CDS Name”, ponemos el nombre que hemos visto con el comando “D SMS”.
En “Storage Group Name”, ponemos el storage group en el que lo añadiremos.
Elegimos la opción 5 – Volume.
Elegimos la opción 2 – Define y ponemos el nombre del disco. Pulsamos enter.
En la opción “SMS Vol Status”, podemos poner una de las opciones que aparecen a la derecha. En mi caso, pondré “ENABLE”.
Pulsamos F3 y veremos el mensaje “ALL VOLUMES DEFINED”.
Activamos la nueva configuración, para que el nuevo volumen sea usado. Entramos en la opción 8 – Control Data Set del panel principal.
En “CDS Name”, ponemos el nombre de dataset. Elegimos la opción 5 – Activate.
Marcamos la opción “Perform Activation”.
Aparecerá mensaje de confirmación.
Si comprobamos los discos del storage group en la configuración activa (ACTIVE), veremos el nuevo disco.
Ya tendremos el disco SMS inicializado y añadido a un Storage Group.
Compartir discos entre dos sistemas z/OS
Lo primero que necesitamos es tener instalado un servidor NFS (Network File System) en el sistema Ubuntu que compartirá los discos (SERVIDOR).
Podemos instarlo con el comando:
apt-get install nfs-kernel-server
El siguiente paso es añadir al fichero /etc/exports el directorio que queremos compartir y la IP que tendrá acceso. Por ejemplo:
/home/ibmsys1/volumes 192.168.1.0/24(rw,sync,no_subtree_check)
Ahora usaremos el siguiente comando para cargar los permisos que hemos puesto en el fichero /etc/exports:
exportfs -a
Reiniciamos el servicio del servidor NFS:
systemctl restart nfs-kernel-server
En el fichero de configuración del emulador debemos añadir el parámetro “--shared” en la definición de los discos. De esta forma, el emulador sabrá que esos ficheros se comparten y podrá gestionar su uso (lectura, escritura…).
Cuando arranquemos el emulador del sistema z/OS, veremos lo siguiente:
Ahora en el sistema Ubuntu cliente (el sistema que utilizará los discos compartidos), instalamos el cliente NFS. Comando:
apt-get install nfs-common
Una vez instalado, creamos un directorio para montar el recurso compartido:
mkdir -p /mnt/zdt-volumes
Montamos el recurso compartido (en mi caso, la IP del servidor es 192.168.1.34) y el directorio que acabamos de crear. Por ejemplo:
mount 192.168.1.34:/home/ibmsys1/volumes /mnt/zdt-volumes
NOTA: Si vamos a usar estos discos compartidos de forma habitual, es recomendable añadirlos para que se monten cuando arranque el sistema Ubuntu.
Ahora los tendremos disponibles:
Los añadimos al fichero de configuración:
Cuando arranquemos el segundo sistema z/OS, deberíamos poder acceder al disco.
Ahora voy a crear un dataset desde el primer sistema z/OS.
Desde el segundo sistema z/OS, al acceder por disco (ya que los catálogos no son compartidos), veremos el dataset creado.
¡Espero que este post os haya gustado!