Solaris ボリュームマネージャの管理

第6章 状態データベース (概要)

この章では、状態データベースの複製の概念について説明します。 関連する作業の実行手順については、第7章「状態データベース (作業)」を参照してください。

この章では、次の内容について説明します。

Solaris ボリュームマネージャの状態データベースと状態データベースの複製について

Solaris ボリュームマネージャの状態データベースには、すべてのボリューム、ホットスペア、およびディスクセットの構成と状態に関する情報が格納されています。 Solaris ボリュームマネージャは、冗長性を確保し、システムクラッシュ時のデータの損失を防止するために、複数の状態データベースのコピー (複製) を保持しています (データクラッシュ時に損傷を受けるデータベースのコピーはせいぜい 1 つです)。

状態データベースの複製は、状態データベースのデータが常に有効であることを保証します。 状態データベースが更新されると、個々の状態データベースの複製も更新されます。 ただし、システムクラッシュによってすべての更新が失われるのを防ぐために、更新は一度に 1 つずつ行われます。

システムから 1 つの状態データベースの複製が失われると、Solaris ボリュームマネージャは、どの状態データベースの複製に有効なデータが格納されているかを判断する必要があります。 そのために、Solaris ボリュームマネージャは多数決アルゴリズムを使用します。 このアルゴリズムでは、過半数 (半数 + 1) の複製が使用可能であり、一致していれば、それらの複製を有効であるとみなします。 このアルゴリズムでは、ディスク構成を設定するときに、3 つ以上の状態データベースの複製を作成する必要があります。 3 つの状態データベースの複製のうち少なくとも 2 つが有効であれば、コンセンサスが得られたことになります。

起動時には、Solaris ボリュームマネージャは、損傷した状態データベースの複製を無視します。 場合によっては、損傷した複製を Solaris ボリュームマネージャが作成し直すこともありますが、 そうでなければ、そのような複製は管理者が修正するまで無視されます。 使用しているスライスに障害が発生して複製が損傷した場合は、スライスを修理または交換してから複製を有効にする必要があります。


注意  注意

ファブリック接続型記憶領域 (FAS)、SAN などの、システムに直接接続されていない記憶領域に、状態データベースの複製を格納しないでください。 複製は、起動プロセス中の従来の SCSI または IDE ドライブと同じ時点で使用できる記憶デバイスに格納しなければなりません。


すべての状態データベースの複製が失われると、理論的には、Solaris ボリュームマネージャのボリュームに格納されているすべてのデータが失われます。 そのため、十分な数の複製を別々のドライブとコントローラに分散させて作成し、最悪の事態を回避するようにします。 さらに、最初の Solaris ボリュームマネージャ構成情報とディスクパーティション情報を保存しておくのも良い方法です。

状態データベースの複製をシステムに追加する方法や失われた状態データベースの複製を回復する方法については、第7章「状態データベース (作業)」を参照してください。

状態データベースの複製は、RAID 1 ボリュームの再同期領域でも使用されます。 ミラーの数に比べて状態データベースの複製の数が少なすぎると、複製の入出力が RAID 1 ボリュームの性能に影響を与えることがあります。 ミラーの数が多い場合は、RAID 1 ボリューム当たり少なくとも 2 つの状態データベースの複製 (ディスクセット当たりの複製数の最大数は 50) を用意してください。

個々の状態データベースの複製には、デフォルトで 4M バイト (8192 ディスクセクタ) のディスク領域が使用されます。 複製は、次のデバイスに格納できます。


複製は、ルート (/)、 swap/usr スライス、およびファイルシステムやデータがすでに格納されているスライスには格納できません。 ただし、複製を格納した後で、同じスライスにボリュームやファイルシステムを置くことができます。



ファブリック接続型記憶領域 (FAS)、SAN などの、システムに直接接続されていない記憶領域に、複製を格納することはできません。 複製は、起動プロセス中の従来の SCSI または IDE ドライブと同じ時点で使用できる記憶デバイスに格納しなければなりません。


多数決アルゴリズムとは

複製されたデータベースには、どのデータベースが有効で正しいデータを格納しているかを判断しなければならないという特有の問題があります。 この問題を解決するために、Solaris ボリュームマネージャでは多数決アルゴリズムが使用されます。 このアルゴリズムでは、過半数の複製のコンセンサスが得られないかぎり、いずれの複製も有効なものとみなされません。 したがって、このアルゴリズムでは、始めから 3 つ以上の複製が存在していなければなりません。 3 つの複製のうち少なくとも 2 つが使用可能であれば、コンセンサスが得られたことになります。 一方、複製が 1 つしか存在していないときに、システムがクラッシュすると、すべてのボリューム構成データが失われてしまう可能性があります。

データを保護するために、Solaris ボリュームマネージャは、半数の複製が使用可能でなければ、動作しません。 これにより、データの損傷が防止されます。

多数決アルゴリズムによって、システムは多数決アルゴリズムに従って次のように動作します。

