資料

RAID とは?

大丈夫と言い切る人の安全策

この表題は adaptec 社の RAID 解説ページのコメントより拝借しました。

Redundant Arrays of Inexpensive Disks、これを略して RAID (レイド) と呼ぶ。
直訳すれば「安価なディスクによる冗長的な配列」となる。
なんのことだか分からないだろう?
これだけ言われたら私も分からない。

RAID とは、1987 年にカリフォルニア大学バークリー校の David A.Patterson、Garth Gibson、Randy Katz の 3 人によって提唱された、同じ容量の複数のディスク装置をまとめて、冗長性を持った一台のディスク装置として管理する技術だ。
つまり一台のディスク装置では実現できない、速度、安全性などを、複数のディスク装置を一度に用いることで改善していくための技術である。

異なったディスク容量でも実現できるが、最大効率を得たいならば同一容量で構成することをお勧めする。

早い話が、

一人よ~り、二人がい~さ、二人よ~り三人がいい~♪

という発想である。
この時、複数のディスク装置をまとめて構成された論理上のディスク装置を、アレイと呼ぶ。

RAID を導入することで、ミッションクリティカルなデータに関しても可能な限り安全な運用を行うことが出来るし、基本的に常にボトルネックのひとつであるディスク装置その物のレスポンスを向上させて、全体のレスポンスを飛躍的に高めることが出来る。
バックアップと並びデータの安全性を高める積極的な手段だ。

RAID には、その実現方法により、RAID-0 から、RAID-5 までの 6 つのレベルがある。
ここで気を付けなければならないのは、「レベルが上がる=性能が上がる、ではない」、ということだ。
RAID レベルとは、あくまでも実現方法の通し番号に過ぎない。
ちなみに、RAID レベルの中には実装が非常に複雑、高コストになってしまうものもあり、そのような RAID レベルは理論だけの存在で実装されていないことがほとんどだ。
実際に一般的に実装されているのは RAID-0RAID-1RAID-5 の 3 種類である。

では、この一般的な 3 つの RAID レベルに関してひとつずつ紹介していく。

基本的な RAID レベル

RAID-0

RAID-0ストライピングと呼ばれる。
データをブロック単位で分割して複数のディスクに分散して記憶させる。
こうすると、読み取り時には複数のディスクを同時に動かしてデータを読みとることが出来るので、読み取りの高速化に繋がる。
理論的にはディスク装置が 2 台なら 2 倍、3 台なら 3 倍の読み取り速度が実現できる。
その特性上、ディスク装置が最低 2 台あれば実現でき、アレイ全体のディスク容量はディスク装置の容量の合計である。

しかし RAID-0 には重大な問題がある
それはデータの安全性を向上させる仕組みが全くないばかりか、かえって危険な状態になってしまっていることである。
データは複数のディスクに分散して記憶されるが、これは即ち、1 台のディスク装置が壊れただけでアレイ全体が使えなくなるということである。
当然アレイを構成するディスク装置の台数が増えれば増えるほど安全性は損なわれる。
RAID-0 は、重要なデータではないが一時的にどうしても速度が要求される、そういう場合にのみ使うべきだろう。

冗長化されていない、と言う意味では RAID と呼ぶのに相応しくないとも言える。

RAID-1

RAID-1ミラーリングと呼ばれる。
データを複数台のディスク装置に等しく書き込むことで、全く同じ情報を複数記憶する。
こうすると、たとえアレイの中の 1 台のディスク装置が故障しても、もう 1 台から問題なく読み込むことができ、データの安全性が飛躍的に向上する。
その特性上、ディスク装置が最低 2 台あれば実現できるが、それ以上のディスク装置を用意するぐらいならバックアップ体制を整えた方が建設的である。
また、アレイ全体のディスク容量は、1 台のディスク装置の容量と変わらない。

