1040 lines
46 KiB
Plaintext
1040 lines
46 KiB
Plaintext
<!-- $Id: scsi.sgml,v 1.9 1997-12-28 20:18:24 asami Exp $ -->
|
|
<!-- The FreeBSD Japanese Documentation Project -->
|
|
<!-- Original revision: 1.25 -->
|
|
|
|
<!--
|
|
<title>SCSIの概要と FreeBSDでの使い方</title>
|
|
|
|
|
|
<author>(c) 1995-1996, Wilko Bulte, <tt/wilko@yedi.iaf.nl/
|
|
<date>Sat Jul 6 20:57:39 MET DST 1996</date>
|
|
Copyright 1995-1996, Wilko C. Bulte, Arnhem, The Netherlands
|
|
|
|
|
|
<abstract>
|
|
このドキュメントはSCSIの背景, FreeBSDでの使い方,
|
|
よくある落し穴について書いてあります.
|
|
</abstract>
|
|
|
|
-->
|
|
|
|
<sect1><heading>SCSIとは?<label id="scsi"></heading>
|
|
|
|
<!--
|
|
<p><em>Copyright © 1995, &a.wilko;.<newline>July 6, 1996.</em>
|
|
-->
|
|
<p><em>原作:&a.wilko;. <newline>July 6, 1996.</em>
|
|
|
|
<p><em>訳: &a.yoshiaki;. <newline>
|
|
4 November 1996. </em>
|
|
|
|
SCSI は Small Computer Systems Interface (小規模コンピュータシ
|
|
ステムインタフェース) の頭文字をとったものです.
|
|
これはANSI標準でコンピュータ業界においては最もよく使われるI/O
|
|
バスの一つになっています. SCSIはシュガート社 (ミニフロッピーディ
|
|
スクを世界で最初に販売しました) の開発した SASI (Shugart
|
|
Associates Standard Interface) バスが元になって規格化されました.
|
|
|
|
その後の業界の努力により, 異なるベンダのデバイスが混在して使え
|
|
るようにより厳密な規格へと規格化されました.この結果が ANSIの
|
|
SCSI-1規格として認可されました. SCSI-1の仕様は (1985年ごろ
|
|
に規格化されました 訳注: SCSI-1の最終案決定は1985年, ANSIの標準
|
|
規格としての認可は1986年です) すでに現在では時代遅れです.
|
|
現在の標準は SCSI-2 (<ref id="scsi:further-reading"
|
|
name="さらに詳しい情報">を参照してください)
|
|
で, SCSI-3へ移行していくでしょう.
|
|
|
|
物理的な相互接続の規格に加えて, SCSIではディスクドライブに不可欠な
|
|
論理的な規格 (コマンドセット) も定義しています.
|
|
この規格は標準コマンドセット (CCS : Common Command Set) と呼ばれ,
|
|
ANSIのSCSI-1とほぼ同時期に制定されました. SCSI-2には (改定された)
|
|
CCSが規格の一部として組み込まれました. コマンドはデバイスの
|
|
種類によって変わります. 例えばスキャナでは Writeコマンドは意味が
|
|
ありません.
|
|
|
|
SCSIバスは多くの種類があるパラレルバスです. 最も古く,
|
|
最も利用されているのが 8 bit 幅, シングルエンド (不平衡) 信号,
|
|
50線の信号線のバスです.
|
|
(もしシングルエンドの意味が分からなくても気にするこ
|
|
とはありません. このドキュメントはまさにそのような人たちのため
|
|
のものです.) より新しい設計では 16 bit幅で平衡信号のバスを使います.
|
|
この場合,
|
|
転送速度は 20Mbytes/second まで, ケーブルの長さは 25mまで可能です.
|
|
SCSI-2では追加のケーブルを使った最大32 bitのバス幅までが
|
|
定義されています.
|
|
最近急速に増えているものに Ultra SCSI (Fast-20とも呼ばれます)
|
|
があります. また, SCSI-2には Ultra2 (Fast-40ともいいます)
|
|
というものも定義されています. Fast-20は1秒間に2000万回の転送
|
|
(8bitバスで20Mbyte/sec), Fast-40は1秒間に 4000万回の転送 (8bitバスで
|
|
40Mbytes/sec) をおこないます. 最近売られているハードディスクの
|
|
ほとんどは不平衡信号の Ultra SCSI (8ビットまたは 16ビット) です.
|
|
|
|
訳注: ここでは電気的な用語としては平衡, 不平衡を用いて,
|
|
バスの名称としては基本的にはシングルエンド,
|
|
ディファレンシャルとしました.
|
|
|
|
もちろん SCSIバスにはデータ信号だけではなく,
|
|
多くのコントロール信号線があります.
|
|
複数のデバイスがバスを効率よく共有するための複雑なプロトコルも規格の一部です.
|
|
SCSI-2ではデータは常に独立したパリティ信号を使ってチェックされます.
|
|
SCSI-2以前ではパリティはオプションでした.
|
|
|
|
SCSI-3ではさらに高速なバスタイプが導入され,
|
|
それと共にケーブルの線数を減らし,
|
|
より最大バス長を伸ばしたシリアルSCSIが導入されます.
|
|
SSAや Fiberchannelといった名前を聞いたことはありませんか?
|
|
シリアルバスは現在ではまだいずれの方式も普及していません (特に一般的な
|
|
FreeBSD環境では). このためシリアルバスタイプについてはここでは
|
|
これ以上は触れません.
|
|
|
|
今までの記述から想像されるように SCSIデバイスはインテリジェント
|
|
です. これは SCSIの規格 (この文書は2インチ以上の厚さがあります)
|
|
と切り離すことはできません.
|
|
このため例えばハードディスクでは特定のブロックをさすのに
|
|
ヘッド/シリンダ/セクタ
|
|
によって決めるのではなく単に必要なブロック番号を指定します.
|
|
巧妙なキャッシュ動作や, 不正ブロックは自動置き換えなどの機能はこの
|
|
「インテリジェントデバイス」のアプローチによって可能になっています.
|
|
|
|
SCSIバスでは任意のデバイスの組で通信することが可能です.
|
|
(訳注: 任意のデバイスがイニシエータになれるという意味です.)
|
|
デバイスの機能がそれを許すかどうかは また別の問題ですが, 規格では
|
|
禁止されていません.
|
|
信号の衝突を防ぐために2つのデバイスはバスを使う前に調停
|
|
(arbitrate) をおこなう必要があります.
|
|
|
|
SCSIの考え方として古い規格のデバイスと新しい規格のデバイスが
|
|
同じバスの上で動くように規格を作っています. したがって, 古い SCSI-1の
|
|
デバイスは SCSI-2バスの上でも普通は動きます. 普通は,
|
|
とことわった理由は, ある古いデバイスが新しいバスでも問題ない程に
|
|
(古い) 規格に対して十分沿った実装になっているかどうかは絶対的に
|
|
保証はできないということです.
|
|
一般に最近のデバイスはよりうまく動作します.
|
|
その理由は規格化がより厳密になり, またメーカーがデバイスの製造に
|
|
おいてよりきちんと規格に従うようになってきているからです.
|
|
|
|
一般的に言って, 単一のバス上で動かすデバイスは
|
|
SCSI-2あるいはより新しいデバイスであればうまく動く可能性は高いと言えます.
|
|
これは新しい 2GBのディスクを手に入れたとしたら
|
|
古いデバイスを捨ててしまわなければならないという意味ではありません.
|
|
私のシステムでは SCSI-1以前のディスク, SCSI-2の QICテープユニット,
|
|
SCSI-1のヘリカルスキャンテープユニット (訳注: VTRのような回転ヘッドを
|
|
持ったテープ装置のことです. DATテープドライブもその一つです),
|
|
2台の SCSI-1 ディスクが一緒に問題なく動いています.
|
|
ただし効率の点から古いデバイスと新しい (= 速い)
|
|
デバイスを分けたいかもしれません. (訳注: 古いデバイスの中には
|
|
disconnectをサポートしないために一連のコマンド実行中に
|
|
SCSIバスを占有してしまうデバイスもあります.)
|
|
|
|
<sect2><heading>SCSIの構成要素</heading>
|
|
<p>
|
|
<!--
|
|
<sect3><heading> <it>インテリジェント</it> インタフェース</heading>
|
|
<p> (訳注:原文では smart interface です)
|
|
-->
|
|
先に述べたように, SCSIデバイスはインテリジェントです.
|
|
つまりハードウェア細部にからむ知識は SCSIデバイス自身に
|
|
持たせてしまおうという考え方です. この考え方では
|
|
SCSIデバイスはそれ自身のハードウェアの詳細を知っています.
|
|
この場合, ホストシステムはハードディスクがいくつのヘッド
|
|
を持ち, テープデバイスがいくつのトラックを持つかというような
|
|
ことを知る必要がありません.
|
|
もしあなたが知りたいのであれば, 規格で定義されているコマンドを
|
|
使ってデバイスにハードウェアの詳細について質問することができます.
|
|
|
|
インテリジェントデバイスの利点は明らかです.
|
|
ホストのデバイスドライバはより一般的に書くことができ,
|
|
新しいデバイスを導入する場合でも変更の必要がありません.
|
|
|
|
<sect3><heading>接続でおこなうべきこと, してはならないこと</heading>
|
|
<p>
|
|
ケーブルの接続には鉄則があります. よい部品を使うことです.
|
|
バスの速度を上げることができ, 多くの災難を防ぐことができます.
|
|
|
|
ですから, 金メッキのコネクタ, シールドケーブル,
|
|
固定器具付きの頑丈なコネクタカバーなどを選ぶのは正しいことです.
|
|
2つ目の鉄則は, ケーブルを必要以上に長くしないことです.
|
|
私は以前にあるマシンでトラブルの 原因を探すのに
|
|
3日間悩んでいましたが, SCSIバスを 1m 短く
|
|
することで問題を解決したことがあります. もちろん,
|
|
元のバスの長さでもSCSIの仕様はきちんと満たしていたのですが.
|
|
|
|
<sect2><heading>SCSI バスのタイプ</heading>
|
|
<p>
|
|
電気的に互換性のない 2種類のバスのタイプがあります.
|
|
シングルエンドとディファレンシャルのバスです. これは SCSI
|
|
デバイスとコントローラは同一のバス上に混在することのできない
|
|
2つのグループにに大きく分けられるということを意味しています.
|
|
しかし, 特別なハードウェアを使えばシングルエンドバスを
|
|
ディファレンシャルバスに (その逆も) 変換することはできます.
|
|
これらのバスのタイプの違いは次のセクションで説明します.
|
|
|
|
SCSI関連のドキュメントでは異なるタイプのバスを一種の用語とし
|
|
て略語で表します. これを次の表に示します.
|
|
|
|
<itemize>
|
|
<item>FWD: Fast Wide Differential (高速 ワイド 平衡)
|
|
<item>FND: Fast Narrow Differential (高速 ナロー 平衡)
|
|
<item>SE: Single Ended (不平衡)
|
|
<item>FN: Fast Narrow (高速 ナロー)
|
|
<item>etc.
|
|
</itemize>
|
|
|
|
少し想像力を働かせればどのような意味であるかはわかるでしょう.
|
|
|
|
ワイド (Wide) はいくらか曖昧で, 16 または 32 bitのバスを示します.
|
|
私の知る限りでは, 32 bit のインタフェースは (まだ)
|
|
使われていませんので Wide は通常 16 bitを意味します.
|
|
|
|
高速 (Fast) はバスのタイミングがいくつかの点で異なり, ナロー
|
|
(8 bit) バスでは 低速 (slow) SCSIバスの 5 Mbytes/sec に対して 10
|
|
Mbytes/sec の能力があります. 前にも述べたように, 20Mbytes/sec や
|
|
40Mbytes/sec のバス速度を持つものも現れてきています
|
|
(Fast-20 == Ultra SCSI で Fast-40 == Ultra2 SCSI です).
|
|
|
|
データ線の上位 (> 8) はデータの転送とデバイスの指定だけに
|
|
利用されているという点を指摘しておきます.
|
|
コマンドの送出とステータスメッセージ等は下位側の
|
|
8 bitのデータ線のみを使います.
|
|
この規格によりナローデバイスはワイドバス上でも動作する事ができます.
|
|
利用できるバスの幅はデバイス間で調停 (ネゴシエーション)
|
|
されます. デバイスの
|
|
IDについてはワイドとナローが混在する時には気をつけなければなりません.
|
|
|
|
<sect3><heading>シングルエンドバス (不平衡バス) </heading>
|
|
<p>
|
|
シングルエンド SCSIバスは 5Vと 0Vの電圧 (つまりTTLレベルです)
|
|
を信号として使い, それらは共通のグラウンド (GND) レベルを基準
|
|
にします. シングルエンド SCSI 8 bitバスは約25本のグラウンド線
|
|
を持ち, すべてのデバイスを「直線状」に接続します.
|
|
基準ではシングルエンドバスは最大の長さは 6mです.
|
|
Fast-SCSI デバイスを使う場合には, この最大長さは 3mに短くなります.
|
|
Fast-SCSIでは 5Mbytes/sec ではなく 10Mbytes/sec の転送速度
|
|
が可能になります.
|
|
|
|
Fast-20 (Ultra SCSI) と Fast-40ではそれぞれ1秒間に2000万 (20M)
|
|
ないしは 4000万 (40M) 回の転送ができます. したがって, Fast-20では
|
|
8bitバスで 20Mbytes/sec, 16bitバスで 40Mbytes/secとなりま
|
|
す. Fast-20ではバスの最大の長さは 1.5m, Fast-40では 0.75mに
|
|
なります. Fast-20は限界を相当に広げるものなので SCSIバス
|
|
に雑音が多い場合はその影響を即座に受けます.
|
|
|
|
バス上のいずれかのデバイスが「高速の」転送を利用する場合は
|
|
Fastバスの長さの制限を受けるということに注意してください.
|
|
|
|
最近の Fast-SCSI デバイスではバスの長さが実際の問題に
|
|
なりつつあるのが明らかになっています. これがデファレンシャル
|
|
SCSIバスがSCSI-2の規格に導入された理由です.
|
|
|
|
コネクタのピン配置やコネクタの種類については SCSI-2の規格
|
|
(<ref id="scsi:further-reading" name="さらに詳しい情報">)
|
|
を参照してください.コネクタ等について詳細なリストがあります.
|
|
|
|
非標準のケーブルを使うデバイスに気をつけてください. 例えば
|
|
Apple (の Macintosh は) 25pin の D-type のコネクタ
|
|
(シリアルポートやパラレルプリンタに使われているコネクタ --
|
|
訳注: 日本では一般的に D-sub 25pinと言っています)
|
|
を使っています.
|
|
公式なSCSIバスでは50 pin が必要である事からこのコネクタでは
|
|
「独創的なピン配置」が必要な事が想像できるでしょう. ここ
|
|
でおこなわれているようにグラウンド線の数を減らすことはよい考え
|
|
ではありません. SCSIの規格通りの 50 pinの接続の方が望まし
|
|
いです. Fast-20 や 40 でこのようなケーブルを使おうなんて
|
|
考えてはいけません.
|
|
|
|
<sect3><heading>ディファレンシャル (平衡) バス</heading>
|
|
<p>
|
|
ディファレンシャル SCSIバスは最大長が 25m です. シングルエンド
|
|
Fast-SCSIバスの 3mとはまったく違います. 平衡信号の背景と
|
|
なっている考え方は, それぞれのバスの信号はそれぞれ
|
|
独立したリターン信号線を持つというものです. つまり,
|
|
それぞれの信号は (できればより線の) ペアの信号線で
|
|
伝えられます.
|
|
これら2つの信号線の差分の電圧で信号が「真」(assert) で
|
|
あるか「偽」(de-assert) であるか判定されます. かなりの電圧
|
|
がグラウンド電位と信号線ペアの間にかかったとしても影響があ
|
|
りません (だからといって 10kVの電圧をかけてみたりしないで
|
|
ください.. ).
|
|
|
|
なぜ平衡信号がよいのかについての説明はこのドキュメントの
|
|
範囲を越えています. 電気的に平衡信号はノイズマージンの点で
|
|
非常に優れたものとして利用されているということを受け入れて
|
|
ください. ディファレンシャルバスは普通は外部接続に利用さ
|
|
れています. これは低コストのシングルエンドバスが筐体内の短
|
|
い距離のバスでは非常に多く利用されているからです.
|
|
|
|
FreeBSDを使うにおいて, FreeBSDでサポートされている
|
|
デバイスドライバがあるのであれば
|
|
ディファレンシャルバスの利用で問題になることは何もありません.
|
|
例をあげれば, アダプテックの AHA1740はシングルエンドで,
|
|
AHA1744はディファレンシャルです.
|
|
双方のソフトウェアインタフェースはまったく同一です.
|
|
|
|
<sect3><heading>ターミネータ</heading>
|
|
<p>
|
|
SCSIにおける用語でのターミネータとはインピーダンスの
|
|
マッチングを正確におこなうための抵抗ネットワークです.
|
|
インピーダンス
|
|
マッチングは反射やリンギングを抑え, バスの信号をきれいにす
|
|
る重要なものです. たとえば, あまり状態のよくない回線で長距
|
|
離の電話をかけた時にあなたは反射をどんなものか感じるかもしれません.
|
|
20Mbytes/sec で信号の伝わる SCSIバスでは信号のエコーはあ
|
|
りがたくありません.
|
|
|
|
訳注: 電気信号のパルスは進行波としての性格を持っています.
|
|
このため, 一般的には信号線の両端で反射が起きます.
|
|
3mのバスの端からパルスを入れた場合,
|
|
反対の端からの反射波は 20ns後 - 本当は電線中の信号の伝達は
|
|
光速よりも少し遅くなるのでもう少し時間がかかりますが -
|
|
に返ってきます. 低速のバスの場合タイミング的な余裕があり,
|
|
反射を繰り返しているうちに反射波は減衰してしまうのですが
|
|
高速のバスの場合は, 反射波の影響が落ち着く前に信号の
|
|
読み込みなどを行うために波形の乱れが誤動作の原因に
|
|
なる場合があります.
|
|
このためターミネータを使用して反射波の発生をできるだけ
|
|
おさえます.
|
|
|
|
|
|
ターミネータはいろいろな - 洗練されたものもそうでないものも
|
|
- 実現方法があります. もちろん, 内蔵のものと外部という
|
|
区別もあります. 多くの SCSIデバイスにはいくつかの
|
|
ソケットがあり, その中には抵抗ネットワーク (集合抵抗) が
|
|
入っているものもあるかもしれません (いや, おそらく
|
|
間違いなくあるでしょう). ターミネータを
|
|
デバイスから外す時は大事にしまっておいてください. SCSIの接
|
|
続の変更をしようと思った時に必要になるかもしれません. ま
|
|
た, それらしい抵抗ネットワークが見つからないこともあります.
|
|
この場合, SCSIデバイスは内蔵ターミネータの有効と無効を切替
|
|
えるジャンパがあります. フラットケーブルに取り付ける特別
|
|
なターミネータもあります. 他には外部コネクタのような形をし
|
|
たものやケーブルのないコネクタヘッドだけのものもあります.
|
|
いろいろと見られるように多くの選択があります.
|
|
|
|
どのような場合に単純な抵抗 (パッシブ) ターミネータから
|
|
アクティブターミネータへ切替えるかという問題があります.
|
|
アクティブターミネータはいくらか精巧な回路が信号をより
|
|
きれいにするために入っています.
|
|
一般的に受け入れられている意見としては, 長いバスを使ったり
|
|
高速なデバイスを使う場合はアクティブターミネータの
|
|
有効性は増加すると言えます. SCSI バスですでに問題が起きて
|
|
いるならアクティブターミネータを試すことを考えていいで
|
|
しょう. まず借りることができないか探してみてください.
|
|
アクティブターミネータは非常に高価だそうですから.
|
|
|
|
ディファレンシャルとシングルエンドバスのターミネータは互換
|
|
性がないということを覚えておいてください. これらの2つの種
|
|
類を <bf>混在させることはできません</bf>.
|
|
|
|
OK, ではあなたはターミネータをどこに入れればいいでしょうか?
|
|
これは SCSIで最も多く誤解されているところです. しかし, これ
|
|
は極めて単純なことです.. ここでのルールは <bf>SCSIバスの線
|
|
一本一本は必ず両端に 2個のターミネータを入れる</bf>
|
|
ということです. つまり 2個であって1個でも3個でもありません.
|
|
このルールを受け入れてしたがってください. そうすれば終りの
|
|
ない苦しみから救われるでしょう.
|
|
なぜなら間違ったターミネーションは不可解なバグを引き起こす
|
|
可能性が非常に高いからです.
|
|
(ここの「可能性」に注意; 一見動いているように見える
|
|
ことがあるのがやっかいです.)
|
|
|
|
よく陥りやすい落し穴はマシンの内部 (フラット) ケーブルと外部
|
|
ケーブルがコントローラにつながっている場合です. よく見られ
|
|
るのはコントローラのターミネータを外すのを忘れることです.
|
|
ターミネータは最後の外部デバイスで必要で, コントローラ
|
|
には必要ありません! 一般的に, SCSIバスの接続の変更をする場
|
|
合はこのようなことに注意をしなければなりません.
|
|
|
|
ターミネータの位置は信号線ごとに決まることに注意して下さい.
|
|
ナローとワイドのケーブルを両方コントローラにつないでいる場
|
|
合には, ケーブルの両端とともにコントローラ上ではバスの上位
|
|
8ビットをターミネートしないといけません.
|
|
|
|
私自身は, すべてのデバイスとコントローラのターミネータを外し
|
|
ています. 2個の外部ターミネータをセントロニクスタイプ (訳注:
|
|
日本ではケーブルに対してこういう言い方はあまりしないのでは
|
|
ないでしょうか) 外部ケーブルと内部フラットケーブルの
|
|
コネクタの両端に接続しています.
|
|
こうすることにより接続の変更はかなり簡単になります.
|
|
|
|
最近のデバイスは, ICターミネータが使われることもあります.
|
|
コントロールピンにより無効/有効を設定できる特別のICがあります.
|
|
これは物理的にデバイスから外す必要がありません.
|
|
新しいホストアダプタではセットアップツール等を使って
|
|
ソフトウェア的に設定をおこなう場合があります.
|
|
また、中には端子に接続されたケーブルを検出してターミネータ
|
|
を必要に応じて自動的に
|
|
有効にするものもあります. いずれにしろ, マニュアルを見てく
|
|
ださい.
|
|
|
|
<sect3><heading>ターミネータの電源</heading>
|
|
<p>
|
|
ここまでの章で議論したターミネータは正常に動作するためには
|
|
電源が必要です. SCSIバス上にはこの目的のために利用される線があります.
|
|
だから特に気にする必要はないと思いますか?
|
|
|
|
ところがそうではないのです. それぞれのデバイスはデバイス上
|
|
にあるターミネータソケットに電源を供給することはできます.
|
|
けれども外部ターミネータがある場合やSCSIバスにターミネータ
|
|
の電源を供給するデバイスのスイッチがオフになっているような
|
|
場合にはトラブルが起きるかもしれません.
|
|
|
|
イニシエータ (ここではバスの動作を開始-initiate-させる
|
|
デバイスを指します --
|
|
訳注: 簡単に言えばホスト側のアダプタですがSCSIの
|
|
規格によれば, 例えばディスク側がコマンドを発行するような
|
|
システムがあってもかまわないことになっているので
|
|
こういう言い方をしています) は
|
|
ターミネータ電源を供給しなければなりません.
|
|
すべてのSCSIデバイスはターミネータの電源を供給することが
|
|
できます (必ずしも供給しなければならないというわけ
|
|
ではありません).
|
|
|
|
スイッチがオフになっているデバイスがバス上に存在することを
|
|
許すために, ターミネータの電源はダイオードを通して供給され
|
|
なければなりません. これはスイッチを切ったデバイスに電流
|
|
が逆流することを防ぐためです.
|
|
|
|
最悪の事態を避けるために, ターミネータの電源は普通はヒュー
|
|
ズが入っています. 当然ヒューズは飛ぶかもしれません. この
|
|
場合でもバスが機能停止するとは限りません. 複数のデバイスが
|
|
ターミネータの電源を供給しているのであれば, ヒューズが一つ
|
|
飛んでも全体の機能には影響しません. ただ一つの供給線の
|
|
ヒューズが飛んだのであれば確かに問題になるでしょう.
|
|
外部ターミネータによっては LED でターミネータ電源
|
|
が与えられていることを示すものもあります.
|
|
|
|
最新の設計ではある程度の時間がたつと 「リセット」され
|
|
自動復帰するヒューズが使われることもあります.
|
|
|
|
<sect3><heading>デバイス アドレッシング</heading>
|
|
<p>
|
|
SCSIバスでは接続された異なるデバイスを区別して指定
|
|
できなければなりません.
|
|
|
|
これには SCSIではターゲットIDが使われます. それぞれのデバイ
|
|
スは特定のターゲットIDを持ちます. デバイスの IDはジャンパや
|
|
DIPスイッチなどで設定できます. ブート時のメニューからIDを
|
|
変更できるようになっているコントローラもあります. (また,
|
|
IDを 7から変えることができないコントローラもあります.)
|
|
より詳しい情報はデバイスのマニュアルを見てください.
|
|
|
|
複数のデバイスを使う場合は IDの重複に気をつけてください.
|
|
重複すると普通は混乱状態になります. 同じ IDを共有している
|
|
デバイスのうちの一つがI/Oリクエストに答えられたりすると
|
|
非常にやっかいなことになります.
|
|
|
|
8 bitバスでは, 最大8台のターゲットまで可能です. 最大8台で
|
|
ある理由は, バスの8本のデータ線がデバイスの選択に使われる
|
|
からです. ワイドなバスでは使えるデバイスの数は増えます
|
|
(通常は16になるわけです).
|
|
ナローSCSIデバイスは8以上のターゲットIDを持つデバイスとは
|
|
通信できないことに注意してください. ですから, コントローラ
|
|
のターゲットIDを8以上にするのはあまりいい考えとは
|
|
いえません (CD-ROMが使えなくなったりします).
|
|
|
|
同時にバス使用の要求が発生した場合, 最も IDの大きいデバイス
|
|
が優先されるという調停がおこなわれます. このことは
|
|
SCSIホストアダプタの IDは通常7番が使われる理由でもあり
|
|
ます. ただし, ワイドバスでは下位8ビットが上位8ビットより優
|
|
先度が高いことに注意してください. つまり, ワイドSCSIのシス
|
|
テムではターゲットIDの優先度は高い順に
|
|
<tt>[7 6 .. 1 0 15 14 .. 9 8]</tt> となります.
|
|
(どうして下位8ビットの方が優先度が高いかは,
|
|
一つ前の段落を読んで考えてみて下さい.)
|
|
|
|
さらにサブユニットとして, 規格では ロジカルユニット,
|
|
短縮形で LUNを持つことができます. 一つのターゲットIDが複数の LUNを
|
|
持つことができます. 例えば, テープチェンジャを持つテープ
|
|
ドライブは LUN 0をテープドライブ自身, LUN 1を
|
|
テープチェンジャ に与えることができます.
|
|
このようにして, ホストシステムはテープチェンジャの目的の
|
|
テープユニットの部分を指定することができます.
|
|
|
|
<sect3><heading>バスの形状</heading>
|
|
<p>
|
|
|
|
SCSIバスは直線状です. つまり, Y接続, スター接続, 円形,
|
|
クモの巣状の接続などの直線以外の接続ではありません. 初心者が
|
|
よくやる間違いとしてはワイドSCSIのコントローラの端子3つと
|
|
もにケーブルをつないでしまうというものがあります. (外部,
|
|
内部ナロー, 内部ワイド.) よほど運がよければこんなトポロジー
|
|
でもちゃんと動くように見えるかもしれませんが, えてしてこう
|
|
いうシステムは一番大切な時に使えなくなったりするものです
|
|
(これを「マーフィーの法則」といいます).
|
|
|
|
先に議論したターミネータの問題は直線状以外の場合では
|
|
より困難になるだろうということに注意してください. また,
|
|
内部バス用のケーブルの端子の数よりデバイスの数の方が少ない場合には,
|
|
必ず両端の端子にはデバイスをつなぐようにしてください.
|
|
内側の端子を使ってケーブルの端を余らせておくと,
|
|
ターミネータの効果が半減します.
|
|
|
|
電気的特性はそのノイズマージンや全体の信頼性において,
|
|
直線状のバスのルールに強く依存しています.
|
|
|
|
<bf>直線状バスであるというルールにしたがってください!</bf>
|
|
|
|
<sect2><heading>FreeBSD で SCSIを使う</heading>
|
|
<p>
|
|
<sect3><heading>トランスレーション, BIOS, そしてマジック...</heading>
|
|
<p>
|
|
まず始める前に, 電気的に問題のないバスであるか調べておいてく
|
|
ださい.
|
|
|
|
SCSIディスクをPCでブートディスクとして使う場合に, PC BIOSに
|
|
関する気まぐれについて知っておく必要があります. PC BIOSは
|
|
ハードディスクへの低レベル物理インタフェースを利用するように
|
|
実現されています.
|
|
したがって, BIOSに (セットアップツールやBIOSビルトイン
|
|
セットアップを使って) ディスクの物理パラメタを教えてやる
|
|
必要があります. これはヘッドの数, シリンダの数,
|
|
トラックあたりのセクタなどがあり,
|
|
プリコンペンセーションや書き込み電流を
|
|
減少させるトラック, などのあまりよく知られていないものもあります.
|
|
|
|
SCSIディスクはこれらのことをユーザは気にする必要がないはず
|
|
だと考えるかもしれません. しかし, 不思議なことに (これらの項
|
|
目の) セットアップはいまだにあるのです. システム BIOSはブート
|
|
時にFreeBSDのカーネルを読み込むためにSCSIディスクに
|
|
/ヘッド/シリンダ/セクタ を指定する方法でアクセスするため,
|
|
パラメタを知る必要があるのです.
|
|
|
|
AT/EISA/PCIバスなどにあり, ディスクに接続される
|
|
SCSIホストアダプタや SCSIコントローラは
|
|
それ自身のオンボードBIOSを持っています. システムの起動時に,
|
|
SCSI BIOSは
|
|
システムBIOSのハードディスクのインタフェースルーチンを乗っ取ります.
|
|
システムBIOSをごまかすために システムセットアップでは普通は
|
|
`No hard disk' とします. 簡単ですね?
|
|
|
|
訳注: BIOS で `No hard disk' という設定をおこなうのは
|
|
SCSI ドライブから直接起動させるためのテクニックです.
|
|
現在のマザーボードでは SCSI ドライブから起動させるための
|
|
オプションを持つ BIOS を使用しているものもあります. また,
|
|
ブートセレクタを使って IDEドライブのブートブロックから
|
|
SCSIドライブ上の FreeBSDをブートすることもできます.
|
|
|
|
SCSI BIOS はドライブの<bf>トランスレーション</bf>と呼ばれる
|
|
機能を持ちます. これはPCがブートするために作られたドライブテー
|
|
ブルをごまかすものです. このトランスレーションは多くは
|
|
(すべての場合ではありません)
|
|
トラックあたり64あるいは32個のヘッドを
|
|
持つ仮想的なドライブを使います. シリンダの数を変更することで
|
|
SCSI BIOS は実際のドライブのサイズに適合させます. 総セクタ数
|
|
を 32 * 64 / 2 で割った結果がメガバイト単位のドライブのサイズ
|
|
になります. 2で割っているのは, 通常 512バイトのサイズの
|
|
セクタを kByte 単位に変換するためです.
|
|
|
|
ではこれですべてうまくいくのでしょうか. いいえ, そういう訳で
|
|
はありません. ブート可能なハードディスクのシリンダ数は 1024よ
|
|
り多くすることはできないのです. トランスレーションを使った
|
|
場合でもディスクの 1GB以上の領域は見えません. ディスクの容量
|
|
がどんどん増加していくにつれこれは問題になってきました.
|
|
|
|
幸いにして, 単純な解決方法があります. 単に別のトランスレーショ
|
|
ンを使えばよいのです. 例えば, 32個に代わり, 128個のヘッドを使います.
|
|
ほとんどの場合, 古いSCSIホストアダプタをアップグレードす
|
|
るための新しいバージョンの SCSI BIOS が用意されています.
|
|
新しいアダプタではジャンパ
|
|
やセットアップソフトによって SCSI BIOSの使う
|
|
トランスレーションを選択できる物もあります.
|
|
|
|
ここで非常に重要なことは, ディスク上の<bf>すべての</bf>
|
|
オペレーティングシステムが
|
|
<bf>同一のトランスレーション</bf>を使って
|
|
正しいパーティションを得ることです.
|
|
つまり FreeBSDをインストールする時に,
|
|
ヘッド/シリンダなどについての質問にあなたのホストアダプタが
|
|
使用しているトランスレートされた値を使わなくてはなりません.
|
|
|
|
トランスレーションに関する失敗でよく見られるものは,
|
|
ブートしないシステムができたり, 他のパーティションを
|
|
上書きしてしまうことです. すべてのシステムが見えるように
|
|
fdiskを使うべきです.
|
|
|
|
あなたはデバイスについてこれとは食い違った話を聞いたことが
|
|
あるかもしれません. 古い FreeBSDのカーネルはブートする時に
|
|
SCSI ディスクのジオメトリ情報を報告していました.
|
|
私のシステムの一つの例を示しましょう.
|
|
|
|
<verb>
|
|
aha0 targ 0 lun 0: <MICROP 1588-15MB1057404HSP4>
|
|
sd0: 636MB (1303250 total sec), 1632 cyl, 15 head, 53 sec, bytes/sec 512
|
|
</verb>
|
|
最近のカーネルは, 普通はこのような情報を報告しません. たとえば,
|
|
このようになっています.
|
|
|
|
<verb>
|
|
(bt0:0:0): "SEAGATE ST41651 7574" type 0 fixed SCSI 2
|
|
sd0(bt0:0:0): Direct-Access 1350MB (2766300 512 byte sectors)
|
|
</verb>
|
|
|
|
なぜこのように変わったのでしょう?
|
|
|
|
この情報は SCSIディスク自身から得られます. 最近のディスクで
|
|
はよくゾーンビット記録方式 (zone bit recording) という
|
|
技術が使われています. これはドライブの外側のシリンダは
|
|
内側よりもスペースが広いのでトラックあたりのセクタ数を
|
|
増やすことができるというアイディアです.
|
|
この結果, 外側のシリンダ上のトラックの容量は内側の
|
|
シリンダよりも大きくなり, 全体ではより大きな容量となります.
|
|
この場合, ドライブにのジオメトリについての報告は,
|
|
最善のものかどうか疑わしく, ほとんどの場合誤解を招くものであ
|
|
ることがわかるでしょう.
|
|
ジオメトリを調べる場合, ほとんどの場合は BIOSの用い
|
|
ている値を与える方がよい結果となり, <em>BIOSがそのディスクに
|
|
ついてまったく関知しないのであれば</em> (例えばブートディスクで
|
|
はないなら) 都合のよい仮想のジオメトリを与えればいいでしょう.
|
|
|
|
|
|
<sect3><heading>SCSI サブシステムの設計</heading>
|
|
<p>
|
|
FreeBSDでは階層的な SCSIサブシステムを用いています. それぞれ
|
|
異なるコントローラカードのデバイスドライバが書かれています.
|
|
このドライバはコントローラのハードウェアの詳細を知っています.
|
|
ドライバは
|
|
SCSIサブシステムのより上位の階層のコマンドを受け取り,
|
|
ステータスを報告するインタフェースを持ちます.
|
|
|
|
カードのドライバの最上位には, デバイスのクラスのための
|
|
いくつかの一般的なドライバがあります. 具体的にいうと,
|
|
テープドライブのためのドライバ (略号は: st), 磁気ディスク
|
|
(sd), CD-ROM (cd) などです. これらのソースコードは
|
|
<tt>/sys/scsi</tt>にあります.
|
|
マニュアルページ (man) のセクション 4 にはより詳しい内容が
|
|
あるので見てください.
|
|
|
|
多階層の設計は低レベルとより高位のレベルを分離させることが
|
|
できます. 新たに他の種類のハードウェアのサポートを加えることを
|
|
より処理しやすい問題にします.
|
|
|
|
<sect3><heading>カーネルコンフィグレーション</heading>
|
|
<p>
|
|
あなたのハードウェア構成にしたがって, カーネルの
|
|
コンフィグファイルに
|
|
ホストアダプタについて 1行あるいは数行程度の記述をする
|
|
必要があります.
|
|
これには I/O アドレスや割り込みなどについての内容も
|
|
含みます. あなたのアダプタのドライバについてのマニュアルページ
|
|
にはより多くの情報があるのでよく読んでください. これとは別に
|
|
/sys/i386/conf/LINT にはカーネルコンフィグファイルについての
|
|
概要があります. LINTには一般的なものについては可能なすべての
|
|
オプションが含まれています. ただし,
|
|
LINTでは実際に動作するカーネルを作ることは
|
|
<em>できません</em>.
|
|
|
|
当然のことを言うようで恐縮ですが,
|
|
カーネルコンフィグファイルは実際のハードウェア構成を
|
|
反映すべきです. そのように割り込みやI/Oアドレス等に
|
|
合わせてカーネルコンフィグファイルを書か
|
|
なければなりません. システムのブート時のメッセージは実際に
|
|
見つけたハードウェアの設定を表示します. ほとんどの EISA/PCI
|
|
用のドライバ (具体的には <tt>ahb, ahc, ncr</tt> と
|
|
<tt>amd</tt>です) はブート時にコントローラから直接パラメータ
|
|
を読むことに注意してください. これらについては, 何も引数をつ
|
|
けずにただ "<tt>controller ahc0</tt>" のように書けば大丈夫で
|
|
す.
|
|
|
|
例として FreeBSD 2.2.5-Releaseのいくつかのコメント
|
|
([]の中) をつけた LINTカーネルコンフィグファイルを示
|
|
します.
|
|
|
|
<verb>
|
|
|
|
# SCSI host adapters: `aha', `ahb', `aic', `bt', `nca'
|
|
#
|
|
# aha: Adaptec 154x
|
|
# ahb: Adaptec 174x
|
|
# ahc: Adaptec 274x/284x/294x
|
|
# aic: Adaptec 152x and sound cards using the Adaptec AIC-6360 (slow!)
|
|
# amd: AMD 53c974 based SCSI cards (e.g., Tekram DC-390 and 390T)
|
|
# bt: Most Buslogic controllers
|
|
# nca: ProAudioSpectrum cards using the NCR 5380 or Trantor T130
|
|
# ncr: NCR/Symbios 53c810/815/825/875 etc based SCSI cards
|
|
# uha: UltraStore 14F and 34F
|
|
# sea: Seagate ST01/02 8 bit controller (slow!)
|
|
# wds: Western Digital WD7000 controller (no scatter/gather!).
|
|
#
|
|
|
|
[ Adaptec AHA274x/284x/294x/394x などのコントローラ]
|
|
controller ahc0
|
|
|
|
[ NCR/Symbios 53c875 コントローラ]
|
|
controller ncr0
|
|
|
|
[Ultrastor アダプタ]
|
|
controller uha0 at isa? port "IO_UHA0" bio irq ? drq 5 vector uhaintr
|
|
|
|
# Map SCSI buses to specific SCSI adapters
|
|
controller scbus0 at ahc0
|
|
controller scbus2 at ncr0
|
|
controller scbus1 at uha0
|
|
|
|
# The actual SCSI devices
|
|
disk sd0 at scbus0 target 0 unit 0 [SCSI ディスク 0 は scbus 0, LUN 0]
|
|
disk sd1 at scbus0 target 1 [unit を省略すると暗黙で LUN 0]
|
|
disk sd2 at scbus1 target 3 [uha0 上の SCSIディスク]
|
|
disk sd3 at scbus2 target 4 [ncr0 上の SCSIディスク]
|
|
tape st1 at scbus0 target 6 [SCSI テープ は ターゲット (ID)6]
|
|
device cd0 at scbus? [最初に見つけた CD-ROM, 固定にしない]
|
|
|
|
</verb>
|
|
|
|
上の例では カーネルは ahc (Adaptec 274x) コントローラをまず探し,
|
|
その次に NCR/Symbios のボードというように順番に探して
|
|
行きます. その下の行の controller の記述ではデバイスの詳細
|
|
を記述して, 対応するバスでターゲット ID と LUN が指定された
|
|
ものと一致する場合<em>だけ </em>認識するようにカーネルに
|
|
伝えています.
|
|
|
|
固定された (Wired down) デバイスは 「最初に」ユニット番号が
|
|
与えられるので,
|
|
「固定」されいないデバイスは同じ種類の「固定」されたユニット
|
|
番号の最も大きい番号の1つ上の番号から割り当てられます.
|
|
したがって, ターゲットID 2の SCSIテープを加えると, ターゲットID 6
|
|
のテープがユニット番号1に固定されているので, それはst2に設定
|
|
されるでしょう. ブート時に見つからなくても<em>固定されたデバ
|
|
イスにはユニット番号が常に割り当てられる</em>ということに
|
|
注意してください. 固定のデバイスに
|
|
割り当てられたユニット番号は, もしそのデバイスのスイッチが
|
|
ブート時に切られていてもそのデバイスにリザーブされています.
|
|
これは, 電源を入れて接続した時のユニット番号が与えられます.
|
|
デバイスのユニット番号は SCSIバスのターゲットID
|
|
とは <em>何の関係もない</em>ことに注意してください.
|
|
|
|
下の例は FreeBSDのバージョン 2.0.5 以前の カーネルコンフィ
|
|
グファイルです. 最初の例との違いはデバイスの「固定 (wired
|
|
down)」がないことです. 「固定」によりどのSCSIターゲットをどの
|
|
デバイスに割り当てるかを記述できるようになりました.
|
|
|
|
下のコンフィグファイルにより構築されたカーネルでは最初に見つ
|
|
けた SCSIディスクが sd0になり, 次に見つけたディスクが sd1に,
|
|
という具合に割り当てられます. もしディスクの削除や追加をおこなう
|
|
と, 他の同じタイプのデバイス (この場合はディスク) のすべてが
|
|
「移動して」しまうかもしれません. これによりそのたびに
|
|
<tt>/etc/fstab</tt> を変更する必要があります.
|
|
|
|
古いスタイルでも動きますが, 新しいスタイルを使うことが<em>強
|
|
く</em> 推奨されています. これにより SCSIバスのハードウェアを
|
|
どのように変更した場合でもトラブルを避けることができます.
|
|
ですから, 2.0.5.R以前の FreeBSDからアップグレードした後に古い
|
|
信頼できるコンフィグファイルを再利用する時はこの部分を
|
|
チェックして直してください.
|
|
|
|
<verb>
|
|
[Adaptec 174x用のドライバ]
|
|
controller ahb0 at isa? bio irq 11 vector ahbintr
|
|
[Adaptec 154x用のドライバ ]
|
|
controller aha0 at isa? port "IO_AHA0" bio irq 11 drq 5 vector ahaintr
|
|
[Seagate ST01/02インタフェースのドライバ]
|
|
controller sea0 at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr
|
|
controller scbus0
|
|
|
|
device sd0 [4台のSCSI ディスクのサポート, sd0 から sd3]
|
|
|
|
device st0 [2台の SCSI テープのサポート]
|
|
|
|
[CD-ROMのドライバ]
|
|
device cd0 #Only need one of these, the code dynamically grows
|
|
</verb>
|
|
|
|
|
|
両方の例で SCSIディスクがサポートされています. ブート中に
|
|
「固定」の記述がされているタイプ(例えば sd ディスク) のデバ
|
|
イスで記述より多くのデバイスが見つかると,
|
|
システムは単純に最後の「固定」のデバイスの番号より
|
|
1つずつ増加させた番号をデバイスに割り当てて行きます. もし
|
|
「固定」のデバイスがなければユニット番号は0から始まります.
|
|
|
|
<tt>man 4 scsi</tt> によって SCSIサブシステムの最新の情報を
|
|
チェックしてください. より詳細なホストアダプタドライバの使い
|
|
方は, たとえば Adaptec 294xドライバの場合は<tt>man 4
|
|
ahc</tt> にあります.
|
|
|
|
<sect3><heading>カーネルセットアップでの SCSI チューニング</heading>
|
|
<p>
|
|
経験的に SCSIバスリセット (ブート時におきます) 後のINQUIRYコマ
|
|
ンドに対して応答が遅くなるデバイスがあります.
|
|
INQUIRYコマンドは
|
|
ブート時にカーネルがどの種類のデバイス (ディスク, テープ,
|
|
CD-ROMなど) がどのターゲットIDに接続されているかを調べるために
|
|
発行します. ちなみにこのプロセスをデバイスプロービング
|
|
(デバイス検出) と言います.
|
|
|
|
「応答の遅いデバイス」の問題を解決するために, FreeBSDは
|
|
SCSIバスをリセットした後に SCSIデバイスの検出を
|
|
おこなうまでのディレイタイムを調整することができます.
|
|
カーネルコンフィグレーションファイルの下に示すような
|
|
行にディレイタイムを設定してください.
|
|
|
|
<verb>
|
|
options SCSI_DELAY=15 #Be pessimistic about Joe SCSI device
|
|
</verb>
|
|
この行ではディレイタイムは 15秒です. 私のシステムでは,
|
|
信頼できる古い CD-ROMが認識できるように3秒の値を使っています. もし
|
|
デバイスの認識で問題が起きる時は大きな値 (30秒であるとか) から
|
|
始めてください. うまく動いたら, 値を減らしてちょうどよい値
|
|
にチューニングしてください.
|
|
|
|
|
|
<sect3><heading>Rogue な SCSI デバイス<label id="scsi:rogue-devices"></heading>
|
|
<p>
|
|
|
|
(訳注: rogue は有名なゲーム, ではなくて 悪党, 群から離れた,
|
|
凶暴な, という意味)
|
|
|
|
SCSIの規定は完全で簡潔なものにしようという努力はされましたが,
|
|
複雑な規定となり, 正確に実現するのは簡単なことではありません.
|
|
いくつかのベンダは他よりもよい仕事をしています.
|
|
|
|
ここで 「イカレた」デバイスが現れることになります. このような
|
|
デバイスは FreeBSD のカーネルにいくらか標準的
|
|
ではない振舞をするものと認識されます. 「イカレた」デバイスは
|
|
ブート時にカーネルによって報告されます. 次の例は私の2つの
|
|
カートリッジテープユニットです.
|
|
|
|
<verb>
|
|
Feb 25 21:03:34 yedi /kernel: ahb0 targ 5 lun 0: <TANDBERG TDC 3600 -06:>
|
|
Feb 25 21:03:34 yedi /kernel: st0: Tandberg tdc3600 is a known rogue
|
|
|
|
Mar 29 21:16:37 yedi /kernel: aha0 targ 5 lun 0: <ARCHIVE VIPER 150 21247-005>
|
|
Mar 29 21:16:37 yedi /kernel: st1: Archive Viper 150 is a known rogue
|
|
</verb>
|
|
|
|
例えば, あるターゲットIDから実際には1つのデバイスしかないの
|
|
にすべての LUNからの応答があるようなデバイスがあるとします. カー
|
|
ネルはその特定のターゲットIDに8個の LUNがあると誤解してしまう
|
|
かもしれません. このような混乱の起きる原因については読者へ
|
|
の課題にしておきます.
|
|
|
|
FreeBSDの SCSIサブシステムは 検出時の INQUIRYの応答を見て
|
|
悪い習慣を持つデバイスの認識をしています. INQUIRYの応答には
|
|
デバイスのファームウェアのバージョン番号が含まれるため, 異なる
|
|
動作をするファームウェアのバージョンを区別することも可能です.
|
|
例えば, /sys/scsi/st.c や /sys/scsi/scsiconf.c を
|
|
見てください.
|
|
どのように行っているか, より多くの情報があります.
|
|
|
|
この方法はうまく行きますが, もちろん既知のデバイスがつながっ
|
|
ている場合だけうまくいくということに気をつける必要があります.
|
|
もしあなた以前に Mumbletech SCSI CD-ROM (訳注: 架空のメーカ
|
|
のデバイスです) を接続した人がいないとしたら, どんな「ワザ」
|
|
を使ってそれを使うか自分で見つけないといけないかもしれません.
|
|
|
|
あなたの Mubletech を動かすことができたらその成果を FreeBSDの
|
|
次のリリースへ含めるために FreeBSD開発チームへ送ってくださ
|
|
い. 他の Mumbletechの利用者たちはあなたに感謝するでしょう.
|
|
|
|
|
|
<sect3><heading>複数の LUNを持つデバイス</heading>
|
|
<p>
|
|
単一の SCSI ID上に複数の論理ユニット (LUN) を持つデバイスを使う
|
|
ような場合もあるかもしれません. 多くの場合では FreeBSDは LUN 0
|
|
のみを検出します. このような例としては2台の SCSIではないハード
|
|
ディスクを SCSIバスにつなぐブリッジボード (例えば古い Sunシステ
|
|
ムに見られる Emulex MD21) があります.
|
|
|
|
LUN が0ではないデバイスは普通はシステムブート時の検出では
|
|
見つかりません. この問題にうまく対処するには
|
|
/sys/scsi/scsiconf.c に適切なエントリを加えてカーネルを再構築
|
|
しなければなりません.
|
|
|
|
以下のように初期化されている構造体を探します.
|
|
<verb>
|
|
{
|
|
T_DIRECT, T_FIXED, "MAXTOR", "XT-4170S", "B5A",
|
|
"mx1", SC_ONE_LU
|
|
}
|
|
</verb>
|
|
|
|
LUNが複数あるあなたの Mumbletech BRIDGE2000 はハードディスク
|
|
として働きます. またファームウェアのリビジョン123などを次のよ
|
|
うに書き加えます.
|
|
|
|
<verb>
|
|
{
|
|
T_DIRECT, T_FIXED, "MUMBLETECH", "BRIDGE2000", "123",
|
|
"sd", SC_MORE_LUS
|
|
}
|
|
</verb>
|
|
|
|
訳注: 複数 LUNに対応するためには構造体の最後の要素を
|
|
SC_MORE_LUSにします. エントリを作る必要がある場合は scsiconf.c
|
|
にある MBR-7等のエントリを参考にするといいでしょう.
|
|
|
|
カーネルは INQUIRYに一致するデータをブート時にテーブルから
|
|
探してこれにしたがってふるまいます. より多くの情報は
|
|
ソースコードを見てください.
|
|
|
|
<sect3><heading>タグ コマンド キューイング</heading>
|
|
<p>
|
|
最近の SCSI デバイス, 特に磁気ディスクではタグ コマンド
|
|
キューイング (tagged command queuing: TCQ) がサポートされています.
|
|
|
|
要約すれば, TCQは複数のI/Oリクエストを同時に受けることを可能
|
|
にすることです. デバイスはインテリジェントですから,リクエスト
|
|
キューにある処理 (ヘッドのポジショニングなど) の最適化を
|
|
おこなうことができます. RAID (Redundant Array of Independent
|
|
Disks) のようなSCSIデバイスではTCQ機能はデバイスの持つ並列性の
|
|
利点を生かすために不可欠です.
|
|
|
|
各々の I/O リクエストは単一の `tag' (タグ コマンド キューイン
|
|
グの名前の由来) が与えられます. FreeBSDはこの tagによりデバ
|
|
イスドライバのキューの中のどの I/Oリクエストが完了したかの
|
|
識 別をおこないます.
|
|
|
|
TQCのリクエストはデバイスドライバがサポートしていたとしても
|
|
あるデバイスのファームウェアではインプリメントが正しくない
|
|
かもしれません. このような問題に出会うと非常に不可解な問題に
|
|
つながります. このような場合は TCQ を無効にしてみてください.
|
|
|
|
<sect3><heading>バスマスタ ホストアダプタ</heading>
|
|
<p>
|
|
すべてではありませんが多くの SCSIホストアダプタは
|
|
バスマスタコントローラです. これはホストCPUにデータ転送の
|
|
負荷をかけず, ボード自身がI/Oをおこないます.
|
|
|
|
これは FreeBSDのようなマルチタスクのオペレーティングシステム
|
|
では大きな利点になります. しかし, 何らかの問題の起きることも
|
|
あります.
|
|
|
|
例えば Adaptec 1542 コントローラは ホストバス (ここでは ISA
|
|
または AT バス) を異なった転送速度に設定できます.
|
|
コントローラが
|
|
異なるレートに設定できるのはすべてのマザーボードで高速な転送が
|
|
できるわけではないからです. マザーボードに合っていない高速の
|
|
データ転送速度を用いた時には, ハングアップやデータの損傷等の
|
|
問題が起きるかもしれません.
|
|
|
|
|
|
これを解決する方法は明らかです. より低いデータ転送速度に設定
|
|
してうまく動くか確かめることです.
|
|
|
|
Adaptec 1542の場合, 可能な限り高速な転送レートを動的に読み取って,
|
|
正しい決定をおこなうためのオプションをカーネルコンフィグファイルに
|
|
追加することができます. このオプションはデフォルトでは無効に
|
|
なっています.
|
|
|
|
|
|
<verb>
|
|
options "TUNE_1542" #dynamic tune of bus DMA speed
|
|
</verb>
|
|
|
|
あなたの使うホストアダプタについてのマニュアルページを
|
|
チェックしてください.
|
|
また最終的な手段としては究極のドキュメントを
|
|
使ってください (つまりドライバのソースを読んでくださいというこ
|
|
とです).
|
|
|
|
訳注: 2.1.5Rの時点ではすべてのドライバに関してマニュアルページ
|
|
があるわけではありません. また上の例の TUNE_1542のオプション
|
|
も <tt>man aha </tt>にはないようです. ソースのコメントだけで
|
|
も一度見ておいてもいいかもしれません.
|
|
|
|
|
|
<sect2><heading>問題を突き止める </heading>
|
|
<p>
|
|
以下は SCSI で一般的に問題が起きた場合に解決をするためのチェッ
|
|
クリストの試みです. これは完全な物ではありません.
|
|
|
|
<itemize>
|
|
<item>
|
|
コネクタとケーブルがゆるんでいないかチェックする.
|
|
<item>
|
|
ターミネータの場所と数を念には念を入れてチェックする.
|
|
<item>
|
|
少なくとも1つのターミネータの電源の供給源があるかチェック
|
|
する (特に外部ターミネータを使う場合).
|
|
<item>
|
|
ターゲットIDが重複していないかチェックする.
|
|
<item>
|
|
使用するすべてのデバイスの電源がONになっているかチェックする.
|
|
<item>
|
|
必要最小限のデバイスだけの構成を試してみる.
|
|
<item>
|
|
可能であれば, ホストアダプタのスピードを遅くする.
|
|
<item>
|
|
問題をより単純にするために, タグコマンドキューイングを可能
|
|
であれば無効にする. (NCRベースのホストアダプタについては
|
|
man ncrcontrol を見てください)
|
|
<item>
|
|
カーネルのコンパイルができるのであれば, SCSIDEBUGオプショ
|
|
ンをつけて makeして, デバイスをデバッグモードにしてアクセ
|
|
スしてみてください. もしそれでも起動時にデバイスが検出
|
|
されないのであれば, デバイスの設定アドレスが間違っている
|
|
のかもしれません. また, <tt>/sys/scsi/scsidebug.h </tt>に
|
|
あるデバッグレベルを変えてみてください. 検出はされるが
|
|
動かないのであれば, <tt>scsi(8)</tt>コマンドで (SCSIDEBUG
|
|
をつけてmakeした) カーネルが動いている状態で動的にデバッグ
|
|
レベルを設定することができます. これは guru (UNIXの達人) で
|
|
も混乱してしまうほどの非常に大量のデバッグ情報を出すでしょ
|
|
う. <tt>man 4 scsi
|
|
</tt>にはより正確な情報があります. また<tt>man 8
|
|
scsi</tt> も見てください.
|
|
</itemize>
|
|
|
|
<sect2><heading>さらに詳しい情報<label id="scsi:further-reading"></heading>
|
|
<p>
|
|
もしあなたがいくらかは本気で SCSIハッキングをする気があるなら
|
|
たぶん正規の規格を持っていたくなるでしょう.
|
|
|
|
承認ずみのアメリカ工業規格は ANSI から購入できます. 住所と電話
|
|
番号は11 West 42nd Street, 13th Floor, New York, NY 10036,
|
|
Sales Dept: (212) 642-4900 です.
|
|
また, ANSIの規格および委員会の規格案 (ドラフト) のほとんどはGlobal
|
|
Engineering Documentsより買うことができます. 連絡先は 15
|
|
Inverness Way East, Englewood, CO 80112-5704, Phone: (800)
|
|
854-7179, Outside USA and Canada: (303) 792-2181, FAX: (303) 792-
|
|
2192です.
|
|
|
|
X3T10のドラフトの多くは電子的に利用できる形で SCSI
|
|
BBS (719-574-0424) と ncrinfo.ncr.com の Anonymous FTP (誰でも
|
|
ファイルを取ってくることができるFTPサービス) サイトから得るこ
|
|
とができます.
|
|
|
|
最新の X3T10委員会のドキュメントは:
|
|
<itemize>
|
|
<item>AT Attachment (ATA or IDE) [X3.221-1994] (<em>Approved</em>)
|
|
<item>ATA Extensions (ATA-2) [X3T10/948D Rev 2i]
|
|
<item>Enhanced Small Device Interface (ESDI) [X3.170-1990/X3.170a-1991] (<em>Approved</em>)
|
|
<item>Small Computer System Interface - 2 (SCSI-2) [X3.131-1994] (<em>Approved</em>)
|
|
<item>SCSI-2 Common Access Method Transport and SCSI Interface Module (CAM)
|
|
[X3T10/792D Rev 11]
|
|
</itemize>
|
|
追加情報を得ることのできる出版物は:
|
|
<itemize>
|
|
<item>"SCSI: Understanding the Small Computer System Interface", NCR社
|
|
編. 出版: Prentice Hall, Englewood Cliffs, NJ, 07632
|
|
Phone: (201) 767-5937 ISBN 0-13-796855-8
|
|
|
|
<item>"Basics of SCSI", a SCSI tutorial, Ancot Corporation 編
|
|
Ancot の連絡先:
|
|
Phone: (415) 322-5322 Fax: (415) 322-0455
|
|
|
|
<item>"SCSI Interconnection Guide Book", AMP社の出版物 (発行 4/93, カ
|
|
タログ 65237) 色々な SCSI コネクタのリスト と ケーブル接続方法のガイド.
|
|
AMP 社より入手可能. (800) 522-6752 または (717) 564-0100
|
|
|
|
<item>"Fast Track to SCSI", 富士通によるプロダクトガイド,
|
|
入手先: Prentice Hall, Englewood Cliffs, NJ, 07632
|
|
電話: (201) 767-5937 ISBN 0-13-307000-X
|
|
|
|
<item>"The SCSI Bench Reference", "The SCSI Encyclopedia", "SCSI Tutor",
|
|
ENDL Publications, 14426 Black Walnut Court, Saratoga CA, 95070
|
|
電話: (408) 867-6642
|
|
|
|
<item>"Zadian SCSI Navigator" (クイックリファレンス) および "Discover the Power of SCSI"
|
|
(最初の本は1時間のビデオとチュートリアルが付属), Zadian Software,
|
|
Suite 214, 1210 S. Bascom Ave., San Jose, CA 92128, (408) 293-0800
|
|
</itemize>
|
|
|
|
Usenet のニュースグループ <htmlurl
|
|
url="news:comp.periphs.scsi" name="comp.periphs.scsi">
|
|
と <htmlurl url="news:comp.periphs" name="comp.periphs">
|
|
は特により多くの情報を得るには注目すべき場所です. また定期的に
|
|
ポストされる SCSI-FAQをここから得ることができます.
|
|
|
|
多くの主要な SCSIデバイスとホストアダプタの供給元は FTP サイト
|
|
や BBSを開いています. これらはあなたの持っているデバイスに関す
|
|
る貴重な情報源となるでしょう.
|