web-dev-qa-db-ja.com

Oracleデータベースに推奨されるRAID構成は何ですか?

RAID(安価なディスクの冗長アレイ)には、さまざまな構成(RAID-0、RAID-1 ...)が付属しています。 Oracleデータベースのインストール時にセットアップして使用する必要がある推奨RAID構成は何ですか。データベースは主にデータウェアハウスとして使用されます。

16
Eddie Awad

状況によります。データウェアハウスを見るとき、特定の設計を念頭に置いていない場合は、自動ストレージ管理が優れたルートとなる場合があります。

AskTomOTNフォーラムOTNフォーラム2 、および OTNフォーラム での議論を検討してください。

物事に対処するための正しい方法は1つではなく、答えはハードウェアのホストとネットワークの要因に基づいて変化します。自分で発見するために、ASMベースのマシンのSANで、RaidがLinuxおよびハードウェアベースのレイドマシンで。

3つすべての環境でクエリの結果をタイミング測定することにより、パフォーマンスに最適な方法論を見つけることができます。私はASNとLinuxベースの仮想RAIDを使用してデータベースを展開しましたが、仮想RAIDの動作はわずかに向上しました(数年前)。しかし、これはドライブのセットアップ方法の一部だったと思います。

正解は1つではありません。サイズとパフォーマンスの要件に関する詳細を提供していただければ、さまざまなテストケースを調査できる可能性があります。

-編集-

すべての " disk group "は、適切なサブシステム上の1つ以上のディスク、ディレクトリ、またはファイルで構成されている場合があります。 Oracle 推奨 「最高のパフォーマンスと信頼性を得るには、RAIDデバイスまたは複数の物理デバイス上の論理ボリュームを選択し、すべてのストライプとミラー(SAME)方法を実装します。」ファイルシステムにファイルを配置するとき。 OracleがRAID 1 + 0を推奨しているように見えます。

ただし、ASMで管理されたディスクグループ。「双方向ミラーリングを使用している場合、通常の冗長ディスクグループには少なくとも2つの障害グループ(または2つのディスクデバイス)が必要です。通常の冗長ディスクグループの有効ディスク容量は、すべてのデバイスのディスク領域」は明らかに自動的にミラーリングを提供します。

これらのデバイス自体は、RAIDデバイスなどで構成できます。 RAID化されたデータウェアハウスをセットアップしているときの実際のテストでは、ファイルシステム上の単純な仮想RAID 5は許容できるパフォーマンスを提供し、追加のASMはパフォーマンス上の利点を追加しませんでした。この種の最適化タスクでは、最初にリソースを特定してから、可能なすべての構成をテストします。結果が非常に直感的でない場合があるためです。

13

2つの物理ドライブがある場合:

RAID0:高速ですが冗長性はありません。ドライブエラーが発生すると、アレイ全体が強制終了されます。一部の人々はRAID0に一時的なストレージ(つまり、MSSQLの下のtempdb)を配置しますが、アレイが倒れた場合に意味のあるデータを失うことはありませんが、状況が修復されるまでサーバーが停止するため、これは危険だと考えます。

RAID1:ドライブが2台ある場合は、これを試してください。適切なコントローラーを使用すると読み取りパフォーマンスが向上する場合がありますが、書き込みパフォーマンスの利点はありません。 RAID1の重要な機能は、故障したドライブの1つを存続させることです。

つの物理ドライブがある場合:

サポートされている場合、オプションはRAID5、非標準の3ドライブRAID10(またはIBMコントローラーが参照するRAID1E)です。もちろん、RAID1を使用して、他のドライブの1つが故障したときのために予備のドライブをスペアとして保持することはできますが、とにかくミッションクリティカルな環境でスペアを保持する必要があるため、これは言うまでもありません。

RAID5はRAID10(1.5ドライブではなく2ドライブに相当)よりも多くのスペースを提供しますが、書き込まれたすべてのブロックについて、コントローラーがパリティブロックを読み取り、更新し、書き戻す必要があるため、書き込みパフォーマンスの問題が発生する可能性があります。更新ごとに少なくとも2つの書き込みがあるので、この書き込みパフォーマンスの問題は、データベース書き込みの場合は2倍になります。1つはトランザクションログへの書き込み、もう1つは実際のデータ領域への書き込みです。最近はスペースが安いので、書き込みパフォーマンスを向上させるためにサポートされている場合は、3ドライブRAID10をお勧めします。 LinuxのソフトウェアRAIDは、多くのIBMコントローラ(RAID1Eと呼ばれます)と同様に、これを提供します。標準的な配置とは見なされないため、標準的な名前がないため、他の名前でも見つかる可能性があります。

R5とR10-over-threeはどちらも同じ冗長性(一度に1つのドライブが故障してもアレイは存続します)と同様の読み取りパフォーマンスメトリック(2ドライブのRAID0アレイと同様)を提供します。

4つの物理ドライブがある場合:

アレイを1つだけ作成する場合は、2つのオプションがあります(「ホットスペアあり」のバリエーションを無視)。RAID6と「従来の」RAID10(RAID1のRAID0)です。

