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

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

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

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

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

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

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

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

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


注意 – 注意 –

ファブリック接続型記憶領域 (FAS)、SAN などの、システムに直接接続されていない記憶領域に、状態データベースの複製を格納しないでください。Solaris ボリュームマネージャをブートできなくなる可能性があります。複製は、従来の SCSI または IDE ドライブにブートプロセス時に使用できる記憶デバイスに格納しなければなりません。


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

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

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

デフォルトでは、ボリューム、ローカルセット、およびディスクセットの各状態データベースの複製は 4M バイト (8192 個のディスクセクター) のディスク記憶領域を使用します。複数所有者ディスクセットの状態データベースの複製のデフォルトサイズは 16M バイトです。

複製は、次のデバイスに格納できます。

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

多数決アルゴリズムとは

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

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

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

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


注 –

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


状態データベースの複製管理

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

状態データベースの複製で障害が発生しても、残りの複製の半分以上が使用できる場合、システム動作は継続されます。使用可能な複製が半数を下回ると、パニックを起します。

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

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

ディスクが 2 台の構成では、各ディスクに必ず 2 つ以上の複製を作成します。たとえば、ディスクが 2 台の構成で複製を 3 つしか作成しないとします (一方のディスクに 2 つの複製、他方のディスクに 1 つの複製を配置する)。2 つの複製からなるディスクで障害が発生すると、残りのディスクには複製が 1 つだけなので、システムはパニックを起こします。複製が 1 つということは、複製総数の半数に達しません。


注 –

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


状態データベースの複製が格納されたスライスで障害が発生しても、構成の他の部分は動作し続けます。Solaris ボリュームマネージャは、ブート時に、過半数の状態データベースの複製が使用可能であれば、有効な状態データベースを探します。

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

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

状態データベースの複製は、Solaris ボリュームマネージャ構成全体に対してデータ冗長性を提供します。次の例は、第 5 章「Solaris ボリュームマネージャの構成と使用」で示したシステムに基づいています。この例は、状態データベースの複製を分散させることによって十分な冗長性を確保する方法を示しています。

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

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

さらに安全性を高めるには、2 つのミラーの両側で、6 つのディスクに 12 の複製を追加して均一に分散させます。これによって、複製の数は、ルートディスクに 2 つ、各 SCSI コントローラに 8 つずつで合計 18 になります。これらの複製は、各コントローラのディスクに分散されています。