(57)【要約】【課題】トランザクションに係るオーバーヘッドの増大を抑制し、データ処理の効率を向上させること。【解決手段】プライマリマスターは、オペレーションの実行要求メッセージを送信し、プライマリコホートは、実行要求メッセージを受信した場合にオペレーションを実行してＡＣＫメッセージをプライマリマスターに送信するとともに、オペレーションに係るログ情報を含んだメッセージを送信し、バックアップコホートは、当該メッセージを受信してログ情報をメモリに記憶し、プライマリマスターは、すべてのオペレーションの実行完了後、ディシジョン処理の実行要求メッセージを送信し、プライマリコホートは、実行要求メッセージを受信した場合にディシジョン処理を実行してディシジョン処理に係るログ情報を含んだメッセージを送信し、バックアップコホートは、当該メッセージを受信し、メモリに記憶されたログ情報に基づいてディシジョン処理を実行する。【選択図】        図７
2008097155.tif 000002
【特許請求の範囲】
【請求項１】
データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部に記憶させる制御をおこなうデータ記憶制御装置であって、
データに対するオペレーションの実行要求メッセージを複数送信する第１の記憶制御部と、
前記オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対する応答メッセージを第１の記憶制御部に送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信する１つ以上の第２の記憶制御部と、
前記１つ以上の第２の記憶制御部により送信されたメッセージを受信して各オペレーションに係るログ情報をメモリに記憶する１つ以上の第３の記憶制御部と、
を備え、
前記第１の記憶制御部は、前記１つ以上の第２の記憶制御部により送信された応答メッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信し、
前記１つ以上の第２の記憶制御部は、第１の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、前記１つ以上の第２の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたデータの更新を制御するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、
前記１つ以上の第３の記憶制御部は、前記１つ以上の第２の記憶制御部により送信されたメッセージを受信し、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記１つ以上の第３の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新制御をおこなう
ことを特徴とするデータ記憶制御装置。
【請求項２】
前記１つ以上の第３の記憶制御部は、前記ディシジョン処理を実行した後、ディシジョン処理の完了を示すディシジョン完了メッセージを送信し、前記１つ以上の第２の記憶制御部は、前記１つ以上の第３の記憶制御部からディシジョン完了メッセージを受信した場合に、前記第１の記憶制御部に対してデータの同期処理が完了したことを示す同期完了メッセージを送信することを特徴とする請求項１に記載のデータ記憶制御装置。
【請求項３】
オペレーションの実行要求メッセージを送信する１つ以上の第２の記憶制御部を示すメンバーシップログ情報をメモリに記憶する第４の記憶制御部をさらに備え、前記第１の記憶制御部は、前記メンバーシップログ情報を生成して第４の記憶制御部に送信するとともに、前記ディシジョン処理の実行を決定した場合にディシジョン処理の実行決定を示すディシジョンログ情報を生成して第４の記憶制御部に送信し、前記第４の記憶制御部は、前記ディシジョンログ情報を受信した後、前記第１の記憶制御部に係る障害を検出した場合に、前記メンバーシップログ情報に基づいてオペレーションに対するディシジョン処理の実行要求メッセージを前記１つ以上の第２の記憶制御部に送信することを特徴とする請求項１または２に記載のデータ記憶制御装置。
【請求項４】
前記１つ以上の第２の記憶制御部は、前記第１の記憶制御部からディシジョン処理の実行要求メッセージを受信した後、前記１つ以上の第３の記憶制御部に係る障害を検出した場合に、第１の記憶制御部に対して前記ディシジョン完了メッセージを送信し、前記障害が復旧した場合に、前記１つ以上の第３の記憶制御部は、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記１つ以上の第３の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新制御をおこなうことを特徴とする請求項１、２または３に記載のデータ記憶制御装置。
【請求項５】
前記第１の記憶制御部は、前記１つ以上の第２の記憶制御部により送信されたすべての応答メッセージを受信した後、前記１つ以上の第２の記憶制御部のうちのいずれかに係る障害を検出した場合に、前記１つ以上の第３の記憶制御部にオペレーションに対するディシジョン処理の実行要求メッセージを送信し、前記１つ以上の第３の記憶制御部は、第１の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合に、ディシジョン処理を実行し、前記障害が復旧した場合にディシジョン処理に係るログ情報を障害から復旧した第２の記憶制御部に送信し、障害から復旧した第２の記憶制御部は、ディシジョン処理に係るログ情報を受信し、受信したログ情報に基づいてディシジョン処理を実行することを特徴とする請求項１〜４のいずれか１つに記載のデータ記憶制御装置。
【請求項６】
複数のデータ記憶部を有し、データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部に記憶させるデータ記憶装置であって、
データに対するオペレーションの実行要求メッセージを複数送信する第１の記憶制御部と、
前記オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対する応答メッセージを第１の記憶制御部に送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信する１つ以上の第２の記憶制御部と、
前記１つ以上の第２の記憶制御部により送信されたメッセージを受信して各オペレーションに係るログ情報をメモリに記憶する１つ以上の第３の記憶制御部と、
を備え、
前記第１の記憶制御部は、前記１つ以上の第２の記憶制御部により送信された応答メッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信し、
前記１つ以上の第２の記憶制御部は、第１の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、前記１つ以上の第２の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたデータを更新するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、
前記１つ以上の第３の記憶制御部は、前記１つ以上の第２の記憶制御部により送信されたメッセージを受信し、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記１つ以上の第３の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新をおこなう
ことを特徴とするデータ記憶装置。
【請求項７】
前記１つ以上の第３の記憶制御部は、前記ディシジョン処理を実行した後、ディシジョン処理の完了を示すディシジョン完了メッセージを送信し、前記１つ以上の第２の記憶制御部は、前記１つ以上の第３の記憶制御部からディシジョン完了メッセージを受信した場合に、前記第１の記憶制御部に対してデータの同期処理が完了したことを示す同期完了メッセージを送信することを特徴とする請求項６に記載のデータ記憶装置。
【請求項８】
オペレーションの実行要求メッセージを送信する１つ以上の第２の記憶制御部を示すメンバーシップログ情報をメモリに記憶する第４の記憶制御部をさらに備え、前記第１の記憶制御部は、前記メンバーシップログ情報を生成して第４の記憶制御部に送信するとともに、前記ディシジョン処理の実行を決定した場合にディシジョン処理の実行決定を示すディシジョンログ情報を生成して第４の記憶制御部に送信し、前記第４の記憶制御部は、前記ディシジョンログ情報を受信した後、前記第１の記憶制御部に係る障害を検出した場合に、前記メンバーシップログ情報に基づいてオペレーションに対するディシジョン処理の実行要求メッセージを前記１つ以上の第２の記憶制御部に送信することを特徴とする請求項６または７に記載のデータ記憶装置。
【請求項９】
前記１つ以上の第２の記憶制御部は、前記第１の記憶制御部からディシジョン処理の実行要求メッセージを受信した後、前記１つ以上の第３の記憶制御部に係る障害を検出した場合に、第１の記憶制御部に対して前記ディシジョン完了メッセージを送信し、前記障害が復旧した場合に、前記１つ以上の第３の記憶制御部は、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記１つ以上の第３の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータを更新することを特徴とする請求項６、７または８に記載のデータ記憶装置。
【請求項１０】
前記第１の記憶制御部は、前記１つ以上の第２の記憶制御部により送信されたすべての応答メッセージを受信した後、前記１つ以上の第２の記憶制御部のうちのいずれかに係る障害を検出した場合に、前記１つ以上の第３の記憶制御部にオペレーションに対するディシジョン処理の実行要求メッセージを送信し、前記１つ以上の第３の記憶制御部は、第１の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合に、ディシジョン処理を実行し、前記障害が復旧した場合にディシジョン処理に係るログ情報を障害から復旧した第２の記憶制御部に送信し、障害から復旧した第２の記憶制御部は、ディシジョン処理に係るログ情報を受信し、受信したログ情報に基づいてディシジョン処理を実行することを特徴とする請求項６〜９のいずれか１つに記載のデータ記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部に記憶させる制御をおこなうデータ記憶制御装置および複数のデータ記憶部を有し、データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部に記憶させるデータ記憶装置に関し、特に、トランザクションに係るオーバーヘッドの増大を抑制し、データ処理の効率を向上させることができるデータ記憶制御装置およびデータ記憶装置に関する。
【背景技術】
【０００２】
従来、ＳＡＮ（Storage Area Network）などのネットワークを介して接続された各ディスクが、ディクスコントローラ上のプロセッサやメモリを利用して自律的なデータ管理をおこなうとともに、ディスク間で通信をおこなってホストから要求されたデータ処理を実行する自律ディスクが提案されている（非特許文献１を参照）。
【０００３】
この自律ディスクでは、データ管理の信頼性を高めるため、ディスクに記憶されたデータのバックアップを、当該ディスクとは別のディスクに格納する。そして、ディスクに障害が発生してデータが読み出せなくなった場合には、バックアップされたデータが代わりに読み出され、データ処理が実行される。
【０００４】
このようなシステムにおいては、トランザクションの原子性を保障することが極めて重要である。これを実現するコミットプロトコルとして、２フェーズコミット（２ＰＣ）プロトコルや、アーリープリペア（ＥＲ）プロトコルなどがある（非特許文献２を参照）。
【０００５】
【非特許文献１】Haruo Yokota, “Ａutonomous Disks for Advanced Database Applications”, in Proc. of International Symposium on Database Applications in Non-traditional Environments (DANTE'99), pp.448-457.
【非特許文献２】J. Stamos and F. Cristian, “A low-cost atomic commit protocol”, In proceeding of ninth symposium on Reliable distributed systems, October 1990.
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した従来技術におけるコミットプロトコルが、ディスクに格納されたデータを別のディスクにバックアップする処理をおこなう自律ディスクに適用された場合には、満足できるパフォーマンスが得られないという問題があった。
【０００７】
具体的には、２フェーズコミットプロトコルやアーリープリペアプロトコルでは、オペレーションごとにログをディスク装置に書き込み、書き込みが正常終了したことを示すメッセージをオペレーションの実行を要求した装置に応答する必要がある。そのため、トランザクションに係るオーバーヘッドが大きくなり、自律ディスクの処理効率を低下させてしまう。
【０００８】
このように、自律ディスクにおいては、トランザクションに係るオーバーヘッドの増大をいかにして抑制し、データ処理の効率を向上させることができるかが重要な課題となっている。
【０００９】
本発明は、上述した従来技術による問題点を解消するためになされたものであり、トランザクションに係るオーバーヘッドの増大を抑制し、データ処理の効率を向上させることができるデータ記憶制御装置およびデータ記憶装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するため、本発明は、データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部（実施例におけるディスク装置４０ａ〜４０ｄ）に記憶させる制御をおこなうデータ記憶制御装置であって、データに対するオペレーションの実行要求メッセージを複数送信する第１の記憶制御部（実施例におけるプライマリマスター）と、前記オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対する応答メッセージを第１の記憶制御部に送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信する１つ以上の第２の記憶制御部（実施例におけるプライマリコホート）と、前記１つ以上の第２の記憶制御部により送信されたメッセージを受信して各オペレーションに係るログ情報をメモリに記憶する１つ以上の第３の記憶制御部（実施例におけるバックアップコホート）と、を備え、前記第１の記憶制御部は、前記１つ以上の第２の記憶制御部により送信された応答メッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信し、前記１つ以上の第２の記憶制御部は、第１の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、前記１つ以上の第２の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたデータの更新を制御するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、前記１つ以上の第３の記憶制御部は、前記１つ以上の第２の記憶制御部により送信されたメッセージを受信し、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記１つ以上の第３の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新制御をおこなうことを特徴とする。
【００１１】
また、本発明は、上記発明において、前記１つ以上の第３の記憶制御部は、前記ディシジョン処理を実行した後、ディシジョン処理の完了を示すディシジョン完了メッセージを送信し、前記１つ以上の第２の記憶制御部は、前記１つ以上の第３の記憶制御部からディシジョン完了メッセージを受信した場合に、前記第１の記憶制御部に対してデータの同期処理が完了したことを示す同期完了メッセージを送信することを特徴とする。
【００１２】
また、本発明は、上記発明において、オペレーションの実行要求メッセージを送信する１つ以上の第２の記憶制御部を示すメンバーシップログ情報をメモリに記憶する第４の記憶制御部（実施例におけるバックアップマスター）をさらに備え、前記第１の記憶制御部は、前記メンバーシップログ情報を生成して第４の記憶制御部に送信するとともに、前記ディシジョン処理の実行を決定した場合にディシジョン処理の実行決定を示すディシジョンログ情報を生成して第４の記憶制御部に送信し、前記第４の記憶制御部は、前記ディシジョンログ情報を受信した後、前記第１の記憶制御部に係る障害を検出した場合に、前記メンバーシップログ情報に基づいてオペレーションに対するディシジョン処理の実行要求メッセージを前記１つ以上の第２の記憶制御部に送信することを特徴とする。
【００１３】
また、本発明は、上記発明において、前記１つ以上の第２の記憶制御部は、前記第１の記憶制御部からディシジョン処理の実行要求メッセージを受信した後、前記１つ以上の第３の記憶制御部に係る障害を検出した場合に、第１の記憶制御部に対して前記ディシジョン完了メッセージを送信し、前記障害が復旧した場合に、前記１つ以上の第３の記憶制御部は、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記１つ以上の第３の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新制御をおこなうことを特徴とする。
【００１４】
また、本発明は、上記発明において、前記第１の記憶制御部は、前記１つ以上の第２の記憶制御部により送信されたすべての応答メッセージを受信した後、前記１つ以上の第２の記憶制御部のうちのいずれかに係る障害を検出した場合に、前記１つ以上の第３の記憶制御部にオペレーションに対するディシジョン処理の実行要求メッセージを送信し、前記１つ以上の第３の記憶制御部は、第１の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合に、ディシジョン処理を実行し、前記障害が復旧した場合にディシジョン処理に係るログ情報を障害から復旧した第２の記憶制御部に送信し、障害から復旧した第２の記憶制御部は、ディシジョン処理に係るログ情報を受信し、受信したログ情報に基づいてディシジョン処理を実行することを特徴とする。
【００１５】
また、本発明は、複数のデータ記憶部（実施例におけるディスク装置４０ａ〜４０ｄ）を有し、データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部に記憶させるデータ記憶装置であって、データに対するオペレーションの実行要求メッセージを複数送信する第１の記憶制御部（実施例におけるプライマリマスター）と、前記オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対する応答メッセージを第１の記憶制御部に送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信する１つ以上の第２の記憶制御部（実施例におけるプライマリコホート）と、前記１つ以上の第２の記憶制御部により送信されたメッセージを受信して各オペレーションに係るログ情報をメモリに記憶する１つ以上の第３の記憶制御部（実施例におけるバックアップコホート）と、を備え、前記第１の記憶制御部は、前記１つ以上の第２の記憶制御部により送信された応答メッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信し、前記１つ以上の第２の記憶制御部は、第１の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、前記１つ以上の第２の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたデータを更新するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、前記１つ以上の第３の記憶制御部は、前記１つ以上の第２の記憶制御部により送信されたメッセージを受信し、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記１つ以上の第３の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新をおこなうことを特徴とする。
【００１６】
また、本発明は、上記発明において、前記１つ以上の第３の記憶制御部は、前記ディシジョン処理を実行した後、ディシジョン処理の完了を示すディシジョン完了メッセージを送信し、前記１つ以上の第２の記憶制御部は、前記１つ以上の第３の記憶制御部からディシジョン完了メッセージを受信した場合に、前記第１の記憶制御部に対してデータの同期処理が完了したことを示す同期完了メッセージを送信することを特徴とする。
【００１７】
また、本発明は、上記発明において、オペレーションの実行要求メッセージを送信する１つ以上の第２の記憶制御部を示すメンバーシップログ情報をメモリに記憶する第４の記憶制御部（実施例におけるバックアップマスター）をさらに備え、前記第１の記憶制御部は、前記メンバーシップログ情報を生成して第４の記憶制御部に送信するとともに、前記ディシジョン処理の実行を決定した場合にディシジョン処理の実行決定を示すディシジョンログ情報を生成して第４の記憶制御部に送信し、前記第４の記憶制御部は、前記ディシジョンログ情報を受信した後、前記第１の記憶制御部に係る障害を検出した場合に、前記メンバーシップログ情報に基づいてオペレーションに対するディシジョン処理の実行要求メッセージを前記１つ以上の第２の記憶制御部に送信することを特徴とする。
【００１８】
また、本発明は、上記発明において、前記１つ以上の第２の記憶制御部は、前記第１の記憶制御部からディシジョン処理の実行要求メッセージを受信した後、前記１つ以上の第３の記憶制御部に係る障害を検出した場合に、第１の記憶制御部に対して前記ディシジョン完了メッセージを送信し、前記障害が復旧した場合に、前記１つ以上の第３の記憶制御部は、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記１つ以上の第３の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータを更新することを特徴とする。
【００１９】
また、本発明は、上記発明において、前記第１の記憶制御部は、前記１つ以上の第２の記憶制御部により送信されたすべての応答メッセージを受信した後、前記１つ以上の第２の記憶制御部のうちのいずれかに係る障害を検出した場合に、前記１つ以上の第３の記憶制御部にオペレーションに対するディシジョン処理の実行要求メッセージを送信し、前記１つ以上の第３の記憶制御部は、第１の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合に、ディシジョン処理を実行し、前記障害が復旧した場合にディシジョン処理に係るログ情報を障害から復旧した第２の記憶制御部に送信し、障害から復旧した第２の記憶制御部は、ディシジョン処理に係るログ情報を受信し、受信したログ情報に基づいてディシジョン処理を実行することを特徴とする。
【００２０】
また、本発明は、データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部（実施例におけるディスク装置４０ａ〜４０ｄ）に記憶させるデータ記憶方法であって、第１の記憶制御部（実施例におけるプライマリマスター）が、データに対するオペレーションの実行要求メッセージを送信するオペレーション実行要求メッセージ送信工程と、１つ以上の第２の記憶制御部（実施例におけるプライマリコホート）が、前記オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対する応答メッセージを第１の記憶制御部に送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、１つ以上の第３の記憶制御部（実施例におけるバックアップコホート）が、前記１つ以上の第２の記憶制御部により送信されたメッセージを受信して各オペレーションに係るログ情報をメモリに記憶するオペレーション実行工程と、前記第１の記憶制御部が、前記１つ以上の第２の記憶制御部により送信された応答メッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信するディシジョン実行要求メッセージ送信工程と、前記１つ以上の第２の記憶制御部が、第１の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、前記１つ以上の第２の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたデータを更新するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、前記１つ以上の第３の記憶制御部が、前記１つ以上の第２の記憶制御部により送信されたメッセージを受信し、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記１つ以上の第３の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新をおこなうディシジョン実行工程と、を含んだことを特徴とする。
【００２１】
また、本発明は、上記発明において、前記１つ以上の第３の記憶制御部が、前記ディシジョン処理を実行した後、ディシジョン処理の完了を示すディシジョン完了メッセージを送信するディシジョン完了メッセージ送信工程と、前記１つ以上の第２の記憶制御部が、前記１つ以上の第３の記憶制御部からディシジョン完了メッセージを受信した場合に、前記第１の記憶制御部に対してデータの同期処理が完了したことを示す同期完了メッセージを送信する同期完了メッセージ送信工程とをさらに含んだことを特徴とする。
【００２２】
また、本発明は、上記発明において、前記オペレーション実行要求メッセージ送信工程は、前記第１の記憶制御部が、オペレーションの実行要求メッセージを送信する１つ以上の第２の記憶制御部を示すメンバーシップログ情報を生成して第４の記憶制御部（実施例におけるバックアップマスター）に送信し、第４の記憶制御部が、前記メンバーシップログ情報をメモリに記憶し、前記ディシジョン実行要求メッセージ送信工程は、前記第１の記憶制御部が、前記ディシジョン処理の実行を決定した場合にディシジョン処理の実行決定を示すディシジョンログ情報を生成して第４の記憶制御部に送信し、第４の記憶制御部が、前記ディシジョンログ情報を受信した後、前記第１の記憶制御部に係る障害を検出した場合に、前記メンバーシップログ情報に基づいてオペレーションに対するディシジョン処理の実行要求メッセージを前記１つ以上の第２の記憶制御部に送信することを特徴とする。
【００２３】
また、本発明は、上記発明において、前記ディシジョン実行工程は、前記１つ以上の第２の記憶制御部が、前記第１の記憶制御部からディシジョン処理の実行要求メッセージを受信した後、前記１つ以上の第３の記憶制御部に係る障害を検出した場合に、第１の記憶制御部に対して前記ディシジョン完了メッセージを送信し、前記障害が復旧した場合に、前記１つ以上の第３の記憶制御部が、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記１つ以上の第３の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータを更新することを特徴とする。
【００２４】
また、本発明は、上記発明において、前記ディシジョン実行要求メッセージ送信工程は、前記第１の記憶制御部が、前記１つ以上の第２の記憶制御部により送信されたすべての応答メッセージを受信した後、前記１つ以上の第２の記憶制御部のうちのいずれかに係る障害を検出した場合に、前記１つ以上の第３の記憶制御部にオペレーションに対するディシジョン処理の実行要求メッセージを送信し、前記ディシジョン実行工程は、前記１つ以上の第３の記憶制御部が、第１の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合に、ディシジョン処理を実行し、前記障害が復旧した場合にディシジョン処理に係るログ情報を障害から復旧した第２の記憶制御部に送信し、障害から復旧した第２の記憶制御部が、ディシジョン処理に係るログ情報を受信し、受信したログ情報に基づいてディシジョン処理を実行することを特徴とする。
【００２５】
また、本発明は、データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部（実施例におけるディスク装置４０ａ〜４０ｄ）に記憶させる制御をおこなうデータ記憶制御プログラムであって、第１の記憶制御部（実施例におけるプライマリマスター）が、データに対するオペレーションの実行要求メッセージを送信するオペレーション実行要求メッセージ送信手順と、１つ以上の第２の記憶制御部（実施例におけるプライマリコホート）が、前記オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対する応答メッセージを第１の記憶制御部に送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、１つ以上の第３の記憶制御部（実施例におけるバックアップコホート）が、前記１つ以上の第２の記憶制御部により送信されたメッセージを受信して各オペレーションに係るログ情報をメモリに記憶するオペレーション実行手順と、前記第１の記憶制御部が、前記１つ以上の第２の記憶制御部により送信された応答メッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信するディシジョン実行要求メッセージ送信手順と、前記１つ以上の第２の記憶制御部が、第１の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、前記１つ以上の第２の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたデータを更新するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、前記１つ以上の第３の記憶制御部が、前記１つ以上の第２の記憶制御部により送信されたメッセージを受信し、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記１つ以上の第３の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新をおこなうディシジョン実行手順と、をコンピュータに実行させることを特徴とする。
【００２６】
本発明によれば、第１の記憶制御部が、データに対するオペレーションの実行要求メッセージを送信し、１つ以上の第２の記憶制御部が、オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対する応答メッセージを第１の記憶制御部に送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、１つ以上の第３の記憶制御部が、１つ以上の第２の記憶制御部により送信されたメッセージを受信して各オペレーションに係るログ情報をメモリに記憶し、第１の記憶制御部が、１つ以上の第２の記憶制御部により送信された応答メッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信し、１つ以上の第２の記憶制御部が、第１の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、１つ以上の第２の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたデータを更新するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、１つ以上の第３の記憶制御部が、１つ以上の第２の記憶制御部により送信されたメッセージを受信し、メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、１つ以上の第３の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新をおこなうこととしたので、トランザクションに係るオーバーヘッドの増大を抑制し、データ処理の効率を向上させることができる。
【００２７】
また、本発明によれば、１つ以上の第３の記憶制御部が、ディシジョン処理を実行した後、ディシジョン処理の完了を示すディシジョン完了メッセージを送信し、１つ以上の第２の記憶制御部が、１つ以上の第３の記憶制御部からディシジョン完了メッセージを受信した場合に、第１の記憶制御部に対してデータの同期処理が完了したことを示す同期完了メッセージを送信することとしたので、データとバックアップデータとの間で同期を確実にとることができる。
【００２８】
また、本発明によれば、第１の記憶制御部が、オペレーションの実行要求メッセージを送信する１つ以上の第２の記憶制御部を示すメンバーシップログ情報を生成して第４の記憶制御部に送信し、第４の記憶制御部が、メンバーシップログ情報をメモリに記憶し、第１の記憶制御部が、ディシジョン処理の実行を決定した場合にディシジョン処理の実行決定を示すディシジョンログ情報を生成して第４の記憶制御部に送信し、第４の記憶制御部が、ディシジョンログ情報を受信した後、第１の記憶制御部に係る障害を検出した場合に、メンバーシップログ情報に基づいてオペレーションに対するディシジョン処理の実行要求メッセージを１つ以上の第２の記憶制御部に送信することとしたので、第１の記憶制御部に係る障害が発生した場合でも、ディシジョン処理を迅速に実行することができる。
【００２９】
また、本発明によれば、１つ以上の第２の記憶制御部が、第１の記憶制御部からディシジョン処理の実行要求メッセージを受信した後、１つ以上の第３の記憶制御部に係る障害を検出した場合に、第１の記憶制御部に対してディシジョン完了メッセージを送信し、障害が復旧した場合に、１つ以上の第３の記憶制御部が、メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、１つ以上の第３の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータを更新することとしたので、第３の記憶制御部に係る障害が発生した場合でも、ディシジョン処理を迅速に実行することができる。
【００３０】
また、本発明によれば、第１の記憶制御部が、１つ以上の第２の記憶制御部により送信されたすべての応答メッセージを受信した後、１つ以上の第２の記憶制御部のうちのいずれかに係る障害を検出した場合に、１つ以上の第３の記憶制御部にオペレーションに対するディシジョン処理の実行要求メッセージを送信し、１つ以上の第３の記憶制御部が、第１の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合に、ディシジョン処理を実行し、障害が復旧した場合にディシジョン処理に係るログ情報を障害から復旧した第２の記憶制御部に送信し、障害から復旧した第２の記憶制御部が、ディシジョン処理に係るログ情報を受信し、受信したログ情報に基づいてディシジョン処理を実行することとしたので、第２の記憶制御部に係る障害が発生した場合でも、ディシジョン処理を迅速に実行することができる。
【発明の効果】
【００３１】
本発明によれば、トランザクションに係るオーバーヘッドの増大を抑制することによりデータ処理の効率を向上させることができるため、ホストからのデータ処理要求に対するレスポンスを高速化でき、自律ディスクなどの自律分散型ストレージシステムにおける記憶ノードの増大にも効果的に対処することができるという効果を奏する。
【発明を実施するための最良の形態】
【００３２】
以下に添付図面を参照して、本発明に係るデータ記憶制御装置およびデータ記憶装置の好適な実施例を詳細に説明する。
【実施例】
【００３３】
まず、本発明に係る自律ディスクシステムの機能構成について説明する。図１は、本実施例に係る自律ディスクシステムの機能構成を示す図である。図１に示すように、この自律ディスクシステムは、クライアント１０ａ〜１０ｃとプロセッシングエレメント２０ａ〜２０ｄとがＳＡＮ（Storage Area Network）などのネットワーク５０を介して接続された構成となっている。
【００３４】
クライアント１０ａ〜１０ｃは、プロセッシングエレメント２０ａ〜２０ｄに対してデータの検索、挿入、削除などの各種データ処理の実行要求を送信するクライアント装置である。
【００３５】
プロセッシングエレメント２０ａ〜２０ｄは、クライアント１０ａ〜１０ｃにより送信された各種データ処理の実行要求を受信し、要求されたデータ処理を実行する処理装置である。各プロセッシングエレメント２０ａ〜２０ｄは、処理の対象となるデータを分散して記憶する。そして、各プロセッシングエレメント２０ａ〜２０ｄは、Ｆａｔ−Ｂｔｒｅｅと呼ばれるディレクトリ構造を用いてデータの検索をおこなう。なお、本発明はディレクトリ方式として、特にＦａｔ−Ｂｔｒｅｅ方式に限定するものではなく、ディレクトリを複数のプロセッシングエレメントで共有する分散ディレクトリ方式全般に適用できるものである。
【００３６】
図２は、Ｆａｔ−Ｂｔｒｅｅについて説明する説明図である。Ｆａｔ−Ｂｔｒｅｅは、従来の並列Ｂｔｒｅｅを改良したものであり、自律ディスクのような分散型データベースシステムにおいて、データに高速にアクセスできるように開発されたディレクトリ構造である。
【００３７】
このＦａｔ−Ｂｔｒｅｅでは、図２に示すように、Ｂ−ｔｒｅｅのデータページを各プロセッシングエレメント２０ａ〜２０ｄに均等に記憶させ、そのデータページからみて上位にあるインデックスページのみを各プロセッシングエレメント２０ａ〜２０ｄに記憶させる。すなわち、Ｆａｔ−Ｂｔｒｅｅでは、各プロセッシングエレメント２０ａ〜２０ｄは、Ｂ−ｔｒｅｅの部分木を記憶する。
【００３８】
このように、Ｆａｔ−Ｂｔｒｅｅでは、ルートページに近く、アクセス頻度が高いインデックスページほどより多くのプロセッシングエレメント２０ａ〜２０ｄにコピーされるので、検索速度を高速化することができる。
【００３９】
また、更新頻度が高い下位のインデックスページほど、そのコピーを記憶したプロセッシングエレメント２０ａ〜２０ｄの数が減少するため、コピーの更新をおこなう際に同期が必要となるプロセッシングエレメント２０ａ〜２０ｄの数が少なくなり、オーバーヘッドを減らすことができる。
【００４０】
図１の説明に戻ると、各プロセッシングエレメント２０ａ〜２０ｄは、コントローラ３０ａ〜３０ｄと、ディスク装置４０ａ〜４０ｄとを有する。
【００４１】
コントローラ３０ａ〜３０ｄは、ディスク装置４０ａ〜４０ｄに対するデータアクセスの制御をおこなう処理部である。このコントローラ３０ａ〜３０ｄは、図２に示したＦａｔ−Ｂｔｒｅｅを用いてデータの検索をおこない、ディスク装置４０ａ〜４０ｄに記憶されたデータに対する各種データ処理を実行する。コントローラ３０ａ〜３０ｄの詳細な機能構成については、後に図３を用いて説明する。
【００４２】
ディスク装置４０ａ〜４０ｄは、ハードディスク装置などの記憶装置である。具体的には、このディスク装置４０ａ〜４０ｄは、図２に示したＦａｔ−Ｂｔｒｅｅのディレクトリ情報、他のディスク装置４０ａ〜４０ｄに記憶されたディレクトリ情報のバックアップデータ、各種データ処理の対象となるデータ、他のディスク装置４０ａ〜４０ｄに記憶されたデータのバックアップデータなどを記憶する。
【００４３】
つぎに、図１に示したプロセッシングエレメント２０ａ〜２０ｄの機能構成について詳細に説明する。図３は、図１に示したプロセッシングエレメント２０ａ〜２０ｄの機能構成を示す図である。なお、各プロセッシングエレメント２０ａ〜２０ｄの機能構成は同様なものとなる。
【００４４】
図１で説明したように、プロセッシングエレメント２０ａ（２０ｂ，２０ｃ，２０ｄ）は、コントローラ３０ａ（３０ｂ，３０ｃ，３０ｄ）とディスク装置４０ａ（４０ｂ，４０ｃ，４０ｄ）とから構成されている。そして、コントローラ３０ａ（３０ｂ，３０ｃ，３０ｄ）は、ネットワークインターフェース部３１ａ（３１ｂ，３１ｃ，３１ｄ）、ディスクインターフェース部３２ａ（３２ｂ，３２ｃ，３２ｄ）、メモリ３３ａ（３３ｂ，３３ｃ，３３ｄ）、制御部３４ａ（３４ｂ，３４ｃ，３４ｄ）を有する。
【００４５】
ネットワークインターフェース部３１ａ（３１ｂ，３１ｃ，３１ｄ）は、クライアント１０ａ〜１０ｃとの間でネットワーク５０を介してデータの授受をおこなうネットワークインターフェースである。ディスクインターフェース部３２ａ（３２ｂ，３２ｃ，３２ｄ）は、ディスク装置４０ａ（４０ｂ，４０ｃ，４０ｄ）との間でデータの授受をおこなうディスクインターフェースである。
【００４６】
メモリ３３ａ（３３ｂ，３３ｃ，３３ｄ）は、制御部３４ａ（３４ｂ，３４ｃ，３４ｄ）によりデータの読み出しや書き込みがなされる半導体主記憶装置である。このメモリ３３ａ（３３ｂ，３３ｃ，３３ｄ）は、ログ３３０ａ（３３０ｂ，３３０ｃ，３３０ｄ）、バックアップディスク管理データ３３１ａ（３３１ｂ，３３１ｃ，３３１ｄ）、ＡＣＫ管理データ３３２ａ（３３２ｂ，３３２ｃ，３３２ｄ）などの各種データを記憶する。
【００４７】
ログ３３０ａ（３３０ｂ，３３０ｃ，３３０ｄ）は、各トランザクションにおいてなされた一連のオペレーションの内容に係る情報を記憶したログデータである。バックアップディスク管理データ３３１ａ（３３１ｂ，３３１ｃ，３３１ｄ）は、元データを記憶するディスク装置４０ａ〜４０ｄと、元データのバックアップデータを記憶するディスク装置４０ａ〜４０ｄとの間の対応関係を記憶したデータである。
【００４８】
図４は、図３に示したバックアップディスク管理データ３３１ａ（３３１ｂ，３３１ｃ，３３１ｄ）の一例を示す図である。図４に示すように、このバックアップディスク管理データ３３１ａ（３３１ｂ，３３１ｃ，３３１ｄ）は、プライマリディスクＩＤおよびバックアップディスクＩＤを記憶している。
【００４９】
プライマリディスクＩＤは、元データを記憶するディスク装置４０ａ〜４０ｄを識別する識別情報である。バックアップディスクＩＤは、元データのバックアップデータを記憶するディスク装置４０ａ〜４０ｄを識別する識別情報である。
【００５０】
図３の説明に戻ると、ＡＣＫ管理データ３３２ａ（３３２ｂ，３３２ｃ，３３２ｄ）は、制御部３４ａ（３４ｂ，３４ｃ，３４ｄ）が他のプロセッシングエレメント２０ｂ〜２０ｄに対してオペレーションの実行要求を送信した場合に、オペレーションの実行完了を示すＡＣＫメッセージを他のプロセッシングエレメント２０ｂ〜２０ｄから受信したか否かを示すデータである。
【００５１】
図５は、図３に示したＡＣＫ管理データ３３２ａ（３３２ｂ，３３２ｃ，３３２ｄ）の一例を示す図である。図５に示すように、ＡＣＫ管理データ３３２ａ（３３２ｂ，３３２ｃ，３３２ｄ）は、オペレーションＩＤ、オペレーション対象ディスクＩＤおよびＡＣＫフラグを記憶している。
【００５２】
オペレーションＩＤは、他のプロセッシングエレメント２０ｂ〜２０ｄに対して実行要求を送信した各オペレーションを識別する識別情報である。オペレーション対象ディスクＩＤは、オペレーションの実行要求を送信したプロセッシングエレメント２０ｂ〜２０ｄが有するディスク装置４０ｂ〜４０ｄを識別する識別情報である。
【００５３】
ＡＣＫフラグは、オペレーションの実行要求を送信したプロセッシングエレメント２０ｂ〜２０ｄからＡＣＫメッセージを受信したか否かを示すフラグである。このフラグが「１」である場合は、プロセッシングエレメント２０ｂ〜２０ｄからＡＣＫメッセージを受信したことを示し、「０」である場合には、プロセッシングエレメント２０ｂ〜２０ｄからＡＣＫメッセージを受信していないことを示す。
【００５４】
図３の説明に戻ると、制御部３４ａ（３４ｂ，３４ｃ，３４ｄ）は、コントローラ３０ａ（３０ｂ，３０ｃ，３０ｄ）を全体制御する制御部であり、各機能部間のデータの授受を司る。この制御部３４ａ（３４ｂ，３４ｃ，３４ｄ）は、トランザクション実行部３４０ａ（３４０ｂ，３４０ｃ，３４０ｄ）および障害復旧処理部３４１ａ（３４１ｂ，３４１ｃ，３４１ｄ）を有する。
【００５５】
トランザクション実行部３４０ａ（３４０ｂ，３４０ｃ，３４０ｄ）は、クライアント１０ａ〜１０ｃあるいは他のプロセッシングエレメント２０ｂ〜２０ｄからトランザクションに係る各種データ処理の実行要求を受信した場合に、Ｆａｔ−Ｂｔｒｅｅのディレクトリ情報に基づいて処理対象となるデータを検索し、そのデータに対する各種データ処理を実行する機能部である。
【００５６】
このトランザクション実行部３４０ａ（３４０ｂ，３４０ｃ，３４０ｄ）は、バックアップアシスト１．５相コミットプロトコル（ＢＡ−１．５ＰＣ）を用いてトランザクションを実行する。このＢＡ−１．５ＰＣについては、後に詳しく説明する。
【００５７】
障害復旧処理部３４１ａ（３４１ｂ，３４１ｃ，３４１ｄ）は、トランザクションの実行中にいずれかのプロセッシングエレメント２０ａ〜２０ｄに障害が発生した場合に、その障害に対する復旧処理をおこなう機能部である。
【００５８】
この障害復旧処理部３４１ａ（３４１ｂ，３４１ｃ，３４１ｄ）は、障害が発生したプロセッシングエレメント２０ａ〜２０ｄの役割（障害が発生したプロセッシングエレメント２０ａ〜２０ｄが元データを記憶するものか、バックアップデータを記憶するものかなど）に応じて異なる方法で復旧処理を実行する。この復旧処理についても後に詳しく説明する。
【００５９】
ディスク装置４０ａ（４０ｂ，４０ｃ，４０ｄ）は、ディレクトリデータ４００ａ（４００ｂ，４００ｃ，４００ｄ）、ディレクトリバックアップデータ４０１ａ（４０１ｂ，４０１ｃ，４０１ｄ）、プライマリデータ４０２ａ（４０２ｂ，４０２ｃ，４０２ｄ）、バックアップデータ４０３ａ（４０３ｂ，４０３ｃ，４０３ｄ）を記憶する。
【００６０】
ディレクトリデータ４００ａ（４００ｂ，４００ｃ，４００ｄ）は、Ｆａｔ−Ｂｔｒｅｅにより構成されたディレクトリのデータである。このディレクトリデータ４００ａ（４００ｂ，４００ｃ，４００ｄ）は、図２に示したＢ−ｔｒｅｅの部分木に相当するデータである。
【００６１】
ディレクトリバックアップデータ４０１ａ（４０１ｂ，４０１ｃ，４０１ｄ）は、他のプロセッシングエレメント２０ｂ〜２０ｄのディスク装置４０ｂ〜４０ｄにより記憶されたディレクトリデータのバックアップデータである。
【００６２】
プライマリデータ４０２ａ（４０２ｂ，４０２ｃ，４０２ｄ）は、トランザクションにおける各種データ処理の実行対象となるデータである。バックアップデータ４０３ａ（４０３ｂ，４０３ｃ，４０３ｄ）は、他のプロセッシングエレメント２０ｂ〜２０ｄのディスク装置４０ｂ〜４０ｄにより記憶されたプライマリデータのバックアップデータである。
【００６３】
つぎに、非同期ｎｅｉｇｈｂｏｒ−ＷＡＬプロトコルについて説明する。図６は、非同期ｎｅｉｇｈｂｏｒ−ＷＡＬプロトコルについて説明するシーケンス図である。本実施例では、トランザクションのログオーバーヘッドを抑制するため、非同期ｎｅｉｇｈｂｏｒ−ＷＡＬプロトコルを用いる。
【００６４】
この非同期ｎｅｉｇｈｂｏｒ−ＷＡＬプロトコルでは、元データを記憶するプライマリプロセッシングエレメントは、ログフラッシュ要求を受け付けた場合に（ステップＳ１０１）、プライマリプロセッシングエレメントのコントローラに備えられたメモリにログを書き込む（ステップＳ１０２）。
【００６５】
さらに、プライマリプロセッシングエレメントは、メモリに書き込んだログの情報を含んだログメッセージを、バックアップデータを記憶するバックアッププロセッシングエレメントに送信する（ステップＳ１０３）。
【００６６】
バックアッププロセッシングエレメントは、このログメッセージを受信すると、バックアッププロセッシングエレメントのコントローラに備えられたメモリにログを書き込み（ステップＳ１０４）、非同期ｎｅｉｇｈｂｏｒ−ＷＡＬプロトコルを用いたログの書き込み処理を終了する。
【００６７】
この非同期ｎｅｉｇｈｂｏｒ−ＷＡＬプロトコルでは、バックアッププロセッシングエレメントは、ログの書き込み処理の完了を示すＡＣＫメッセージをプライマリプロセッシングエレメントに送信しないので、ログ書き込みの同期はとられない。また、ログはディスク装置に書き込まれるのではなく、メモリに書き込まれるので、ログオーバーヘッドを大幅に抑制することができる。一方、ここで、バックアッププロセッシングエレメントからＡＣＫメッセージをプライマリプロセッシングエレメントに送信し、ログ書き込みの同期を取る場合を同期ｎｅｉｇｈｂｏｒ−ＷＡＬプロトコルと呼ぶ。
【００６８】
つぎに、本実施例に係るＢＡ−１．５フェーズコミットプロトコルについて説明する。図７は、本実施例に係るＢＡ−１．５フェーズコミットプロトコルについて説明するシーケンス図である。
【００６９】
図７では、各プロセッシングエレメント２０ａ〜２０ｄは、プライマリマスター、バックアップマスター、プライマリコホート、バックアップコホートの異なる役割をそれぞれ担っている。
【００７０】
プライマリマスターは、クライアント１０ａ〜１０ｃからトランザクションの実行要求を受け付け、他のプロセッシングエレメント２０ａ〜２０ｄに当該トランザクションにおける各種オペレーションの実行要求を送信するプロセッシングエレメントである。バックアップマスターは、トランザクションに係る各種ログをプライマリマスターから取得してバックアップ用に記憶するプロセッシングエレメントである。
【００７１】
プライマリコホートは、トランザクションにおいて更新される元データを記憶したプロセッシングエレメントである。バックアップコホートは、プライマリコホートにより記憶されたデータのバックアップデータを記憶するプロセッシングエレメントである。
【００７２】
以下の説明においては、プライマリマスター、バックアップマスター、プライマリコホート、バックアップコホートはそれぞれ、プロセッシングエレメント２０ａ、プロセッシングエレメント２０ｂ、プロセッシングエレメント２０ｃ、プロセッシングエレメント２０ｄであるものとする。なお、プロセッシングエレメント２０ｃ（プライマリコホート）およびプロセッシングエレメント２０ｄ（バックアップコホート）はそれぞれ１台だけでなく、複数台あるものとする。
【００７３】
まず、プロセッシングエレメント２０ａのトランザクション実行部３４０ａは、クライアント１０ａ〜１０ｃからトランザクションの実行要求を受け付けた場合に、メンバーシップログを生成し、メモリ３３ａにログ３３０ａとして記憶するとともに、そのメンバーシップログをプロセッシングエレメント２０ｂに送信し、プロセッシングエレメント２０ｂのメモリ３３ｂにメンバーシップログをログ３３０ｂとして記憶させる（ステップＳ２０１）。
【００７４】
ここで、メンバーシップログは、トランザクションにおいて実行される各種オペレーションの対象データを記憶しているプロセッシングエレメント２０ｃの情報であり、ディレクトリデータ４００ａに基づいて生成される。
【００７５】
また、プロセッシングエレメント２０ａのトランザクション実行部３４０ａは、メンバーシップログを送信すべきプロセッシングエレメント２０ｂをバックアップディスク管理データ３３１ｂを参照することにより判定し、そのプロセッシングエレメント２０ｂにメンバーシップログを送信する。
【００７６】
プロセッシングエレメント２０ｂのトランザクション実行部３４０ｂは、プロセッシングエレメント２０ａからメンバーシップログを受信し、そのメンバーシップログをメモリ３３ｂにログ３３０ｂとして記憶する。
【００７７】
プロセッシングエレメント２０ａのトランザクション実行部３４０ａは、メンバーシップログをプロセッシングエレメント２０ｂに送信した後、複数のプロセッシングエレメント２０ｃにトランザクションに係るオペレーションの実行要求メッセージを送信する（ステップＳ２０２）。ここで、オペレーションの実行要求メッセージを送信するプロセッシングエレメント２０ｃはメンバーシップログにより特定される。
【００７８】
各プロセッシングエレメント２０ｃのトランザクション実行部３４０ｃは、このオペレーションの実行要求メッセージを受信し、当該オペレーションを実行する。そして、トランザクション実行部３４０ｃは、当該オペレーションに係るログを生成し、図６で説明した非同期ｎｅｉｇｈｂｏｒ−ＷＡＬプロトコルを用いて、そのログをメモリ３３ｃにログ３３０ｃとして記憶するとともに、各プロセッシングエレメント２０ｃのバックアップデータを記憶するプロセッシングエレメント２０ｄにログを送信する（ステップＳ２０３）。このログを受信したプロセッシングエレメント２０ｄのトランザクション実行部３４０ｄは、送信されたログをメモリ３３ｄにログ３３０ｄとして記憶する。
【００７９】
プロセッシングエレメント２０ｃのトランザクション実行部３４０ｃは、オペレーションの実行が完了すると、オペレーションの実行要求メッセージを送信したプロセッシングエレメント２０ａに対して、オペレーションの実行が完了したことを示すＡＣＫメッセージを送信する（ステップＳ２０４）。
【００８０】
プロセッシングエレメント２０ａのトランザクション実行部３４０ａは、プロセッシングエレメント２０ｃのトランザクション実行部３４０ｃからＡＣＫメッセージを受信し、ＡＣＫ管理データ３３２ａのＡＣＫフラグを「１」に更新する。
【００８１】
そして、トランザクション実行部３４０ａは、プロセッシングエレメント２０ｃに対して実行を要求するオペレーションがさらにある場合、つぎのオペレーションの実行要求メッセージをプロセッシングエレメント２０ｃに送信する（ステップＳ２０５）。
【００８２】
以下、プロセッシングエレメント２０ａのトランザクション実行部３４０ａ、プロセッシングエレメント２０ｃのトランザクション実行部３４０ｃ、および、プロセッシングエレメント２０ｄのトランザクション実行部３４０ｄは、ステップＳ２０２〜ステップＳ２０４と同様の処理を、すべてのオペレーションが完了するまで繰り返す（ステップＳ２０６〜ステップＳ２１０）。
【００８３】
そして、プロセッシングエレメント２０ａのトランザクション実行部３４０ａは、すべてのオペレーションに対応するＡＣＫメッセージをメンバーシップログに登録されたすべてのプロセッシングエレメント２０ｃから受信したことを確認した後、トランザクションに対するコミット処理（またはアボート処理）の実行要求に係る情報を含んだディシジョンログをメモリ３３ａにログ３３０ａとして記憶するとともに、プロセッシングエレメント２０ｂにそのディシジョンログを送信する（ステップＳ２１１）。
【００８４】
プロセッシングエレメント２０ｂのトランザクション実行部３４０ｂは、プロセッシングエレメント２０ａからディシジョンログを受信し、そのディシジョンログをメモリ３３ｂにログ３３０ｂとして記憶する。
【００８５】
そして、プロセッシングエレメント２０ａのトランザクション実行部３４０ａは、トランザクションに対するコミット処理（またはアボート処理）の実行を要求するディシジョンメッセージをメンバーシップログに登録されたすべてのプロセッシングエレメント２０ｃに送信する（ステップＳ２１２）。
【００８６】
プロセッシングエレメント２０ｃのトランザクション実行部３４０ｃは、このディシジョンメッセージを受信し、トランザクションのコミット処理（またはアボート処理）を実行して、ペンディング状態となる。このペンディング状態では、トランザクション実行部３４０ｃは、当該ディシジョンに係るログを生成し、同期ｎｅｉｇｈｂｏｒ−ＷＡＬプロトコルを用いて、そのログをメモリ３３ｃにログ３３０ｃとして記憶するとともに、プロセッシングエレメント２０ｄに送信する（ステップＳ２１３）。
【００８７】
このログを受信したプロセッシングエレメント２０ｄのトランザクション実行部３４０ｄは、送信されたログをメモリ３３ｄにログ３３０ｄとして記憶する。そして、トランザクション実行部３４０ｄは、プロセッシングエレメント２０ｃから受信し、メモリ３３ｄにログ３３０ｄとして情報が記憶されたすべてのオペレーションを実行する。
【００８８】
オペレーションの実行後、トランザクション実行部３４０ｄは、オペレーションの実行完了を示すＡＣＫメッセージをプロセッシングエレメント２０ｃに送信する（ステップＳ２１４）。ＡＣＫメッセージを送信した後、トランザクション実行部３４０ｄは、このトランザクションに係るすべてのログをメモリ３３ｄから消去し、メモリ領域を開放する。
【００８９】
プロセッシングエレメント２０ｃのトランザクション実行部３４０ｃは、このＡＣＫメッセージを受信すると、プロセッシングエレメント２０ａに対して、プロセッシングエレメント２０ｃおよびプロセッシングエレメント２０ｄにおいてディシジョン処理が完了したことを示すディシジョンＡＣＫメッセージを送信する（ステップＳ２１５）。ディシジョンＡＣＫメッセージを送信した後、トランザクション実行部３４０ｃは、このトランザクションに係るすべてのログをメモリ３３ｃから消去し、メモリ領域を開放する。
【００９０】
プロセッシングエレメント２０ａのトランザクション実行部３４０ａは、ディシジョンＡＣＫメッセージをメンバーシップログに登録されたすべてのプロセッシングエレメント２０ｃから受信すると、トランザクションのディシジョン処理が完了したことを示すエンドログを生成し、非同期ｎｅｉｇｈｂｏｒ−ＷＡＬプロトコルを用いて、エンドログをメモリ３３ａにログ３３０ａとして記憶するとともに、プロセッシングエレメント２０ｂにエンドログを送信する（ステップＳ２１６）。
【００９１】
このエンドログを受信したプロセッシングエレメント２０ｂのトランザクション実行部３４０ｂは、送信されたエンドログをメモリ３３ｂにログ３３０ｂとして記憶し、このＢＡ−１．５フェーズコミットプロトコルを用いたトランザクション処理を終了する。
【００９２】
なお、ステップＳ２１３において、プライマリコホートであるプロセッシングエレメント２０ｃは、ディシジョンに係るログをバックアップコホートであるプロセッシングエレメント２０ｄに送信し、それに対するＡＣＫメッセージを待ち受けるが、プロセッシングエレメント２０ｄに何らかの障害が発生し、ＡＣＫメッセージの受信ができなかった場合には、メモリに記憶したログを消去することなく、プライマリマスターであるプロセッシングエレメント２０ａにディシジョンＡＣＫメッセージを送信する。このログは、後にプロセッシングエレメント２０ｄの復旧処理をおこなう際に用いられる。
【００９３】
このように、プライマリコホートであるプロセッシングエレメント２０ｃは、ディシジョン処理においてペンディング状態を経るが、バックアップコホートであるプロセッシングエレメント２０ｄのペンディング状態における処理結果はトランザクションの最終結果に影響を及ぼさない。
【００９４】
ＢＡ−１．５フェーズコミットプロトコルという名称は、このようなペンディング状態におけるプライマリコホートのディシジョン処理を０．５相とカウントし、プライマリマスターのディシジョン処理を１相とカウントすることにより命名されたものである。
【００９５】
また、上記トランザクション処理では、トランザクション処理が終了したログをメモリ３３ｃ、３３ｄから消去していくため、メモリオーバーフローの発生を抑制することができる。また、メモリオーバーフローが発生する場合には、ログの一部をディスク装置４０ｃ、４０ｄに書き込むこととしてもよい。
【００９６】
つぎに、プライマリマスター、バックアップマスター、プライマリコホート、バックアップコホートのいずれかに障害が発生した場合の復旧処理について説明する。なお、プライマリコホートであるプロセッシングエレメント２０ｃ、および、バックアップコホートであるプロセッシングエレメント２０ｄはそれぞれ１台だけでなく、複数台あるものとする。
【００９７】
（１）バックアップマスターに障害が発生した場合
バックアップマスターであるプロセッシングエレメント２０ｂの障害は、トランザクション処理には何の影響も及ぼさない。プライマリマスターであるプロセッシングエレメント２０ａの障害復旧処理部３４１ａは、プロセッシングエレメント２０ｂに障害が発生したことを検出する。
【００９８】
障害の発生は、常時接続が確立されているソケット通信がタイムアウトなどにより切断されたか否かや、プロセッシングエレメント２０ｂから障害が発生したことを示す障害発生メッセージを受信したか否かなどを調べることにより検出される。
【００９９】
そして、障害が検出された場合には、プロセッシングエレメント２０ａのトランザクション実行部３４０ａは、非同期ｎｅｉｇｈｂｏｒ−ＷＡＬプロトコルによりプロセッシングエレメント２０ｂのメモリ３３ｂにログを書き込むことはせず、プロセッシングエレメント２０ａのメモリ３３ａにだけログを書き込み、その後は通常の処理を継続する。
【０１００】
（２）プライマリマスターに障害が発生した場合
（２−１）トランザクションのディシジョン前に障害が発生した場合
図８は、ディシジョン前にプライマリマスターに障害が検出された場合の復帰処理について説明するシーケンス図である。図８に示すように、バックアップマスターであるプロセッシングエレメント２０ｂの障害復旧処理部３４１ｂは、プライマリマスターであるプロセッシングエレメント２０ａに発生した障害を検出する（ステップＳ３０１）。
【０１０１】
そして、障害復旧処理部３４１ｂは、メンバーシップログに登録されたプライマリコホートであるすべてのプロセッシングエレメント２０ｃおよびバックアップコホートであるプロセッシングエレメント２０ｄにトランザクションの実行を中止するアボートメッセージを送信する（ステップＳ３０２、ステップＳ３０３）。プロセッシングエレメント２０ｃの障害復旧処理部３４１ｃおよびプロセッシングエレメント２０ｄの障害復旧処理部３４１ｄは、このアボートメッセージを受信して、トランザクションの実行を中止する。
【０１０２】
（２−２）トランザクションのディシジョン処理実行決定後で、すべてのプライマリコホートからＡＣＫメッセージを受信する前に障害が発生した場合
図９は、ディシジョン処理実行決定後、すべてのプライマリコホートからＡＣＫメッセージを受信する前にプライマリマスターに障害が検出された場合の復帰処理について説明するシーケンス図である。
【０１０３】
ここで、バックアップマスターであるプロセッシングエレメント２０ｂは、プライマリマスターであるプロセッシングエレメント２０ａがディシジョン処理の実行を決定した後、プロセッシングエレメント２０ａからディシジョンログを受信するので、ディシジョン処理の実行決定を検知することができる。
【０１０４】
図９に示すように、バックアップマスターであるプロセッシングエレメント２０ｂの障害復旧処理部３４１ｂは、プライマリマスターであるプロセッシングエレメント２０ａに発生した障害を検出する（ステップＳ４０１）。そして、障害復旧処理部３４１ｂは、メンバーシップログに登録されたすべてのプロセッシングエレメント２０ｃに対してディシジョンメッセージを送信する（ステップＳ４０２）。
【０１０５】
ここで、プロセッシングエレメント２０ｂのメモリ３３ｂには、メンバーシップログがすでに記憶されているので、障害復旧処理部３４１ｂは、ディシジョンメッセージを送信すべきすべてのプロセッシングエレメント２０ｃをすべて検出することができる。
【０１０６】
このディシジョンメッセージを受信したプロセッシングエレメント２０ｃのトランザクション実行部３４０ｃは、ディシジョン処理を実行するとともに、当該ディシジョン処理に係るログを生成し、同期ｎｅｉｇｈｂｏｒ−ＷＡＬプロトコルを用いてバックアップコホートであるプロセッシングエレメント２０ｄにログを送信する（ステップＳ４０３）。
【０１０７】
このログを受信したプロセッシングエレメント２０ｄのトランザクション実行部３４０ｄは、プロセッシングエレメント２０ｃから受信したログに情報が含まれるすべてのオペレーションを実行し、オペレーションの実行完了を示すＡＣＫメッセージをプロセッシングエレメント２０ｃに送信する（ステップＳ４０４）。
【０１０８】
プロセッシングエレメント２０ｃのトランザクション実行部３４０ｃは、このＡＣＫメッセージを受信すると、プロセッシングエレメント２０ｂに対して、プロセッシングエレメント２０ｃおよびプロセッシングエレメント２０ｄにおいてディシジョン処理が完了したことを示すディシジョンＡＣＫメッセージを送信する（ステップＳ４０５）。
【０１０９】
プロセッシングエレメント２０ｂの障害復旧処理部３４１ｂは、ディシジョンＡＣＫメッセージを受信すると、ディシジョン処理が完了したことを示すエンドログを生成し、エンドログをメモリ３３ｂにログ３３０ｂとして記憶してトランザクション処理を終了する。
【０１１０】
（３）バックアップコホートに障害が発生した場合
トランザクション処理においては、バックアップコホートの障害はプライマリマスターおよびバックアップマスターには影響を及ぼさない。実際、プライマリマスターは、ディシジョン処理の実行以前には、プライマリコホートとバックアップコホートとの間で同期処理がおこなわれないので、バックアップコホートの障害を検出できない。
【０１１１】
図１０は、バックアップコホートに異常が検出された場合の復帰処理について説明するシーケンス図である。図１０に示すように、まず、プライマリコホートであるプロセッシングエレメント２０ｃの障害復旧処理部３４１ｃは、バックアップコホートであるプロセッシングエレメント２０ｄに発生した障害を検出する（ステップＳ５０１）。
【０１１２】
障害復旧処理部３４１ｃは、障害を検出すると、プライマリマスターであるプロセッシングエレメント２０ａにＡＣＫメッセージを送信する（ステップＳ５０２）。ここで、トランザクション実行部３４０ｃは、メモリ３３ｃに記憶しているログを消去せず、保持しておく。
【０１１３】
その後、障害復旧処理部３４１ｃは、プロセッシングエレメント２０ｄの復旧を検出する（ステップＳ５０３）。そして、障害復旧処理部３４１ｃは、復旧の検出後、メモリ３３ｃに保持していたログをプロセッシングエレメント２０ｄに送信する（ステップＳ５０４）。プロセッシングエレメント２０ｄのトランザクション実行部３４０ｄは、このログを受信してメモリ３３ｄに記憶するとともに、ログを用いてデータを最新の状態に更新する。
【０１１４】
（４）プライマリコホートに障害が発生した場合
（４−１）最後のオペレーションのプリペアード状態前に障害が発生した場合
プライマリマスターであるプロセッシングエレメント２０ａの障害復旧処理部３４１ａが、最後のオペレーションのプリペアード状態前（図７のログライト（ログｎ）以前）に、プライマリコホートであるプロセッシングエレメント２０ｃの１つに障害を検出した場合、障害復旧処理部３４１ａは、障害を検出したプロセッシングエレメント２０ｃ以外のすべてのプライマリコホートおよびバックアップコホートに対して、トランザクションの中止を要求するアボートメッセージを送信する。
【０１１５】
（４−２）最後のオペレーションのプリペアード状態以降に障害が発生した場合
この状況においては、プライマリマスターであるプロセッシングエレメント２０ａは、プライマリコホートであるすべてのプロセッシングエレメント２０ｃからオペレーションの実行要求に対するＡＣＫメッセージを収集し、すべてのプロセッシングエレメント２０ｃに対してディシジョンメッセージを送信する。
【０１１６】
各プロセッシングエレメント２０ｃにおいてはオペレーションの実行は完了しているので、この段階で障害が発生した場合には、プロセッシングエレメント２０ａは、トランザクションを中止するのではなく、そのまま継続させる。
【０１１７】
図１１は、最後のオペレーションのプリペアード状態以降にプライマリコホートに障害が検出された場合の復帰処理について説明するシーケンス図である。図１１に示すように、まず、プライマリマスターであるプロセッシングエレメント２０ａの障害復旧処理部３４１ａは、プライマリコホートであるプロセッシングエレメント２０ｃに発生した障害を検出する（ステップＳ６０１）。
【０１１８】
そして、障害復旧処理部３４１ａは、バックアップコホートであるプロセッシングエレメント２０ｄに、トランザクションに対するディシジョン処理の実行を要求するディシジョンメッセージを送信する（ステップＳ６０２）。
【０１１９】
プロセッシングエレメント２０ｄのトランザクション実行部３４０ｄは、このディシジョンメッセージを受信し、ディシジョン処理を実行して、ディシジョンＡＣＫメッセージをプロセッシングエレメント２０ａに送信する（ステップＳ６０３）。ここで、トランザクション実行部３４０ｄは、メモリ３３ｄに記憶しているログを消去せず、保持しておく。
【０１２０】
プロセッシングエレメント２０ｃの障害復旧処理部３４１ｃは、障害から復旧した後、プロセッシングエレメント２０ｄに対して、ログの問い合わせをおこなう（ステップＳ６０４）。
【０１２１】
プロセッシングエレメント２０ｄの障害復旧処理部３４１ｄは、この問い合わせを受け付けると、プロセッシングエレメント２０ｃにログを送信する（ステップＳ６０５）。プロセッシングエレメント２０ｃの障害復旧処理部３４１ｃは、このログを用いて、データを最新の状態に更新する。
【０１２２】
本実施例にて説明してきた各種の処理は、あらかじめ用意されたプログラムをコンピュータで実行することによって実現することができる。そこで、以下では、上記各種処理を実現するプログラムを実行するコンピュータの一例について説明する。
【０１２３】
図１２は、図３に示したコントローラ３０ａ〜３０ｄとなるコンピュータのハードウェア構成を示す図である。このコンピュータは、ネットワークを介して他のコンピュータとの間でデータの授受をおこなうネットワークインターフェース１００、ディスク装置との間でデータの授受をおこなうディスクインターフェース１０１、ＣＰＵ（Central Processing Unit）１０２、ＲＯＭ（Read Only Memory）１０３、ＲＡＭ（Random Access Memory）１０４をバス１０５で接続して構成される。
【０１２４】
そして、ＲＯＭ１０３には、コントローラ３０ａ〜３０ｄの機能と同様の機能を発揮するデータ記憶制御プログラム１０３ａが記憶されている。なお、このデータ記憶制御プログラム１０３ａについては、適宜分散して記憶することとしてもよい。
【０１２５】
そして、ＣＰＵ１０２が、データ記憶制御プログラム１０３ａをＲＯＭ１０３から読み出して実行することにより、データ記憶制御プロセス１０２ａが起動され、機能するようになる。なお、ここではＣＰＵ１０２がデータ記憶制御プログラム１０３ａを実行することしているが、ＭＣＵ（Micro Controller Unit）やＭＰＵ（Micro Processing Unit）がデータ記憶制御プログラム１０３ａを実行することとしてもよい。
【０１２６】
このデータ記憶制御プログラム１０３ａは、図３に示したトランザクション実行部３４０ａ（３４０ｂ，３４０ｃ，３４０ｄ）、障害復旧処理部３４１ａ（３４１ｂ，３４１ｃ，３４１ｄ）に対応する。
【０１２７】
また、ＣＰＵ１０２は、ＲＡＭ１０４にログ１０４ａ、バックアップディスク管理データ１０４ｂ、ＡＣＫ管理データ１０４ｃを記憶させるとともに、ＲＡＭ１０４からそれらのデータを読み出して各種データ処理を実行する。
【０１２８】
ログ１０４ａ、バックアップディスク管理データ１０４ｂ、ＡＣＫ管理データ１０４ｃは、図３に示したログ３３０ａ（３３０ｂ，３３０ｃ，３３０ｄ）、バックアップディスク管理データ３３１ａ（３３１ｂ，３３１ｃ，３３１ｄ）、ＡＣＫ管理データ３３２ａ（３３２ｂ，３３２ｃ，３３２ｄ）にそれぞれ対応する。
【０１２９】
つぎに、本実施例に係るＢＡ−１．５フェーズコミットプロトコル（ＢＡ−１．５ＰＣ）、２フェーズコミットプロトコル（２ＰＣ）、および、アーリープリペアプロトコル（ＥＰ）間でのオーバーヘッドの比較について述べる。ここでいうオーバーヘッドには、トランザクションのオペレーション処理、コミット処理におけるメッセージ交換と、強制ディスク書き込みとの両方を含んでいる。
【０１３０】
図１３は、各プロトコルのコミットされたトランザクションのオーバーヘッドを示す図である。ここで、Ｐは、トランザクションにおいて実行されるオペレーションの数であり、Ｎは、オペレーションを実行するコホートの数である。
【０１３１】
図１３に示されるように、ＢＡ−１．５フェーズコミットプロトコル、２フェーズコミットプロトコル、アーリープリペアプロトコルにおいて送信されるメッセージ数はそれぞれ、３＋３Ｐ＋４Ｎ、２Ｐ＋８Ｎ、４Ｐ＋２Ｎとなる。
【０１３２】
また、ＢＡ−１．５フェーズコミットプロトコル、２フェーズコミットプロトコル、アーリープリペアプロトコルにおいて実行されるディスク装置への強制ログライト数はそれぞれ、０、４Ｎ＋１、２Ｐ＋２となる。
【０１３３】
ＢＡ−１．５フェーズコミットプロトコルのメッセージ数は、図７から得られる。また、ＢＡ−１．５フェーズコミットプロトコルでは、非同期ｎｅｉｇｈｂｏｒ−ＷＡＬプロトコルを用いるため、ディスク装置への強制ログライトは不要であり、強制ログライト数は０となる。
【０１３４】
２フェーズコミットプロトコルでは、コホートは、コミット処理時に強制ディスクライトを２回実行する必要がある（１回は投票時、もう１回はディシジョン時）。一方、マスターは、ディシジョン時に１回強制ディスクライトを実行する必要がある。
【０１３５】
また、マスターは、各コホートとの間でメッセージを２往復分交換する必要がある。したがって、トランザクションにおいてＰ個のオペレーションをおこなう場合には、交換されるメッセージの数は４Ｎ＋Ｐとなり、強制ディスクライトの数は２Ｎ＋１となる。
【０１３６】
この２フェーズコミットプロトコルを自律ディスクに適用した場合、プライマリコホートは、オペレーションおよびコミット処理時にバックアップコホートにメッセージを送信してその応答を受信する。また、コミット処理時には強制ログライトが２回発生する。したがって、２フェーズコミットプロトコルにおけるメッセージ数は８Ｎ＋２Ｐとなり、強制ログライト数は４Ｎ＋１となる。
【０１３７】
アーリープリペアプロトコルでは、コホートは、オペレーションごとに更新データとともにログをディスク装置に強制ライトする。そして、コホートは、マスターにオペレーションに対するＡＣＫメッセージを送信する。
【０１３８】
コミット時には、コホートは、中止されたトランザクションに対してのみ強制ログライトをおこない、中止されたトランザクションに対してのみＡＣＫメッセージを送信する。マスターがおこなう強制ログライトは、トランザクションの開始時におけるメンバーシップログの強制ログライトと、コミット時におけるディシジョンログの強制ログライトである。したがって、アーリープリペアプロトコルにおけるメッセージ数は２Ｐ＋Ｎとなり、強制ログライト数はＰ＋２となる。
【０１３９】
このアーリープリペアプロトコルを自律ディスクに適用した場合、プライマリコホートはバックアップコホートに対してオペレーションおよびディシジョンメッセージを送信する必要があるため、メッセージ数は４Ｐ＋２Ｎとなり、強制ログライト数は２Ｐ＋２となる。
【０１４０】
図１３からわかるように、ＢＡ−１．５フェーズコミットプロトコルでは強制ログライトが発生せず、２フェーズコミットプロトコル、アーリープリペアプロトコルと比較してデータ処理を高速におこなうことができる。また、Ｎ＞３で、２Ｎ＋３＜Ｐ＜４Ｎ−３の関係をＰが満足する場合には、メッセージ数も最小となり、他の２つのプロトコルよりもデータ処理を効率的におこなうことができる。
【０１４１】
つぎに、ＢＡ−１．５フェーズコミットプロトコル、２フェーズコミットプロトコル、および、アーリープリペアプロトコル間でのスループットの比較について述べる。図１４は、各プロトコルのスループットの比較結果を示す図である。図１４には、２４台のディスク装置を有する自律ディスクにおけるさまざまなサイズのデータのインサート処理に係るスループットが示されている。
【０１４２】
図１４に示すように、ＢＡ−１．５フェーズコミットプロトコルのスループットは、すべてのデータサイズにおいて、２フェーズコミットプロトコルおよびアーリープリペアプロトコルのスループットを上回っている。これは、ＢＡ−１．５フェーズコミットプロトコルでは、コミット処理におけるメッセージ交換の複雑さを解消し、強制ログライトを不要としたためである。
【０１４３】
図１５、１６および１７はそれぞれ、ＢＡ−１．５フェーズコミットプロトコル、２ＰＣプロトコル、および、ＥＰプロトコルのスループットを示す図である。図１５、１６および１７に示されるように、いずれのプロトコルにおいてもディスク装置（ノード）の数が増えるにつれてスループットが増大することがわかる。
【０１４４】
そして、ＢＡ−１．５フェーズコミットプロトコルにおけるスループットは、ディスク装置の数がいくつであっても、２ＰＣプロトコルおよびＥＰプロトコルのスループットよりも大きくなっている。このように、自律ディスクにＢＡ−１．５フェーズコミットプロトコルを適用することにより、データ処理を高速におこなうことができる。
【０１４５】
上述してきたように、本実施例では、プライマリマスターであるプロセッシングエレメント２０ａが、データに対するオペレーションの実行要求メッセージを送信し、プライマリコホートである１つ以上のプロセッシングエレメント２０ｂが、オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対するＡＣＫメッセージをプロセッシングエレメント２０ａに送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、バックアップコホートである１つ以上のプロセッシングエレメント２０ｄが、１つ以上のプロセッシングエレメント２０ｃにより送信されたメッセージを受信して各オペレーションに係るログ情報をメモリ３３ｄに記憶し、プロセッシングエレメント２０ａが、１つ以上のプロセッシングエレメント２０ｃにより送信されたＡＣＫメッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信し、１つ以上のプロセッシングエレメント２０ｃは、プロセッシングエレメント２０ａにより送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、１つ以上のプロセッシングエレメント２０ｃのそれぞれに接続されたディスク装置４０ｃに記憶されたデータを更新するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、１つ以上のプロセッシングエレメント２０ｄが、１つ以上のプロセッシングエレメント２０ｃにより送信されたメッセージを受信し、メモリ３３ｄに記憶されたログ情報に基づいてディシジョン処理を実行して、１つ以上のプロセッシングエレメント２０ｄのそれぞれに接続されたディスク装置４０ｄに記憶されたバックアップデータの更新をおこなうこととしたので、トランザクションに係るオーバーヘッドの増大を抑制し、データ処理の効率を向上させることができる。
【０１４６】
また、本実施例では、バックアップコホートである１つ以上のプロセッシングエレメント２０ｄが、ディシジョン処理を実行した後、ディシジョン処理の完了を示すディシジョン完了メッセージを送信し、プライマリコホートである１つ以上のプロセッシングエレメント２０ｃが、１つ以上のプロセッシングエレメント２０ｄからディシジョン完了メッセージを受信した場合に、プライマリマスターであるプロセッシングエレメント２０ａに対してデータの同期処理が完了したことを示す同期完了メッセージを送信することとしたので、データとバックアップデータとの間で同期を確実にとることができる。
【０１４７】
また、本実施例では、プライマリマスターであるプロセッシングエレメント２０ａが、オペレーションの実行要求メッセージを送信する１つ以上のプロセッシングエレメント２０ｃを示すメンバーシップログ情報を生成してバックアップマスターであるプロセッシングエレメント２０ｂに送信し、プロセッシングエレメント２０ｂが、メンバーシップログ情報をメモリ３３ｂに記憶し、プロセッシングエレメント２０ａが、ディシジョン処理の実行を決定した場合にディシジョン処理の実行決定を示すディシジョンログ情報を生成してプロセッシングエレメント２０ｂに送信し、プロセッシングエレメント２０ｂが、ディシジョンログ情報を受信した後、プロセッシングエレメント２０ａに係る障害を検出した場合に、メンバーシップログ情報に基づいてオペレーションに対するディシジョン処理の実行要求メッセージを１つ以上のプロセッシングエレメント２０ｃに送信することとしたので、プロセッシングエレメント２０ａに係る障害が発生した場合でも、ディシジョン処理を迅速に実行することができる。
【０１４８】
また、本実施例では、プライマリコホートである１つ以上のプロセッシングエレメント２０ｃが、プライマリマスターであるプロセッシングエレメント２０ａからディシジョン処理の実行要求メッセージを受信した後、バックアップコホートである１つ以上のプロセッシングエレメント２０ｄに係る障害を検出した場合に、プロセッシングエレメント２０ａに対してディシジョン完了メッセージを送信し、障害が復旧した場合に、１つ以上のプロセッシングエレメント２０ｄが、メモリ３３ｄに記憶されたログ情報に基づいてディシジョン処理を実行して、１つ以上のプロセッシングエレメント２０ｄのそれぞれに接続されたディスク装置４０ｄに記憶されたバックアップデータを更新することとしたので、プロセッシングエレメント２０ｄに係る障害が発生した場合でも、ディシジョン処理を迅速に実行することができる。
【０１４９】
また、本実施例では、プライマリマスターであるプロセッシングエレメント２０ａが、プライマリコホートである１つ以上のプロセッシングエレメント２０ｃにより送信されたすべての応答メッセージを受信した後、１つ以上のプロセッシングエレメント２０ｃのうちのいずれかに係る障害を検出した場合に、１つ以上のプロセッシングエレメント２０ｄにオペレーションに対するディシジョン処理の実行要求メッセージを送信し、１つ以上のプロセッシングエレメント２０ｄが、プロセッシングエレメント２０ａにより送信されたディシジョン処理の実行要求メッセージを受信した場合に、ディシジョン処理を実行し、障害が復旧した場合にディシジョン処理に係るログ情報を障害が発生したプロセッシングエレメント２０ｃに送信し、プロセッシングエレメント２０ｃは、ディシジョン処理に係るログ情報を受信し、受信したログ情報に基づいてディシジョン処理を実行することとしたので、プロセッシングエレメント２０ｃに係る障害が発生した場合でも、ディシジョン処理を迅速に実行することができる。
【０１５０】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、特許請求の範囲に記載した技術的思想の範囲内において種々の異なる実施例にて実施されてもよいものである。
【０１５１】
たとえば、図７のステップＳ２１５において、プライマリコホートは、バックアップコホートとの間でデータの同期をとった後に、プライマリマスターに対してディシジョンＡＣＫメッセージを送信しているが、バックアップコホートとのデータ同期を待たずに、ディシジョンＡＣＫメッセージを送信することとしてもよい。これにより、ディシジョン処理に要する時間をさらに短縮することができる。
【０１５２】
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。
【０１５３】
この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１５４】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０１５５】
さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵ（あるいはＭＣＵやＭＰＵ）および当該ＣＰＵ（あるいはＭＣＵやＭＰＵ）にて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１５６】
（付記１）データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部に記憶させる制御をおこなうデータ記憶制御装置であって、
データに対するオペレーションの実行要求メッセージを複数送信する第１の記憶制御部と、
前記オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対する応答メッセージを第１の記憶制御部に送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信する１つ以上の第２の記憶制御部と、
前記１つ以上の第２の記憶制御部により送信されたメッセージを受信して各オペレーションに係るログ情報をメモリに記憶する１つ以上の第３の記憶制御部と、
を備え、
前記第１の記憶制御部は、前記１つ以上の第２の記憶制御部により送信された応答メッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信し、
前記１つ以上の第２の記憶制御部は、第１の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、前記１つ以上の第２の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたデータの更新を制御するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、
前記１つ以上の第３の記憶制御部は、前記１つ以上の第２の記憶制御部により送信されたメッセージを受信し、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記１つ以上の第３の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新制御をおこなう
ことを特徴とするデータ記憶制御装置。
【０１５７】
（付記２）前記１つ以上の第３の記憶制御部は、前記ディシジョン処理を実行した後、ディシジョン処理の完了を示すディシジョン完了メッセージを送信し、前記１つ以上の第２の記憶制御部は、前記１つ以上の第３の記憶制御部からディシジョン完了メッセージを受信した場合に、前記第１の記憶制御部に対してデータの同期処理が完了したことを示す同期完了メッセージを送信することを特徴とする付記１に記載のデータ記憶制御装置。
【０１５８】
（付記３）オペレーションの実行要求メッセージを送信する１つ以上の第２の記憶制御部を示すメンバーシップログ情報をメモリに記憶する第４の記憶制御部をさらに備え、前記第１の記憶制御部は、前記メンバーシップログ情報を生成して第４の記憶制御部に送信するとともに、前記ディシジョン処理の実行を決定した場合にディシジョン処理の実行決定を示すディシジョンログ情報を生成して第４の記憶制御部に送信し、前記第４の記憶制御部は、前記ディシジョンログ情報を受信した後、前記第１の記憶制御部に係る障害を検出した場合に、前記メンバーシップログ情報に基づいてオペレーションに対するディシジョン処理の実行要求メッセージを前記１つ以上の第２の記憶制御部に送信することを特徴とする付記１または２に記載のデータ記憶制御装置。
【０１５９】
（付記４）前記１つ以上の第２の記憶制御部は、前記第１の記憶制御部からディシジョン処理の実行要求メッセージを受信した後、前記１つ以上の第３の記憶制御部に係る障害を検出した場合に、第１の記憶制御部に対して前記ディシジョン完了メッセージを送信し、前記障害が復旧した場合に、前記１つ以上の第３の記憶制御部は、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記１つ以上の第３の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新制御をおこなうことを特徴とする付記１、２または３に記載のデータ記憶制御装置。
【０１６０】
（付記５）前記第１の記憶制御部は、前記１つ以上の第２の記憶制御部により送信されたすべての応答メッセージを受信した後、前記１つ以上の第２の記憶制御部のうちのいずれかに係る障害を検出した場合に、前記１つ以上の第３の記憶制御部にオペレーションに対するディシジョン処理の実行要求メッセージを送信し、前記１つ以上の第３の記憶制御部は、第１の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合に、ディシジョン処理を実行し、前記障害が復旧した場合にディシジョン処理に係るログ情報を障害から復旧した第２の記憶制御部に送信し、障害から復旧した第２の記憶制御部は、ディシジョン処理に係るログ情報を受信し、受信したログ情報に基づいてディシジョン処理を実行することを特徴とする付記１〜４のいずれか１つに記載のデータ記憶制御装置。
【０１６１】
（付記６）複数のデータ記憶部を有し、データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部に記憶させるデータ記憶装置であって、
データに対するオペレーションの実行要求メッセージを複数送信する第１の記憶制御部と、
前記オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対する応答メッセージを第１の記憶制御部に送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信する１つ以上の第２の記憶制御部と、
前記１つ以上の第２の記憶制御部により送信されたメッセージを受信して各オペレーションに係るログ情報をメモリに記憶する１つ以上の第３の記憶制御部と、
を備え、
前記第１の記憶制御部は、前記１つ以上の第２の記憶制御部により送信された応答メッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信し、
前記１つ以上の第２の記憶制御部は、第１の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、前記１つ以上の第２の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたデータを更新するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、
前記１つ以上の第３の記憶制御部は、前記１つ以上の第２の記憶制御部により送信されたメッセージを受信し、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記１つ以上の第３の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新をおこなう
ことを特徴とするデータ記憶装置。
【０１６２】
（付記７）前記１つ以上の第３の記憶制御部は、前記ディシジョン処理を実行した後、ディシジョン処理の完了を示すディシジョン完了メッセージを送信し、前記１つ以上の第２の記憶制御部は、前記１つ以上の第３の記憶制御部からディシジョン完了メッセージを受信した場合に、前記第１の記憶制御部に対してデータの同期処理が完了したことを示す同期完了メッセージを送信することを特徴とする付記６に記載のデータ記憶装置。
【０１６３】
（付記８）オペレーションの実行要求メッセージを送信する１つ以上の第２の記憶制御部を示すメンバーシップログ情報をメモリに記憶する第４の記憶制御部をさらに備え、前記第１の記憶制御部は、前記メンバーシップログ情報を生成して第４の記憶制御部に送信するとともに、前記ディシジョン処理の実行を決定した場合にディシジョン処理の実行決定を示すディシジョンログ情報を生成して第４の記憶制御部に送信し、前記第４の記憶制御部は、前記ディシジョンログ情報を受信した後、前記第１の記憶制御部に係る障害を検出した場合に、前記メンバーシップログ情報に基づいてオペレーションに対するディシジョン処理の実行要求メッセージを前記１つ以上の第２の記憶制御部に送信することを特徴とする付記６または７に記載のデータ記憶装置。
【０１６４】
（付記９）前記１つ以上の第２の記憶制御部は、前記第１の記憶制御部からディシジョン処理の実行要求メッセージを受信した後、前記１つ以上の第３の記憶制御部に係る障害を検出した場合に、第１の記憶制御部に対して前記ディシジョン完了メッセージを送信し、前記障害が復旧した場合に、前記１つ以上の第３の記憶制御部は、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記１つ以上の第３の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータを更新することを特徴とする付記６、７または８に記載のデータ記憶装置。
【０１６５】
（付記１０）前記第１の記憶制御部は、前記１つ以上の第２の記憶制御部により送信されたすべての応答メッセージを受信した後、前記１つ以上の第２の記憶制御部のうちのいずれかに係る障害を検出した場合に、前記１つ以上の第３の記憶制御部にオペレーションに対するディシジョン処理の実行要求メッセージを送信し、前記１つ以上の第３の記憶制御部は、第１の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合に、ディシジョン処理を実行し、前記障害が復旧した場合にディシジョン処理に係るログ情報を障害から復旧した第２の記憶制御部に送信し、障害から復旧した第２の記憶制御部は、ディシジョン処理に係るログ情報を受信し、受信したログ情報に基づいてディシジョン処理を実行することを特徴とする付記６〜９のいずれか１つに記載のデータ記憶装置。
【０１６６】
（付記１１）データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部に記憶させるデータ記憶方法であって、
第１の記憶制御部が、データに対するオペレーションの実行要求メッセージを送信するオペレーション実行要求メッセージ送信工程と、
１つ以上の第２の記憶制御部が、前記オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対する応答メッセージを第１の記憶制御部に送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、１つ以上の第３の記憶制御部が、前記１つ以上の第２の記憶制御部により送信されたメッセージを受信して各オペレーションに係るログ情報をメモリに記憶するオペレーション実行工程と、
前記第１の記憶制御部が、前記１つ以上の第２の記憶制御部により送信された応答メッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信するディシジョン実行要求メッセージ送信工程と、
前記１つ以上の第２の記憶制御部が、第１の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、前記１つ以上の第２の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたデータを更新するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、前記１つ以上の第３の記憶制御部が、前記１つ以上の第２の記憶制御部により送信されたメッセージを受信し、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記１つ以上の第３の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新をおこなうディシジョン実行工程と、
を含んだことを特徴とするデータ記憶方法。
【０１６７】
（付記１２）前記１つ以上の第３の記憶制御部が、前記ディシジョン処理を実行した後、ディシジョン処理の完了を示すディシジョン完了メッセージを送信するディシジョン完了メッセージ送信工程と、前記１つ以上の第２の記憶制御部が、前記１つ以上の第３の記憶制御部からディシジョン完了メッセージを受信した場合に、前記第１の記憶制御部に対してデータの同期処理が完了したことを示す同期完了メッセージを送信する同期完了メッセージ送信工程とをさらに含んだことを特徴とする付記１１に記載のデータ記憶方法。
【０１６８】
（付記１３）前記オペレーション実行要求メッセージ送信工程は、前記第１の記憶制御部が、オペレーションの実行要求メッセージを送信する１つ以上の第２の記憶制御部を示すメンバーシップログ情報を生成して第４の記憶制御部に送信し、第４の記憶制御部が、前記メンバーシップログ情報をメモリに記憶し、前記ディシジョン実行要求メッセージ送信工程は、前記第１の記憶制御部が、前記ディシジョン処理の実行を決定した場合にディシジョン処理の実行決定を示すディシジョンログ情報を生成して第４の記憶制御部に送信し、第４の記憶制御部が、前記ディシジョンログ情報を受信した後、前記第１の記憶制御部に係る障害を検出した場合に、前記メンバーシップログ情報に基づいてオペレーションに対するディシジョン処理の実行要求メッセージを前記１つ以上の第２の記憶制御部に送信することを特徴とする付記１１または１２に記載のデータ記憶方法。
【０１６９】
（付記１４）前記ディシジョン実行工程は、前記１つ以上の第２の記憶制御部が、前記第１の記憶制御部からディシジョン処理の実行要求メッセージを受信した後、前記１つ以上の第３の記憶制御部に係る障害を検出した場合に、第１の記憶制御部に対して前記ディシジョン完了メッセージを送信し、前記障害が復旧した場合に、前記１つ以上の第３の記憶制御部が、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記１つ以上の第３の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータを更新することを特徴とする付記１１、１２または１３に記載のデータ記憶方法。
【０１７０】
（付記１５）前記ディシジョン実行要求メッセージ送信工程は、前記第１の記憶制御部が、前記１つ以上の第２の記憶制御部により送信されたすべての応答メッセージを受信した後、前記１つ以上の第２の記憶制御部のうちのいずれかに係る障害を検出した場合に、前記１つ以上の第３の記憶制御部にオペレーションに対するディシジョン処理の実行要求メッセージを送信し、前記ディシジョン実行工程は、前記１つ以上の第３の記憶制御部が、第１の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合に、ディシジョン処理を実行し、前記障害が復旧した場合にディシジョン処理に係るログ情報を障害から復旧した第２の記憶制御部に送信し、障害から復旧した第２の記憶制御部が、ディシジョン処理に係るログ情報を受信し、受信したログ情報に基づいてディシジョン処理を実行することを特徴とする付記１１〜１４のいずれか１つに記載のデータ記憶方法。
【０１７１】
（付記１６）データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部に記憶させる制御をおこなうデータ記憶制御プログラムであって、
第１の記憶制御部が、データに対するオペレーションの実行要求メッセージを送信するオペレーション実行要求メッセージ送信手順と、
１つ以上の第２の記憶制御部が、前記オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対する応答メッセージを第１の記憶制御部に送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、１つ以上の第３の記憶制御部が、前記１つ以上の第２の記憶制御部により送信されたメッセージを受信して各オペレーションに係るログ情報をメモリに記憶するオペレーション実行手順と、
前記第１の記憶制御部が、前記１つ以上の第２の記憶制御部により送信された応答メッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信するディシジョン実行要求メッセージ送信手順と、
前記１つ以上の第２の記憶制御部が、第１の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、前記１つ以上の第２の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたデータを更新するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、前記１つ以上の第３の記憶制御部が、前記１つ以上の第２の記憶制御部により送信されたメッセージを受信し、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記１つ以上の第３の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新をおこなうディシジョン実行手順と、
をコンピュータに実行させることを特徴とするデータ記憶制御プログラム。
【産業上の利用可能性】
【０１７２】
以上のように、本発明に係るデータ記憶制御装置およびデータ記憶装置は、トランザクションに係るオーバーヘッドの増大を抑制し、データ処理の効率を向上させることができるデータ記憶システムに有用である。
【図面の簡単な説明】
【０１７３】
【図１】本実施例に係る自律ディスクシステムの機能構成を示す図である。
【図２】Ｆａｔ−Ｂｔｒｅｅについて説明する説明図である。
【図３】図１に示したプロセッシングエレメント２０ａ〜２０ｄの機能構成を示す図である。
【図４】図３に示したバックアップディスク管理データ３３１ａ〜３３１ｄの一例を示す図である。
【図５】図３に示したＡＣＫ管理データ３３２ａ〜３３２ｄの一例を示す図である。
【図６】非同期ｎｅｉｇｈｂｏｒ−ＷＡＬプロトコルについて説明するシーケンス図である。
【図７】本実施例に係るＢＡ−１．５フェーズコミットプロトコルについて説明するシーケンス図である。
【図８】ディシジョン前にプライマリマスターに障害が検出された場合の復帰処理について説明するシーケンス図である。
【図９】ディシジョン処理実行決定後、すべてのプライマリコホートからＡＣＫメッセージを受信する前にプライマリマスターに障害が検出された場合の復帰処理について説明するシーケンス図である。
【図１０】バックアップコホートに障害が検出された場合の復帰処理について説明するシーケンス図である。
【図１１】最後のオペレーションのプリペアード状態以降にプライマリコホートに障害が検出された場合の復帰処理について説明するシーケンス図である。
【図１２】図３に示したコントローラ３０ａ〜３０ｄとなるコンピュータのハードウェア構成を示す図である。
【図１３】各プロトコルのコミットされたトランザクションのオーバーヘッドを示す図である。
【図１４】各プロトコルのスループットの比較結果を示す図である。
【図１５】ＢＡ−１．５フェーズコミットプロトコルのスループットを示す図である。
【図１６】２ＰＣプロトコルのスループットを示す図である。
【図１７】ＥＰプロトコルのスループットを示す図である。
【符号の説明】
【０１７４】
１０ａ〜１０ｃ    クライアント
１００    ネットワークインターフェース
１０１    ディスクインターフェース
１０２    ＣＰＵ
１０３    ＲＯＭ
１０４    ＲＡＭ
１０５    バス
２０ａ〜２０ｄ    プロセッシングエレメント
３０ａ〜３０ｄ    コントローラ
３１ａ〜３１ｄ    ネットワークインターフェース部
３２ａ〜３２ｄ    ディスクインターフェース部
３３ａ〜３３ｄ    メモリ
３３０ａ〜３３０ｄ，１０４ａ    ログ
３３１ａ〜３３１ｄ，１０４ｂ    バックアップディスク管理データ
３３２ａ〜３３２ｄ，１０４ｃ    ＡＣＫ管理データ
３４ａ〜３４ｄ    制御部
３４０ａ〜３４０ｄ    トランザクション実行部
３４１ａ〜３４１ｄ    障害復旧処理部
４０ａ〜４０ｄ    ディスク装置
４００ａ〜４００ｄ    ディレクトリデータ
４０１ａ〜４０１ｄ    ディレクトリバックアップデータ
４０２ａ〜４０２ｄ    プライマリデータ
４０３ａ〜４０３ｄ    バックアップデータ
５０    ネットワーク
【図１】
2008097155.tif 000003
【図２】
2008097155.tif 000004
【図３】
2008097155.tif 000005
【図４】
2008097155.tif 000006
【図５】
2008097155.tif 000007
【図６】
2008097155.tif 000008
【図７】
2008097155.tif 000009
【図８】
2008097155.tif 000010
【図９】
2008097155.tif 000011
【図１０】
2008097155.tif 000012
【図１１】
2008097155.tif 000013
【図１２】
2008097155.tif 000014
【図１３】
2008097155.tif 000015
【図１４】
2008097155.tif 000016
【図１５】
2008097155.tif 000017
【図１６】
2008097155.tif 000018
【図１７】
2008097155.tif 000019