wtape

Section: WIN SYSTEM (1W)
Updated: 2002.5.31
Index Return to Main Contents
 

名称

wtape - win 形式1分ファイルのテープへの書き込み  

形式

wtape [ options ] [ unit ]

 

解説

wtape は、-p オプションで指定されるパラメータファイルから 設定値を読み込みます。オプションが指定されない場合はカレントディレクト リの wtape.prm から設定値を読み込みます. パラメータファイルの1行目に指定されたディレクトリにある win 形式の 1分毎の連続ファイル (これは通常 wdisk(1W) によって作られます)を、 EXABYTE等の テープ装置に書き込みます。テープ上のフォーマットについては、 winformat(1W) を参照してください。1巻のテープへの書き込みが 終わるのは、 (1)何らかのエラー(テープの終わりに達することも含みます)が 発生するかハングアップシグナルを受け取った場合、 (2)割り込みシグナルか終了シグナルを受け取った場合、のいずれかで、 書き込みの終了したテープは巻戻されて装置から排出されます。
(1)の場合は、wtape はパラメータファイルの3行目、4行目、 5行目、 ... に書かれたテープ装置名を、それぞれ装置番号 0、1、2、... とみなして、これら複数のテープ装置をこの順で 巡回的に切り替え、書き込みを継続しようとします。ただし 書き込み可能なテープ装置が1つも利用できない場合は、wtape は終了します。 なおパラメータファイル中のテープ装置名としては、 クローズ時にオートリワインドしないもの(/dev/nrst*)を指定する 必要があります。
一方(2)の場合は、テープ排出後 wtape は終了します。

wtape は、起動時に  unit を指定するとその装置番号から、指定しないと装置番号 0 から、 データを書き始めます。

wtape は指定された1分ファイルのディレクトリの中で、いくつかの ファイルを利用します。wtape が読む(あるいは読み書きする)ために 最初から必要とされる ファイルには、OLDEST、LATEST、UNITS、_UNITS、USED があります。
このうち OLDEST と LATEST は wdisk(1W)等の1分ファイル書き込み プログラムによって生成・更新されますが、UNITS と _UNITS は wtape の 起動前に用意しておく必要があります。UNITS はパラメータファイルに定義された テープ装置のうち、実際に使用する装置を指定するファイルで、 1行に1つずつ、装置番号(0,1,2,...)を書きます。 _UNITS は UNITS に指定された装置番号のうち、 書き込み用テープを装填した 装置を wtape に知らせるのに使用されます。wtape は起動時に UNITS の 内容を _UNITS にコピーしますが、その後は書き込みが終了するたびに その装置番号を _UNITS から削除していきます。実行中の wtape は 、_UNITS にリストされている装置番号のみを使用しますので、 1度書き込みが終了した装置番号は、外部から _UNITS に再登録しない 限り順番が回ってきても使用されません。これは wtape が、書き込み済みの テープに不用意に上書きをしないようにするためです。したがって、 記録テープを排出した装置に次の書き込みのための新しいテープを装填 したら、setexb(1W)コマンドで UNITS を _UNITS にコピーして、 wtape にその装置が再び使用できることを知らせておく(再登録する) 必要があります。

USED の内容は wtape が最後に書き込んだデータの時刻(1分ファイルの 名前)です。 wtape は起動後、USED に書かれたのの次の時刻の 1分ファイルからテープに書き始めます。書き始めるべき1分ファイル よりも新しいデータしかすでにないか、あるいは USEDファイルがない 場合は、存在する最も古いファイル(これは OLDEST に書かれています) からテープに書き始めます。最新のファイル(これは LATEST に 書かれています)までを書き終わると、wtape は次に時(hour)が変わる まで眠ってから、続きをその時点の最新のファイルまで書き込みます。-d オ プションが指定されると、LATEST より  delay minute 前まで書き込みを行って眠ります。 wtape はそのようにして、約1時間毎に、約1時間分ずつをまとめて 書き込みます。

このほかに、wtapeが書くファイルとして、EXABYTE と TOTAL が あります。 EXABYTE の内容は wtape が現在書き込み中の装置番号で、 TOTAL は wtape が現在書き込み中のテープに書いたデータの合計容量 (単位KB)です。

wtape は、動作ログをパラメータファイルの2行目に指定されたファイルに 追加記録します。ログファイルは通常 /dat/log/wtape.log です が、tapelist(1W)は /dat/log/wtape.log の内容を新しいものから 順に、テープの通し番号をつけて表示するプログラムです。

書き込み中のテープを強制的に終了させて、次のテープ装置に 切り替えるには、newtape(1W)コマンドが使えます。wtape を終了させるには、 端末から ctrl+C を 入力するなどして割り込みまたは終了シグナルを 送ります。

パラメータファイルの例は次のようなものです。これは4台のテープ装置を 巡回的に使用する場合です。

