5.6. 高度なストレージ技術

本章でここまで説明してきたことはすべて 1 つのシステムに直接接続している単一のハードドライブに関してのみ取り扱っていますが、他にも活用できる高度なオプションがあります。次のセクションでは大容量ストレージのオプションをさらに広げた一般的な手段をいくつか説明します。

5.6.1. ネットワークによるアクセスが可能なストレージ

ネットワーク技術とストレージ技術を統合することでシステム管理者に飛躍的な柔軟性を与えてくれます。この種の構成により得られる利点が 2 つあります。

高速ネットワーク接続を持つ高性能サーバを配備することによりストレージを結合し、大きな容量の高速ストレージを構成することができます。適切な設定を行うことにより、ローカル接続のストレージに匹敵する速度でのアクセスができるストレージが可能になります。さらに、こうした構成が持つ共有性によりコストの軽減が可能になります。集中化の構成関連に要する経費など、クライアント全員にそれぞれ相応のストレージを供給するのに比べて共有ストレージは少ない経費ですみます。また、多くのクライアントで空き領域が分散してしまう(また、広範囲での使用を妨げる)ことなく、空き領域を結合します。

集中化したストレージサーバは多くの管理作業を容易にすることもできます。例えば、監視するストレージが集中かストレージサーバ上にあれば、空き領域の監視はぐんと楽になります。集中かストレージサーバを使ってバックアップを飛躍的に簡略化することができます。複数クライアント用のネットワーク認識バックアップが可能になりますが、設定及び管理に作業を要します。

どれかひとつを選択するのが難しいほどさまざまなネットワーク化ストレージ技術があります。昨今の市場で販売されているオペレーティングシステムにはほぼすべてにネットワークによるアクセスが可能なストレージを利用できる手段がありますが、種類が異なる技術同士は互換性がありません。どうやって配備する技術を選べはよいのでしょうか?

一般的には、クライアントに内蔵している機能に選択させると最適な結果を提供してくれます。これには多くの理由があります。

クライアント関連の問題は企業内のクライアント数の分だけ倍加することに留意してください。クライアントの内蔵機能を使うと、各クライアントに追加ソフトウェアをインストールする必要がなくなります(ソフトウェア購入における付加コストが生じない)。また、クライアントオペレーティングシステムとの適切なサポートや統合の可能性が最も高くなります。

しかしながらマイナス面もあります。つまり、クライアントが必要とするネットワークアクセス可能なストレージの適切なサポートを提供する作業にサーバの環境が依存しなければなりません。サーバとクライアントオペレーティングシステムが同じものであれば通常は問題ありません。異なる場合は、サーバがクライアントの言語を"話せる"ように時間と労力をかける必要があります。しかし、時間と労力をかけた見返りは十分にあるでしょう。

5.6.2. RAID ベースのストレージ

システム管理者が養わなければならない技術のひとつとして複雑なシステム設定を調査し、各設定固有のそれぞれの短所を観察する能力です。一見、やっかいな作業に見えますが、すべてのオペレーションが 1 つの障害でダウンしてしまう状況をちょっとした事前の考慮で回避できることを考えればすばらしいことです。

この点に留意しながら、ディスクベースのストレージに関して現在持ち得る知識を使ってディスクドライブが問題となっている可能性がある状況を判断できるかどうか試してみましょう。まず、明らかなハードウェア障害について見てみます。

パーティションを 4 つ持つディスクドライブが完全に機能 しなくなってしまいました。パーティションにあるデータはどうなるのでしょうか?

データは直ちに使用不能になります(少なくとも、障害が発生しているユニットを交換し、最近のバックアップからデータを復元するまで使用不能)。

パーティションを 1 つ持つディスクドライブが大量の I/O 負荷のため設計制限に達してしまいました。このパーティションにあるデータへのアクセスが必要なアプリケーションはどうなりますか?

ディスクドライブはこれ以上早く読み込み、書き込みの処理ができないため、このアプリケーションはスローダウンします。

少しづつサイズが増えている大きなデータファイルがあり、システムで使用できる最大のディスクドライブより大きくなってしまいそうです。どうなりますか?

ディスクドライブが満杯になると、データファイルの増大が停止するので関連のアプリケーションは動作を停止します。

こうした問題がひとつ起きてもデータセンタは機能しなくなってしまいます。システム管理者はこの種の問題に日常的に直面しなければなりません。何ができるでしょうか?

こうしたそれぞれの問題に対処できる技術があります。RAID と呼ばれる技術です。

5.6.2.1. 基本概念

