性能がほとんど変わらないソフトウェアRAIDとハードウェアRAIDですが、どちらを選ぶべきでしょうか?
この決め手となるのは運用と可用性(Availability)です。では運用面に着目してソフトウェアRAIDとハードウェアRAIDの比較を行ってみます。
比較項目 |
ソフトウェアRAID |
ハードウェアRAID |
インストール難易度 |
並 |
難
専用ドライバ組込み要 |
カーネルバージョンアップ
への影響 |
なし |
影響有り
専用ドライバは特定の
カーネルバージョンに依存 |
RAID管理 |
OSレベル |
BIOSレベル |
障害回復時のサーバの
ダウンタイム |
小 |
大
BIOSでの同期化が必要 |
ソフトウェアRAIDとハードウェアRAIDの決定的な違いは「障害回復時のサーバのダウンタイム」です。2台のハードディスクでRAID1を構成したサーバにおいて、1台のディスクに障害が発生しても残りの1台による縮退運転の状態でサーバは稼動を続けることができますが、できる限り早く元のRAID1の状態に回復させなければなりません。
次の図は、障害発生から回復までの手順およびサーバの稼動状態を、ソフトウェアRAIDとハードウェアRAIDで比較したものです。
いずれの場合もHDD1に障害が発生した時点でRAIDアレイは自動的にHDD2のみによる縮退運転モードに入ります。この状態でもサーバのパフォーマンスには何ら支障はありませんが、HDD2が壊れるとサーバが止まるだけでなく、貴重なデータをも失うことになります。
このためできるだけ迅速に代わりのHDDを用意し、サーバを停止して交換作業に入ります。
交換作業が終わると、ソフトウェアRAID1ではすぐに縮退モードのRAIDでサーバを立ち上げ、同期化を始めることができます。HDD2の内容をHDD1にコピーし、同一化することを「同期化(Synchronize)」といいます。
これに対し、ハードウェアRAID1ではHDD交換後の同期化はBIOSユーティリティで行うため、これが完了するまでサーバを立ち上げることはできません。
同期化はディスク容量にもよりますが、数十分から数時間かかります。ハードウェアRAID1ではこの間サーバを稼動させることはできません。
ソフトウェアRAID1でのHDDの同期化はOSのコマンドでパーティションごとに行います。大量のデータをコピーすることになるため、サーバのパフォーマンスへの影響が気になりますが、Linuxのmdドライバでは同期化のためのデータ転送速度を一定の値(10MB/秒など)に制限し、システムへの影響を少なくしています。
実際に障害を起こし、mdドライバによる同期化が行われている状態でWebサーバにアクセスしても、そのような処理が行われていることには気付きません。同期化に要する時間は70GBのパーティションで約2時間でした。
以上のようにLinuxでは、ソフトウェアRAIDを採用することでシステム障害からの回復時間を最小限できるように作られています。当社のLinuxサーバCシリーズもこのソフトウェアRAID1を採用しています。
なおRAIDにおいて最も重要なのは運用体制だと考えます。いくら高級なRAIDシステムを使っていても、異常に気付かなかったり、その回復方法が明確になっていなかったりすれば意味がありません。実際RAID1で稼動していたシステムが縮退運転モードになったにもかかわらず、回復方法を知らないために数ヶ月そのままにしておき、結局もう1台のディスクが壊れてシステムを長期間ダウンさせてしまったという笑えない例を見たことがあります。
RAIDの回復方法の手順は必ず文書化し、システムが本稼動に入る前に自分の手で回復作業を実施してみてください。またスペアディスクを用意しておくことも忘れないでください。
ちなみに当社LinuxサーバCシリーズには、あらゆる状況を想定したRAIDの回復マニュアルが同梱されます。RAIDの管理に用いるユーティリティはDebianパッケージに含まれるmdadmというものです。これはRAIDの運用に関わるすべての操作を一つのユーティリティで行うことができるばかりか、RAIDの状態をモニタし、異常が発生すると自動的に指定したアドレスにメールを送るなどの機能も備えており、とても便利でおすすめです。
mdadmの英語版manページを当社で日本語に訳したものがあります。
右のリンクがそれです。 mdadm(8) >>
この翻訳文書に限って再配布は自由です。どうぞご利用ください。
さて、最後に今回のまとめです。
- RAIDにはレベル0から5までがあるが、SOHO向けサーバに適しているのはコストと性能の点でRAID1(ミラーリング)である。
- 単体のディスクに比べてRAID1はRead/Write性能が10〜30%落ちるが、シーケンシャルReadの性能は20%程度上がる。
- ソフトウェアRAID1とハードウェアRAID1とでは性能の優劣はほとんどない。
- LinuxのソフトウェアRAIDは障害回復時のダウンタイムを最小限にすることができ、サーバのディスクシステムの冗長化に最適である。
|
いかがでしたでしょうか? ご意見やご要望・ご質問は当社の掲示板でお願いします。
さて、次回はUPSのお話です。ご期待ください。
(石)
|