最低 3 つの状態データベースの複製が必要な理由
特定箇所の故障が発生した場合には、過半数の状態データベースの複製が正常でなければ、システムは動作を続行できません。したがって、最低 3 つの状態データベースの複製が必要になります。デバイス障害などによって状態データベースの複製を失うと、DiskSuite の実行中やシステムのリブート中に問題が発生することがあります。
DiskSuite による不良複製の扱い
過半数以上の状態データベースの複製が正常であれば、システムは問題なく動作します。正常な複製が過半数を割ると、データの破壊を防ぐため、システムパニックとなります。
過半数以上の状態データベースの複製が正常でなければ、システムはリブートしません。この場合には、シングルユーザーとしてリブートし、不良な複製を (metadb コマンドで) 削除してください。
たとえば、4 つの複製を使用しているとします。このうちの 2 つ (半数) が正常であれば、システムは動作を続けられますが、リブートするためには、過半数 (半数 + 1) の複製が必要です。
ディスクが 2 つの構成では、各ディスクに複製を 2 つずつ (合計 4 つ) 作成します。たとえば、ディスクが 2 つあるのに複製を 3 つ (片方のディスク上で 2 つ、他方のディスク上で 1 つ) しか作成しなかったとします。この場合、2 つの複製が格納されているディスクが故障すると、正常な複製は 1 つだけになってしまうため、DiskSuite は機能を停止します。
ディスクが 2 つの構成で各ディスクに状態データベースの複製を 2 つずつ作成した場合、片方のディスクが故障しても DiskSuite は動作を続行できます。しかしながら、リブートには過半数の複製が必要であるため、システムをリブートすることはできません。
複数のコントローラを使用している場合には、すべてのコントローラにできるだけ均一に複製を配置します。これによって、冗長性が提供されるため、コントローラ障害に備えることができます。また、負荷も分散します。1 つのコントローラ上に複数のディスクが存在する場合には、各コントローラで 2 つ以上のディスク上に複製を配置してください。
データベースの複製が複数存在する場合には、どのデータベースのデータが有効で正しいかを決定しなければなりません。DiskSuite では、多数決アルゴリズムによって、この判断を行います。このアルゴリズムは、過半数 (半数 + 1) の複製が一致していれば、それらの内容は有効である (破壊されていない) と判断します。このアルゴリズムを有効にするために、ディスク構成を設定する際には 3 つ以上の状態データベースの複製を作成しなければなりません。3 つの複製のうちの 2 つが利用できれば、多数決による意見の一致が得られることになります。複製を 1 つしか用意していない状況でシステムクラッシュが発生すると、すべてのメタデバイス構成データが失われることがあります。
多数決アルゴリズムでは、1 つの複製に有効な最新データが入っていたとしても、過半数のコンセンサスが得られない限り、そのデータは使用されません。その意味ではこのアルゴリズムは保守的であるといえますが、どのような障害が発生した場合でも、不良データが間違って使用されないことを保証します。
多数決アルゴリズムによって、次のように動作することが保証されます。
システムは、常に過半数以上の状態データベースの複製とともに動作する。
過半数の状態データベースの複製が利用できない場合、システムはパニックを起こす。
過半数の状態データベースの複製が利用できない場合、システムはリブートできない。