Linux RAID(その1)

「やあ皆さん。我々はカーネル2.6.xシリーズでうまく動作できるローコストで、高い信頼性のIDE RAIDソリューションを捜している。」Dr. Johannes Ruscheinskiからのこの問い合わせがきっかけで始まったLKMLのスレッドでは、LinuxソフトウェアRAIDに関して、興味深い議論が展開されていった。

読者から、カーネル2.6を含めた最近のLinuxのRAIDの状況について取り上げて欲しいという問い合わせがあったので、早速Kernel Trafficを当たってみた。このスレッドは2003年12月末と、またも少し古い話題から始めて恐縮だが、SATAや割と新しいP-ATAのカードに関する情報もあるので、紹介する。

コスト性能が良いRAID?

Johannesは続けた。我々は、冗長性の無いRAIDモードでアクセスしたい約1TB(8つのディスク)を持っている。その通り私は、冗長度の不足と高い信頼性が矛盾していることを知っている。実は現在ほかにも予定があるため、資金を欠いているのだが、ディスク装置の要求のために我々が、近い将来にはより多くの資金を得ることができるかもしれないとは言える。

Joel Jaeggliが答えた。

8つの非冗長ドライブで1TBということは、160GBのディスクを使っていることになるのかな…違う?
現在のところ最大のP-ATAディスクは320GBだから、1TBのソフトウェアRAID 5のストライプを、PROMISE RAIDではなくPROMISE TX4000のようなシングル4ポートのATAコントローラと、一般的なソフトウェアで構築することができる。それは結果的にかなり安くでき、またプロテクションも買うことができるだろう。
LinuxソフトウェアRAIDは、我々がこの数年にわたって使用してきた他のシステムと同様に信頼がおけるものだった。あなたの状況での信頼性の欠如は、1つを失うとファイルシステムがバンザイするという、ディスクの故障から来る。

ハードウェアRAID vs. ソフトウェアRAID

JohannesはJoelにありがとうと言ってさらに尋ねた。

PROMISE TX4000のハードウェアRAID機能をなぜ使用しないのだろうか。また、ソフトウェアRAID を代わりに使用したならば、CPUオーバヘッドはどうなるだろうか?

Bert Hubertがデータを示して言った。

LinuxのネイティブRAIDと同様の機能を提供する外部デバイスとのコスト差で、追加のCPUを調達しなさい。私はRAID5を全く使用していないが、現代のCPUにとって毎秒多大なメガバイトのチェックサムを計算することは、子どもの遊びである。
RAID5: チェックサム速度の測定
8regs : 1479.600 MB/sec
32regs : 744.400 MB/sec
pIII_sse : 1649.200 MB/sec
pII_mmx : 1806.000 MB/sec
p5_mmx : 1915.200 MB/sec
pIII_sse機能を使用したRAID5の結果は、1649.200 MB/secとなる。
これらは800MHzのCeleronでの結果である。従って、最近の2GHzオーバのシステムでは、まだもっといい値になる。

Arjan van de Venもまた Johannesにアドバイスした。

注意する事。一部を除いて、バイナリだけで提供されるほとんどすべてのATA RAIDコントローラのドライバには、隠された*software RAID*がある。さらに一般的にこれらのオンディスク・フォーマットは、全く不運にもLinuxソフトウェアRAIDよりも、遅くなってしまうことである。

H. Peter Anvinが追加した。

*特定製品*には言及しないが、考えて欲しい。Linux ソフトウェアRAIDでは業者の製造中止や、廃業について心配する必要はない。どんな種類のコントローラでも使用できるので、CPUにディスクを接続することができる限り、データを回復することができる。既製品のRAIDコントローラが悲鳴を上げたときに、同じブランド/モデルを得ることができない場合、これ以上のデータを持たせようとはしないだろう…

Wakko Warnerも言った。

それらについて言えば、ほとんどのDIE^W IDE RAIDコントローラは実際には、ソフトウェアでドライブされているので、ソフトウェア・モジュールに任意のコントローラのディスクを読み取らせることが、可能な場合はある。私のマシンでは、オンボードのPROMISE RAID コントローラを持って動作している。しかし、私はそのディスクのうちの2つでLinuxソフトウェアRAID 0を実行している。(ディスクは全部で4つで、他の2つはRAIDにしていない)私は、MylexやAdaptec SCSIのような本当のハードウェアRAIDについては詳しくないが。

Samuel Floryは、Johannesの最初の質問に答えた。

それは実際のところ、あなたの言う低価格が意味するものに依存するのでは?
Linuxの下で8つのP-ATAドライブをまともに動作させるIDE RAIDコントローラは、3wareのコントローラだけである。SATAドライブについては、3wareと、Adaptecのコントローラがある。
理論上では、HighPoint 8ポートSATAカードは、ソフトウェアRAIDの良い候補になるだろう。しかしHighPointはまだオープンソースのドライバを出していない。もしあなたがソフトウェアRAIDルートに行く場合は、2つの予備のpciスロットを持つ必要がある。HighPoint Rocket RAID 454(PATA)あるいは、PROMISE SATA150 TX4のいずれかを使用して行くことができる。ただし私は、i2oドライバを使用する何れのPROMISEのカードも、あるいは単にバイナリでしかドライバを提供しないものは、推奨しない。なぜソフトウェアRAID5を走らせるだけではダメなのだろうか。それは、考えているよりはるかに少なくCPUを消費して、*お足*を節約することができるのに。

Tomas Szepeが「まったく絶対に。8台のローコストなIDEディスクでRAID0とかリニアだとかは、バカげた話だ。」と言ったので、Johannesは、「ありがとう。恐らくRAID5とJoelが推奨したPROMISE TX4000カードに行くだろう。」と返答した。また、「別の箱と別の1TBのディスク・スペースを買うために資金調達をしている。」と追加した。

お薦めとアドバイス

Samuelがアドバイスを追加した。「必ずARRAYを作成する前にすべてのディスク上でbadblocksを実行すること。ソフトウェアRAIDは、バッドセクタに関しては、ほとんどのハードウェアRAIDコントローラほど良くはない。一方でmdドライバ(訳注:LinuxソフトウェアRAIDドライバの呼称)は、私が試みたほぼすべてのRAIDコントローラを蹴散らすほど素晴らしい。Tomasは、バッドセクタについては、初期の状態でだけ悪いと言った。それは操作中に悪くなったセクタではない。

いくつかのポストの後でWakkoが言った。

Linux RAIDソフトウェアを使用するのを私が考えるのは、それを分割することができないという事実である。私はlvm/evms (訳注:論理ボリューム管理、エンタープライズ・ボリューム管理システム)について考えた。しかし私は、それをセットアップする(ルートをマウントする)initrdを作りたくない。ブートローダは、不運にもRAID1以外をサポートするようには見えない。(grubについては詳しくないので、これはliloのことだが)

その考えは間違っているとSamuelが答えた。

パーティションの束を作成するだけで、それらをRAIDデバイスにできる。ディスク全体を使用するべきでない。さもないと自動検出機能を壊すだろう。そして、liloはRAID1デバイスを良く扱うと追加した。私はいつも、/bootとして小さなRAID1ミラーを作成している。ちょっと気をつけるのは、全てのドライブにのbootloaderをインストールすることだ。またもし、/dev/mdなんとか(訳注:ソフトウェアRAIDのパーティションはこのように見える)を使用するように命じられれば、liloの新バージョンは正しく動作するだろう。