ЯoomeR

プログラミング~実装とエラー解決と、時々、AI~

初心者でもわかる「RAIDとは何か」

RAID

(Redundant Arrays of Independent(Inexpensive) Disks)
Redndant(冗長化)して、万一の場合にデータが消えないように(復旧できるように)しましょうってこと。

昔は高額だった保存ディスクに対して、冗長化には安価なディスクを使用できることが特徴的だったため、Inexpensive(安価な)の略称のIであった。

現在は保存ディスク自体が安価になっているため、Independent(独立した)の意味でIが使用されている。

RAID0(ストライピング)

複数のディスクにデータを分散させることにより、アクセスを高速化する方法。

複数のディスクをあたかも1枚のディスクであるかのように取り扱い、書き込み速度が高速になることがメリット。

どちらかのサーバーがダウンすれば、データ全体に対してアクセスできなくなるため実は冗長化されていない。 001_RAID0

高速化という観点では優れているが、1つのサーバーを使用する場合よりもむしろ信頼性は下がっている。

例えば、30%の確率で壊れるサーバーを考える。

1台のみ使用する場合、壊れずに稼働する確率は70%。

2台使用する場合は、どちらも壊れない確率は49%に低下する。

(RAID0の場合はどちらかが壊れるとデータにアクセスできなくなる。)

002_破損確率

RAID1(ミラーリング)

こちらは複数のディスクに全く同じデータを書き込む手法である。 003_RAID1

RAID0とは異なり、どちらかのディスクがダウンしても引き続きデータを使用することができる。

ただし、データへのアクセス速度はRAID0より低下する。

RAID5(パリティ)

パリティ」というデータを用いており、1つのディスクがダウンしてもパリティを元にデータを復元できる仕組み。 004_RAID5

例えば、上記画像では「A + B + C + D = P」が成り立つ。

上のサーバーのデータが消えたとしても、「? + B + C = P」の計算式が成り立つため、

「? = P - B -C」という理屈でデータが復旧できる。

ただし、2台以上のサーバーのデータが消えた場合には対応できないため注意が必要である。

RAID2

複数のディスクに同じ内容を書き込み、ECCというデータを複数のディスクに保存する方式。 005_RAID2

必要なディスク数が多いこと、ECCの計算はパリティより煩雑で時間がかかることからあまり使用されない方式。

RAID3・RAID4

RAID5と比較すると、パリティを保存するディスクが分かれていることが特徴だ。

だったらRAID5でいいじゃん、ということであまり使用されていない。 006_RAID3_RAID4 RAID4はRAID3の改良版。

RAID3ではbit、Byte単位でデータを扱っていたが、RAID4ではブロック(セクタ)単位になっている。

扱うデータの単位が大きくなっていることが改良点だ。

黒い粒を砂場から取り除くとき、一粒ずつよりもバケツで作業したほうが効率的といったイメージ。