前へ | 次へ | 目次 | 索引 |
たとえば,アクセス制御文字を残したい場合は,次のような形式で REPLY/TO コマンドを入力します (3 は要求識別子番号)。
$ REPLY/TO=3 |
REPLY コマンドを受信したテープ・ファイル・システムは,継続ボリュームが正しいボリュームかチェックします。そして,正しいアクセス・コードをもつ正しいボリュームの場合は,継続ボリュームをマウントして,そのボリュームに保留中の読み込み要求または書き込み要求を再発行します。そうでない場合の処理はボリュームが空きボリュームであるかどうかによって異なります。空きテープでない場合はマウントを行わず,空きテープの場合は初期化してマウントします。
9.8.3 磁気テープ特性の変更
特定のテープ装置の省略時の特性を定義する場合は,DCL の SET MAGTAPE コマンドを使用します。 SET MAGTAPE コマンドは,磁気テープ装置がフォーリン・ボリュームとしてマウントされているときにだけ有効です。
このコマンドの形式は次のとおりです。
SET MAGTAPE 装置名 |
装置名 | 特性を設定するテープ装置の名前を指定する。他のユーザに割り当てられている装置を指定しない。 |
次に,SET MAGTAPE コマンドと MOUNT コマンドの組み合せ例を紹介します。
$ MOUNT MUB1:/FOREIGN $ SET MAGTAPE MUB1:/DENSITY=800 |
MOUNT コマンドで,MUB1: ドライブにフォーリン・テープをマウントし, SET MAGTAPE コマンドで,磁気テープへの書き込み密度を 800 bpi と定義している。すでに書き込みが行われているテープの密度を設定し直すことはできない。
$ MOUNT MUA0: USER_VOL $ SET MAGTAPE MUA0:/SKIP=FILES:4 |
MOUNT コマンドで,MUA0: ドライブに USER_VOL というテープをマウントし, SET MAGTAPE コマンドで,テープ・マーク 4 つをスキップした位置にテープを位置付けるよう入出力サブシステムに指示している。
ローカルな SCSI テープ・ドライブでは, /FAST_SKIP=オプション 修飾子を使うと,ファイル・マークごと,または,レコードごとに読み飛ばすことができる。詳細は『Compaq OpenVMS DCL ディクショナリ』を参照。
$ MOUNT MUA1:/FOREIGN $ SET MAGTAPE/REWIND MUA1: |
MOUNT コマンドで,MUA1: ドライブにフォーリン・テープをマウントし, SET MAGTAPE コマンドで,ボリュームを巻き戻している。
ディスクまたはテープ・ボリュームのファイルやデータの処理を終えたら, DISMOUNT コマンドを使用して,明示的に 1 つのボリュームまたはボリューム・セット全体をディスマウントすることができます。
DISMOUNT コマンドの形式は次のとおりです。
DISMOUNT 装置名 |
装置名 | ボリュームがロードされている装置の名前を指定する。論理名または物理名のどちらでも使用することができる。物理名が指定された場合,省略時の設定ではコントローラが A,ユニットが 0 になる。
装置にマウントされているボリュームがディスクまたはテープ・ボリューム・セットの 1 つで,/UNIT 修飾子が使用されなかった場合は,そのセットのすべてのボリュームがディスマウントされる。 |
システム管理者は,ローカル・ノードのボリューム,クラスタのすべてのノードのボリュームをディスマウントすることができます。
ボリュームまたはボリューム・セットをディスマウントする前に, DISMOUNT コマンドはディスマウントを妨げる次の条件が存在するかチェックします。
これら 4 つのいずれの条件も存在しない場合, DISMOUNT コマンドはボリュームをディスマウント対象にします。どれか 1 つでも条件が存在する場合は,ボリュームをディスマウント対象にせず,条件が存在するという事実と各条件のインスタンス数,そしてボリュームのディスマウントが不可能であることを示すエラー・メッセージを表示します。
システム・ディスクを共用でマウントした後に,これをディスマウントしようとすると,ユーザ・ファイルがオープンされていなくても,次のようなメッセージが出ることがあります。
%DISM-W-CANNOTDMT, AXP27$DKA300: cannot be dismounted %DISM-W-USERFILES, 1 user file open on volume |
このメッセージが出るのは,ディスマウントの途中で, DISMOUNT.EXE ファイルがユーザファイルとしてオープンされるからです。このエラー・メッセージが表示されないようにするには, DISMOUNT.EXE ファイルをインストールします。
場合によっては,オープンしているファイルがあってもそのボリュームをディスマウント対象にしたい場合があります。ディスマウント対象にしておけば,ユーザはファイルを新たにオープンできないので,ファイルに対するアクセスは次第に減っていきます。ファイルがオープンしていてもボリュームをディスマウント対象にしたい場合は, /OVERRIDE=CHECKS 修飾子を使用してください。
性能向上の一環として,システムは,ディスク・ボリュームの未使用空間,ファイル識別子,クォータ・ファイル・エントリ,ファイル・ヘッダなどのボリューム情報をメモリに格納します。これは, キャッシングと呼ばれる処理です。キャッシュには,ファイルには割り当てられていないブロックや,ディレクトリには作成されていないファイルが含まれることがあります。
ディスクのディスマウント時やシステムのシャットダウン時,システムはキャッシュの情報をディスクに書き出します。この書き出しの前にドライブからディスクを取り出した場合,キャッシュの情報は失われます。そのため,キャッシュ情報を残す場合は,次のガイドラインを守る必要があります。
ボリュームの既知ファイル・リストにエントリがある場合は,ボリュームをディスマウントしないでください。既知ファイル・リストでボリュームが参照されている場合は,次の手順を踏んでから,ボリュームをディスマウントする必要があります。
次の節では,以下の作業を行う方法について説明します。
作業 | 参照箇所 |
---|---|
ボリュームのディスマウント | 第 9.9.1 項 |
ボリューム・セットのディスマウント | 第 9.9.2 項 |
フォーリン・ボリュームのディスマウント | 第 9.9.3 項 |
クラスタ上のボリュームのディスマウント | 第 9.9.4 項 |
ここでは,1 つのボリュームをディスマウントするときの手順,および DISMOUNT コマンドで使用可能な修飾子の一部を説明します。
9.9.1.1 ボリュームのディスマウントとアンロード
ボリュームやボリューム・セットは必ず, DISMOUNT コマンド,または DISMOUNT コマンドを含むコマンド・プロシージャを使用してディスマウントしてください。また,ボリュームは必ず,ドライブをディスマウントしてからアンロードしてください。ディスマウントが終了したかどうかは, DCL の SHOW DEVICES コマンドを使って確認することができます。
私用ボリュームは,それをマウントしたジョブからログアウトすると,自動的にディスマウントされアンロードされます。ただし,システムに障害があった場合は,ドライブの自動ディスマウントは行われません。
ボリュームを明示的にディスマウントしない場合,システムに障害が発生すると,データが失われることがあります。テープ・ボリュームの場合は,ファイル・トレーラ・ラベルが書き込まれていない,オープンしているファイルがボリュームに存在しているとデータが失われる可能性があります。このとき,ボリュームを再マウントして,ファイル・トレーラ・ラベルのないファイルにアクセスしようとすると,次のエラー・メッセージが出されます。
%MTACP-magnetic tape position lost |
ファイル・トレーラ・ラベルが書き込まれていないファイルより前のすべてのファイルにアクセスすることができますが,ファイル・トレーラ・ラベルのないファイルにアクセスすることはできません。
9.9.1.2 割り当て装置のディスマウント
ALLOCATE コマンドで割り当てた装置を DISMOUNT コマンドでディスマウントしても,装置の割り当ては解除されません。 MOUNT コマンドで暗黙に割り当てられた装置の場合は,DISMOUNT コマンドによって割り当て解除されます。
9.9.1.3 DISMOUNT コマンドの修飾子の使用法
次の表は,DISMOUNT コマンドの修飾子のうちの /UNIT と /NOUNLOAD 修飾子をまとめたものです。
ここでは,/NOUNLOAD 修飾子を指定した DISMOUNT コマンドの使用例を紹介します。
$ DISMOUNT/NOUNLOAD MUA1: |
このコマンドによって,論理的にはテープ・ボリュームはディスマウントされますが,物理的には MUA1: 装置にロードされたままになり,テープの始まり位置まで巻き戻されます。この後,制御はは DCL レベルに戻ります。
9.9.2 ボリューム・セットのディスマウント
DISMOUNT コマンドを使い,ボリューム・セット全体をディスマウントすることができます。すなわち,ディスクまたはテープ・ボリューム・セットの任意のボリュームを明示的にディスマウントすると,そのボリューム・セット全体が自動的にディスマウントされます。たとえば,DUA3: と DUA4: からなるボリューム・セットがあり,次のコマンドが入力されると,DUA4: を含むボリューム・セット全体がディスマウントされます。
$ DISMOUNT DUA3: |
DISMOUNT コマンドを使い,フォーリン・ボリュームをディスマウントすることもできます。 /FOREIGN 修飾子を使って, DUA0: ドライブにマウントされたボリュームをディスマウントしている例を次に示します。
$ DISMOUNT DUA0: |
この例では,ボリュームがディスマウントされるとともに,自動的にアンロードされます。その後,制御は DCL レベルに戻ります。
9.9.4 OpenVMS Cluster システムのボリュームのディスマウント
次の例のように,DISMOUNT コマンドに /CLUSTER 修飾子を指定すると, OpenVMS Cluster システムのボリュームをディスマウントすることができます。この例のコマンドを実行するためには, SYSNAM 特権が必要です。
$ DISMOUNT/CLUSTER $10$DJA100: |
DISMOUNT/CLUSTER コマンドは,まず,ボリュームのディスマウントを妨げる条件がローカル・ノードに存在するか調べます。存在しない場合は,クラスタを構成するすべてのノードについて,ディスマウントを妨げる条件が存在するか調べます。条件が存在する場合は,装置とエラーが発生したノード,およびそのエラー内容を示すエラー・メッセージを送ります。
DISMOUNT コマンドに関するさらに詳しい内容については,『Compaq OpenVMS DCL ディクショナリ』を参照してください。
9.10 コマンド・プロシージャによる媒体の設定
ディスクやテープ媒体に対して行う操作の大半は日常的なものです。したがって,サイトで日常的に行う作業をよく認識してコマンド・プロシージャを設計すれば,コマンド・プロシージャにこれらの作業を行わせることができます。 コマンド・プロシージャの設計と実行に用いる構文についての詳細は,『Compaq OpenVMS ユーザーズ・マニュアル』を参照してください。
この節で紹介するコマンド・プロシージャの例はあくまで一般的なものです。ただし,私用ディスクやテープ・ボリュームを設定するプロシージャを設計するような場合は,ガイドラインとなります。それぞれのサイトの設定作業に合わせて,コマンド・プロシージャを変更してください。
9.10.1 ディスク・ボリュームの設定用のコマンド・プロシージャ例
この節で紹介するコマンド・プロシージャは,ディスク・ボリュームの割り当て,初期化,およびマウントを行います。次の手順に従って,プロシージャを作成してみてください。
$ ! Place a disk in the drive $ IF P1 .EQS. "" THEN INQUIRE P1 "enter device name" $ IF P2 .EQS. "" THEN INQUIRE P2 "enter volume label" $ IF P3 .EQS. "" THEN INQUIRE P3 "enter logical name" $ ALLOCATE 'P1' $ MOUNT 'P1' 'P2' 'P3' |
このコマンド・プロシージャは非常に簡単で,ディスクを割り当てマウントするという作業を行う。実行すると,割り当ておよびマウントしようとするディスク装置の装置名,ボリューム・ラベル,および論理名の入力を求める。ディスクに論理名を割り当てておけば,装置を繰り返し割り当て,マウントすることもできる。
この他の処理を加えると,コマンド・プロシージャはさらに有用になる。たとえば,ディスクの割り当てを解除して,ディスマウントする処理を追加する方法もある。
第 9.10.2 項 で紹介する磁気テープの設定用のコマンド・プロシージャ例には,そうした機能がいくつか追加されている。
$ @SETUP |
9.10.2 テープ・ボリュームの設定用のコマンド・プロシージャ例
例 9-1 で紹介するコマンド・プロシージャは磁気テープの設定用であり,前節の例より複雑で,もっと細かい処理を行います。このコマンド・プロシージャには,ALLOCATE と MOUNT/FOREIGN コマンドが含まれています。テキスト・エディタを使ってコマンド・プロシージャを作成してみてください。
例 9-1 テープ・ボリューム設定用のコマンド・プロシージャ |
---|
$ ! First mount the tape on the drive $ ON CONTROL_Y THEN GOTO EXIT $ ON ERROR THEN GOTO EXIT $ WRITE SYS$OUTPUT "Welcome to FETCH." $ WRITE SYS$OUTPUT " " $ L1: INQUIRE/NOPUNC PHYS "Have you placed the volume in the drive? " $ IF .NOT. PHYS THEN GOTO L1 $ INQUIRE/NOPUNC DRIVE "Which drive is the volume mounted on? " $ DRIVE = DRIVE - ":" $ ALLOCATE 'DRIVE' $ MOUNT/FOREIGN 'DRIVE' $ ON ERROR THEN GOTO COMMAND_LOOP $ ! $ COMMAND_LOOP: INQUIRE/NOPUNC OPTION "FETCH> " $ IF OPTION .EQS. "DIR" THEN GOTO DIR $ IF OPTION .EQS. "EXIT" THEN GOTO EXIT $ IF OPTION .EQS. "FETCH" THEN GOTO FETCH $ IF OPTION .EQS. "HELP" THEN GOTO HELP $ IF OPTION .EQS. "LIST" THEN GOTO LIST $ GOTO COMMAND_LOOP $ ! $ DIR: INQUIRE SPEC "Filespec" $ DIR 'SPEC' $ GOTO COMMAND_LOOP $ HELP: $ WRITE SYS$OUTPUT "Enter any of the following commands at the prompt:" $ WRITE SYS$OUTPUT " " $ WRITE SYS$OUTPUT " " $ WRITE SYS$OUTPUT "DIR (To search for a file)" $ WRITE SYS$OUTPUT " " $ WRITE SYS$OUTPUT "EXIT (To exit this program)" $ WRITE SYS$OUTPUT " " $ WRITE SYS$OUTPUT "FETCH (To perform a BACKUP RESTORE operation)" $ WRITE SYS$OUTPUT " " $ WRITE SYS$OUTPUT "HELP (To read this text)" $ WRITE SYS$OUTPUT " " $ WRITE SYS$OUTPUT "LIST (To perform a BACKUP LIST operation)" $ GOTO COMMAND_LOOP $ ! $ FETCH: INQUIRE FILE "Filespec" $ INQUIRE SAVESET "Save set name" $ LINE := BACKUP/LOG 'DRIVE':'SAVESET'/SELECT='FILE' $ INQUIRE EXCLUDE "Enter any filespecs you want excluded" $ IF EXCLUDE .EQS. "" THEN GOTO L2 $ LINE := 'LINE'/EXCLUDE=('EXCLUDE') $ ! $ L2: INQUIRE/NOPUNC TO "Where do you want the file(s)? ([RET] for current directory)" $ IF TO .EQS. "" THEN GOTO REPLACE $ LINE := 'LINE' 'TO' $ GOTO L3 $ REPLACE: LINE := 'LINE' [] $ ! $ L3: INQUIRE/NOPUNC NEW "Create a new version if file already exists? " $ IF .NOT. NEW THEN GOTO NOT $ LINE := 'LINE'/NEW_VERSION $ ! $ NOT: LINE := 'LINE'/OWNER_UIC=ORIGINAL $ LINE $ GOTO COMMAND_LOOP $ ! $ LIST: INQUIRE SPEC "Filespec" $ INQUIRE SAVESET "Save set name" $ INQUIRE/NOPUNC OUTPUT "What do you want to call the list file? ([RET] for SYS$OUTPUT )" $ IF OUTPUT .EQS. "" THEN GOTO NOOUT $ LINE := BACKUP/LIST='OUTPUT' 'DRIVE':'SAVESET'/SELECT=('SPEC') $ GOTO L4 $ NOOUT: LINE := BACKUP/LIST 'DRIVE':'SAVESET'/SELECT=('SPEC') $ ! $ L4: INQUIRE EXCLUDE "Enter any filespecs you want excluded" $ IF EXCLUDE .EQS. "" THEN GOT L5 $ LINE := 'LINE'/EXCLUDE=('EXCLUDE') $ ! $ L5: LINE $ GOTO COMMAND_LOOP $ ! $ EXIT: $ DISMOUNT 'DRIVE' $ DEALLOCATE 'DRIVE' |
このコマンド・プロシージャのファイル名が FETCH.COM であると仮定します。このプロシージャを実行するためには,次のコマンドを入力します。
$ @FETCH |
前節の例と異なり,FETCH.COM には,割り当てやマウント以外の入力を求める機能もあります。具体的には,たとえばテープがドライブに装填されているかどうかの問い合わせを行います。また,FETCH.COM は BACKUP 復元処理も行い,いくつのオプションの指定を求めます。最後の処理として FETCH.COM は,ユーザが作業を終えた後,明示的に磁気テープ・ボリュームをディスマウントし,ドライブの割り当てを解除します。
前へ | 次へ | 目次 | 索引 |