  Linux DPT Hardware RAID HOWTO
  Ram Samudrala (me@ram.org)
  v1.4, 9 April 1999
  高橋 聡 hisai@din.or.jp
  27 Jul 1999

  Linux でハードウエア RAID をセットアップする方法
  ______________________________________________________________________

  目次

  1. 序論
  2. サポートされているコントローラ
     2.1 DPT 製のコントローラ
     2.2 ICP 製の vortex コントローラ

  3. どのハードウエアを使うべきか？
     3.1 コントローラ タイプ
     3.2 RAID ディスク組み込みタイプ

  4. インストール
     4.1 インストールとハードウエアの設定
     4.2 カーネルの構築
     4.3 ブート時のメッセージ

  5. 使いかた
     5.1 fdisk, mke2fs, mount, etc.
     5.2 ホットスワップ
     5.3 パフォーマンス

  6. EATA DMA ドライバの機能
  7. トラブルシューティング
     7.1 ブート時に SCSI ホストが認識されない
     7.2 実際のディスクの個数と RAID の設定があわない
     7.3 フォーマットの最中にマシンもしくはコントローラがダウンしてしまう
     7.4 まったくお手上げです...

  8. 参考文献
  9. 謝辞

  ______________________________________________________________________

  1.  序論

  このドキュメントは、SCSI ハードウエア RAID(Redundant Array of
  Inexpensive(Independent) Disks) のセットアップを解説します。 DPT が発
  売している、ホストに内蔵するタイプのアダプタに焦点を当てて説明します
  が、基本的な原理は、他のシステムにも当てはまると思います。

  訳註：RAID という言葉がはじめて登場した時は、Redundant Array of
  Inexpensive Disks という表現でしたが、最近は Redundant Array of
  Independent Disks と表現する場合もあります。

  これから解説する内容については、ご自分の責任において利用してください。
  このドキュメントを読んで行ったこと全てにおいて、一切責任は持てません。
  最新版はここにあります。
  http://www.ram.org/computing/linux/dpt_raid.html.

  このドキュメントの前提条件は、Linux がすでに稼働していることだけです。
  また私が試した機器は DPT の Smartcache IV PM2144UW と PM3334UW コント
  ローラと DPT(SmartRAID tower)、Wetex の アダプタ組み込みタイプの RAID
  だけです。他のシステムを設定したことはありませんので、あなたのシステム
  の設定とは異なる場合があることをご承知おきください。
  2.  サポートされているコントローラ

  今のところ、ホストに内蔵するタイプのハードウエア RAID コントローラの内
  でサポートが良いのは(Linux のドライバがある)は、DPT
  <http://www.dpt.com>の製品です。もちろん他のメーカにも Linux で動作す
  ると思われるホストに内蔵するタイプ、通常の SCSI カード とケーブルで接
  続するタイプ(以下 SCSI-SCSI タイプ)のハードウエア RAID コントローラが
  あります。 Syred <http://www.syred.com>、 ICP-Vortex <http://www.icp-
  vortex.com>, と BusLogic <http://www.mylex.com>などがそれに当たりま
  す。この他にも SCSI-SCSI タイプのコントローラはいくつもありますので、
  詳細は、 RAID solutions for Linux page
  <http://linas.org/linux/raid.html> を見てください。

  将来、他のコントローラがサポートされたら、できるだけこのドキュメントに
  反映させていくつもりです。このドキュメントに必要だと思われるような情報
  があれば、ぜひ送ってください。

  2.1.  DPT 製のコントローラ

  今のところこのドキュメントは、DPT の製品を中心に説明してあります。
  SmartRAID IV シリーズのコントローラは全てサポートされています。

  2.2.  ICP 製の vortex コントローラ

  ICP 製の vortex は、フル ライナップのディスク・アレイ・コントローラシ
  リーズです。ICP のドライバは、カーネル 2.0.31 からサポートされていま
  す。メジャーなディストリビューションである S.u.S.e.、LST Power
  Linux、Caldera と Red Hat では OS のインストールの時に認識されま
  す。RAID システムは、 ROMSETUP で簡単に設定できます(設定のために MS-
  DOS でブートする必要はありません！)。

  監視ツールの GDTMON を使えば、システムが稼働中でも管理が可能になります
  (転送レートのチェック、コントローラやハード・ディスクのパラメタの設
  定、障害があるハード・ディスクの交換、その他)。現在、構築可能な構成
  は、

  o  SCSI チャネル数が 1 もしくは 2 で wide もしくは ultra SCSI コント
     ローラを使用する RAID 0 と RAID 1 の組合せか、RAID 1、2、3 と RAID
     5の組合せ。

  o  wide もしくは ultra SCSI コントローラ を使用する RAID 0、1、4、5 と
     RAID 10の組合せ。

  o  SCSI チャネル数が 1 もしくは 2 チャネルの wide もしくは ultra2 の
     LVDS SCSI コントローラを使用する RAID 0 と RAID 1の組合せか、RAID
     1、2、3 と RAID 5 の組合せ。

  o  wide もしくは ultra2 の LVDS SCSI コントローラを使用する RAID 0、
     1、4、5 と RAID 10 の組合せ。

  o  ファイバー・チャネル数が 1 もしくは 2 ポートのファイバー・チャネル
     コントローラを使用した RAID 0、1、4、5 と RAID 10 の組合せ。

  まもなく 64 ビットのコントローラが利用できるようになる予定です。

  訳註

  o  RAID 10：ストライピングとミラーリングを行います。

  o  LVDS：Low Voltage Differential Signalling の略称。転送速度が 80
     MB/sec まで可能で、ケーブル長が 12m まで伸ばせます。

  o  現在、64 ビット PCI ファイバー・チャネル コントローラは Linux (カー
     ネル 2.0.36 と 2.2.0(pre7)) で利用可能になりました。詳しくは、
     <http://www.icp-vortex.com> 参照してください。
  3.  どのハードウエアを使うべきか？

  3.1.  コントローラ タイプ

  上記に上げた利用可能な組合せの中から、RAID を構築したいと考えているな
  ら、何が実際に必要なのかをよく考える必要があります。RAID に何を求める
  かによって、どの RAID レベルが必要かが決まります。その条件によって適切
  なカードも決定できると思います。SCSI-SCSI タイプのアダプタはホストに内
  蔵するタイプのものよりパフォーマンスが劣るかもしれません。例えば、 DPT
  comparison between host-based and SCSI-to-SCSI adapters
  <http://www.dpt.com/hstvscsi.htm>を見てみると、その理由が書いてありま
  す。
  EATA-DMA ドライバを書いた Michael Neuffer 氏
  (neuffer@kralle.zdv.uni-mainz.de)はこの件についてのわかりやすい解説を
  彼の Web に載せています。 Linux High Performance SCSI and RAID page
  <http://www.uni-mainz.de/~neuffer/scsi/>。

  3.2.  RAID ディスク組み込みタイプ

  RAID ディスク組み込みタイプはたいへん優れています。ドライブのホット・
  スワップ、ワーニング・システム(例えば、故障時の表示をしたり、どのドラ
  イブが故障したかを知ることができる、など)そしてドライブの状態監視(予備
  の冷却装置や電源供給装置の状況)が可能です。我々は DPT 製の 初期の 18GB
  RAID 5 システムを使用していましたが、たいへん高価でした。今は Wetex 製
  のものを使用しており、 (http://www.wetex.com/) DPT と同じスペックで、
  価格は およそ 1/4 です。その Wetex 製のシステムは、14 個のベイを持
  ち、2 つの RAID 5 アレイを組んでいます。容量はそれぞれ 45 GB と 63 GB
  です。

  4.  インストール

  4.1.  インストールとハードウエアの設定

  カードやドライブのインストールは解説書を参照して行ってください。DPT は
  まだ Linix 用のストレージ・マネージャがないので、システムが入っている
  MS-DOS でフォーマット済みのフロッピー・ディスクが必要になります(MS-DOS
  のコマンドラインで "format /s" とすると作れます)。また、DPT の MS-DOS
  用ストレージ・マネージャも必要になります。安全のため、オリジナル・ディ
  スクからコピーを作成してください。

  ハードウエアを設置したら、DOS のシステム・ディスクを使ってブートしてく
  ださい。ブートしたらストレージ・マネージャの入っているディスクに交換し
  て、下記のコマンドを使って立ち上げてください。

       a:\ dptmgr

  しばらくすると、親切なメニュー画面がでてきます。ディスクをハードウエア
  RAID (シングル・ロジカル・アレイ)として設定しましょう。

  MS-DOS のストレージ・マネージャはマウスで簡単に扱えるようになっていま
  すので、マウス・ドライバをシステム・ディスクに入れておくと良いと思いま
  す。

  技術的には SCO 製のストレージ・マネージャを Linux 上で動かすこともでき
  るはずですが、トラブルの元になるかもしれません。Linux 上で MS-DOS のス
  トレージ・マネージャを動かす方が簡単です。

  4.2.  カーネルの構築

  カーネルの構築を行う場合、SCSI のサポートと 自分のマシンで使用している
  ローレベルなドライバを設定する必要があります。 Kernel HOWTO
  <http://sunsite.unc.edu/mdw/HOWTO/Kernel-HOWTO.html> を見ればカーネル
  のコンパイルの方法が載っています。 SCSI support を "yes" にして、low
  level drivers のセクションでご自分が使用しているドライバを選んでくださ
  い(EATA DMA か EATA ISA/EISA/PCI が EATA DMA プロトコルに準拠した DPT
  製のカードです。 EATA PIO は、DPT 製のとても古いカードである PM2001 と
  PM2012A用です)。 EATA DMA と EATA ISA/EISA/PCI を含むたいていのドライ
  バは最近のカーネルではサポートされているはずです。

  正しい設定を終えて、カーネルをコンパイルした後にリブートすると、ドライ
  バが RAID を単体の SCSI ディスクと認識しているのがわかるはずです。もし
  RAID 5 で組んでいたなら、実際に使えるディスク容量が 2/3 ほどになってい
  るはずです。

  4.3.  ブート時のメッセージ

  EATA DMA ドライバを使っていれば、ブート時のメッセージは次のようになっ
  ているはずです。

       EATA (Extended Attachment) driver version: 2.59b
       developed in co-operation with DPT
       (c) 1993-96 Michael Neuffer, mike@i-Connect.Net
       Registered HBAs:
       HBA no. Boardtype    Revis  EATA Bus  BaseIO IRQ DMA Ch ID Pr QS  S/G IS
       scsi0 : PM2144UW     v07L.Y 2.0c PCI  0xef90  11 BMST 1  7  N  64 252 Y
       scsi0 : EATA (Extended Attachment) HBA driver
       scsi : 1 host.
         Vendor: DPT       Model: RAID-5            Rev: 07LY
         Type:   Direct-Access                      ANSI SCSI revision: 02
       Detected scsi disk sda at scsi0, channel 0, id 8, lun 0
       scsi0: queue depth for target 8 on channel 0 set to 64
       scsi : detected 1 SCSI disk total.
       SCSI device sda: hdwr sector= 512 bytes. Sectors= 35591040 [17378 MB] [17.4 GB]

  (この表示のシステム構成は、1 枚の DPT SCSI コントローラと、3 個の 9 GB
  のディスクで RAID 5 を組んでいます)。

  EATA ISA/EISA/PCI ドライバでブートすると、このようなメッセージがでるは
  ずです。

  aic7xxx: <Adaptec AHA-294X SCSI host adapter> at PCI 15
  aic7xxx: BIOS enabled, IO Port 0x7000, IO Mem 0x3100000, IRQ 15, Revision B
  aic7xxx: Single Channel, SCSI ID 7, 16/16 SCBs, QFull 16, QMask 0x1f
  EATA0: address 0x7010 in use, skipping probe.
  EATA0: 2.0C, PCI 0x7410, IRQ 11, BMST, SG 252, MB 64, tc:y, lc:y, mq:62.
  EATA0: wide SCSI support enabled, max_id 16, max_lun 8.
  EATA0: SCSI channel 0 enabled, host target ID 6.
  EATA/DMA 2.0x: Copyright (C) 1994-1997 Dario Ballabio.
  scsi0 : Adaptec AHA274x/284x/294x (EISA/VLB/PCI-Fast SCSI) 4.1.1/3.2.1
  scsi1 : EATA/DMA 2.0x rev. 3.11.00
  scsi : 2 hosts.
  scsi0: Scanning channel A for devices.
    Vendor: IBM OEM   Model: DFHSS2F           Rev: 1818
    Type:   Direct-Access                      ANSI SCSI revision: 02
  Detected scsi disk sda at scsi0, channel 0, id 0, lun 0
    Vendor: SEAGATE   Model: ST41650       TX  Rev: DG01
    Type:   Direct-Access                      ANSI SCSI revision: 02
  Detected scsi disk sdb at scsi1, channel 0, id 0, lun 0
    Vendor: TEAC      Model: FC-1     GF   00  Rev: RV L
    Type:   Direct-Access                      ANSI SCSI revision: 01 CCS
  Detected scsi removable disk sdc at scsi1, channel 0, id 3, lun 0
    Vendor: SONY      Model: CD-ROM CDU-541    Rev: 2.6a
    Type:   CD-ROM                             ANSI SCSI revision: 02
  Detected scsi CD-ROM sr0 at scsi1, channel 0, id 5, lun 0
  EATA0: scsi1, channel 0, id 0, lun 0, cmds/lun 21, sorted, tagged.
  EATA0: scsi1, channel 0, id 3, lun 0, cmds/lun 21, sorted.
  EATA0: scsi1, channel 0, id 5, lun 0, cmds/lun 21, sorted.
  scsi : detected 1 SCSI cdrom 3 SCSI disks total.
  SCSI device sda: hdwr sector= 512 bytes. Sectors= 4404489 [2150 MB] [2.2 GB]
  SCSI device sdb: hdwr sector= 512 bytes. Sectors= 2779518 [1357 MB] [1.4 GB]
  SCSI device sdc: hdwr sector= 256 bytes. Sectors= 4160 [1 MB] [0.0 GB]

  (この表示のシステム構成は、2 枚の SCSI コントローラ、DPT 製の PM3224W
  と Adaptec 製の AHA2940 を使っています)。

  5.  使いかた

  5.1.  fdisk, mke2fs, mount, etc.

  これで RAID を普通のディスクと同じように扱うことができます。次にまずや
  らなければならないことは、パーティションをきることです(fdisk を使いま
  す)。ext2 ファイルシステムを設定する必要があります。次のコマンドを走ら
  せてください。

       % mkfs -t ext2 /dev/sdxN

  /dev/sdxN は SCSI のパーティションの名前です。これでパーティションをマ
  ウントして、他のディスクと同じように使えるようになります (/etc/fstab
  にエントリを追加しましょう)。

  5.2.  ホットスワップ

  はじめに我々は、ドライブの 1 つを取り出して、それをまた戻すという、
  ホットスワップのテストを、DPT 製 の 組み込みタイプの RAID で試してみま
  した(この RAID は高価です)。するとドライブを完全に抜く前に、ディスクの
  一つが故障した状態になりました(この時、警告音で気が狂いそうになりまし
  た)。ディスクが故障したにもかかわらず、RAID の全てのデータにアクセスで
  きました。
  壊れたディスクを交換するふりをして、同じドライブを戻してみました。ドラ
  イブはリビルドされて、全て OK のようでした。ディスクが埋まって、リビル
  ドしている間、全てのデータにアクセスできました。ただしここで他のディス
  クが故障していたら、とんでもない事態になっていた、ということをおぼえて
  おいてください。

  5.3.  パフォーマンス

  ベンチマークソフトの Bonnie で計測した結果を次にあげます。機器は、
  2144 UW に 9x3=17 GB のディスクを RAID 5 で構成し、EATA DMA ドライバを
  使用しています。RAID 用のマシンは、デュアルの Pentium Pro が搭載され、
  Linux 2.0.33 がのっています。比較として、同一マシンの IDE ドライブの
  Bonnie の結果ものせておきます。

                  -------Sequential Output-------- ---Sequential Input--  --Random--
                  -Per Char- --Block--- -Rewrite-- -Per Char- --Block---  --Seeks---
               MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU   /sec  %CPU
       RAID   100  9210 96.8  1613  5.9   717  5.8  3797 36.1 90931 96.8 4648.2 159.2
       IDE    100  3277 32.0  6325 23.5  2627 18.3  4818 44.8 59697 88.0  575.9  16.3

  上記の計測結果に異論をもたれる方もいます(間違いなくこの結果なのです
  が...。もう我々のマシンは実稼働状態にあるので、もう一度計測することが
  できません)。理由は、テストに使用したファイルの大きさが小さいため、
  ディスク・キャッシュに入ってしまったかもしれない、ということです(こう
  なると、普通ではありえない、素晴らしいパフォーマンスがでてしまいま
  す)。次は 3344 UW コントローラを用いた結果です。

               -------Sequential Output-------- ---Sequential Input-- --Random--
               -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --Seeks---
            MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU  /sec %CPU
          1000  1714 17.2  1689  6.0  1200  5.7  5263 40.2  7023 12.1  51.3 2.2

  こんどは、ホスト内蔵タイプの RAID システムの計測結果です。

            -------Sequential Output-------- ---Sequential Input-- --Random--
            -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --Seeks---
       MB   K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
       64   7465 100.0 70287 98.7 37012 97.7 8074 99.2 *****100.3 ***** 196.6
       128  7289 99.3  67595 98.5 35294 98.6 7792 97.6 *****100.3 ***** 195.8
       256  7222 98.8  44844 69.6 16096 51.8 5787 72.7 ***** 99.8 ***** 85.2
       512  7138 98.4  13871 23.2 7888  29.3 7183 89.3 16488 27.2 1585. 11.5
       1024 6908 95.8  12270 21.5 7161  25.4 7373 90.4 16527 28.2 123.8 1.8
       2047 6081 84.1  12664 22.6 7191  25.6 7289 89.5 16573 28.5 75.0  1.2

  ***** の部分は結果表示の枠を越えてしまったものです(> 100 MB/sec, >
  10000 seeks/sec)

  ホスト:   デュアル PII 400 MHz, 2 x U2W, 512 MB RAM, 内蔵ディスクなし
  RAID:   IFT 3102 UA 128 MB キャッシュ, RAID-5, 6 x 9 GB OS:     SuSE
  Linux 6.0(カーネル 2.2.3)

  6.  EATA DMA ドライバの機能

  このセクションでは、Linux で RAID の設定をチェックできるコマンドのいく
  つかを紹介します。eata_dma ドライバを参照できるなら、他のドライバの
  チェックにもこの方法が使えます。

  ドライバの設定を確認する場合、このように入力してください。

       % cat /proc/scsi/eata_dma/N

  N はコントローラを示すホスト ID です。次のような結果になるはずです。

       EATA (Extended Attachment) driver version: 2.59b
       queued commands:         353969
       processed interrupts:    353969

       scsi0 : HBA PM2144UW
       Firmware revision: v07L.Y
       Hardware Configuration:
       IRQ: 11, level triggered
       DMA: BUSMASTER
       CPU: MC68020 20MHz
       Base IO : 0xef90
       Host Bus: PCI
       SCSI Bus: WIDE Speed: 10MB/sec.
       SCSI channel expansion Module: not present
       SmartRAID hardware: present.
           Type: integrated
           Max array groups:              7
           Max drives per RAID 0 array:   7
           Max drives per RAID 3/5 array: 7
       Cache Module: present.

      Type: 0
      Bank0: 16MB without ECC
      Bank1: 0MB without ECC
      Bank2: 0MB without ECC
      Bank3: 0MB without ECC
  Timer Mod.: present
  NVRAM     : present
  SmartROM  : enabled
  Alarm     : on
  Host<->Disk command statistics:
           Reads:      Writes:
      1k:           0            0
      2k:           0            0
      4k:           0            0
      8k:           0            0
     16k:           0            0
     32k:           0            0
     64k:           0            0
    128k:           0            0
    256k:           0            0
    512k:           0            0
   1024k:           0            0
  >1024k:           0            0
  Sum   :           0            0

  さらに詳しい状態をみたいなら、このように入力してください。

       % echo "eata_dma latency" > /proc/scsi/eata_dma/N

  実行したら、次に、

       % cat /proc/scsi/eata_dma/N

  これでもっと詳しい状態がわかります。

  この機能を停止したいなら、

       % echo "eata_dma nolatency" > /proc/scsi/eata_dma/N

  と入力してください。

  7.  トラブルシューティング

  7.1.  ブート時に SCSI ホストが認識されない

  いくつか原因が考えられますが、おそらくカーネルのドライバの設定が間違っ
  ているのではないでしょうか。適切なドライバ(EATA-DMA や EATA
  ISA/EISA/PCI ドライバはたいていの DPT 製のカードに使えます)が設定され
  ているか、確認してください。

  7.2.  実際のディスクの個数と RAID の設定があわない

  RAID の設定がうまくいっていません。DPT のストレージ・マネージャを使っ
  ているなら、RAID を 1 つの論理アレイとして設定する必要がありま
  す。EATA-DMA ドライバを書いた Michael Neuffer
  (neuffer@kralle.zdv.uni-mainz.de)は次のように述べています。「コント
  ローラの設定をする時、ストレージ・マネージャを /FW0 付きで起動してくだ
  さい。そして、OS の選択を Solaris にしてください。これでアレイはコント
  ローラによって管理される設定になるでしょう」

  7.3.  フォーマットの最中にマシンもしくはコントローラがダウンしてしまう

  DPT のマニュアルによれば、これはやってはいけない作業の 1 つです。この
  作業を行うとディスクを製造時の状態に戻すことになりますが、DPT のスト
  レージ・マネージャではフォーマットをすることができません。しかし、ロー
  レベル・フォーマットは、DPT が Web のユーティリティのページ
  (http://www.dpt.com/techsup/sr4utils.htm).で用意している clfmt を使っ
  て行うことができます。clfmt.zip を unzip してから、使用方法(正しい使用
  方法です)が書いてある解説書を読んでください。ローレベル・フォーマット
  を行えば、新しいディスクとして扱えます。ただしこのプログラムは、くれぐ
  れも注意して使用してください！

  7.4.  まったくお手上げです...

  SCSI-HOWTO をもう一度読んでください。ケーブルの接続と終端のしかたを
  チェックしてください。他のマシンで試してみてください。SCSI 機器の問題
  で一番多いのは、ハードウエアの故障と間違った設定です。それでもだめな
  ら、関連するニュース・グループに投稿したり、私に電子メールをください。
  できるだけご要望に答えられるようにしたいと思います。

  訳註：著者の方に質問される場合は、必ず英語でお願い致します。

  8.  参考文献

  下記のドキュメントは、RAID を設定する際にたいへん役にたちます。

  o  DPT Technology Library <http://www.dpt.com/library.htm>

  o  EATA-DMA homepage <http://www.uni-
     mainz.de/~neuffer/scsi/dpt/index.html>

  o  Linux Disk HOWTO <http://sunsite.unc.edu/mdw/HOWTO/Disk-HOWTO.html>

  o  Linux Kernel HOWTO <http://sunsite.unc.edu/mdw/HOWTO/Kernel-
     HOWTO.html>

  o  Linux SCSI HOWTO <http://sunsite.unc.edu/mdw/HOWTO/SCSI-HOWTO.html>

  o  Multi Disk System Tuning HOWTO
     <http://www.nyx.net/~sgjoen/disk.html>

  o  RAID Solutions for Linux <http://linas.org/linux/raid.html>

  9.  謝辞

  このドキュメントを書き上げるにあたって、下記の方々のお世話になりまし
  た。

  o  Andreas Koepf (A_Koepf@icp-vortex.com)

  o  Boris Fain (fain@zen.stanford.edu)

  o  Dario Ballabio (Dario_Ballabio@milano.europe.dg.com)

  o  Heiko Rommel (Heiko.Rommel@Uni-Bielefeld.DE)

  o  Jos Vos (jos@xos.nl)

  o  Michael Neuffer (neuffer@kralle.zdv.uni-mainz.de)

  o  Ralph Wallace (rwallace@rwallace.interaccess.com)

  o  Russell Brown (russell@lutton.lls.com)

  o  Syunsuke Ogata (Syunsuke_Ogata@appear.ne.jp)

  o  Tom Brown (tbrown@baremetal.com)