RAID は Redundant Array of Independent Disks の略です [1]。名前が示す通り、RAID とは複数のディスクドライブを単一のディスクドライブであるかのように動作させる方法です。

RAID 技術は 1980 年中頃、カリフォルニア大学バークレー校の研究者たちによって最初に開発されました。当時、その頃では大規模なコンピュータ設備に使用されていた高性能ディスクドライブと出始めたばかりのパーソナルコンピュータ市場で使用されていた低速なディスクドライブとの間には価格に大きな開きがありました。RAID は安価なディスクドライブを複数をまとめて高価なユニット 1 台の代用にする方法として考えられていました。

さらに重要なことは、RAID アレイはさまざまな方法で構築できるということです。最終的な設定により異なる性質になります。各種の構築を詳しく見てみましょう (RAID レベルと呼ばれる)。

5.6.2.1.1. RAID レベル

バークレー校の研究者は元々、RAID レベルを 5 通りに定義し、"1" から "5" までの番号付けをしました。合わせるようにストレージ分野の別の研究者やメンバーなどによって更に別の RAID レベルが定義されました。すべての RAID レベルが同等に便利であったわけではありません。研究対象としての目的だけのものもあれば、コスト面から実施できないものもありました。

最終的に、幅広く利用されるようになったものは 3 通りでした。

  • レベル 0

  • レベル 1

  • レベル 5

次のセクションでは各レベルについて詳しく説明していきます。

5.6.2.1.1.1. RAID 0

RAID レベル 0 と呼ばれるディスク構成には少々誤解を招くところがあります。全く冗長性がない RAID レベルはこのレベルだけだからです。しかし、RAID 0 には信頼性の見地からは利点がなくとも、他の利点を備えています。

RAID 0 アレイは複数のディスクドライブから構成されます。各ドライブの平均的な記憶容量はチャンクに分割され、これが複合されたドライブの本来のブロックサイズを表示します。アレイに書き込まれたデータはチャンク毎にアレイ内の各ドライブに書き込まれます。チャンクはアレイ内の各ドライブ全体にストライプを形成していくと考えることができます。故に、RAID 0 の別名として ストライピングとも呼ばれます。

例えば、1 チャンクサイズが 4 KB、ドライブが 2 つのアレイで 12 KB のデータをこのアレイに書き込むと、次のように 4 KB のチャンク 3 つに分けてデータがそれぞれのドライブに書き込まれることになります。

  • 最初の 4 KB は 1 番目のドライブの 1 番目のチャンクに書き込まれます。

  • 次の 4 KB は 2 番目のドライブの 1 番目のチャンクに書き込まれます。

  • 最後の 4KB は 1 番目のドライブの 2 番目のチャンクに書き込まれます。

シングルのディスクドライブに比べて、RAID 0 には次のような利点があります。

  • 総計サイズが大きくなる — RAID 0 はシングルのディスクドライブより大きいサイズを構成することができるため、大きなデータファイルを簡単に格納することができます。

  • 読み込み/書き込みの性能向上がはかれる — RAID 0 アレイでの I/O 負荷はアレイ内のドライブすべてに平均的に分散します (I/O が 1 つのチャンクに集中しないと仮定した場合)。

  • 領域のムダがない — アレイ内のすべてのドライブにある使用可能な記憶領域はすべてデータ保存に使用できます。

シングルのディスクドライブに比べて、RAID 0 には次のような欠点があります。

  • 信頼性が低下する — RAID 0 内の各ドライブすべてがアレイに対して使用できるよう動作中でなければなりません。N ドライブの RAID 0 アレイ内のドライブの内、ドライブが 1 つでも障害を起こすと全データ中の 1/N が削除されることになり、役に立たなくなります。

ヒントヒント
 

各種のRAID レベルすべてを明確に覚えられないようであれば、RAID 0 の冗長性は 0% と覚えておいてください。

5.6.2.1.1.2. RAID 1

RAID 1 は全く同じディスクドライブを 2 台使用します (2 台以上のドライブをサポートする構成もあります)。すべてのデータが両方のドライブに書き込まれ、お互いにミラーイメージを作成します。これがミラーリングと呼ばれる理由です。

RAID 1 アレイにデータが書き込まれると、必ず物理的に書き込みが 2 回行われます。1 番目のドライブへの書き込みと 2 番目のドライブへの書き込みです。一方、データの読み込みは 1 回だけで、アレイ内のいずれのドライブを使用しても構いません。

