web-dev-qa-db-ja.com

高いIOPSを得るために、24 x SSDアレイを備えた低コストの画像ストレージサーバーをセットアップしますか?

私はそれを低コストのRa * sanと名付けたいと思います。これは、ソーシャルサイトの画像(数百万)をホストします。画像ごとに3 KB、7 KB、15 KB、25 KB、80KBの5つのサイズの画像があります。

私のアイデアは、RAID6で24倍のコンシューマー240GB SSDを備えたサーバーを構築することです。これにより、5 TB写真ストレージ用のディスク容量が得られます。HAを使用するには、2つ目のサーバーを追加して使用できます。 drdb。

150'000 IOPS(4Kランダム読み取り)を超えることを目指しています。

ほとんどの場合、読み取りアクセスのみがあり、写真を削除することはめったにないため、コンシューマーMLCSSDを使用すると思います。私は多くの耐久性レビューを読みましたが、セルを書き直さない限り問題はありません。

私の考えについてどう思いますか? -RAID6とRAID10のどちらかがわかりません(IOPSが多く、SSDのコストがかかります)。 -ファイルシステムでext4は問題ありません-エクステンダーバックプレーンで1つまたは2つのレイドコントローラーを使用しますか

誰かが似たようなことに気づいたら、私は実世界の数字を喜んで入手したいと思います。


[〜#〜] update [〜#〜]

私は12個(およびスペア)のOCZ Talos 480GB SAS SSDドライブを購入しました。それらは12ベイDASに配置され、PERC H800(1GB NVキャッシュ、高速パスを備えたLSIによって製造されます)に接続されます。 )コントローラー、ext4でRaid 50をセットアップする予定です。誰かがいくつかのベンチマークについて疑問に思っている場合は、何を見たいか教えてください。

5
Nenad

RAID10ではなくRAID6を使用します。主に読み取りベースのI/O負荷の場合、アレイが劣化していないときのスループットは同じである必要があり、冗長性が向上します(any 2つのドライブがR6で同時に故障する可能性があり、R10は両方の場合に対応できません故障したドライブは同じレッグにあります(したがって、4ドライブアレイの6つの2つのドライブ故障の組み合わせのうち4つしか生き残れません。その4/6の数字がより大きなアレイにどのように対応するかは頭のてっぺんからわかりません)) 、およびドライブを4ドライブサブアレイに配置しない限り、使用可能なアレイサイズが大きくなります(以下を参照)。

確かにRAID10の場合、スペースの計算は完了していません。 24 * 240Gbは冗長性のない5760Gbです(RAID0またはJBOD)。 RAID10では、(通常)すべてのブロックの正確なコピーが2つあるため、2880Gbしか得られません。すべてのドライブを1つの大きなRAID6アレイとして使用すると、5Tb(5280Gb、2ドライブ分のパリティ情報がアレイ全体に分散)になりますが、個人的にはもっと偏執的で、より小さなRAID6アレイを作成し、RAID0またはJBODと結合します-そうすれば、ドライブを交換したときの再構築時間が短くなり、多くの場合、一度に故障したドライブの数を増やすことができます(アレイが役に立たなくなることなく、合計24台のうち2台ではなく、レッグごとに2台のドライブが停止する可能性があります)。レッグごとに4つのドライブを使用すると、RAID10と同じ容量のスペースを確保できます。 4つの6ドライブアレイ(4 * 4 * 240 = 3840Gbの使用可能スペース)または3つの8ドライブアレイ(3 * 6 * 240 = 4320Gbの使用可能スペース)が適切な妥協案です。

コントローラに関して:これらは、RAIDの単一障害点である可能性があります。コントローラが故障すると、接続されているすべてのドライブが一度に失われます。このような障害は非常にまれですが(ランダムな破損がより一般的です)、発生した場合の影響を減らすように注意しても害はありません。 RAID10を使用する場合は、ドライブのペアが両方とも同じコントローラー上にないことを確認してください(つまり、少なくとも2つあることを意味します)。 4ドライブのRAID-6アレイに分割する場合は、4つのコントローラーを使用し、それぞれに1つのドライブまたは特定のアレイを配置します。もちろん、これは、ソフトウェアRAIDと、ありそうもない単純なコントローラーを使用していることを前提としています(ドライブにこれだけ多くを費やしているので、適切なハードウェアRAIDコントローラーを使用することもできます!)。

