私がディスクIOに使用する経験則は次のとおりです。
SATAの場合、スピンドルあたり75 IOP。
FC / SASのスピンドルあたり150 IOP
SSDの場合、スピンドルあたり1500 IOP。
アレイあたりの IOPと同様に、テラバイトあたりのIOPも考慮します。SATA + RAID6を実行する場合、結局、TBあたりのIOP比が非常に悪くなることは珍しくありません。これはあまり聞こえないかもしれませんが、多くの場合、アレイ上の「空きスペース」を見つけてそれを使いたいと思うでしょう。ほとんどのエンタープライズシステムで実際にはその逆が当てはまる場合、人々はギグを購入してiopsを無視するのが一般的です。
次に、RAIDの書き込みペナルティのコストを追加します。
- RAID1、RAID1 + 0の場合は2
- RAID5の場合は4(または4)
- RAID6の場合は6。
書き込みペナルティは、適切な状況で、大きな書き込みキャッシュを部分的に軽減することができます。順次書き込みIO(DBログなど)が大量にある場合、RAID 5および6でのこれらの書き込みペナルティを大幅に削減できます。完全なストライプ(スピンドルごとに1つのブロックなど)を書き込むことができる場合、パリティを計算するために読み取る必要はありません。
8 + 2 RAID 6セットを想定しています。単一書き込みIOの通常の操作では、次のことを行う必要があります。
- 「更新された」ブロックを読み取ります。
- 最初のパリティブロックを読み取る
- 2番目のパリティブロックを読み取る
- パリティを再計算します。
- すべて3を書き込みます(6 IO)。
キャッシュされたフルストライプ書き込み-たとえば、8つの連続した「チャンク」サイズのRAIDストライプを使用すると、読み取りを必要とせずに、ロット全体のパリティを計算できます。したがって、必要なのは10回の書き込みだけです。各データに1回、パリティは2回です。
これにより、書き込みペナルティが1.2になります。
また、書き込みIOは簡単にキャッシュできることを覚えておく必要があります。ディスクにすぐに書き込む必要はありません。ソフトな時間制約の下で動作します-受信書き込みが平均してスピンドル速度を超えない限り、すべて「キャッシュ速度」で実行できます。
一方、読み取りIOには厳しい制約があります。データがフェッチされるまで読み取りを完了できません。その時点で、読み取りキャッシュとキャッシュ読み込みのアルゴリズムが重要になります。予測可能な読み取りパターン(バックアップから取得するシーケンシャルなど)は予測してプリフェッチできますが、ランダムな読み取りパターンはできません。
データベースについては、一般的に次のことを想定することをお勧めします。
ほとんどの「データベース」IOはランダムに読み取られます。(例えば、ランダムアクセスには悪い)。オーバーヘッドを許容できる場合は、RAID1 + 0が適切です。ミラー化されたディスクが2つの読み取りソースを提供するためです。
「ログ」IOのほとんどは順次書き込みです。(たとえば、キャッシングには適していますが、多くのDBAが提案するのとは対照的に、おそらくRAID10ではなくRAID50を使用することをお勧めします)。
両者の比率が難しいとは言い難い。DBの動作に依存します。
ランダム読み取りIOはキャッシングの最悪のケースであるため、SSDが実際に使用されるのはここです。多くのメーカーは、SSDのキャッシングを気にしません。いずれにしても、SSDはほぼ同じ速度だからです。そのため、特に一時的なデータベースやインデックスなどの場合、SSDは投資収益率が高くなります。