付録 E. RAID (Redundant Array of Independent Disks)

RAID とは?

RAID の基本的な考え方は、小さくて安価なディスクドライブをいくつか組み合わせてアレイを形成し、大容量かつ高価な 1 台のドライブを超える性能を引き出すということです。このドライブのアレイをコンピュータから見ると、単一の論理記憶装置またはドライブのように見えます。

RAID とは、ディスクストライピング (RAID Level 0) および ディスクミラーリング (RAID level 1) と呼ばれる技術を用い、複数のディスクにわたって情報を展開することで、ディスクの読み書きに関する冗長性、ローレイテンシ、および高バンド幅を実現し、ハードディスククラッシュ時の回復可能性を最大限にする手法のことをいいます。

RAID の基礎となる考え方は、一貫した方法によって、アレイに属する各ドライブ上にデータを分散させることができるということです。そのために、まずデータは固定サイズの 「塊」 (32K または 64K であることが多いものの、別のサイズも使用することができます) に分割されます。これらの塊が各ドライブに順番に書き込まれます。データの読み込み時にはこのプロセスが逆になるので、複数ドライブが実際に一つの大容量ドライブであるかのように錯覚します。

RAID を使用すべきユーザは?

大量のデータを身近に保管しておく必要のある人 (平均的な管理者など) には、RAID 技術を使用するメリットがあります。RAID を使用する理由には、以下のものがあります。

  • 高速化

  • 格納容量の増加

  • ディスククラッシュからの回復における効率を高める

RAID:ハードウェア vs ソフトウェア

RAID に対するアプローチが 2 種類あります。ハードウェア RAID とソフトウェア RAID です。

ハードウェア RAID

ハードウェアベースのシステムは、ホストから独立するものとして RAID サブシステムを管理します。ホストからは、RAID アレイが一台のディスクにしか見えません。

ハードウェア RAID デバイスの例としては、SCSI コントローラに接続したデバイスがあり、この場合 RAID アレイは単一の SCSI ドライブのように見えます。外部 RAID システムは、すべての RAID 処理 「インテリジェンス」 を外部のディスクサブシステムの中に配置されたコントローラに移します。サブシステム全体は通常の SCSI コントローラを経由してホストと接続しているので、ホストから見ると単一のディスクのように見えます。

RAID コントローラもカード形式のもので、オペレーティングシステムに対する SCSI コントローラのような役割を果たします。ただし、ドライブとの実際の通信を自分自身で処理します。そのような場合、SCSI コントローラの場合と同様にドライブは RAID コントローラに接続されますが、ドライブは RAID コントローラの設定として追加されるので、オペレーティングシステムは違いを認識することができません。

ソフトウェア RAID

ソフトウェア RAID は、カーネルディスク (ブロックデバイス) コードの中で各種の RAID レベルを実現します。最も安価なソリューションをも提供します。高価なディスクコントローラカードやホットスワップシャーシ [1] が必要なく、ソフトウェア RAID は SCSI だけではなく安価な IDE ディスクを使用した場合でも機能します。最近の高速な CPU を使用した場合、ソフトウェア RAID の性能がハードウェア RAID をしのぐこともあります。

Linux カーネルに含まれる MD ドライバは RAID ソリューションの例であり、ハードウェアから完全に独立しています。ソフトウェアベースアレイの性能は、サーバ CPU の性能と負荷に依存します。

RAID の機能

ソフトウェア RAID が提供する機能について詳しく知りたい人のために、以下に機能のいくつかを簡単に列挙します。

  • スレッド化された再構築プロセス

  • 完全にカーネルに基づいた構成

  • 再構築せずに Linux マシン間でアレイを移動することができる

  • アイドル状態のシステム資源を使用した、バックグラウンドにおけるアレイの再構築

  • ホットスワップ可能なドライブをサポート

  • 自動的に CPU を検出して一定 CPU の最適化機能を利用

レベルとリニアのサポート

