|
≫ |
|
|
|
この章では,ファイルの保護や操作,そしてデータ転送に関連する項目と作業について説明します。
この章の内容この章では,次の作業について説明します。 さらに,次の項目について説明します。
OpenVMS バージョン 7.2 から,Extended File Specifications が,
OpenVMS にこれまであったファイルの命名に関する多くの制限を取り払い,
ここで説明するファイル命名機能を完全にサポートするようになりました。
さらに この機能により HP Advanced Server for OpenVMS 環境において OpenVMS と Windows NT の双方にまたがる一貫性のあるファイル処理を提供できるようになります。
機能 | 説明 |
---|
新 オン・ディスク構造 | Extended File Specifications は 最新のボリューム・オン・ディスク構造 (ODS): レベル 5 (ODS-5) をサポートする。
このディスク構造は拡張ファイル名を使用したファイルの作成と格納の基準を提示する。 |
追加文字セットのサポート | ファイル名の命名に使用できる広範な文字セットをOpenVMS 上で使用することができる。
Extended File Specifications は 8-bit ISO Latin-1 文字 16-bit Unicode (UCS-2) 文字セットを提供する。 |
拡張ファイル命名 | ファイル名は旧来の <39文字>.<39文字> という制限を越え,最大 236 バイトまで。 |
大文字小文字の区別の保存 | Extended File Specifications は,
ODS-5 属性で作成されたファイル指定の大文字小文字の区別を保存する。 |
深いディレクトリ階層 | 深いディレクトリ階層のサポートのため 最大 512 文字までディレクトリ指定が拡張された。 |
それぞれの機能について詳しくは,『OpenVMS ユーザーズ・マニュアル』を参照してください。
10.1.1 Extended File Specifications 機能の使用 | |
OpenVMS バージョン7.2 から,
RMS で ODS-2 と ODS-5 ボリュームの両方で新しい RMS API 拡張の他に,
8 レベル以上の階層のディレクトリを省略値で使用できるようになりました。
ただし,拡張ファイル名を作成できるのは,ODS-5 ボリューム上だけです。
9.3.3 項 「ODS-5 形式の新規ボリュームの初期化」 と 9.5.5.1 項 「ODS-2 から ODS-5 への変換」 では,それぞれ,
新しい ODS-5 ボリュームの作成方法と,ODS-2 ボリュームの ODS-5 ボリュームへの変換方法を説明しています。
一旦 ODS-5 に変更すると,プログラムは拡張ファイル名を作成,あるいは読むことができるようになります。
ただし,省略時の設定では,DCL (およびアプリケーションのいくつか) は すべての拡張ファイル名をサポートしているわけではありません
[14]。
DCL は,コマンド行プロンプトに対して小文字で入力されたファイル名を大文字に変更します
[15]。
Extended File Specifications 解析機能の有効化
DCLがすべての拡張ファイル名を受け付られるように,
Extended File Specifications のファイル名解析機能を有効にしておく必要があります。
OpenVMS Alpha システムおよび I64 システムでは,
次のDCL コマンドを入力して プロセス単位で ODS-5 ファイル名を受け付けさせることができます。
$ SET PROCESS/PARSE_STYLE=EXTENDED
|
ユーザがコマンドを入力すると,DCL は次のようなファイル名を受け付けるようになります。
解析スタイルについて詳しくは,
『OpenVMS DCL ディクショナリ』を参照してください。
『OpenVMS Record Management Services Reference Manual』 には,
RMS の省略時の Extended File Specifications 機能について追加情報があります。
大文字小文字の区別を有効にする方法
もともとは OpenVMS では,ファイル名指定中のすべてのアルファベットを大文字として格納していました。
また,ファイル名指定を使用するファイル・システム操作も,大文字小文字を区別していませんでした。 Extended File Specifications の導入により,システム・ツールやアプリケーションが,ODS-5 ボリューム上で,大文字だけではなく小文字を含むファイル指定を格納したり表示できるようになりました。
ただし,ファイル名指定操作では,大文字小文字を区別しないままです。 OpenVMS バージョン 7.3-1 からは,大文字か小文字かだけが異なる,同じアルファベットを使用するファイル名指定を,ツールやアプリケーションが区別できるようになりました。 プロセスに対して,ファイル名の大文字小文字を区別するかしないかを設定できます。
以下の項で説明するように,3 種類の方法で OpenVMS 上の大文字小文字の区別を有効にできます。
-
DCL コマンド SET PROCESS/CASE_LOOKUP=BLIND (または CASE_LOOKUP=SENSITIVE) を使用する。
プロセスに CASE_LOOKUP=BLIND を設定し,大文字小文字の違い以外は同じ名前のファイルを複数作成すると,DCL はこれらのファイルを,古いファイルの新しいバージョンとして扱い,ファイル名の大文字小文字をオリジナルのファイルと同じになるように変換します。 次の例では,DKA500 は ODS-5 ディスクです。
$ SET DEFAULT DKA500:[TEST]
$ SET PROCESS /CASE_LOOKUP=BLIND/PARSE_STYLE=EXTENDED
Ctrl/z
$ CREATE NEWFILE.txt
Ctrl/z
$ CREATE NeWFILE.txt
Ctrl/z
$ DIRECTORY
Directory DKA500:[TEST]
NEWfile.txt;3
NEWfile.txt;2
NEWfile.txt;1
|
プロセスに CASE_LOOKUP=SENSITIVE を設定し,大文字小文字の違い以外は同じ名前のファイルを複数作成すると,DCL は後で作成するファイルを別のファイルとして扱い,そのようにリストします。 次の例では,DKA500 は ODS-5 ディスクです。
$ SET DEFAULT DKA500:[TEST]
$ SET PROCESS /CASE_LOOKUP=SENSITIVE /PARSE_STYLE=EXTENDED
$ CREATE NEWfile.txt
Ctrl/z
$ CREATE NEWFILE.TXT
Ctrl/z
$ CREATE NeWfIlE.txt
Ctrl/z
$ DIRECTORY
NeWfIle.txt;1
NEWFILE.TXT;1
NEWfile.txt;1
|
ODS-5 ボリュームでは,ファイル名の大文字小文字は最初に入力されたときのままになりますが,ファイル検索は,大文字小文字を区別しないで実行されます。
このため,.EQS. および F$LOCATE などの DCL 文字列関数を使用して DCL コマンド・プロシージャでファイルの比較を行う場合は,注意が必要です。 大文字小文字を区別することを前提としているアプリケーションを使用する場合や,ユーザの環境内で大文字小文字を区別する必要がある場合は,プロセスに /CASE_LOOKUP=SENSITIVE を設定します。
環境設定に注意しないと,大文字小文字を区別させたときに問題が発生することがあります。 省略時の設定は SET PROCESS /CASE_LOOKUP=BLIND /PARSE_STYLE=EXTENDED です。
RMS では,大文字小文字の区別については,このプロセスの省略時の設定を使用します。
-
RMS を使用してオープンされた,または作成されたファイルの NAML ブロックでアプリケーションにオプションを設定する。
NAML ブロックは,OpenVMS Alpha バージョン 7.2 で導入され,長いファイル名をサポートしています。
OpenVMS バージョン 7.3-1 から,NAML ブロックには新しい NAML$V_CASE_LOOKUP フィールドがあります。
このフィールドにより,プロセスの省略時の大文字小文字の区別の扱いを変更できます。
NAML$V_CASE_LOOKUP には,大文字小文字の区別を指定するための,次の値を設定できます。 表 10-1 大文字小文字の区別の値 フィールド名 | 説明 |
---|
NAML$C_CASE_LOOKUP_BLIND | ユーザが設定し,RMS に対して,ファイルの作成,削除,検索で大文字小文字を区別しないように指示します。 |
NAML$C_CASE_LOOKUP_SENSITIVE | ユーザが設定し,RMS に対して,ファイルの作成,削除,検索で大文字小文字を区別するように指示します。 |
NAML$V_CASE_LOOKUP がゼロの場合,または NAML ブロックが使用されていない場合,現在のプロセスの設定が使用されます。
-
アプリケーション内から $SET_PROCESS_PROPERTIES または $GETJPI の呼び出しを行う。
$SET_PROCESS_PROPERTIES システム・サービスは,サービスに関連する単純値を設定します。
バージョン 7.3-1 からは,OpenVMS Alpha (および I64) は,大文字小文字の区別について次の新しいプロパティ・コードをサポートしています。 表 10-2 大文字小文字の区別のプロパティ・コード プロパティ・コード | 説明 |
---|
PPROP$C_CASE_LOOKUP_TEMP | イメージの存続期間中だけ有効な値を設定します。
イメージの終了時に,この値は永続的なスタイルに戻ります。
有効な値は,PPROP$K_CASE_BLIND と PPROP$K_CASE_SENSITIVE です。 |
PPROP$C_CASE_LOOKUP_PERM | スタイルが再設定されない限りプロセスの持続期間中だけ有効な値を設定します。
イメージの終了時に,この値は永続的なスタイルに戻ります。
有効な値は,PPROP$K_CASE_BLIND と PPROP$K_CASE_SENSITIVE です。 |
$GETJPI システム・サービスの新しい項目コードは次のとおりです。
JPI$CASE_LOOKUP_TEMP |
JPI$CASE_LOOKUP_PERM |
$SET_PROCESS_PROPERTIESW システム・サービスについての詳細は,『HP OpenVMS System Services Reference Manual』を参照してください。 これらの項目コードは,システム・サービス $SET_PROCESS_PROPERTIESW で設定される値を返します。
この値は,PROP$K_CASE_BLIND または PPROP$K_CASE_SENSITIVE です。
10.1.2 Extended File Specifications に対するユーザの期待の設定 | |
ODS-2 と ODS-5 ファイル名の違いについて,
システム管理者があらかじめ説明しておくと,
ユーザは Extended File Specifications を理解しやすくなるでしょう。
ファイル名の違いは,ODS-2 から ODS-5 方式に変更した場合にとくに顕著に現れます。
使用法に関してのガイド書を配布しておくとユーザに便利です。
ガイド書の内容は,次のカテゴリにわけて作成します。
-
新しい Extended File Specifications の特徴
-
-
10.1.2.1 新しい Extended File Specifications の特徴
ここでは,新しい Extended File Specifications の特徴に関して,ユーザにあまり知られていない項目について説明します。
ボリューム構造に注意
ODS-5 ファイルを ODS-5 ボリューム上に配置するためには,
ディスクが ODS-2 ボリュームなのか ODS-5 ボリュームなのかを確認する必要があります。
次のようなコマンドを入力すると,ボリュームのタイプが表示されます。
$ SHOW DEVICE DKA500:/FULL
Disk AABOUT$DKA500:, device type DZ25 Disk, is online, allocated, deallocate
on dismount, mounted, file-oriented device, shareable.
Error count 0 Operations completed 155
⋮
Volume Status: ODS-5, subject to mount verification, file high-water
marking, write-back caching enabled.
$ SHOW DEVICE DKA200:/FULL
Disk AABOUT$DSA200:, device type RZ25 Disk, is online, allocated, deallocate
on dismount, mounted, file-oriented device, shareable.
Error count 0 Operations completed 232
⋮
Volume Status: ODS-2, subject to mount verification, file high-water
marking, write-back caching enabled.
|
それぞれのコマンドを実行すると,Volume Status: と表示された項目がありますが,これはボリュームが ODS-5 か ODS-2 かを表示しています。
ODS-2 ボリューム上では拡張ファイル名を使用しないODS-2 ボリューム上で ODS-5 拡張ファイル名を使用したファイル名を持つファイルは作成できません。
次の例の DKA200: は ODS-2 ボリュームで,解析スタイルは EXTENDEDです。
このため RMS はエラー・メッセージを返します。
$ SET DEFAULT DKA200:[TEST]
$ CREATE x.x.x.x
%CREATE-E-OPENOUT, error opening DKA200:[TEST]X^.X^.X.X; as output
-RMS-E-CRE, ACP file create failed
-SYSTEM-W-BADFILEVER, bad file version number
|
大文字小文字の区別は拡張ファイル名の最初の登場時に決定
ODS-5 ボリュームでは,
1 つのファイルのすべてのバージョンについて,大文字小文字の区別は統一されます。
大小文字の区別は最初にファイルが作成された際のファイル名で格納されます。
次の例で,このディスクは ODS-5 です。
$ SET DEFAULT DKA500:[TEST]
$ SET PROCESS /PARSE_STYLE=EXTENDED
$ CREATE myfile.txt
Ctrl/Z
$ CREATE MYFILE.TXT
Ctrl/Z
$ DIRECTORY
Directory DKA500:[TEST]
myfile.txt;2 myfile.txt;1
|
Extended File Specifications で,大文字小文字の区別の保存と無視が混在する場合
ODS-5 ディスクは,最初に入力された形でファイル名を格納するが,
しかしファイルを検索する際にはこの大文字小文字の区別を無視するという点に注意する必要があります。
同様に,比較をする際には,たとえば,DCL コマンド・プロシージャ内で DCL の文字列操作機能である .EQS. や F$LOCATE を使用する場合に注意を要します。
次の例は,DCLによってファイル名の大文字小文字の区別を無視した検索が行われたもので,非常に重要な例です。
このプログラムでは,大文字小文字を区別する検索を指示する引数は指定しておらず,
逆に大文字小文字の区別を無視する検索を指示する引数を指定していることに注意してください。
このプログラムは F$SEARCH を使って ファイル・タイプ .TXT を持つすべてのファイルを検索しようとしています。
RMS は (および,そのために F$SEARCH も) 大文字小文字の区別を無視した検索を行うので,
F$SEARCH は .txt をファイル・タイプに持つファイルも同様に検索してしまいます。
そこで F$SEARCH は,
F$LOCATE を使い,
ファイル名 TEST を持つファイルを検索します。
F$LOCATE は 大文字小文字を区別した比較を行うため,
最初にファイル名の文字列すべてを大文字に変換しない限りこの検索は意図通りに行なわれません。
$ case_blind = 0
$ if p1 .nes. "" then case_blind = 1 1
$loop:
$ file = f$search("*.TXT;") 2
$ if file .eqs. "" then goto not_found
$ write sys$output "Search returns " + file
$ if case_blind .eq. 1 then file = f$edit(file,"UPCASE") 3
$ if (f$locate("TEST",file) .ne. f$length(file) ) then goto found 4
$ goto loop
$found:
$ write sys$output "Found a file matching TEST"
$ exit
$not_found:
$ write sys$output "Did not find file matching TEST"
$ exit
|
1 |
引数が存在する場合(かつ,大文字小文字の区別を無視した比較ができる場合),
case_blind を 1に設定します。
|
2 | ファイル名が .TXT または .txt で終わるものを検索します (F$SEARCH は大文字小文字の区別をしないため)。
|
3 | ステップ1 で大文字小文字の区別を無視した比較が選択された場合,
検索時に大文字小文字の区別を無視するため,
ファイル名の文字をすべて大文字に変換します。
|
4 |
F$LOCATE がファイルを発見した場合,found: に進みます。
|
次の例は,プログラムを実行した際の出力です。
$ @test
Search returns DKA300:[FISHER]test.txt;1
Did not find file matching TEST
$ @test case-blind
Search returns DKA300:[FISHER]test.txt;1
Found a file matching TEST
|
CONDENCED ファイル名で別個にリストされる短縮ディレクトリ名と完全ディレクトリ名
一部のシステム・ユーティリティと DCL コマンド,
たとえば DIRECTORY コマンドでは,
ファイル名をどのように表示するかを切り替えるスイッチを持っています。
-
スタイルが CONDENSED の場合,
長さが 255 バイトまでのファイル名が表示されます。
ファイル指定が 255 バイトの制限に達した場合,
ディレクトリ名は短縮されてディレクトリID (DID) になります。
-
スタイルが EXPANDEDの場合,
ファイル名は長さ 4095 バイトまで表示されます。
次の例は 1 つの CONDENSED ディレクトリ名を示します。
DIRECTORY コマンドは,DID で短縮されたディレクトリ名と短縮されていないディレクトリ名を違うものとみなすので,短縮が発生したときには,別個にヘッダを生成します。
$ DIR/STYLE=CONDENSED
Directory DKA300:[DEEPER.aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii._ten.aaaa.
bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii._ten.aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.
hhhh.iiii._ten.aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii._ten] 1
aaaa.txt;1
Total of 1 file.
Directory DKA300:[528,7036,0] 2
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.txt;1
Total of 1 file.
Grand total of 2 directories, 2 files. 3
|
1 | CONDENSED スタイルで,
ディレクトリ名と ファイル名の組み合せが 255 バイトを越えない場合,
ディレクトリ名は ディレクトリ ID (DID) 短縮に短縮されません。
|
2 | CONDENSED スタイルで,
ディレクトリ名と ファイル名の組み合せが 255 バイトを越えた場合,
ディレクトリ名は ディレクトリ ID (DID) 短縮に短縮されます。
|
3 |
DIRECTORY コマンドを実行すると,
完全なディレクトリ名と短縮されたディレクトリ名の両方が 1 つのディレクトリに対して表示されます。
DIRECTORY コマンドはこれを別々の 2 つのディレクトリのように扱って表示します。
|
DIRECTORY コマンドについて詳しくは,
『OpenVMS DCL ディクショナリ』を参照してください。
10.1.2.2 ODS-2 と ODS-5 の混在使用
この節では,クラスタ内で ODS-2 と ODS-5 を同時に使用する場合の注意点について説明します。
混在ボリューム環境における従来のファイル名の使用
ODS-2 と ODS-5 の両方のボリューム上での ODS-2 と ODS-5 ファイル名の非互換の問題を避けるため,
また以前のバージョンの OpenVMS との下位互換性を保証するため,
従来の ODS-2 ファイル名だけを使用してください。
解析スタイルによるエラー・メッセージの相違
解析スタイルの違いによってユーザに表示されるエラーが変化する場合があります。
従来 DCL レベルで処理されてきた 構文エラー は,
たとえば解析スタイルが EXTENDEDの場合,現在では RMS と XQP に送られます。
この結果,ファイルの構文エラーの発生に対してユーザが受け取るメッセージは解析スタイルとボリューム構造によって多少異なることがあります。
次の例は エラー・メッセージが異なる場合の例です。
-
ODS-5 ボリューム上での TRADITIONAL スタイルと EXTENDEDスタイル:
$ SHOW DEVICE DKA500:/FULL
Disk AABOUT$DKA500:, device type RZ25 Disk, is online, allocated, deallocate
on dismount, mounted, file-oriented device, shareable.
Error count 0 Operations completed 155
.
.
.
Volume Status: ODS-5, 1 subject to mount verification, file high-water
marking, write-back caching enabled.
$ SET PROCESS /PARSE_STYLE=TRADITIONAL 2
$ OPEN /WRITE FILE z.z.z.z
%DCL-W-PARMDEL, invalid parameter delimiter - check use of special
characters \.Z\ 3
$ SET PROCESS /PARSE_STYLE=EXTENDED 4
$ OPEN /WRITE FILE z.z.z.z
$ 5
|
1 | ボリュームは ODS-5である。
|
2 | 解析スタイルを TRADITIONALに設定した。
|
3 | DCL はこの ODS-5 ファイル名に対しこのようなエラーを返した。
|
4 | 解析スタイルを EXTENDEDに 設定した。
|
5 | DCL がファイルを作成した。
|
-
ODS-2 ボリューム上での TRADITIONALスタイルと EXTENDED スタイル:
Disk AABOUT$DKA200:, device type RZ25 Disk, is online, allocated, deallocate
on dismount, mounted, file-oriented device, shareable.
Error count 0 Operations completed 232
.
.
.
Volume Status: ODS-2, 1 subject to mount verification, file high-water
marking, write-back caching enabled.
$ SET PROCESS /PARSE_STYLE=TRADITIONAL 2
$ OPEN /WRITE FILE z.z.z.z
%DCL-W-PARMDEL, invalid parameter delimiter - check use of special
characters \.Z\ 3
$ SET PROCESS /PARSE_STYLE=EXTENDED 4
$ OPEN /WRITE FILE z.z.z.z
%DCL-E-OPENIN, error opening
-RMS-E-CRE, ACP file create failed 5
-SYSTEM-W-BADFILEVER, bad file version number
|
1 | ボリュームは ODS-2 である。
|
2 | 解析スタイルを TRADITIONALに設定した。
|
3 | DCL は エラー・メッセージを返した。
|
4 | 解析スタイルを EXTENDEDに設定した。
|
5 | DCL はこのファイル名を許したが,XQP はエラーを返した。
|
-
同じ構文エラーに対する異なるエラー・メッセージの例:
$ SHOW DEVICE DKA500:/FULL
Disk AABOUT$DKA500:, device type RZ25 Disk, is online, allocated, deallocate
on dismount, mounted, file-oriented device, shareable.
Error count 0 Operations completed 155
.
.
.
Volume Status: ODS-5, 1 subject to mount verification, file high-water
marking, write-back caching enabled.
$ SET PROCESS /PARSE_STYLE=TRADITIONAL 2
$ CREATE a^<b.c
%DCL-W-PARMDEL, invalid parameter delimiter - check use of special
characters
\^\ 3
$ SET PROCESS /PARSE_STYLE=EXTENDED 4
$ CREATE a^<b.c
%CREATE-E-OPENOUT, error opening a^<b.c as output
-RMS-F-SYN, file specification syntax error 5
|
1 | ボリュームは ODS-5である。
|
2 | 解析スタイルを TRADITIONALに設定した。
|
3 | DCL は構文エラーに対し,エラー・メッセージを返した。
|
4 | 解析スタイルを EXTENDED に設定した。
|
5 | RMS は構文エラーに対し上記と異なるエラーを返した。
|
暗黙のファイル名出力に注意
ユーティリティにファイルを作成させる場合,
処理されるファイル名から暗黙に設定される省略時の設定に注意する必要があります。
ODS-2 ボリュームに拡張された名前を持つファイルを誤って置かないよう,
どこにファイルを置くのかは意識していてください。
次の例は,ユーザが意図していない場所にファイルを置いてしまった例です。
-
アプリケーションまたはユーティリティが ODS-5 拡張ファイル名を ODS-2 (DKA200:) ボリュームに書き込もうとした場合にエラーとなる。
次の例を参照。
$ SHOW DEFAULT
DKA200:[DOREO]
$ DUMP /OUTPUT DKA500:[DOREO]This^_is^_a^_file.Dat
%DUMP-E-OPENOUT, error opening DKA200:[DOREO]THIS^_IS^_A^_FILE.DMP;as output
-RMS-E-CRE, ACP file create failed
-SYSTEM-W-BADFILENAME, bad file name syntax
|
/OUTPUT 修飾子で指定された出力ファイルは,省略時の設定では,
省略時ディレクトリ作成される入力ファイルと同じファイル名でファイル・タイプ .DMP のファイルになります。
入力ファイル指定が ODS-5 ボリュームにある拡張名のとき,.DMP ファイルは従来の名前を持つ必要があります。
その理由は,出力ファイルが ODS-2 ボリュームに書き込まれる予定だからです。
その結果として,エラーが発生します。
-
バッチ・コマンド・ファイルは,次の条件すべてが真となると実行に失敗する:
-
ログ・ファイルの作成が明示的あるいは暗黙に指定されている。
-
明示的あるいは暗黙のログ・ファイル指定が拡張ファイル名 (つまり ODS-2 対応でない)である。
-
ログ・ファイルが ODS-2 ボリューム上に作成されるように指定されている。
上記の条件がそろうと,ログ・ファイルを作成することができないので,
バッチ・コマンド・ファイルは実行されません。
論理名 SYS$LOGIN が ODS-2 ボリュームを指し示している場合にこの状況はよく起ります。
これは,ログ・ファイルが暗黙に SYS$LOGIN デバイスに作成されるからです。
さらに,バッチ・ジョブのキュー登録時に通知機能が禁止されていた場合,
バッチ・ジョブが実行されなかったことが通知されません。
この問題を避けるため,
ODS-5 拡張ファイル名を持ったコマンド・ファイルをキューに登録する場合には /LOG= 修飾子と ODS-2 対応ログ・ファイル指定を使用します。
ここではシステム・アーキテクチャに関連する Extended File Specifications の問題について説明します。
拡張ファイル名がVAX システムから見えないVAX システムにログインした場合,
ODS-5 ボリュームをVAX にマウントすることはできるが ODS-5 拡張ファイル名は見えません。
これに代わって擬似名が表示されます。
-
VAX上では, 2バイト Unicode 文字を含んだファイル名を表示しようとした場合,
表示される擬似名は次のようになる。
-
たとえば,
Alpha システム,I64 システム,および VAX システムで同じディレクトリを表示した場合,
次のようになります:
-
Alpha システムまたは I64 システムの場合:
$ DIRECTORY DPA100:[TEST]
Directory DPA100:[TEST]
Accounting^_data.lis;1 atest.txt;1
|
-
VAX システムの場合:
$ DIRECTORY DPA200:[TEST]
Directory DPA200:[TEST]
\PISO_LATIN\.??? ATEST.TXT
|
さらに,VAX 上でのディレクトリの深さは8 (または,ルート論理名により16)
に制限されます。
VAX システム上での ODS-5 物理バックアップ
OpenVMS VAX システムでは,BACKUPは ボリュームをバックアップする場合,
/PHYSICAL 修飾子を指定した場合にのみ,ODS-5 ボリュームをサポートします。
BACKUP /PHYSICAL コマンドにより BACKUP はブロックからブロックへの物理的バックアップを行い, ディスクの構造的内容を無視します。
Alpha システムおよび I64 システムでは BACKUP /IMAGE または BACKUP /PHYSICAL コマンドが使用できます。
ODS-5 は,主に Advanced Server for OpenVMS
[16]
のユーザおよびDCOM と Java アプリケーションのユーザに対し,高度なファイル共有機能を提供することを目的として,OpenVMS にインプリメントされています。
ODS-5 ボリュームを有効化すると一部の新機能がアプリケーションやレイヤード・プロダクト,
さらにはシステム管理の一部にまで影響を与える可能性があります。
ODS-5 ボリュームで使用できる新しい構文のファイル名は,
ODS-2 ボリュームで全く同様に使用できるわけではありません。
バージョン 7.2 より前の Alpha システムは ODS-5 ボリュームにアクセスできず,
また Open VMS バージョン 7.2 VAX システムが持つ ODS-5 機能は限られているので,
混合バージョンや混合アーキテクチャの OpenVMS Cluster では,
どこで,またどのように ODS-5 ボリュームを有効化するのかを慎重に考慮する必要があります。
次の節では,ODS-5 ボリュームが,システム管理,ユーザ,
およびアプリケーションに与える影響について簡単に説明します。
10.2.1 システム管理に関する考慮事項 | |
深いディレクトリへの RMS アクセスおよび拡張ファイル名は,
OpenVMS Alpha V7.2 またはそれ以降のシステム,および I64 システムにマウントされた ODS-5 ボリュームでのみ利用可能です。
ODS-5 ボリュームは,できるだけ Alpha V7.2 以降を実行する同質の OpenVMS Cluster 上でのみ有効化してください。
バージョン 7.3-1 よりも前の OpenVMS では,ODS-5 ボリュームはシステム・ディスクとしては使用できませんでした。
また,ODS-5 ディスクは,同質の Alpha クラスタでのみ使用するように推奨されていました。
これらの制限事項は,削除されました。
OpenVMS バージョン 7.3-1 およびそれ以降では,ODS-5 ボリュームのシステム・ディスクとしての使用と,異種混在 Alpha クラスタでの使用がサポートされています。 ODS-5 を混合バージョンまたは混合アーキテクチャの OpenVMS Cluster で有効化する場合,
システム管理者は特別な手順に従う必要があり,また混在バージョン,
混在アーキテクチャの OpenVMS Cluster で ODS-5 ボリュームを有効にした場合の固有の制約を知っておく必要があります。
-
ODS-5 ファイルと深いディレクトリは,OpenVMS Alpha V7.2
システムより前のバージョンではサポートされていないので,
OpenVMS Alpha V7.2 システムからアクセスする必要がある。
-
すでに深いディレクトリを作成した場合,そのディレクトリは,
OpenVMS Alpha V7.2 システムからのみ表示できる。
-
バージョン 7.2 より前のシステムは,ODS-5 ボリュームをマウントすることも,そのボリューム上の ODS-2 または ODS-5 ファイル名を読み取ることもできない。
混合バージョンまたは混合アーキテクチャの OpenVMS Cluster におけるユーザに関する ODS-5 サポート上の制約については,10.2.2 項 「ユーザに関する考慮事項」 に詳細を示します。
ほとんどの非特権アプリケーションは,ほとんどの拡張ファイル名を扱うことができますが,拡張ファイル名をすべて扱えるためには,変更が必要なアプリケーションもあります。
ディスクとの間で物理または論理 I/O を使用する特権アプリケーションおよび ODS-5 ファイル名またはボリュームへのアクセスに関して特定の要請があるアプリケーションは,
変更が必要な場合があるので,分析が必要です。
フル・サポートされる OpenVMSアプリケーションのリストについては,
Web サイト www.hp.com/go/openvms を参照してください。
また,ODS-5 が OpenVMS に与える影響についての詳細は,
10.2.3 項 「アプリケーションに関する考慮事項」 を参照してください。
10.3.1 項 「Extended File Specifications のサポート・レベル」 では,Extended File Specifications のサポートレベルの決定について,詳細に説明しています。
10.2.2 ユーザに関する考慮事項 | |
OpenVMS Alpha バージョン 7.2 システムのユーザは,
OpenVMS Alpha バージョン 7.2 システムにマウントされた ODS-5 ボリュームで,Extended File Specifications 機能をすべて利用することができます。
混合バージョンまたは混合アーキテクチャの OpenVMS Cluster は,
ODS-5 機能の利用が制限されることがあります。
9.1.2.2 項 「混在バージョンのサポート」 に,混合バージョンの OpenVMS Cluster
に存在する制限事項を示します。
また,9.1.2.3 項 「デュアル・アーキテキチャ・サポート」 に,混合アーキテクチャの OpenVMS Cluster
に存在する制限事項を示します。
10.2.3 アプリケーションに関する考慮事項 | |
ODS-5 機能は,ボリュームごとに選択することができます。
ODS-5 ボリュームをシステム上で有効にしていない場合,
既存のアプリケーションの動作はすべて従来どおりです。
ODS-5 ボリュームを有効にした場合は,次の点が従来とは異なることに注意する必要があります。
-
ODS-5 ボリュームの拡張ファイル名に対応するために,
既存のアプリケーションとの互換性は保たれるが,
OpenVMS のファイル処理およびコマンド行の解析の方法が変更される。
既存の非特権アプリケーションの大部分は,ほとんどの拡張ファイル名に対応するが,すべての拡張ファイル名に対応するために変更を必要とする場合もある。
-
ディスクとの間に物理または論理 I/O を使用する特権アプリケーションは,
変更が必要な場合があるので,分析する必要がある。
ODS-5 ファイル名またはボリュームへのアクセスに関して特定の要請があるアプリケーションは,変更が必要かどうかを分析する必要がある。
ODS-5 ボリュームでは,ドキュメントに記載されたインタフェースに準じてコーディングされた既存のアプリケーションとレイヤード・プロダクトおよび DCL コマンド・プロシージャは,変更なく動作します。
しかし,ドキュメントに記載されていないインタフェースに準じてコーディングされたアプリケーション,または次のいずれかを含むアプリケーションが ODS-5 ボリューム上で想定どおりに動作するには,変更が必要になることがあります。
-
-
-
デリミタの配置や正しい文字などのファイル指定の構文についての想定。
-
ファイル指定の大文字小文字についての想定。
大文字小文字が混じったファイル指定,または小文字のファイル指定は大文字に変換されないので,文字列の照合操作に影響を及ぼすことがある。
-
RMS と対象のファイル・システムの間で,ファイル指定が同一であるという想定。
OpenVMS アプリケーションのサポート状況についての詳細は,
『OpenVMS Programming Concepts Manual』を参照してください。
ODS-5 を有効化する前に,システム管理者は次の手順を実行する必要があります。
10.3.1 Extended File Specifications のサポート・レベル | |
ODS-5 に対する OpenVMS ユーティリティとコマンドの動作を予測できるよう,
次のサポート・レベルが確立されています。
各レベルは,ユーティリティまたはコマンドが,拡張 (ODS-5 準拠)
ファイル指定に遭遇したときの許容できる動作の概要を定めています。
ODS-5のサポート・レベルは,フル・サポートからノー・サポートまであり,
10.3.1.1 項 「フル・サポート」 から 10.3.1.4 項 「ODS-5 のサポートなし」
までの節で,それぞれ説明します。
ODS-5 をフル・サポートする OpenVMS ユーティリティおよびコマンドは,
拡張ファイル命名をすべて利用できるように変更されています。
これらのユーティリティおよびコマンドは,
拡張ファイル指定をエラーなしに許容し,処理するとともに,
大文字小文字を作成時のまま保存します
[17]。
加えて,Extended File Specifications をフル・サポートする OpenVMS コマンドとユーティリティは,ディレクトリ ID (DID) やファイル ID (FID) 形式に短縮しなくても,従来,元の形式
[18]
が持っていた 255 バイトの上限を超えて長いファイル名の指定を許容したり,
作成したりすることができます。
次の DCL コマンドおよび OpenVMS ユーティリティは,
拡張ファイル名をフル・サポートします。
省略時サポートの OpenVMS ユーティリティおよびコマンドは,
ほとんどまたは全く変更することなく,
Extended File Specifications 機能を利用することができます。
これらのユーティリティおよびコマンドは,Extended File Specifications のほとんどの属性 (たとえば,新しい文字や深いディレクトリ構造) を正しく処理できます。
しかし,ファイル名が誤った大文字小文字の区別で作成されたり,
表示されたりすることがあります。
フル・サポートを行うユーティリティとは異なり,省略時サポートを行うユーティリティは,RMS が提供する DID および FID 短縮を利用して,
長いファイル指定を処理します。
そのため,これらのユーティリティには,DID および FID 短縮に関連する次の制限事項があります。
-
FID 短縮が使用されている環境では,照合操作が常に予期したとおりに動作するとは限らない。
たとえば,長いファイル名が数値 FID 短縮形式で表されていることがあるので,ワイルドカードの照合操作で,一致するファイル名がすべて検出されるとは限らない。
この制限事項は,特に,照合操作が RMS の外で実行されるときに当てはまる。
-
ワイルドカードとスティッキー省略時設定は,
FID 短縮では使用できない。
たとえば,次のコマンドはイリーガルである。
$ DIRECTORY a[1,2,3]*.txt
$ COPY a[1,2,3].txt *.txt2
|
FID 短縮は 1 つのファイルの一意の数値表現なので,
他のファイルの表現または照合には使用できない。
-
FID 短縮を使用したファイルの作成はイリーガルである。
DID 短縮と FID 短縮の詳細については,『Guide to OpenVMS File Applications』を参照してください。
ODS-5 ボリューム構造をサポートしない OpenVMS ユーティリティおよびコマンドは,拡張ファイル名を処理できません。
このようなユーティリティおよびコマンドは,従来のファイル指定に遭遇したときでも,正しく動作するかどうか弊社では保証できませんので,
これらを ODS-5 ボリュームで使用する場合は注意が必要です。
表 10-3 「サポートされない OpenVMS コンポーネント (ODS-5 未サポート)」 と表 10-4 「サポートされない OpenVMS コンポーネント (拡張ファイル名未サポート)」 は,
拡張ファイル名または ODS-5 ボリューム構造の処理上の限界から,
Extended File Specifications をサポートしない OpenVMS ユーティリティとコマンドを示します。
表 10-3 サポートされない OpenVMS コンポーネント (ODS-5 未サポート) コンポーネント | 注意 |
---|
ディスク・デフラグメンタ |
サポートされない。
ただし,特定のデフラグメンテーション・ツールについて,ODS-5 ボリュームをサポートするために更新されたという記載がドキュメントにある場合を除く
[1]。
|
表 10-4 サポートされない OpenVMS コンポーネント (拡張ファイル名未サポート) コンポーネント | 注意 |
---|
コード・コンパイラ | 一部のコンパイラは,オブジェクトファイルに拡張ファイル名が使用できない。
ただし,コード・コンパイラで,拡張名をサポートするアプリケーションを作成することはできる。 |
INSTALL による既知イメージのインストール |
拡張ファイル名を持つイメージを既知イメージとしてインストールしてはならない。 |
LINK |
拡張ファイル名を持つイメージを出力できない。 |
MONITOR | 拡張ファイル名の処理の信頼性が低い。 |
ネットワーク・ファイル (NET*.DAT) | 名前を拡張ファイル名に変更してはならない。 |
オブジェクト・モジュール (.OBJ) | 名前を拡張ファイル名に変更してはならない。 |
ページとスワップ・ファイル | 拡張ファイル名を使用してはならない。 |
SYSGEN |
拡張ファイル名を使用してパラメータ・ファイルを作成してはならない。 |
システム・スタートアップ・ファイル |
名前を拡張ファイル名に変更してはならない。 |
システム管理者は,次の制限のうち,いずれか片方または両方の強制を選択することもできます。
-
VAX ユーザに対して ODS-5 ボリューム上にあるファイルへのアクセスをさせない。
-
テストされていないアプリケーションから ODS-5 ディスク上にあるファイルにアクセスさせない (特定のユーザに対しては,ODS-5 ボリュームに対するこのアクセス制御を無効にすることもできる)。
システム管理者は,通常の OpenVMS に一任した制御を使用して,これらの制限事項のどちらをも強制することができます。
詳細については,
『OpenVMS システム・セキュリティ・ガイド』を参照してください。
これ以降の項では,強制できる制限事項の例を示します。
10.4.1 VAX ユーザに対する ODS-5 ボリュームへのアクセスの禁止 | |
VAX ノードにある ODS-5 ボリュームへのユーザからのアクセスを禁止するには,次の手順を行います。
-
次のように,識別子 (例 : VAX_NODE) を定義して,
OpenVMS VAX ノードを使っているユーザを特定する。
$ RUN SYS$SYSTEM:AUTHORIZE
UAF> ADD /IDENTIFIER VAX_NODE
%UAF-I-RDBADDMSG, identifier VAX_NODE value %X80010037 added to rights database
|
-
それぞれの VAX ノードで,システム・ライト・リストに VAX_NODE を追加する。
次の例を参照。
$ SET RIGHTS_LIST /ENABLE /SYSTEM VAX_NODE
|
このコマンドの /ENABLE 修飾子で,システム・ライト・リストに VAX_NODE が追加される。
また,このコマンドを SYSTARTUP_VMS.COM コマンド・プロシージャにも追加する。
-
VAX ノード上のすべての人に対して ODS-5 ボリュームへのアクセス権獲得を防止するために,次のように,
VAX_NODE 識別子の保持者からのアクセスを拒否するボリュームに対して,
アクセス制御エントリ (ACE) を指定する。
$ SET SECURITY /CLASS=VOLUME ODS5_DISK /ACL=(ID=VAX_NODE,ACCESS=NONE)
|
10.4.2 テストされていないアプリケーションに対する ODS-5 ボリューム へのアクセスの禁止 | |
ODS-5 ボリュームへのテストされていないアプリケーションからのアクセスを禁止するには,
次の手順を行います。
-
次のように,識別子 (例 : ODS5_UNSAFE) を定義して,
ODS-5 ボリュームにアクセスさせたくないアプリケーションを特定する。
UAF> ADD /IDENTIFIER ODS5_UNSAFE /ATTR=SUBSYSTEM
%UAF-I-RDBADDMSG, identifier ODS5_UNSAFE value %X80010039 added to rights database
|
-
保護されたサブシステム ACE を ODS5_UNSAFE 識別子とともにアプリケーションに付加する。
$ SET SECURITY /CLASS=FILE SYS$SYSTEM:APPLICATION.EXE -
_$ /ACL=(SUBSYSTEM,ID=ODS5_UNSAFE)
|
-
各 ODS-5 ボリュームに対して,
ODS5_UNSAFE 識別子の保持者からの ODS-5 ボリュームへのアクセスを拒否する ACE を次のように付加する。
$ SET SECURITY /CLASS=VOLUME ODS5_DISK/ ACL=(ID=ODS5_UNSAFE,ACCESS=NONE)
|
オプションとして,前述の最後の手順で,
テストされていないアプリケーションに対して熟練したユーザがアクセスできるように,
次の手順を行うことで,この制限を無効にすることもできます。
-
もう 1 つ別の識別子を作成する (例 : ODS5_UNTRAINED)。
UAF> ADD /IDENTIFIER ODS5_UNTRAINED
%UAF-I-RDBADDMSG, identifier ODS5_UNTRAINED value %X80010038 added to rights database
|
-
この識別子を次のようにすべてのユーザに割り当てる。
UAF> GRANT/IDENTIFIER ODS5_UNTRAINED *
%UAF-I-GRANTMSG, identifier ODS5_UNTRAINED granted to *
|
-
手順 3 の代わりに,
ODS5_UNTRAINED 識別子の保持者に対してアクセスを拒否するボリュームに,
アクセス制御エントリ (ACE) を指定する。
次の例を参照。
$ SET SECURITY /CLASS=VOLUME ODS5_DISK/ -
_$ ACL=(ID=ODS5_UNSAFE+ODS5_UNTRAINED,ACCESS=NONE)
|
このコマンドによって,ボリュームに対して ODS5_UNSAFE アプリケーションで ODS5_UNTRAINED ユーザがアクセスするのが防止される。
-
ODS-5 ボリュームにあるすべてのアプリケーションを使用させたいユーザに対しては,
次のように個別にこの識別子を削除する。
UAF> REVOKE/IDENTIFIER ODS5_UNTRAINED SHEILA_USER
%UAF-I-REVOKEMSG, identifier ODS5_UNTRAINED revoked from SHEILA_USER
|
上記の手順を完了すると,次のようになります。
-
経験の少ないユーザは,ODS-2 ボリュームへのアクセスだけをして,
テストされていないアプリケーションを使用できる。
-
熟練したユーザは,
ODS-5 ボリュームにあるすべてのアプリケーションをアクセスできる。
次の操作をはじめとして,ファイルに対する多くの操作は,
DCL (Digital Command Language) を使用して行います。
大部分の DCL コマンドは,デバイスがファイル構造を持つことを前提に動作します。
なお,この前提を必要としないコマンドについては,『OpenVMS DCL ディクショナリ』を参照してください。
何回も繰り返すようなファイル操作は,DCL を利用する他に,
プログラムを作成することによっても行うことができます。
使用する言語は,OpenVMS オペレーティング・システムのサポートする言語であればどの言語でも使用できます。
ファイル内の個々のレコードを操作したい,すなわち,
レコード・レベルでファイルにアクセスしたい場合は,OpenVMS のレコード管理サービス (RMS) 機能を内蔵したプログラムを作成してください。
レコード・レベルでのファイルの操作に使用する RMS 機能の例については,
『OpenVMS Record Management Services Reference Manual』 を参照してください。
DCL の DIRECTORY コマンドを使用すると,
ディレクトリに含まれるディスクと磁気テープ・ファイル情報を得ることができます。
DIRECTORY [ ファイル指定 [,...]]
DIRECTORY コマンドでコマンド修飾子を使用すると,
ディレクトリに含まれるファイル名のリスト以外の情報を得ることもできます。
DIRECTORY コマンドなどの DCL コマンドで使用可能な修飾子についての詳細は,『OpenVMS DCL ディクショナリ』を参照してください。
この後の例では,論理名 DISK$DOCUMENT が指すディスクにある,
[MALCOLM] ディレクトリからの情報の読み込み例を 3 つ紹介します。
例
-
$ DIRECTORY AVERAGE.*
Directory DISK$DOCUMENT:[MALCOLM]
AVERAGE.EXE;6 AVERAGE.FOR;6 AVERAGE.LIS;4 AVERAGE.OBJ;12
Total of 4 files.
|
この例では,AVERAGE ファイルのすべてのファイル・タイプと,各ファイルのバージョン番号のリストを表示している。
ここでは各ファイルについてバージョンが 1 つしか示されていないが,複数のバージョンがあれば,それらも示される。
-
$ DIRECTORY/SIZE/DATE/VERSIONS=1/PROTECTION AVERAGE
Directory DISK$DOCUMENT:[MALCOLM]
AVERAGE.EXE;6 6 10-APR-2000 15:43 (RWED,RWED,RWED,RE)
AVERAGE.FOR;6 2 2-APR-2000 10:29 (RWED,RWED,RWED,RE)
AVERAGE.LIS;4 5 9-APR-2000 16:27 (RWED,RWED,RWED,RE)
AVERAGE.OBJ;6 2 9-APR-2000 16:27 (RWED,RWED,RWED,RE)
Total of 4 files, 15 blocks.
|
この例でもまた,AVERAGE ファイルのすべてのファイル・タイプと,
各ファイルのバージョン番号のリストを表示している。
/SIZE 修飾子は,
各ファイルの大きさを使用ブロック数で示すようにという指示である。
/DATE 修飾子は,ファイルのバージョンの作成日の表示を指示し,
VERSIONS=1 修飾子は,表示するファイルのバージョン数を 1 つ (最新バージョン) に制限する。
また /PROTECTION 修飾子は,ファイルに対する保護設定内容を表示するようにという指示である。
-
|
$ DIRECTORY/FULL/VERSIONS=1 [MALCOLM...]AVERAGE.EXE
Directory DISK$DOCUMENT:[MALCOLM]
AVERAGE.EXE;6 File ID: (4098,149,0)
Size: 36/36 Owner: [DOCUMENTATION,MALCOLM]
Created: 27-MAY-2000 12:22:26.30
Revised: 27-MAY-2000 12:22:51.35 (2)
Expires: <None specified>
Backup: 3-JUN-2000 22:03.09
Effective: <None specified>
Recording: <None specified>
File organization: Sequential
Shelved state: Online
File attributes: Allocation: 36, Extend: 36, Global buffer count: 0
No version limit
Record format: Variable length, maximum 255 bytes
Record attributes: Carriage return carriage control
Journaling enabled: None
File protection: System:RWED, Owner:RWED, Group:RE, World:
Access Cntrl List: None
Total of 1 file, 36/36 blocks.
Directory DISK$DOCUMENT:[MALCOLM.TEST]
AVERAGE.EXE;1 File ID: (7714,29,0)
Size: 36/36 Owner: [DOCUMENTATION,MALCOLM]
Created: 15-APR-2000 10:12
Revised: 15-APR-2000 10:12 (1)
Expires: <None specified>
Backup: 15-APR-2000 22:41
Effective: <None specified>
Recording: <None specified>
File organization: Sequential
Shelved state: Shelved
File attributes: Allocation: 36, Extend: 36, Global buffer count: 0
No version limit
Record format: Variable length, maximum 255 bytes
Record attributes: Carriage return carriage control
Journaling Enabled : None
File protection: System:RWED, Owner:RWED, Group:RE, World:
Access Cntrl List: None
Total of 1 file, 36/36 blocks.
Grand total of 2 directories, 2 files, 72/72 blocks.
|
|
この例では,最上位のディレクトリ [MALCOLM] とその下のサブディレクトリから,
AVERAGE.EXE の1つのバージョンについて内容を詳細に表示している。
10.6.1 アクセス日付の表示 | |
POSIX 準拠のタイムスタンプを ODS-5 ディスク上でサポートするために,
OpenVMS Alpha バージョン 7.3-1 には,次の 3 つの新しいファイル属性が用意されています。
-
ATR$C_ACCDATE
POSIX st_atime に対応。
最後にファイルがアクセスされた時刻を反映する。
-
ATR$C_ATTDATE
POSIX st_ctime に対応。
最後にファイル属性が変更された時刻を反映する。
-
ATR$C_MODDATE
POSIX st_mtime に対応。
最後にデータが変更された時刻を反映する。
ファイル・ヘッダの変更は,ファイルが実際にアクセスされた場合を除き,
ATTDATE と記録されます。
REVDATE ACP-QIO 属性は,
最新の MODDATE と ATTDATE タイムスタンプです。
新しい ACP-QIO 属性は,保存された REVDATE を返します。
ファイルを閉じたときに,“norecord” が設定されていると,ACCDATE と REVDATE は変更されません。
設定されていない場合は,データがファイルから読み取られてファイルを閉じたときに,ファイルのアクセス日付が更新されます。
データがファイルに書き込まれた場合は,ファイルを閉じたときに,
ファイルの変更日が更新されます。
アクセス日付はディスクに書き出す必要があるので,これらの新しいファイル属性が使用されると,性能に影響します。
システム管理者は,次のコマンドを使用してアクセス日付サポートの有効/無効や,アクセス日付を変更する頻度を制御します。
$ SET VOLUME/VOLUME_CHARACTERISTICS=([[NO]]HARDLINKS,][[NO[ACCESS_DATES[=$deltatime]])
|
ファイルへのアクセスが頻繁な場合,性能への影響を制限するために,小さな変更に関してはアクセス時刻の更新を抑制することができます。
新しいアクセス時刻が有意かどうかは,デルタ時刻によって判定されます。
次の項に,SET VOLUME/VOLUME_CHARACTERISTICS コマンドを使用してアクセス日付を設定する方法の例を示します。
アクセス日付の自動更新を有効にするには,SET VOLUME/VOLUME_CHARACTERISTICS
コマンドを使用します。
$ SET VOLUME/VOLUME_CHARACTERISTICS=ACCESS_DATES=[deltatime] NODE$COE1
|
deltatime の省略時の値は 1 秒です。
この値は,“紀元からの経過秒数(seconds since the EPOCH)” というPOSIX st_atime が要求する時刻インタフェースに準拠します。
1 秒ごとに更新する必要がないサイトの場合は,
これよりも大きなデルタ時刻を選択して,
オーバヘッドを減少させることができます。
また,INITIALIZE/VOLUME_CHARACTERISTICS=ACCESS_DATES コマンドを使用して,
アクセス日付の自動更新を有効にすることもできます。
これには,次のコマンドを実行します。
$ INITIALIZE/VOLUME_CHARACTERISTICS=ACCESS_DATES NODE$COE1
$ MOUNT NODE$COE1
|
ボリュームでのアクセス日付サポートを無効にするには,
SET VOLUME/VOLUME_CHARACTERISTICS=NOACCESS_DATES
コマンドを使用します。
SET VOLUME/VOLUME_CHARACTERISTICS=NOACESS_DATES コマンドは,
コマンドが実行されているノードでのみ有効です。
他のノードは,次にボリュームがマウントされるときまで,
変更による影響はありません。
DCL コマンド DIRECTORY と DUMP/HEADER は,
新しいタイムスタンプをサポートします。
新しいタイムスタンプを表示するには,DIRECTORY/DATE コマンドを使用します。
$ DIRECTORY/DATE=ACCESSED
|
/DATE=ACCESSED 修飾子は最後のアクセス日付,
すなわち最後にデータがファイルから読み取られた日付を指定します。
他の 2 つの修飾子は,新しいタイムスタンプに関する情報を表示します。
最後に属性が変更された日付を指定するには,
/DATE=ATTRIBUTES 修飾子を使用します。
またサイトにデータが変更された日付を指定するには /DATE=DATA_MODIFIED 修飾子を使用します。
以降の節では,ファイルの保護について説明します。
10.7.1 ファイルの保護 | |
次のレベルでディスクや磁気テープ媒体上のデータを保護することができます。
保護レベル | 説明 |
---|
デバイスレベル | デバイス保護属性については,
第9章 「記憶媒体の管理」 および『OpenVMS DCL ディクショナリ』の,
DCL コマンド INITIALIZE,MOUNT,SET DEVICES,
SET SECURITY/PROTECTION,および SET VOLUME の説明を参照。
周辺デバイスについての詳細は,第8章 「周辺デバイスの管理」 を参照。 |
ボリューム・レベル | ディスクとテープのボリューム単位の保護。
詳細は,それぞれ次の節を参照。 |
ファイル・レベル
| ディスク・ファイルとディレクトリ・ファイル単位の保護。
詳細は,それぞれ次の節を参照。 |
次の方法でディスクやテープ・ボリューム上のデータを保護することができます。
たいていの場合,ファイルの保護は外部から見えませんが,OpenVMS には,
ファイルの保護設定を変更するためのツールが用意されています。
次のような場合に,ファイルの保護モードを設定したり,
ファイルの ACL を変更したりすることができます。
-
-
-
-
UIC のグループ・パートが MAXSYSGROUP 以下である。
-
GRPPRV があり,ファイルと同じグループ UIC を持っている。
10.7.2 ファイルの所有権と保護情報の表示 | |
表 10-5 「所有権と保護情報を表示する DCL コマンド」 に示すコマンドと修飾子を使い,ファイルの所有権と保護情報を表示することができます。
表 10-5 所有権と保護情報を表示する DCL コマンド コマンド | 表示情報 |
---|
DIRECTORY/ACL ファイル指定 | ファイルの ACL |
DIRECTORY/OWNER_UIC ファイル指定 | ファイルの所有者の UIC |
DIRECTORY/PROTECTION ファイル指定 | ファイルの UIC に基づく保護情報 |
DIRECTORY/SECURITY | 上記のすべての情報 |
DIRECTORY/FULL ファイル指定 | 上記のすべての情報と他の非機密保護情報 |
SHOW DEVICES/FULL デバイス名 | デバイスの UIC と保護情報 |
SHOW PROCESS | プロセスの UIC |
SHOW PROTECTION | 省略時のファイル保護情報 |
SHOW SECURITY | 上記のすべての情報 |
テープ・ボリュームはディレクトリ構造を持ちませんが,
DIRECTORY コマンドを使用して,テープ・ボリューム上のファイルを検索することができます。
10.9 項 「テープ・ファイルへのアクセス」 では,テープ・ファイルにアクセスして,読み込みまたは書き込みを行う方法と,
テープに対する DIRECTORY コマンドの使用法を説明します。
DCL の SHOW PROTECTION コマンドは,プロセスに対する現在の省略時の保護情報を表示します。
ターミナル・セッション中に作成されるファイルやバッチ・ジョブには,この省略時の保護が適用されるため,
ディレクトリや既存のバージョンの省略時の保護を適用することはできません。
次に,SHOW PROTECTION コマンドを使用したディスク・ファイルの保護属性の表示例を紹介します。
例
$ SHOW PROTECTION
SYSTEM=RWED, OWNER=RWED, GROUP=RE, WORLD=NO ACCESS
|
現在の省略時の保護属性の表示を要求する SHOW PROTECTION コマンドの例です。
10.7.3 ディスク・ファイルの保護 | |
ディスク上の各ファイルには,
ディスク・ボリュームそのものに適用される保護とは明確に異なる,
独自の保護コードを設定することができます。
ディスク・ボリューム上のファイルに設定されるアクセス権を 表 10-6 「ディスク・ファイルの保護とアクセス権」 に示します。
表 10-6 ディスク・ファイルの保護とアクセス権 アクセス権 | 与えられる権利 |
---|
読み込み
| ディスク・ファイルの読み込み,プリント,コピーを行う権利。
このアクセス権には,ディスク上の指定したファイルまたはファイルのグループへの実行アクセス権が自動的に含まれる。 |
書き込み
| ファイルへの書き込みおよびファイルの内容を変更する権利。
しかし,ファイルを削除することはできない。
書き込みアクセス権によって,ファイルの内容を表すファイル属性を変更することができる。 |
実行
| 実行形式のプログラム・イメージまたは DCL コマンド・プロシージャを含むファイルの実行アクセス権利。 |
削除 | ファイルを削除する権利。
ファイルを削除するには,ファイルに対して削除アクセス権があり,ファイルを含むディレクトリに対して書き込みアクセス権が必要である。 |
制御 | 保護コードおよび ACL を含むファイルの属性を変更する権利。
ファイルの所有者の変更には,特殊な制限が適用される。 |
ファイルの作成時に保護コードが設定されなかった場合,システムは省略時の保護コードを割り当てます。
ただし,ファイルのバージョンがすでに存在する場合は,前のバージョンの保護コードが適用されます。
新規ファイルの場合,システムは次の 2 つの方法で適用する保護コードを決定します。
-
ファイルがカタログ登録されるディレクトリで,そのディレクトリに対応する ACE (アクセス制御エントリ) があり,かつそこで省略時の保護コードが指定されている場合は,指定保護属性を適用する。
-
省略時の保護コードの指定がないディレクトリの場合は,
省略時のプロセス保護属性を適用する。
省略時のプロセス保護属性は明示的には SET PROTECTION/DEFAULT コマンドで設定するが,これを行わない場合はログインしたときの省略時の設定が使用される。
ディスク・ボリュームの各ファイルの保護属性が同じである必要はありません。
SECURITY/PROTECTION などのファイル操作コマンドを使って,
ファイルごとに異なる保護属性を設定することができます。
以降の節では,次の作業について説明します。
新たに作成されたファイルは,省略時の UIC に基づく保護と,
親ディレクトリの省略時の ACE (アクセス制御エントリ) の保護 (親ディレクトリにそうしたエントリがある場合) を受けます。
また,既存のファイルに新しいバージョンが作成された場合は,
前のバージョンの UIC に基づく保護と ACL が設定されます。
RENAME/INHERIT コマンドを使用しないかぎり,
ファイル名を変更しても保護属性が変わることはありません。
省略時の UIC に基づく保護の変更
オペレーティング・システムは,各プロセスに省略時の UIC に基づく保護として (S:RWED,O:RWED,G:RE,W) を割り当てます。
このプロセスで作成されたファイルに適用されるこの省略時の保護を変更する場合は,次の形式の SET PROTECTION/DEFAULT コマンドを使用します。
SET PROTECTION[=(コード)]/DEFAULT
たとえば,ログイン・コマンド・プロシージャに次のコマンドを登録しておくと,それ以降に作成されるすべてのファイルに対する読み込みおよび実行アクセス権がすべてのプロセスに付与されます。
$ SET PROTECTION = (S:RWED,O:RWED,G:RE,W:RE)/DEFAULT
|
このコマンドを実行するためには,ログイン・コマンド・プロシージャを実行する必要があります。
10.7.3.2 ディスク・ファイル保護の明示設定
次に示す形式で /PROTECTION 修飾子を使用すると,
新しいファイルに対する UIC に基づく保護を明示的に設定することができます。
この修飾子が使用可能なコマンドは,BACKUP,COPY,RENAME,CREATE です。
$ CREATE MAST12.TXT/PROTECTION=(S:RWED,O:RWED,G,W)
|
また,新たに作成したファイルに対して ACL を作成した場合は,必要なだけ ACL に ACE を登録することができます。
ACL に指定した保護は,ファイルの UIC に基づく保護に優先します。
次の例では,保護コードのチェック例と指定例をいくつか紹介します。
例
-
$ SHOW PROTECTION
SYSTEM=RWED, OWNER=RWED, GROUP=RE, WORLD=NO ACCESS
|
SHOW PROTECTION コマンドで,現在のシステムの省略時の保護コードを表示している。
この例では,システムの省略時の保護であることが示されている。
システムと所有者がすべてのアクセス権,グループ・ユーザが読み込みアクセス権と実行アクセス権を持ち,一般ユーザにはアクセス権がないことがわかる。
-
$ SHOW SECURITY IMAGES.DIR
DBA1:[SADAMS]IMAGES.DIR;1 object of class FILE
Owner: [SAM,SADAMS]
Protection: (System: RWE, Owner: RWE, Group: RE, World: E)
Access Control List:
(IDENTIFIER=[SAM,SADAMS],ACCESS=READ+WRITE+EXECUTE+DELETE+CONTROL)
|
この例では,SHOW SECURITY コマンドで IMAGES.DIR ファイルの現在の保護属性を表示している。
-
$ DIRECTORY/SECURITY IMAGES.DIR
Directory DBA1:[SADAMS]
IMAGES.DIR;1 [VMS,SADAMS] (RWE,RWE,RE,E)
(IDENTIFIER=[VMS,SADAMS],ACCESS=READ+WRITE+EXECUTE+DELETE+CONTROL)
Total of 1 file.
|
この例では,DIRECTORY コマンドに /SECURITY 識別子を指定することにより,IMAGES.DIR ファイルの現在の保護属性を表示している。
-
$ COPY/PROTECTION=(SYSTEM:RW,OWNER:RWED,GROUP:RW,WORLD) ABC.DAT XYZ.DAT
|
この例では,/PROTECTION 修飾子で,ABC.DAT ファイルを XYZ.DAT ファイルにコピーするときに保護コードを指定している。
-
$ SET SECURITY/PROTECTION=(SYSTEM:RWE,OWNER:RWED,GROUP:RE,WORLD) ABC.DAT
|
この例では,SECURITY/PROTECTION コマンドで,
既存のファイルの保護コードを変更している。
ABC.DAT ファイルについてこのコマンドが与えている指示は,
システム・ユーザには読み込み,書き込み,および実行のアクセス権を,
所有者には読み込み,書き込み,実行,および削除のアクセス権を,
グループ・ユーザには読み込みと実行のアクセス権を付与し,
一般ユーザにはアクセス権を付与しないというものである。
システムと所有者には暗黙で制御アクセス権が付与され,変更されることはないが,グループと一般ユーザには,そうした制御権は与えられない。
10.7.3.3 ディスク・ファイルの保護属性の変更
ファイルの保護属性の設定と変更する DCL コマンドを 表 10-7 「ファイルの保護属性の変更する DCL コマンド」 に示します。
表 10-7 ファイルの保護属性の変更する DCL コマンド コマンド | 説明 | 参照箇所 |
---|
SET DIRECTORY | ディレクトリの属性を変更する。
ディレクトリの保護属性は,
ディレクトリに含まれるファイルの保護属性に優先することがある。 | 10.7.4 項 「ディスク・ディレクトリの保護」 |
SET FILE | バージョン制限などのファイルの属性を変更する。 | 10.7.3.3.2 項 「SET FILE コマンド」 |
SET PROTECTION/DEFAULT | ファイルに対する省略時の UIC 保護を設定する。 | 『OpenVMS システム・セキュリティ・ガイド』 |
SET SECURITY
| オブジェクトの機密保護プロファイルを変更する。
このプロファイルには,次の属性が含まれる。
-
-
保護コード。
システム,所有者,グループ,一般などのカテゴリに基づいて,アクセスを定義する。 -
所有者。
システムは所有者属性を使用して,保護コードに割り込みを行う。
| 『OpenVMS システム・セキュリティ・ガイド』,
『OpenVMS DCL ディクショナリ』 |
SET VOLUME
| マウント済みの Files-11 ボリュームの属性を変更する。
/FILE_PROTECTION 修飾子を使用すると,指定したディスク・ボリュームのすべてのファイルに適用する省略時の保護を設定することができる。 | 9.4.1.2 項 「ディスク・ボリュームのマウント後の保護の変更」 |
これらの DCL コマンドで使用可能な修飾子とパラメータについての詳細は,
『OpenVMS DCL ディクショナリ』を参照してください。
ファイルの保護属性を変更する場合は,次の形式で行います。
SET SECURITY/PROTECTION = コード ファイル指定[,...]
この後の例では,ファイルの保護属性の変更方法をいくつか紹介します。
例
-
$ DELETE INCOME.DAT;3
%DELETE-W-FILNOTDEL, error deleting DISK1:[SMITH]INCOME.DAT;3
-RMS-E-PRV, insufficient privilege or file protection violation
$ SET SECURITY/PROTECTION=OWNER:D INCOME.DAT;3
$ DELETE INCOME.DAT;3
|
この例では,INCOME.DAT;3 が削除禁止になっていたため,
SET SECURITY/PROTECTION コマンドで所有者の削除アクセス権だけを変更している。
この変更によって,所有者は INCOME.DAT;3 ファイルを削除することができた。
-
$ SET SECURITY/PROTECTION=(SYSTEM:R,OWNER:RWED,GROUP:RW) PAYROLL.LIS
|
この例では,SET SECURITY/PROTECTION コマンドを使用して,PAYROLL.LIS ファイルの保護コードを変更している。
このファイルに対しては,システムに読み込みアクセス権,
所有者に読み込み,書き込み,実行,および削除のアクセス権,所有者のグループのメンバに読み込みおよび書き込みのアクセス権を付与している。
DCL の SET FILE コマンドを使用して,ファイルの属性を変更したり,
ファイルに対して追加名すなわち別名を割り当てることができます。
この後の例では,このコマンドの使用例をいくつか紹介します。
例
-
$ SET FILE/EXPIRATION_DATE=15-APR-2000:11:00 BATCH.COM;3
|
この例では,SET FILE コマンドを使用して,BATCH.COM;3 というファイルの満了日を 2000 年 4 月 15 日の午前 11:00 と設定している。
-
$ SET FILE/BEFORE=15-APR-00/ERASE_ON_DELETE PERSONNEL*.SAL
|
この SET FILE コマンドはファイル指定 PERSONNEL*.SAL に一致するファイルで,日付が 2000 年 4 月 15 日より前のすべてのファイルを探し出し,
DELETE あるいは PURGE などのコマンドで削除されるファイルをディスクから消去する。
-
$ SET FILE/OWNER_UIC=[DOCUMENTATION,GRAY]/VERSION_LIMIT=100 MYFILE.DAT
|
MYFILE.DAT というファイルの属性を変更している例。
所有者 UIC を変更し,ファイルのバージョン制限値として 100 を設定している。
/OWNER_UIC 修飾子を使用するためには,システムまたはグループ・レベルで所有権を変更するための SYSPRV か GRPPRV 特権が必要になる。
-
$ SET FILE OLD_FILENAME.DAT/ENTER=NEW_FILENAME.DAT
|
この例では,OLD_FILENAME.DAT ファイルに別名 (NEW_FILENAME.DAT) を割り当てている。
元のファイル名および別名はともに同一のファイルを参照するため,別名を使用してファイルを削除する場合には注意が必要である。
ファイルを保存し,ファイル名の 1 つを除去する場合は,
SET FILE コマンドに /REMOVE 識別子を指定する。
ファイル名にワイルドカード文字は使用できない。
詳細は『OpenVMS DCL ディクショナリ』を参照。
10.7.4 ディスク・ディレクトリの保護 | |
ディレクトリには個々に保護が設定されます。
このときディレクトリの保護は,そこに含まれる個別ファイルの保護に優先することがあります。
たとえば,ディレクトリに含まれているファイルが一般ユーザのアクセスを許可していたとしても,ディレクトリが一般ユーザのアクセスを拒否している場合,一般ユーザがファイルにアクセスすることはできません。
ディレクトリを保護するために設定できるアクセス権を 表 10-8 「ディレクトリの保護とアクセス権」 に示します。
表 10-8 ディレクトリの保護とアクセス権 アクセス権 | 与えられる権利 |
---|
読み込み | ファイルの表示,プリント,およびコピーのアクセス権。
ディレクトリに対する読み込みアクセス権があると,
DIRECTORY コマンドを使ってディレクトリの内容を表示することができる。
たとえば,ディレクトリ [JONES] に対する読み込みアクセス権があれば,
次のコマンドを入力することによって,
[JONES] ディレクトリに含まれるファイルのリストを得ることができる。 このアクセス権があれば,
ファイル自体にアクセスを拒否する保護が設定されていないかぎり,
ディレクトリ中の任意のファイルにアクセスすることができる。 |
書き込み | ディレクトリを変更したり,ディレクトリに書き込んだりする権利。
ただし,ディレクトリでのファイルの作成,
ディレクトリ内のファイル名の変更などのディレクトリ・ファイルの変更を伴うファイル操作を行うためには,ディレクトリに対する読み込みおよび書き込み両方の権利が必要である。 |
実行 | この権利がディレクトリに対して適用されると,実行アクセス権により,名前を指定してファイルにアクセスできるが,ディレクトリ内の全エントリをリストすることはできない。
すなわち,特定のあるいは暗黙のワイルドカードは使用できない。
たとえば,[JONES] ディレクトリに対する権利が実行アクセス権しかなくて,次のコマンドを入力すると仮定する。
これに対しシステムはエラー・メッセージ "insuffcient privilage or file protection violation" を出すだけで,[JONES] ディレクトリのファイルのリストを表示しない。
[JONES] ディレクトリに DATAFILE.DAT というファイルがあることが判明している場合は,次のコマンドを使用することができる。
$ TYPE [JONES]DATAFILE.DAT
|
システムは指定ファイルの内容を表示する。
つまり,アクセス権が実行アクセス権だけの場合は,読み込みアクセス権で可能な操作の一部しか行うことができない。
個々のファイルへのアクセスは,まだファイル保護によって制御されている。
たとえば,EXPENSES.DAT ファイルの内容を表示するには,ディレクトリ・ツリー内の JONES,REPORT,および JUNE の各ディレクトリに読み込みアクセス権または実行アクセス権を持っている必要がある。
$ TYPE [JONES.REPORTS.JUNE]EXPENSES.DAT
|
|
削除
| ディレクトリ・ファイルを削除する権利。
ディレクトリ・ファイルを削除するためには,
ディレクトリに含まれるすべてのエントリを削除しておく必要がある。
CREATE/DIRECTORY コマンドでディレクトリを作成した場合,省略時の設定では,
削除アクセス権は付与されない。
ディレクトリ・ファイルを削除したい場合は,
DCL の SET PROTECTION コマンドを使用し,
所有者カテゴリに明示的に削除アクセス権を割り当てておく必要がある。 |
制御
| ディレクトリの属性を変更する権利。 |
UIC に基づくディレクトリの保護
ファイルを完全に保護するためには,それが置かれているディレクトリに少なくとも同じ保護を適用する必要があります。
たとえば,ファイルに対するすべてのアクセス権をユーザに与えていて,そのファイルが存在するディレクトリについて,読み込みアクセス権だけ与えている場合,ユーザはファイルの存在を確認することはできますが,ファイルの内容にアクセスすることはできません。
また,ファイルに対するアクセスだけ許可されていて,そのファイルが存在するディレクトリまたはそのディレクトリの親ディレクトリに対するアクセスが拒否されている場合は,ファイルの存在を確認することもできません。
省略時の設定では,ディレクトリには UIC に基づく保護 (S:RWE,O:RWE,G:RE,W:E) が適用され,ACL は適用されません。
新しく作成されたディレクトリには,削除アクセス権を除き,
親ディレクトリと同じ保護が適用されます。
ディレクトリに UIC に基づく保護を指定するときは,
次のガイドラインに従ってください。
-
ディレクトリを作成するときに明示的に UIC に基づく保護を指定する場合は,CREATE/DIRECTORY コマンド に/PROTECTION 修飾子を使用する。
ディレクトリを作成する前に,ACL を指定することはできない。
-
既存のディレクトリの UIC に基づく保護を変更する場合は,SET PROTECTION コマンドを使用する。
これは,ディレクトリ・ファイルに働くコマンドである。
-
ディレクトリの読み込みアクセス権を許可せずに,実行アクセス権を付与することによって,ディレクトリに対するアクセスを制限することができる。
この場合,ディレクトリへのアクセスが禁止されることはなく,
ユーザはディレクトリ内のファイルの内容表示と読み込みを行うことができる。
ディレクトリに含まれるファイルのリストの表示は行えない。
以降の項ではディレクトリ保護属性と省略時の ACL 保護の変更について説明します。
10.7.4.1 ディレクトリ UIC 保護属性の変更
ディレクトリの保護属性の変更には,DCL の SET DIRECTORY コマンドを使用します。
例
$ SET DIRECTORY/OWNER_UIC=[360,020] [DAVIS],[USERS]
|
この例では,[DAVIS] と [USERS] ディレクトリの所有者 UIC を変更しています。
/OWNER_UIC 修飾子には,SYSPRV (システム特権) が必要になります。
省略時の保護 ACE を適切なディレクトリ・ファイルの ACL に置けば,
指定ディレクトリまたはサブディレクトリの省略時の UIC 保護を変更できます。
ACE で指定されている省略時の保護は,
指定のディレクトリ,あるいはそのディレクトリの任意のサブディレクトリにあるすべての新規ファイルに適用されます。
例
次の ACE は,(ディレクトリおよびサブディレクトリ内で作成されたファイル用の) 省略時の保護が,システムおよび所有者にフル・アクセス権,
グループ・プロセスに読み込みおよび実行アクセス権を許し,
ワールド・ユーザにアクセスを許さないように指定します。
ACE はディレクトリ・ファイルの ACL に入っている必要があります。
(DEFAULT_PROTECTION,S:RWED,O:RWED,G:RE,W:)
|
10.7.5 磁気テープ・ファイルの保護 | |
テープは個々のユーザのデバイスであるため,テープの保護はボリューム・レベルでしか行われません。
通常,磁気テープ・ボリュームの保護コードは,
INITIALIZE コマンドで設定します。
DCL
コマンドを使用して,磁気テープ・ボリュームの保護属性を変更することはできません。
詳細は 9.5.1 項 「ディスクのマウントで使用可能な MOUNT コマンドの修飾子」 を参照してください。
この節では,DCL コマンドを使用して,レコード・レベルではなく,
ファイル・レベルでファイルにアクセスする方法について説明します。
こうしたアクセスが行われる処理には,ファイルの読み込みとテープ・ファイルのコピーがあり,前者についてはこの節で,
後者については 10.10.1 項 「ディスク・ボリュームへのファイルのコピー」 でそれぞれ説明します。
DCL には,レコード・レベルでファイルを操作する機能があります。
しかし,性能上の理由から,
ユーザ独自のプログラムを代わりに使用することもあります。
このような場合は,レコード・レベルでのファイル・アクセス専用に設計されている OpenVMS レコード管理サービス (RMS) 機能を利用することをお勧めします。
オペレーティング・システムがサポートしている言語であれば,
任意の言語を使用できます。
ファイル・レベルでのディスク・ファイルのアクセスには,
DCL コマンドを使用することができます。
ただし,DCL コマンドを使用して,
オペレーティング・システムがサポートしている標準形式以外のファイルを,読み込みまたは書き込みすることはできません。
ファイルが標準形式以外の場合は,/FOREIGN 修飾子でボリュームをマウントして,
読み込みまたは書き込みする必要があります。
この節で紹介する例は,RA90 ディスク・パック上のディスク・ファイルに対するアクセス例ですが,使用されている方法は他のデバイスにも有効です。
DCL において,ディスク・ファイルを読み込みたい場合は,ターミナルにファイル内容を表示する TYPE コマンドを使用します。
また,読み取るディスク・ファイルの格納場所を知りたい場合は,DIRECTORY コマンドを使用します。
作業方法
ここでは,論理名 DISK$DOCUMENT が指すディスク・デバイスの,
[CHARLES] というディレクトリに含まれていることがわかっている,
HISFILE というファイルの内容を読み取る手順を紹介します。
-
次のコマンドを入力して,HISFILE が格納されている場所を調べる。
$ DIRECTORY DISK$DOCUMENT:[CHARLES...]HISFILE.*
|
オペレーティング・システムは [CHARLES] ディレクトリとそのすべてのサブディレクトリを検索して,HISFILE のすべてのファイル・タイプとバージョン番号を探す。
ターミナルに次の情報が表示される。
Directory DISK$DOCUMENT:[CHARLES.MEMO]
HISFILE.UPD;1
Total of 1 file.
|
この情報は,HISFILE には 1 つのバージョンしか存在せず,
ファイル・タイプがUPD であること,
また,そのファイルが [CHARLES.MEMO] ディレクトリに存在していることを示している。
-
次のコマンドを入力して,ファイルの内容を読み込む。
$ TYPE [CHARLES.MEMO]HISFILE.UPD
|
ターミナルに HISFILE の内容が表示される。
この節では,ファイル・レベルでのテープへのアクセスについて説明します。
標準ラベルのボリュームまたはファイルへのアクセス要求があると,
オペレーティング・システムは,プロセスがその権限を持っているかチェックします。
このときシステムがアクセスをチェックするレベルは,
ボリューム・レベルとファイル・レベルの 2 つです。
どのレベルのチェックが行われるかは,要求された処理と,
その処理が必要とするアクセスのタイプによって異なります。
ボリュームまたはファイルへのアクセスがあると,オペレーティング・システムは,
そのボリュームまたはファイルに対するアクセスが制限されていないか調べます。
このとき読み取られるラベルは,要求された処理によって異なり,
ボリューム・ラベルかファイル・ヘッダ・ラベル,あるいはその両方が読み取られます。
たとえば,ボリュームのマウントの場合,
プロセスにはそのボリュームに対するアクセス権が必要です。
ファイルに対するアクセスの可否は,そこに設定されている保護コードによって決まります。
また,ヘッダの満了日フィールドによって,直前のファイルに対する書き換えや追加を防ぐことができます。
満了日に達していないファイルが満了することはありません。
満了していないファイルを書き換えるためには,
ボリュームをマウントするときに /OVERRIDE=EXPIRATION 修飾子を指定する必要があります。
また,この操作を行うためには,読み込みアクセス権か書き込みアクセス権が必要です。
この節では,テープ・ファイル名および磁気テープに対する次の作業について説明します。
10.9.1 テープ上のファイル名の説明 | |
OpenVMS システムでは,磁気テープのファイルに対して,
2 種類のファイル名を使用することができます。
-
OpenVMS 拡張ファイル名
OpenVMS オペレーティング・システムのみを使用する媒体上にファイルを保存する場合は,
OpenVMS 拡張ファイル名を使用する。
-
標準ファイル名
OpenVMS 以外のオペレーティング・システムの媒体上にファイルを移動する必要がある場合は,
標準ファイル名を使用する。
表 10-9 「OpenVMS 拡張ファイル名および標準ファイル名の比較」 に,OpenVMS 拡張ファイル名および標準ファイル名の特性の違いを示します。
表 10-9 OpenVMS 拡張ファイル名および標準ファイル名の比較 特性 | OpenVMS 拡張ファイル名 | 標準ファイル名 |
---|
有効なボリューム | テープ・ボリュームおよびディスク・ボリューム | テープ・ボリューム |
形式 | ファイル名 . タイプ; バージョン | ファイル名 .; バージョン (バージョンはオプション) |
長さ | 39.39; | 17.; |
有効な文字 | A から Z,0 から 9,アンパサンド (&),
ハイフン (-),アンダスコア (_),ドル記号 ($),
ワイルドカード文字のアスタリスク (*)
およびパーセント記号 (%) | 二重引用符 (" ") で囲まれた ASCII “a” 文字[1]。
DCL はファイル名の1組の二重引用符("")を単一の二重引用符(")として解釈する。
ファイル名が 17 文字に満たない場合は,
システムはファイル名の右側をスペースで埋め,
最大サイズの 17 文字にする。 |
例 | OPENVMS_ FILENAME.DAT;23 | "GENLABEL 123";2 |
10.9.2 標準ラベル・テープ上のファイルの検索 | |
磁気テープ・ボリューム上のファイルにアクセスして,読み込みまたは書き込みを行う際に,その格納場所が分からないことがあります。
そうした場合は,DCL の DIRECTORY コマンドを使用してください。
テープ・ファイル名を指定した DIRECTORY コマンドが入力された場合,
テープ・ファイル・システムは次のことを行います。
-
指定されたファイル名と一致するものが見つかるまで,各ファイルのファイル・ヘッダ・ラベルのファイル識別子フィールドを調べる。
-
ファイル名にバージョン番号が指定された場合は,
第 1 ヘッダ・ラベルの作成番号と作成バージョン番号フィールドを調べる。
-
バージョン番号が指定されなかった場合は,省略時のバージョン番号の適用は行われず,作成番号と作成バージョン番号フィールドも調べない。
-
ファイル識別子フィールドのファイル名が,
指定ファイル名と最初に一致するファイルを選択する。
オペレーティング・システムは,磁気テープ・ボリュームのディレクトリ構造と最新バージョン番号の適用をサポートしていない。
したがって,磁気テープ・ボリューム上のファイルの最新バージョンの検索やリスト表示を行うことはできない。
磁気テープ・ファイル・システムがテープ・ファイルのバージョン番号を増やすことはないので,
同じボリューム・セットに同じファイル名とバージョン番号を持つファイルが存在することがある。
そうした場合,テープ・ファイル・システムは最初に一致するファイル名とバージョン番号を選択する。
このため,検索したときにどのファイルが返されるかは,ボリューム・セット内の磁気テープの検索開始位置によって異なる。
検索処理はテープ上の現在位置から開始されるので,場合によってはファイルのアクセス前にテープ・ボリュームを巻き戻すことが必要である。
-
次のファイルのヘッダ・ラベル・セットの先頭から,一致ファイルの検索が再開される。
検索が終了するのは,磁気テープが検索を開始したファイル位置になったとき。
ボリューム・セットの現在のボリューム内に一致するファイルがない場合は,
システムは残りのボリュームを順次検索し,
さらに,先頭ボリュームの先頭に戻って検索を行う。
そして一致するファイルがない場合は,エラーを報告する。
10.9.3 テープ・ボリュームに対するワイルドカード文字の使用法 | |
OpenVMS オペレーティング・システムでは,
いくつかの制限がありますが,テープ・ボリュームに対するファイル指定でワイルドカード文字を使用することができます。
OpenVMS 拡張ファイル名および標準ファイル名でのワイルドカード文字の使用方法を表 10-10 「テープ・ボリュームに使用できるワイルドカード文字」 に示します。
表 10-10 テープ・ボリュームに使用できるワイルドカード文字 ワイルドカード文字 | OepnVMS拡張ファイル名 | 標準ファイル名 | 説明 |
---|
アスタリスク (*) | ○ | ○ | OpenVMS 拡張ファイル名では,ファイル名およびファイル・タイプ・フィールドの任意の位置にアスタリスクを使用して,フィールドの一部または全体と見なすことができる。
また,バージョン番号フィールドにもアスタリスクを使用することができる。 標準ファイル名では,1 つのフィールドにアスタリスクは 1 つしか使用できない。 |
パーセント記号 (%) | ○ | | OpenVMS 拡張ファイル名においてパーセント記号を使用した場合,
フィールド内の対応する文字位置の文字を任意の一文字と見なすことができる。
バージョン番号フィールドでパーセント記号を使用することはできない。 |
OpenVMS 拡張ファイル名の場合は,ファイル名とファイル・タイプ・フィールドのそれぞれを 39 文字の長さまで指定できるのに対し,標準ファイル名の長さは最大で 17 文字です。
次の例では,DIRECTORY コマンドのファイル指定でワイルドカード文字を使用して,テープ・ボリュームのファイルを検索する方法を紹介します。
ディスク・ファイルとテープ・ファイルとでは,
DIRECTORY コマンドの働きが異なります。
例
-
システムにボリューム・セットの検索を指示している例。
ファイル指定にアスタリスクが使用されているので,システムは OpenVMS 拡張ファイル名と標準ファイル名の両方を返す。
また,テープ・ファイル名の方は二重引用符で囲まれて返される。
-
これら 2 つのコマンドにはパーセント記号が使用されている。
標準ファイル名に対してパーセント記号は無効であるため,
検索は OpenVMS 拡張ファイル名にしか働かない。
2 つ目のコマンドの場合,
ファイル・タイプ・フィールドには少なくとも 1 文字が含まれている必要がある。
ファイル・タイプを持たないファイルが返されることはない。
$ DIRECTORY MTA1:%*.*;*
$ DIRECTORY MTA0:*.%*;*
|
-
この例では,ファイル・タイプがない標準ファイル名と OpenVMS 拡張ファイル名を持つファイルを検索している。
10.9.4 テープ・ボリュームからのファイルの読み込み | |
テープ・ファイルにアクセスして読み込みを行おうとすると,テープは,
ファイル・ヘッダ・ラベルの後のファイル・セクションの先頭に位置付けられます。
また,テープ・ボリューム上のファイルにアクセスして,
ファイル・セクションのデータではなく,ヘッダ・ラベルの属性だけ読み取ろうとすると,プロセスに RMS 属性が返されます。
たとえばボリュームかファイル,またはファイルのリストに DIRECTORY/FULL コマンドが実行されたときにテープ・ファイル・システムが行うことは次のとおりです。
-
ヘッダ・ラベルからファイル識別コードを選択する。
-
プロセスにファイル属性を返す。
-
最後にアクセスされたファイルのヘッダ・ラベルの後にテープを位置付ける。
読み込みアクセスでオープンされたテープ・ファイルは,次のいずれかの方法で暗黙に,または明示的にクローズされます。
方法 | 説明 |
---|
暗黙にクローズ | ファイルの読み込み中にテープ・マークが検出された場合,
ファイルは暗黙にクローズされる。
テープ・ファイル・システムは,
トレーラ・ラベルを読み取ってファイルをクローズし,
次のファイル位置にテープを位置付ける。 |
明示的にクローズ | ファイルのデータをすべて読み取る前にアクセスを終了した場合,
ファイルは明示的にクローズされる。
テープ・ファイル・システムはトレーラ・ラベルを読み取らずに,
単にファイルをクローズする。
テープのアクセス位置が変わることはない。 |
例
DCL の TYPE コマンドを使って,テープ・ボリュームのファイルを読み込み,その内容をターミナルに表示することができます。
たとえば,TESTFILE.DOC;1 というファイルの内容を読み込む場合は,
次のコマンドを使用します。
このとき,ディレクトリ検索によって,
TESTFILE.DOC;1 テープ・ファイルがテープ・ボリューム MTA1: に含まれる OpenVMS ファイルであることがわかっているものとします。
ターミナルには次の情報が表示されます。
MTA1:TESTFILE.DOC;1
This is a test file.
|
10.9.5 テープ・ボリュームへのファイルの書き込み | |
テープ・ボリュームへのファイルの書き込みの場合,
テープ・ファイル・システムはアクセス・チェックを行って,ラベルを書き込み,必要ならばボリュームを切り換えます。
10.9.5.1 既存ファイルを書き換える新しいファイルの書き込み
新しいファイルによって既存ファイルが書き換えられる場合,
テープ・ファイル・システムは次のことを行います。
-
既存のファイルの満了日とアクセス制御フィールドをチェックする。
-
書き換えが可能な場合は,次のことを行う。
-
既存のファイルのヘッダ・ラベル・セットを書き換える。
-
ファイル・セクションを作成する。
-
トレーラ・ラベルを書き込む。
-
論理的なボリュームの終わり (EOV) を示すテープ・マーク 2 つを書き込む。
新しいファイルより後ろのファイルはすべて失われます。
書き込みアクセスでオープンしたテープ・ファイルをクローズするとき,
テープ・ファイル・システムはドライバにコマンドを送って,ラベルと,
論理的なボリュームの終わりを示すテープ・マーク 2 つを書き込みます。
DCL を使用して既存のファイルに書き込みアクセスした場合,実際に行われるのは次に説明する追加または更新操作のいずれかです。
操作 | 説明 |
---|
追加 |
追加を目的としたファイルのアクセスの場合,テープは,
トレーラ・ラベルの前のテープ・マークの前に位置付けられる。
そして,ファイルが追加され,クローズされると,ファイルの作成と同じ処理が行われる。 |
更新 |
更新を目的としたファイルのアクセスの場合,テープは,ヘッダ・ラベルの後のテープ・マークの後ろに位置付けられる。
そして,ファイルが書き込まれ,クローズされると,ファイルの作成と同じ処理が行われる。 |
テープ・ファイルの更新または追加を行えるのは,バッファ・オフセットの長さとして値 0 がヘッダ・レベルに設定されている場合だけです。
テープ・ファイルの実際の更新と追加方法については,
10.10 項 「ファイルのコピーおよび転送」 で説明します。
ファイルを更新するときに /OVERRIDE=EXPIRATION が指定されなかった場合,テープ・ファイル・システムは,書き込みを許可する前にファイルの満了日フィールドをチェックします。
また,ファイルの追加の場合は,追加先のファイルとその直後のファイル両方の満了日を調べ,いずれかのファイルが満了日に達していない場合,
磁気テープ・ファイル・システムはファイルの追加を許可しません。
例
CREATE コマンドを使用してボリュームにアクセスし,書き込みを行うことができます。
たとえば,テープ・ボリュームに新しいファイルを書き込む CREATE コマンドの例を次に示します。
この例にあるコマンドに類似したコマンドを実行したら,続いて次の操作を行います。
-
ファイルの内容を入力する。
-
Ctrl/Z を押して,DCL コマンド・レベルを離れることなくファイルをクローズし,テープ・ボリュームにファイルを書き込む。
OpenVMS オペレーティング・システムには,
情報転送の手助けをする機能が数多くあります。
そのため,同じシステムばかりでなく,
他のオペレーティング・システムとの間でもディスクやテープのファイルのコピーを行うことができます。
情報転送の方法の要約を 表 10-11 「情報転送の方法」 に示します。
表 10-11 情報転送の方法 方法 | 説明 |
---|
DCL の COPY コマンド | 情報の転送で最もよく使われる方法。 |
CONVERT ユーティリティ
| ローカル・システムにおいて,順編成から索引編成などのようにファイルの編成を変更できる。 |
EXCHANGE ユーティリティ | ローカル・システムにおいて,OpenVMS 以外のオペレーティング・システムでフォーマットされたディスク・ボリュームおよびテープ・ボリュームにアクセスできる。
EXCHANGE を使用して,フォーリン・ボリュームと標準的な Files-11 ボリュームの間でファイルの転送を行うことができる。 |
DCL の EXCHANGE/NETWORK コマンド | ネットワークを介して,OpenVMS と他のオペレーティング・システムとの間でファイルの転送を行うことができる。
このコマンドは,OpenVMS を使用しているノードとOpenVMS を使用していないノードの間でファイルの転送を行う場合に,有用である。
コピーされたファイルは,OpenVMS および他のオペレーティング・システムにおいて,
それぞれ適したフォーマットを持つ。 |
BACKUP ユーティリティ | テープの場合,ディレクトリ・ツリー全体,
あるいは順編成ではないファイルをコピーする唯一の手段である。
BACKUP を使用したファイルのコピーについては,11.13.2 項 「セーブ・セットへのファイルとディレクトリのバックアップ」 を参照。 |
CDRECORD.COM | ファイルを CD-R ディスクに転送して,
独自の CD-ROM を作成することができる。
一部の AlphaServer で利用可能である。 |
COPY コマンド,Exchange ユーティリティ,
および DCL の EXCHANGE/NETWORK コマンドおよび CDRECORD.COM については,
次の項で説明します。
多くの場合,情報のコピーは,物理的な媒体の移動を伴わずに行うことができます。
しかし,通信リンクで接続されていないシステム間でコピーを行うこともあります。
このような場合は,別の場所に物理的にファイルを移動する必要があります。
たとえば,テープ・リールやテープ・カートリッジ,あるいはディスク・パックなどの可搬型のボリュームにファイルをコピーし,そのボリュームを別の場所に持っていきます。
この節では,次の作業について説明します。
10.10.1 ディスク・ボリュームへのファイルのコピー | |
ディスク・ボリュームにファイルをコピーするためには,次のことを行っておく必要があります。
-
9.3 項 「ボリュームの初期化」 で説明したボリュームの設定。
-
ファイルを格納するためのディレクトリの作成。
ディスクはランダム・アクセス・デバイスであり,
ファイルはディレクトリに格納する必要がある。
ディスクからのコピーの場合
ディスク・ボリュームのファイルの省略時の形式は,Files-11 構造のレベル 2 の形式です。
その他,RSX-11M や RSX-11M-PLUS,RSX-11D,IAS などの他の弊社オペレーティング・システムで使用されている Files-11 構造のレベル 1 形式でディスクを初期化することもできます。
ディスクから標準ラベルのディスク・ボリュームにファイルをコピー
すると,次の項目に変更が加えられます。
COPY コマンドを使用して,
省略時のディレクトリにあるすべてのファイルの最新バージョンを,
同じボリュームの別のディレクトリにコピーすることができます。
テープからのコピーの場合
磁気テープのファイルの省略時の形式は,標準ラベルのボリュームの形式です。
OpenVMS システムは,ディスク・ファイルとして順編成,相対編成,
および索引編成ファイルをサポートしていますが,標準ラベルのディスク・ボリュームには順編成ファイルしかコピーできません。
また,有効なレコード形式は可変長と固定長だけです。
テープ・ファイル名を持つファイルを磁気テープからディスクにコピーする場合は,
出力ファイル名として標準の OpenVMS ファイル名を指定してください。
出力側が OpenVMS ファイル名以外の場合,プロセスには次のエラー・メッセージが送られます。
RMS-F-FNM, error in file name
|
このメッセージは,テープ・ファイル名が有効な OpenVMS ファイル名ではないことを示しています。
/LOG 修飾子を指定した COPY コマンドが入力された場合,システムはファイルを 1 つコピーし終えるたびに現在の SYS$OUTPUT デバイスにメッセージを送ります。
ファイルのコピーが正常に行われたか確認したい場合は,
DIRECTORY コマンドを使用してください。
例
-
$ CREATE/DIRECTORY DMA3:[PUBS]
$ DEFINE P DMA3:[PUBS]
$ COPY *.* P
$ COPY [PRIMER]*.* P
$ COPY [COMMANDS]*.* P
|
この例では,CREATE/DIRECTORY コマンドで,DMA3: に [PUBS] という名前のディスク・ディレクトリを作成し,DEFINE コマンドで,DMA3:[PUBS] を論理名 P と定義している。
そして,COPY コマンドを使い,現在の省略時のディレクトリと [PRIMER],[COMMANDS] ディレクトリに含まれるすべてのファイルの最新バージョンを,新たに作成したディレクトリにコピーしている。
-
$ COPY *.* DMA5:[PRIVATE]
|
この例では,ディスク・デバイス DMA5: がプロセスに割り当て済みで,
ディスク・ボリュームが初期化されていること,さらには,そのボリュームが DMA:5 にマウント済みであることが前提になる。
また,PRIVATE というディレクトリをあらかじめボリュームに作成しておく必要がある。
-
$ COPY/LOG MTA1:"%&*?!SKI! """ SEASON.DAT
%COPY-S-COPIED, MTA1:[]"%&*?!SKI! """.;1
copied to WRKD:[MANUAL]SEASON.DAT;1 (120 records)
|
この例では COPY/LOG コマンドで,%&*?!SKI!#" (# はスペース) というテープ・ファイルを省略時のディスクの省略時のディレクトリ WRKD:[MANUAL] の SEASON.DAT というファイルにコピーしている。
ディスクにファイルをコピーする場合は,新しいファイル名を指定しなければならない。
OpenVMS は,ファイル指定で指定されなかった空き部分を省略時の値で埋める。
/LOG 修飾子が指定されているため,システムは,テープ・ボリューム MTA1: のファイルを指定どおりにコピーしたことを確認するメッセージを返す。
またこのメッセージには,コピーしたレコード数も示される。
-
$ COPY/LOG MTA0:*.* *
%COPY-S-COPIED, MTA0:[]TASTETEST.DAT;1
copied to WRKD:[FOOD]TASTETEST.DAT;1 (249 records)
%COPY-S-COPIED, MTA0:[]ALLAT;1 copied to WRKD:[FOOD]ALALL;1 (48 records)
%COPY-S-NEWFILES, 2 files created
|
この例では,ファイル名とファイル・タイプ・フィールドにワイルドカード文字を使用している。
テープ・ボリュームからディスク・ボリュームにコピーされたファイルは 2 つだけである。
-
$ COPY/LOG MTA1:*.* [EX]
%COPY-S-COPIED, MTA1:[].DAT;1 copied to WRKD:[EX]TEST.DAT21 records
%COPY-E-OPENOUT, error opening WRKD:[EX]"%&*()!SKI! """.;1 as output
-RMS-F-FNM, error in file name
%COPY-W-NOTCOPIED, MTA1:[]"%&*()!SKI! """.;1 not copied
%COPY-E-OPENOUT, error opening WRKD:[EX]"SANFRAN%%%""".;1 as output
-RMS-F-FNM, error in file name
%COPY-W-NOTCOPIED, MTA1:[]"SANFRAN%%%""".;1 not copied
%COPY-S-COPIED, MTA1:[]OPENVMS_LONG$FILE_NAME.LONG_EXT;1
copied to WRKD$:[EX]OPENVMS_LONG$FILE_NAME.LONG_EXT;1 (80 records)
%COPY-S-COPIED, MTA1:[]C6.JOU;1 copied to WRKD:[EX]C6.JOU;1 (4 records)
%COPY-S-NEWFILES, 2 files created
|
この COPY/LOG コマンドは,テープ・ボリューム MTA1: にマウントされているボリュームのすべてのファイルを現在の省略時のディスクの省略時のディレクトリ WRKD:[EX] にコピーするよう指示している。
しかしながら,実際にはテープ・ファイル名のファイルはコピーされず,
代わりに,エラー・メッセージが返されている。
-
$ COPY/FTP sys$login:login.com -
_$ system.bldg.corp.com"username password"::sys$login:login.tmp
|
この例では,SYS$LOGIN:LOGIN.COM という OpenVMS RMS ファイル を,
TCP/IP 接続を介して,SYS$LOGIN:LOGIN.TMP というリモート・ファイルに転送し,同時にリモート・システムにおけるユーザ名とパスワードを指定している。
10.10.2 テープ・ボリュームへのファイルのコピー | |
COPY コマンドは,ディスク・ボリュームからテープ・ボリュームへのファイルのコピーにも使用することができます。
手順は,ディスク・ボリューム間のファイルのコピーとほぼ同じです。
しかし,テープは順次アクセスデバイスであり,ディレクトリはありません。
ディスク・ファイルをテープ・ボリュームにコピーするためには,
テープ・デバイスの構成,すなわち,テープ・デバイスの初期化およびマウントを行っておく必要があります。
テープ・ファイルの属性については,
10.9 項 「テープ・ファイルへのアクセス」 を参照してください。
磁気テープは,Files-11 形式のファイル名に完全対応しています。
したがって,たとえば次のファイル名のディスク・ファイルを,
ファイル名を変更することなく磁気テープ・ボリュームにコピーすることができます。
THIS_IS$AN_OPENVMSLONG_FILE.LONG_TYPE
|
OpenVMS システムでは,ストリーム・レコードと固定長制御部付可変長 (VFC) レコードに対応していますが,標準ラベルのボリューム上では,そうしたレコードを可変長形式でコード化します。
OpenVMS 以外のシステムでは,ストリーム・レコードと VFC レコードを可変長レコードと区別せず,両方を可変長レコードと見なします。
したがって,OpenVMS 以外のシステムとの情報の相互交換に使用するボリュームにストリーム・レコードや VFC レコードは作成しないでください。
次に,DCL コマンドを使用して,
ディスク・ボリュームの省略時のディレクトリに含まれているファイルを,
標準ラベルの磁気テープ・ボリュームにコピーする手順を紹介します。
ここでは,ディスク・ファイルをコピーする前に,
磁気テープを割り当て初期化する例も取り上げています。
作業方法
ディスク・ボリュームの省略時のディレクトリに含まれているファイルを標準ラベルの磁気テープ・ボリュームにコピーする手順は次のとおりです。
-
最初に次のコマンドを入力して,磁気テープ・デバイスを割り当てる。
$ ALLOCATE MT: TAPE_DEVICE
%DCL-I-ALLOC _MARS$MTA2: allocated
|
この ALLOCATE コマンドでは,名前が MT から始まるテープ・デバイスの割り当てを要求している。
この例では,論理名 TAPE_DEVICE は MARS$MTA2: デバイスを意味する。
システム応答は,コントローラ A のユニット 2 が使用可能であったため,それを割り当てたことを示している。
これで,物理的にテープ・デバイスにテープをセットすることができる。
テープに書き込みリングが付いていることを確認する。
付いていない場合は,テープに書き込みを行えない。
-
次のようなコマンドを入力して,テープを初期化する。
$ INITIALIZE TAPE_DEVICE: GMB001/PROTECTION=(GROUP:R,WORLD)
|
この INITIALIZE コマンドは,ボリュームに対して論理名 (この場合,
MTA2: を参照する TAPE_DEVICE) と,テープ・ボリューム (この場合,GMB001) を指定している。
ラベルは 6 文字に制限されている。
/PROTECTION 修飾子に指定された保護コードは,グループを読み込みアクセス権に制限し,一般ユーザのアクセスは許可しない。
-
次に示すように,MOUNT コマンドを入力してボリュームをマウントし,ファイルを書き込む。
$ MOUNT TAPE_DEVICE: GMB001
%MOUNT-I-MOUNTED, GMB001 mounted on _MTA2:
$ COPY *.* TAPE_DEVICE:
|
MOUNT コマンドには,テープ・デバイスにセットされているテープ・ボリュームのデバイス名とボリューム・ラベルを指定している。
COPY コマンドは,省略時のディレクトリに含まれるすべてのファイルの最新バージョンをテープにコピーする。
省略時の設定では,
出力ファイルのファイル名と,ファイル・タイプ,バージョン番号は,
入力ファイルのものと同じである。
/LOG 修飾子を指定した COPY コマンドが入力されると,システムはファイルのコピーを終えるたびに,現在の SYS$OUTPUT デバイスにメッセージを出力する。
-
次の DIRECTORY コマンドを使用して,ファイルのコピーが正常に行われたか確認することもできる。
このコマンドが入力されると,システムは,
テープにコピーされたすべてのファイルのファイル名とファイル・タイプを表示する。
-
磁気テープに対する必要な作業を終えたら,
次のコマンドを入力して,ディスマウントと割り当て解除を行う。
$ DISMOUNT TAPE_DEVICE:
$ DEALLOCATE TAPE_DEVICE:
|
ディスマウントと割り当て解除が明示的に行われなかった場合は,
ログアウト時にシステムが自動的にそれらの処理を行う。
次に,ディスク・ファイルをテープ・ボリュームにコピーする例をいくつか紹介します。
例
-
この例では,MTA2: がプロセスに割り当て済みであり,かつ,そのデバイスにセットされているテープ・ボリュームの初期化とマウントが済んでいることが前提になる。
COPY コマンドは,ファイルを MTA2: のテープ・ボリュームにコピーする。
テープ・ボリュームにコピーされるファイルは,省略時のディスク・ディレクトリに含まれるすべてのファイルの最新バージョンである。
省略時の設定では,出力ファイルのファイル名と,ファイル・タイプ,
バージョン番号は,入力ファイルのものと同じである。
-
$ COPY/LOG FORTAP.DAT MTA1:"%&*?!SKI! "" "
%COPY-S-COPIED, WRKD:[MANUAL]FORTAP.DAT;1
copied to MTA1:[]"%&*?!SKI! """.;0 (120 records)
|
ディスクからテープへのコピーを行う,この COPY コマンドでは,
出力ファイル指定にテープ・ファイル名を指定している。
テープ名では末尾スペースが意味を持たないので,
ファイル名 %&*?!SKI!##"# (# はスペース) の末尾のスペースは含まれない。
-
$ COPY/LOG OPENVMS_LONG$FILE_NAME.LONG_EXT MTA1:
%COPY-S-COPIED, WRKD:[MANUAL]OPENVMS_LONG$FILE_NAME_EXT;1
copied to MTA1:OPENVMS_LONG$FILE_NAME.LONG_EXT;1 (80 records)
|
この例では,ファイル名も長く,ファイル・タイプも長いディスク・ファイルを,
ファイル名もファイル・タイプも変更せずに,
MTA1: のテープ・ボリュームにコピーしている。
-
$ COPY/LOG %%.JOU;* MTA1:*.*
%COPY-S-COPIED, WRKD:[MANUAL]C6.JOU;1 copied to MTA1:[]C6.JOU;1 (4 records)
|
この例では,ファイル名が 2 文字の長さで,
ファイル・タイプが .JOU のすべてのファイルを,
ファイル名もファイル・タイプも変更せずに,
MTA1: のテープ・ボリュームにコピーしている。
バージョン番号が変更されることはない。
10.10.3 テープの終わり位置でのコピーの継続 | |
テープへの,またはテープからのコピー中にテープの終端に達した場合,
システムは処理を中断して,ボリューム・セットの次のテープをマウントするよう要求します。
このとき,ターミナルには,
オペレータ通信マネージャ (OPCOM) からの次のようなメッセージが表示されます。
%%%%%%%%%%% OPCOM, 14-MAY-2000 15:23:31.78 %%%%%%%%%%%
request 3, from user PLAW
MOUNT new relative volume 2 (DW0QT2) on MTA1:
|
OPCOM メッセージについては,『OpenVMS システム管理者マニュアル (下巻)』で詳しく説明しています。
自動ボリューム切り換えが無効であるか,テープ・ファイル・システムがボリュームのマウントを行えない場合は,ボリューム・セットの継続ボリュームをマウントしなければならないことがあります。
継続ボリュームのマウントについては,
9.9.2 項 「テープ・ボリューム・セットの継続ボリュームのマウント」 を参照してください。
10.10.4 EXCHANGE ユーティリティによるファイルのコピー | |
EXCHANGE ユーティリティは,
異なる構造のボリューム間でファイルをコピーするとき,
必要に応じてファイルの形式を変換するユーティリティです。
このユーティリティは,OpenVMS デバイスのすべての Files-11 や RT-11 ディスク・ボリュームばかりでなく,
9 トラック・テープ・デバイスの DOS-11 や RT-11 形式のボリュームも認識します。
EXCHANGE ユーティリティの使用法と,EXCHANGE ユーティリティのすべてのコマンド,修飾子,パラメータについての詳細は,
『OpenVMS Exchange Utility Manual』 やオンライン・ヘルプを参照してください。
10.10.5 EXCHANGE/NETWORK コマンドの使用 | |
DCL の EXCHANGE/NETWORK コマンドを使用すると,
OpenVMS のファイル編成をサポートしていないオペレーティング・システムとファイルの転送を行うことができます。
この転送は,OpenVMS のノードおよび OpenVMS 以外のオペレーティング・システムのノードを接続する DECnet 通信リンク上で行われます。
EXCHANGE/NETWORK コマンドを使用すると,
次の操作を実行できます。
-
OpenVMS のノードと OpenVMS 以外のノードの間でファイルを転送する。
-
-
OpenVMS 以外の 2 つのノードが,
EXCHANGE/NETWORK コマンドを実行する OpenVMS ノードを持つ DECnet に接続されている場合,
これらの 2 つのノードの間でファイルを転送する。
EXCHANGE/NETWORK コマンドについての詳細は,
オンライン・ヘルプまたは『OpenVMS DCL ディクショナリ』を参照してください。
作業方法
EXCHANGE/NETWORK コマンドは,次の形式で実行します。
EXCHANGE/NETWORK 入力ファイル指定 [,...] 出力ファイル指定
例
$ EXCHANGE/NETWORK MYSYS_FILE.DAT FOO::FOREIGN_SYS.DAT
|
この例では,現行の省略時のデバイスおよびディレクトリにある MYSYS_FILE.DAT ファイルを OpenVMS 以外のノード FOO の FOREIGN_SYS.DAT ファイルに転送しています。
省略時の設定では,ブロックまたはレコード入出力の転送方法を自動的に選択します。
CD-ROM は,ファイルの配布やバックアップのための手段の 1 つです。
CD-ROM を作成するためには,CD 作成用 (CD-R または CD-RW) ドライブとブランク CD-R ディスクが必要です。
CD-R および CD-RW ドライブは,
レーザー光によってデータをブランク CD-R ディスクに書き込み (焼き) ます。
これは,一般に売っているオーディオ・コンパクト・ディスクが,
工場でグラス・マスタからプレスされるのとは異なります。
CD-R ディスクは,“ライト・ワンス” です。
つまり,データを書き込めるのは 1 度だけで,再書き込みはできません。
AlphaServer DS25 システム上の OpenVMS Alpha バージョン 7.3-1 では,
CD-R および CD-RW ドライブに対する読み取りとライト・ワンスのサポートが導入されました。
OpenVMS は,認定済みの CD-R と CD-RW ドライブのみをサポートします。
Alpha システムおよび I64 システムとそれらがサポートするドライブについての詳細は,
次の Web サイトの適切なページを参照してください。
http://h18002.www1.hp.com/hps/buy.html#configure
この書き込みプロセスによって作成されるのは,Files-11 形式の CD-ROM です。
OpenVMS を稼働するコンピュータでサポートされる CD-ROM リーダーであればどれでも,作成した CD-ROM を読み取ることができます。
書き込みプロセスは,ISO 9660 形式の CD-ROM は作成しません。
詳細は,『Guide to OpenVMS File Applications』を参照してください。
ハード・ドライブから CD-R ディスクへのファイル転送に,COPY コマンドは使用できません。
これには,2 段階の手順に従い,
CDRECORD.COM[19]
という特別なプログラムを使用する必要があります。
最初のステップでは,ハード・ドライブ上で,
論理ディスクとコンテナ・ファイルを作成します。
CD-ROM 上に作成するとおりにディレクトリ構造,ボリューム情報,およびファイルを編成します。
2 番目のステップでは,CDRECORD.COM を実行してコンテナ・ファイルの内容をブランク CD-R ディスクに転送します。
CDRECORD.COM には,次の操作のためのコマンドが用意されています。
CDRECORD.COM についてのオンライン・ヘルプを表示するには,
次のように DCL プロンプト ($) で HELP コマンドを入力します。
$ @SYS$MANAGER:CDRECORD H
|
10.11.1 準備 | |
CD-ROM を作成する用意ができたら,次の準備を行います。
-
OpenVMS Alpha バージョン 7.3-1 以降および I64 で動作するシステムに接続された CD-R または CD-RW ドライブ。
-
-
CD-R ドライブのデバイス名 (DQnn)。
デバイス名がわからない場合は,SHOW DEVICE DQ コマンドを使用して確認する。
通常,CD-R ドライブは,DQA0,DQA1,DQB0,または DQB1 である。
-
DIAG,PHY_IO,および SYSPRV 特権。
高い優先順位で実行する場合は,ALTPRI 特権も必要になる。
持っているデバイス名が,対象のドライブの名前であることを確認するには,
次のように,INQUIRE コマンドの後に,デバイス名を入力します。
$ @SYS$MANAGER:CDRECORD INQUIRE DQA1:
|
システムによって,DQA1 (または入力した名前) が CD-R または CD-RW
ドライブであることが確認されました。
また,ドライブが読み書きする速度も表示されます。
10.11.2 論理ディスクとコンテナ・ファイルのセットアップ | |
ハード・ドライブの上に,適切な構造とデータをセットアップした後,
CDRECORD.COM を使用してすべてをブランク CD-R ディスクに転送します。
これには,まずマウント,ディスマウントでき,
一般に実際のディスクとして扱えるハード・ドライブ上に論理ディスクを作成します。
また,CDRECORD.COM は,論理ディスク上の単一のエンティティとしてファイルを扱う必要があるので,コンテナ・ファイルも作成します。
最高の性能を実現するために,論理ディスクとコンテナ・ファイルを作成するハード・ドライブのクリーンアップとデフラグメントを行います。
詳細については,『OpenVMS システム管理 ユーティリティ・リファレンス・マニュアル(上巻)』の「BACKUP/IMAGE」を参照してください。
次の形式で SETUP コマンドを使用して,論理ディスクとコンテナ・ファイルを作成します。
@SYS$MANAGER:CDRECORD SETUP filename LDAn: label nnnn
|
ここで,
filename は,コンテナ・ファイルのファイル名です。
通常のファイル命名規則に従い,ファイル拡張子を付けます。
LDAn: は,論理ディスクの名前で,LDA1 ~ LDA9999 の値をとります。
label は,論理ディスクと書き込み先の CD-ROM に対して指定するボリューム・ラベルです。
ボリューム・ラベルの割り当てに関する通常の規則に従います。
nnnn は,コンテナ・ファイルに割り当てる 512 バイト・ブロックの数です。
この数には 4 の倍数を指定します。
省略時の値は,1250000 (640 MB) です。
コンテナ・ファイルは,書き込み先の CD-R ディスクの空き領域を超えてはなりません。
また,ハード・ドライブに,コンテナ・ファイルを格納するのに十分な空き領域があることを確認します。
次に例を示します。
$ @SYS$MANAGER:CDRECORD SETUP TESTFILE.DSK LDA1: FRED 1250000
|
TESTFILE.DSK は,コンテナ・ファイルの名前と拡張子です。
LDA1: は,論理ディスクのデバイス名です。
FRED は,論理ディスクと書き込み先の CD-ROM のラベル名です。
1250000 は,コンテナ・ファイル用に,ハード・ドライブに割り当てる領域 (512 バイト単位) です。
論理ディスクとコンテナ・ファイルをハード・ドライブ上に作成した後は,
論理ディスクにディレクトリとファイルを格納することができます。
10.11.3 論理ディスクへのデータの格納 | |
論理ディスクをマウントし,CREATE/DIR や COPY などの OpenVMS コマンドまたはレコード管理サービス (RMS) を使用して論理ディスク上にファイルを作成します。
論理ディスクは,何度でもディスマウントと再マウントを繰り返すことができ,
また,必要なだけ内容を更新することができます。
さらに,UIC ベースのセキュリティとアクセス制御リスト (ACL) をファイルに適用することも可能です。
論理ファイルの内容が完成したら,それを CD-R ディスクに書き込みます。
10.11.4 CD-R ディスクへの書き込み | |
CD-R ディスクに書き込む準備ができたら,次の手順を実行します。
-
書き込み操作が中断されないよう,他のアプリケーションを終了する。
中断が起こると,CD-R ディスクに読み取れない領域が生じる可能性がある。
書き込み操作によって,読み取り可能な CD-ROM を作成する必要がある。
未終了の書き込み操作で使用した領域を再利用することはできない。
-
次の形式で WRITE コマンドを入力する。
@SYS$MANAGER:CDRECORD WRITE filename LDAn: DAQnn: laser speed priority ここで,
filename は,コンテナ・ファイルのファイル名と拡張子である。
LDAn: は,論理ディスクの名前で,LDA1 ~ LDA9999 の値をとる。
DQnn: は,CD-R または CD-RW ドライブのデバイス名である。
laser は,レーザー光のオンまたはオフを指定する。
値は 0 (オン) または 1 (オフ) で,省略時の値は 0 である。
実際に CD-R ディスクに書き込む前にプロセスをテストする場合は,
このパラメータを 1 (オン) に設定する。
speed は,書き込み操作の記録速度で,0 ~ 99 の値をとる。
省略時の値は 0 である。
CDRECORD.COM は,ドライブ速度とメディアの速度レートをもとに,
最大記録速度を自動的に判定する。
speed を 0 (省略時の値) に設定すると,CDRECORD.COM は,自動的に算出した最大記録速度を使用する。
この記録速度は,1 ~ 99 の数値を入力することによって上書きできる。
priority では,
現在のプロセスの基本優先順位を上げることができる。
優先順位を上げると,バッファ・アンダーランのために,
書き込み操作で障害が発生するのを回避することができる。
優先順位は 1 ~ 63 の間で指定する。
priority を指定しない場合は,元の基本優先順位がそのまま使用される。
基本優先順位を上げた場合,書き込み操作終了後に,
優先順位を元のレベルにリセットするかどうかを尋ねるメッセージが表示される。
「no」と答えると,上げた優先順位がそのまま使用される。
ドライブが特定の速度で記録する必要があるかどうかを確認する必要があります。
出力を安定供給する能力がコンピュータに不足している場合,ドライブによっては,
エラーを抑えるために,速度を落とす必要があります。
コンピュータがデータを必要な速度で供給できないために,
書き込み操作が一時停止するという事態は望ましくありません。
このため,間欠的な記録動作に対応するドライブもあります (“burn-proof” ドライブ)。
また priority パラメータを上げることによって,
問題を軽減するという方法もあります。
次に例を示します。
$ @SYS$MANAGER:CDRECORD WRITE TESTFILE.DSK LDA1: DQA0: 0 12
|
TESTFILE.DSK は,コンテナ・ファイルの名前と拡張子です。
LDA1: は,論理ディスクのデバイス名です。
DQA0: は,CD-R ドライブのデバイス名です。
0 は,レーザー光を有効にします。
12 は,記録速度です。
10.11.5 書き込み操作のチェック | |
CD 媒体の作成後,CD-ROM に書き込まれたデータを読み出すことができることと,そのデータがオリジナルのデータと一致していることをチェックできます。
データをチェックするには,次の形式で VERIFY コマンドを入力します。 @SYS$MANAGER:CDRECORD VERIFY filename LDA1: label DQA0: 各項目の意味は,次のとおりです。 filename は,コンテナ・ファイルの名前と拡張子です。 LDA1: は,論理ディスクのデバイス名です。 label は,論理ディスク (および CD-R 媒体) のボリューム・ラベルです。 DQA0: は,OpenVMS CD のデバイス名です。
10.11.6 コンテナ・ファイルの再利用 | |
論理ディスクの内容を 1 つ以上の CD-ROM に書き込み終わった時点で,
コンテナ・ファイルを削除することもできますが,
将来 CD-ROM を再度作成する予定があれば,それを再利用することもできます。
コンテナ・ファイルを再利用すると,次のような利点があります。
-
ハード・ドライブ上に,すでに領域が割り当てられている。
特に容量が問題となる場合は,これを変更しない方がよい。
-
コンテナ・ファイルを再利用するには,
次の形式で REUSE コマンドを入力します。
@SYS$MANAGER:CDRECORD REUSE filename LDAn: label
|
ここで,
filename は,コンテナ・ファイルの名前と拡張子です。
LDAn: は,論理ディスクの名前です。
label は,論理ディスクのボリューム・ラベルです。
次に例を示します。
$ @SYS$MANAGER:CDRECORD REUSE TESTFILE.DSK LDA1: FRED
|
TESTFILE.DSK は,コンテナ・ファイルの名前です。
LDA1: は,論理ディスクのデバイス名です。
FRED は,論理ディスクのボリューム・ラベルです。
OpenVMS コマンドを使用して,ディレクトリとファイルを作成します。
内容が完成したら,CDRECORD WRITE コマンドで CD-R ディスクに書き込みます。
10.11.7 CDRECORD コマンドの要約 | |
CDRECORD.COM コマンド行の形式は次のとおりです。
@ SYS$MANAGER:CDRECORD command [parameter1|parameter2|...]
CDRECORD には,次のコマンドがあります。
-
-
INQUIRE
CD-R または CD-RW ドライブに関する情報を表示する。
-
REUSE
既存の論理ディスクとコンテナ・ファイルにデータを再格納する。
-
SETUP
ハード・ドライブ上に論理ディスクとコンテナ・ファイルを設定する。
-
VERIFY WRITE 操作の結果をチェックする。 -
WRITE
論理ディスクの内容を CD-R ディスクに記録する。
表 10-12 「CDRECORD.COM のコマンドとパラメータ」 に,各コマンドのパラメータを要約します。 表 10-12 CDRECORD.COM のコマンドとパラメータ HELP コマンド | [OVERVIEW|INQUIRE|SETUP|REUSE|VERIFY|WRITE] |
---|
OVERVIEW | CDRECORD.COM を使用して CD-ROM を作成する方法についてのオンライン・ヘルプを表示する。 |
INQUIRE | INQUIRE コマンドについてのオンライン・ヘルプを表示する。 |
SETUP | SETUP コマンドについてのオンライン・ヘルプを表示する。 |
REUSE | REUSE コマンドについてのオンライン・ヘルプを表示する。 |
VERIFY | VERIFY コマンドについてのオンライン・ヘルプを表示する。 |
WRITE | WRITE コマンドについてのオンライン・ヘルプを表示する。 |
INQUIRE | DQnn: |
---|
DQnn: | CD-R または CD-RW ドライブのデバイス名。
最初の 2 文字は,DQ とする。
3 番目の文字は,A ~ Z の英字で,4 番目の文字には,0 または 1 を使用する。
省略時の値は DQA0。 |
REUSE | filename LDAn: label |
---|
filename | コンテナ・ファイルのファイル名と拡張子。 |
LDAn: | 論理ディスクの名前。
LDA1 ~ LDA9999 の値をとる。
省略時の値は LDA1。 |
label | 論理ディスクのボリューム・ラベル。 |
VERIFY | filename LDAn: label DQnn: |
filename | コンテナ・ファイルのファイル名と拡張子。 |
LDAn: | 論理ディスクの名前。
LDA1 ~ LDA9999 の値をとる。
省略時の値は LDA1。 |
label | 論理ディスクと CD-ROM のボリューム・ラベル。
ボリューム・ラベルの割り当ての通常のルールに従う。 |
DQnn: | CD-R ドライブのデバイス名。
最初の 2 文字は DQ とする。
3 番目の文字は,A ~ Z の任意の英字で,4 番目の文字には 0 または 1 を使用する。
省略時の値は DQA0。 |
SETUP | filename LDAn: label nnnn |
---|
filename | コンテナ・ファイルのファイル名。
通常のファイル命名規則に従い,ファイル拡張子を付ける。 |
LDAn: | 論理ディスクの名前で,LDA1 ~ LDA9999 の値をとる。
省略時の値は LDA1。 |
label | 論理ディスクと CD-ROM のボリューム・ラベル。
ボリュームラベルの割り当てに関する通常の規則に従う。 |
nnnn | コンテナ・ファイルに割り当てる 512 バイト・ブロックの数。
この数には 4 の倍数を指定する。
省略時の値は,1250000 (640 MB)。 |
WRITE | filename LDAn: DQnn: laser speed priority |
---|
filename | コンテナ・ファイルのファイル名と拡張子。 |
LDAn: | 論理ディスクの名前で,LDA1 ~ LDA9999 の値をとる。
省略時の値は LDA1。 |
DQnn: | CD-R または CD-RW ドライブのデバイス名。
最初の 2 文字は,DQ とする。
3 番目の文字は,A ~ Z の英字で,4 番目の文字には,0 または 1 を使用する。
省略時の値は DQA0。 |
laser | レーザー光のオンまたはオフを指定する。
値は 0 (オン) または 1 (オフ) で,省略時の値は 0 である。 |
speed | 書き込み操作の記録速度。
0 ~ 99 の値をとる。
省略時の値は 0 で,CDRECORD.COM によって算出された最大記録速度を使用する。
1 ~ 99 の値を手動で入力すると,記録速度がその値に設定できる。 |
priority | 現在のプロセスの基本優先順位を変更する。
値は 1 ~ 63 である。
値を指定しない場合は,元の基本優先順位がそのまま使用される。
値を変更した場合,優先順位を元のレベルにリセットするかどうかを尋ねるメッセージが表示される。
「no」と答えると,上げた優先順位がそのまま使用される。
ALTPRI 特権が必要である。 |
CD-ROM を作成するには,次の手順に従います。 -
次のように INQUIRE コマンドを使用して,CD-R ドライブの名前を確認する。
$ @SYS$MANAGER:CDRECORD INQUIRE DQA0:
|
-
次のように SETUP コマンドを利用して,ハード・ドライブ上に論理ディスクとコンテナ・ファイルを作成する。
$ @SYS$MANAGER:CDRECORD SETUP TESTFILE.DSK LDA1: FRED 1250000
|
-
CREATE/DIR や COPY などの OpenVMS コマンドを使用して,
論理ディスクにデータを格納する。
-
次のように,WRITE コマンドを使用して,論理ディスクの内容を CD-R ディスクに書き込む。
$ @SYS$MANAGER:CDRECORD WRITE TESTFILE.DSK LDA1: DQA0:
|
リンク,すなわちディレクトリ・エントリとは,
ファイル名とバージョン番号を特定のファイルに関連付けるディレクトリ内のオブジェクトです。
ボリューム上のすべてのリンクは,同じボリュームにあるファイルを表している必要があります。
OpenVMS Alpha バージョン 7.3 でハード・リンクのサポートが導入され,現在,OpenVMS では,3 種類のリンクがサポートされています。
OpenVMS Alpha および I64 は,0 以上のリンクを持つファイルをサポートします。
ファイルへの最初のリンクは,“1 次リンク”
と呼ばれ,ディレクトリ ID とリンクの名前がファイル・ヘッダに格納されている点が,他のリンクと異なります。
その他のリンクは,ファイルのあるボリュームで,ハード・リンクが有効か無効かによって,エイリアスかハード・リンクかになります。
OpenVMS Alpha システムおよび I64 システムでは,特定のボリュームを選択して,ハード・リンクを有効にすることができます。
ハード・リンクが有効でないボリュームでは,1 次リンク以外のリンクはエイリアスになります。
ハード・リンク機能を有効にすると,そのボリュームではファイルの VMS エイリアスが作成できなくなります。
ボリュームは,ハード・リンクとエイリアスのどちらでもサポートできますが,
両方をサポートすることはできません。
SET FILE/ENTER コマンドは,ファイルのハード・リンクを作成する場合にも,
エイリアスを作成する場合にも使用します。
ハード・リンクとエイリアスの決定的な違いは,
削除した場合の結果にあります。
通常,ファイルの削除と呼ばれている操作は,
ファイルへのリンクの削除という方が正確です。
ファイルへのリンクが削除されると,関連付けられたファイルも削除される場合もあります。
ファイルが削除されるかどうかは,
ファイルがあるボリュームでハード・リンクが有効になっているか,
またそのファイルへのハード・リンクが作成されているかによります。
ハード・リンクを有効にすると,ファイルへのリンクがなくなった時点でファイルが実際に削除されます。
ハード・リンクを有効にせず,ファイルのエイリアスを作成しなかった場合,
基本的にそのファイルへのリンクとしては,1 次リンクだけが存在します。
そのファイルへのエイリアスを作成し,そのエイリアスを削除した場合,
そのファイルへの1 次リンクが削除されていないので,ファイルはまだ存在します。
エイリアスとは,このリンクのディレクトリの別の呼び方です。
1 次リンクを削除すると,ファイルが削除され,エイリアスのエントリがそのまま残ります。
エイリアス・リンクを通じて削除済みファイルにアクセスしようとすると,
“no such file” というエラーが発生します。
1 次リンクとハード・リンクを使用した場合,多くのリンクが設定可能です。
そのファイルへの1 次リンクとすべてのハード・リンクを削除したとき,
ファイルが実際に削除されます。
これに関連して考慮しなければならないのがディスク・クォータです。
OpenVMS では,各ファイルのサイズは,ファイル所有者のディスク・クォータが利用されます。
他のユーザがファイルにハード・リンクを作成した場合,
それらのユーザのディスク・クォータは使用されません。
所有者は,アクセスできるディレクトリのファイルへのリンクであれば,
どのリンクでも削除できますが,他のユーザのディレクトリにあるハード・リンクによって,ファイルが保持され,削除後も所有者のクォータに加算されたままになることがあります。
既存のボリュームでハード・リンクのサポートを有効にするときは,
ANALYZE/DISK/REPAIR コマンドを実行して,ハード・リンクが正しく操作されるようにします。
OpenVMS は,ファイルだけでなくディレクトリへのハード・リンクまたはエイリアスをサポートします。
ほとんどの UNIX システムは,リンクを通常のファイル宛てに限定しています。
10.12.1 ハード・リンクの例 (INIT および SET VOLUME) | |
ハード・リンクのサポートを有効化するには,INITIALIZE コマンドまたはSET VOLUME を使用します。
ハード・リンクを有効にして ODS-5 ディスクを初期化するには,
次のコマンドを実行します。
$ INIT/VOLUME_CHARACTERISTICS=HARDLINKS
|
マウントされた Files-11 ボリューム上でハード・リンクを有効化するには,
次のコマンドを実行します。
$ SET VOLUME/VOLUME_CHARACTERISTICS=HARDLINKS
|
ハード・リンクのサポートをすでに有効化したボリュームがあり,それを変更する場合,SET VOLUME コマンドを使用してそのボリュームを無効化することができます。
$ SET VOLUME SYS$DISK/VOLUME_CHARACTERISTICS=NOHARDLINKS
|
次のコマンドを実行すると,ハード・リンクのサポートが無効になります。
ただし,有効なハード・リンクを無効なハード・リンクに変更すると,
ファイルが不適切な動作をすることがあります。
たとえば,上の例で示したハード・リンクサポートを無効にした後,ファイル FOO: に対するエイリアスを作成する場合,次のようになります。
$ CREATE FOO.A
$ SET FILE FOO.A/ENTER=FOO.B
|
これで FOO.A に対するエイリアスが FOO.B という名前で作成されました。
ここで元のファイルを削除するとどうなるでしょう。
これで FOO.A が削除されました。
このボリューム上で directory コマンドを使用して FOO.B を検索すると,そのファイルへの1 次リンクがもはや存在しないので,“File not found” というエラーが表示されます。
次に例を示します。
この問題を解決するために,
またはファイルへのハード・リンクの数を確認するために,
次のコマンドを実行します。
ANALYZE/DISK/REPAIR は,各ファイルを参照するディレクトリ・エントリの数を確認し,それが正しくない場合は,リンク・カウントを設定します。
ディスク上で,ハード・リンクのサポートが以前有効だったファイルに対してエイリアスを作成する場合は,その前に必ず ANALYZE/DISK/REPAIR コマンドを使用して,リンク・カウントを正しく設定します。
現在ハード・リンクが有効か無効か不明な場合は,
SHOW DEVICE/FULL コマンドを実行します。
リンクカウントを報告するには,DIRECTORY/FULL と DUMP/HEADER を使用します。
リンクの数を確認するには,次のコマンドを実行します。
|