この章では、状態データベースの複製の概念について説明します。関連する作業の実行手順については、第 6 章「状態データベース (作業)」を参照してください。
この章では、以下の内容について説明します。
Solaris ボリュームマネージャの状態データベースには、すべてのボリュームや、ホットスペア、ディスクセットの構成と状態に関する情報が格納されています。Solaris ボリュームマネージャは、冗長性を確保し、システムクラッシュ時のデータの損失を防止するために、複数の状態データベースのコピー (複製) を保持しています (データクラッシュ時に損傷を受けるデータベースのコピーはせいぜい 1 つです)。
状態データベースの複製は、状態データベースのデータが常に有効であることを保証します。状態データベースが更新されると、個々の状態データベースの複製も更新されます。ただし、システムクラッシュによってすべての更新が失われるのを防ぐために、更新は一度に 1 つずつ行われます。
1 つの状態データベースの複製が失われると、Solaris ボリュームマネージャは、どの状態データベースの複製に有効なデータが格納されているかを判断する必要があります。そのために、Solaris ボリュームマネージャは多数決アルゴリズムを使用します。このアルゴリズムでは、過半数 (半数 + 1) の複製が使用可能であり、一致していれば、それらの複製を有効であるとみなします。このアルゴリズムでは、ディスク構成を設定するときに、3 つ以上の状態データベースの複製を作成する必要があります。3 つの状態データベースの複製のうち少なくとも 2 つが有効であれば、コンセンサスが得られたことになります。
起動時には、Solaris ボリュームマネージャは、損傷した状態データベースの複製を無視します。場合によっては、損傷した複製を Solaris ボリュームマネージャが作成し直すこともありますが、そうでなければ、そのような複製は管理者が修正するまで無視されます。使用しているスライスに障害が発生して複製が損傷した場合は、スライスを修理または交換してから複製を有効にする必要があります。
ファブリックに接続された記憶領域、SAN などの、システムに直接接続されていない記憶領域に、状態データベースの複製を格納しないでください。複製は、従来の SCSI または IDE ドライブと同じ起動プロセス点で使用できる記憶領域に格納しなければなりません。
すべての状態データベースの複製が失われると、理論的には、Solaris ボリュームマネージャのボリュームに格納されているすべてのデータが失われます。そのため、十分な数の複製を別々のドライブとコントローラに分散させて作成し、最悪の事態を回避するようにします。さらに、最初の Solaris ボリュームマネージャ構成情報とディスクパーティション情報を保存しておくのも良い方法です。
状態データベースの複製をシステムに追加する方法や失われた状態データベースの複製を回復する方法については、第 6 章「状態データベース (作業)」を参照してください。
状態データベースの複製は、RAID 1 ボリュームの再同期領域でも使用されます。ミラーの数に比べて状態データベースの複製の数が少なすぎると、複製の入出力が RAID 1 ボリュームの性能に影響を与えることがあります。ミラーの数が多い場合は、RAID 1 ボリューム当たり少なくとも 2 つの状態データベースの複製 (ディスクセット当たりの複製数の最大数は 50) を用意してください。
個々の状態データベースの複製には、デフォルトで 4M バイト (8192 ディスクセクタ) のディスク領域が使用されます。複製は、次のデバイスに格納できます。
専用のローカルディスクパーティション
ボリュームの一部となるローカルパーティション
UFS ロギングデバイスの一部となるローカルパーティション
複製は、ルート (/)、 swap、/usr スライス、およびファイルシステムやデータがすでに格納されているスライスには格納できません。ただし、複製を格納した後で、同じスライスにボリュームやファイルシステムを置くことができます。
ファブリックに接続された記憶領域、SAN などの、システムに直接接続されていない記憶領域に、複製を格納することはできません。 複製は、従来の SCSI または IDE ドライブと同じ起動プロセス点で使用できる記憶領域に格納しなければなりません。
複製されたデータベースには、どのデータベースが有効で正しいデータを格納しているかを判断しなければならないという特有の問題があります。この問題を解決するために、Solaris ボリュームマネージャでは多数決アルゴリズムが使用されます。このアルゴリズムでは、過半数の複製のコンセンサスが得られないかぎり、いずれの複製も有効なものとみなされません。したがって、このアルゴリズムでは、始めから 3 つ以上の複製が存在していなければなりません。3 つの複製のうち少なくとも 2 つが使用可能であれば、コンセンサスが得られたことになります。一方、複製が 1 つしか存在していないときに、システムがクラッシュすると、すべてのボリューム構成データが失われてしまう可能性があります。
データを保護するために、Solaris ボリュームマネージャは、半数の複製が使用可能でなければ、動作しません。これにより、データの損傷が防止されます。
多数決アルゴリズムによって、システムは多数決アルゴリズムに従って次のように動作します。
システムは、少なくても半数の複製が使用可能であれば、動作する
システムは、使用可能な複製が半数を下回ると、パニックを起こす
システムは、過半数の複製が使用可能でなければ、マルチユーザーモードで再起動できない
使用可能な状態データベースの複製の数が足りない場合は、シングルユーザーモードで起動し、不良または失われた複製を削除して、規定数を満たす有効な複製を確保する必要があります。詳細は、状態データベースの複製数の不足から回復するにはを参照してください。
状態データベースの複製の数が奇数の場合は、その値を 2 で割り、端数を切り捨てた整数値に 1 を加えることによって過半数値が計算されます。たとえば、複製が 7 つあるシステムの過半数値は 4 です (7 を 2 で割って端数を切り捨てると 3 になり、それに 1 を足すと 4 になる)。
通常は、状態データベースの複製を異なるスライス、ドライブ、コントローラに分散させて、単一点障害を避けるようにするのが最善の方法です。これは、単一のコンポーネントに障害が発生した場合でも、大半の複製を利用可能な状態に保つ必要があるからです。デバイス障害などによって複製が失われると、Solaris ボリュームマネージャの動作やシステムの再起動に問題が生じることがあります。Solaris ボリュームマネージャが動作するためには、少なくとも半数の複製が有効でなければならず、システムをマルチユーザーモードで再起動するためには過半数 (半数+1) の複製が有効でなければなりません。
状態データベースの複製を使用するときは、状態データベースの複製に関する推奨事項と 状態データベースの複製に関する指針を考慮してください。
状態データベースの複製は、4M バイト以上の容量を持つ専用スライス上に作成します。必要であれば、状態データベースの複製を、RAID 0 / RAID 1 / RAID 5 ボリューム、ソフトパーティション、またはトランザクション (マスターまたはログ) ボリュームの一部として使用されるスライス上に作成することもできます。ただし、その場合は、スライスをボリュームに追加する前に複製を作成する必要があります。 Solaris ボリュームマネージャは、スライスの先頭部分を状態データベースの複製用に予約しています。
状態データベースの複製を既存のファイルシステムや、ルート (/)、/usr、swap ファイルシステムに作成することはできません。必要であれば、swap 領域を使用して新しいスライスを作成してから (スライス名が使用可能であるとします)、そのスライスに状態データベースの複製を作成できます。
Solaris ボリュームマネージャではディスクセット当たり最低 3 つの複製を用意します。また最大 50 の複製を作成できます。複製の格納場所については、次の指針を考慮してください。
ドライブが 1 つだけのシステムでは、3 つの複製すべてを 1 つのスライスに置く
ドライブの数が 2 から 4 のシステムでは、各ドライブに 2 つずつ複製を置く
ドライブの数が 5 つ以上のシステムでは、各ドライブに 1 つずつ複製を置く
データベースのように、小容量のランダム入出力に RAID 1 ボリュームを使用する場合は、RAID 1 ボリュームごとに、その RAID 1 ボリュームに接続されていない複数のスライス (および、可能であれば複数のディスクとコントローラ) 上に 2 つ以上の複製を余分に作成します。これは、最適な性能を得るために必要な作業です。
状態データベースの複製は、いつでもシステムに追加できます。状態データベースの複製を追加すると、Solaris ボリュームマネージャの可用性が向上します。
Solstice DiskSuiteTMから Solaris ボリュームマネージャにアップグレードしたときに、スライスが、状態データベースの複製とファイルシステムまたは論理ボリュームの間で共有されている (それぞれが異なるスライス上に置かれていない) 場合は、既存の複製を削除して、同じ場所に新しいデフォルトの複製を作成しないでください。
Solaris ボリュームマネージャの状態データベースの複製のデフォルトサイズは 8192 ブロックですが、Solstice DiskSuite のデフォルトサイズは 1034 ブロックです。Solstice DiskSuite のデフォルトサイズの状態データベースの複製を削除し、Solaris ボリュームマネージャでデフォルトサイズの新しい複製を追加すると、共有スライスの残りの部分を占めているファイルシステムの先頭の 7158 ブロックが上書きされ、データが破壊されてしまいます。
ボリュームの一部となるスライス上に状態データベースの複製が置かれている場合、ボリュームの容量は、複製によって占有される領域分だけ少なくなります。複製が占める領域はシリンダ単位で切り上げられるため、この領域はボリュームによってスキップされます。
状態データベースの複製のデフォルトサイズは 4M バイト (8192 ディスクブロック) です。ディスクスライスのサイズがこれより大きい場合は、状態データベースの複製を格納できるように、スライスのサイズを変更できます。スライスサイズの変更については、『Solaris のシステム管理 (基本編)』の「ディスクの管理 (手順)」を参照してください。
複数のコントローラが存在する場合は、複製をすべてのコントローラ上にできるだけ均一に分散するようにします。これによって、コントローラ障害に対する冗長性が確保できるだけでなく、負荷の分散も可能になります。同じコントローラ上に複数のディスクが存在する場合は、各コントローラで 2 つ以上のディスクに複製を配置します。
システムは、少なくとも半数の複製が使用可能であれば動作を続けますが、使用可能な複製が半数を下回ると、パニックを起します。
システムは、過半数 (半数 + 1) が使用可能であれば、マルチユーザーモードで再起動できます。使用できる複製が過半数に満たない場合は、システムをシングルユーザーモードで再起動し、metadb コマンドを使って使用不能な複製を削除する必要があります。
たとえば、4 つの複製を使用しているとします。システムは、2 つの複製 (半数) が使用可能であれば動作を続けます。しかし、システムをマルチユーザーモードで再起動するためには、3 つの複製 (半数 + 1) が使用可能でなければなりません。
ディスクが 2 台の構成では、各ディスクに必ず 2 つ以上の複製を作成します。たとえば、ディスクが 2 台の構成で複製を 3 つしか作成しないとします (一方のディスクに 2 つの複製、他方のディスクに 1 つの複製を配置する)。この場合、2 つの複製が置かれているディスクに障害が発生すると、システムは停止します。これは、残りのディスクには 1 つの複製しかなく、複製の数が半数に満たないからです。
ディスクが 2 台の構成で各ディスクに 2 つずつ複製を作成すれば、一方のディスクに障害が発生しても、Solaris ボリュームマネージャは動作を続けます。しかし、システムの再起動には過半数の複製が必要なため、システムを再起動することはできません。
構成の残りの部分は正常に機能するはずです。Solaris ボリュームマネージャは、起動時に、過半数の状態データベースの複製が使用可能であれば、有効な複製を探します。
状態データベースの複製を手動で修復して使用可能にすると、 Solaris ボリュームマネージャは有効なデータを使ってその複製を更新します。
状態データベースの複製は、Solaris ボリュームマネージャ構成全体に対してデータ冗長性を提供します。第 4 章「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 になります。これらの複製は、各コントローラのディスクに分散されています。