運用エンジニアのためのMVS入門

第11回 OSコマンドとコンソール

概要

メインフレームはあなたの企業を始め、多くの企業の基幹システムを支えています。とりわけ金融、製造、公共など、日本の基幹産業で今日も働いています。新しいニュースは少ないものの、まさに業務を確実に処理するための大きな存在です。世の中にはあまり知られていませんが、オープン系をいまだに超えている技術、ノウハウが生きている分野です。黙って国を支えているITといっても過言ではないと思います。
そんなシステムを品質よく、安定して運用するためには、業務運用マニュアルや先輩・上司からの言い伝えだけでなく、確かな知識が必要です。
ここではメインフレームの代表的OSであるMVS(z/OS)の基本的なしくみについて、運用部門に携わる新人エンジニアに必要なものを解説します。

コンソール

 コンソールは「操作卓」と訳され、オペレーティング・システムを操作するための代表的なデバイスです。コンソールにはいくつかの種類があって、メインフレーム・コンピューターのハードウェアそのものを操作するシステム・コンソール(ハードウェア管理コンソールあるいはSVPコンソールとも呼ばれる)、IPL処理で使用されるNIPコンソール、オペレーティング・システムを操作するOSコンソールに分かれます。
 NIPコンソールとOSコンソールは装置として兼用されることも多いですが、位置づけとしては区別されます。
 
 OSコンソールはMVS(z/OS)ではMCSコンソールと呼ばれ、システムには最低でも1つのMCSコンソールが使われます。かつては、すべての操作ができる最高位の権限を持つコンソールとして「マスターコンソール」が1つ存在し、他に必要に応じて「サブコンソール」を配置していました。現在のz/OSではマスターコンソールは廃止され、必要に応じて複数台のMCSコンソールを配置します。
※MSPとVOS3ではマスターコンソール、サブコンソールが区別され運用されます。
 
 またディスプレイ装置だけでなく、プリンター装置も、ハードコピー・ログ装置としてコンソールに利用できますが、現在ではほとんど使われなくなってきています。これはSDSFやECS、SYSLOG2と言ったソフトウェア製品によって、システム・ログを簡単に表示・追跡できるようになったからでもあります。特に時刻や特定の文字列での絞り込みなどは、紙のログではできません。
 

コマンド

 MVSを操作するためのコマンドは、MVSコマンドとJES2コマンドに大別されます。他にもVTAM、RACFなどのアクセスメソッドやサブシステム、IMS、CICS、DB2などのミドルウェア製品を操作するコマンドもコンソールから投入できます。
 
 MVS自身が受け入れ、処理するのがMVSコマンド(OSコマンド)になります。その他のコマンドは一旦MVSが受け付けますが、コマンドを実際に処理する、JES2、VTAM、RACF、IMS、DB2と言ったソフトウェアに渡されます。
 
 現在ではSDSFの利用が一般化したため、システムやジョブの運用に関する操作、JES2リソースの管理なども、コンソールによるコマンド・オペレーションから、TSO端末によるインタラクティブ・オペレーションに変わってきました。またコンソール・オペレーター自体を廃止した無人運用も増えています。それでもシステム障害の発生時など、いざと言うときにはコンソールからの操作は欠かすことができません。
 
 特にシステムの運用に携わるエンジニアであれば、オペレーターは勿論、アドミニストレーターもコンソールからのシステム稼働状態の表示、異常なジョブのキャンセル、適切な診断資料の採取、などの基本操作を習得し、リソース不足の対処などのイレギュラーな状況を復旧する操作なども経験しておくことは重要です。
 
 また異常時の対処のような操作は手順書としてまとめておき、コンソール脇に常備しておくといいでしょう。大規模なセンターでは、システム・ダウンなどの重大な事態が発生したことを想定した、エマージェンシー・リカバリーのリハーサルなど、災害時の避難訓練のように行っているところもあります。
 

MVSとJES2コマンドの例

 

アプリケーション・ジョブのキャンセル

 $C’jobname’
