Linuxサーバより愛を込めて。

Linux(Ubuntu)サーバとダーツを愛する中年サラリーマンの日記。

Linuxサーバ

RAIDについて

当サーバでもRAID1を導入していますが、ここでRAIDについて軽くご説明しましょう。

 

RAIDとは複数のハードディスクを同時に使用する事で冗長性を高めたり読み書きの速度を改善しよう、という発想で生まれたのだそうです。

 

このRAIDですが、専用の機材(RAIDコントローラカードやディスクアレイユニット)を使用する方法とOS自身にディスクを管理させる方法とがあります。

 

それぞれ一長一短があり、
・ハードに依存した方法ではCPUへの不可が少ない代わりに機材の費用が発生
・ソフトウェア方式はCPUへの不可が発生する代わりにハードの費用が要らない
といった特徴があります。

 

この構想が発表された当初はRAID1~RAID5の5種類が定義されていたようですが、現在はRAID2、3、4はほぼ使用されず代わりにRAID0なるものが導入されているのだとか。

 

では0、1、5をそれぞれ見ていきましょう。

 

まずRAID0ですが、これはデータの書込み・読出しを複数のディスク(2枚以上)に分散して行うことによる高速化を狙ったものです。

その構造上速度は大きく改善されますが、冗長性に関してはまったくありません。

 

たとえば1枚のハードディスクの一般的な故障率を1%(実際はそんなに壊れませんがw)と仮定するとRAID0の場合、

ディスク2枚で構築したものなら(0.01+0.01)×100=2(%)
ディスク3枚で構築したものなら(0.01+0.01+0.01)×100=3(%)

といった具合にディスク枚数が増えれば増えるほどむしろ故障率が増加していきます・・・

 

続いてはRAID1ですが、こいつは複数のディスクに同じデータを同時に書き込んでいくという手法です。

 

常に同じデータを持ったディスクを複数作成していくため、耐障害性は高くなります(故障率1%で2枚使用であれば0.01×0.01×100=0.01%となり、全体としての故障率が1/100に下がる計算です!)が代わりに書込みに時間を要するという弱点があります。

 

またディスクが2枚だろうが3枚だろうが同じデータを持ったものを2枚もしくは3枚と作成するため実質使用できるディスク容量は基準となるディスク1枚分でしかありません。
たとえば80GBのHDDを3枚使用しても使用できる領域は80GBでしかないのです。このようにディスクの利用効率の面でも若干不利な点があります。

 

実際の現場ではRAID0とRAID1を組み合わせて運用するケースもあるようですね。耐障害性と高速化の両方を狙った結果です。

 

そしてRAID5です。
こいつは基のデータと、それに対する誤り訂正符号を作成、それぞれを複数のディスクに分散して読み書きすることで耐障害性と高速化、そしてディスクの使用率まで考慮した方法です。

 

RAID5はハードディスク3枚以上で構成されることになっていて、そのうち1枚が故障しても運用を続けることが可能なように設計されているため故障率を低下させることが可能となりますが、書込み時は訂正符号の計算をしなければならないため低速になるという弱点を持っています。

 

またディスクが1枚破損した状態での運用となると、それ以上のディスク故障はシステムの停止を意味するためRAID0と同様ディスク枚数が増えるほど故障率が上がるという面も持っています。
実際、復元作業中にもうお1枚が破損してしまい再起不能・・・ということもあるそうです。

 

最後にRAID5の故障時に対する回答として台頭してきたのが「RAID6」となります。

 

4枚以上のハードディスクを使用し、訂正符号を2種類作成して分散書込みすることによりディスク2枚の故障まで稼動を続けることが可能となっています。

 

符号計算のため書込みはさらに遅くなりますが耐障害性は向上します。(1枚故障した状態でもRAID5並みの耐障害性)

 

このようにいくつかの種類があるRAIDですが、いずれもハードディスク障害によるシステム停止に立ち向かう手法の一つとして発展してきたようです。

 

それぞれ長所・短所があるので、作成するシステムの重要度に応じてよく考えて選択する必要がありそうですね。

 

※もちろんRAIDを組んだから100%システム停止はない!なんてことはありませんし万が一に備えてバックアップをコマめに作成することも大事だと思います。

-Linuxサーバ
-,