Stay Safe!!

今から始めるインフラエンジニア〜ストレージ編①〜SSDとHDD利用時のRAIDコントローラの推奨設定

みなさまこんにちは。じょんのび情報局のhokuです。
今回は今から始めるインフラエンジニア第二弾。
第二弾は、ストレージ編その①として「SSDとHDD利用時のRAIDコントローラの推奨設定」についてのご案内です。

一番最後に結論とまとめていますので、お急ぎの方はそちらをご覧ください。

今から始めるインフラエンジニア ストレージ編①〜SSDとHDD利用時のRAIDコントローラの推奨設定〜

まずRAIDコントローラをご存知でない方向けに、RAIDコントローラとは何かをご紹介します。
その後いざ、推奨設定のご紹介へ。

そもそもRAIDコントローラって何?

※RAIDはご存じであることを前提としたご説明です。

RAIDコントローラは平たく言うとRAID構成を記憶して、記憶通りにディスクに書き込みをしてくれる、いわばディスク書き込みの司令塔です。
RAID構成に含まれるディスクは全てRAIDコントローラの眷属。しもべになります。
例えば、あなたが構成するシステムのRAIDは状況によってRAID5だったり、RAID10だったりしますよね。
一度あなたがRAIDを指定するとそれを記憶し、そのRAIDのロジック通りにデータを書き込んでくれるのです。

イメージ図はこんな感じ。
以下では、青いa、b、cの3つのディスクにRAIDコントローラくんが書き込みを行なっています。(青とピンクの線の違いと、緑と黄色のハコの説明は後ほど)

RAIDコントローラの特徴

前述の通り、RAIDコントローラには、CPUからのディスク書き込み指示を受けて、自分が管理するディスクへの書き込みを行いますが、そのミッションを担うにあたり、いくつかの装備を持っています。
それが「バッテリ」と「キャッシュメモリ」です。
先ほどの図にあった、緑がバッテリ黄色がキャッシュメモリをさしています。

RAIDコントローラでのキャッシュメモリの役割

RAIDコントローラの装備の1つ、キャッシュメモリの役割は、「書き込みの高速化」です。
サーバやパソコンは、ネットワーク通信やCPUでの演算など、色々な処理を行いますが、その処理の中でもっとも時間を要すると言われているのが、HDDへの読み書き(Read/Write)です。
RAIDコントローラ自体はもっと早く書き込めるポテンシャルがあるのに、読み書き先のディスクが遅いので、RAIDコントローラの本領が発揮できません。
そこで、それを解決するための中継地として、キャッシュメモリと言う装備が用意されています。
キャッシュメモリを利用しない読み書きがピンクの矢印利用した読み書きが青い矢印です。
キャッシュメモリはディスクに比べて読み書き速度が早いので、RAIDコントローラはすぐに次の読み書きに移ることができます。
キャッシュメモリに蓄えられたデータは、少し時間をおいて、余裕ができてから、ディスクに移されます。
RAIDコントローラの仕様を見ると、だいたいキャッシュのサイズが書かれています。これは、RAIDコントローラが読み書きする際に利用する記憶領域の最大サイズが大きいか、小さいかを表しているのです。(小さい場合、そのサイズを超えた読み書きはディスクを参照しに行くので、その分処理が遅延してしまいます。)

RAIDコントローラでのバッテリの役割

勘の良いかたはもうお分かりかもしれませんが、RAIDコントローラの装備の1つ、バッテリの役割は、サーバやパソコンへの電源供給が停電などで突然切れてしまった時にも、キャッシュメモリのデータを安全に保護する事です。
キャッシュメモリの弱点は、電源が落ちるとデータを失ってしまう点です。
大事なデータがなくならないよう、バッテリを搭載しておく事で、一定時間はRAIDコントローラに電源を供給し続け、まだディスクに書き込みできていないキャッシュメモリ上のデータを守ってくれます。

RAIDコントローラの推奨設定

RAIDコントローラには設定があります。
それは、「WriteThrough」と「WriteBack」と言うものです。
実はそれぞれどのようなものかは既に説明しています。
図のピンクの矢印が、WriteThrough青い矢印がWriteBackです。
WriteThrough設定はディスクにデータを書き込んで処理終了にするのに対し、WriteBack設定はキャッシュメモリに書き込む事で処理終了とします。

さて、最後に一番お伝えしたい事です。
これまでサーバやパソコンなどにHDDを搭載してRAID組んでいた際にはRAIDコントローラの設定はWriteBackが原則でした。前述のように、パフォーマンスに大きな違いが出るからです。
しかし、今や世の中はSSDの時代。サーバにもパソコンにもSSDが多く搭載されるようになりました。
そして、ついにRAIDコントローラ設定にも影響が出始めています。
SSDでは、WriteThroughにした方が読み書きが早いのです!!
ディスクの速度がついにキャッシュメモリを凌駕しました。厳密には、単体だとキャッシュの方が早いのだと思いますが、RAID構成時はSSDへの読み書きをパラレル(多重化して)に行う事ができる分、WriteThroughの方がパフォーマンスが出るのだそうです。

職業によってはあまりディスクのIO性能を意識されない場合も多いと思いますが、どうにもサーバのパフォーマンスが悪いなどの問題が出ている場合にはぜひチェックしてみて下さい!