Linux DPT Hardware RAID HOWTO Ram Samudrala (me@ram.org) v1.4, 9 April 1999 高橋 聡 hisai@din.or.jp 27 Jul 1999 Linux でハードウエア RAID をセットアップする方法 序論

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

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

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

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

サポートされているコントローラ

今のところ、ホストに内蔵するタイプのハードウエア RAID コントローラ の内でサポートが良いのは(Linux のドライバがある)は、の製品です。もちろん他のメーカにも Linux で動作すると思われるホストに内蔵するタイプ、通常の SCSI カード とケーブル で接続するタイプ(以下 SCSI-SCSI タイプ)のハードウエア RAID コントローラが あります。 , と などがそれに当たります。 この他にも SCSI-SCSI タイプのコントローラはいくつもありますので、 詳細は、 を見てください。

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

DPT 製のコントローラ

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

ICP 製の vortex コントローラ

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

監視ツールの GDTMON を使えば、システムが稼働中でも管理が可能になります (転送レートのチェック、コントローラやハード・ディスクのパラメタの設定、 障害があるハード・ディスクの交換、その他)。現在、構築可能な構成は、 SCSI チャネル数が 1 もしくは 2 で wide もしくは ultra SCSI コント ローラを使用する RAID 0 と RAID 1 の組合せか、RAID 1、2、3 と RAID 5の組合せ。 wide もしくは ultra SCSI コントローラ を使用する RAID 0、1、4、5 と RAID 10の組合せ。 SCSI チャネル数が 1 もしくは 2 チャネルの wide もしくは ultra2 の LVDS SCSI コントローラを使用する RAID 0 と RAID 1の組合せか、RAID 1、2、3 と RAID 5 の組合せ。 wide もしくは ultra2 の LVDS SCSI コントローラを使用する RAID 0、 1、4、5 と RAID 10 の組合せ。 ファイバー・チャネル数が 1 もしくは 2 ポートのファイバー・チャネル コントローラを使用した RAID 0、1、4、5 と RAID 10 の組合せ。 まもなく 64 ビットのコントローラが利用できるようになる予定です。

訳註 RAID 10:ストライピングとミラーリングを行います。 LVDS:Low Voltage Differential Signalling の略称。転送速度が 80 MB/sec まで可能で、ケーブル長が 12m まで伸ばせます。 現在、64 ビット PCI ファイバー・チャネル コントローラは Linux (カーネル 2.0.36 と 2.2.0(pre7)) で利用可能になりました。 詳しくは、 参照してください。 どのハードウエアを使うべきか? コントローラ タイプ

上記に上げた利用可能な組合せの中から、RAID を構築したいと考えている なら、何が実際に必要なのかをよく考える必要があります。RAID に何を求める かによって、どの RAID レベルが必要かが決まります。その条件によって適切な カードも決定できると思います。SCSI-SCSI タイプのアダプタはホストに内蔵する タイプのものよりパフォーマンスが劣るかもしれません。例えば、 を見てみると、その理由が書いてあ ります。 EATA-DMA ドライバを書いた Michael Neuffer 氏 ()はこの件についてのわかりやすい解説を 彼の Web に載せています。

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

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

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

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

ハードウエアを設置したら、DOS のシステム・ディスクを使ってブートして ください。ブートしたらストレージ・マネージャの入っているディスクに 交換して、下記のコマンドを使って立ち上げてください。 a:\ dptmgr しばらくすると、親切なメニュー画面がでてきます。ディスクをハードウエア RAID (シングル・ロジカル・アレイ)として設定しましょう。

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

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

カーネルの構築

カーネルの構築を行う場合、SCSI のサポートと 自分のマシンで使用している ローレベルなドライバを設定する必要があります。 を見ればカーネルのコンパイルの方法が載っています。 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 ほどになって いるはずです。

ブート時のメッセージ

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: 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 を使っています)。

使いかた fdisk, mke2fs, mount, etc.

これで RAID を普通のディスクと同じように扱うことができます。次に まずやらなければならないことは、パーティションをきることです(fdisk を 使います)。ext2 ファイルシステムを設定する必要があります。次のコマンド を走らせてください。 % mkfs -t ext2 /dev/sdxN /dev/sdxN は SCSI のパーティションの名前です。これでパーティションを マウントして、他のディスクと同じように使えるようになります (/etc/fstab にエントリを追加しましょう)。

ホットスワップ

はじめに我々は、ドライブの 1 つを取り出して、それをまた戻すという、 ホットスワップのテストを、DPT 製 の 組み込みタイプの RAID で試して みました(この RAID は高価です)。するとドライブを完全に抜く前に、ディスクの 一つが故障した状態になりました(この時、警告音で気が狂いそうになりました)。 ディスクが故障したにもかかわらず、RAID の全てのデータにアクセスできました。

壊れたディスクを交換するふりをして、同じドライブを戻してみました。 ドライブはリビルドされて、全て OK のようでした。ディスクが埋まって、 リビルドしている間、全てのデータにアクセスできました。ただしここで他の ディスクが故障していたら、とんでもない事態になっていた、ということをおぼえて おいてください。

パフォーマンス

ベンチマークソフトの 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)

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 と入力してください。

トラブルシューティング ブート時に SCSI ホストが認識されない

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

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

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

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

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

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

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

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

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

謝辞

このドキュメントを書き上げるにあたって、下記の方々のお世話にになりました。 Andreas Koepf () Boris Fain () Dario Ballabio () Heiko Rommel () Jos Vos () Michael Neuffer () Ralph Wallace () Russell Brown () Syunsuke Ogata () Tom Brown ()