どちらも同じスペースを提供します(4つのうち2つのドライブ)。 RAID6は同時に2つのドライブに障害が発生する可能性があるため、より優れた冗長性を提供します。RAID10は、2つのドライブが失われた6つの状況のうち4つしか生き残れないためです。どちらも同様の読み取りパフォーマンスを提供しますが、RAID6にはRAID5と同様の書き込みパフォーマンスの問題があります(良好なコントローラーでも同じですが、OSによっては、RAID5は不良コントローラーのRAID5より遅い場合や、ソフトウェアRAIDの場合、I/O制御機能によって異なります。RAID10は通常、パフォーマンス上の理由からデータベースに推奨されます。追加の冗長性が必要な場合は、6つのドライブを使用し、RAID0または2つの3ドライブRAID1を使用できます。

4つ以上のドライブを用意すると、RAID1アレイの個別のペアを使用できるようになるため、状況はさらに面白くなります。これにより、データストアを1つのアレイに保持し、トランザクションログを別のアレイに保持することで、ディスクの回転によりパフォーマンスが大幅に向上します。これにより、場合によってはヘッドの移動が大幅に削減され、「ランダム」アクセスによるシーク時間が大幅に短縮されます。データウェアハウスの場合、これは、相対的に言えば書き込みがほとんどないことを意味すると仮定すると、データファイルからトランザクションログを分割することの利点は限定的である可能性がありますが、読み取りパフォーマンスを向上させるために、複数のアレイを検討し、代わりにそれらにデータを分割することをお勧めします。 。

4台を超えるドライブがある場合:

あなたのオプションはここで大きく開かれ、それは本当にあなたのデータが何であるか、そしてあなたが期待する更新/読み込みロード/パターンが何であるかに依存します。たとえば、当社のサービスの1つは12〜70Gbドライブで実行されます:

  • システム領域(OS、SQL Server(ここではMSSQL)、swap、tempdb)のRAID10として4倍。
  • データファイルのRAID10として4倍
  • トランザクションログのRAID10として4倍

Tempdbはシステムアレイに保持されます。それを他の2つのアレイに移動し、システムアレイをRAID1の2つのドライブとして実行するだけで、システムチャンクに余分な速度はあまり必要ありません(これは、ブート時またはスワッピング時にのみ重要であり、十分なRAMスワップする必要がないため)が、その一連のマシンのホスティングプロバイダーへの支払い方法では、2台のドライブを落とすのに費用はかかりません。バックアップもオフサーバー、オフサイト、オフラインのバックアップ場所にコピーされる前に、システムアレイに移動します。

もちろん、これは一部のデータベースにとってはひどくやり過ぎです(このように小さなブログサーバーを実行しても意味がありません!)。

6台のドライブがある場合は、3つのRAID1アレイ、または2つの3ドライブのRAID10アレイを検討できます。

一般的に

システムのサイズと使用パターンに大きく依存するため、残念ながら実際の単純な「ベストプラクティス」はありません。私が考えることができる唯一の一般的なルールは:

  • あなたが知っている書き込みパフォーマンスの問題があなたに大きな影響を与えないのでない限り、RAID5と6を避けてください
  • 4つ以上の回転ディスクベースのドライブでは、ヘッドの動きを減らすために複数のアレイに分割することを検討してください(考慮すべき物理的なヘッドの動きがないため、複数のアレイの完全な利点は良いSSDには適用されませんが、 SSDのコントローラーの書き込み結合戦略など)
  • テスト、テスト、再テスト:選択した配置が本当に最適であることを確認する時間を見つけることは常に良いことです

ハードウェアまたはソフトウェアRAID?

以前は、ソフトウェアRAIDのパフォーマンスは、RAID 5のハードウェアRAIDのパフォーマンスを下回っていました。これは、パリティの計算と、ドライブとCPU間の低速イン​​ターフェースによるすべての配置のためです。最近のCPUでは、パリティ計算の問題は実際には問題になりませんが、非常に高速なドライブを使用している場合、ドライブの合計速度がどこでも( 1桁以内(推測では)、マシンがディスクコントローラと通信できる速度まで。ソフトウェアRAIDを備えた4ドライブのRAID1アレイ(つまり、多くの冗長性のために同じデータの4つのコピー)がある場合、各書き込み操作により、OSはI/Oコントローラーに4つのロットのデータを送信します。コントローラーはOSが1つの書き込み要求を送信するだけで、コントローラーはそれを4つのドライブに(おそらく並行して)送信します。

優れたハードウェアRAIDには他の利点もあります。たとえば、一部のハイスペックコントローラーにはバッテリーバックアップ付きの書き込みキャッシュがあり、UPSに障害が発生した場合でも、停電時に保留中の書き込みが失われることはありません。

ソフトウェアRAIDは明らかに安価で移植性が高いため、コントローラー/マシンの障害のためにアレイを移動する必要がある場合でも、特定のコントローラーに縛られることはありません。

安価なハードウェアRAIDは通常、ソフトウェアとハ​​ードウェアRAIDの短所を組み合わせて、どちらか一方の利点をほとんど(またはまったく)持たないため、回避するのが最善です。

私は、開発、テスト、およびUATサーバーでソフトウェアRAIDを使用する傾向があり、ライブの顧客/公共向けサービスを実行するサーバーには優れたハードウェアRAIDを使用します。

10
David Spillett

Oracle Database Performance Tuning Guide」には、 I/O Configuration 専用の章があります。要するに:

  • ストライピングを使用(ハードウェアRAID、ソフトウェアRAID、ASM)
  • アーカイブおよびREDOログにRAID5を使用しないでください
  • ファイルシステムのブロックサイズとDBブロックサイズの調整
5
Benoit

場合によっては、JBODが正解です(つまり、not RAID)。

問題は、RAIDグループの数が多すぎると、テーブルのインデックスとレコードが別々のスピンドルに保存されるようにするなど、データベース内で物理ストレージをどのようにレイアウトするかを柔軟に指定できないことです。そして、すべてのディスク間で書き込みのバランスが取られていることを確認してください。

ストライピング(RAID0)を使用して書き込みのバランスをとることができますが、それがすべて1つの大きなグループである場合、インデックスとレコードを区別することはできません。

ミラーリング(RAID1)はフォールトトレラントであり、読み取りは高速です(どちらのスピンドルもビジーでない状態から読み取ることができるため)が、両方のコピーが書き込まれるまで待機する必要があるため、書き込みは遅くなる可能性があります。

データベースでRAID5やRAID6を使用することはありません。データが重要な場合は、追加のディスクを購入してRAID1を使用してください。 RAID5/6は遅く(特にソフトウェアでは)、今日のハードドライブのサイズでは、大きなディスクグループの故障したディスクを交換してから再構築するまでにかかる場合があります。 ..ほとんどのRAID5/6システムがパリティエラーを処理する方法は、パリティを再計算することです...しかし、確率はデータではなくパリティにありますが、どこにエラーがあるのか​​わかりません。 (残念ながら、データベースにLOCKSSのようなものはないと思います)

...

データベースで私が見た中で最も興味深いレイアウトは、実際にはスピンドルごとに2つのパーティションを持つことでした。ディスクの最も内側の部分が本番データベースに使用され、ディスクのオーバーセクションがバックアップに使用されました。 (そして、パーティションが同じスピンドルにバックアップされていないことを確認しました。複数のデータベースがあったため、それぞれが異なるデータベースからディスクにバックアップされたと思います)。これにより、日中は作業をより多くのスピンドルに分散させ、夜間はバックアップを実行できるという利点が得られました。

データベースが1日中使用されているときに外部ディスクからの読み取りが発生するため、何かがうまくいかず、復元が必要になると、回復が遅くなると思いますが、常にすべてのトレードオフがあります。

...

とにかく、私が言いたいのは、あらゆる状況に当てはまる答えはないということです。存在する場合、DBAは職を失い、企業は事前に構築されたデータベースアプライアンスを購入します。

私が扱っているデータベースは、上司が「WORN」と呼んでいるものです。彼は冗談ですが、「データウェアハウス」はあらゆるレベルのアクティビティを意味します...テープから毎晩または毎週ロードされたものを見ました(OLTPインスタンスのコピーだけで、テープが良かったことを確認するのに役立ちました)、大規模な分析ジョブが実行されたほか、一定の入力ストリームと時々の読み取りがあり、実際のリソースの競合がない場合にも、テープが実行されました。

4
Joe

サーバーに対する私の推奨は常に RAID 5 です。最初に故障したハードドライブを回復するのに費やした時間と労力は、常に思い出深いものになります。 RAIDアレイをセットアップする場合は、単一のドライブサイズで標準化し、サーバールームに2台のスペアハードドライブを隠しておくことを強くお勧めします。 1台のドライブが故障しましたか?交換品の1つを入れます(そしてアレイを再構築します)。 RAIDアレイがダウンするのを見てきましたハード最初のドライブが到着するのを待っている間に2番目のドライブが故障したため(翌日の配達はまだ遅すぎます) )。

3
Tangurena

使用する予定のデータ量と、システムからの読み取りと書き込みの頻度はどれくらいですか?これには多くの計画があり、一部の人々は学問的なキャリア全体をこのテーマに費やすことができます。

RAIDにはかなりの数のタイプがあり、それぞれが別の場所で使用されるのが最善であるため、通常はウィキペディアにアクセスして記事を読むように指示します。

基本は次のようになります。

RAID0

ビデオゲーマーに適しています。他の誰にとっても悪い。長期間データを保持する必要がないキャッシングサーバーにこれを使用することは悪くありません。ディスクに障害が発生すると、システムは停止します。ゲームオーバー。

RAID1

信頼性に優れています。それほど拡張性はありません。スピードはかなり良いです。

RAID5

RAID0とRAID1の好ましい組み合わせ(一種)。

さて、この後、データベースの設計ではなくサーバーの構成であるという事実から、ServerFaultで確認する必要のあることはほとんどなくなります。サーバーのパフォーマンスについては、常にサーバー管理者と話し合ってください。それが彼らの目的です。これがプライベートベータ版でない場合、私は投票して、そこにあなたを移行します。

2
jcolebrand