SMC の 2 つのプライマリ機能は、MVS 割り振りに影響を及ぼしテープボリュームに適合するデバイスを選択することと、テープマウントとマウント解除の MVS メッセージをインターセプトして、ライブラリドライブおよび仮想ドライブのこれらの動作を自動化することです。
特定のボリュームの場合、SMC 割り振りは主にボリュームのメディアと場所に基づきます。
スクラッチボリュームの場合、SMC 割り振りとマウント処理は主にユーザーポリシーに基づきます。スクラッチの割り振りとマウントを制御するためのポリシーは、StorageTek DFSMS ACS インタフェースまたは SMC TAPEREQ
制御文のどちらかを使用して選択できます。
ユーザー出口を使用するとポリシーを選択できます。詳細については、『ELS レガシーインタフェースリファレンス』を参照してください。
DFSMS によって指定されたポリシーは TAPEREQ
によって指定されたポリシーより優先され、後者のポリシーがさらに、ユーザー出口で指定されたポリシーより優先されます。
テープの割り振りおよびマウント要求のためのポリシーを指定するには、SMC POLicy
コマンドを使用します。このコマンドを使用すると、MEDia
、RECtech
または MODel
、SUBPool
、ESOTeric
、VTCS MGMTclas
、TAPEPlex
などの、割り当てまたはマウントイベントに関連付けられたすべての属性を含む名前付きポリシーを作成できます。
POLicy
コマンドを TAPEREQ
文または StorageTek DFSMS インタフェースと組み合わせて使用すると、名前付きポリシーを割り振りおよびマウント要求に関連付けることができます。
また、POLicy
コマンドは、IDAX (MVS インタプリタ/動的割り振り出口) 処理中に割り振り変数に影響を及ぼす機能も提供します。POLicy
IDAX パラメータは、通常は JCL によって提供される変数を変更するために、StorageTek DFSMS インタフェースと TAPEREQ
のどちらのユーザーでも使用できます。
SMC ポリシーは通常、1 つのデータセットまたは PDS メンバーの中で定義され、SMC READ
コマンドを使用して SMC の起動時にロードされます。また、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
文がポリシーを名前で参照している場合、TREQDEF
コマンドの前に POLicy
コマンドを処理する必要があります。
POLicy
コマンドが TAPEPlex を参照している場合、POLicy
コマンドを処理する前に、TAPEPlex
コマンドを使用して TapePlex 名を定義する必要があります。
SMC POLicy
コマンド、SMSDef
コマンド、および TAPEREQ
制御文の詳細については、『ELS コマンド、制御文、およびユーティリティーリファレンス』を参照してください。
SMC POLicy
コマンドを使用すると、割り振り処理中にデバイスの優先順位を付けることができます。ESOTeric
パラメータは、最大 8 つのエソテリックを含むリストを指定できます。ドライブ除外中、リスト内の任意のエソテリックのデバイスが追加されます。ドライブ優先度中、エソテリックリストの位置に従ってデバイスの順序が示されます。この機能では、次を実行できます。
同等のドライブの速いモデルまたは遅いモデルを優先します。
ドライブが使用できる場合は特定のデバイスタイプ (9940 など) を優先します。優先ドライブが使用中の場合は、ほかのデバイスタイプを選択します
デフォルトでは、SMC は次の基準に順番に従って、ドライブを優先付けします。
特定のボリューム LSM 位置
エソテリックリスト
LSM スクラッチカウント
相対的な重要度は POLicy
PREFer
パラメータを使用して変更できます。詳細については、『ELS コマンド、制御文、およびユーティリティーリファレンス』を参照してください。
IDAX (MVS インタプリタ/動的割り振り出口) での SMC 処理は、SMC IDAX
コマンド設定と、個々の SMC POLicy
コマンドで指定したテープポリシーに基づいて、追加ユーザーポリシーを指定できます。
SMCIDAX処理を利用すると、指定 SMC ポリシーオブジェクトで指定したポリシーに基づいて、エソテリック、ボリュームカウント、有効期限または保存期間、サブシステムおよびプログラム名の JCL パラメータを変更できます。
これら IDAX ポリシー機能は SMC IDAX
コマンドによって有効化されます。これを使用すると、次のことができます。
IDAX ポリシーが TAPEREQ
に基づいて適用されるように指定します。IBM DFSMS インタフェース処理が実行される前に SMC IDAX 処理を実行する必要があるように指定します。IDAX
コマンドパラメータ SEQUENCE(FIRST)
は、SMC IDAX 処理を StorageTek DFSMS 処理の前に行うように指定します。
MOD
データセットが新しい (MOD(ON))
として処理されるように指定します。
SMC POLicy
コマンドを使用すると、IDAX 処理中に適用するポリシーを設定できます。「IDAX」の文字で始まるすべてのポリシーパラメータは、SMC IDAX
コマンドパラメータ POLICY(ON)
が指定されている場合にのみ適用されます。次のようなパラメータがあります。
IDAXESOTERIC
このパラメータは JCL エソテリックの代替エソテリック名を指定します。また、IDAXESOTERIC
は JCL 文にユニット情報が含まれていない場合にも適用されます。デバイスを JCL エソテリックのサブセットとして指定するために使用できる POLICY
ESOTERIC
パラメータとは異なり、IDAXESOTERIC
は「真の」エソテリック置換を実行します。
IDAXEXPDT
および IDAXRETPD
これらのパラメータはいずれか一方しか指定できません。保存期間または有効期限を DD 文に指定し、JCL で指定されている値を置き換えます。
IDAXVOLCNT
このパラメータを使用すると、JCL で指定されるボリュームカウントパラメータをオーバーライドできます。
IDAXSUBSYS
および IDAXPROGRAM
これらのパラメータを使用すると、Oracle の StorageTek ExHPDM (Extended High-Performance Data Mover) を使用するように割り振りに指示できます。
SMC は、POLicy
コマンドの IDAXESOTERIC
パラメータを使用して IDAX でエソテリック置換を実行できます。SMC が IDAX でエソテリック置換を実行する場合、元のユニットは別のユニット (エソテリック) に置き換えられます。有効な任意のエソテリックを置換できます。たとえば、ディスクエソテリックでテープエソテリックを置換できます。
注:
SMC IDAX 処理で、オプションのディスクであったユニットを変更するか、またはテープユニットをディスクに変更する場合は、IDAX
コマンドパラメータ SEQUENCE(FIRST)
を指定して、SMC DFSMS 処理を IBM DFSMS 処理の前に行えるようにすることを推奨します。これにより、テープおよびディスクのデータセットを想定どおりに管理できます。
DFSMS が管理する新しい割り振りは、SMC IDAX エソテリック置換の対象ではありません。
すべての DISP=NEW
データセットに対して、エソテリック置換が実行されます。
デフォルトでは、SMC は DISP=MOD
データセットを既存のデータセットとして処理し、エソテリック置換を実行しません。SMC は、IDAX
コマンドの MOD(ON)
パラメータが指定され、かつジョブの JCL 内のそのデータセットへの最初の参照で DISP=MOD
または DISP=NEW
のどちらかが指定されている場合にのみ DISP=MOD
データセットのエソテリック置換を実行します。
チェーンの異なるメンバーが、異なる IDAXESOTERIC
パラメータを指定した POLICY
を選択すると、ユニットのアフィニティーチェーンは分離されます。
ボリュームリファレンスが確実に適用されるよう、必要な場合は、チェーンヘッドであるエソテリックを用いて、ジョブ内の VOL=REF
チェーンを検証/更新できます。
一時データセットに対して IDAX エソテリック置換を実行できるようにするには、その前に SMSDef
TEMPdsn(ON)
を指定する必要があります。
IDAX
および SMSDef
コマンドの詳細については、『ELS コマンド、制御文、およびユーティリティーリファレンス』を参照してください。
SMC TAPEREQ
制御文は、割り振りおよびマウント要求に関連付けられたテープポリシーなどの、テープ要求属性を識別します。選択されたポリシーは、データセット名やジョブ名などの TAPEREQ
選択基準に基づいています。
TAPEREQ POLicy
パラメータは、SMC に SMC POLicy
コマンドで定義されている関連付けられた SMC ポリシーを参照するよう指示します。
TAPEREQ
制御文は、TREQDEF
オペレータコマンドが指定する定義データセット内にあります。TAPEREQ
文はこの定義データセット内に配置する必要があります。これをオペレータコマンドとして発行することはできません。
注:
SMC TAPEREQ
制御文および POLicy
コマンドの詳細については、『ELS コマンド、制御文、およびユーティリティーリファレンス』を参照してください。
TAPEREQ
文がポリシーを名前で参照している場合、TREQDEF
コマンドの前に POLicy
コマンドを処理する必要があります。詳細は、SMCCMDS データセットの例を参照してください。
インストールで POLICY
なしの TAPEREQ
文 (つまり、ユーザー出口) が使用されている場合は、POLICY
とその他の TAPEREQ
の間の対話やユーザー出口ポリシーの指定について『ELS レガシーインタフェースリファレンス』を参照してください。
SMC では、TAPEREQ
文と POLicy
コマンドの組み合わせを使用して、特定のボリュームシリアル番号に基づいて割り当てポリシーを指定できます。場合によっては、この機能を使用して、HSC ライブラリ外 VOLATTR
を SMC TAPEREQ
制御文と POLicy
コマンドで置き換えることができます。
注:
TAPEREQ
文で VOLSER
キーワードが許可されるのは、POLicy
キーワードも指定され、それがキーワード VOLTYPE(SPECIFIC)
で以前に定義された SMC ポリシーを参照している場合だけです。ボリュームシリアルに関連付けられたポリシーを使用すると、次のことができます。
異なるクライアントに向けて、同じボリュームシリアルに異なるボリューム特性を定義できます。
たとえば、volser AAAAAA
が STK1R
のメディアを備えた HSC サーバー上の TapePlex 内に存在するが、特定のクライアント上で、ボリューム AAAAAA
がライブラリ外の標準カートリッジであるとします。POLicy
コマンドと TAPEREQ
文を次のように組み合わせると、SMC はボリューム AAAAAA
に対するボリューム検索をバイパスし、指定されたポリシー情報を使用します。
POLICY NAME(MANVOL) VOLTYPE(SPECIFIC) MEDIA(STANDARD) NOTAPEPLEX TAPEREQ VOLSER(AAAAAA) POLICY(MANVOL)
ボリュームシリアルに基づいて、ボリューム検索を 1 つの TapePlex に制限できます。
たとえば、クライアントホスト上の SMC に、重複したボリュームシリアル範囲 (AAA000-AAA999
と BBB000-BBB999
) を含む 2 つの定義済み TapePlex である PLEX1
と PLEX2
が存在するとします。デフォルトでは、SMC は TapePlexes を定義されている順番で照会し、ボリュームシリアルを認識する最初の 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
パラメータが含まれている場合は、TAPEREQ
文内のポリシー名は定義されたポリシー定義に対して検証されるため、TREQDEF
コマンドの前に POLicy
コマンドを処理する必要があります。メンバー SMCPOL
に SMC POLicy
コマンドを追加します。例を次に示します。
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
を選択する機能が提供されます。
注:
SMC DFSMS インタフェースを使用するための代わりの方法は、『ELS レガシーインタフェースリファレンス』で説明されています。SMC DFSMS インタフェースを有効化するには、ALLOCDef
コマンドの SMS
パラメータを次のように指定します。
ALLOCDEF SMS=ON
SMC DFSMS インタフェースを無効化するには、ALLOCDef
コマンドの SMS
パラメータを次のように指定します。
ALLOCDEF SMS=OFF
SMSDef
コマンドを使用すると、使用しているインストール要件に応じてデフォルトの SMC DFSMS サポートをカスタマイズできます。SMSDef コマンドによって、特定の SMC DFSMS 機能をインクルードまたはバイパスすることができます。SMSDef
コマンドの詳細については、『ELS コマンド、制御文、およびユーティリティーリファレンス』を参照してください。
STORCLAS
および MGMTCLAS
は、Automatic Class Selection (ACS: 自動クラス選択) ルーチンを実行することによって指定できます。
注:
SMC DFSMS インタフェースでは、STORCLAS
および MGMTCLAS
JCL パラメータはサポートされません (IBM MVS DFSMS と競合するため)。STORCLAS
JCL パラメータを使用すると、データセットが IBM DFSMS で管理されるようになり、MGMTCLAS
JCL パラメータには IBM DFSMS で管理されるデータセットが必要になります。同様に、DFSMS ルーチンで &ACSENVIR=’STKTAP1'
変数をテストしないとデータセットが IBM DFSMS で管理されるようになり、SMC DFSMS インタフェースでは使用できなくなります。SMC に DFSMS によって返されたすべての管理クラス名をポリシー名として処理するよう指示するために、SMSDef MGMTPol (ALL)
を指定することをお勧めします。
SMC SMSDef
コマンドを使用すると、特定の SMC DFSMS 機能をインクルードしたりバイパスしたりして、デフォルトの SMC DFSMS サポートをカスタマイズできます。このコマンドの詳細については、『ELS コマンド、制御文、およびユーティリティーリファレンス』を参照してください。
変数 &ACSENVIR
が STKTAP1
に設定された状態で SMC が ACS ルーチンを呼び出す前に、IBM DFSMS は、変数 &ACSENVIR
が ALLOC
に設定された状態で ACS ルーチンを呼び出します。
SMC は処理の次の時点で ACS ルーチンを開始します。
SSI55 Interpreter/Dynamic Allocation Exit (IDAX: インタプリタ/動的割り振り出口)
SSI24 共通割り振り
マウントメッセージインターセプト
SMC は、該当情報を取得すると、次の読み取り専用変数を DFSMS に渡します。すべての変数が ACS ルーチンへの各呼び出しで利用可能であるとは限りません。特に、JES3 アドレス空間で実行される処理 (MDS など) の場合、SMC は、これらのフィールド値を有する MVS 制御ブロックにはアクセスできません。例外については、各 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
値は含んでいません。
&DATACLAS
フィールドは、JCL DD 文でこのパラメータが指定されたときに設定されます。
SMSDef TEMPdsn(ON)
が指定されており、処理されている現在のデータセットが一時データセットである場合、&LIBNAME
は文字 3
に設定されます。
インストールで、DFSMS ACS ルーチン呼び出しの前に IGDACSXT
ルーチンを使用して読み取り専用変数を変更している場合は、&ACSENVIR
が STKTAP1
に設定されていると、次の変数は (初期化されていても) DFSMS ACS ルーチンに渡されないことに注意してください。
&ACCT_JOB
&ACCT_STEP
&GROUP
&MSGVP
&USER
&XMODE
読み取り専用変数を使用する場合の制約の詳細については、IBM の文献『DFSMSdfp Storage Administration Reference』を参照してください。
管理クラスルーチンを記述する場合は、次の点を考慮してください。
管理クラスルーチンを開始するには、ストレージクラスが割り当てられていなければなりません。
管理クラスルーチンは、&ACSENVIR=’STKTAP1’
読み取り専用変数値をテストする必要があります。DFSMS ルーチンで &ACSENVIR=’STKTAP1'
変数をテストしないとデータセットが 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
ルーチンも確実に開始されます。すべての読み取り専用変数の値は、DFSMS ACS ルーチン処理中、SMC が該当する情報を取得した時点で設定されます。SMC による ACS ルーチンの呼び出し処理で、すべての情報が利用可能であるとは限りません。
メッセージ 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 など) に設定します。
注:
SMC が DFSMS と対話するたび、あらゆるレベルの ACS ルーチンが開始されます。上記の変数可用性は、すべての ACS ルーチンに適用されます。DFSMS の次の機能を用いて、正しい ACS ルーチンが実行されていることを検証できます。
ACS ルーチン内の DFSMS WRITE
文
DFSMS ISMF
テスト機能
SMC トレーシングが有効になっている場合、SMC が DFSMS ACS ルーチンを開始すると、DFSMS WRITE
文によって発行されたすべてのメッセージが GTF トレースファイルにルーティングされます。
注:
DFSMS WRITE
文は、SSI55 インタプリタ/動的割り当て出口 (IDAX) エソテリック置換フェーズの SYSMSG
データセットにのみ送信ます。
DFSMS WRITE
文は、SSI55 インタプリタ/動的割り当て出口 (IDAX) エソテリック置換フェーズの SYSMSG
データセットにのみ送信ます。