$CJnnnnn[,DUMP]
C jobname[,DUMP]
C U=userid
実行中のジョブを強制的に終了させるには、CANCELコマンドが利用できます。バッチジョブであれば、JES2の$Cマンドも使用できます。STCタスク、TSOユーザー空間のキャンセルには、OSのCANCELコマンドを使用します。DUMPオプションを指定すると、キャンセルに伴い、プログラムのメモリーダンプが出力されます。
 

出力ライン数の多いSYSOUTを持つジョブの表示

 
 $DJQ(*),SPOOL=%       ← 全ジョブのスプール使用率を表示
$DJQ(*),SPOOL=(%>10)  ← スプール使用率10%を超えるジョブのみ表示
JES2のスプール使用率が上がり、一杯に近づいてしまったような場合、どのジョブがスプールを沢山使っているかを知りたい場合もコマンドが利用できます。SDSFが使えれば、Oパネルなどで「SORT TOT-REC D」コマンドを打てば、SYSOUTのライン数の高い順に表示できます。SDSFが使えない場合、JES2コマンドでも代用できます。ただしライン数ではなく、スプール使用率での表示になります。SORTはできませんので、10%以上使っている、あるいは20%以上使っているなど、使用率の条件指定を使えば、パージさせる候補のジョブを絞りやすくなります。ジョブをスプールからパージさせる場合は$PJnnnnnコマンドを使用できます。
 

アドレス空間のダンプ採取

 
 DUMP COMM=(comment text)
(ダンプ・パラメーターの入力を促すMSGが出る)
nn,JOBNAME=jobname,SDATA=(PSA,RGN,SUM,TRT)
                  ,SDATA=(PSA,RGN,SUM,TRT,CSA,LPA,SQA,NUC)
                  ,SDATA=(RGN,TRT,CSA,LPA,SQA)          MSPの場合
                  ,SDATA=(PSA,RGN,TRT,CSA,LPA,SQA,NUC)  VOS3の場合
アドレス空間ダンプは、システムダンプあるいはSVCダンプとも呼ばれ、プログラムの異常終了ではなく、オペレーターがコマンドによって採取するダンプです。アドレス空間内の仮想記憶域の内容を、予めシステムに定義したダンプ・データセット(SYS1.DUMPnn)に書き出します。SYSUDUMP、SYSABENDと違ってバイナリー形式のままなので解析には専用のユーティリティを使ってフォーマットします。OSのモジュールも異常を検知した場合などに、自らこの形式のダンプを出力します。
一般のプログラムでは通常使われませんが、ミドルウェアやISV製品などでは診断資料としてよく利用されます。特にWAITやLOOPなど、プログラムが正しく動けずに止まってしまっているような状態では、アドレス空間ダンプはエラーの状態のままメモリー内容がダンプされるため、より正確な診断が可能になります。通常はRGNでリージョン全域を採れば十分ですが、必要に応じてCSAやLPA域を追加します。データベースのように複数の空間からのサービスを受けるようなプログラムではCSAやSQAなども必要となる場合があります。メーカーやISVのソフトウェア製品の場合、必要なダンプ範囲を予め確認しておくとよいでしょう。
DUMPコマンドを使用する前に、D DUMPコマンドで空きのダンプデータセットがあるかを確認します。必要ならばDD CLEAR,DSN=nnコマンドで使用済みダンプデータセットをクリアーします。(MSPとVOS3ではユーティリティによるクリアーが必要)
 

競合しているデータセットやリソースの表示

 
 D GRS,CONTENTION
ジョブを実行したら、「IEF099I JOB jobname WAITING FOR DATA SETS」なんてメッセージが出ることがあります。コンソールにはどのデータセットで競合してるかは表示されますが、誰と競合してるかは表示されません。そんな時は、D GRS,CONTENTION で誰と競合してるか簡単に知ることができます。
 

ページデータセットの追加

 
 D ASM
PA PAGE=SYS1.PAGE.TEMP1
運用中にページデータセットが一杯になり、補助記憶が足りなくなってくると、「IRA200E AUXILIARY STORAGE SHORTAGE」「IRA201E CRITICAL AUXILIARY STORAGE SHORTAGE」のメッセージが出力され、新たなアドレス空間は作成されなくなります。つまりTSOにはLOGONできないし、STARTコマンドでジョブを起動することもできません。アイドル・イニシエーターがあっても、新たなジョブは実行されません。すでに稼働中のジョブは動きますが、ページング・スペース不足の状態なので優先度にもよりますが動きはにぶくなります。
 
