FDRPAS and IBM basic HyperSwap
Basic HyperSwap is an IBM facility included in z/OS, which automates the swap of a large number of Metro Mirror (PPRC) primary volumes to their secondary devices, in case of a planned or unplanned outage. FDRPAS cannot SWAP a volume while it is eligible to be swapped by HyperSwap. A specialized program, FDRHXBLK, is available to block Basic HyperSwap before FDRPAS does the actual UCB swaps, and to unblock Basic HyperSwap after the UCB swaps are complete (block/unblock support requires z/OS 1.12 or above, or z/OS 1.9 through 1.11 with the fix for APAR OA26509). With Block and Unblock, Basic HyperSwap does not need to be brought down to do an FDRPAS SWAP. Replication continues, and volumes remain in PPRC synchronization, but Basic HyperSwap does not initiate a SWAP for the short period when it is blocked. The Block is not in effect while FDRPAS is copying the data from the source volumes to the targets. The Block is only issued after the targets are synchronized and FDRPAS is ready to do the actual SWAP of the UCBs. The Unblock is done as soon as all of the actual SWAP tasks have been completed. The time depends on the number of DASD volumes being swapped and the number of participating LPARs, and may be only a few seconds. Basic HyperSwap recognizes that the UCBs have been swapped and automatically updates its configuration information. Since the period when Basic HyperSwap is blocked is very short, it should not be necessary to do the FDRPAS SWAP tasks of all DASD volumes in the Basic HyperSwap configuration at the same time; the installation is able to do the FDRPAS SWAP tasks in convenient groups, such as 64 or 256 volumes at a time.
If Basic HyperSwap is being blocked, then each monitor task also issues a block. Since a block request only applies to one sysplex, this is necessary in case the LPAR in which the monitor is running is in a different sysplex. If Basic HyperSwap is being blocked, then when a monitor does the UCB SWAP for the last volume in a group, the monitor issues an unblock.
This section deals with Basic HyperSwap. See FDRPAS and IBM GDPS/PPRC HyperSwap for information on GDPS HyperSwap.
To do an FDRPAS SWAP of volumes that are being managed by Basic HyperSwap, specify CONFIRMSWAP=YES on the SWAP jobs, and run a special multi-step job (described below) while the SWAP jobs are running, to Block and Unblock Basic HyperSwap at the appropriate times. With CONFIRMSWAP=YES, FDRPAS allows HyperSwap to remain enabled during the data copy phase of each volume; otherwise a volume being managed by HyperSwap would not be processed. Since each FDRPAS job can do up to 64 DASD volumes concurrently, multiple FDRPAS SWAP jobs may be required.
Rules
The following rules and recommendations apply to this procedure.
- All of the SWAP jobs in a group must run on the same LPAR.
- The special 4-step job must be executed on the same LPAR as the SWAP job(s).
- All of the SWAP jobs in a group must complete before the next group is started.
- All of the DASD volumes in the group must be in the Basic HyperSwap configuration. You cannot SWAP HyperSwap and non-HyperSwap volumes at the same time.
- It is recommended that all of the volumes in a group be the same size 1 (model), for example, all 3390-3 or all 3390-27.
- This procedure does not place a limit on the number of volumes in a group, but we suggest one to four SWAP jobs at a time with up to 64 volumes each.
- The SWAP jobs must use CONFIRMSWAP=YES.
- MAXACTIVESWAPS=YES is recommended.
- It is a customer responsibility to set up PPRC for the target devices, and to include the target devices in the HyperSwap configuration.
- If you use the I/O timing facility as a trigger for HyperSwap, then you should disable it while running FDRPAS by issuing the console command:
SETIOS MIH,IOTHSWAP=NO
At the end of each copy pass, FDRPAS temporarily suspends all I/O to the source volume. Under some conditions, this can cause I/O requests to remain on the queue for longer than the I/O timing limit, especially if you have set a short limit (one minute or less). This condition is not an error and should not be allowed to trigger HyperSwap.
After you are finished running FDRPAS, you can re-enable I/O timing as a trigger for HyperSwap by issuing the console command:
SETIOS MIH,IOTHSWAP=YES
SWAP Job
Here is an example of the SWAP step:
//SWAP EXEC PGM=FDRPAS,REGION=0M//STEPLIB DD DISP=SHR,DSN=fdrpas.loadlib//SYSPRINT DD SYSOUT=*//SYSUDUMP DD SYSOUT=*//SYSIN DD * SWAP TYPE=FULL,CONFIRMSWAP=YES,MAXTASKS=100, MAXACTIVESWAPS=YES MOUNT VOL=vol,SWAPUNIT=uuuu
…/*
A maximum of 100 MOUNT statements are permitted per job step.
Monitor Tasks
As usual, FDRPAS MONITOR tasks are required on all other LPARs. Each MONITOR task can handle up to 64 concurrent swaps, so you may need multiple MONITOR tasks. See MONITOR SWAP Examples for examples of MONITOR task steps.
Confirm, Block, Wait, & Unblock Job04
When the FDRPAS SWAP jobs are running, submit a special 4-step job.
Step 1: (CONFIRM) of the Confirm, Block, Wait, & Unblock Job
The confirm step waits for all DASD volumes to reach the “ready to confirm” stage, and then it confirms them.
//CONFIRM EXEC PGM=FDRPAS,REGION=0M//STEPLIB DD DISP=SHR,DSN=fdrpas.loadlib//SYSPRINT DD SYSOUT=*//SYSUDUMP DD SYSOUT=*//SYSIN DD * MONITOR TYPE=CONFIRMSWAP MOUNT VOL=vol
…/*
Add additional MOUNT statements for ALL the volumes to be swapped. If there are more than 250 MOUNT statements, change the MAXCARDS= operand accordingly.
Step 2: (BLOCK) of the Confirm, Block, Wait, & Unblock Job
However, the swaps do not complete as long as the DASD volumes are eligible to be swapped by HyperSwap. The block step executes program FDRHXBLK to block Basic HyperSwap.
//BLOCK EXEC PGM=FDRHXBLK,PARM=BLOCK//STEPLIB DD DISP=SHR,DSN=fdrpas.loadlib//SYSPRINT DD SYSOUT=*//SYSUDUMP DD SYSOUT=*
FDRHXBLK does not use a SYSIN DD statement or control statements. The DASD volumes are not listed because the blocking of Basic HyperSwap is a global operation that applies to the whole system.
As soon as the SWAP task see that Basic HyperSwap has been blocked, they perform the actual UCB swaps and terminate.
Step 3: (WAITTERM) of the Confirm, Block, Wait, & Unblock Job
The WAITTERM step waits for the SWAP tasks to terminate on all of the selected volumes.
//WAITTERM EXEC PGM=FDRPAS,REGION=0M//STEPLIB DD DISP=SHR,DSN=fdrpas.loadlib//SYSPRINT DD SYSOUT=*//SYSUDUMP DD SYSOUT=*//SYSIN DD * MONITOR TYPE=WAITSWAPTERM MOUNT VOL=vol
…
/*
Add additional MOUNT statements for ALL the volumes to be swapped. It is very important to have the same list of volumes in this step as in the CONFIRMSWAP step. If there are more than 250 MOUNT statements, change the MAXCARDS= operand accordingly.
Step 4: (UNBLOCK) of the Confirm, Block, Wait, & Unblock Job
After all of the SWAP tasks have terminated, the unblock step executes program FDRHXBLK to unblock Basic HyperSwap.
//UNBLOCK EXEC PGM=FDRHXBLK,PARM=UNBLOCK//STEPLIB DD DISP=SHR,DSN=fdrpas.loadlib//SYSPRINT DD SYSOUT=*//SYSUDUMP DD SYSOUT=*
FDRHXBLK does not use a SYSIN DD statement or control statements. The DASD volumes are not listed because the unblocking of Basic HyperSwap is a global operation that applies to the whole system.