ST(4) — NEWS-OS Programmer’s Manual
名称
st − SCSI テープドライバ
形式
/dev/{r|nr|anr}st∗
解説
st は、 SCSI テープドライブのデバイスドライバで、 最大 4 台までのドライブを同時に扱うことができます。 SCSI テープドライブには、 可変長レコードが扱えるものと、 固定長レコードしか扱えないものの 2 種類がありますが、 st はこの両方をサポートします。
st が標準でサポートしているドライブには、 5099EN24 (NWP−531)、 5125、 2150S (NWP−546) 及び SDT−1000 (NWP−542) の 4 タイプがあります。 どのタイプのドライブが接続されているかは、 OS のブート時に表示される、 コンフィギュレーションメッセージで知ることができます。
stc0 at iop addr 5 intr 5
st0 at stc0 slave 0 (bus=0, chan=5, lun=0)
st0: 5099EN24 (512 BYTES REC)/∗ 512 バイト固定長 ∗/
stc1 at iop addr 6 intr 6
st1 at stc1 slave 0 (bus=0, chan=6, lun=0)
st1: SDT-1000 (FLEX REC, 131072 MAX)/∗ 可変長レコード ∗/
なお、 可変長レコードが扱えるドライブにおいて表示される MAX の値は、 そのドライブで扱うことのできる最大のブロックサイズを示しています。
デバイス名と記録フォーマット
st ドライバのデバイス(ファイル)名は、
/dev/{r|nr|anr}st#
の形で指定します。 # には 2 桁の 10 進数字を指定しますが、 その値は
drive# + format#
のように決定します。 ここで、 drive# は装置番号 0 から 3 を、 format# は記録形式( 0 / 8 / 16 / 24 / 32 / 40 / 48 のうちいずれか)を表します。 記録形式の番号と記録フォーマット(記録密度)の対応は、 接続されているドライブによって若干異なり、 次表のようになっています。
| 5099EN24(NWP−531) | ||
| 記録形式 | 書き込み | 読み出し |
| 00 | QIC−24 | QIC−24 のみ可。 |
| 08 | QIC−11 (9 track) | QIC−11 (9 track) のみ可。 |
| 16 | 不可。 | QIC−11 (4 track) のみ可。 |
| 24 | QIC−24 | QIC−24 のみ可。 |
| 5125 | ||
| 記録形式 | 書き込み | 読み出し |
| 00 | QIC−120 | QIC−24、QIC−120 を自動判別。 |
| 32 | QIC−120 | QIC−24、QIC−120 を自動判別。 |
| 2150S(NWP−546) | ||
| 記録形式 | 書き込み | 読み出し |
| 00 | メディアが QD−600A の時は QIC−120。 QD−6150、QD−600XTD または QD−6250 の時は QIC−150。 | QIC−24、QIC−120、QIC−150 を自動判別。 |
| 24 | 不可。 | QIC−24 のみ可。 |
| 32 | QIC−120 | QIC−120 のみ可。 |
| 40 | QIC−150 | QIC−150 のみ可。 |
| SDT−1000(NWP−542) | ||
| 記録形式 | 書き込み | 読み出し |
| 00 | DDS フォーマット | DDS フォーマット |
例えば、 ドライブ 1 に接続されている 2150S タイプのドライブを QIC−120 フォーマットで用いる場合、 デバイス名は /dev/rst33 になります。
また、 デバイス名の頭に付くプレフィックスによって、 ドライバの動作が異なります。
| デバイス名 | オートリワインドモード | オートスペースモード |
| /dev/rst∗ | ○ | × |
| /dev/nrst∗ | × | × |
| /dev/anrst∗ | × | ○ |
オートリワインドモードの場合は、 デバイスが close された時( dd(1)、 tar(1) などのコマンドが終了した時)にメディアが自動的に先頭位置まで巻き戻されます。
オートスペースモードでは、 デバイスの close 時に自動的にファイルマークを 1 つ読み飛ばし、 次のファイルの先頭位置にヘッドを進めます。 これは、 tar(1) などの、 ファイルマークに出会う前に終了してしまうようなタイプのコマンドを用い、 テープ上のファイルを連続して読み出す場合などに有効です。 ただし、 この動作が行われるのは open から close までの間に、 1 バイト以上のデータが実際にテープから読み出された場合に限ります。 従って、 mt(1) コマンドでデバイスにアクセスした場合には、 この機能は動作しません。
記録フォーマットの変更
メディアの途中で記録フォーマットを変更することはできません。
例えば、 2150S タイプのドライブにおいて、 QIC−120 フォーマットで書かれたメディアを記録形式 24、 オートリワインドなしで読み込もうとした場合、 エラーが発生します。
# dd if=/dev/nrst24 of=file
st0: SCSI error on block #0: sense key 8.
この状態で、 メディアは先頭位置より少し進んでいます。 ここで、 いったんメディアを巻き戻して、 記録形式 32 で改めて読み込みを行えば良いのですが、 巻き戻しには記録形式 24 を用いる必要があります。 記録形式 32 で巻き戻しを行おうとした場合、 以下のようにエラーが発生してしまいます。
# mt -f /dev/rst32 rewind
st0: Driver error 2.
正しくは、 以下のように操作してください。
# mt -f /dev/rst24 rewind
# dd if=/dev/nrst32 of=file
標準サポート以外のドライブ
st ドライバは、 標準でサポートしている上記 4 タイプ以外のドライブを扱うこともできますが、 この場合の記録形式と記録フォーマットの対応は以下のようになっています。
| 標準以外の固定長レコードドライブ | ||
| 記録形式 | 書き込み | 読み出し |
| 00 | ドライブのデフォルトの記録フォーマット | ドライブのデフォルトの記録フォーマット |
| 08 | QIC−11 (9 track) | QIC−11 (9 track) |
| 16 | QIC−11 (4 track) | QIC−11 (4 track) |
| 24 | QIC−24 | QIC−24 |
| 32 | QIC−120 | QIC−120 |
| 40 | QIC−150 | QIC−150 |
| 48 | QIC−525 | QIC−525 |
| 標準以外の可変長レコードドライブ | ||
| 記録形式 | 書き込み | 読み出し |
| 00 | ドライブのデフォルトの記録フォーマット | ドライブのデフォルトの記録フォーマット |
| 08 | 800 bpi | 800 bpi |
| 16 | 1600 bpi | 1600 bpi |
| 24 | 3200 bpi | 3200 bpi |
| 32 | 6250 bpi | 6250 bpi |
IOCTL
st ドライバは、 mtio(4) で述べるられている標準のドライブインターフェースに加え、 ヘッダファイル /sys/newsiodev/streg.h で示される、 いくつかの SCSI コマンドを実行するための専用の ioctl を備えています。
関連ファイル
/dev/{r|nr|anr}st∗デバイススペシャルファイル
/dev/MAKEDEVデバイスファイル作成コマンド
/sys/newsiodev/streg.hioctl コマンドの定義
/sys/newsiodev/stdefs.cデバイスコンフィギュレーション ファイル
関連事項
mt(1), tar(1), mtio(4), dump(8), restore(8), stinfo(8)
診断
st∗: Driver error 1.
ライトプロテクトがかかっているメディアに書き込みを行なおうとした。
st∗: Driver error 2.
指定した記録形式が無効である。 または、 メディアの途中で記録形式を変更しようとした。
st∗: Driver error 3.
ioctl のコマンドまたは引数が無効である。
st∗: Driver error 4.
リード/ライト、 またはレコード単位のスペーシング中に EOM にであった。
st∗: Driver error 5.
読み出しに際し、 指定したレコードサイズと実際のレコードサイズがあっていない。
st∗: Driver error 6.
デバイスがビジー状態のため、 コマンドを実行できない。
その他、 st ドライバはコントローラによって返されたエラーステータスを、 以下の形で表示することがあります。
st∗: SCSI error on block #0: sense key n.
ここで、 n は SCSI の REQUEST SENSE コマンドによって返されるセンスキーの値で、 その意味は次表のとおりです。
| センスキー | 意味 |
| 2 | メディアがドライブに入っていない |
| 3 | メディアエラー(テープのキズ等) |
| 4 | ハードウェアエラー(装置の故障) |
| 5 | 許されていない操作をおこなった |
| 8 | メディア上に何も記録されていないのに読み込もうとした |
| 11 | コマンドが強制修了させられた(I/O 中にメディアがぬかれた) |
バグ
ブロック型のデバイスとしてはサポートされていません。
カセットストリーマタイプのデバイスではテープは逆方向へは動きませんので、 BSR と BSF の ioctl はサポートしていません。 したがって、 この機能を使用する tar(1) の r オプションなどは動作しません。
BSF n は、 前方 n 番目のファイルマークの前縁にヘッドを移動します。 この位置からリードを開始すると、 ファイルマークを読むことになってしまいますので、 n 個前のファイルの先頭までテープを戻す場合は、
BSF n + 1
FSF 1
をおこなう必要があります。
基本的に SCSI インターフェースを持ったテープドライブであれば、 どのようなものであっても動くように設計されてはいますが、 保証はできません。
NEWS-OS Release 4.1C