RAID – PostgreSQLではじめるDB入門 http://db-study.com DBの基礎から設計の考え方、実践で役立つ知識などを図解を用いてわかりやすく解説しています。さらにPostgreSQLによりサンプルを交えながらSQLを使いこなすために必要な知識をまとめています。 Sun, 04 Feb 2018 05:24:53 +0000 ja hourly 1 https://wordpress.org/?v=4.9.3 RAIDレベルの種類 http://db-study.com/archives/55 http://db-study.com/archives/55#respond Sat, 17 Oct 2015 04:09:57 +0000 http://db-study.com/?p=55 RAIDとは複数の物理ディスクを束ねて仮想的にひとつの論理ディスクとする技術のことです。また、1つの論理ディスクを構成するためにまとめられた物理ディスクをRAIDグループと言います。

RAIDグループ

1つのグループ内で構成できるRAIDには以下のような種類があります。

RAID0(ストライピング)

別名ストライピングと呼ばれるRAIDレベルです。
ストライピングとは、1つのデータを2つ以上のディスクに 分けて同時に書き込むことです。データ保存時には分散して書き込むため高速性に優れています。

RAID0

性能は向上しますが、ディスクが1台でも故障すると、データは復旧できません。

RAID1(ミラーリング)

別名ミラーリングと呼ばれるRAIDレベルです。
2台のディスクに、それぞれまったく同じデータが保存されます。
万一のディスク故障時には、ディスクを交換し、もう一台のディスクからデータを復旧できます。

RAID1

信頼性が上がりますが、データは分散されないため性能は向上しません。また、同じデータを2台で保持するので、ディスクの使用効率が下がります。

RAID5(分散型)

パリティ分散と呼ばれる方式で、データからパリティ(誤り訂正符号)を生成し、データとともに複数のディスクに分散して保存します。
最低3台のディスクで構成し、いずれかのディスクが壊れたとしてもパリティから復元させることが可能です。このため、1台までならどのディスクが破損しても保全可能です。

RAID5

データを分散できるためディスク本数が増えるほど読み込み速度は向上しますが、書き込み時はパリティの計算を行うため性能は高くなりません。ただし、通常、データベースは書き込みより読み込みのほうが多いため総じて性能は向上します。

RAID10

RAID10は、RAID1とRAID0を組み合わせたものです。RAID1でミラーリングされたディスクのセットを複数用意して、それらの間でストライピング(RAID0)します。

RAID10

ディスク故障時には、ペアのディスクからデータを復旧できます。同じデータを保存したペアのディスクが同時に故障しない限り、最大2台までのディスク故障に対応できます。ただし、ディスクは最低4台必要となり、コストが高くなります。

RAID6

2つのディスクが同時に故障した場合でもデータを復元できるよう考慮されたRAIDレベルです。データからパリティを2つ生成し、データとともに分散して書き込みます。RAID5は1つのパリティを生成し、耐障害性をあげていたのに対し、RAID6では異なるパリティを2つ生成するため、同時に2台が故障してもデータを復旧できます。

RAID6

例えば、1台が故障して復旧している間に、もう1台が故障してしまった場合にも、RAID6なら復旧が可能です。

最適なRAIDレベルは?

RAIDレベルは上記したもの以外にRAID2やRAID3などがあります。ただしそれらは動作原理の複雑さやコストパフォーマンスの低さといった問題により、現実に利用されることはほとんどありません。

では、データベースサーバーのストレージとして使用する場合、どのRAIDレベルが良いのでしょうか。

データベースは信頼性と性能のどちらも要求されることは言うまでもありません。そのため、その両方が向上するRAID5、RAID6、RAID10のいずれかが推奨されます。

RAID6、RAID10は必要なディスク本数も多くなる分、RAID5よりコスト高となりますが、万一、複数台同時に故障する事態となった場合、目も当てられません。その追加投資が企業を救うこともあります。そのため、RAID6かRAID10が良いでしょう。

さらに言えば、性能はRAID10、信頼性はRAID6に軍配が上がります。その場合、信頼性の方が重視されることが多いのでRAID6が最適と言えるでしょう。

ただし、それもひとつの考え方に過ぎず、要件やサーバー運用体制等により最適なRAID構成は変わってきます。そのため、明確な答えは存在せず、それぞれのRAID特性を考慮し、保護対象とするデータの重要度とコストとのバランスを見極め、都度、どれが最適なのかを決めていくしかありません。

]]>
http://db-study.com/archives/55/feed 0
ストレージの冗長構成(RAID) http://db-study.com/archives/50 http://db-study.com/archives/50#respond Thu, 15 Oct 2015 13:26:47 +0000 http://db-study.com/?p=50 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レベルについて詳しく見ていきます。

]]>
http://db-study.com/archives/50/feed 0