RAIDを採用するとディスクの信頼性が上がります。そして、大抵、性能も上がります。
「RAIDは何か余計な計算をしているので性能が落ちる」と思っている人がたまにいますが間違いです。性能は上がります。
RAIDの由来
RAIDはRedundant Array of Inexpensive Disksの略です。日本語に直すと「安価なディスクを冗長に並べたもの」です。今となっては何の略かは忘れ去られてしまい、「レイド」という発音で覚えられています。
パタヘネで有名なパターソンの1988年の論文が初出です。
RAIDの定義
RAIDにはレベルがあって、0,1,2,3,4,5,6があります。0,1,5,6が使われます。
RAID0
ストライピングと呼ばれます。データを分割して複数台のディスクに書きます。
信頼性は高まることはありませせんが性能が高まります。
RAID1
ミラーリングと呼ばれます。同じデータを2台のディスクに書き込みます。
この場合、性能は高まりませんが有力な選択肢の一つです。
少量の貴重なデータを格納するときに使います。
例えば、300GBのデータなのにディスクが1TBしかないとき、RAID1で2台ですみます。RAID5で4D+1Pとかにすると5台用意しなければなりません。
RAID2
誤り訂正コード、いわゆるハミングコードを用います。ECCメモリで利用されますが、2022年の現在、使用されることはありません。
RAID3
ビット単位・専用パリティドライブです。2022年の現在、使用されることはありません。
数ビットごとにxorでパリティと呼ばれる値を算出して専用ドライブに書きます。
RAID4
ブロック単位・専用パリティドライブです。2022年の現在、使用されることはありません。
RAID3のパリティをビット単位ではなくブロック単位で格納します。
RAID5
ブロック単位・分散パリティドライブです。
RAID4のブロック単位パリティを順に異なるディスクに書きます。
専用ディスクがないので、どのディスクが壊れても1本まではデータを保護できます。
容量的にはパリティ分の1台分余分に必要です。
4D+1Pなどと表します。これは4つのディスクに1つのパリティ分のディスクで構成するRAIDと意味です。「よんでぃーいちぴー」と発音します。
RAID6
RAID6はxorではなくもう一つ異なるパリティを定義して、パリティを2個計算します。
ディスクは2個余計に必要です。
もうひとつのパリティの計算方法はメーカーや機種によって異なります。
「横にxorしていたものを斜めにxorする」
「xorではなくCRCのような式を用いる」
などです。
10D+2Pなどと表します。
よくある誤解
RAID5は性能劣化する
xorの計算をしているので確かにその分の時間はかかります。また、パリティ分の余計なデータを各必要があります。
しかし、4D+1Pは5つのディスクに書いているんです。5多重で書けることを思い出してください。
パリティ分のデータがあるので、原理的には4倍の速さでデータを書けます。
ソフトウェアRAIDや変なメーカのRAIDは性能劣化する可能性はありますが、普通のサーバやディスクアレイのRAIDは、性能が上がります。
信頼性目的よりも性能目的でRAIDを組むことさえあります。
「RAIDで性能劣化する」という発言は恥ずかしいのでやめてください。
要件はRAID5です
「要件はRAID5です」という発言をする人がいますが、、「ディスクに冗長性を持たせて信頼性を高める」のが要件であってRAID5は手段、という話でもあるんですが。
データが数十GBしかないのにRAID5を要求されたときは驚きました。
ディスクが1TBだから4D+1Pだと5TB必要ですよ、と言ったら「2D+1Pで」という本末転倒な答えが返ってきました。
だったらRAID1でいいんじゃないの?と直観的に思います。
まとめ
RAIDについて書いてみました。
「RAIDで性能劣化する」という発言は恥ずかしいのでやめてください。
コメント