RAID はレベル 0、1、4、5 を提供し、リニアをサポートします。これらの RAID タイプは以下のような機能を提供します。

  • レベル 0 -- RAID レベル 0 は、「ストライピング」 とも呼ばれますが、速さ指向のストライプ化されたデータマッピング技術です。つまり、アレイに書き込まれるデータはストライプへと分割され、アレイの各メンバーディスクへと書き込まれます。そうすることで、低い固有コストに対して高い I/O 性能が得られますが、冗長性は得られません。アレイの記憶容量はメンバーディスクの合計容量に等しくなります。

  • レベル 1 -- RAID レベル 1、または 「ミラーリング」、は他のどの RAID の形式よりも長い間使用され続けています。レベル 1 は、アレイの各メンバーディスクに同じデータを書き込み、各ディスク上に 「鏡で写したような」 コピーを残すことによって冗長性を提供しています。ミラーリングは、その単純さと高レベルのデータの安全性を提供するために人気を保っています。レベル 1 は 2 台またはそれ以上のディスクがある場合に機能するため、読み込み時には並列アクセスを行うことで高速な転送レートが得られますが、一般には独立して動作することによって高い I/O トランザクションレートを提供します。レベル 1 は優れたデータの信頼性を提供し、読み込み中心のアプリケーションについては処理速度を向上させるものの、比較的コストが高くなります。[2]. アレイの容量は、1 台のメンバーディスクの容量に等しくなります。

  • レベル 4 -- レベル 4 では[3] 1 台のディスクドライブに集められたパリティを使用することでデータを保護します。大規模ファイルの転送よりもトランザクション I/O に適しています。パリティ専用ディスクに固有のボトルネックがあるため、ライトバックキャッシングなどの技術を併用せずにレベル 4 が使用されることはめったにありません。RAID レベル 4 は、RAID パーティション構成に含まれるオプションではありますが、Red Hat Linux の RAID 構成で許されるオプションではありません。[4]. アレイ容量はメンバーディスクの合計容量から 1 台のメンバーディスクの容量を差し引いたものに等しくなります。

  • レベル 5 -- 最も一般的な RAID のタイプです。アレイに属するすべてのメンバーディスクドライブ上にパリティ情報を分散することによって、RAID レベル 5 ではレベル 4 に固有の書き込みボトルネックが取り除かれています。唯一のボトルネックは、パリティの計算プロセスです。最近の CPU およびソフトウェア RAID を使用した場合、これはさほど大きなボトルネックとなりません。レベル 4 の場合と同じく、結果として処理速度には偏りがあり、読み込み速度が書き込み速度を大きく上回ります。この偏りを小さくするために、しばしばレベル 5 はライトバックキャッシングと併用されます。アレイ容量はメンバーディスクの合計容量から 1 台のメンバーディスクの容量を差し引いたものに等しくなります。

  • リニア RAID -- リニア RAID は単純にドライブをグループ化して 1 台の大容量仮想ドライブを作成するものです。リニア RAID では、塊が 1 台のメンバードライブに対して逐次的に割り当てられて行き、最初のドライブが完全に埋めつくされると次のドライブに割り当てられるようになります。このようなグループ化の場合、I/O 操作がメンバードライブの間で分割されることはほとんどないので、性能上のメリットはありません。リニア RAID は冗長性も提供せず、実際に信頼性も低くなります。つまり、メンバードライブのいずれかがクラッシュすると、アレイ全体を使用することができなくなります。容量は、全メンバーディスクの合計です。

RAID パーティションの作成

GUI と kickstart のどちらのインストールモードでも RAID を利用することができます。fdisk または Disk Druid を使用して RAID 構成を作成することができます。ただし、以下では Disk Druid によって作業を完了することを中心に説明します。

RAID デバイスを作成する前に、まず以下のステップ毎の指示にしたがって RAID パーティションを作成しなければなりません。

ティップヒントfdisk を使用する場合
 

