この章では、 Solaris ボリュームマネージャのミラーとサブミラーに関する基本的な概念について説明します。関連する作業については、第 10 章「RAID 1 (ミラー) ボリューム (作業)」を参照してください。
この章では、以下の内容について説明します。
RAID 1 ボリューム (またはミラー) とは、同じデータのコピーを複数の RAID 0 (ストライプ方式または連結方式) ボリュームで保持しているボリュームのことです。ミラー化するためには、より多くのディスク容量が必要です。少なくとも、ミラー化するデータ量の 2 倍のディスク容量が必要になります。また、ミラー化ではデータがすべてのサブミラーに書き込まれるため、書き込み要求の処理時間が長くなります。
構成したミラーは、物理スライスと同じように使用できます。
既存のファイルシステムを含め、どのようなファイルシステムでもミラー化できます。また、ミラーは、データベースなど、どのようなアプリケーションにも使用できます。
データの安全性と可用性を確保するためには、Solaris ボリュームマネージャのホットスペア機能とミラーを併用します。ホットスペアについては、第 15 章「ホットスペア集合 (概要)」と第 16 章「ホットスペア集合 (作業)」を参照してください。
ミラー化された RAID 0 ボリュームを サブミラーと呼びます。 ミラーは、1 つまたは複数の RAID 0 ボリューム (ストライプまたは連結) から構成されます。
ミラーには最大 3 つのサブミラーを使用できますが、実際には 2 面ミラーで十分です。3 つめのサブミラーを構成すると、オンラインでバックアップをとることができます。この場合、バックアップのために 1 つのサブミラーがオフラインになっていても、データの冗長性は失われません。
サブミラーを「オフライン」にすると、そのサブミラーに対する読み取りと、書き込みは停止されます。この時点で、このサブミラーへのアクセスが可能になり、バックアップを実行できます。ただし、オフライン状態のサブミラーは読み取り専用になります。サブミラーがオフライン状態の間、Solaris ボリュームマネージャはミラーに対するすべての書き込みを追跡管理します。サブミラーがオンライン状態に戻ると、サブミラーがオフラインの間に書き込まれた部分 (再同期領域) だけが再同期されます。また、サブミラーをオフラインにすると、エラーが発生した物理デバイスの問題を追跡したり修復したりすることが可能になります。
サブミラーは、いつでもミラーに接続したり、ミラーから切断することができます。ただし、少なくとも 1 つのサブミラーが常時、接続されていなければなりません。
通常は、サブミラーが 1 つだけのミラーを作成し、後で 2 つめのサブミラーを追加します。
図 9-1 に、2 つのボリューム (サブミラー) d20 と d21 から構成されるミラー d2 の例を示します。
Solaris ボリュームマネージャソフトウェアは、データの複製を複数の物理ディスク上に作成し、1 つの仮想ディスクとしてアプリケーションに提供します。ディスクへの書き込みは常に複製されますが、ディスクからの読み取りはミラーを構成するいずれかのサブミラーだけから行われます。ミラー d2 の容量は、もっとも小さいサブミラーのサイズと同じになります (サブミラーのサイズが異なる場合)。
Solaris ボリュームマネージャは、RAID 1+0 (ミラーをストライプ化した方式) と RAID 0+1 (ストライプをミラー化した方式) の両方の冗長性をサポートします。Solaris ボリュームマネージャインタフェースは、すべての RAID 1 デバイスを RAID 0+1 として扱いますが、可能であれば、ボリュームを構成するコンポーネントやミラーを個別に認識します。
Solaris ボリュームマネージャは、RAID 1+0 機能を常に提供できるわけではありません。しかし、すべてのサブミラーが同じで、ディスクスライス (ソフトパーティションではない) から構成されている、最適化された環境では、RAID 1+0 も提供します。
たとえば、純粋な RAID 0+1 実装で、ストライプ化された 3 つのスライスからなる 2 面ミラーの場合、1 つのスライスに障害が発生すると、ミラーの片面が使用不能になる場合があります。また、ホットスペアが使用されていない場合、2 番目のスライスに障害が発生すると、このミラーはおそらく使用不能になります。Solaris ボリュームマネージャを使用した場合、最大 3 つのスライスに障害が発生しても、ミラーは動作を継続できます。これは、ストライプ化された 3 つのスライスがそれぞれ、ミラーのもう一方の側の対応するスライスに対してミラー化されているためです。
次の例を見てください。
ミラー d1 は 2 つのサブミラーから構成され、各サブミラーは、構成と飛び越し値が同じ 3 つの物理ディスクから構成されています。この場合、3 つのディスク A、B、F に障害が発生しても、ミラーの論理ブロック域全体が少なくとも 1 つのディスクによって確保されているため、ミラーは使用不能になりません。
しかし、ディスク A と D に障害が発生すると、ミラーのデータの一部がどのディスク上にも存在しないため、その部分の論理ブロックにはアクセスできなくなります。
複数のスライスの障害によってミラーの一部のデータにアクセスできなくなった場合でも、データがまだ利用可能なミラー部分にはアクセスできます。この場合、ミラーは、不良ブロックを含む単一ディスクのように機能します。損傷部分は使用不能になりますが、残りの部分は使用可能です。
ミラーは、データの可用性を最大限に高めます。ただし、ミラーを使用すると、ミラー化するデータ量の 2 倍のスライス (ディスク) が必要になります。
Solaris ボリュームマネージャでは、3 面までのミラー (3 つのサブミラーからなるミラー) を作成できます。しかし、通常、ほとんどのアプリケーションでは、2 面ミラーによって十分なデータ冗長性が得られます。また、2 面ミラーの方が、3 面ミラーよりもディスクドライブのコストが低くなります。
ミラー化するデータがすでにある場合は、まず 一 次サブミラーを作成してから、新しいサブミラーを追加します。これによって、後で、次サブミラーに格納されているデータを使って新しいサブミラーを更新することができます。
ミラー化する既存のデータがなく、すべてのサブミラーのデータが破壊されてしまってもかまわない場合は、1 つのコマンドですべてのサブミラーを作成すれば、時間の節約になります。
サブミラーのスライスは、異なるディスクとコントローラに配置します。同じミラーの 2 つまたはそれ以上のサブミラーのスライスを同じディスクに置くと、データの保護機能が大幅に低下します。同じように、サブミラーは、別個のコントローラに配置します。これは、コントローラやそのケーブルでは、ディスクよりも障害が発生する確率が高いためです。これにより、ミラーの性能も向上します。
1 つのミラーでは、同じタイプのディスクとコントローラを使用します。特に、古いタイプの SCSI 記憶装置では、ディスクやコントローラの性能がモデルやブランドによって大幅に異なることがあります。性能レベルが異なるデバイスが同じミラーに混在していると、性能が大幅に低下することがあります。
同じサイズのサブミラーを使用します。サイズが異なるサブミラーを使用すると、ディスク領域がむだになります。
直接マウントできるのはミラーデバイスだけです。オフライン状態のサブミラーを読み取り専用でマウントする場合を除き、サブミラーを直接マウントしてはなりません。また、サブミラーの一部であるスライスをマウントしてはなりません。データが壊され、システムが異常を起こすおそれがあります。
ミラー化によって読み取り性能が向上することはありますが、書き込み性能は常に低下します。ミラー化によって読み取り性能が向上するのは、スレッド化された入出力や非同期の入出力の場合だけです。シングルスレッドによるボリュームの読み取りでは、性能の向上は得られません。
ミラーの読み取りオプションの設定を変えてみると、性能が向上することがあります。たとえば、デフォルトの読み取りモードでは、各ディスクが巡回的に 1 つずつ読み取られます。このモードがデフォルトになっている理由は、UFS マルチユーザー、マルチプロセスアクティビティーでは、通常、これがもっとも効率的であるためです。
場合によっては、geometric 読み取りオプションを使用すると、ヘッドの移動とアクセス時間が最小になり、性能が向上することがあります。このオプションがもっとも効果的に機能するのは、各ディスクにスライスが 1 つしかない場合、同時に 1 つのプロセスだけがスライス/ファイルシステムを使用する場合、入出力パターンに高い順次性があるか、すべてのアクセスが読み取りの場合だけです。
ミラーオプションの変更方法については、「RAID 1 ボリュームオプションを変更するには」を参照してください。
swap -l コマンドを使ってすべての swap デバイスを確認します。swap として指定されたスライスは、他のスライスとは別個にミラー化しなければなりません。
ミラーには、構成が同じサブミラーだけを使用します。たとえば、ディスクラベルのないサブミラーでミラーを作成すると、ラベルがあるサブミラーをミラーに追加できなくなります。
ミラーの性能を最適化するには、次のオプションを使用します。
ミラーからの読み取りポリシー
ミラーへの書き込みポリシー
ミラーを再同期する順序 (パス番号)
ミラーオプションは、ミラーを最初に作成するときでも、ミラーを設定した後でも設定できます。これらのオプションの変更に関連する作業については、「RAID 1 ボリュームオプションを変更するには」を参照してください。
Solaris ボリュームマネージャでは、ミラーに対してさまざまな読み取りおよび書き込みポリシーを設定できます。構成に合わせて、読み取りおよび書き込みポリシーを適切に設定すると、性能が向上することがあります。
表 9-1 ミラーの読み取りポリシー
読み取りポリシー |
説明 |
---|---|
ラウンドロビン (デフォルト) |
すべてのサブミラーの負荷を均一にします。ミラーに属するすべてのサブミラーの読み取りは、ラウンドロビン方式で (1 つずつ順次に) 行われます。 |
ジオメトリック |
読み取りを論理的なディスクブロックアドレスに基づいて個々のサブミラーに分割します。たとえば、2 面サブミラーの場合は、ミラーのディスク領域が、論理アドレスに基づいて同じサイズの 2 つの領域に分割されます。一方のサブミラーの読み取りは論理的な領域の半分に限定され、他方のサブミラーの読み取りは同じ領域の残り半分に限定されます。 ジトメトリック読み取りポリシーでは、読み取りに必要なシーク時間が減少します。このモードによって得られる性能の向上は、システムの入出力負荷やアプリケーションのアクセスパターンによって異なります。 |
先頭のデバイスから読み取る |
すべての読み取りを最初のサブミラーに送る。このポリシーは、先頭のサブミラーを構成するデバイスが 2 番目のサブミラーのデバイスよりも高速な場合にのみ使用します。 |
表 9-2 ミラーの書き込みポリシー
書き込みポリシー |
説明 |
---|---|
並列 (デフォルト) |
ミラーへの書き込みは複製され、すべてのサブミラーに対して同時に実行される。 |
順次 |
サブミラーへの書き込みは順次実行される (つまり、最初のサブミラーへの書き込みが終わってから、次のサブミラーへの書き込みが始まる)。順次オプションでは、1 つのサブミラーへの書き込みが終わらないと、次のサブミラーへの書き込みは開始されない。この順次オプションは、電源の障害などによってサブミラーが読み取り不能になるのを防止するために使用する。 |
RAID 1 ボリューム (ミラー) の再同期とは、サブミラーに障害が発生した場合、システムがクラッシュした場合、サブミラーをオフラインにしてから、オンラインに戻した場合、あるいは、新しいサブミラーを追加した場合に、サブミラーのデータを他のサブミラーにコピーする処理のことです。
再同期中も、ミラーの読み書きは実行できます。
ミラーの再同期は、すべてのサブミラーに同じデータを書き込むことによって (書き込みが進行中のデータは除く)、ミラーの有効性を保証します。
ミラーの再同期は必須の処理であり、省略することはできません。ただし、ミラーの再同期を手動で行う必要はありません。この処理は自動的に実行されます。
ミラーに新しいサブミラーを接続 (追加) すると、別のサブミラーのすべてのデータが新しいサブミラーに自動的に書き込まれます。ミラーの再同期が完了すると、新しいサブミラーは読み取り可能になります。サブミラーは、明示的に切り離されるまでミラーに接続されたままになります。
再同期の実行中にシステムがクラッシュした場合は、システムが再起動してから、再同期が再開されます。
Solaris ボリュームマネージャは、システム障害後の再起動時や、オフラインのサブミラーがオンラインに戻ったときに、最適化されたミラーの再同期を実行します。メタディスクドライバはすべてのサブミラー領域を管理しているため、どのサブミラー領域が障害によって同期の取れない状態になっているかを判定できます。最適化された再同期は、同期が取れていない領域に対してのみ行われます。ユーザーは、再起動時にミラーを再同期する順序を指定できます。また、サブミラーのパス番号を 0 (ゼロ) に設定することによって、ミラーの再同期を省略することができます。 (詳細は、「パス番号」を参照してください。)
パス番号 0 は、読み取り専用としてマウントされているミラーに対してのみ設定します。
サブミラーを構成するスライスを新しいものに交換すると、Solaris ボリュームマネージャはデータの部分的な再同期を実行します。Solaris ボリュームマネージャは、別のサブミラーの有効なスライスから新しいスライスにデータをコピーします。
パス番号 (0 から 9 の数字) は、システムの再起動時にミラーを再同期する順序を決定します。デフォルトのパス番号は 1 です。 再同期は、パス番号の小さいミラーから行われます。0 を指定すると、ミラーの再同期はスキップされます。パス番号 0 は、読み取り専用としてマウントされているミラーに対してのみ設定します。同じパス番号をもつミラーの再同期は同時に実行されます。
ミラー化の解除 - Solaris 管理コンソール内の「拡張ディスク」では、ルート (/) や、/opt、/usr、swap、あるいは、システムが動作している間はマウント解除できないファイルシステムのミラー化を解除することはできません。これらのファイルシステムに対しては、コマンド行ユーティリティを使用してください。
接続 - サービスを中断せずにサブミラーをミラーに接続できます。サブミラーを接続することによって、2 面と 3 面のミラーを作成できます。
切断とオフライン - サブミラーをオフラインにすると、そのサブミラーに対する読み取りや書き込みを禁止できますが、サブミラーとミラーの論理的な関連付けは維持されます。サブミラーがオフラインになっている間、Solaris ボリュームマネージャはミラーに対するすべての書き込みを追跡管理し、サブミラーがオンラインに戻されたときにサブミラーに書き込みを行います。Solaris ボリュームマネージャは、最適化された再同期を行うことによって、サブミラー全体ではなく、変更されたデータの再同期だけを行います。 一方、サブミラーを切断すると、サブミラーとミラーの論理的な関連付けも断ち切られます。一般には、保守を行うときはサブミラーをオフラインにし、取り外すときはサブミラーを切断します。
ミラーを作成する前に、そのミラーに使用する RAID 0 (ストライプ方式または連結方式) ボリュームを作成する必要があります。
ミラーは、ルート (/)、 swap、/usr を始めとするファイルシステムや、データベースなどのアプリケーションに使用できます。
既存のファイルシステムのミラーを作成する場合は、そのファイルシステムが最初のサブミラーに含まれていなければなりません。
ミラーを作成するときは、最初に 1 面ミラーを作成し、その後で 2 番目のサブミラーを接続します。これにより、再同期が開始され、データが破壊されることはありません。
1 面のミラーを作成しておけば、後でそれを 2 面または 3 面のミラーにすることができます。
3 面のミラーまで作成できますが、通常、ほとんどのアプリケーションでは、2 面ミラーによって十分なデータ冗長性が得られます。また、2 面の方が 3 面ミラーよりもディスクドライブのコストが低くなります。3 面ミラーでは、1 つのサブミラーをオフラインにしてバックアップを実行するときも、2 面ミラーでデータの冗長性を確保することができます。
サブミラーには同じサイズのコンポーネントを使用します。コンポーネントのサイズが異なっていると、ミラーにむだな領域が生じます。
ミラーを作成する前に状態データベースの複製を追加しておくと、ミラーの性能が向上することがあります。一般的な指針として、ミラーを追加するたびに 2 つの状態データベースの複製をシステムに追加する必要があります。Solaris ボリュームマネージャは、追加されたこれらの複製に、最適化された再同期を実行する際に使用するダーティリージョンログ (DRL) を格納します。競合を避けるために十分な数の複製を作成することにより、あるいは、ミラーと同じディスクまたはコントローラ上にある複製を使用することによって、全体的な性能を向上できます。
ミラーのパス番号と読み書きポリシーは、変更できます。
ミラーオプションは、ミラーを動作させたまま、変更できます。
ルート (/)、/usr、および swap (いわゆる「起動」ファイルシステム) 用のミラーを持つシステムを、boot -s コマンドを使ってシングルユーザーモードで起動した場合、metastat コマンドを実行すると、これらのミラーと、場合によってはシステム上のすべてのミラーが「Needing Maintenance」状態になっていることが示されます。また、これらのスライスに書き込みがあった場合には、ミラーのダーティリージョンが増加していることが示されます。
これは危険な状況に見えますが、心配する必要はありません。metasync -r コマンドは通常、起動時にミラーの再同期のために実行されますが、 システムがシングルユーザーモードで起動された場合には実行を中断されます。システムを再起動すると、metasync -r コマンドが実行され、すべてのミラーの再同期が取られます。
これが心配な場合は、手動で metasync -r コマンドを実行してください。
RAID 1 ボリュームは、冗長ボリュームを構築するための手段です。これによって、RAID 1 ボリュームを構成する RAID 0 ボリュームのどれかに部分的または完全な障害が発生した場合でも、データが失われることはなく、ファイルシステムへのアクセスが中断されることもありません。第 4 章「Solaris ボリュームマネージャの構成と使用」のサンプルシステムに基づく構成例は、RAID 1 ボリュームによって冗長性がいかに達成されるかを示しています。
「ストライプ方式の飛び越し値」で説明するように、サンプルシステムには 2 つの RAID 0 ボリュームがあります。それぞれのボリュームはおよそ 27G バイトの容量を持ち、3 つのディスクにまたがっています。RAID 1 ボリュームを作成してこれら 2 つの RAID 0 ボリュームをミラー化すると、完全に冗長化された記憶領域によって、障害からの回復が可能なデータ記憶域を構築できます。
この RAID 1 ボリュームでは、どちらのディスクコントローラに障害が発生しても、ボリュームへのアクセスは中断されません。さらに、最大 3 つのディスクに障害が発生しても、アクセスが中断されない場合もあります。
アクセスの中断を引き起こす可能性がある問題に対してさらに保護が必要な場合は、ホットスペアを使用します。これについては、第 15 章「ホットスペア集合 (概要)」 (特に 「ホットスペアの仕組み」) を参照してください。