ストレージの冗長構成(RAID)

ITシステムの依存度が高くなっている現在において「データ消失」は企業にとって何としても避けなければならない事態です。しかし、企業データは、機器のトラブルや自然災害、人的ミスなど、常に消失の脅威にさらされています。

少し前の話ですが、私の同僚でプログラムの入れ替え作業を客先で行っていたのですが、誤ってテスト用のバッチを動かしてしまい、データベースのデータを全て消してしまうという事件がありました。

なぜ、テスト用のバッチを持っていったのかなど、突っ込みどころは多々あったのですが、起きてしまった事象は巻き戻すことができず、社長を含めた役員が揃って顧客に謝りに行くという事態になりました。

消えたデータはバックアップから復旧できたのですが、その間、システムを止めてしまい、まあ大変でした。その同僚はしばらく顔面蒼白でとても声をかけられる状態ではありませんでした。

今の時代、データベースのデータを失うことは絶対に許されないのです。

上述の人的ミスは運用を工夫して防ぐしかありませんが、どんなに運用を厳格にしても防ぎようのないこともあります。それがサーバーなどのハードウェア故障です。

実際、データ消失の原因として最も多いのがハードウェア故障です。(次いで人的ミス)

ストレージとは

ストレージとは、データを永続的に記憶する装置のことです。HDD(ハードディスクドライブ)、CD/DVD/Blue-rayディスクやUSBメモリーなどがあります。

データベースのデータを保持する装置は、一般的にHDDを使用します。近年のHDDは壊れにくくなっているのですが、それでも100%壊れないとうわけではありません。

データ消失を防ぐために、可能な限り高い耐障害性を持つようにシステムを構築する必要があります。そこで登場するのが「RAID」です。

RAIDとは

RAIDとは、Redundant Array of Inexpensive Disks(リダンダント・アレイ・オブ・インエクスペンシブ・ディスクズ)の略で、データを複数のディスクに分散することで、性能と耐障害性を同時に確保するための技術です。

実体は複数のディスクを使用しているのですが、ディスクを使用するユーザーから見たら、ひとつのストレージに見えるのが特徴です。

RAIDには何段階かレベルがあります、

レベル 概要
RAID0 アクセス速度を高速化、大容量化することに特化したRAIDレベル。(ストライピング)
RAID1 耐障害性に特化した単純構成のRAIDレベル。(ミラーリング)
RAID5 高速化、大容量化、冗長化の全てを実現したRAIDレベル。(分散型)
RAID10 RAID1「ミラーリング」の構成をさらにRAID0「ストライピング」で掛け合わせた構成とするRAIDレベル。

基本的な考え方は複数のディスクに同じデータを書き込んで冗長化することで、そのうちのひとつが故障しても残りのディスクが無事であればデータを保全できるようにするというものです。

RAIDは本来、データの冗長化により、システムの信頼性(可用性)を高めるための技術だったのですが、実はもうひとつ利点が存在します。それが性能の向上です。

ほとんどのレベルのRAIDでは、複数のディスクに分散して配置します。そうすることで、ディスクI/O(読み込み/書き込み)が分散され、パフォーマンスが向上します。

データベースの性能問題のほとんどはストレージのI/Oネックによって引き起こされます。いくらCPUやメモリーを高価なもので揃えても、ストレージがボトルネックになっていれば、それらの性能を十分に発揮できず、宝の持ち腐れになってしまいます。

特に、大規模データ処理を行うデータベースではディスクI/Oはいつも一番大きな課題となります。その課題を解決してくれる技術がRAIDなのです。

次回は、各RAIDレベルについて詳しく見ていきます。