Web サーバーに推奨されるドライブ構成

Web サーバーに推奨されるドライブ構成

一般的な Web サーバーのドライブ構成はどのようなものですか? 通常、OS 用のドライブとデータ用のドライブがあります。データ ドライブは通常 RAID 5 ですが、OS ドライブに何を推奨していたか思い出せません。RAID 1 が理想的でしょうか?

答え1

私は大手ホスティング会社に勤めていますが、私が勤務するエンタープライズ セグメントで最もよく目にするのは (必ずしも推奨しているわけではありませんが、私が目にしているものです)、サーバーがスタンドアロンでローカル ストレージを使用していると仮定すると、RAID 1 OS アレイと RAID5 データ アレイです。

現在、ハード ドライブが大きくなるにつれて、単一ドライブの再構築中に URE が発生する可能性が非常に高くなるため、RAID 5 は実際にはあまり理想的ではなくなります。

しかし、OS ドライブについて具体的に質問されているようなので、そのドライブから他のアプリを実行するのでない限り、RAID 1 は標準であり、通常は十分です。

答え2

私はデータセンターを運営しており、かなり大規模なホスティング事業の CTO を務めています。RAID 5 を決して使用しないことを強くお勧めします。

可能な限り良いSANを使用する


RAID5 では、ストライプごとに 1 つのパリティ ドライブのみが使用されます。多くの RAID5 アレイは 5 つのドライブ (数が異なる場合は計算を適切に調整してください) で構成されます (4 つのデータと 1 つのパリティですが、RAID 3 および 4 のようにすべてのパリティを保持するドライブが 1 つではありませんが、読み進めてください)。

RAID 5 は無駄が多いですが、RAID 10 と 1 も同様です。 ドライブが 10 台、つまりそれぞれ 20 GB で 200 GB の場合、RAID5 はパリティに 20% を使用するため (2 つの 5 ドライブ アレイとして設定した場合)、160 GB のストレージが確保されます。

RAID10 はミラーリング (RAID1) と同様に、冗長性のために 50% 使用しているプラ​​イマリ ドライブごとに 1 台 (またはそれ以上) のミラー ドライブを使用するため、同じ 160 GB のストレージを得るには 8 組、つまり 16 - 20 GB のドライブが必要になります。これが RAID5 が人気がある理由です。この紹介は、物事を客観的に見るためのものです。

RAID5 は物理的には RAID0 のようなストライプ セットですが、データ回復機能が含まれています。RAID5 は、各ストライプ ブロックから 1 つのディスク ブロックをパリティ データ用に予約します。パリティ ブロックには、RAID5 ブロック内のエラーを修正できるエラー修正コードが含まれています。実際、パリティ ブロックは残りのデータ ブロックと組み合わせて使用​​され、ドライブの故障により失われた 1 つのブロックを再作成します。RAID3 および RAID4 に対する RAID5 の革新性は、パリティがラウンド ロビン方式で分散されるため、複数のドライブから異なるブロックを個別に読み取ることができることです。これが、すべてのドライブから同じブロックを同時に読み取る必要がある RAID3 および RAID4 よりも RAID5 が普及した理由です。したがって、ドライブ 2 に障害が発生した場合、ブロック 1、2、4、5、6、および 7 はこのドライブのデータ ブロックであり、ブロック 3 および 8 はこのドライブのパリティ ブロックです。つまり、新しいドライブがドライブ 2 に置き換わる前、または新しいドライブ 2 の置き換えの再構築中にブロック 1 が要求された場合、ドライブ 5 のパリティを使用してディスク 2 からデータ ブロックを再作成することになります。同様に、ドライブ 1 のパリティはブロック 2 を修復するために使用され、ドライブ 3 のパリティはブロック 4 を修復するなどします。ブロック 2 の場合、すべてのデータは残りのドライブに安全に保存されていますが、ドライブ 2 の交換の再構築中に、ブロック 2 のデータから新しいパリティ ブロックが計算され、ドライブ 2 に書き込まれます。

