この章では、状態データベースの複製の概念について説明します。関連する作業の実行手順については、第 7 章「状態データベース (作業)」を参照してください。
この章では、次の内容について説明します。
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 バイトです。
複製は、次のデバイスに格納できます。
専用のローカルディスクパーティション
ボリュームの一部となるローカルパーティション
UFS ロギングデバイスの一部となるローカルパーティション
ルート (/)、 swap、または /usr スライスに複製を格納することはできません。また、ファイルシステムまたはデータがすでに存在するスライスに複製を格納することもできません。ただし、複製を格納した後で、同じスライスにボリュームやファイルシステムを置くことができます。
複製されたデータベース特有の問題は、どのデータベースが有効でデータが正しいかの判別が困難だということです。この問題を解決するために、Solaris ボリュームマネージャでは多数決アルゴリズムが使用されます。このアルゴリズムでは、過半数の複製のコンセンサスが得られないかぎり、いずれの複製も有効なものとみなされません。したがって、このアルゴリズムでは、始めから 3 つ以上の複製が存在していなければなりません。3 つの複製のうち少なくとも 2 つが使用可能であれば、コンセンサスが得られたことになります。一方、複製が 1 つしか存在していないときに、システムがクラッシュすると、すべてのボリューム構成データが失われてしまう可能性があります。
データを保護するために、Solaris ボリュームマネージャは、半数の複製が使用可能でなければ、動作しません。これにより、データの損傷が防止されます。
多数決アルゴリズムによって、システムは多数決アルゴリズムに従って次のように動作します。
状態データベースの複製の半分以上が使用可能であれば、システムは引き続き動作する
使用可能な複製が半数を下回ると、システムはパニックを起こす
システムは、過半数の複製が使用可能でなければ、マルチユーザーモードでリブートできない
使用可能な状態データベースの複製の数が足りない場合は、シングルユーザーモードでブートし、損傷または失われた複製を削除して、規定数を満たす有効な複製を確保する必要があります。「状態データベースの複製数の不足から回復するには」を参照してください。
状態データベースの複製の総数が奇数の場合は、その値を 2 で割り、端数を切り捨てた整数値に 1 を加えることによって過半数値が計算されます。たとえば、複製が 7 つあるシステムの過半数値は 4 です (7 を 2 で割って端数を切り捨てると 3 になり、それに 1 を足すと 4 になる)。
状態データベースの複製のデフォルトサイズは 4M バイト (8192 ブロック) です。状態データベースの複製は、複製ごとに 4M バイト以上の容量を持つ専用スライス上に作成します。ディスクスライスのサイズがこれより大きい場合は、状態データベースの複製を格納できるように、スライスのサイズを変更できます。スライスのサイズの変更については、『Solaris のシステム管理 (デバイスとファイルシステム)』の第 12 章「ディスクの管理 (手順)」を参照してください。
シングルポイント障害を回避するために、複数のスライス、ドライブ、およびコントローラに状態データベースの複製を分散させてください。これは、単一のコンポーネントに障害が発生した場合でも、大半の複製を利用可能な状態に保つ必要があるからです。デバイス障害などによって複製が失われると、Solaris ボリュームマネージャの動作やシステムのリブートに問題が生じることがあります。Solaris ボリュームマネージャが動作するためには、少なくとも半数の複製が有効でなければならず、システムをマルチユーザーモードでリブートするためには過半数 (半数+1) の複製が有効でなければなりません。
Solaris ボリュームマネージャではディスクセット当たり最低 3 つの複製を用意します。また最大 50 の複製を作成できます。次のガイドラインを推奨します。
ドライブが 1 つだけのシステムでは、3 つの複製すべてを 1 つのスライスに置く
ドライブの数が 2 から 4 のシステムでは、各ドライブに 2 つずつ複製を置く
ドライブの数が 5 つ以上のシステムでは、各ドライブに 1 つずつ複製を置く
複数のコントローラが存在する場合は、複製をすべてのコントローラ上にできるだけ均一に分散するようにします。これによって、コントローラ障害に対する冗長性が確保できるだけでなく、負荷の分散も可能になります。同じコントローラ上に複数のディスクが存在する場合は、各コントローラで 2 つ以上のディスクに複製を配置します。
必要であれば、RAID-0、RAID-1、RAID-5 ボリューム、またはソフトパーティションの一部として使用されるスライス上に、状態データベースの複製を作成できます。ただし、その場合は、スライスをボリュームに追加する前に複製を作成する必要があります。Solaris ボリュームマネージャは、スライスの先頭部分を状態データベースの複製用に予約しています。
ボリュームの一部となるスライス上に状態データベースの複製が置かれている場合、ボリュームの容量は、複製によって占有される領域分だけ少なくなります。複製が使用している領域は、次のシリンダ境界に丸められます。ボリュームはこの領域を飛び越します。
RAID-1 ボリュームは、小さいランダム入出力 (データベースの場合など) に使用します。RAID-1 ボリュームごとに、その RAID-1 ボリュームに接続されていない複数のスライス (および、可能であれば別個のディスクとコントローラ) 上に 2 つ以上の複製を余分に作成します。これは、最適な性能を得るために必要な作業です。
状態データベースの複製を既存のファイルシステムや、ルート (/)、/usr、swap ファイルシステムに作成することはできません。必要に応じて、 swap から領域を割り当てることによって、(スライス名が使用できる場合) 新しいスライスを作成できます。その新しいスライスに状態データベースの複製を格納します。
未使用のスライス上に状態データベースの複製を作成できます。
状態データベースの複製は、いつでもシステムに追加できます。状態データベースの複製を追加すると、Solaris ボリュームマネージャの可用性が向上します。
Solstice DiskSuite 製品から Solaris ボリュームマネージャにアップグレードしていて、状態データベースの複製とファイルシステムまたは論理ボリュームの間でスライスが共有されている (それぞれが異なるスライス上に置かれていない) 場合は、既存の複製を削除して同じ場所に新しいデフォルトの複製を作成してはなりません。
Solaris ボリュームマネージャの状態データベースの複製のデフォルトサイズは 8192 ブロックですが、Solstice DiskSuite 製品のデフォルトサイズは 1034 ブロックです。Solstice DiskSuite 製品で作成されたデフォルトサイズの状態データベースの複製を削除し、Solaris ボリュームマネージャで新しくデフォルトサイズの複製を追加する場合は、注意してください。共有スライスの残りの部分を占有しているファイルシステムの先頭 7158 ブロックが上書きされるので、データが破壊されます。
状態データベースの複製で障害が発生しても、残りの複製の半分以上が使用できる場合、システム動作は継続されます。使用可能な複製が半数を下回ると、パニックを起します。
システムは、過半数 (半数 + 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 になります。これらの複製は、各コントローラのディスクに分散されています。