Oracleデータベースの推奨RAID構成は何ですか?


16

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


RAID0とRAID1はまったく別のものです。RAID0はパフォーマンスにのみ使用し、RAID1はドライブ障害の場合のフォールトトレランスにのみ使用します。
ジョナス

4
RAID0は、決してデータベースサーバーで使用しないでください。もちろん、テープからの復元が好きでない限り。
mrdenny

回答:


13

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

AskTomOTN ForumsOTN Forums 2、およびOTN Forums 3での議論を検討してください。

物事に対処する正しい方法はありません。答えは、多くのハードウェアとネットワークの要因に基づいて変わります。自分で発見するために、ASMベースのマシン、Linuxによって仮想化されているRAIDを備えたSAN、およびハードウェアベースのRAIDマシンにサンプルデータウェアハウス(1ギガまたは2ギガバイトで十分です)をプリロードします。

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

特異な正解はありません。サイズとパフォーマンスの要件に関する詳細を提供できる場合は、さまざまなテストケースを調べることができます。

-編集-

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

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

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


1
仮想レイドはかなりおもしろそうです:/
jcolebrand

10

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

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

RAID1:ドライブが2台ある場合はこれに進みます。優れたコントローラーを使用すると読み取りパフォーマンスが向上する場合がありますが、書き込みパフォーマンスの利点はありません。RAID1の重要な機能は、ドライブの1つが死んでも生き残ることです。

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

サポートされている場合、オプションは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は、6台の2台のドライブがなくなった状況のうち4台しか生き残れないからです。どちらもsimialrの読み取りパフォーマンスを提供しますが、RAID6にはRAID5と同様の書き込みパフォーマンスの問題があります(良好なコントローラーでも同じですが、不良なコントローラーやOSのI / O制御機能に応じてソフトウェアRAIDを使用するとRAID5より遅くなる可能性があります.RAID10は通常、パフォーマンス上の理由からデータベースに適しています-余分な冗長性が必要な場合は、6台のドライブを使用し、RAID0または2台の3ドライブRAID1を使用できます。

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

4台以上のドライブがある場合:

ここでオプションは広く開かれ、データが何であるか、予想される更新/読み込みロード/パターンが何であるかによって大きく異なります。たとえば、サービスが12〜70Gbのドライブで実行される場合:

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

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

もちろん、これは一部のデータベースにとっては非常に過剰です(このように小さなブログサーバーを実行しても意味がありません!)が、メインアプリはこの配置で非常にうまく機能します。

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

一般的に

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

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

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

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

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

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

通常、安価なハードウェアRAIDは、ソフトウェアとハ​​ードウェアRAIDの欠点を組み合わせたものであり、どちらの利点もほとんどない(またはまったくない)ので、避けるのが最善です。

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


5

Oracle Databaseパフォーマンス・チューニング・ガイド」には、I / O構成専用の章があります。要するに:

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

4

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

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

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

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

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

...

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

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

...

だから、とにかく、私がしようとしているポイント-すべての状況に合う1つの答えはありません。存在する場合、DBAは失業し、企業は事前に構築されたデータベースアプライアンスを購入します。

私が扱うデータベースは、上司が「WORN」と呼んでいるものです。彼は冗談を言っていますが、「データウェアハウス」はあらゆるレベルのアクティビティを意味する可能性があります...テープから毎晩/毎週ロードされたものを見ました大規模な分析ジョブがそれらで実行されました。また、入力および随時読み取りの一定のストリームがあるが、リソースに対する本当の競争がない他のもの。


1
賛成票がないことに対するGrr。あなたのポイントのいくつかがとても好きなので、私は今夜これに戻ってきます。私もJBODの大ファンです。または、できればたくさんのRAID1ペアが好きです。
jcolebrand

@jcolebrand:実際、これを投稿した後、Brian Ballsun-Stantonが言及した「ASM」を読みました。OS/ FS /ハードウェアレベルではなく、ミラーリング+ストライピングを処理するOracleのように見えるので、同様のポイントを作りました。しかし、彼は最近のOracleインストールに対してより良いソリューションを提供しました。
ジョー

推奨されているように、どれにJBODが必要ですか?
jcolebrand

@jcolebrand:ほとんど。(お勧めしますが、必要は思わない
ジョー

3

サーバーに対する私の推奨事項は常にRAID 5です。最初に故障したハードドライブの回復に費やした時間と労力は、常に記憶に残るでしょう。RAIDアレイを設定する場合、単一のドライブサイズで標準化し、サーバールームに2台の予備のハードドライブを格納することを強くお勧めします。1つのドライブが故障しましたか?置換の1つを入れます(そしてアレイを再構築します)。RAIDアレイは、最初のドライブが到着するのを待っている間に2台目のドライブが故障しため、ハードダウンするのを見ました(翌日配達がまだ遅すぎました)。


しかし、ハードドライブの交換はDBAのドメインではありませんか?SFクラウドの自動化ツールでは、ディスクの寿命と故障率を監視します。仕事を複製して、専門化の理由を破壊しないようにしましょう。私たち結局dbaです;)
jcolebrand

RAID 5はどこに実装されましたか?ハードウェア?ソフトウェア?オラクル?いくつのディスクに?オラクルが推奨するドライブアレイはどうですか?これはREDOアーカイブログの目的ではありませんか?
ブライアンボールサンスタントン

2
RAID5では、書き込みパフォーマンスに重大な問題が生じる可能性があります。RAID10は、DBサーバーではより一般的です。
デビッドスピレット

@jcolebrand、ネットワーク管理者==サーバー管理者==データベース管理者を扱うために働いた多くの会社。一部では、本番データセンターにアクセスできる人が数人しかいないため、それらの人は一度に2つの帽子をかぶる必要があります。私が働いてきた多くの人では、サーバー管理者は何が起こっているのかわからないので、私は関与しますので、彼らの仕事も知っていなければなりません。
タングレナ

まあそれはクールだし、同時にそれは吸う。経験の声を持って喜んで;)[PS:私の+1だった]
jcolebrand

2

使用する予定のデータの量、およびシステムからの読み取りと書き込みの頻度はどのくらいですか?これには多くの計画があり、十分な学歴をこのテーマに費やす人もいます。

RAIDには非常に多くの種類があり、それぞれが異なる場所で使用するのが最適であるため、通常、Wikipediaにアクセスして記事を読んでから続行するように指示します。

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

RAID0

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

RAID1

信頼性に優れています。拡張性はあまりありません。速度はかなり良いです。

RAID5

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

さて、この後、ServerFaultがデータベース設計よりもサーバー構成であるという事実のために、それは本当にServerFaultで尋ねられるべき何かになります。サーバーのパフォーマンスについては、常にサーバー管理者と話し合ってください。それが彼らの目的です。これがプライベートベータ版でない場合は、そこで移行するために投票することになります。


2
ServerFaultは確かにこの質問の間違った場所ではありませんが、おそらく正しいでしょう。I / Oパフォーマンスの問題は、DBAが十分に認識している必要があります。
デビッドスピレット

@David私は固く同意しますが、beig認識とそれを自分で指定することには違いがあります。私の経験では、サイトが大きくて忙しかったとき、それは一人の仕事ではありませんでした。二つのヘッドは、1よりも優れているとすべてのこと
jcolebrand
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.