fdisk によって RAID パーティションを作成する場合は、タイプ 83、Linux native、ではなくタイプfd (Linux RAID) のパーティションを作成しなければならないことを覚えておいてください。

  • パーティションの作成Disk Druid[追加] を選択して新しいパーティションを作成します (「図 E-1 を参照」)。

    図 E-1. 新しい RAID パーティションの作成

  • マウントポイントの入力はできません (RAID デバイスを作成したあとで入力できるようになります)。

  • 目的のパーティションサイズを入力します。

  • ハードディスク上の利用可能領域のすべてを埋めつくすまでパーティションを拡張したい場合は、[サイズを自動調整する] を選択します。この場合、他のパーティションが修正されるにつれて、パーティションのサイズが拡大したり収縮したりします。複数のパーティションを自動サイズ設定パーティションにすると、ディスク上の利用可能空き領域をめぐってそれらのパーティションが競合することになります。

  • パーティションタイプとして [RAID] と入力します。

  • 最後に、[選択可能なドライブ] で、RAID を作成するドライブを選択します。複数のドライブがある場合は、ここですべてのドライブが選択されることになるので、RAID アレイの作成対象としないドライブの選択を解除しなければなりません。

RAID のセットアップに必要なパーティションの数だけ上記のステップを繰り返します。

図 E-2. RAID パーティション

RAID パーティションとしてのパーティションの作成がすべて完了したら、Disk Druid メインパーティショニング画面で [RAID デバイスの作成] ボタンを選択します (「図 E-2 」を参照)。

次に「図 E-3 」が表示されるので、ここでRAID デバイスを作成することができます。

図 E-3. RAID デバイスの作成

  • まず、マウントポイントを入力します。

  • 次に、パーティショニングタイプに [Linux Native] が設定されていることを確認します。

  • RAID デバイスを選択します。特段の理由がない限りは、先頭デバイスに md0、2 番目のデバイスには md1 などと選択する必要があります。RAID デバイスの範囲は md0 から md7 であり、それぞれを一度だけ使用することができます。

  • RAID タイプを選択します。選択肢は [RAID 0][RAID 1]、および [RAID 5] です。

    注意注意:
     

    /boot の RAID パーティションを作成する場合は、RAID レベル 1 を選択しなければなりません。/boot の RAID パーティションではなく、/ の RAID パーティションを作成する場合は、RAID レベル 1 でなければなりません。

  • 最後に、この RAID のメンバーとするパーティションを (「図 E-4 」に示すようにして) 選択してから [次] をクリックします。

    図 E-4. RAID アレイの作成

  • ここから、インストールプロセスを続行することができます。その他の指示については、『Official Red Hat Linux インストレーションガイド』を参照してください。

注意

[1]

ホットスワップシャーシを使用すれば、システムの電源を落とさなくてもハードドライブを取り出すことができます。

[2]

RAID レベル 1 のコストが高くなるのは、アレイに属するすべてのディスクに同じ情報を書き込むので、ドライブの領域を消費するからです。たとえば、RAID レベル 1 をセットアップして、"/" (ルート) パーティションが 2 台の 4G ドラブにまたがるようにしたとします。合計で 8 G になりますが、8 G のうちの 4 G にしかアクセスすることができません。残りの 4 G は最初の 4 G の鏡のような役割を果たします。

[3]

パリティ情報は、アレイに属する他のメンバーディスクの内容に基づいて計算されます。この情報を使用することによって、アレイに属するディスクがクラッシュした場合でも、データを再構築することができます。次に、再構築されたデータを使用すれば、クラッシュしたディスクに対する I/O 要求を満たしたり、ディスクを修復または交換した後で、クラッシュしたディスクを再現したりすることもできます。

[4]

RAID レベル 4 で消費される領域の量は RAID レベル 5 と同じですが、レベル 5 にはレベル 4 をしのぐ長所がたくさんあります。このためレベル 4 はサポートしていないのです。