自動化された磁気テープ装置用の磁気テープ・コーディネーター構成命令を定義します。
構文
CFG_device_name ファイルには、磁気テープ・スタッカー、ジュークボックスなど、自動バックアップ装置を使用するための磁気テープ・コーディネーターを構成する命令が記述されています。この命令によって、磁気テープ・コーディネーターはデータをローカル・ディスク装置上のバックアップ・データ・ファイル にダンプまたは復元することができ、バックアップ・プロセスの他の過程も自動化することができます。
構成ファイルは、磁気テープ装置またはバックアップ・データ・ファイルごとに異なります。ファイル作成はオプションです。特定のタイプの磁気テープ装置に関する命令がファイル内にない場合は、ファイル作成は不要になります。 ASCII 形式のファイルが存在する場合は、このファイルは磁気テープ・コーディネーター・マシンの /usr/afs/backup ディレクトリーにあります。
CFG_device_name ファイルは、 /usr/afs/backup/tapeconfig ファイルと置き換わりません。このファイルのコピーは、各磁気テ ープ・コーディネーター・マシンに存在していなければなりません。
磁気テープ・コーディネーターで構成ファイルを検索できるようにするには、ファイル名の可変部分 device_name を次のように構成してください。
CFG_device_name ファイルには、次の 1 つ以上の命令が 1 つの命令につき 1 行で記述されています。これらはすべてオプションで、任意の順序で表示されます。次のリストに、各命令の詳しい説明を示します。
ASK 命令
ASK 命令は、引き数としてブール値を必要とします。形式は次のとおりです。
ASK {YES | NO}
値が YES の場合、磁気テープ・コーディネーターは次のリストにあるエラーに対する応答を要求するために、ウィンドウにプロンプトを表示します。 ASK 命令が CFG_device_name ファイルにない場合、これがデフォルトの振る舞いになります。
値が NO の場合、磁気テープ・コーディネーターはエラー検出時のプロンプトを出さずに、次のリストにあるデフォルトの自動応答を使用します。磁気テープ・コーディネーターは、エラーのログを TE_device_name ファイルに記録します。 MOUNT 命令が使用されていない限り、テープを挿入を促すプロンプトが出ますが、プロンプトを抑制すると、無人で磁気テープ・コーディネーターを実行できるようになります。
この命令で制御されるエラーは、次のとおりです。
AUTOQUERY 命令
AUTOQUERY 命令は、引き数として次の形式のブール値を必要とします。
AUTOQUERY {YES | NO}
値が YES の場合、操作で最初の磁気テープが必要になると、磁気テープ ・コーディネーターは、構成ファイルの MOUNT 命令を検査します。前述のように、磁気テープ・コーディネーターは、プロンプトを出して磁気テープを要求するか、指定されたルーチンを起動して、磁気テープをマウントします。構成ファイルに AUTOQUERY 命令がない場合には、これがデフォルトの振る舞いになります。
値が NO の場合、磁気テープ・コーディネーターは、操作の最初に必要な磁気テープが装置にあるとみなして、処理を継続します。この場合、最初の磁気テープへのアクセスにエラーがない限り、操作員にプロンプトを出したり、 MOUNT ルーチンを呼び出すことはしません。この設定は、 butc コマンドに -noautoquery フラグを指定した場合と同じに結果になります。
AUTOQUERY 命令の設定によって変わるのは、磁気テープ・コーディネーターが操作で最初に必要な磁気テープを要求するかどうかです。後続の磁気テープの場合には、磁気テープ・コーディネーターは、 MOUNT 命令を必ず検査します。最初の磁気テープへのアクセス時にエラーが検出された場合も、磁気テープ・コーディネーターは MOUNT 命令を参照します。
BUFFERSIZE 命令
BUFFERSIZE 命令は、引き数として次の形式の整数値を必要とします。
BUFFERSIZE size[{k | K | m | M | g | G}]
size には、ダンプおよび復元操作時にバッファーとして磁気テープ・コーディネーターが使用するメモリーの量を指定します。デフォルトはバイト単位ですが、KB 単位で指定する場合には k または K を、 MB 単位で指定する場合には m または M を、 GB 単位で指定する場合には、 g または G を使用してください。 size に指定する値と単位の間にスペースは不要です。
デフォルトでは、磁気テープ・コーディネーターは、ダンプ操作で 16 KB のバッファーを使用します。ボリューム・サーバーからボリューム・データを受信するときに、磁気テープ・コーディネーターは、 16 KB のデータをバッファーに収集してから、 16 KB すべてを磁気テープ装置またはバックアップ・データ・ファイルに転送します。同様に復元操作では、磁気テープ・コーディネーターは、デフォルトで 32 KB のデータを磁気テープ装置またはバックアップ・データ・ファイルからバッファーに入れてから、 32 KB すべてのボリューム・サーバーに転送し、ファイル・システムに復元します。バッファリングによってボリューム・データの流れが均一になり、磁気テープをストリームかすることができます。これにより、磁気テープ装置を効率よく操作することができます。
通常のネットワーク構成では、デフォルトのバッファー・サイズで、磁気テープのストリーム化を行うことができます。磁気テープ・コーディネーター・マシンおよびファイル・サーバー・マシン間のネットワークが遅い場合には、バッファー・サイズを増加してください。
FILE 命令
FILE 命令は、引き数として次の形式のブール値を必要とします。
FILE {NO | YES}
値が NO の場合、磁気テープ・コーディネーターは、ダンプ操作では磁気テープ装置に書き込みを、復元操作では磁気テープ装置から読み取りを行います。 FILE 命令が構成ファイルにない場合、これがデフォルトの振る舞いになります。
値が YES の場合、磁気テープ・コーディネーターは、ダンプ操作ではボリューム・データをローカル・ディスクのバックアップ・データ ・ファイルに書き込み、復元操作ではそのファイルからボリューム・データを読み取ります。磁気テープ・コーディネーターは、ダンプを書き込むファイルが存在しないと、ファイルを作成します。復元操作を完了するには、このファイルが存在して、 backup dump 操作で以前にボリューム・データが書き込まれている必要があります。
値が YES の場合、ローカルの /usr/afs/backup/tapeconfig ファイルにある対応するポート・オフセット項目の 3 番目のフィールドに、磁気テープ装置の名前ではなく、バックアップ・データ・ファイルの完全なパス名がなければなりません。このフィールドに磁気テープ装置が指定されていると、ダンプ操作は成功したようにみえますが、操作不能になります。 FILE 命令が YES に設定されている場合、磁気テープに装置に間違ってダンプされたデータは復元することができません。 (同様に、FILE 命令が NO に設定されている場合には、tapeconfig 項目に実際の磁気テープ装置が指定されていなければなりません。)
tapeconfig ファイルの 3 番目のフィールドに実際のファイルのパス名を指定しない場合には、/dev ディレクトリーに実際のファイルのパス名を指すシンボリック・リンクを作成し、そのシンボリック・リンクをこのフィールドに指定してください。この構成には、いくつかの利点があります。
tapeconfig ファイルの 3 番目のフィールドに実際のファイル名が指定されている場合は、バックアップ・データ・ファイルのある区画にスペースがなくなると、回復することができません。操作の途中で、tapeconfig ファイルを変更することはできません。
バックアップ・データ・ファイルの書き込み時に、磁気テープ・コーディネーターは、16 KB オフセットでデータを書き込みます。特定のデータ・ブロック (ボリュームの開始または終了を通知するマーカーなど) が 16 KB に満たない場合、磁気テープ・コーディネーターは、次のオフセットまでスキップし、次のブロックの書き込みを開始します。 -id オプションを付けて backup dumpinfo コマンドを発行すると、出力の Pos 列にボリューム・データが始まる 16-KB オフセットの位置が表示されます。磁気テープにダンプされる場合、この値は、前の行の位置番号に 1 を加えた値にはなりません。
MOUNT 命令
MOUNT 命令は、引き数として次の形式のパス名を必要とします。
MOUNT filename
指定される実行可能ファイルは、ローカル・ディスク上にあり、ジュークボックスやスタッカーなどの自動磁気テープ装置のマウント (磁気テープ読取装置への挿入) を指示するシェル・スクリプトまたはプログラムが記述されていなければなりません。操作員は、装置の製造元が指定するマウント・コマンドを呼び出すためのルーチンを作成しなければなりません。 AFS には、このようなスクリプトは用意されていませんが、次の「例」セクションにその例があります。このスクリプトまたはプログラムは、磁気テープ・コーディネーターの AFS 認証状況を継承しています。
磁気テープ・コーディネーターは、磁気テープのマウントが必要になると、構成ファイルに MOUNT 命令があるかどうか検査します。MOUNT 命令がないと、磁気テープ・コーディネーターは、磁気テープ装置をオープンする前に操作員にプロンプトを出し、磁気テープの挿入を要求します。 MOUNT 命令がある場合には、磁気テープ・コーディネーターは、指定されたファイルのルーチンを実行します。 MOUNT 命令で呼び出されたルーチンは、butcコマンドの発行元のローカル ID (UNIX UID) と AFS トークンを継承します。
ただし、例外もあります。AUTOQUERY NO 命令が構成ファイルがあるか、 -noautoquery フラグが butc コマンドに指定されていると、磁気テープ・コーディネーターは、操作に必要な最初の磁気テープが挿入されているとみなします。磁気テープ・コーディネーターは、磁気テープをすぐに読み取り、 MOUNT 命令があるかどうか検査するか、操作員にプロンプトを出し、磁気テープがないか必要な磁気テープでないことを通知します。
磁気テープ・コーディネーターは、MOUNT 命令に指定されたルーチンを呼び出すときに、指定された順序で次のパラメーターをルーチンに渡します。
MOUNT 命令で呼び出されたルーチンは、磁気テープ・コーディネーターに終了コードを戻さなければなりません。
backup コマンドが対話モードで発行され、 MOUNT ルーチンの実行中に、操作員が (backup) kill コマンドを発行すると、磁気テープ・コーディネーターはそのルーチンに終了信号を送信し、操作全体を終了します。
NAME_CHECK 命令
NAME_CHECK 命令は、引き数として次の形式のブール値を必要とします。
NAME_CHECK {YES | NO}
値が YES で、磁気テープに永続名がない場合、磁気テープ・コーディネーターは、backup dump コマンドに応答してボリュームをダンプするときに、AFS 磁気テープ名を検査します。 AFS 磁気テープ名は <NULL> か、またはボリューム・セットおよびダンプ・レベル名に基づき backup dump 操作によって割り当てられた磁気テープ名と一致していなければなりません。 NAME_CHECK 命令が構成ファイルにない場合には、これがデフォルトの振る舞いになります。
値が NO の場合には、磁気テープ・コーディネーターは、AFS 磁気テープ名を検査せずに、磁気テープに書き込みを開始します。
磁気テープ・コーディネーターは常に、磁気テープのすべてのダンプが有効期限切れになっているかどうか検査し、期限切れになっていないダンプがある磁気テープには書き込みを行いません。
UNMOUNT 命令
UNMOUNT 命令は、引き数として次の形式のパス名を必要とします。
UNMOUNT filename
指定される実行可能ファイルは、ローカル・ディスク上にあり、ジュークボックスやスタッカーなどの自動磁気テープ装置のアンマウント (磁気テープ読取装置からの取り外し) を指示するシェル・スクリプトまたはプログラムが記述されていなければなりません。操作員は、装置の製造元が指定するアンマウント・コマンドを呼び出すためのルーチンを作成しなければなりません。AFS には、このようなスクリプトは用意されていませんが、次の「例」セクションにその例があります。このスクリプトまたはプログラムは、磁気テープ・コーディネーターの AFS 認証状況を継承しています。
磁気テープ装置をクローズした後で、磁気テープ・コーディネーターは、構成ファイルに UNMOUNT 命令があるかどうか検査します。この検査は、クローズ操作が成功したかどうかに関係なく行われます。 UNMOUNT 命令がないと、磁気テープ・コーディネーターはアクションを実行しません。この場合、操作員が、次のテープを挿入する前に装置から磁気テープを取り外す必要があります。 UNMOUNT 命令があると、磁気テープ・コーディネーターは、指定されたファイルを実行します。ルーチンを 1 回だけ呼び出し、次のパラメーターを渡します。
必要となる特権
ファイルは UNIX のモード・ビットにより保護されています。ファイルを作成するには、/usr/afs/backup ディレクトリーに対する w (書き込み) および x (実行) アクセス権が必要です。ファイルを編集するには、ファイルに対する w (書き込み) アクセス権が必要です。
例
次の構成ファイルの例では、スタッカーあるいはバックアップ・ダンプ・ファイルの構成ファイルを作成するための方法が示されています。セルによっては、この例は適切でない場合があります。この例をモデルとして使用する場合には、セルの要件に合わせて修正してください。
例 CFG_device_name スタッカー用のファイル
この例では、管理者は、次に示している stacker0.1 という磁気テープ・スタッカーのための項目を、/usr/afs/backup/tapeconfig ファイルに作成しています。この項目には、ポート・オフセット 0 があります。
2G 5K /dev/stacker0.1 0
管理者は /usr/afs/backup/CFG_stacker0.1 ファイルに、次に示した 5 行を記述しています。各命令の意味を知るには、前述の「解説」セクションを参照してください。
MOUNT /usr/afs/backup/stacker0.1 UNMOUNT /usr/afs/backup/stacker0.1 AUTOQUERY NO ASK NO NAME_CHECK NO
最後に、管理者は、CFG_stacker0.1 ファイルの MOUNT および UNMOUNT 命令で参照される以下の実行可能なルーチンを /usr/afs/backup/stacker0.1 ファイルに作成しています。
#! /bin/csh -f set devicefile = $1 set operation = $2 set tries = $3 set tapename = $4 set tapeid = $5 set exit_continue = 0 set exit_abort = 1 set exit_interactive = 2 #-------------------------------------------- if (${tries} > 1) then echo "Too many tries" exit ${exit_interactive} endif if (${operation} == "unmount") then echo "UnMount: Will leave tape in drive" exit ${exit_continue} endif if ((${operation} == "dump") |\ (${operation} == "appenddump") |\ (${operation} == "savedb")) then stackerCmd_NextTape ${devicefile} if (${status} != 0)exit${exit_interactive} echo "Will continue" exit ${exit_continue} endif if ((${operation} == "labeltape") |\ (${operation} == "readlabel")) then echo "Will continue" exit ${exit_continue} endif echo "Prompt for tape" exit ${exit_interactive}
このルーチンは、バックアップ・システムから渡される tries と operation という 2 つのパラメーターを使用しています。 tries パラメーターの値が 1 を超えた場合は、このルーチンは推奨された方法で磁気テープに関するプロンプトを出します。このパラメーターの値が 1 を超えると、スタッカーに磁気テープがないということを意味します。
backup dump または backup savedb 操作の場合は、このルーチンはスタッカーの製造元が提供するサンプルの stackerCmd_NextTape 関数を呼び出します。ファイルの最終行は、操作員に対してテープの挿入のためのプロンプトを出す終了コードを戻すことに注意してください。これらの行は、スタッカーが磁気テープをロードできないか、実行されている操作がファイルで明示的に記述されている操作 (たとえば回復操作) でない場合に呼び出されます。
バックアップ・データ・ファイルへのダンプのための CFG_device_name ファイルの例
この例では、管理者は、次に示す HSM_device と呼ばれるバックアップ・データ・ファイルのための項目を、/usr/afs/backup/tapeconfig ファイルに作成しています。この項目には、ポート・オフセット 20 があります。
1G 0K /dev/HSM_device 20
管理者は /usr/afs/backup/CFG_HSM_device ファイルに、次に示した行を記述しています。各命令の意味を知るには、前述の「解説」セクションを参照してください。
MOUNT /usr/afs/backup/file FILE YES ASK NO
最後に、管理者は、CFG_HSM_device ファイルの MOUNT 命令で参照される実行可能なルーチンを /usr/afs/backup/file ファイルに作成しています。
#! /bin/csh -f set devicefile = $1 set operation = $2 set tries = $3 set tapename = $4 set tapeid = $5 set exit_continue = 0 set exit_abort = 1 set exit_interactive = 2 #-------------------------------------------- if (${tries} > 1) then echo "Too many tries" exit ${exit_interactive} endif if (${operation} == "labeltape") then echo "Won't label a tape/file" exit ${exit_abort} endif if ((${operation} == "dump") |\ (${operation} == "appenddump") |\ (${operation} == "restore") |\ (${operation} == "savedb") |\ (${operation} == "restoredb")) then /bin/rm -f ${devicefile} /bin/ln -s /hsm/${tapename}_${tapeid} ${devicefile} if (${status} != 0) exit ${exit_abort} endif exit ${exit_continue}
磁気テープ・スタッカーのルーチンの例と同様、このルーチンもバックアップ・システムから渡される tries と operation パラメーターを使用します。 tries パラメーターは、磁気テープ・コーディネーターがファイルにアクセスしようとした回数を追跡します。値が 1 を超えていると、磁気テープ・コーディネーターはファイルにアクセスできないことを示し、このルーチンは終了コード 2 (exit_interactive) を戻します。この場合、操作員に対して磁気テープをロードするようにプロンプトが出されます。この場合に、操作員は tapeconfig ファイルに指定されているバックアップ・データ・ファイルの名前を変更することができます。
このルーチンの基本的な機能は、ダンプまたは復元されるファイルと装置ファイルとのリンクを確立させることにあります。磁気テープ・コーディネーターが backup dump、 backup restore、backup savedb、または backup restoredb 操作を実行している場合、このルーチンは UNIX の ln -s コマンドを呼び出し、 tapeconfig ファイルで指定されているバックアップ・データ・ファイルから実際に使用するファイルへのリンクを作成します (これが推奨方法です)。ファイル名を構成する場合、磁気テープ・コーディネーターは tapename と tapeid パラメーターを使用します。
関連情報