SMC 的两个主要功能是影响 MVS 分配以选择与磁带卷兼容的设备,以及拦截磁带挂载和卸载的 MVS 消息以对磁带库和虚拟磁带机自动执行这些操作。
对于特定的卷,SMC 分配主要根据卷介质和位置。
对于暂存卷,SMC 分配和挂载处理主要根据用户策略。可以使用 StorageTek DFSMS ACS 界面或 SMC TAPEREQ
控制语句来选择控制暂存分配和挂载的策略。
可以使用用户出口来选择策略。有关更多信息,请参阅《ELS Legacy Interfaces Reference》。
通过 DFSMS 指定的策略优先级高于通过 TAPEREQ
指定的策略,后者的优先级又高于在用户出口中指定的策略。
使用 SMC POLicy
命令可指定磁带分配和挂载请求的策略。使用此命令可以创建包含与分配或挂载事件关联的所有属性的指定策略,其中包括 MEDia
、RECtech
或 MODel
、SUBPool
、ESOTeric
、VTCS MGMTclas
和 TAPEPlex
。
POLicy
命令可与 TAPEREQ
语句或 StorageTek DFSMS 接口一起使用,以便将指定策略与分配和挂载请求关联。
此外,POLicy
命令还可用于在 MVS 解释器/动态分配出口 (Interpreter/Dynamic Allocation Exit, IDAX) 处理过程中影响分配变量。StorageTek DFSMS 接口和 TAPEREQ
用户都可使用 POLicy
IDAX 参数来更改正常情况下由 JCL 提供的变量。
SMC 策略通常在 SMC 启动时使用 SMC READ
命令装入的单个数据集或 PDS 成员中定义。此外,还可随时发出 POLicy
命令以添加新策略或替换现有策略的内容。
在以下 SMCCMDS
数据集样例中,READ
命令装入了包含 SMC 策略的 CNTL.PDS(POLMEM)
数据集:
ALLOCDEF ZEROSCR(ON,INSIDE) MSGDEF CASE(MIXED) TAPEPLEX NAME(HSCPLEX) LOCSUB(HSC0) READ DSN(’CNTL.PDS(POLMEM)’) TREQDEF DSN(’CNTL.PDS(TREQMEM)’)
注:
如果有任何 TAPEREQ
语句按名称引用了策略,则必须先处理 POLicy
命令,然后再处理 TREQDEF
命令。
如果有任何 POLicy
命令引用了 TAPEPlex,则必须先使用 TAPEPlex
命令定义该 TapePlex 名称,然后再处理 POLicy
命令。
有关 SMC POLicy
命令、SMSDef
命令和 TAPEREQ
控制语句的更多信息,请参阅《ELS Command, Control Statement, and Utility Reference》。
SMC POLicy
命令可用于在分配过程中首选设备。ESOTeric
参数可指定最多包含八个专用设备组的列表。在磁带机排除过程中,将包括在列出的任何专用设备组中的设备。在磁带机优先级确定过程中,设备按其在专用设备组列表中的位置排序。使用此功能可以执行以下操作:
首选较快或较慢的等效磁带机型号。
在磁带机可用的情况下,选择特定设备类型(例如 9940);如果首选磁带机忙,则选择备选设备类型
默认情况下,SMC 根据以下标准按顺序首选磁带机:
特定的卷 LSM 位置
专用设备组列表
LSM 暂存计数。
可以使用 POLicy
PREFer
参数更改相对权重。有更多信息,请参阅《ELS Command, Control Statement, and Utility Reference》。
使用 MVS 解释器/动态分配出口 (Interpreter/Dynamic Allocation Exit, IDAX) 可以根据 SMC IDAX
命令设置以及在单个 SMC POLicy
命令中指定的磁带策略来指定额外的用户策略。
通过 SMCIDAX 处理,可以根据在指定 SMC 策略对象中指定的策略,更改专用设备组的 JCL 参数、卷计数、到期日期或保留期或者子系统和程序名称。
这些 IDAX 策略功能通过 SMC IDAX
命令启用,可用于:
指定根据 TAPEREQ
应用 IDAX 策略。指定 SMC IDAX 处理必须先执行,然后再执行 IBM DFSMS 接口处理。IDAX
命令参数 SEQUENCE(FIRST)
指定 SMC IDAX 处理继续 StorageTek DFSMS 处理。
指定将 MOD
数据集视为新的 (MOD(ON))
。
可使用 SMC POLicy
命令来设置要在 IDAX 过程中应用的策略。仅当指定了 SMC IDAX
命令参数 POLICY(ON)
时,才应用以字母 IDAX 开头的所有策略参数。这些参数包括:
IDAXESOTERIC
此参数指定要替换为 JCL 专用设备组的专用设备组名称。当 JCL 语句不包含任何单元信息时,也可以应用 IDAXESOTERIC
。与可以将设备指定为 JCL 专用设备组的一个子集的 POLICY
ESOTERIC
参数不同,IDAXESOTERIC
执行“真正的”专用设备组替换。
IDAXEXPDT
和 IDAXRETPD
这两个参数是互斥的,可用于向 DD 语句指定保留期或到期日期,覆盖在 JCL 中可能已指定的任何值。
IDAXVOLCNT
此参数可用于覆盖在 JCL 中指定的卷计数参数。
IDAXSUBSYS
和 IDAXPROGRAM
可以使用这两个参数来指示分配使用 Oracle 的 StorageTek ExHPDM(Extended High-Performance Data Mover,扩展高性能数据移动器)。
SMC 可以在 IDAX 上使用 POLicy
命令 IDAXESOTERIC
参数执行专用设备组替换。当 SMC 在 IDAX 上执行专用设备组替换时,原始单元将替换为其他单元(专用设备组)。可以替换任何有效的专用设备组;例如,可以将磁盘专用设备组替换为磁带专用设备组。
注:
如果 SMC IDAX 处理修改了一些单元(可选磁盘),或者将磁带单元更改为磁盘,则建议指定 IDAX
命令参数 SEQUENCE(FIRST)
以允许 SMC DFSMS 处理继续 IBM DFSMS 处理。这可确保按预期方式管理磁带和磁盘数据集。
DFSMS 管理的新分配无法用于 SMC IDAX 专用设备组替换。
SMC 为所有 DISP=NEW
的数据集执行专用设备组替换。
默认情况下,SMC 将 DISP=MOD
的数据集视为预先存在的数据集,不执行专用设备组替换。仅当指定了 IDAX
命令 MOD(ON)
参数并且对作业的 JCL 中的数据集的第一次引用指定了 DISP=MOD
或 DISP=NEW
时,SMC 才会为 DISP=MOD
的数据集执行专用设备组替换。
如果单元关联链的不同成员选择了采用不同 IDAXESOTERIC
参数的 POLICY
,则将隔离单元关联链。
作业中的 VOL=REF
链经过验证并在必要时更新为链头专用设备组,以确保遵循卷引用。
必须先指定 SMSDef
TEMPdsn(ON)
之后才能为临时数据集执行 IDAX 专用设备组替换。
有关 IDAX
和 SMSDef
命令的更多信息,请参阅《ELS Command, Control Statement, and Utility Reference》。
SMC TAPEREQ
控制语句标识磁带请求属性,其中包括与分配和挂载请求关联的磁带策略。选择的策略基于 TAPEREQ
选择标准,如数据集名称或作业名称。
TAPEREQ POLicy
参数指示 SMC 引用由 SMC POLicy
命令定义的关联 SMC 策略。
TAPEREQ
控制语句位于由 TREQDEF
操作员命令指定的定义数据集中。TAPEREQ
语句必须放在此定义数据集中,不能作为操作员命令发出。
注:
有关 SMC TAPEREQ
控制语句和 POLicy
命令的更多信息,请参阅《ELS Command, Control Statement, and Utility Reference》。
如果有任何 TAPEREQ
语句按名称引用了策略,则必须先处理 POLicy
命令,然后再处理 TREQDEF
命令。有关更多信息,请参见SMCCMDS 数据集样例。
如果安装使用了 TAPEREQ
语句但没有 POLICY
或使用了用户出口,请参阅《ELS Legacy Interfaces Reference》以了解有关 POLICY
与其他 TAPEREQ
及用户出口策略指定之间的交互的信息。
通过结合使用 TAPEREQ
语句与 POLicy
命令,SMC 可用于根据特定的卷序列号指定分配策略。在有些情况下,此功能可用于将 HSC 非磁带库 VOLATTR
替换为 SMC TAPEREQ
控制语句和 POLicy
命令。
注:
仅当同时指定POLicy
关键字,并且使用关键字 VOLTYPE(SPECIFIC)
引用以前定义的 SMC 策略的情况下,才允许在 TAPEREQ
语句上使用 VOLSER
关键字。使用与卷序列关联的策略,可以:
可以为不同客户机的相同卷序列定义不同的卷特征。
例如,假定在介质为 STK1R
的 HSC 服务器上的 TapePlex 中存在卷序列号 AAAAAA
,但在某个特定的客户机上,卷 AAAAAA
是一个非磁带库标准盒式磁带。使用以下 POLicy
命令和 TAPEREQ
语句的组合,SMC 可以绕过对卷 AAAAAA
的卷查找,使用指定的策略信息:
POLICY NAME(MANVOL) VOLTYPE(SPECIFIC) MEDIA(STANDARD) NOTAPEPLEX TAPEREQ VOLSER(AAAAAA) POLICY(MANVOL)
根据卷序列将卷查找限制到单个 TapePlex。
例如,假定某个客户机主机上的 SMC 有两个定义的 TapePlex(PLEX1
和 PLEX2
),其中包含重叠的卷序列范围(AAA000-AAA999
和 BBB000-BBB999
)。默认情况下,SMC 会按定义顺序查询 TapePlex,并使用来自可识别卷序列的第一个 TapePlex 的信息。使用以下 POLicy
命令与 TAPEREQ
语句的组合,SMC 可以为客户机主机选择正确版本的卷:
POLICY NAME(PLEX1VOL) VOLTYPE(SPECIFIC) TAPEPLEX(PLEX1) POLICY NAME(PLEX2VOL) VOLTYPE(SPECIFIC) TAPEPLEX(PLEX2) TAPEREQ VOLSER(AAA000-AAA999) POLICY(PLEX1VOL) TAPEREQ VOLSER(BBB000-BBB999) POLICY(PLEX2VOL)
直接将磁带库外部的卷分配到特定的 TapePlex 中。
使用以下 POLicy
命令与 TAPEREQ
语句的组合,SMC 可以绕过磁带库卷查找,并将选择的非磁带库卷分配到与标准磁带兼容的磁带库磁带机:
POLICY NAME(INLIB) VOLTYPE(SPECIFIC) ESOTERIC(LIB1ESOT) MEDIA(STANDARD) NOTAPEPLEX TAPEREQ VOLSER(AAA000-AAA999) POLICY(INLIB)
注:
在上面的示例中,POLicy
命令上的 NOTAPEPLEX
参数指示 SMC 系统绕过其 TapePlex 卷查找逻辑。以下示例展示了推荐的指定 SMC Policy
语句、TREQDEF
命令和 TAPEREQ
控制语句的方法。
在 SMC Start 过程中包括以下条目:
//SMCCMDS DD DSN=MY.PARMLIB(MYSMCCMD),DISP=SHR
在 SMCCMDS
成员 MYSMCCMD
中包括以下条目:
READ DSN(’MY.PARMLIB(SMCPOL)’) TREQDEF DSN(’MY.PARMLIB(SMCTREQ)’)
注:
如果TAPEREQ
语句包括 POLicy
参数,则必须先处理 POLicy
命令,然后再处理 TREQDEF
命令,因为 TAPEREQ
语句中的策略名称是针对已确定的策略定义验证的。将 SMC POLicy
命令添加到成员 SMCPOL
中,例如:
POLICY NAME(POL1) SUBPOOL(SP1) MEDIA(STK1R) RECTECH(STK1RC) TAPEPLEX(HSC) POLICY NAME(POL2) SUBPOOL(SP2) MEDIA(VIRTUAL) MGMTCLAS(ABC)
修改成员 SMCTREQ
中的 TAPEREQ
控制语句以指向指定的策略,例如:
TAPEREQ DSN(A.B.*) POLICY(POL1)TAPEREQ DSN(A.C.*) POLICY(POL2)
这些 TAPEREQ
语句指向在步骤 3 中定义的 SMC 策略名称。
SMC READ
命令上的 HOST
参数可用于为不同的主机指定不同的策略定义。例如:
READ DSN(MY.PARMLIB(PRODPOLS)) HOST=PRODREAD DSN(MY.PARMLIB(TESTPOLS)) HOST=TEST
如果主机名称为 PROD
,则装入成员 PRODPOLS
。如果主机名称为 TEST
,则装入成员 TESTPOLS
。
连接到 DFSMS 的 SMC 接口可用于通过从 StorageTek DFSMS ACS 例程返回 MGMTCLAS
名称来选择 SMC POLICY
。
注:
在《ELS Legacy Interfaces Reference》中介绍了一种使用 SMC DFSMS 接口的备选方法。要启用 SMC DFSMS 接口,请按如下方式指定 ALLOCDef
命令的 SMS
参数:
ALLOCDEF SMS=ON
要禁用 SMC DFSMS 接口,请按如下方式指定 ALLOCDef
命令的 SMS
参数:
ALLOCDEF SMS=OFF
使用 SMSDef
命令可以针对您的安装要求定制默认的 SMC DFSMS 支持。此命令可用于包括或绕过特定的 SMC DFSMS 功能。有关 SMSDef
命令的更多信息,请参阅《ELS Command, Control Statement, and Utility Reference》。
可通过执行自动类选择 (Automatic Class Selection, ACS) 例程来指定 STORCLAS
和 MGMTCLAS
。
注:
SMC DFSMS 接口不支持STORCLAS
和 MGMTCLAS
JCL 参数,因为与 IBM MVS DFSMS 冲突。使用 STORCLAS
JCL 参数将导致数据集成为 IBM DFSMS 管理的数据集,而 MGMTCLAS
JCL 参数要求 IBM DFSMS 管理的数据集。类似地,不针对 &ACSENVIR=’STKTAP1'
变量测试的 DFSMS 例程会导致数据集成为 IBM DFSMS 管理的数据集,无法供 SMC DFSMS 接口使用。建议指定 SMSDef MGMTPol (ALL)
以指示 SMC 将所有 DFSMS 返回的管理类名称作为策略名称处理。
使用 SMSDef
命令可以通过包括或绕过特定的 SMC DFSMS 功能来定制默认的 SMC DFSMS 支持。有关此命令的更多信息,请参阅《ELS Command, Control Statement, and Utility Reference》。
IBM DFSMS 先调用变量 &ACSENVIR
设置为 ALLOC
的 ACS 例程,然后 SMC 再调用变量 &ACSENVIR
设置为 STKTAP1
的 ACS 例程。
SMC 在处理中的以下各点调用 ACS 例程:
在该信息对 SMC 可用时,以下只读变量列表由 SMC 传递到 DFSMS。并非所有变量都可用于对 ACS 例程的每个调用。特别是,在 JES3 地址空间中发生的进程(如 MDS)不提供对包含这些字段值的 MVS 控制块的 SMC 访问。有关例外,请参见每个 DFSMS 接口的介绍。
&ACSENVIR
(等于 SMC 接口的 STKTAP1
)
&ALLVOL
&ANYVOL
&DATACLAS
&DD
&DSORG
&DSN
&DSTYPE
&EXPDT
&FILENUM
&JOB
&LABEL
&LIBNAME
&NVOL
&PGM
&RETPD
&SYSNAME
&SYSPLEX
&UNIT
在 STKTAP1
环境中,&ANYVOL
变量仅用于匹配特定的 VOLSER
,不包含用于 VOL=REF
分配的 REF=xx
值。
在 JCL DD 语句指定此参数时设置 &DATACLAS
字段。
如果指定了 SMSDef TEMPdsn(ON)
,并且当前正在处理的数据集是临时数据集,则将 &LIBNAME
设置为字符 3
。
如果您的安装使用 IGDACSXT
例程在 DFSMS ACS 例程调用之前修改只读变量,请注意以下变量(即使已初始化)不会在 &ACSENVIR
设置为 STKTAP1
的情况下传递到 DFSMS ACS 例程。
&ACCT_JOB
&ACCT_STEP
&GROUP
&MSGVP
&USER
&XMODE
有关使用只读变量时的约束条件的更多信息,请参阅 IBM 出版物《DFSMSdfp Storage Administration Reference》。
在编写管理类例程时,请考虑以下事项:
仅在分配了存储类时调用管理类例程。
必须针对 &ACSENVIR=’STKTAP1’
只读变量值测试管理类例程。不针对 &ACSENVIR=’STKTAP1'
变量测试的 DFSMS 例程会导致数据集成为 IBM DFSMS 管理的数据集,无法供 SMC DFSMS 接口使用。
在卷挂载消息 IEC501A
拦截过程中,&UNIT
只读变量包含通用单元类型(如 3490)。因此,在为使用 &UNIT
只读变量的 ACS 例程编写代码时,必须仔细考虑。
DFSMS 发出的 JES3 静态分配的消息会路由到 SMC GTF 跟踪文件。
下图提供了一个管理类例程样例:
PROC STORCLAS IF &ACSENVIR = ’STKTAP1’ THEN SET &STORCLAS = ’STKSTORC’ END END ====================================================================== PROC MGMTCLAS FILTLIST LOCAL INCLUDE(BACKUP*.**., PROD.BKP*.**) FILTLIST REMOTE INCLUDE(PROD.OFFSITE.**) IF &ACSENVIR = ’STKTAP1’ THEN SELECT WHEN (&DSN = &LOCAL) SET &MGMTCLAS = ’INVTAPE’ WHEN (&DSN = &REMOTE) SET &MGMTCLAS = ’OFFVTAPE’ END END
注:
在此示例中,STORCLAS
例程向每个调用分配了一个存储类。这样可确保 MGMTCLAS
例程在挂载时也被驱动。在分配时以及需要处理消息 IEF233A
的挂载期间,&UNIT
只读变量会被 SMC 设置为通过 DD 语句的 UNIT=
参数指定的值。在需要处理消息 IEC501A
的挂载期间,SMC 会将 &UNIT
只读变量设置为通用单元类型(如 3490)。
在动态分配过程中,可通过编写 DADACL
文本单元代码来指定 &DATACLAS
值。但是,在处理挂载消息 IEF233A
时,SMC 无法使用此值。
在 JES3 C/I POSTSCAN 处理过程中,以下只读变量对 SMC 不可用:
&DATACLAS
(如果已在 JCL 中指定)
&EXPDT
&PGM
&RETPD
在 SSI23 动态分配处理过程中,所有只读变量都可用于 ACS 例程。
在 JES3 MDS 处理过程中,以下只读变量对 SMC 不可用:
&DATACLAS
(如果已在 JCL 中指定)
&EXPDT
&PGM
&RETPD
在 IAT5210
挂载消息处理过程中,以下只读变量对 SMC 不可用:
&DATACLAS
(如果已在 JCL 中指定)
&EXPDT
&PGM
&RETPD
&UNIT
(不包含原始专用设备组,但包含选择的设备编号,如 0A10
)
在处理动态分配的挂载消息 IEF233A
时,SVC99
文本单元 DADACL
指定的 &DATACLAS
值不可用。
在处理挂载消息 IEC501A
时,SMC 会将 &UNIT
只读变量设置为通用单元类型(如 3490)。
注:
与 DFSMS 的每个 SMC 交互都会调用所有级别的 ACS 例程。上面列出的变量可用性适用于所有 ACS 例程。DFSMS 提供了以下验证正确 ACS 例程执行的方法:
ACS 例程中的 DFSMS WRITE
语句
DFSMS ISMF
测试功能
在 SMC 调用 DFSMS ACS 例程时,DFSMS WRITE
语句发出的所有消息都会路由 GTF 跟踪文件(如果 SMC 跟踪处于活动状态)。
注:
DFSMS WRITE
语句仅发送到 SSI55 解释器/动态分配出口 (Interpreter/Dynamic Allocation Exit, IDAX) 专用设备组替换阶段的 SYSMSG
数据集。
DFSMS WRITE
语句仅发送到 SSI55 解释器/动态分配出口 (Interpreter/Dynamic Allocation Exit, IDAX) 专用设备组替换阶段的 SYSMSG
数据集。