このページの本文へ

前へ 1 2 次へ

最新エンタープライズストレージの実力を探る 第19回

データ保護や管理の向上を実現する

データを守るRAIDとストレージのネットワーク化

2011年07月15日 06時00分更新

文● 渡邉利和

  • この記事をはてなブックマークに追加
  • 本文印刷

エンタープライズストレージでは、RAIDを中心とするデータ保護技術やネットワークへの対応が特に重要になる。ここではディスクアレイ装置の基礎技術でもあるRAIDとSANやNASなどのネットワーク対応について解説する。

複数のHDDを束ねるRAIDの基礎技術

 RAIDは、Redundant Arrays of Inexpensive Disksの頭文字を取ったものといわれる。直訳すれば、安価なディスクによる冗長化アレイ、という感じだろうか。本来の意味からすれば、ディスクアレイの一種とも位置づけられるが、現実に製品化されているディスクアレイでRAIDをサポートしていない製品はほぼ皆無と言ってよい状況であり、実態としてはディスクアレイ=RAIDストレージ、と考えてほぼ間違いない状況だ。

 RAIDの基本的な発想は、ドライブ単体で高信頼性を確保するのではなく、ドライブ自体の信頼性はそのままでも、システム全体としては高信頼性を実現できるように冗長化するというものだ。冗長化すれば必然的に本来必要な容量分以上のドライブを組み込まざるを得なくなるため、高価なドライブは使いにくい。そこで、特に高信頼性に配慮した高価なドライブではなく、普通の安価なドライブを使いながら、高信頼性型の高価なドライブ以上の信頼性を確保することを目指す。

 RAIDの種類は、一般に「RAIDレベル」と呼ばれる。RAIDの本質は冗長化にあるので、冗長化されていない構成は本来はRAIDとは考えないのだが、便宜上冗長化を行なわない構成もRAID 0としてRAIDの一種に含めるのが一般的だ。

 前述の通り、冗長化を行なわない単純なストライピングをRAID 0と呼んでいる。RAID 0では、複数のドライブにデータを分散して書き込む。ボリューム全体の容量は、各ドライブの容量の総計に一致するため、容量の無駄はないが、冗長化による保護もなくなるうえ、ボリュームを構成するドライブの1台でも故障すれば全ボリュームが試用できなくなるリスクがあるため、耐障害性という観点からはきわめて脆弱な構成となる。しかし、ドライブ単体の容量を超える大容量のボリュームを手軽に構成できる上、アクセスが分散することによるパフォーマンス向上も期待できるというメリットがあるため、大容量データの一時作業用スペースとして利用する場合などにはあえてRAID 0が選択される例もある。

RAID 0のストライピングは耐障害性がない

 RAID 1は、ミラーリングだ。これは、最低2台のドライブをペアで利用し、2つのドライブに同時にデータを書き込む。いわば、単純なコピーだと考えてよいだろう。全く同一のイメージのドライブが予備として確保されているので、1台のドライブが故障した場合でももう1台を使って処理を継続できる。単純なコピーであることから、オーバーヘッドはほとんどないが、容量効率の面では全容量の半分しか有効に活用できない計算になり、コストパフォーマンスの面では不利になる。

