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