RAID 5 読み取り書き込みペナルティ:ディスク ブロックがアレイから読み取られると、RAID ソフトウェア/ファームウェアは、どの RAID ブロックにディスク ブロックが含まれているか、どのドライブにディスク ブロックがあるか、どのドライブにその RAID ブロックのパリティ ブロックが含まれているかを計算し、1 つのデータ ドライブのみを読み取ります。データ ブロックを返します。後でデータ ブロックを変更すると、古いブロックを減算して新しいバージョンを追加することでパリティを再計算し、2 つの別々の操作でデータ ブロックに続いて新しいパリティ ブロックを書き込みます。これを行うには、まずそのストライプ ブロックのパリティが含まれているドライブからパリティ ブロックを読み取り、元のドライブから更新されたブロックの未変更データを再度読み取ります。この読み取り-読み取り-書き込み-書き込みは RAID5 書き込みペナルティとして知られています。これは、これら 2 つの書き込みが順次かつ同期的であるため、安全のため、書き込みシステム コールは再読み取りと両方の書き込みが完了するまで戻ることができないため、同じ容量のアレイの場合、RAID5 への書き込みは RAID0 よりも最大 50% 遅くなります。 (一部のソフトウェア RAID5 では、元のブロックの変更されていないコピーをメモリ内に保持することで再読み取りを回避します。)

RAID10 は、RAID1 (ミラーリング) と RAID0 (ストライピング) の組み合わせの 1 つです。以前は、RAID01 や RAID10 の意味について混乱があり、さまざまな RAID ベンダーがそれぞれを異なる方法で定義していました。約 5 年前に、私は次の標準言語を提案しましたが、これは定着しているようです。N 個のミラー ペアが一緒にストライピングされる場合、ミラーリング (RAID1) がストライピング (RAID0) の前に適用されるため、これを RAID10 と呼びます。もう 1 つのオプションは、2 つのストライプ セットを作成し、それらを互いにミラーリングすることです。これは RAID01 と呼ばれます (RAID0 が最初に適用されるため)。RAID01 システムでも RAID10 システムでも、すべてのディスク ブロックがドライブのミラーで完全に複製されます。パフォーマンスの点では、RAID01 と RAID10 は機能的に同等です。違いは回復時に現れます。RAID01 は、RAID5 に影響を与える、これから説明する問題の一部に悩まされますが、RAID10 ではそうではありません。

RAID5 アレイ内のドライブが故障、取り外される、またはシャットダウンされた場合、故障したドライブがその RAID ブロックのパリティ ブロック ドライブではないと仮定して、残りのドライブからブロックを読み取り、パリティを使用して失われたデータを計算することで、データが返されます。5 つのドライブ アレイの場合、5 つのディスク ブロックのうち 4 つについて、失われたディスク ブロックを置き換えるのに 4 回の物理読み取りが必要であり、問​​題が検出されて新しいドライブがマップされて回復が開始されるまで、64% のパフォーマンス低下につながることに注意してください。回復中は、交換用ドライブを再構築するためにすべてのドライブがアクティブにアクセスされるため、パフォーマンスはさらに低下します (以下を参照)。

RAID10 アレイ内のドライブが故障した場合、破損したペアから 2 つの非連続ブロックが必要な場合 (2 つのブロックを両方のドライブから並行して読み取ることはできないため) は、ミラー ドライブから 1 回の読み取りでデータが返され、パフォーマンスの低下はわずか (4 ペア アレイ全体では平均 6.25%) ですが、それ以外の場合はパフォーマンスの低下はありません。

何が起こっているのか、そしてなぜ RAID5 が嫌いなのかが少しずつ分かってきましたが、深夜のインフォマーシャルで言われているように、それだけではありません。

パフォーマンスが少し低下していることに気付かない以外に何が問題なのでしょうか?

さて、それでは本日の最後の質問に移りましょう。RAID5 の問題は何でしょうか。RAID5 は故障したドライブを回復するのでしょうか。書き込み速度が遅くなりますが、心配するほど書き込みはしませんし、キャッシュも大いに役立ちます。キャッシュは大量にあります。問題は、最近のドライブの信頼性が向上し、ほとんどのドライブのエラー訂正コードが改善されているにもかかわらず、また EMC がすべての Clariion ドライブ ディスク ブロックに追加で 8 バイトのエラー訂正を追加しているにもかかわらず (EMC システムを使用できれば幸運です)、ドライブが不安定になり、ゴミを返し始める可能性が少なからずあることです。これは部分的なメディア障害と呼ばれます。現在、SCSI コントローラは、消えつつあるセクターを未使用のセクターに置き換えるために、数百のディスク ブロックを再マップする予約を行っていますが、ドライブが故障した場合、これらのブロックは長くは続かず、使い果たされてしまいます。SCSI は OS に訂正可能なエラーを報告しません。したがって、手遅れになって、代替セクターがなくなり、ドライブがゴミを返し始めるまで、ドライブが不安定になっていることに気付かないのです。 [最近人気の IDE/ATA ドライブには、ハードウェアに不良セクターの再マッピングが含まれていない (TMK) ため、それだけ早くガベージが返されることに注意してください。] ドライブがガベージを返す場合、RAID5 は読み取り時にパリティをチェックすることは決してないため (RAID3 と RAID4 はパリティをチェックしますが、どちらもデータベースの起動には RAID5 よりも優れています)、ガベージ セクターを書き戻すと、ガベージ パリティが計算され、RAID5 の整合性が失われます。同様に、ドライブに障害が発生し、残りのドライブの 1 つが不安定な場合、交換ドライブはガベージで再構築され、問題が 1 つのブロックではなく 2 つのブロックに伝播します。

