zFS installation and configuration steps

To install, configure, and access zFS, you must perform the following administrative steps:

  1. Install and perform postinstallation of Start of changez/OS File System (zFS)End of change by following the applicable instructions in z/OS Program Directory or in ServerPac: Installing Your Order. Following is a summary of the information that is contained in those documents:
    1. Ensure that the target and distribution libraries for zFS are available.
    2. Run the prefix.SIOESAMP(IOEISMKD) job from UID 0 to create the symbolic links that are used by Start of changezFSEnd of change. This job reads the member prefix.SIOESAMP(IOEMKDIR) to delete and create the symbolic links.
    3. Ensure that the DDDEF statements for zFS are defined by running the prefix.SIOESAMP(IOEISDDD) job.
    4. Install the Load Library for zFS. The Load Library (hlq.SIEALNKE) must be APF-authorized and must be in the link list.
    5. Install the samples (hlq.SIOESAMP).
    6. Install the sample PROC for ZFS (hlq.SIOEPROC).
    7. One method of providing an IOEFSPRM configuration file is to define it as a data set with an IOEZPRM DD card. If zFS is to run in the OMVS address space, the IOEZPRM DD card should be placed in the OMVS PROC. If zFS is to run in its own colony address space, create a JCL PROC for the zFS started task in SYS1.PROCLIB by copying the sample PROC from the previous step.

      The DDNAME IOEZPRM identifies the optional zFS configuration file. Although this DD statement is optional, it is recommended that it be included to identify the parameter data set to be used for zFS. For now, it is suggested that this DD refer to a PDS with a member called IOEFSPRM that has a single line that begins with an asterisk (*) in column 1. Subsequent modifications can be made to the IOEFSPRM member, see IOEFSPRM.

      As the preferred alternative to the IOEZPRM DDNAME specification, delete the IOEZPRM DDNAME and use the IOEPRMxx parmlib member. In this case, the member has the name IOEPRMxx, where you specify xx in the parmlib member list. See IOEFSPRM for more information.

      To run zFS so that it is not under control of JES, see step 2. You might want to do this so that zFS does not interfere with shutting down JES.

    8. Add the following RACF® commands: Start of change
      ADDGROUP ZFSGRP SUPGROUP(SYS1) OMVS(GID(2))
      ADDUSER ZFS OMVS(HOME('/') UID(0)) DFLTGRP(ZFSGRP) AUTHORITY(USE) UACC(NONE)
      RDEFINE STARTED ZFS.** STDATA(USER(ZFS))
      SETROPTS RACLIST(STARTED)
      SETROPTS RACLIST(STARTED) REFRESH
      
      End of change

      Start of changeThe preceding commands define what will be referred to as the zFS user ID. You can specify ZFS as the user ID, or you can specify a user ID other than ZFS to run the zFS started task if it is defined with the same RACF characteristics as shown in the previous example. If zFS is to run in the OMVS address space, specify OMVS instead of ZFS for the user ID.End of change

      Start of changeThe ZFS user ID must have at least ALTER authority to all VSAM linear data sets that contain zFS aggregates.End of change

      If there are encrypted zFS aggregates, the Start of changeZFSEnd of change user ID must also have at least READ access to any CSFKEYS profiles for aggregates that are encrypted. If ICSF is configured with CHECKAUTH(YES), the Start of changeZFSEnd of change user ID must also have at least READ access to the CSFKRR2 CSFSERV profile. For more information about the CSFKEYS and CSFSERV profiles and the encryption of data sets, see Data set encryption in z/OS DFSMS Using Data Sets.

      Start of changeAs an alternative to permitting the ZFS user ID to all of the necessary security profiles, you can assign the TRUSTED attribute to the zFS started task.End of change

  2. Create a BPXPRMxx entry for zFS.
    Add a FILESYSTYPE statement to your BPXPRMxx parmlib member:
    FILESYSTYPE TYPE(ZFS)ENTRYPOINT(IOEFSCM) ASNAME(ZFS)
    Specifying the ASNAME(ZFS) keyword causes zFS to run in its own colony address space. To have zFS run in the OMVS address space, omit the ASNAME keyword.
    FILESYSTYPE TYPE(ZFS) ENTRYPOINT(IOEFSCM)

    Update your IEASYSxx parmlib member to contain the OMVS=(xx,yy) parameter for future IPLs.

    If necessary, you can specify that zFS should not be only run under control of JES by including SUB=MSTR. For example:
    FILESYSTYPE TYPE(ZFS) ENTRYPOINT(IOEFSCM) ASNAME(ZFS,'SUB=MSTR')
    To use the IOEPRMxx parmlib members (mentioned in step 1.g), specify the xx values in the FILESYSTYPE statement for zFS as in the following example:
    FILESYSTYPE TYPE(ZFS) ENTRYPOINT(IOEFSCM) ASNAME(ZFS,'SUB=MSTR') PARM('PRM=(01,02,03)')
    In this case, you must not have an IOEZPRM DD statement in your ZFS PROC. Step 4 contains an explanation as to why you should not have an IOEZPRM DD. For more information about using IOEPRMxx, see IOEFSPRM.
  3. (Optional) Create or update the zFS configuration options file (IOEPRMxx, also known as IOEFSPRM).

    The zFS configuration options file is optional. There are two methods to specify the zFS configuration options file: use IOEPRMxx in the parmlib or use an IOEZPRM DD statement in the PROC that is used to start the address space where zFS is running.

    • As the preferred alternative to the IOEZPRM DD statement, the IOEFSPRM member can be specified as a true parmlib member. In this case, the member has the name IOEPRMxx, where xx is specified in the parmlib member list. You must omit the IOEZPRM DD statement in the PROC that is used to start the address space in which zFS will run. The IOEPRMxx configuration options file can be specified with no options contained in it. Options are only required if you want to override the default zFS options. As mentioned in step 1.g, it is recommended that you create an empty IOEPRMxx parmlib member. The IOEPRMxx member should only contain one line that is a comment (an asterisk (*) in column 1). See IOEFSPRM for more information.
    • If you use the IOEZPRM DD statement, the PDS (organization PO) to which it points should have a record format of FB with a record length of 80. The block size can be any multiple of 80 that is appropriate for the device. A sample IOEFSPRM is provided in hlq.SIOESAMP(IOEFSPRM). IOEFSPRM is also known as IOEZS001. See IOEFSPRM for a description of the IOEFSPRM options. Update the IOEZPRM DD statement in the OMVS or ZFS PROC to contain the name of the IOEFSPRM member, as shown in the following example:
      IOEZPRM DD DSN=SYS4.PVT.PARMLIB(IOEFSPRM),DISP=SHR
      If you are running a sysplex, you must have different zFS configuration files for different systems. Using zFS in a shared file system environment explains why different zFS configuration files are required. In this case, you should also specify a system qualifier in the data set name in the IOEZPRM DD, as shown in the following example:
      IOEZPRM DD DSN=SYS4.&SYSNAME..PARMLIB(IOEFSPRM),DISP=SHR
  4. (Optional) Preallocate data sets for debugging.

    This step is optional because trace information is always available in the dump data set, and can be requested only by IBM® Service. If needed, allocate the zFS trace output data set as a PDSE with RECFM=VB, LRECL=133 with a primary allocation of at least 50 cylinders and a secondary allocation of 30 cylinders. The name of this trace output data set should be specified in the trace_dsn option in the IOEFSPRM file. Next, allocate a debug settings data set as a PDS member with an LRECL=80. Add one comment line in the member (use a /* followed by */). Specify the name of this debug settings data set member in the debug_settings_dsn option of the IOEFSPRM file. Perform this process for each member of the sysplex.

  5. Create a zFS (compatibility mode) file system.

    A zFS file system resides in a zFS aggregate. A zFS aggregate is a VSAM linear data set. See Creating and managing zFS file systems using compatibility mode aggregates for details on creating zFS file systems.

    Beginning in z/OS® V2R1, ioeagfmt fails if the zFS PFS is not active on the system.

  6. Create a directory and mount the zFS file system on it.

    You can create a directory with the z/OS UNIX mkdir command or you can use an existing directory. The TSO/E MOUNT command or the /usr/sbin/mount REXX exec can be used to mount the zFS file system on the directory. See Creating and managing zFS file systems using compatibility mode aggregates for details on mounting zFS file systems.

    Note: Steps 6 and 7 can be repeated as many times as necessary for each permanently mounted zFS file system. Only step 6 is needed for zFS automounted file systems (assuming that the automount file system has been set up.)
  7. Add mount statements to BPXPRMxx members to mount the zFS file systems on the next IPL.
    For example:
    MOUNT FILESYSTEM('OMVS.PRV.COMPAT.AGGR001') TYPE(ZFS) MOUNTPOINT('/etc/mountpt')

All MVS data sets that are specified in DD statements in the zFS PROC, in options in the IOEFSPRM configuration file, and in MOUNT statements in BPXPRMxx must be available at IPL time. If an MVS data set is migrated by hierarchical storage management (HSM), then the initialization of zFS might wait indefinitely for the data set recall. This hang on one system can lead to a sysplex-wide hang. Any ARC0055A message that is issued for the migrated data set will need a reply to prevent this hang.