シングルのディスクドライブに比べて、RAID 1 アレイは次のような利点があります。

  • 冗長性が向上されている — アレイ内のドライブが 1 台フェールしても、データにアクセスすることができます。

  • 読み込み性能が向上されている — 両方のドライブが動作していれば、読み込みが均等に分配されてドライブ毎の I/O 負荷を軽減します。

シングルのディスクドライブと比べて、RAID 1 アレイには次ぎのような欠点があります。

  • 最大アレイサイズがシングルドライブの最大サイズまでに限定される。

  • 書き込み性能が低下する — 両方のドライブは最新の状態に保たれる必要があるため、すべての書き込み I/O が両方のドライブで行われなければならず、相対的なアレイへのデータ書き込み処理の性能を低下させます。

  • コスト的な効率性が失われる — ドライブを 1 台分冗長専用にするため、RAID 1 アレイのコストは少なくともシングルドライブの 2 倍になります。

ヒントヒント
 

各種のRAID レベルすべてを明確に覚えられないようであれば、RAID 1 の冗長性は 100% と覚えておいてください。

5.6.2.1.1.3. RAID 5

RAID 5 は、RAID 0 と RAID 1 それぞれの欠点を最小限に抑えながら両方の利点を複合させようとした方法です。

RAID 0 同様に、RAID 5 アレイは複数のディスクドライブから構成され、チャンクに分割されます。これにより RAID 5 アレイはシングルドライブより大きなサイズになります。RAID 1 アレイと同様に、RAID 5 アレイは一部のディスク領域を冗長形態で使用し信頼性を向上させます。

しかし、RAID 5 の動作方法は RAID 0 と RAID 1 とも異なります。

RAID 5 アレイは少なくとも全く同じサイズのディスクドライブ 3 台で構成する必要があります (これ以上の台数を使用しても構いません)。各ドライブはチャンクに分割され、データはそのチャンクに順番に書き込まれます。しかし、すべてのチャンクが RAID 0 のようにデータ記憶専用ではありません。ディスクドライブが n 台のアレイでは、n 番目のチャンクがパリティ専用になります。

パリティを含んだチャンクはアレイ内で障害を起こしたドライブのデータを復元することができるようにします。チャンクにあるパリティxはアレイ内の他のドライブすべてに保存された各チャンク x からデータを数学的に組み合わせて算出されます。チャンク内のデータが更新されると、該当するパリティチャンクも算出し直して更新される必要があります。

また、アレイにデータが書き込まれるたび、少なくともデータを格納しているドライブとパリティチャンクを含んでいるドライブ、2 台のドライブに書き込まれます。

ひとつ留意しておく重要な点として、パリティチャンクがアレイ内の特定ドライブに集中することはありません。パリティチャンクはすべてのドライブに均等に分散します。特定のドライブがパリティ以外は格納しないようにすることはできても(実際、この構成は RAID レベル 4 と呼ばれています)、データがアレイに書き込まれるときに行なわれるパリティの定期的な更新は、パリティドライブが性能上のボトルネックになり得る可能性があるということになります。パリティ情報をアレイ全体に渡って均等に分散させることで、このボトルネックを軽減します。

しかし、アレイの全体的な記憶容量に対するパリティの影響に留意してください。アレイ内のデバイスすべてに均等にパリティ情報が分散されても、利用できる記憶容量は 1 ドライブサイズ分減ります。

シングルのドライブと比較して、RAID 5 アレイには次のような利点があります。

  • 冗長性が向上されている — アレイ内のドライブの 1 台が障害を起こした場合、アレイが継続して使用できる状態を保ったまま、パリティ情報で失われたデータチャンクを再生することができます [2]

  • 読み込みのパフォーマンスが向上されている — RAID 0 と同様の方法をとるため、データーがアレイ内のドライブ間で分割され、読み込み I/O 動作がすべてのドライブ間で均等に分散します。

  • コスト面での効率性がかなり向上される — n 台のドライブの RAID 5 アレイの場合、使用できる記憶容量の総計の 1/n が冗長化に使用されます。

シングルのドライブと比較して、RAID 5 アレイには次のような欠点があります。

  • 書き込みのパフォーマンスが低下する — アレイへの各書き込みが少なくとも物理的なドライブに 2 回書き込まれることになるため(データの書き込みとパリティの書き込み)、書き込みのパフォーマンスはシングルのドライブより低下します[3]

5.6.2.1.1.4. Nested (入れ子構造) RAID レベル

各種 RAID レベルについての説明からわかるように、各レベルには特定の長所と短所があります。RAID ベースのストレージが配備されはじめてから、異なる RAID レベルをどうにかして組み合わせて従来のレベルの短所を回避しすべての長所を活かすアレイを構築できないものだろうかと考えられ始めるようになるのに長い時間はかかりませんでした。