本来の手順としては、仮想記憶を大量に消費しているジョブをキャンセルするのがいいのですが、どのジョブが大量にメモリーを消費しているかの判断はコンソールからではむずかしいです。AUXILIARY STORAGE SHORTAGEのメッセージに伴い、補助記憶を大量に使っているトップ5のジョブ名を示す、別メッセージも出されますが、システム空間や、業務システム用のDC/DBジョブなどの場合は、キャンセルに躊躇するでしょう。すでにこのような場合のリカバリー手順が決まっているならそれに従います。そういうものがなければ、AUXILIARY STORAGE SHORTAGEの状態をとにかく解消するため、ローカル・ページデータセットを追加することを試みます。とにかく補助記憶不足の状態を解消して、その後に、SDSFなりRMFなりを使用してメモリー使用量の多いジョブを見つけて対処します。復旧を優先してストレージ不足を解消しなければ、調査もままなりません。
 
D ASMコマンドは現在のページデータセットの使用状況を表示するコマンドです。PAコマンドがページデータセットを追加するコマンドになります。z/OSの場合、PAコマンドを使うには追加するページデータセットを作成しなければなりません。このような状況ではデータセットを作成するジョブを実行することは無理ですから、予め予備のページデータセットを作成しておくことを奨めます。ページデータセットはAMSユーティリティーで簡単に作成することができます。MSPの場合は、PAコマンドで新規ページデータセットがアロケートできるのでコマンドだけで対処できます。VOS3ではMVS同様に、ページデータセットは予め用意しておく必要があります。以下はMSPのコマンド例です。
 
D PAGE,DS
PA SYS1.PAGE1.TEMP1,FUNC=ALLOC,VOL=xxxxxx,SPACE=100
PA SYS1.PAGE1.TEMP1,FUNC=ADD
 

マスタースケジューラー

 
 オペレーターがコンソールから投入したMVSコマンドは、マスタースケジューラーによって処理されます。マスタースケジューラーは「*MASTER*」の識別名を持つ独立したアドレス空間で動作しており、IPL時に最初に作成されるアドレス空間です。
 
 コンソールから入力されたコマンドは、コンソールのI/Oを行っているCONSOLEアドレス空間(OSによってはマスタースケジューラー自身がI/Oを行う)から、マスタースケジューラーに渡され、構文が解析され処理されます。
 
 MVSのコマンドでなければ、対応するサブシステム(JES2やRACF)、MODIFY(F)コマンドであれば指定されたジョブにコマンドが渡されます。
 
 マスタースケジューラーはコマンド処理の他にも、JES2と連携してSYSLOGへコンソールメッセージを書き出したり、STARTコマンド、TSOログオンなどによる新しいアドレス空間の作成をしたり、と言った重要な役割を持っています。

連載一覧

コメント

筆者紹介

株式会社アルテシード

代表取締役 神居 俊哉(かみい としや)

http://www.arteceed.com
ビーコンITにて約20年にわたり、独SoftwareAG社のTPモニター・ソフトウェア製品などのサポートや同製品の富士通、日立OSへのポーティングのためのシステムプログラム開発などを行ってきた。現在はメインフレーム・コンピュータに関する技術スキルを後進に伝え、基礎知識や実践的な技術を広めることで企業の情報システムを支えるべく、株式会社アルテシードを設立。併せて、メインフレーム・コンピュータ技術情報サイト“「メインフレーム・コンピュータ」で遊ぼう”(http://www.arteceed.net/
を主宰し、z/OSやMSP、VOS3など代表的なメインフレーム・システムのコミュニティ活動を展開開始。基本スキルから高度なプログラミング技術の解説、サンプルの提供、ならびに関連する各種の技術情報の交換なども行っている。

メインフレームでは約20年ぶりの和書、「メインフレーム実践ハンドブック」を3月にリックテレコム社より刊行。

バックナンバー