しかし RAID-1 には高速化の仕組みがない
読み取り速度は 1 台のディスク装置の場合と変わらないのだ。
RAID コントローラの中には読み込み時に RAID-0 と同様に複数のディスクから同時に読み出して高速化するものがあるようだが一般的ではないし、それは RAID-1 の醍醐味である安全性を少々損なう結果となる

ファイルサーバなど、データ消失が許されない場合に用いられる。
大丈夫と言い切る人の安全策、その壱である。

RAID-5

RAID-5 は RAID-0 にデータの安全性を付加する仕組みを導入した形式だ。
より正確には、ここでは説明しない RAID-4 が RAID-0 に安全性を付加した仕組みであり、RAID-5 はそれを改良したものと言えるが、RAID-4 が事実上有名無実である現状では、RAID-0 の安全性に対する拡張が RAID-5 だと考えて差し支えあるまい。
RAID-5 は、データからパリティと呼ばれる誤り訂正符号を作成して、同時に保存、万が一データが壊れてしまってもパリティから復元させることが出来るようにした仕組みである。
RAID-0 と同様、データもパリティも複数のディスクに分散して記憶されるため、読み取り速度も高い
ディスク装置は最低 3 台必要であり、アレイ全体の容量は各ディスク装置の容量の合計から 1 台分のディスク装置の容量を引いた容量となる。

RAID-4 との違いは、RAID-4 がパリティをひとつのディスク装置のみで集中記憶していたのに対して、RAID-5 はパリティすらも分散記憶することであり、パリティを記憶しているディスク装置だけに集中してアクセスが発生することを防いでいる。
現在一番利用されている RAID レベルだと言われている。

しかし RAID-5 にも弱点はある。
それはパリティの生成と記憶のために、書き込み速度が犠牲になることである。

RAID-5データ消失が許されず、しかも同時に読み取り速度も必要である場合に用いられる。
大丈夫と言い切る人の安全策、その弐である。

その他の RAID レベル

代表的な RAID レベルは上で説明したとおりだ。
が、更に RAID コントローラのベンダーは RAID レベルを掛け合わせることで別の RAID レベルを構成していることが多い。
以下では、それら複合 RAID を紹介する。

RAID-0/1

ミラー化ストライピング、などと呼ばれている。
その呼び方は RAID-0/1 とか RAID-01 とか、RAID-0+1 とか様々であり、実は決まった呼び方があるわけではない
RAID-0/1 は RAID-0 のストライピングによる高速性と、さらに RAID-1 のミラーリングによる安全性を一気に獲得してしまおうという実に欲張りな仕組みである。
ディスク装置は最低 4 台必要であり、アレイ全体の容量は各ディスク装置の容量の合計の半分になる。

RAID-0/1データ消失が許されず、しかもパフォーマンスも必要である場合に用いられる。
大丈夫と言い切る人の安全策、その参である。

筆者としては、多分最強の RAID ではないかと考えている。
サーバ構築紆余曲折日記で構築しているサーバでは、この RAID-0/1 でアレイを構成している。

RAID-0/5

RAID-0/5 は、RAID-0/1 と同様、RAID-0 のストライピングによる高速性と、RAID-5 による安全性を一気に獲得してしまおうという実に欲張りな仕組みである。
やはり RAID-0/1 と同様に、決まった呼び方はない。
ディスク装置は最低 6 台必要である。

RAID-0/1 に比して、同じ台数のディスク装置であればディスク容量の利用効率は高い。
しかし当然パリティの作成・記憶の処理が必要であるため、RAID-0/1 ほどの書き込み速度は得られない
また最低限の台数の多さから経済的にも困難だろう。
大丈夫と言い切る人の安全策、その四である。

RAID の構築

さて、ここまで RAID の概念的なことを書いてきたが、一番懸念されるのは「どうやって構築するのか」という実務的なことではなかろうか?
というわけで、RAID の構築に関する実務的なことを簡単に書こうと思う。

