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