diff options
| author | Satoshi Asami <asami@FreeBSD.org> | 1997-12-28 20:18:24 +0000 |
|---|---|---|
| committer | Satoshi Asami <asami@FreeBSD.org> | 1997-12-28 20:18:24 +0000 |
| commit | 633e4c52a89910864b007dd78b9620d66979a966 (patch) | |
| tree | 7c203670f55c6eab0d9fe336147325db7cf1d720 /ja | |
| parent | 149b884bb81c990f63c3cd50b17b930bfa9bfa47 (diff) | |
Notes
Diffstat (limited to 'ja')
| -rw-r--r-- | ja/handbook/scsi.sgml | 771 |
1 files changed, 426 insertions, 345 deletions
diff --git a/ja/handbook/scsi.sgml b/ja/handbook/scsi.sgml index 40f4c1f074..4abcf89e4d 100644 --- a/ja/handbook/scsi.sgml +++ b/ja/handbook/scsi.sgml @@ -1,6 +1,6 @@ -<!-- $Id: scsi.sgml,v 1.8 1997-11-25 10:15:28 max Exp $ --> +<!-- $Id: scsi.sgml,v 1.9 1997-12-28 20:18:24 asami Exp $ --> <!-- The FreeBSD Japanese Documentation Project --> -<!-- Original revision: 1.23 --> +<!-- Original revision: 1.25 --> <!-- <title>SCSIの概要と FreeBSDでの使い方</title> @@ -35,133 +35,141 @@ スクを世界で最初に販売しました) の開発した 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-2 (<ref id="scsi:further-reading" + name="さらに詳しい情報">を参照してください) + で, SCSI-3へ移行していくでしょう. 物理的な相互接続の規格に加えて, SCSIではディスクドライブに不可欠な 論理的な規格 (コマンドセット) も定義しています. この規格は標準コマンドセット (CCS : Common Command Set) と呼ばれ, ANSIのSCSI-1とほぼ同時期に制定されました. SCSI-2には (改定された) - CCSが規格の一部として組み込まれました. コマンドはデバイスの種 - 類によって変わります. 例えばスキャナでは Writeコマンドは意味が + CCSが規格の一部として組み込まれました. コマンドはデバイスの + 種類によって変わります. 例えばスキャナでは Writeコマンドは意味が ありません. - SCSIバスは多くの種類があるパラレルバスです. 最も古く, 最も利用 - されているのが 8 bit 幅, シングルエンド (不平衡) 信号, 50線の信号線 - のバスです. (もしシングルエンドの意味が分からなくても気にするこ - とはありません. このドキュメントの中にその説明があります.) よ - り新しい設計では 16 bit幅で平衡信号のバスを使います. この場合, - 転送速度は 20Mbytes/second まで,ケーブルの長さは 25mまで可能です. - SCSI-2では追加のケーブルを使った最大32 bitのバス幅までが含まれ - ます. - 早くも Ultra SCSI (Fast-20とも呼ばれます) と Ultra2 (Fast-40とも - 呼ばれます) が現れています. Fast-20は1秒間に 2000万回の転送 (8bit - バスで20Mbyte/sec), Fast-40は1秒間に 4000万回の転送 (8bitバスで - 40Mbytes/sec) をおこないます. + 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バスにはデータ信号だけではなく, + 多くのコントロール信号線があります. + 複数のデバイスがバスを効率よく共有するための複雑なプロトコルも規格の一部です. + SCSI-2ではデータは常に独立したパリティ信号を使ってチェックされます. + SCSI-2以前ではパリティはオプションでした. - SCSI-3ではさらに高速なバスタイプが導入され, それと共にケーブル - の線数を減らし, より最大バス長を伸ばしたシリアルSCSIが導入されま - す. SSAや Fiberchannelといった名前を聞いたことはありませんか? + SCSI-3ではさらに高速なバスタイプが導入され, + それと共にケーブルの線数を減らし, + より最大バス長を伸ばしたシリアルSCSIが導入されます. + SSAや Fiberchannelといった名前を聞いたことはありませんか? シリアルバスは現在ではまだいずれの方式も普及していません (特に一般的な - FreeBSD環境では) . このためシリアルバスタイプについてはここでは + FreeBSD環境では). このためシリアルバスタイプについてはここでは これ以上は触れません. 今までの記述から想像されるように SCSIデバイスはインテリジェント - です. これは SCSIの規格 (ところでこの文書は2インチ以上の厚さがあり - ます) と切り離すことはできません. このため例えばハードディスク - では特定のブロックをさすのに ヘッド/シリンダ/セクタ によって決 - めるのではなく単に必要なブロック番号を指定します. - 巧妙なキャッシュ動作や,不正ブロックは自動置き換えなど - の機能はこの 「インテリジェントデバイス」のアプローチによって可 - 能になっています. + です. これは SCSIの規格 (この文書は2インチ以上の厚さがあります) + と切り離すことはできません. + このため例えばハードディスクでは特定のブロックをさすのに + ヘッド/シリンダ/セクタ + によって決めるのではなく単に必要なブロック番号を指定します. + 巧妙なキャッシュ動作や, 不正ブロックは自動置き換えなどの機能はこの + 「インテリジェントデバイス」のアプローチによって可能になっています. SCSIバスでは任意のデバイスの組で通信することが可能です. (訳注: 任意のデバイスがイニシエータになれるという意味です.) デバイスの機能がそれを許すかどうかは また別の問題ですが, 規格では - 禁止されていません. 信号の衝突を防ぐために2つ - のデバイスはバスを使う前に調停 (arbitrate) をおこなう必要があります. + 禁止されていません. + 信号の衝突を防ぐために2つのデバイスはバスを使う前に調停 + (arbitrate) をおこなう必要があります. - SCSIの考え方として古い規格のデバイスと新しい規格のデバイスが同 - じバスの上で動くように規格を作っています. したがって, 古い SCSI-1の - デバイスは SCSI-2バスの上でも普通は動きます. 普通は, とことわった理 - 由は, ある古いデバイスが新しいバスでも問題ない程に (古い) 規格に - 対して十分沿った実装になっているかどうかは絶対的に保証はできな - いということです. 最近のデバイスは普通はよりうまく動作します. そ - の理由は規格化はより厳密になり,デバイスの製造においてより支持 - されるものになって来ているからです. + SCSIの考え方として古い規格のデバイスと新しい規格のデバイスが + 同じバスの上で動くように規格を作っています. したがって, 古い SCSI-1の + デバイスは SCSI-2バスの上でも普通は動きます. 普通は, + とことわった理由は, ある古いデバイスが新しいバスでも問題ない程に + (古い) 規格に対して十分沿った実装になっているかどうかは絶対的に + 保証はできないということです. + 一般に最近のデバイスはよりうまく動作します. + その理由は規格化がより厳密になり, またメーカーがデバイスの製造に + おいてよりきちんと規格に従うようになってきているからです. - 一般的に言って, 単一のバス上で動かすデバイスは SCSI-2あるいはよ - り新しいデバイスであればうまく動く可能性は高いと言えます. - これは新しい 2GBのディスクを手に入れたとしたら古いデバイスを捨 - ててしまわなければならないという意味ではありません. 私のシステ - ムでは SCSI-1以前のディスク, SCSI-2の QICテープユニット,SCSI-1 - のヘリカルスキャンテープユニット (訳注: VTRのような回転ヘッドを - 持ったテープ装置のことです. DATテープドライブもその一つです) , - 2台の SCSI-1 ディスクが一緒に問題なく動いています. ただし効率 - の点から古いデバイスと新しい (= 速い) デバイスを分けたいかもしれ - ません. (訳注: 古いデバイスの中には disconnectをサポートしな - いために一連のコマンド実行中に SCSIバスを占有してしまうデバイス - もあります.) + 一般的に言って, 単一のバス上で動かすデバイスは + 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デバイスはそれ自身のハードウェアの詳細を知って - います. この場合, ホストシステムはハードディスクがいくつのヘッ - ドを持ち, テープデバイスがいくつのトラックを持つかというよう - なことを知る必要がありません. - もしあなたが知りたいのであれば, 規格で定義されているコマンド - を使ってデバイスにハードウェアの詳細について質問することがで - きます. + 持たせてしまおうという考え方です. この考え方では + SCSIデバイスはそれ自身のハードウェアの詳細を知っています. + この場合, ホストシステムはハードディスクがいくつのヘッド + を持ち, テープデバイスがいくつのトラックを持つかというような + ことを知る必要がありません. + もしあなたが知りたいのであれば, 規格で定義されているコマンドを + 使ってデバイスにハードウェアの詳細について質問することができます. - インテリジェントデバイスの利点は明らかです. ホストのデバイス - ドライバはより一般的に書くことができ, 新しいデバイスを導入す - る場合でも変更の必要がありません. + インテリジェントデバイスの利点は明らかです. + ホストのデバイスドライバはより一般的に書くことができ, + 新しいデバイスを導入する場合でも変更の必要がありません. <sect3><heading>接続でおこなうべきこと, してはならないこと</heading> <p> - ケーブルの接続には鉄則があります. よい部品を使うことです. バ - スの速度を上げることができ, 多くの災難を防ぐことができます. + ケーブルの接続には鉄則があります. よい部品を使うことです. + バスの速度を上げることができ, 多くの災難を防ぐことができます. - ですから, 金メッキのコネクタ, シールドケーブル, 固定器具付き - の頑丈なコネクタカバーなどを選ぶのは正しいことです. 2つ目の - 鉄則は, ケーブルを必要以上に長くしないことです. + ですから, 金メッキのコネクタ, シールドケーブル, + 固定器具付きの頑丈なコネクタカバーなどを選ぶのは正しいことです. + 2つ目の鉄則は, ケーブルを必要以上に長くしないことです. 私は以前にあるマシンでトラブルの 原因を探すのに - 3日間悩んでいましたが, SCSIバスを 1m短 - くすることで問題を解決したことがあります. もちろん, 元のバス - の長さでもSCSIの仕様はきちんと満たしていたのですが. + 3日間悩んでいましたが, SCSIバスを 1m 短く + することで問題を解決したことがあります. もちろん, + 元のバスの長さでもSCSIの仕様はきちんと満たしていたのですが. <sect2><heading>SCSI バスのタイプ</heading> <p> - 電気的に互換性のない 2種類のバスのタイプがあります. シングルエ - ンドとディファレンシャルのバスです. これは SCSI - デバイスとコントローラは同一のバス上に混在することのできな - い2つのグループにに大きく分けられるということを意味しています. - しかし,特別なハードウェアを使えばシングルエンドバスをディファ - レンシャルバスに (その逆も) 変換することはできます. これらのバ - スのタイプの違いは次のセクションで説明します. + 電気的に互換性のない 2種類のバスのタイプがあります. + シングルエンドとディファレンシャルのバスです. これは SCSI + デバイスとコントローラは同一のバス上に混在することのできない + 2つのグループにに大きく分けられるということを意味しています. + しかし, 特別なハードウェアを使えばシングルエンドバスを + ディファレンシャルバスに (その逆も) 変換することはできます. + これらのバスのタイプの違いは次のセクションで説明します. - SCSI関連のドキュメントでは異なるタイプのバスを一種の用語とし + SCSI関連のドキュメントでは異なるタイプのバスを一種の用語とし て略語で表します. これを次の表に示します. <itemize> @@ -174,9 +182,9 @@ 少し想像力を働かせればどのような意味であるかはわかるでしょう. - ワイド (Wide) はいくらか曖昧で, 16 または 32 bitのバスを示しま - す. 私の知る限りでは, 32 bit のインタフェースは (まだ) 使わ - れていませんので Wide は通常 16 bitを意味します. + ワイド (Wide) はいくらか曖昧で, 16 または 32 bitのバスを示します. + 私の知る限りでは, 32 bit のインタフェースは (まだ) + 使われていませんので Wide は通常 16 bitを意味します. 高速 (Fast) はバスのタイミングがいくつかの点で異なり, ナロー (8 bit) バスでは 低速 (slow) SCSIバスの 5 Mbytes/sec に対して 10 @@ -185,21 +193,22 @@ (Fast-20 == Ultra SCSI で Fast-40 == Ultra2 SCSI です). データ線の上位 (> 8) はデータの転送とデバイスの指定だけに - 利用されているという点を指摘しておきます. コマンドの送出とス - テータスメッセージ等は下位側の 8 bitのデータ線のみを使います. - この規格によりナローデバイスはワイドバス上でも動作する事がで - きます. 利用できるバスの幅はデバイス間で調停 (ネゴシエーショ - ン) されます. デバイスの IDについてはワイドとナローが混在する - 時には気をつけなければなりません. + 利用されているという点を指摘しておきます. + コマンドの送出とステータスメッセージ等は下位側の + 8 bitのデータ線のみを使います. + この規格によりナローデバイスはワイドバス上でも動作する事ができます. + 利用できるバスの幅はデバイス間で調停 (ネゴシエーション) + されます. デバイスの + IDについてはワイドとナローが混在する時には気をつけなければなりません. <sect3><heading>シングルエンドバス (不平衡バス) </heading> <p> - シングルエンド SCSIバスは 5Vと 0Vの電圧 (実際はTTLレベルです) - を信号として使い,それらは共通のグラウンド (GND) レベルを基準 + シングルエンド SCSIバスは 5Vと 0Vの電圧 (つまりTTLレベルです) + を信号として使い, それらは共通のグラウンド (GND) レベルを基準 にします. シングルエンド SCSI 8 bitバスは約25本のグラウンド線 - を持ち, すべてのデバイスを「直線状」に接続しま - す. 基準ではシングルエンドバスは最大の長さは 6mです. これ - は Fast-SCSIデバイスを使う場合は最大長さは 3mに短くなります. + を持ち, すべてのデバイスを「直線状」に接続します. + 基準ではシングルエンドバスは最大の長さは 6mです. + Fast-SCSI デバイスを使う場合には, この最大長さは 3mに短くなります. Fast-SCSIでは 5Mbytes/sec ではなく 10Mbytes/sec の転送速度 が可能になります. @@ -213,21 +222,21 @@ バス上のいずれかのデバイスが「高速の」転送を利用する場合は Fastバスの長さの制限を受けるということに注意してください. - 最近の Fast-SCSI デバイスではバスの長さが実際の問題になり - つつあるのが明らかになっています. これがデファレンシャル + 最近の Fast-SCSI デバイスではバスの長さが実際の問題に + なりつつあるのが明らかになっています. これがデファレンシャル SCSIバスがSCSI-2の規格に導入された理由です. コネクタのピン配置やコネクタの種類については SCSI-2の規格 - (<ref id="scsi:further-reading" name="さらに詳しい情報">を - ) を参照してください.コネクタ等について詳細なリ - ストがあります. + (<ref id="scsi:further-reading" name="さらに詳しい情報">) + を参照してください.コネクタ等について詳細なリストがあります. 非標準のケーブルを使うデバイスに気をつけてください. 例えば - Apple (の Macintosh は) 25pin の D-type のコネクタ (シリア - ルポートやパラレルプリンタに使われているコネクタ -- 訳注: - 日本では一般的に D-sub 25pinと言っています) を使っています. - 公式なSCSIバスでは50 pin が必要である事からこのコネクタで - は 「独創的なピン配置」が必要な事が想像できるでしょう. ここ + Apple (の Macintosh は) 25pin の D-type のコネクタ + (シリアルポートやパラレルプリンタに使われているコネクタ -- + 訳注: 日本では一般的に D-sub 25pinと言っています) + を使っています. + 公式なSCSIバスでは50 pin が必要である事からこのコネクタでは + 「独創的なピン配置」が必要な事が想像できるでしょう. ここ でおこなわれているようにグラウンド線の数を減らすことはよい考え ではありません. SCSIの規格通りの 50 pinの接続の方が望まし いです. Fast-20 や 40 でこのようなケーブルを使おうなんて @@ -235,57 +244,63 @@ <sect3><heading>ディファレンシャル (平衡) バス</heading> <p> - ディファレンシャル SCSIバスは最大長が 25m です. シングルエ - ンド Fast-SCSIバスの 3mとはまったく違います. 平衡信号の背景と - なっている考え方は, それぞれのバスの信号はそ - れぞれ独立したリターン信号線を持つというものです. つまり, - それぞれの信号は (できればより線の) ペアの信号線で伝えられま - す. これら2つの信号線の差分の電圧で信号が「真」(assert) で + ディファレンシャル SCSIバスは最大長が 25m です. シングルエンド + Fast-SCSIバスの 3mとはまったく違います. 平衡信号の背景と + なっている考え方は, それぞれのバスの信号はそれぞれ + 独立したリターン信号線を持つというものです. つまり, + それぞれの信号は (できればより線の) ペアの信号線で + 伝えられます. + これら2つの信号線の差分の電圧で信号が「真」(assert) で あるか「偽」(de-assert) であるか判定されます. かなりの電圧 がグラウンド電位と信号線ペアの間にかかったとしても影響があ - りません (だからといって 10kVの電圧をかけてみたりしないでく - ださい.. ). + りません (だからといって 10kVの電圧をかけてみたりしないで + ください.. ). - なぜ平衡信号がよいのかについての説明はこのドキュメントの範 - 囲を越えています. 電気的に平衡信号はノイズマージンの点で + なぜ平衡信号がよいのかについての説明はこのドキュメントの + 範囲を越えています. 電気的に平衡信号はノイズマージンの点で 非常に優れたものとして利用されているということを受け入れて ください. ディファレンシャルバスは普通は外部接続に利用さ れています. これは低コストのシングルエンドバスが筐体内の短 い距離のバスでは非常に多く利用されているからです. - FreeBSDを使うにおいて, FreeBSDでサポートされているデバイス - ドライバがあるのであればディファレンシャルバスの利用で問題 - になることは何もありません. 例をあげれば, アダプテックの - AHA1740はシングルエンドで, AHA1744はディファレンシャルで - す. 双方のソフトウェアインタフェースはまったく同一です. + FreeBSDを使うにおいて, FreeBSDでサポートされている + デバイスドライバがあるのであれば + ディファレンシャルバスの利用で問題になることは何もありません. + 例をあげれば, アダプテックの AHA1740はシングルエンドで, + AHA1744はディファレンシャルです. + 双方のソフトウェアインタフェースはまったく同一です. <sect3><heading>ターミネータ</heading> <p> SCSIにおける用語でのターミネータとはインピーダンスの - マッチングを正確におこなうための抵抗ネットワークです. インピーダンス + マッチングを正確におこなうための抵抗ネットワークです. + インピーダンス マッチングは反射やリンギングを抑え, バスの信号をきれいにす - る重要なものです. たとえば,あまり状態のよくない回線で長距 + る重要なものです. たとえば, あまり状態のよくない回線で長距 離の電話をかけた時にあなたは反射をどんなものか感じるかもしれません. 20Mbytes/sec で信号の伝わる SCSIバスでは信号のエコーはあ りがたくありません. - 訳注: 電気信号に限らずすべての波で反射 - という現象は起きます. ここの例はあまり実感がわかないと思う - ので簡単に書きますと, 3mのバスの端からパルスを入れた場合, + 訳注: 電気信号のパルスは進行波としての性格を持っています. + このため, 一般的には信号線の両端で反射が起きます. + 3mのバスの端からパルスを入れた場合, 反対の端からの反射波は 20ns後 - 本当は電線中の信号の伝達は 光速よりも少し遅くなるのでもう少し時間がかかりますが - - に帰ってきます. 10MHzのクロックは1:1のパルスだとすると幅 - 50nsのパルスで, 反射波がやってくる時間とそれほど変わりません. - このため, 場合によっては反射波によってクロックや信号が異常 - になってしまう可能性があります. + に返ってきます. 低速のバスの場合タイミング的な余裕があり, + 反射を繰り返しているうちに反射波は減衰してしまうのですが + 高速のバスの場合は, 反射波の影響が落ち着く前に信号の + 読み込みなどを行うために波形の乱れが誤動作の原因に + なる場合があります. + このためターミネータを使用して反射波の発生をできるだけ + おさえます. - ターミネータはいろいろな - 洗練されたものもそうでないもの - も - 実現方法があります. もちろん,内蔵のものと外部という - 区別もあります. ほとんどすべての SCSIデバイスにはいくつかの - ソケットがあり,その中には抵抗ネットワーク (集合抵抗) が入っ - ているものもあるかもしれません (いや,おそらく間違いなくあ - るでしょう). ターミネータを + ターミネータはいろいろな - 洗練されたものもそうでないものも + - 実現方法があります. もちろん, 内蔵のものと外部という + 区別もあります. 多くの SCSIデバイスにはいくつかの + ソケットがあり, その中には抵抗ネットワーク (集合抵抗) が + 入っているものもあるかもしれません (いや, おそらく + 間違いなくあるでしょう). ターミネータを デバイスから外す時は大事にしまっておいてください. SCSIの接 続の変更をしようと思った時に必要になるかもしれません. ま た, それらしい抵抗ネットワークが見つからないこともあります. @@ -295,15 +310,16 @@ たものやケーブルのないコネクタヘッドだけのものもあります. いろいろと見られるように多くの選択があります. - どのような場合に単純な抵抗 (パッシブ) ターミネータからアクティ - ブターミネータへ切替えるかという問題があります.アクティブ - ターミネータはいくらか精巧な回路が信号をよりきれいにするた - めに入っています. 一般的に一致する意見としては, 長いバス - を使ったり 高速なデバイスを使う場合はアクティブターミネー - タの有効性は増加すると言えます. SCSI バスですでに問題が起 - きているならアクティブターミネータを試すことを考えていいで - しょう. まず借りることができないか探してみてください. ア - クティブターミネータは非常に高価だそうですから. + どのような場合に単純な抵抗 (パッシブ) ターミネータから + アクティブターミネータへ切替えるかという問題があります. + アクティブターミネータはいくらか精巧な回路が信号をより + きれいにするために入っています. + 一般的に受け入れられている意見としては, 長いバスを使ったり + 高速なデバイスを使う場合はアクティブターミネータの + 有効性は増加すると言えます. SCSI バスですでに問題が起きて + いるならアクティブターミネータを試すことを考えていいで + しょう. まず借りることができないか探してみてください. + アクティブターミネータは非常に高価だそうですから. ディファレンシャルとシングルエンドバスのターミネータは互換 性がないということを覚えておいてください. これらの2つの種 @@ -311,54 +327,66 @@ OK, ではあなたはターミネータをどこに入れればいいでしょうか? これは SCSIで最も多く誤解されているところです. しかし, これ - は極めて単純なことです.. ここでのルールは <bf>すべての SCSI - バスは 2個のターミネータをそれぞれの両端に入れる</bf>とい - うことです. つまり 2個であって1個でも3個でもありませ - ん. このルールを受け入れてしたがってください. そうすれば終りの - ない苦しみから救われるでしょう. なぜなら間違ったターミネー - ションは不可解なバグを引き起こす可能性が非常に高いから - です. + は極めて単純なことです.. ここでのルールは <bf>SCSIバスの線 + 一本一本は必ず両端に 2個のターミネータを入れる</bf> + ということです. つまり 2個であって1個でも3個でもありません. + このルールを受け入れてしたがってください. そうすれば終りの + ない苦しみから救われるでしょう. + なぜなら間違ったターミネーションは不可解なバグを引き起こす + 可能性が非常に高いからです. + (ここの「可能性」に注意; 一見動いているように見える + ことがあるのがやっかいです.) よく陥りやすい落し穴はマシンの内部 (フラット) ケーブルと外部 ケーブルがコントローラにつながっている場合です. よく見られ - るのはコントローラのターミネータを外すのを忘れることで - す. ターミネータは最後の外部デバイスで必要で, コントローラ + るのはコントローラのターミネータを外すのを忘れることです. + ターミネータは最後の外部デバイスで必要で, コントローラ には必要ありません! 一般的に, SCSIバスの接続の変更をする場 合はこのようなことに注意をしなければなりません. + ターミネータの位置は信号線ごとに決まることに注意して下さい. + ナローとワイドのケーブルを両方コントローラにつないでいる場 + 合には, ケーブルの両端とともにコントローラ上ではバスの上位 + 8ビットをターミネートしないといけません. + 私自身は, すべてのデバイスとコントローラのターミネータを外し ています. 2個の外部ターミネータをセントロニクスタイプ (訳注: 日本ではケーブルに対してこういう言い方はあまりしないのでは - ないでしょうか) 外部ケーブルと内部フラットケーブルのコネク - タの両端に接続しています. こうすることにより接続の変更はか - なり簡単になります. + ないでしょうか) 外部ケーブルと内部フラットケーブルの + コネクタの両端に接続しています. + こうすることにより接続の変更はかなり簡単になります. 最近のデバイスは, ICターミネータが使われることもあります. - コントロールピンにより無効/有効を設定できる特別のICがあり - ます. これは物理的にデバイスから外す必要がありません. 新し - いホストアダプタではセットアップツール等を使ってソフトウェ - ア的に設定をおこなう場合があります. マニュアルを調べてくださ - い. + コントロールピンにより無効/有効を設定できる特別のICがあります. + これは物理的にデバイスから外す必要がありません. + 新しいホストアダプタではセットアップツール等を使って + ソフトウェア的に設定をおこなう場合があります. + また、中には端子に接続されたケーブルを検出してターミネータ + を必要に応じて自動的に + 有効にするものもあります. いずれにしろ, マニュアルを見てく + ださい. <sect3><heading>ターミネータの電源</heading> <p> ここまでの章で議論したターミネータは正常に動作するためには - 電源が必要です. SCSIバス上にはこの目的のために利用される線 - があります. だから特に気にする必要はないと思いますか? + 電源が必要です. SCSIバス上にはこの目的のために利用される線があります. + だから特に気にする必要はないと思いますか? ところがそうではないのです. それぞれのデバイスはデバイス上 - にあるターミネータソケットに電源を供給することはできま - す. けれども外部ターミネータがある場合やSCSIバスにターミネー - タの電源を供給するデバイスのスイッチがオフになっているよう - な場合にはトラブルが起きるかもしれません. + にあるターミネータソケットに電源を供給することはできます. + けれども外部ターミネータがある場合やSCSIバスにターミネータ + の電源を供給するデバイスのスイッチがオフになっているような + 場合にはトラブルが起きるかもしれません. - イニシエータ (ここではバスの動作を開始-initiate-させるデバ - イスを指します -- 訳注: 簡単に言えばホスト側のアダプタです - がSCSIの規格によれば, 例えばディスク側がコマンドを発行する - ようなシステムがあってもかまわないことになっているのでこう - いう言い方をしています) はターミネータ電源を供給しなければ - なりません. すべてのSCSIデバイスはターミネータの電源を供給す - ることができます (必ずしも供給しなければならないというわけ + イニシエータ (ここではバスの動作を開始-initiate-させる + デバイスを指します -- + 訳注: 簡単に言えばホスト側のアダプタですがSCSIの + 規格によれば, 例えばディスク側がコマンドを発行するような + システムがあってもかまわないことになっているので + こういう言い方をしています) は + ターミネータ電源を供給しなければなりません. + すべてのSCSIデバイスはターミネータの電源を供給することが + できます (必ずしも供給しなければならないというわけ ではありません). スイッチがオフになっているデバイスがバス上に存在することを @@ -370,55 +398,79 @@ ズが入っています. 当然ヒューズは飛ぶかもしれません. この 場合でもバスが機能停止するとは限りません. 複数のデバイスが ターミネータの電源を供給しているのであれば, ヒューズが一つ - 飛んでも全体の機能には影響しません. ただ一つの供給線のヒュー - ズが飛んだのであれば確かに問題になるでしょう. 外部ターミネー - タによっては LEDでターミネータ電源が与えられていることを示 - すものもあります. + 飛んでも全体の機能には影響しません. ただ一つの供給線の + ヒューズが飛んだのであれば確かに問題になるでしょう. + 外部ターミネータによっては LED でターミネータ電源 + が与えられていることを示すものもあります. - 最新の設計ではある程度の時間がたつと 「リセット」され自動復 - 帰するヒューズが使われることもあります. + 最新の設計ではある程度の時間がたつと 「リセット」され + 自動復帰するヒューズが使われることもあります. <sect3><heading>デバイス アドレッシング</heading> <p> - SCSIバスでは接続された異なるデバイスを区別して指定できなけ - ればなりません. + SCSIバスでは接続された異なるデバイスを区別して指定 + できなければなりません. これには SCSIではターゲットIDが使われます. それぞれのデバイ スは特定のターゲットIDを持ちます. デバイスの IDはジャンパや - DIPスイッチなどで設定できます. より詳しい情報はデバイスの - マニュアルを見てください. + DIPスイッチなどで設定できます. ブート時のメニューからIDを + 変更できるようになっているコントローラもあります. (また, + IDを 7から変えることができないコントローラもあります.) + より詳しい情報はデバイスのマニュアルを見てください. - 複数のデバイスを使う場合は IDの重複に気をつけてください. 重 - 複すると普通は混乱状態になります. 同じ IDを共有しているデバ - イスがI/Oリクエストに答えようと処理をおこなうことが落し穴にな - ります. + 複数のデバイスを使う場合は IDの重複に気をつけてください. + 重複すると普通は混乱状態になります. 同じ IDを共有している + デバイスのうちの一つがI/Oリクエストに答えられたりすると + 非常にやっかいなことになります. 8 bitバスでは, 最大8台のターゲットまで可能です. 最大8台で ある理由は, バスの8本のデータ線がデバイスの選択に使われる - からです. バス幅の広いバスでは使えるデバイスの数は増えます. + からです. ワイドなバスでは使えるデバイスの数は増えます + (通常は16になるわけです). + ナローSCSIデバイスは8以上のターゲットIDを持つデバイスとは + 通信できないことに注意してください. ですから, コントローラ + のターゲットIDを8以上にするのはあまりいい考えとは + いえません (CD-ROMが使えなくなったりします). + 同時にバス使用の要求が発生した場合, 最も IDの大きいデバイス - が優先されるという調停がおこなわれます. このことは (ナローバス - では) SCSIホストアダプタの IDは通常7番が使われる理由でもあり - ます. + が優先されるという調停がおこなわれます. このことは + SCSIホストアダプタの IDは通常7番が使われる理由でもあり + ます. ただし, ワイドバスでは下位8ビットが上位8ビットより優 + 先度が高いことに注意してください. つまり, ワイドSCSIのシス + テムではターゲットIDの優先度は高い順に + <tt>[7 6 .. 1 0 15 14 .. 9 8]</tt> となります. + (どうして下位8ビットの方が優先度が高いかは, + 一つ前の段落を読んで考えてみて下さい.) - さらにサブユニットとして, 規格では ロジカルユニット,短縮形 - で LUNを持つことができます. 一つのターゲットIDが複数の LUNを + さらにサブユニットとして, 規格では ロジカルユニット, + 短縮形で LUNを持つことができます. 一つのターゲットIDが複数の LUNを 持つことができます. 例えば, テープチェンジャを持つテープ - ドライブは LUN 0をテープドライブ自身, LUN 1をテープチェン - ジャ に与えることができます. このようにして, ホストシス - テムはテープチェンジャの目的のテープユニットの部分を指定す - ることができます. + ドライブは LUN 0をテープドライブ自身, LUN 1を + テープチェンジャ に与えることができます. + このようにして, ホストシステムはテープチェンジャの目的の + テープユニットの部分を指定することができます. - <sect3><heading>バスレイアウト</heading> + <sect3><heading>バスの形状</heading> <p> - SCSIバスは直線状です. つまり, Y接続, スター接続, クモの巣 - 状の接続などの直線以外の接続ではありません. - 先に議論したターミネータの問題は直線状以外の場合ではより困 - 難になるだろうということに注意してください. + SCSIバスは直線状です. つまり, Y接続, スター接続, 円形, + クモの巣状の接続などの直線以外の接続ではありません. 初心者が + よくやる間違いとしてはワイドSCSIのコントローラの端子3つと + もにケーブルをつないでしまうというものがあります. (外部, + 内部ナロー, 内部ワイド.) よほど運がよければこんなトポロジー + でもちゃんと動くように見えるかもしれませんが, えてしてこう + いうシステムは一番大切な時に使えなくなったりするものです + (これを「マーフィーの法則」といいます). - 電気的特性はそのノイズマージンや全体の信頼性において,直線 - 状のバスのルールに強く依存しています. + 先に議論したターミネータの問題は直線状以外の場合では + より困難になるだろうということに注意してください. また, + 内部バス用のケーブルの端子の数よりデバイスの数の方が少ない場合には, + 必ず両端の端子にはデバイスをつなぐようにしてください. + 内側の端子を使ってケーブルの端を余らせておくと, + ターミネータの効果が半減します. + + 電気的特性はそのノイズマージンや全体の信頼性において, + 直線状のバスのルールに強く依存しています. <bf>直線状バスであるというルールにしたがってください!</bf> @@ -430,12 +482,14 @@ ださい. SCSIディスクをPCでブートディスクとして使う場合に, PC BIOSに - 関する気まぐれについて知っておく必要があります. PC BIOSは ハー - ドディスクへの低レベル物理インタフェースを利用するように実 - 現されています. したがって, BIOSに (セットアップツールやBIOSビル - トイン セットアップを使って) ディスクの物理パラメタを教えてや - る必要があります. これはヘッドの数, シリンダの数, トラックあ - たりのセクタなどがあり, プリコンペンセーションや書き込み電流を + 関する気まぐれについて知っておく必要があります. PC BIOSは + ハードディスクへの低レベル物理インタフェースを利用するように + 実現されています. + したがって, BIOSに (セットアップツールやBIOSビルトイン + セットアップを使って) ディスクの物理パラメタを教えてやる + 必要があります. これはヘッドの数, シリンダの数, + トラックあたりのセクタなどがあり, + プリコンペンセーションや書き込み電流を 減少させるトラック, などのあまりよく知られていないものもあります. SCSIディスクはこれらのことをユーザは気にする必要がないはず @@ -445,22 +499,31 @@ /ヘッド/シリンダ/セクタ を指定する方法でアクセスするため, パラメタを知る必要があるのです. - AT/EISA/PCIバスなどにあり,ディスクに接続される SCSI ホストア - ダプタや SCSI コントローラは それ自身のオンボードBIOSを持っ - ています. システムの起動時に, SCSI BIOSは システムBIOSのハー - ドディスクのインタフェースルーチンを乗っ取ります. システ - ム BIOSをごまかすために システムセットアップでは普通は + AT/EISA/PCIバスなどにあり, ディスクに接続される + SCSIホストアダプタや SCSIコントローラは + それ自身のオンボードBIOSを持っています. システムの起動時に, + SCSI BIOSは + システムBIOSのハードディスクのインタフェースルーチンを乗っ取ります. + システムBIOSをごまかすために システムセットアップでは普通は `No hard disk' とします. 簡単ですね? - SCSI BIOS はドライブの<bf>トランスレーション</bf>と呼ばれる機 - 能を持ちます. これはPCがブートするために作られたドライブテー - ブルをごまかすものです. このトランスレーションは多くは (すべて - の場合ではありません) トラックあたり64あるいは32個のヘッドを + 訳注: 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 単位に変換するためです. + になります. 2で割っているのは, 通常 512バイトのサイズの + セクタを kByte 単位に変換するためです. ではこれですべてうまくいくのでしょうか. いいえ, そういう訳で はありません. ブート可能なハードディスクのシリンダ数は 1024よ @@ -469,28 +532,30 @@ がどんどん増加していくにつれこれは問題になってきました. 幸いにして, 単純な解決方法があります. 単に別のトランスレーショ - ンを使えばよいのです. 例えば, 32個に代わり,128個のヘッドを使いま - す. ほとんどの場合, 古いSCSIホストアダプタをアップグレードす + ンを使えばよいのです. 例えば, 32個に代わり, 128個のヘッドを使います. + ほとんどの場合, 古いSCSIホストアダプタをアップグレードす るための新しいバージョンの SCSI BIOS が用意されています. 新しいアダプタではジャンパ - やセットアップソフトによって SCSI BIOSの使うトランスレーショ - ンが選択できる物もあります. + やセットアップソフトによって SCSI BIOSの使う + トランスレーションを選択できる物もあります. - ここで非常に重要なことは, ディスク上の<bf>すべての</bf>オペレー - ティングシステムが <bf>同一のトランスレーション</bf>により正 - しいパーティションを得ることです. つまり FreeBSDをインストー - ルする時に, ヘッド/シリンダなどについての質問にあなたのホスト - アダプタが使用しているトランスレートされた値を使わなくてはな - りません. + ここで非常に重要なことは, ディスク上の<bf>すべての</bf> + オペレーティングシステムが + <bf>同一のトランスレーション</bf>を使って + 正しいパーティションを得ることです. + つまり FreeBSDをインストールする時に, + ヘッド/シリンダなどについての質問にあなたのホストアダプタが + 使用しているトランスレートされた値を使わなくてはなりません. - トランスレーションによる失敗で見られるのは, ブートしないシス - テムや他のパーティションを上書きしてしまうことです. すべてのシ - ステムが見えるように fdiskを使うべきです. + トランスレーションに関する失敗でよく見られるものは, + ブートしないシステムができたり, 他のパーティションを + 上書きしてしまうことです. すべてのシステムが見えるように + fdiskを使うべきです. - あなたはデバイスについてこれとは食い違った話を聞いたことがあ - るかもしれません. 古い FreeBSDのカーネルはブートする時に SCSI - ディスクのジオメトリ情報を報告していました. 私のシステムの - 一つの例を示しましょう. + あなたはデバイスについてこれとは食い違った話を聞いたことが + あるかもしれません. 古い FreeBSDのカーネルはブートする時に + SCSI ディスクのジオメトリ情報を報告していました. + 私のシステムの一つの例を示しましょう. <verb> aha0 targ 0 lun 0: <MICROP 1588-15MB1057404HSP4> @@ -507,12 +572,13 @@ なぜこのように変わったのでしょう? この情報は SCSIディスク自身から得られます. 最近のディスクで - はよくゾーンビット記録方式 (zone bit recording) という技術が使 - われています. これはドライブの外側のシリンダは内側よりもスペー - スが広いのでトラックあたりのセクタ数を増やすことができるとい - うアイディアです. この結果, 外側のシリンダ上のトラックの容量 - は内側のシリンダよりも大きくなり, 全体ではより大きな容量とな - ります. この場合, ドライブにのジオメトリについての報告は, + はよくゾーンビット記録方式 (zone bit recording) という + 技術が使われています. これはドライブの外側のシリンダは + 内側よりもスペースが広いのでトラックあたりのセクタ数を + 増やすことができるというアイディアです. + この結果, 外側のシリンダ上のトラックの容量は内側の + シリンダよりも大きくなり, 全体ではより大きな容量となります. + この場合, ドライブにのジオメトリについての報告は, 最善のものかどうか疑わしく, ほとんどの場合誤解を招くものであ ることがわかるでしょう. ジオメトリを調べる場合, ほとんどの場合は BIOSの用い @@ -523,47 +589,56 @@ <sect3><heading>SCSI サブシステムの設計</heading> <p> - FreeBSDでは階層的な SCSIサブシステムを用いています. 各々異な - るコントローラカードのデバイスドライバが書かれています. この - ドライバはコントローラのハードウェアの詳細を知っています. ド - ライバは SCSIサブシステムのより上位の階層のコマンドを受け取り, + FreeBSDでは階層的な SCSIサブシステムを用いています. それぞれ + 異なるコントローラカードのデバイスドライバが書かれています. + このドライバはコントローラのハードウェアの詳細を知っています. + ドライバは + SCSIサブシステムのより上位の階層のコマンドを受け取り, ステータスを報告するインタフェースを持ちます. - カードのドライバの最上位には, デバイスのクラスのためのいくつ - かの一般的なドライバがあります. 具体的にいうと, テープドライ - ブのためのドライバ (略号は: st), 磁気ディスク (sd), CD-ROM - (cd) などです. これらのソースコードは<tt>/sys/scsi</tt>にあり - ます. マニュアルページ (man) のセクション 4 にはより詳しい内 - 容があるので見てください. + カードのドライバの最上位には, デバイスのクラスのための + いくつかの一般的なドライバがあります. 具体的にいうと, + テープドライブのためのドライバ (略号は: st), 磁気ディスク + (sd), CD-ROM (cd) などです. これらのソースコードは + <tt>/sys/scsi</tt>にあります. + マニュアルページ (man) のセクション 4 にはより詳しい内容が + あるので見てください. - 多階層の設計は低レベルとより高位のレベルを分離させることがで - きます. 新たに他の種類のハードウェアのサポートを加えることを + 多階層の設計は低レベルとより高位のレベルを分離させることが + できます. 新たに他の種類のハードウェアのサポートを加えることを より処理しやすい問題にします. <sect3><heading>カーネルコンフィグレーション</heading> <p> - あなたのハードウェア構成にしたがって, カーネルのコンフィグファイ - ルにホストアダプタについて 1行あるいは数行程度の記述をする + あなたのハードウェア構成にしたがって, カーネルの + コンフィグファイルに + ホストアダプタについて 1行あるいは数行程度の記述をする 必要があります. - これには I/O アドレスや割り込みなどについての内容も含 - みます. あなたのアダプタのドライバについてのマニュアルページ + これには I/O アドレスや割り込みなどについての内容も + 含みます. あなたのアダプタのドライバについてのマニュアルページ にはより多くの情報があるのでよく読んでください. これとは別に /sys/i386/conf/LINT にはカーネルコンフィグファイルについての - 概要があります. LINTには一般的なものについては可能なすべてのオ - プションが含まれています. ただし, LINTでは実際に動作するカー - ネルを作ることは <em>できません</em>. + 概要があります. LINTには一般的なものについては可能なすべての + オプションが含まれています. ただし, + LINTでは実際に動作するカーネルを作ることは + <em>できません</em>. - おそらく何をするかは明らかでしょう. カーネルコンフィグファイ - ルは実際のハードウェア構成を反映すべきです. そのように割り込 - みやI/Oアドレス等に合わせてカーネルコンフィグファイルを書か + 当然のことを言うようで恐縮ですが, + カーネルコンフィグファイルは実際のハードウェア構成を + 反映すべきです. そのように割り込みやI/Oアドレス等に + 合わせてカーネルコンフィグファイルを書か なければなりません. システムのブート時のメッセージは実際に - 見つけたハードウェアの設定を表示します. + 見つけたハードウェアの設定を表示します. ほとんどの EISA/PCI + 用のドライバ (具体的には <tt>ahb, ahc, ncr</tt> と + <tt>amd</tt>です) はブート時にコントローラから直接パラメータ + を読むことに注意してください. これらについては, 何も引数をつ + けずにただ "<tt>controller ahc0</tt>" のように書けば大丈夫で + す. - 例として FreeBSD 2.0.5-Releaseのいくつかのコメント + 例として FreeBSD 2.2.5-Releaseのいくつかのコメント ([]の中) をつけた LINTカーネルコンフィグファイルを示 します. - <verb> # SCSI host adapters: `aha', `ahb', `aic', `bt', `nca' @@ -572,58 +647,60 @@ # 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 などのコントローラ] -controller ahc0 at isa? bio irq ? vector ahcintr # port??? iomem? +[ Adaptec AHA274x/284x/294x/394x などのコントローラ] +controller ahc0 -[ Adaptec AHA174x コントローラ] -controller ahb0 at isa? bio irq ? vector ahbintr +[ 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 ahb0 +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 [ahb0 上の SCSIディスク] +disk sd3 at scbus2 target 4 [ncr0 上の SCSIディスク] tape st1 at scbus0 target 6 [SCSI テープ は ターゲット (ID)6] -device cd0 at scbus? [最初に見つけた CDROM, 固定にしない] +device cd0 at scbus? [最初に見つけた CD-ROM, 固定にしない] </verb> - 上の例では カーネルは ahc (Adaptec 274x) コントローラをまず - 探し, その次に Adaptec 174x のボードというように順番に探して + 上の例では カーネルは ahc (Adaptec 274x) コントローラをまず探し, + その次に NCR/Symbios のボードというように順番に探して 行きます. その下の行の controller の記述ではデバイスの詳細 を記述して, 対応するバスでターゲット ID と LUN が指定された - ものと一致する場合<em>だけ </em>認識するようにカーネルに伝え - ています. + ものと一致する場合<em>だけ </em>認識するようにカーネルに + 伝えています. - 固定された (Wired down) デバイスは 「最初に」ユニット番号が与え - られるので, 「固定」されいないデバイスは同じ種類の「固定」され - たユニット番号の最も大きい番号の1つ上の番号から割り当てられ - ます. + 固定された (Wired down) デバイスは 「最初に」ユニット番号が + 与えられるので, + 「固定」されいないデバイスは同じ種類の「固定」されたユニット + 番号の最も大きい番号の1つ上の番号から割り当てられます. したがって, ターゲットID 2の SCSIテープを加えると, ターゲットID 6 のテープがユニット番号1に固定されているので, それはst2に設定 されるでしょう. ブート時に見つからなくても<em>固定されたデバ - イスにはユニット番号が常に割り当てられる</em>ということに注 - 意してください. 固定のデバイスに - 割り当てられたユニット番号は,もしそのデバイスのスイッチがブー - ト時に切られていてもそのデバイスにリザーブされています. + イスにはユニット番号が常に割り当てられる</em>ということに + 注意してください. 固定のデバイスに + 割り当てられたユニット番号は, もしそのデバイスのスイッチが + ブート時に切られていてもそのデバイスにリザーブされています. これは, 電源を入れて接続した時のユニット番号が与えられます. - デバイスのユニット番号は SCSIバスのター - ゲットIDとは <em>何の関係もない</em>ことに注意してください. + デバイスのユニット番号は SCSIバスのターゲットID + とは <em>何の関係もない</em>ことに注意してください. 下の例は FreeBSDのバージョン 2.0.5 以前の カーネルコンフィ グファイルです. 最初の例との違いはデバイスの「固定 (wired @@ -641,8 +718,8 @@ device cd0 at scbus? [最初に見つけた CDROM, 固定にしない] く</em> 推奨されています. これにより SCSIバスのハードウェアを どのように変更した場合でもトラブルを避けることができます. ですから, 2.0.5.R以前の FreeBSDからアップグレードした後に古い - 信頼できるコンフィグファイルを再利用する時はこの部分をチェッ - クして直してください. + 信頼できるコンフィグファイルを再利用する時はこの部分を + チェックして直してください. <verb> [Adaptec 174x用のドライバ] @@ -657,7 +734,7 @@ device sd0 [4台のSCSI ディスクのサポート, sd0 から sd3] device st0 [2台の SCSI テープのサポート] -[cdromのドライバ] +[CD-ROMのドライバ] device cd0 #Only need one of these, the code dynamically grows </verb> @@ -671,39 +748,40 @@ device cd0 #Only need one of these, the code dynamically grows <tt>man 4 scsi</tt> によって SCSIサブシステムの最新の情報を チェックしてください. より詳細なホストアダプタドライバの使い - 方は, たとえば Adaptec 154xドライバの場合は<tt>man 4 - aha</tt> にあります. + 方は, たとえば Adaptec 294xドライバの場合は<tt>man 4 + ahc</tt> にあります. <sect3><heading>カーネルセットアップでの SCSI チューニング</heading> <p> 経験的に SCSIバスリセット (ブート時におきます) 後のINQUIRYコマ - ンドに対して応答が遅くなるデバイスがあります. INQUIRYコマン - ドは ブート時にカーネルがどの種類のデバイス (ディスク, テープ, - CDROMなど) がどのターゲットIDに接続されているかを調べるために - 発行します. ちなみにこのプロセスをデバイスプロービング (デバ - イス検出) と言います. + ンドに対して応答が遅くなるデバイスがあります. + INQUIRYコマンドは + ブート時にカーネルがどの種類のデバイス (ディスク, テープ, + CD-ROMなど) がどのターゲットIDに接続されているかを調べるために + 発行します. ちなみにこのプロセスをデバイスプロービング + (デバイス検出) と言います. - 「応答の遅いデバイス」の問題を解決するために, FreeBSDは SCSIバ - スをリセットした後に SCSIデバイスの検出をおこなうまでのディレ - イタイムを調整することができます. カーネルコンフィグレーショ - ンファイルの下に示すような行にディレイタイムを設定してくださ - い. + 「応答の遅いデバイス」の問題を解決するために, FreeBSDは + SCSIバスをリセットした後に SCSIデバイスの検出を + おこなうまでのディレイタイムを調整することができます. + カーネルコンフィグレーションファイルの下に示すような + 行にディレイタイムを設定してください. <verb> options SCSI_DELAY=15 #Be pessimistic about Joe SCSI device </verb> - この行ではディレイタイムは 15秒です. 私のシステムでは, 信頼 - できる古い CDROMが認識できるように3秒の値を使っています. もし + この行ではディレイタイムは 15秒です. 私のシステムでは, + 信頼できる古い CD-ROMが認識できるように3秒の値を使っています. もし デバイスの認識で問題が起きる時は大きな値 (30秒であるとか) から - 始めてください. うまく動いたら,値を減らしてちょうどよい値に + 始めてください. うまく動いたら, 値を減らしてちょうどよい値 にチューニングしてください. <sect3><heading>Rogue な SCSI デバイス<label id="scsi:rogue-devices"></heading> <p> - (訳注: rogue は有名なゲーム, ではなくて 悪党, 群から離れた, 凶暴 - な, という意味) + (訳注: rogue は有名なゲーム, ではなくて 悪党, 群から離れた, + 凶暴な, という意味) SCSIの規定は完全で簡潔なものにしようという努力はされましたが, 複雑な規定となり, 正確に実現するのは簡単なことではありません. @@ -712,8 +790,8 @@ options SCSI_DELAY=15 #Be pessimistic about Joe SCSI device ここで 「イカレた」デバイスが現れることになります. このような デバイスは FreeBSD のカーネルにいくらか標準的 ではない振舞をするものと認識されます. 「イカレた」デバイスは - ブート時にカーネルによって報告されます. 次の例は私の2つのカー - トリッジテープユニットです. + ブート時にカーネルによって報告されます. 次の例は私の2つの + カートリッジテープユニットです. <verb> Feb 25 21:03:34 yedi /kernel: ahb0 targ 5 lun 0: <TANDBERG TDC 3600 -06:> @@ -730,15 +808,16 @@ Mar 29 21:16:37 yedi /kernel: st1: Archive Viper 150 is a known rogue の課題にしておきます. FreeBSDの SCSIサブシステムは 検出時の INQUIRYの応答を見て - 悪い習慣を持つデバイスの認識をしています. INQUIRYの応答にはデ - バイスのファームウェアのバージョン番号が含まれるため, 異なる + 悪い習慣を持つデバイスの認識をしています. INQUIRYの応答には + デバイスのファームウェアのバージョン番号が含まれるため, 異なる 動作をするファームウェアのバージョンを区別することも可能です. - 例えば, /sys/scsi/st.c や /sys/scsi/scsiconf.c を見てくださ - い. どのように行っているか, より多くの情報があります. + 例えば, /sys/scsi/st.c や /sys/scsi/scsiconf.c を + 見てください. + どのように行っているか, より多くの情報があります. この方法はうまく行きますが, もちろん既知のデバイスがつながっ ている場合だけうまくいくということに気をつける必要があります. - もしあなた以前に Mumbletech SCSI CDROM (訳注: 架空のメーカ + もしあなた以前に Mumbletech SCSI CD-ROM (訳注: 架空のメーカ のデバイスです) を接続した人がいないとしたら, どんな「ワザ」 を使ってそれを使うか自分で見つけないといけないかもしれません. @@ -783,46 +862,47 @@ Mar 29 21:16:37 yedi /kernel: st1: Archive Viper 150 is a known rogue SC_MORE_LUSにします. エントリを作る必要がある場合は scsiconf.c にある MBR-7等のエントリを参考にするといいでしょう. - カーネルは INQUIRYに一致するデータをブート時にテーブルから探し - てこれにしたがって振舞います. より多くの情報はソースコードを見て - ください. + カーネルは INQUIRYに一致するデータをブート時にテーブルから + 探してこれにしたがってふるまいます. より多くの情報は + ソースコードを見てください. <sect3><heading>タグ コマンド キューイング</heading> <p> - 最近の SCSI デバイス, 特に磁気ディスクではタグ コマンド キュー - イング (tagged command queuing: TCQ) がサポートされています. + 最近の SCSI デバイス, 特に磁気ディスクではタグ コマンド + キューイング (tagged command queuing: TCQ) がサポートされています. 要約すれば, TCQは複数のI/Oリクエストを同時に受けることを可能 にすることです. デバイスはインテリジェントですから,リクエスト - キューにある処理 (ヘッドのポジショニングなど) の最適化をおこなうこ - とができます. RAID (Redundant Array of Independent + キューにある処理 (ヘッドのポジショニングなど) の最適化を + おこなうことができます. RAID (Redundant Array of Independent Disks) のようなSCSIデバイスではTCQ機能はデバイスの持つ並列性の 利点を生かすために不可欠です. 各々の I/O リクエストは単一の `tag' (タグ コマンド キューイン グの名前の由来) が与えられます. FreeBSDはこの tagによりデバ - イスドライバのキューの中のどの I/Oリクエストが完了したかの識 - 別をおこないます. + イスドライバのキューの中のどの I/Oリクエストが完了したかの + 識 別をおこないます. TQCのリクエストはデバイスドライバがサポートしていたとしても - あるデバイスのファームウェアではインプリメントが正しくないかもし - れません. このような問題に出会うと非常に不可解な問題につ - ながります. このような場合は TCQ を無効にしてみてください. + あるデバイスのファームウェアではインプリメントが正しくない + かもしれません. このような問題に出会うと非常に不可解な問題に + つながります. このような場合は TCQ を無効にしてみてください. <sect3><heading>バスマスタ ホストアダプタ</heading> <p> - すべてではありませんが多くの SCSIホストアダプタはバスマスタコ - ントローラです. これはホストCPUにデータ転送の負荷をか - けず, ボード自身がI/Oをおこないます. + すべてではありませんが多くの SCSIホストアダプタは + バスマスタコントローラです. これはホストCPUにデータ転送の + 負荷をかけず, ボード自身がI/Oをおこないます. これは FreeBSDのようなマルチタスクのオペレーティングシステム では大きな利点になります. しかし, 何らかの問題の起きることも あります. - 例えば Adaptec 1542 コントローラは ホストバス (ここではISAま - たはATバス) を異なった転送速度に設定できます. コントローラが + 例えば Adaptec 1542 コントローラは ホストバス (ここでは ISA + または AT バス) を異なった転送速度に設定できます. + コントローラが 異なるレートに設定できるのはすべてのマザーボードで高速な転送が - できる訳ではないからです. マザーボードに合っていない高速の + できるわけではないからです. マザーボードに合っていない高速の データ転送速度を用いた時には, ハングアップやデータの損傷等の 問題が起きるかもしれません. @@ -840,8 +920,9 @@ Mar 29 21:16:37 yedi /kernel: st1: Archive Viper 150 is a known rogue options "TUNE_1542" #dynamic tune of bus DMA speed </verb> - あなたの使うホストアダプタについてのマニュアルページをチェッ - クしてください. また最終的な手段としては究極のドキュメントを + あなたの使うホストアダプタについてのマニュアルページを + チェックしてください. + また最終的な手段としては究極のドキュメントを 使ってください (つまりドライバのソースを読んでくださいというこ とです). |
