この章では、一般的な記憶装置管理の概念について簡単に紹介します。
この章では、次の内容について説明します。
記憶装置をどのように管理するかによって、システム上のアクティブデータが格納されるデバイスの制御方法が決まります。ハードウェア障害やソフトウェア障害などの予期せぬ事態が発生したあとでも、アクティブなデータを以前と同じ状態で利用できるようにする必要があります。
データを格納するには、さまざまなデバイスを利用できます。記憶装置の要件にもっとも適したデバイスは、主に次の 3 つの要素を考慮して決定します。
性能
可用性
コスト
Solaris ボリュームマネージャを使用すると、性能、可用性、コストのバランスを管理できます。つまり、Solaris ボリュームマネージャを使用することで、多くの場合に諸条件を考慮する必要性が減ります。
Solaris ボリュームマネージャは、Solaris オペレーティングシステムが稼働するシステム上でサポートされているすべての記憶装置に対して使用できます。
RAID は Redundant Array of Inexpensive (または Independent) Disks の略語です。RAIDとは、ユーザーからは 1 つの大きなディスクドライブに見えるディスク群 (アレイまたはボリュームと呼ばれる) を意味します。構成に応じて、このアレイは信頼性、応答時間、または記憶容量の向上をもたらします。
技術的には、6 つの RAID レベル (0 から 5) があります。各レベルは、データの冗長性を確保しながらデータの分散を図る方法に対応しています。(RAID レベル 0 は、データの冗長性を提供しませんが、通常は RAID の分類に含まれます。RAID レベル 0 は、現在使用されているほとんどの RAID 構成の基礎になっています。)RAID レベル 2、3、4 をサポートしている記憶装置環境はほとんど存在しないため、それらの環境の説明は省略します。
Solaris ボリュームマネージャは、次の RAID レベルをサポートします。
RAID レベル 0 – ストライプと連結は冗長性を備えていませんが、通常、これらのボリュームは RAID-0 と呼ばれています。基本的に、データは、複数の物理ディスクに交互かつ均一に割り当てられる比較的小さな同じ大きさの領域に分散されます。ドライブの 1 つに障害が発生しただけで、データは失われます。RAID-0 では高いデータ転送速度や入出力スループットが得られますが、信頼性や可用性は単一ディスクよりも劣ります。
RAID レベル 1 – ミラー化では、同じ容量の複数のディスクにデータとそのコピー (ミラー) を別々に格納します。データは、2 つ以上の物理ディスクに複製 (またはミラー化) されます。両方のドライブから同時にデータを読み取ることができる、つまり、どちらのドライブも要求に応えることができるため、性能が向上します。1 つの物理ディスクに障害が発生しても、性能の低下やデータの損失なしにミラーを引き続き使用できます。
Solaris ボリュームマネージャは、使用するボリュームによっては、RAID-0+1 ミラー化と (透過的に) RAID-1+0 ミラー化の両方をサポートします。詳細については、「RAID-1+0 と RAID-0+1 の提供」を参照してください。
RAID レベル 5 – RAID-5 は、ストライプ化によってアレイ内の複数のディスクにデータを分散します。また RAID-5 では、パリティー情報を格納することによって、データの冗長性を確保します。RAID-5 ボリュームは、使用している装置で障害が発生しても、耐えることができます。RAID-5 をホットスペアと組み合わせて使用すると、ボリュームは複数の障害に耐えられるようになります。RAID-5 ボリュームは、障害の発生した装置で動作させると、性能が著しく低下します。
RAID-5 モデルの各デバイスには、パリティーストライプを含む 1 つの領域と、データを含むそれ以外の領域があります。パリティーはアレイ内のすべてのディスクに分散されるため、書き込み時間が短縮されます。書き込み時間が短縮されるのは、パリティー専用ディスクがデータを受け入れることができるようになるまで待機する必要がないためです。
記憶装置管理の構成を計画するときには、どのような構成であっても、性能、可用性、ハードウェアコストの間にトレードオフがあることを念頭に置いてください。最適な構成を見つけるためには、さまざまな要素の組み合わせを試してみる必要があります。
この節では、次のタイプのボリュームを使用するための指針を示します。
RAID-0 (連結方式とストライプ方式) ボリューム
RAID-1 (ミラー) ボリューム
RAID-5 ボリューム
ソフトパーティション
Solaris ボリュームマネージャのボリューム上に構築されるファイルシステム
特定の記憶方式を実装する前に、どのような記憶デバイスを使用するかを決める必要があります。この一連の指針では、選択が容易になるように、各種の記憶装置を比較します。Solaris ボリュームマネージャで実装する場合、記憶装置のタイプごとに適用される指針がほかにもあります。詳細は、個々のボリュームタイプに関する章を参照してください。
下記の記憶装置のタイプは、排他的ではありません。つまり、これらのボリュームを組み合わせて使用することによって、複数の目的を達成することができます。たとえば、まず、RAID-1 ボリュームを作成して冗長性を確保します。次に、RAID-1 ボリューム上にソフトパーティションを作成すると、独立したファイルシステムの数を増やすことができます。
次の表で、記憶装置のタイプ別に使用できる機能を比較します。
表 2–1 記憶装置のタイプ別比較
要件 |
RAID-0 (連結) |
RAID-0 (ストライプ) |
RAID-1 (ミラー) |
RAID-5 |
ソフトパーティション |
---|---|---|---|---|---|
データの冗長性 |
不可 |
不可 |
可能 |
可能 |
不可 |
読み取り性能の改善 |
不可 |
可能 |
使用するデバイスによって異なる |
可能 |
不可 |
書き込み性能の改善 |
不可 |
可能 |
不可 |
不可 |
不可 |
デバイス当たり 8 個以上のスライスの作成 |
不可 |
不可 |
不可 |
不可 |
可能 |
使用可能な記憶装置の増加 |
可能 |
可能 |
不可 |
可能 |
不可 |
次の表に、RAID-1 と RAID-5 のボリュームについて、書き込み操作、ランダムな読み取り、ハードウェアコストのトレードオフの概略を示します。
表 2–2 冗長性の最適化
RAID-1 (ミラー) |
RAID-5 |
|
---|---|---|
書き込み操作 |
高速 |
低速 |
ランダム読み込み |
高速 |
低速 |
ハードウェアコスト |
高い |
少ない |
表の情報について簡単に説明します。
RAID-0 ボリューム (ストライプ方式および連結方式) とソフトパーティションは、データの冗長性を提供しません。
連結は、小規模なランダム入出力操作に適しています。
ストライプ化は、大規模な順次入出力操作や、ランダムな入出力操作に適しています。
読み取り- 変更- 書き込みという RAID-5 ボリュームの性質上、書き込みが 20 パーセントを超えるボリュームでは、RAID-5 を使用してはなりません。冗長性が必要な場合は、ミラー化を検討してください。
RAID-5 の書き込み性能は、ミラー化の書き込み性能よりも常に低くなります。ミラー化の書き込みは、書き込みを保護しない方式よりも常に低速です。
ソフトパーティションは、非常に大規模な記憶デバイスの管理に有効です。
Solaris ボリュームマネージャを使用して冗長性を備えたデバイスをサポートする方法については、これらの一般的な記憶方式のほかにも、「ホットスペア集合」を参照してください。
記憶装置の構成を決めるときは、次の性能に関する指針を検討してください。
一般に、もっとも高い性能が得られるのはストライプ化ですが、ストライプ化はデータの冗長性を提供しません。書き込みが多いアプリケーションでは、一般に、RAID-1 ボリュームの方が RAID-5 ボリュームよりも高い性能を提供します。
RAID-1 と RAID-5 ボリュームではデータの可用性は向上しますが、どちらのボリュームタイプでも、一般に書き込み操作の性能は低下します。ミラー化は、ランダムな読み取り性能を向上させます。
RAID-5 ボリュームのハードウェアコストは RAID-1 ボリュームよりも少なくなります。RAID-0 ボリュームでは、追加のハードウェアコストは発生しません。
ストライプと RAID-5 ボリュームではデータが複数のディスクドライブに分散されるため、入出力負荷が均一化されます。
もっともアクセス頻度の高いデータを特定し、そのデータに対するアクセス帯域幅をミラー化またはストライプ化によって拡張します。
性能監視機能や一般的なツール (iostat コマンドなど) を使って、もっともアクセス頻度の高いデータを特定します。そのデータに対するアクセス帯域幅を、ストライプ化、RAID-1 ボリューム、または RAID-5 ボリュームを使って拡張します。
ソフトパーティションのサイズを複数回変更すると、性能が低下することがあります。
書き込み操作の場合、RAID-5 ボリュームはストライプよりも性能が低くなります。これは、RAID-5 ボリュームのパリティーを計算および格納するために、複数の入出力操作が必要となるためです。
ランダム raw 入出力の読み取りの場合には、ストライプと RAID-5 ボリュームの性能は同等です。ストライプでも RAID-5 ボリュームでも、データは複数のディスクに分割されます。また、スライスに障害が発生した場合を除き、RAID-5 ボリュームのパリティー計算は、読み取り性能に影響を与える要因にはなりません。
ランダム raw 入出力の書き込みでは、ストライプの方が RAID-5 ボリュームよりも優れています。
Solaris ボリュームマネージャ固有の構成の指針については、「Solaris ボリュームマネージャ構成の指針」を参照してください。
作成しようとしている Solaris ボリュームマネージャのボリューム上で順次入出力とランダム入出力のどちらが多用されるのかわからない場合は、性能のチューニングに関する以下の手法を適用しないでください。実装が適切でないと、性能が低下することがあります。
以下に示す最適化のための手法では、RAID-0 ボリュームを最適化するものとします。通常は、RAID-0 ボリュームを最適化してからそのボリュームをミラー化して、最適な性能とデータの冗長性を同時に達成します。
データベースや汎用ファイルサーバーに使用されるランダム入出力環境では、すべてのディスクにおいて、入出力要求の応答にかかる時間が同じであることが望まれます。
たとえば、データベースアプリケーション用に 40G バイトの記憶領域があるとします。10G バイトのディスクスピンドルを 4 つ使ってストライプ化を行っている場合、入出力がランダムで、ボリューム間で均一に分散されていれば、各ディスクの使用率が均一になり、通常、性能は向上します。
ランダム入出力性能を最大化するためには、ディスクの使用率を 35 パーセント以下に抑えるようにします (iostat コマンドで調べることができる)。ディスクの使用率が定常的に 65 パーセントを超える場合には問題となります。90 パーセントを超える場合には重大な問題が発生します。このような問題を解決するためには、さらに多くのディスク (スピンドル) を追加して、新しい RAID-0 ボリュームを作成する必要があります。
既存のボリュームにディスクを追加するだけでは、性能を向上することはできません。適切なパラメータを設定して新しいボリュームを作成し、性能の最適化を図る必要があります。
データをすべてのディスクに分散する場合には、飛び越し値のサイズは重要ではありません。一般的な入出力要求よりも大きい飛び越し値を指定するだけで十分です。
テーブル全体のスキャンが頻繁に行われる DBMS サーバーまたはデータの非常に多い環境で使用される NFS サーバーなどの順次入出力環境で、構成の性能を最適化できます。順次入出力環境を活用するには、飛び越し値を通常の入出力要求のサイズより小さく設定してください。
たとえば、通常の入出力要求のサイズが 256K バイトで、ストライプが 4 スピンドルに渡っているとします。この場合の適切なストライプユニットサイズは
256K バイト / 4 = 64K バイトまたはそれ以下です。
この場合には、通常の入出力要求が複数のディスクスピンドルに分散されるため、順次入出力の帯域幅が増加します。
順次入出力環境では、シーク時間と回転待ち時間は実質的にゼロです。順次入出力の最適化では、ディスクの内部転送速度が最も重要な要素になります。
順次アプリケーションの通常の入出力サイズには大きい値を使用します (128K バイト以上、場合によっては 1M バイト以上)。ここでは、通常の入出力要求のサイズが 256K バイトで、ストライプが 4 ディスクスピンドルに渡っているとします。
256K バイト / 4 = 64K バイトであるため、
飛び越しサイズは 32–64K バイトにするにが適切です。