/dat/raw
/dat/log/wtape.log
/dev/nrst20
/dev/nrst21
/dev/nrst22
/dev/nrst23

wtape の動作ログファイルの例を次に示します。

unit 0  95/12/14 11:00  -->  95/12/16 12:28  6234 MB  ON ERROR
unit 1  95/12/16 12:29  -->  95/12/18 16:14  6311 MB  ON ERROR
unit 2  95/12/18 16:15  -->  95/12/20 22:14  6391 MB  ON ERROR
unit 3  95/12/20 22:15  -->  95/12/22 14:04  4097 MB  ON INT
unit 0  95/12/22 14:05  -->  95/12/24 21:20  6245 MB  ON ERROR

1行がテープ1巻分の記録で、その内容は、(1)テープ装置番号・ (2)テープ先頭のデータの年月日時分・(3)テープ最終データの年月日時分・ (4)書き込んだデータ量・(5)書き込みを終了した要因、です。  

オプション

-d delay minute
最新ファイル(LATEST の内容)より  delay minute 前のファイルまで書き込みます.デフォルトは 0 です。
-p param file
パラメータファイルを  param file に指定します。デフォルトはカレントディレクトリの wtape.prm です。
-?
使用方法を表示して終了します。
 

8mmテープについて

EXABYTEテープ装置では、データ記録専用のテープカートリッジを 利用することが 推奨されていますが、コストを節約するためにはビデオ用のテープが 利用されることがあります。その場合、経験的にはスタンダードの MPタイプがいいようです。また、ヘッドクリーニングはできる限り 頻繁にすることが望ましく、できればテープ1巻の書き込みが終了する たびにクリーニングテープを走らせるべきです。またEXABYTEでは、 書き込んだ装置では読みだせるが他の装置では I/Oエラーが発生して 読めない、ということがたびたび起こります。  

オートチェンジャー装置の利用

wtape を使い、8mmオートチェンジャー装置(DataWheel)を利用して、 多数のテープに長期間連続書き込みするためのプログラムとして、 wt(1W) があります。また、DataWheelの制御プログラムとして、 robot(1W) と tape(1W) があります。wt と tape は共に robot を 呼びだして利用しています。  

デバイスのブロッキングモードについて

wtape は可変長ブロックを書き込みます。そのため、テープデバイスを 可変ブロック長モードで使用する必要があります。デバイスのブロッキング モードはmt(1)プログラムで調べることができ、同じプログラムの blocksize コマンドで固定長モードから可変長モードに変更することができるかもしれません。  

wtape によって書かれたテープの互換性について

wtape は連続記録の1分ファイルをテープに書き込みます。 テープに書かれた連続記録データを読み出すのは、 rtape(1W) プログラムです。テープ上では、 1分ごとではなくて、10分ごとにテープマーク(ファイルマーク)が 書かれます。wtape は1つのwrite()システムコールで1秒分のデータを テープデバイスに書きますので、基本的に1秒分がテープ上の1ブロック になるはずです。しかし1秒分のデータのサイズが大きい場合、OSによっては それが適当な大きさに分割されて書き込まれています。

FreeBSD2.X,3.X の場合
write時には、ドライバーが1秒分のデータを61440バイト毎のブロックに 分割して書き込むようです。read時には、ドライバーが分割されたブロックを つなぎ合わせて元のサイズに戻してくれます。したがってプログラムは テープ上に分割して記録されていることを意識する必要はありません。 ただし、テープ上で61440バイトを超える(物理)ブロックサイズは エラーになってしまい、読み出すことができません。
FreeBSD4.X の場合
write時にブロックの分割を行いません。実験によると 少なくとも10MBまでの大きさのブロックのままで 書き込み、そのまま読み出すことができます。wtapeでこうやって書き込まれた テープは、1秒ブロックの大きさが60KBを超えるような場合、 FreeBSD 3.X/Solaris2のいずれでも読み出すことはできず、FreeBSD 4.Xでないと 読むことはできません。もちろんFreeBSD 4.XはFreeBSD 3.XやSolaris2によって 書かれた分割ブロックのデータも読み出すことができます。
Sun-OS/Solarisの場合
write時はドライバーが 65534バイト毎に分割して書き込みます。 read時はドライバーが分割されたブロックを自動的に元のサイズに 戻すことはしなくて、65534バイトの物理ブロック単位で読みだされます。 したがって、読み出しをするアプリケーションプログラムがそれを つなぎ合わせる必要があります。そのため、rtape プログラムは、1秒分のデータが 読み出されるまで、read()システムコールを繰り返すようになっています。
 

ソース

`wtape.c'
 

関連事項

winformat(1W), wdisk(1W), setexb(1W), tapelist(1W), newtape(1W), wt(1W), robot(1W), tape(1W), rtape(1W)


 

Index

名称
形式
解説
オプション
8mmテープについて
オートチェンジャー装置の利用
デバイスのブロッキングモードについて
wtape によって書かれたテープの互換性について
ソース
関連事項