使用可能な状態データベースの複製の数が足りない場合は、シングルユーザーモードで起動し、不良または失われた複製を削除して、規定数を満たす有効な複製を確保する必要があります。 「状態データベースの複製数の不足から回復するには」を参照してください。


状態データベースの複製の数が奇数の場合は、その値を 2 で割り、端数を切り捨てた整数値に 1 を加えることによって過半数値が計算されます。 たとえば、複製が 7 つあるシステムの過半数値は 4 です (7 を 2 で割って端数を切り捨てると 3 になり、それに 1 を足すと 4 になる)。


状態データベースの複製を定義するための背景情報

通常は、状態データベースの複製を異なるスライス、ドライブ、コントローラに分散させて、単一点障害を避けるようにするのが最善の方法です。 これは、単一のコンポーネントに障害が発生した場合でも、大半の複製を利用可能な状態に保つ必要があるからです。 デバイス障害などによって複製が失われると、Solaris ボリュームマネージャの動作やシステムの再起動に問題が生じることがあります。 Solaris ボリュームマネージャが動作するためには、少なくとも半数の複製が有効でなければならず、システムをマルチユーザーモードで再起動するためには過半数 (半数+1) の複製が有効でなければなりません。

状態データベースの複製を使用するときは、「状態データベースの複製に関する推奨事項」「状態データベースの複製に関する指針」を考慮してください。

状態データベースの複製に関する推奨事項

状態データベースの複製に関する指針

状態データベースの複製のエラー処理

Solaris ボリュームマネージャにおける不良複製の処理方法。

システムは、少なくとも半数の複製が使用可能であれば動作を続けますが、 使用可能な複製が半数を下回ると、パニックを起します。

システムは、過半数 (半数 + 1) が使用可能であれば、マルチユーザーモードで再起動できます。 使用できる複製が過半数に満たない場合は、システムをシングルユーザーモードで再起動し、metadb コマンドを使って使用不能な複製を削除する必要があります。

たとえば、4 つの複製を使用しているとします。 システムは、2 つの複製 (半数) が使用可能であれば動作を続けます。 しかし、システムをマルチユーザーモードで再起動するためには、3 つの複製 (半数 + 1) が使用可能でなければなりません。

ディスクが 2 台の構成では、各ディスクに必ず 2 つ以上の複製を作成します。 たとえば、ディスクが 2 台の構成で複製を 3 つしか作成しないとします (一方のディスクに 2 つの複製、他方のディスクに 1 つの複製を配置する)。 この場合、2 つの複製が置かれているディスクに障害が発生すると、システムは停止します。これは、残りのディスクには 1 つの複製しかなく、複製の数が半数に満たないからです。


ディスクが 2 台の構成で各ディスクに 2 つずつ複製を作成すれば、一方のディスクに障害が発生しても、Solaris ボリュームマネージャは動作を続けます。 しかし、システムの再起動には過半数の複製が必要なため、システムは再起動できません。


状態データベースの複製を格納するスライスに障害が発生した場合。

構成の残りの部分は正常に機能するはずです。 Solaris ボリュームマネージャは、起動時に、過半数の状態データベースの複製が使用可能であれば、有効な複製を探します。

状態データベースの複製を修復した場合。

状態データベースの複製を手動で修復して使用可能にすると、 Solaris ボリュームマネージャは有効なデータを使ってその複製を更新します。

シナリオ 状態データベースの複製

状態データベースの複製は、Solaris ボリュームマネージャ構成全体に対してデータ冗長性を提供します。 次の例では、第5章「Solaris ボリュームマネージャの構成と使用」のサンプルシステムを使用して、状態データベースの複製をどのように分散すれば適切な冗長性が得られるかを示します。

サンプルシステムには 1 つの内蔵 IDE コントローラとドライブ、さらに 2 台の SCSI コントローラがあり、SCSI コントローラにはそれぞれ 6 つのディスクが接続されています。 システムには 3 つのコントローラがあるため、システムを適切に構成することによって単一点障害を防止できます。 Solaris ボリュームマネージャでは、2 つのコントローラしかないシステムで単一点障害を防止することはできません。 複製を 3 つのコントローラすべてに (各コントローラの少なくとも 1 つ (可能であれば 2 つ) のディスクに) 均一に分散すれば、システムはどのようなハードウェアの単一点障害にも耐えることができます。

最小限の構成では、1 つの状態データベースの複製をルートディスクのスライス 7 に置き、追加の複製を他の 2 つの各コントローラの 1 つのディスク上のスライス 7 に置くことができます。 媒体障害が発生する可能性は極めて低いですが、十分な安全性を求めるなら、ルートディスクに 2 つの複製を置き、各コントローラの 2 つのディスクにそれぞれ複製を置くようにします (合計で 6 つの複製)。

さらに完全を求めるなら、6 つのミラーそれぞれに対してミラーとは異なる 6 つのディスクに複製を 2 つずつ追加します。 これによって、複製の数は、ルートディスクに 2 つ、各 SCSI コントローラに 8 つずつで合計 18 になります。これらの複製は、各コントローラのディスクに分散されています。