HexWolf Blog

DB学習シリーズ1:RAID構成

はじめに

SQL編が少し終わったので次はDBの話に入ります。大抵は達人DBやFE試験を参考にしたものです。
そのため、実践的な物ではなく概念的な話になります。

今回はDBの冗長性を確保するためのRAIDの話をします。

結論

概要に入る前に、基本的にオンプレミス環境の場合はRAID5以上が選ばれます。予算に都合がつくならRAID6かRAID10が良いとの頃です。

そもそもRAIDって何さ

複数のHDDを組み合わせて1つの巨大なHDDとして運用する技術です。近年はSSDもありますが、昨今のSSD高騰もありやはりHDDが主流っぽいです。

  • index化や並列にデータを保持することによる高速化
  • 同じデータを別のHDDが持つことによって1つが壊れてもデータの復元ができる
  • 巨大なデータ容量を確保できる

主な目的としてはこの3つですが、特に1つが壊れても~のところを担保するために複数のRAIDが存在しています。

RAIDはたくさん種類があるようですが、書籍上では概念としての0と1、実務上の5, 6, 10を覚えておくと良いとのことでした。

RAID0 ストライピング

ストライプの名のつく通り2つ以上のHDDに縞々上にそれぞれデータを保管する技術です。
2つ以上にデータを保持するため読み書きの速度に優れます。

一方で冗長性が全く無いため1つが壊れたらデータが死にます。

達人DBの筆者も口を酸っぱく言っていますが、顧客のデータを紛失した場合は新聞やニュースになります。
それだけ一大事なのでRAID0はオンプレミス環境で選ばれることがありません。

RAID1 ミラーリング

鏡と名のつく通り2つのHDDそれぞれで同じデータを保管する技術です。
2つにデータを保持するため1つが壊れてももう一つがあるので安心、という話です。

一方で特に性能が変わらない上、同じデータを扱うため容量あたりのコストが2倍になります。

バックアップ代わりになるかというとこれもなりません。バックアップはその時のスナップショットを保持する役目なのでミラーリングと役目が違います。

こちらは冗長性はあるけど選ばれることはありません。

RAID5 分散パリティ

ここからがRAIDの本領発揮です。

パリティはHDD同士のXORデータです。こうすることによって1つが壊れても壊れてないデータとXORを組み合わせることによって壊れたデータを復元できます。
ここらへんは論理演算を簡単に知っているとイメージが付きやすいですが、とりあえず1個が壊れても修復ができるようにする技術だよってことです。

こうすることによって読み書きの速度と冗長性を確保することができるため、安全なデータ環境が作れます。

デメリットとしては最低でも3台のHDDが必要になるのでコストがやや増加するところですかね。

オンプレミスの環境を作る場合最低でもデータに対してはこの三台構成が基本になります。

RAID6

RAID6はRAID5の強化版みたいなものです。

パリティを2つに増やすことによって、同時にHDDが2つ壊れた時にも対応できます。

これの何が良いかというと、最近はデータ容量が増加していることもあり復元までの時間が長くなりがちです。
その復元中に故障が進行して2台目が壊れてしまうとデータ復旧不可になってしまうためRAID6が生まれた、という背景になります。

欠点はさらにHDDを増やすことになるためコストが増加すること、またRAID5でもそうですがデータを保存する際にパリティの計算をしないといけないため書き込み速度が遅いことがあげられます。

とはいえRAID5でもそうなのですが、データベースにおいて読み込み速度 > 書き込み速度の重視具合なので大きなデメリットにはなりません

RAID10

RAIDのなかで一番性能が良いのがこれになります。RAID1+0といって、RAID1とRAID0を組み合わせたものになります。

まず最低でもHDDが4台必要になり、それぞれ2台ずつ分けます。こちらはストライピングとしてデータを分け、さらにそこから2台同士でミラーリングします。

これによってRAID0の高速処理とRAID1の冗長性を確保することができるため、非常に強い構成になります。

懸念点はやはりミラーリング同様データコストが2倍になるため恐らく全てのRAIDの中で最も高いものになります。

ちなみに仕組みとして逆にしたRAID01もありますが、冗長性に欠けるためわざわざ選択はされません。

クラウドの場合はRAID0?

ちなみに余談として、クラウドはRAID0運用になります。

ここまで読んでいる方にとっては驚きではありますが、クラウドを提供している側時代がなんらかのRAIDやバックアップ、分散配置等の様々な手法を取っているため借りる側がわざわざRAIDを作る理由が無いというのが理由だそうです。

だからといってクラウドがコスト削減に繋がったり、稼働率を保証してくれるという魔法のサービスでは無いということも考えないと行けません。

達人DBの筆者が言うには、DB構築において便利な機能というのは必ずトレードオフがあるということです。

例えばクラウドの場合、障害が発生した場合、クラウド事業者による復旧作業を待つ以外にやれることはありません。また稼働率自体も95%以上を担保するものではなく、95%未満ならお金かえしますよという契約であって、95%未満になることもあるそうです。
99%以上確保しないと行けないサービスもあるため、ここは見極める必要があります。

終わりに

DBは本で概念を理解することはできますが、実際にHDDを選んだりとか構築は担当者にならないと分からないため難しいなと思います。自作PCでもそうですが為替リスクとか調達の問題もありますしね……
まだまだ達人DBは序の口のためこうやって少しずつまとめて行きたいと思います。