RAID 1のミラーリングはシンプルな冗長化

 実用的には、RAID 0とRAID 1の組み合わせという構成も利用されており、RAID 1+0/RAID 10などと呼ばれる。詳細に見ると、RAID 0とRAID 1のどちらを先に構成するかで違いがある。RAID 1+0では、まずミラーリングされたボリュームを用意し、これを複数集めてストライピングする形になる。RAID 0を構成するドライブが内部的にすべてミラーリングされている、といった状況になるだろうか。

 逆に、RAID 0でストライピングされたボリュームを2セット用意してRAID 1でミラーリングする、というやり方もある。この場合は、RAID 0+1と呼んだりする。この場合は、RAID 0でストライピングされたボリューム全体を単一のドライブのようにみなしてミラーリングする形になる。

 この両者の差は、ドライブが複数故障した場合を考えると明確になる。まず、RAID 1+0の場合、ミラーリングされたペアのうちの1台が故障してもシステム全体には影響を与えない。そのため、各ペアのどちらか一方が生き残っている、という条件下であれば最大ではシステムの半分のドライブが故障した場合でもデータ破壊は起こらないことになる。一方、RAID 0+1の場合、RAID 0でストライピングされたボリュームは、構成するドライブのうちの1台でも故障したら破壊されると考えると、2組のストライピングボリュームのそれぞれに故障ドライブが生じた時点でデータ破壊が起こることになる。システムを構成するドライブ数が増えれば増えるほど、RAID 1+0の方が信頼性が高まると考えてよいだろう。

 RAID 2、RAID 3、RAID 4は、それぞれ異なる手法で冗長化を実現しているのだが、現実に製品化されている例はほとんどないので、ここでは詳細は省略する。

 RAID 5は、実用上はもっとも広く利用されているRAIDレベルだと考えてよいだろう。RAID 5では、ブロック単位の分散パリティを利用して、ボリュームを構成するドライブのうちの1台が障害を起こした場合でも、他のドライブのデータから当該ドライブのデータを復元することが可能だ。容量効率の面からは、ボリュームを構成するドライブのうちの1台がパリティ用に割り当てられる計算だ。

RAID 5はデータの冗長性を持たせるパリティを分散して格納する

 最小構成ではドライブ3台を利用することになるので、この場合の実質的なデータ容量はドライブ2台分となる。ただし、ドライブ数が増えてもパリティ用のドライブ数は1台のままなので、たとえば10台のドライブでRAID 5を構成すれば、データ容量は9台分となり、パリティ分の容量ロスは1割に抑えられる計算だ。このように、RAID 5では容量効率が高いことがまず特長となる。また、パリティ記録用のドライブが固定されているわけではなく、全ドライブに分散してパリティを記録していくようになっているため、特定のドライブにアクセスが集中すると言うことはない。一方、パフォーマンス面でのオーバーヘッドとしては、データ書き込みの際のパリティ生成の負荷が挙げられる。

 RAID 5では、ボリュームを構成するドライブのうちの1台の障害には耐えられるが、このドライブを交換し、再構成を行なう前に2台目が障害を起こすと運用継続が不可能になる。それに対応し、2台までの障害に耐えられるようにしたのがRAID 6だ。確率論的な考え方からすると、2台のドライブが同時に故障する可能性は相当に低いということになるはずだが、実は現実は必ずしもそうではない。一般に、RAIDを構成するドライブはユーザーがバラバラに買い集めてくるわけではなく、ベンダー側であらかじめ構成して納入されることになる。ドライブの手配状況にもよるが、通常はほぼ同時期に製造されたドライブでRAIDが構成されることになるし、現実にはRAIDを構成する全ドライブが全て同一ロット製品ということも珍しくはない。この場合、ロット固有の製造不良などがあった場合には全ドライブが全滅する可能性もある。

 不良とまではいかなくても、同一ロット製品では故障時期もおおむね似たようなタイミングになる傾向は否定できない。RAID 5を構成するドライブのうちの1台が障害を起こした場合、このドライブを新品のドライブと交換した上で、データの再構成を行なうことになる。この場合、既存の全ドライブのデータから障害を起こしたドライブに記録されていたデータを復元する、という作業が行なわれる。これは、既存の全ドライブに対する全データ読みだし処理であり、ドライブに対してかなりの負荷を与える処理になる。複数のドライブがたまたまタイミングを同じくして障害を起こす確率は確かに低いが、現実の運用場面では、1台のドライブが障害を起こし、その復旧作業中に連鎖反応的に他のドライブが障害を起こすことでデータ喪失が起こることがある。あまり厳密ではない言い方になるが、障害を起こしたドライブと同一のロットでほぼ同様の使われ方をしていた他のドライブはその時点でほぼ“寿命が尽きかけて”おり、再構成のために生じた過大な負荷に耐えきれなくなる、といった状況だ。

 RAID 6は、パリティデータを2つ用意することで、同時に2台のドライブが障害を起こしても耐えられるようになっている。最低構成ドライブ数は4台だ。データ書き込みの際には異なる手法で生成される2種類のパリティを作り出す必要があるため、オーバーヘッドはRAID 5よりも大きくなるが、RAID 5ではまだ不安、という場合に利用される。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事
  • 角川アスキー総合研究所
  • アスキーカード