小さいが読み取りI/O集約型データベース用にサーバーを構成しています。これは、より大きなOracleRACデータベースへのパブリックアクセスのマスターインデックスとして機能します。 I/Oの要件を検討したところ、SSDのアレイは、多数のSAS 15Kスピンドルよりも低コストで必要なパフォーマンスを提供することがわかりました。HPサーバーがあります。 SSDにのみ接続されるSmartArray P400を搭載。コントローラーには256MBのBBWCが搭載されています。SSDはSamsung(私は信じています)が製造した60GBSLCベースの2.5インチSATAです。
RAID 10または5のファイルシステムの推奨事項に最適なストライプサイズについて誰かが洞察を持っているかどうか疑問に思っていますか? Oracle 11gを使用する予定なので、RAWブロックデバイスを使用するのではなく、ファイルシステムが必要だと思います。サーバーはRHEL5.5を実行します。
私は過去数か月でSSDについてたくさんの本を読みました、そして私はもっと多くのことをすることに反対していません、しかし私のgoogle-fuは私が前進するのに失敗し始めました。 SSD RAIDで私が見つけたドキュメントの大部分は、Windows7の起動とゲームの読み込みを高速化するために自宅のPCのブートドライブにコンシューマーレベルのSSDのRAID0を実行している人々向けです。私が言っているのは、私は自分の仕事をしてくれる人を探しているのではなく、彼らが経験したことや、彼らが見つけたドキュメントへのリンクを提供するだけだということです。
前もって感謝します!
個々のコメントに返信するのではなく、いくつかの追加情報を編集します。
データベースはSSDの1つに問題なく収まるほど小さいため、ドライブスペースはまったく問題になりません。
非常に読み取りが多いDB(4〜8kで95%以上のランダム読み取り)であるため、アレイ内のアクティブディスクだけでなく、アレイ内のN-1ドライブから読み取ることができるという理由だけで、RAID5のパフォーマンスが向上する可能性があると考えました。 Smart ArrayP400がRAID10セットのミラーの両側からの読み取りをサポートしていないことを示すものを読んだので、ミラー。そうは言っても、私がそれを心配しなければならない前に、コントローラーがボトルネックになることはかなり確信しています。
TRIMについて:これらのドライブがTRIMをサポートしている場合でも(サポートしているとは思わない)、TRIMコマンドをRAIDコントローラーを介して個々のドライブにプッシュするのはやや難しいと確信しています。 Red Hat Enterprise Linux 5は2.6.18カーネルツリーに基づいていますが、後のカーネルリリースから機能を取り込むために多くのカスタマイズが行われているため、OSのサポートも厄介です。 EXT4もまだ正式にはサポートされていません。プロダクションボックスであるため、問題が発生した場合にRedHatとHPが支援してくれる領域にとどまる必要があります。ただし、ドライブレベルで何らかのガベージコレクションが行われていると思います。さまざまなベンチマークの過程でディスクを数回埋めましたが、プログラムサイクルだけでなく、消去/プログラムサイクルを待たなければならない場合に予想される書き込み速度の著しい低下は見られませんでした。
これは、256KBのストライプサイズを使用した6ドライブRAID10アレイのベンチマークデータです。パーティションはEXT3で、64セクターに配置されています。 NOOPスケジューラーが使用され、NOATIMEオプションがマウント時に指定されます。また、OSの読み取りキャッシュを8MBに増やしました(デフォルトは512Kだと思います)。このテストでは、レコードサイズが4KB、ベンチマークファイルサイズが25GBのIozone 3.347を使用して、画像からキャッシュを取り出し、ドライブの実際のパフォーマンスを測定しました。また、これを4つのスレッドで実行しました(4x25GBファイルは、ドライブに負荷をかけるために4つの子プロセスによって書き込まれます)。
実行開始:2010年8月30日月曜日12:09:57
Record Size 4 KB
File size set to 26214400 KB
Command line used: /opt/iozone/bin/iozone -b /root/4k25g4t.xls -r 4k -s 25g -t 4 -i 0 -i 1 -i 2
Output is in Kbytes/sec
Time Resolution = 0.000001 seconds.
Processor cache size set to 1024 Kbytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
Throughput test with 4 processes
Each process writes a 26214400 Kbyte file in 4 Kbyte records
Children see throughput for 4 initial writers = 253416.93 KB/sec
Parent sees throughput for 4 initial writers = 229461.66 KB/sec
Min throughput per process = 61416.07 KB/sec
Max throughput per process = 64604.90 KB/sec
Avg throughput per process = 63354.23 KB/sec
Min xfer = 24924492.00 KB
Children see throughput for 4 rewriters = 259375.90 KB/sec
Parent sees throughput for 4 rewriters = 234136.11 KB/sec
Min throughput per process = 63879.16 KB/sec
Max throughput per process = 65675.30 KB/sec
Avg throughput per process = 64843.97 KB/sec
Min xfer = 25497648.00 KB
Children see throughput for 4 readers = 490873.09 KB/sec
Parent sees throughput for 4 readers = 490830.09 KB/sec
Min throughput per process = 119007.65 KB/sec
Max throughput per process = 124878.35 KB/sec
Avg throughput per process = 122718.27 KB/sec
Min xfer = 24984912.00 KB
Children see throughput for 4 re-readers = 477533.65 KB/sec
Parent sees throughput for 4 re-readers = 477503.03 KB/sec
Min throughput per process = 115802.55 KB/sec
Max throughput per process = 121579.46 KB/sec
Avg throughput per process = 119383.41 KB/sec
Min xfer = 24973364.00 KB
Children see throughput for 4 random readers = 35728.62 KB/sec
Parent sees throughput for 4 random readers = 35728.53 KB/sec
Min throughput per process = 8926.97 KB/sec
Max throughput per process = 8937.35 KB/sec
Avg throughput per process = 8932.16 KB/sec
Min xfer = 26183936.00 KB
Children see throughput for 4 random writers = 23527.42 KB/sec
Parent sees throughput for 4 random writers = 20701.37 KB/sec
Min throughput per process = 5757.43 KB/sec
Max throughput per process = 6035.68 KB/sec
Avg throughput per process = 5881.86 KB/sec
Min xfer = 25011236.00 KB
"Throughput report Y-axis is type of test X-axis is number of processes"
"Record size = 4 Kbytes "
"Output is in Kbytes/sec"
" Initial write " 253416.93
" Rewrite " 259375.90
" Read " 490873.09
" Re-read " 477533.65
" Random read " 35728.62
" Random write " 23527.42
これまで他の回答では見られなかったいくつかのポイント:
一般に、SSDはランダムIOのSASドライブの約100倍の速度です。もう少し。要件に応じて、SASのRAID10をSSDのRAID5に置き換えても、IOPSと価格の両方で大幅に前進することができます。
最適なストライプサイズは、通常64kの倍数です。特に、SSDがこれらのセグメントで読み取り/書き込みを行う場合はなおさらです。その場合、TRIMは必ずしも必要ではありません(部分的な書き込みはありません)...しかし、それがあれば本当に素晴らしいでしょう。
MSは、Oracleにも適用されるデータベースのSSDにいくつかのパパルを持っています(同じ原則-最適化IOPS)。オラクルにもいくつかあるはずです。
RAID-10が理想的です。
典型的なIntel64GB SLCSSDのコストは約700 $であり、RAID-10を作成するにはこれらのうち4つが必要であり、64GBのDDR3登録ECC RAMコストは約1600 $(デルから購入しない限り)RAMを入手する方が賢明な投資だったかもしれません。これは、どのSSDよりも高速で長持ちします。
データベースのサイズとそのインデックスが64GBを超えないと仮定すると、データベース全体をRAMでホストするというアイデアになります。
R5/R6を使用しても、15kSASを超える異常な量が発生するため問題は発生しません。ホットスペア用にR6アレイ22SSD + 2を実行することを考えていました。
このリンクには、RAID 10に関する優れた要約と推奨事項があります。 http://www.yonahruss.com/architecture/raid-10-vs-raid-5-performance-cost-space-and-ha.html
RAID5は通常推奨されません。書き込みアプリケーションには奇妙な特性があります。私はレイド10に行きます。ストライプのサイズについてはわかりませんが、それがそれほど重要かどうかはわかりません。
LinuxディストリビューションがSSD用のTRIMをサポートしていることを確認してください。 Linux2.6.33とExt4のカーネルが必要なようです。
RAID5が提供できるドライブスペースが必要でない限り、RAID10を使用してください。ほとんどの場合、RAID10の方がパフォーマンスが向上します。
アマラが言ったように、ドライブとOSがTRIMをサポートしていることを確認してください。 OSのブロックサイズと一致するストリップサイズを使用し(64kはDBサーバーではかなり一般的です)、パーティションがこの倍数でオフセットされていることを確認してください(1MBオフセットはかなり一般的です)。