例えば、RAID 0 アレイ内のディスクドライブ自身が RAID 1 アレイだったら? という考え方でいくと、RAID 0 の高速性を得ながら RAID 1 の信頼性を確保できることになります。

実際、これは実現可能です。次に最も一般的な nested RAID レベルを示します。

  • RAID 1+0

  • RAID 5+0

  • RAID 5+1

nested RAID は特殊化した環境でよく使用されるため、ここでは詳しく説明しません。ただし、nested RAID について考慮する際に留意しておくべき点が 2 つあります。

  • 順序が重要 — RAID レベルが nested する順序が信頼性に大きく関わります。つまり、RAID 1+0 と RAID 0+1 は同じではないということです。

  • コスト高になる — nested RAID 構成全般に渡る一般的な欠点があるとすれば、コスト的なことひとつあげられます。例えば、最小限の RAID 5+1 アレイはディスクドライブ 6 台から構成されます(大きなアレイになるほどドライブの数も増えます)。

これまで RAID を支える概念について説明してきました。今度は RAID の組み方について見ていきます。

5.6.2.1.2. RAID の構築

前のセクションで説明しているように、RAID には各ドライブの通常ディスク I/O 処理以上の"知能"が必要になります。最低限でも次の動作は行われなければなりません。

  • アレイ内の各ディスクへの受信 I/O 要求を分割する

  • RAID 5 の場合、パリティを算出してアレイ内の該当ドライブに書き込む

  • アレイ内の各ディスクをそれぞれ監視し、いずれかのディスクに障害が発生したら適切な処理を行う

  • アレイ内ディスクの 1 台が交換または修復されたら、そのディスクの再構築を管理する

  • 管理者がアレイを管理できる手段を提供する(ドライブの削除、追加、再構築した RAID を初期化、停止するなど)

このような動作を行うために使用できる方法は主に 2 通りあります。次のセクションで詳しく説明していきます。

5.6.2.1.2.1. ハードウェア RAID

ハードウェア RAID の構築は通常、特殊なディスクコントローラカードの形態をとります。このカードは RAID 関連のすべての機能を行い、接続しているアレイ内の各ドライブを直接制御します。適切なドライバを使用すると、ハードウェア RAID で管理されるアレイはホストオペレーティングシステムに対して普通のディスクドライブのように表されます。

RAID コントローラカードのほとんどは SCSI ドライブで動作しますが、ATA ベースの RAID コントローラもあります。いずれの場合も、管理インターフェースは通常、次のいずれかになります。

  • ホストオペレーティングシステムでアプリケーションとして実行する特殊なユーティリティプログラム、コントロールカードにソフトウェアインターフェースを表示

  • シリアルポートを使ったオンボードインターフェース、ターミナルエミュレータを使ってアクセス

  • BIOS 系インターフェース、システムのパワーアップテスト中にのみアクセス可能

複数の管理インターフェースを持つ RAID コントローラがあります。オペレーティングシステムの稼働中管理機能が使用可能になるため、ソフトウェアインターフェースが最も柔軟性に優れています。しかし、RAID コントローラからオペレーティングシステムを起動する場合、オペレーティングシステムの稼働を必要としないインターフェースが必要となります。

さまざまな RAID コントローラカードが販売されているため、ここではすべてを詳しく見ていくことができません。詳細についてはメーカーのガイドを参照してください。

5.6.2.1.2.2. ソフトウェア RAID

ソフトウェア RAID は カーネルとして - または特定のオペレーティングシステムにはドライバレベルのソフトウェアとして RAID 実装されます。ハードウェアサポートの点から柔軟性に優れています — オペレーティングシステムがハードウェアとしてサポートしている限り、RAID アレイの設定、配備が可能です。高価で特殊な RAID ハードウェアに代わりソフトウェア RAID は RAID の配備に要する経費を大幅に削減することができます。

ソフトウェア RAID パリティ算出に使用できる過剰な CPU 処理能力が、RAID コントローラカードで表示される処理能力をはるかに越えることがよくあります。したがって、ソフトウェア RAID 実装のなかにはハードウェア RAID 実装に比べ高性能な機能を持つものがあります。

しかし、ソフトウェア RAID にはハードウェア RAID には見られない制限があります。ソフトウェア RAID アレイからのブートサポートが最も考慮すべき点のひとつです。ほとんどの場合、コンピュータの BIOS が RAID 認識ではないためブートに使用できるのは RAID 1 のみになります。RAID 1 アレイからのシングルドライブは RAID 以外のブートデバイスを識別できないので、BIOS がブートプロセスを正常に起動できます。オペレーティングシステムはシステムの制御権を獲得するとソフトウェア RAID 動作に引き継ぎます。

