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