RAID を構成する上での実現方法として、大別するとハードウェア RAIDソフトウェア RAID が存在する。
ハードウェア RAID はその名の通り、アレイを構成する専用のハードウェアを用いて RAID を構築する実現方法であり現在の主流と言えるが、その分予算は多めに必要である。
対して、ソフトウェア RAIDOS などがアレイを構成・制御する実現方法であり、やや安価で実現できる。
Windows2000 Server や Linux はソフトウェアで RAID-0、RAID-1、RAID-5 をサポートしている。
しかしソフトウェア RAID はシステムや起動用のボリュームに対して RAID-5 が使えないなどの制約があるのも事実であり、またアレイの制御を OS がやる以上は CPU に対する負荷の増加が無視できない
対して、ハードウェア RAID はシステムや起動用のボリュームに対しても全ての RAID レベルが利用できる、OS を選ばないなどの優れた利点を持っている

ハードウェア RAID を実現する上で当然必要になるのが RAID コントローラである。
adaptecAMI (Americal Megatrends Inc.)、その他数社が販売している。

adaptec
http://www.adaptec.co.jp/
AMI
http://www.amij.com/

さらに、ハードウェア RAID の実現方法にも数種類ある。
主流なのが SCSI RAID だ。
その名の通り SCSI ディスク装置を用いた RAID 形式で、SCSI その物の転送速度の高さや、アレイを構成可能なディスク装置数の多さ、そもそも SCSI 用ハードディスクに高性能な物が多いなどの利点があるが、かなり値が張る性能重視構成だ。
それに対して最近出現したのが IDE RAID である。
やはり IDE ディスク装置を用いた RAID 形式で、IDE ディスク装置は SCSI ディスク装置に比して安価で手に入りやすい。
しかしディスク装置自体が SCSI に対して性能的に劣ること、IDE の仕様上アレイを構成するディスク数に限界があり、大規模なアレイを構成出来ないことなどが難点であり、初心者向け構成と言える。
その他にも RAID コントローラとアレイをパッケージにして、通常の SCSI カードにあたかも一台のディスク装置の様に接続するだけで運用できる形式の物などが存在するが、値が張るどころの騒ぎではない。
さらに物によっては 500 万円近くするものなど存在するのだが、それは完全に基幹システム用途であり、我々が手を出す範疇ではない性能偏重構成である。

ちなみに、直接 RAID に関わっているわけではないが、重要な技術をひとつ紹介する。
ホットスワップである。
ホットスワップというのは、サーバの運用を停止することなく故障したディスク装置だけを交換することを可能とする技術だ。
アレイを構成するディスク装置のひとつが故障した際にもホットスワップを実現しておけば、ディスク装置の故障からメンテナンス完了までの間のレスポンスの低下は避けられなくとも運用自体が止まるほどの損失は出さずに済むだろう。

総括

以上のように、RAID は主にデータの安全性高める、冗長的な技術であることがお分かりになられたことと思う。
概略を理解していれば Redundant Arrays of Inexpensive Disks、「安価なディスクによる冗長的な配列」という意味も理解できるのではないか?
つまりは手に入りやすい安価なディスク装置を組み合わせることで、高価で高性能な冗長性のあるディスク装置を構成しようという技術なのだ。

もし RAID を構築してみたいのなら、私としては SCSI RAID をお勧めする。
しかし予算や「どこまで本気か」を充分に考えて選択してほしい。
実際、個人で RAID を組まなければならないような環境を必要とする場面はほとんど絶無と言っていいほど存在しない
ほとんどの人は IDE ハードディスクを使っているだろうから、それを SCSI にするだけでも充分な性能アップが望めるのだ。

対して、イントラネット向けのエントリーからミドルレンジクラスのサーバを構築するというのなら RAID の構築を考えた方がいい。
ハードウェアトラブルで業務が止まってしまう時間や失われたデータに費やしていた時間の損失を考えれば RAID に対する初期投資など物の数ではない

ハイエンドクラスサーバでは論ずるまでもない。
そんなサーバを構築する場面で運用されるデータが安全性を必要としない理由はどこにもないだろう

Valid HTML 4.01 Strict Valid CSS!