5.6.3. 論理ボリューム管理

RAID の他に論理ボリューム管理 (LVM)という 高度なストレージ技術があります。LVM では物理的な大容量ストレージデバイスを異なるストレージ設定が組まれている低レベルの構築ブロックとして扱うことができます。詳細な機能はその実装により異なりますが、物理的なストレージのグループ化、論理ボリュームのサイズ変更、データのマイグレーションなどが行えます。

5.6.3.1. 物理的なストレージのグループ化

この機能に対する名称は異なる場合がありますが、物理的なストレージのグループ化はすべての LVM の基礎となります。名前が示す通り、複数の物理的な大容量デバイスを 1 つまたは複数の論理的な大容量ストレージデバイスに作成する方法でグループ化します。論理的な大容量ストレージデバイス(または論理ボリューム)は基礎をなす 1 台の物理的な大容量ストレージデバイス単体より大きな容量となるストレージにすることができます。

例えば、2 台の 100GB ドライブを用いて 200GB の論理ボリュームを作成できます。あるいは、150GB と 50GB の論理ボリュームを作成することもできます。総計容量と同等またはそれ以下の容量ならどんな組合せの論理ボリュームも作成可能です(この例では 200GB)。企業のニーズに合わせた組合せができます。

システム管理者はすべてのストレージを 1 つのプールの一部として扱い、あらゆる容量で使用することができるようになります。さらに、将来、ドライブをこのプールに追加することもできるため、ストレージに対するユーザーの要求を簡単に満足させることができるようになります。

5.6.3.2. 論理ボリュームのサイズ変更

システム管理者が LVM に求める機能は必要な時にストレージを直接管理できる機能です。LVM 設定をしていないシステムでスペースが不足した場合 — せいぜい — 満杯になったデバイスから使用可能領域のあるデバイスにファイルを移動させるしかありません。実際にはシステムの大容量ストレージを再構築するということになることがよくあります。したがって、作業は通常の営業時間外に行われなければなりません。

しかし、LVM なら簡単に論理ボリュームのサイズを増やすことができます。200GB のストレージプールに 150GB の論理ボリュームと 残り 50GB の予備を確保していると仮定してみます。150GB の論理ボリュームが満杯になった場合、LVM では物理的な再構築をせずにそのサイズを(例えば 10GB)大きくすることができます。オペレーティングシステムの環境により、動的に行うことができる場合もあれば実際にサイズ変更するために幾分ダウンタイムが必要なこともあります。

5.6.3.3. データのマイグレーション

経験の多いシステム管理者ならここまでの LVM 機能に感銘を受けるでしょう。しかし、また次のような疑問も湧いてきます。

論理ボリュームを構成するドライブのうち 1 台に障害が発生し始めたらどうなるのだろうか?

幸いなことにほとんどの LVM 実装には特定の物理ドライブからデータをマイグレーションする機能が備わっています。これを行うには、障害を起こしているドライブの損失データを吸収するのに十分な予備容量が確保されていなければなりません。データのマイグレーションが完了したら、障害が発生しているドライブを交換しストレージプールに追加し直すことができます。

5.6.3.4. LVM があるのになぜ RAID を使用するのでしょう?

LVM は RAID に似た機能を持ち(例えば、障害が発生したドライブを動的に交換できる)、中にはほとんどの RAID 実装では補えない機能を備えたものもある(中心となるストレージプールに動的にストレージを追加できるなど)ことを考えると、RAID はそれほど重要ではなくなってきたのではないかと多くの人が考えます。

RAID と LVM は相補的な技術であり、一緒に使用することができ (nested RAID レベルに似た方法)、両方の利点を活かすことができます。

注記

[1]

RAID の研究が始まったばかりの頃は Redundant Array of Inexpensive(安価なという意) Disks の略でしたが、RAID が取って代わろうとしていた"スタンドアローン"のディスクが年月と共に廉価になり、値段で比べるような名前は意味がなくなってしまいました。

[2]

失われた情報を再生するために発生するオーバーヘッドのため、1 台のドライブが使用できない状態で動作している間I/O のパフォーマンスは低下します。

[3]

また、各書き込みに要するパリティの算出により影響もあります。しかし、特定の RAID 5 構成により(特に、システム内でパリティの算出が行われる)、かなり影響が大きい場合からほとんど感じられないほどまでその影響度は異なります。