Creating a multi-volume compatibility mode aggregate

Before you can create a large zFS aggregate (for example, ten full volumes), you must have the following prerequisites:
  • Ten empty volumes
  • A DFSMS DATACLASS that provides extended addressability (because the total size is greater than 4 GB)
  • A JOB that defines and formats the aggregate.
Assuming that:
  • Each volume is a 3390 with 3338 cylinders, and 3336 of those cylinders are free,
  • There are 15 tracks per cylinder,
  • And that you can get six 8-KB blocks per track (15 x 6 = 90 8 KB blocks per cylinder),
you should get 90 x 3336 = 300,240 8-KB blocks per volume and 10 x 300,240 = 3,002,400 8-KB blocks in the aggregate. Figure 1 is an example job that defines the VSAM linear data set in the first step and formats it as a zFS aggregate in the second step. The FORMAT step formats the primary allocation (3336 cylinders) and then extends the data set by the -grow amount (300,240 8-KB blocks) ten times (one extend for each full volume) until it reaches the total -size amount (3,002,400 8 KB blocks).
The example in Figure 1 causes the 10 full volumes to be allocated and formatted by using the -size and the -grow options on the IOEAGFMT step so that the result is a 10-volume (empty) file system. The -grow option is needed in order to allow the specification of a grow increment size that is less than the size of a volume.
Figure 1. Example job to create a multi-volume compatibility mode aggregate
//USERIDA  JOB ,’Multi-Volume’,
//         CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//DEFINE   EXEC   PGM=IDCAMS
//SYSPRINT DD     SYSOUT=H
//SYSUDUMP DD     SYSOUT=H
//AMSDUMP  DD     SYSOUT=H
//SYSIN    DD     *
     DEFINE CLUSTER (NAME(OMVS.VOL10.COMPAT.AGGR001) -
            VOLUMES(PRV000 PRV001 PRV002 PRV003 PRV004 -
                    PRV005 PRV006 PRV007 PRV008 PRV009) -
            DATACLASS(EXTATTR) -
            LINEAR CYL(3336) SHAREOPTIONS(3))
/*
//FORMAT   EXEC   PGM=IOEAGFMT,REGION=0M,
// PARM=(’-aggregate OMVS.VOL10.COMPAT.AGGR001 -compat -size 3002400 -gX
//             row 300240’)
//SYSPRINT DD     SYSOUT=H
//STDOUT   DD     SYSOUT=H
//STDERR   DD     SYSOUT=H
//SYSUDUMP DD     SYSOUT=H
//CEEDUMP  DD     SYSOUT=H
//*
As another example, you could define a VSAM linear data set as before with 10 volumes but with a secondary allocation size of 3336 cylinders, as shown in Figure 2. Then you could format only the first volume by leaving out the -size and the -grow and let zFS dynamic secondary allocation allocate and format the additional volumes (up to 9 more) as needed. The IOEPRMxx aggrgrow configuration option must be on.
Figure 2. Example job to create a multi-volume compatibility mode aggregate, using a secondary allocation size
 //USERIDA JOB ,'Multi-Volume',
// CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//DEFINE EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=H
//SYSUDUMP DD SYSOUT=H
//AMSDUMP DD SYSOUT=H
//SYSIN DD *
     DEFINE CLUSTER (NAME(OMVS.VOL10.COMPAT.AGGR001) -
            VOLUMES(PRV000 PRV001 PRV002 PRV003 PRV004 -
                    PRV005 PRV006 PRV007 PRV008 PRV009) -
            DATACLASS(EXTATTR) -
            LINEAR CYL(3336 3336) SHAREOPTIONS(3))
/*
//FORMAT EXEC PGM=IOEAGFMT,REGION=0M,
// PARM=('-aggregate OMVS.VOL10.COMPAT.AGGR001 -compat')
//SYSPRINT DD SYSOUT=H
//STDOUT DD SYSOUT=H
//STDERR DD SYSOUT=H
//SYSUDUMP DD SYSOUT=H
//CEEDUMP DD SYSOUT=H
//*