さらに必要ですか? リカバリ中、RAID5 アレイの読み取りパフォーマンスは最大 80% 低下します。一部の高度なアレイでは、リカバリまたはパフォーマンスを優先するように設定できます。ただし、これを行うとリカバリ時間が長くなり、リカバリが完了する前にアレイ内の 2 番目のドライブが失われる可能性が高くなり、壊滅的なデータ損失が発生します。一方、RAID10 では、4 つ以上のペアのうち 1 つのドライブのみがリカバリされ、リカバリ中のペアからの読み取りパフォーマンスのみが低下するため、アレイ全体のパフォーマンスへの影響は約 20% にとどまります。さらに、リカバリ中はパリティ計算時間も使用されず、単純にデータがコピーされます。

2 台目のドライブが失われるという問題はどうでしょうか。RAID10 では、回復中の 1 つのミラーも故障しない限り危険はありません。また、その可能性は RAID5 アレイ内の他のドライブが故障する確率よりも 80% 以上低くなります。また、複数のドライブが故障する原因のほとんどは、検出されない製造上の欠陥によるものであるため、すべてのドライブを別の製造元のロット番号のドライブでミラーリングすることで、この可能性さえも非常に小さくすることができます。(「ああ、このシナリオは起こりそうにありません!」と言うかもしれません。) 残念ながら、200 台の IBM ドライブのバッチが故障し始めたとき、2 週間で 50 台のドライブを失いました。IBM は、1 ロットのドライブで長時間稼働するとスピンドル ベアリングがフリーズすることを発見しました。幸い、RAID10 と DG の技術者および当社のスタッフによる 2 週間にわたる大変な努力のおかげで、データは失われませんでした。ただし、回復中に 2 台目のドライブが故障した後、1 つの RAID5 ファイル システムが完全に失われました。幸い、すべてがテープ上にありました。

結論は? 安全性とパフォーマンスのために、まず RAID10、次に RAID3、3 番目に RAID4、最後に RAID5 を優先してください。RAID2-5 仕様が最初に採用された理由は、ディスクのコストが高いため RAID1 (ミラーリング) が実用的でなくなったためです。しかし、もうそうではありません。ドライブはコモディティ価格になっており、最も高速なドライブでも絶対額では当時のドライブより安くなっており、MB あたりのコストは以前のほんの一部です。RAID5 は今でも意味があるのでしょうか? 明らかに意味がないと思います。

物事を大局的に見ると、ドライブ 1 台が 1,000 ドル (ほとんどはそれよりはるかに安価) の場合、4 ペアの RAID10 アレイから 5 ドライブの RAID5 アレイに切り替えると、ドライブ 3 台分、つまり 3,000 ドル節約できます。復旧の不安が生じた場合でも、技術者、DBA、管理者、および顧客の残業、消耗にかかるコストはいくらでしょうか。パフォーマンスの低下、さらには顧客満足度の低下にかかるコストはいくらでしょうか。最後に、データが復旧できない場合のビジネス損失のコストはいくらでしょうか。

BAARF の Web サイトからコピーしたものですが、確かに注目に値します。

可能な限り RAID 10 を使用し、追加のディスクに費用をかけます。

答え3

アプリケーションが実行されておらず、OS ファイルのみがホストされていると仮定すると、RAID 1 で十分です。

OS ボリューム上で追加のアプリケーションを実行している場合は、負荷を考慮する必要があります。

答え4

速度がそして信頼性は重要です。RAID0+1 は、最大 2 つのドライブ障害に対する耐性を備え、最高のパフォーマンス (計算するパリティなし) を実現します。ただし、すべてのコントローラがこれをサポートしているわけではありません。

関連情報