まだ考えていない場合は、バックアップソリューションについても検討する必要があります。 RAIDは、特定のハードウェア障害からユーザーを保護しますが、多くの人的エラーやその他の潜在的な問題からは保護しません。

7
David Spillett

重要な質問への回答:

  1. RAID6とRAID10:SSDをプライマリストレージとして使用している場合は、ほぼ確実にIOPSについて心配する必要はありません。

  2. SLCとMLC:微妙な違いがあります。 MLCを使用する場合は、Intelを購入することをお勧めします。 Intel320シリーズにはSMARTカウンターがあり、摩耗レベルのパーセンテージを追跡し、故障する前にドライブを交換するために使用できます。

ただし、SSDを使用して信頼性の高い方法でストレージのパフォーマンスを向上させたい場合は、Nexenta OS(またはFreeBSD、開発ステータスが不明)でZFSを確認することをお勧めします。

  1. ZFSを使用すると、SSDを大容量の読み取り(L2ARC)および書き込み(ZIL)キャッシュとして使用する従来のディスクの「RAID-Z2」(RAID-6に似た)アレイを構築できるため、探しているパフォーマンス上の利点を得ることができます。オールフラッシュアレイのコストなしで。

  2. アクセス頻度の高いブロックはSSDから読み取られ、使用頻度の低いブロックは引き続きディスクから読み取られます。すべての書き込みは最初にSSDに送られ、アレイにとって都合のよいときにディスクにコミットされます。

  3. 必要なSSDが少なくなるため、より高品質のデバイスを購入することになり、OCZ(またはその他)のコンシューマーグレードのMLCデバイスからRAIDアレイを構築する場合に予想されるような壊滅的な障害は発生しません。

  4. 高品質のデバイスを使用しなくても、影響はそれほど深刻ではありません。 ZFS L2ARCにMLCデバイスを使用していて失敗した場合でも、データはディスクに保存されたままになります。

4
Skyhawk

2枚の FusionIO Octal カードを購入し、それらをミラーリングするだけです-はるかに単純で、はるかに高速です(ただし、少し高価になる可能性があります)。

4
Chopper3

4kブロックの150kIOPSは、585 Mb/sのスループットです。コントローラとバックプレーンがそれを処理できることを確認してください。襲撃に関しては、SSDの障害に対する保護があなたを買うすべてであることを忘れないでください。コントローラの障害(またはメモリ障害、プロセッサの停止、またはサーバー上の他の単一障害点の障害)により、データが使用できなくなります。ダウンタイムを回避し、テープに戻らなければならない可能性を回避するために、別の同一サーバーを同期させる必要があります。

この2番目のサーバーが最初のサーバーのようにSSDで満たされている場合、単一障害点がなければ、SSDをサポートする集中型ストレージデバイスを購入する方がほぼ安価になる可能性があります。ただし、実際のハードドライブを使用して2番目のサーバーの同期を維持する場合は、パフォーマンスに影響を与えることなく、変更の大部分を保存できます。ほとんどのIOは読み取りであるため、プライマリサーバーがオフラインの場合を除いて、ドライブの負荷は最小限に抑えられます。これにより、複数のレプリケーションターゲットを購入する経済的な柔軟性が得られます。また、サイトに障害が発生した場合は、オフサイトに移動することもできます。

3
Basil

これらすべてを高価なディスクを備えた単一のサーバーとして実行することは、最善の答えではない場合があります。あなたの予算とニーズを考えると、私はSTFを見ることをお勧めします。これは、日本で最大のブログサービスの1つの画像ストレージとして設計されました。

https://github.com/stf-storage/stf

0
n8whnp