説明

データ記憶制御装置およびデータ記憶装置

【課題】トランザクションに係るオーバーヘッドの増大を抑制し、データ処理の効率を向上させること。
【解決手段】プライマリマスターは、オペレーションの実行要求メッセージを送信し、プライマリコホートは、実行要求メッセージを受信した場合にオペレーションを実行してACKメッセージをプライマリマスターに送信するとともに、オペレーションに係るログ情報を含んだメッセージを送信し、バックアップコホートは、当該メッセージを受信してログ情報をメモリに記憶し、プライマリマスターは、すべてのオペレーションの実行完了後、ディシジョン処理の実行要求メッセージを送信し、プライマリコホートは、実行要求メッセージを受信した場合にディシジョン処理を実行してディシジョン処理に係るログ情報を含んだメッセージを送信し、バックアップコホートは、当該メッセージを受信し、メモリに記憶されたログ情報に基づいてディシジョン処理を実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部に記憶させる制御をおこなうデータ記憶制御装置および複数のデータ記憶部を有し、データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部に記憶させるデータ記憶装置に関し、特に、トランザクションに係るオーバーヘッドの増大を抑制し、データ処理の効率を向上させることができるデータ記憶制御装置およびデータ記憶装置に関する。
【背景技術】
【0002】
従来、SAN(Storage Area Network)などのネットワークを介して接続された各ディスクが、ディクスコントローラ上のプロセッサやメモリを利用して自律的なデータ管理をおこなうとともに、ディスク間で通信をおこなってホストから要求されたデータ処理を実行する自律ディスクが提案されている(非特許文献1を参照)。
【0003】
この自律ディスクでは、データ管理の信頼性を高めるため、ディスクに記憶されたデータのバックアップを、当該ディスクとは別のディスクに格納する。そして、ディスクに障害が発生してデータが読み出せなくなった場合には、バックアップされたデータが代わりに読み出され、データ処理が実行される。
【0004】
このようなシステムにおいては、トランザクションの原子性を保障することが極めて重要である。これを実現するコミットプロトコルとして、2フェーズコミット(2PC)プロトコルや、アーリープリペア(ER)プロトコルなどがある(非特許文献2を参照)。
【0005】
【非特許文献1】Haruo Yokota, “Autonomous Disks for Advanced Database Applications”, in Proc. of International Symposium on Database Applications in Non-traditional Environments (DANTE'99), pp.448-457.
【非特許文献2】J. Stamos and F. Cristian, “A low-cost atomic commit protocol”, In proceeding of ninth symposium on Reliable distributed systems, October 1990.
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、上述した従来技術におけるコミットプロトコルが、ディスクに格納されたデータを別のディスクにバックアップする処理をおこなう自律ディスクに適用された場合には、満足できるパフォーマンスが得られないという問題があった。
【0007】
具体的には、2フェーズコミットプロトコルやアーリープリペアプロトコルでは、オペレーションごとにログをディスク装置に書き込み、書き込みが正常終了したことを示すメッセージをオペレーションの実行を要求した装置に応答する必要がある。そのため、トランザクションに係るオーバーヘッドが大きくなり、自律ディスクの処理効率を低下させてしまう。
【0008】
このように、自律ディスクにおいては、トランザクションに係るオーバーヘッドの増大をいかにして抑制し、データ処理の効率を向上させることができるかが重要な課題となっている。
【0009】
本発明は、上述した従来技術による問題点を解消するためになされたものであり、トランザクションに係るオーバーヘッドの増大を抑制し、データ処理の効率を向上させることができるデータ記憶制御装置およびデータ記憶装置を提供することを目的とする。
【課題を解決するための手段】
【0010】
上述した課題を解決し、目的を達成するため、本発明は、データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部(実施例におけるディスク装置40a〜40d)に記憶させる制御をおこなうデータ記憶制御装置であって、データに対するオペレーションの実行要求メッセージを複数送信する第1の記憶制御部(実施例におけるプライマリマスター)と、前記オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対する応答メッセージを第1の記憶制御部に送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信する1つ以上の第2の記憶制御部(実施例におけるプライマリコホート)と、前記1つ以上の第2の記憶制御部により送信されたメッセージを受信して各オペレーションに係るログ情報をメモリに記憶する1つ以上の第3の記憶制御部(実施例におけるバックアップコホート)と、を備え、前記第1の記憶制御部は、前記1つ以上の第2の記憶制御部により送信された応答メッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信し、前記1つ以上の第2の記憶制御部は、第1の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、前記1つ以上の第2の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたデータの更新を制御するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、前記1つ以上の第3の記憶制御部は、前記1つ以上の第2の記憶制御部により送信されたメッセージを受信し、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記1つ以上の第3の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新制御をおこなうことを特徴とする。
【0011】
また、本発明は、上記発明において、前記1つ以上の第3の記憶制御部は、前記ディシジョン処理を実行した後、ディシジョン処理の完了を示すディシジョン完了メッセージを送信し、前記1つ以上の第2の記憶制御部は、前記1つ以上の第3の記憶制御部からディシジョン完了メッセージを受信した場合に、前記第1の記憶制御部に対してデータの同期処理が完了したことを示す同期完了メッセージを送信することを特徴とする。
【0012】
また、本発明は、上記発明において、オペレーションの実行要求メッセージを送信する1つ以上の第2の記憶制御部を示すメンバーシップログ情報をメモリに記憶する第4の記憶制御部(実施例におけるバックアップマスター)をさらに備え、前記第1の記憶制御部は、前記メンバーシップログ情報を生成して第4の記憶制御部に送信するとともに、前記ディシジョン処理の実行を決定した場合にディシジョン処理の実行決定を示すディシジョンログ情報を生成して第4の記憶制御部に送信し、前記第4の記憶制御部は、前記ディシジョンログ情報を受信した後、前記第1の記憶制御部に係る障害を検出した場合に、前記メンバーシップログ情報に基づいてオペレーションに対するディシジョン処理の実行要求メッセージを前記1つ以上の第2の記憶制御部に送信することを特徴とする。
【0013】
また、本発明は、上記発明において、前記1つ以上の第2の記憶制御部は、前記第1の記憶制御部からディシジョン処理の実行要求メッセージを受信した後、前記1つ以上の第3の記憶制御部に係る障害を検出した場合に、第1の記憶制御部に対して前記ディシジョン完了メッセージを送信し、前記障害が復旧した場合に、前記1つ以上の第3の記憶制御部は、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記1つ以上の第3の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新制御をおこなうことを特徴とする。
【0014】
また、本発明は、上記発明において、前記第1の記憶制御部は、前記1つ以上の第2の記憶制御部により送信されたすべての応答メッセージを受信した後、前記1つ以上の第2の記憶制御部のうちのいずれかに係る障害を検出した場合に、前記1つ以上の第3の記憶制御部にオペレーションに対するディシジョン処理の実行要求メッセージを送信し、前記1つ以上の第3の記憶制御部は、第1の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合に、ディシジョン処理を実行し、前記障害が復旧した場合にディシジョン処理に係るログ情報を障害から復旧した第2の記憶制御部に送信し、障害から復旧した第2の記憶制御部は、ディシジョン処理に係るログ情報を受信し、受信したログ情報に基づいてディシジョン処理を実行することを特徴とする。
【0015】
また、本発明は、複数のデータ記憶部(実施例におけるディスク装置40a〜40d)を有し、データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部に記憶させるデータ記憶装置であって、データに対するオペレーションの実行要求メッセージを複数送信する第1の記憶制御部(実施例におけるプライマリマスター)と、前記オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対する応答メッセージを第1の記憶制御部に送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信する1つ以上の第2の記憶制御部(実施例におけるプライマリコホート)と、前記1つ以上の第2の記憶制御部により送信されたメッセージを受信して各オペレーションに係るログ情報をメモリに記憶する1つ以上の第3の記憶制御部(実施例におけるバックアップコホート)と、を備え、前記第1の記憶制御部は、前記1つ以上の第2の記憶制御部により送信された応答メッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信し、前記1つ以上の第2の記憶制御部は、第1の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、前記1つ以上の第2の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたデータを更新するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、前記1つ以上の第3の記憶制御部は、前記1つ以上の第2の記憶制御部により送信されたメッセージを受信し、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記1つ以上の第3の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新をおこなうことを特徴とする。
【0016】
また、本発明は、上記発明において、前記1つ以上の第3の記憶制御部は、前記ディシジョン処理を実行した後、ディシジョン処理の完了を示すディシジョン完了メッセージを送信し、前記1つ以上の第2の記憶制御部は、前記1つ以上の第3の記憶制御部からディシジョン完了メッセージを受信した場合に、前記第1の記憶制御部に対してデータの同期処理が完了したことを示す同期完了メッセージを送信することを特徴とする。
【0017】
また、本発明は、上記発明において、オペレーションの実行要求メッセージを送信する1つ以上の第2の記憶制御部を示すメンバーシップログ情報をメモリに記憶する第4の記憶制御部(実施例におけるバックアップマスター)をさらに備え、前記第1の記憶制御部は、前記メンバーシップログ情報を生成して第4の記憶制御部に送信するとともに、前記ディシジョン処理の実行を決定した場合にディシジョン処理の実行決定を示すディシジョンログ情報を生成して第4の記憶制御部に送信し、前記第4の記憶制御部は、前記ディシジョンログ情報を受信した後、前記第1の記憶制御部に係る障害を検出した場合に、前記メンバーシップログ情報に基づいてオペレーションに対するディシジョン処理の実行要求メッセージを前記1つ以上の第2の記憶制御部に送信することを特徴とする。
【0018】
また、本発明は、上記発明において、前記1つ以上の第2の記憶制御部は、前記第1の記憶制御部からディシジョン処理の実行要求メッセージを受信した後、前記1つ以上の第3の記憶制御部に係る障害を検出した場合に、第1の記憶制御部に対して前記ディシジョン完了メッセージを送信し、前記障害が復旧した場合に、前記1つ以上の第3の記憶制御部は、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記1つ以上の第3の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータを更新することを特徴とする。
【0019】
また、本発明は、上記発明において、前記第1の記憶制御部は、前記1つ以上の第2の記憶制御部により送信されたすべての応答メッセージを受信した後、前記1つ以上の第2の記憶制御部のうちのいずれかに係る障害を検出した場合に、前記1つ以上の第3の記憶制御部にオペレーションに対するディシジョン処理の実行要求メッセージを送信し、前記1つ以上の第3の記憶制御部は、第1の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合に、ディシジョン処理を実行し、前記障害が復旧した場合にディシジョン処理に係るログ情報を障害から復旧した第2の記憶制御部に送信し、障害から復旧した第2の記憶制御部は、ディシジョン処理に係るログ情報を受信し、受信したログ情報に基づいてディシジョン処理を実行することを特徴とする。
【0020】
また、本発明は、データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部(実施例におけるディスク装置40a〜40d)に記憶させるデータ記憶方法であって、第1の記憶制御部(実施例におけるプライマリマスター)が、データに対するオペレーションの実行要求メッセージを送信するオペレーション実行要求メッセージ送信工程と、1つ以上の第2の記憶制御部(実施例におけるプライマリコホート)が、前記オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対する応答メッセージを第1の記憶制御部に送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、1つ以上の第3の記憶制御部(実施例におけるバックアップコホート)が、前記1つ以上の第2の記憶制御部により送信されたメッセージを受信して各オペレーションに係るログ情報をメモリに記憶するオペレーション実行工程と、前記第1の記憶制御部が、前記1つ以上の第2の記憶制御部により送信された応答メッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信するディシジョン実行要求メッセージ送信工程と、前記1つ以上の第2の記憶制御部が、第1の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、前記1つ以上の第2の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたデータを更新するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、前記1つ以上の第3の記憶制御部が、前記1つ以上の第2の記憶制御部により送信されたメッセージを受信し、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記1つ以上の第3の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新をおこなうディシジョン実行工程と、を含んだことを特徴とする。
【0021】
また、本発明は、上記発明において、前記1つ以上の第3の記憶制御部が、前記ディシジョン処理を実行した後、ディシジョン処理の完了を示すディシジョン完了メッセージを送信するディシジョン完了メッセージ送信工程と、前記1つ以上の第2の記憶制御部が、前記1つ以上の第3の記憶制御部からディシジョン完了メッセージを受信した場合に、前記第1の記憶制御部に対してデータの同期処理が完了したことを示す同期完了メッセージを送信する同期完了メッセージ送信工程とをさらに含んだことを特徴とする。
【0022】
また、本発明は、上記発明において、前記オペレーション実行要求メッセージ送信工程は、前記第1の記憶制御部が、オペレーションの実行要求メッセージを送信する1つ以上の第2の記憶制御部を示すメンバーシップログ情報を生成して第4の記憶制御部(実施例におけるバックアップマスター)に送信し、第4の記憶制御部が、前記メンバーシップログ情報をメモリに記憶し、前記ディシジョン実行要求メッセージ送信工程は、前記第1の記憶制御部が、前記ディシジョン処理の実行を決定した場合にディシジョン処理の実行決定を示すディシジョンログ情報を生成して第4の記憶制御部に送信し、第4の記憶制御部が、前記ディシジョンログ情報を受信した後、前記第1の記憶制御部に係る障害を検出した場合に、前記メンバーシップログ情報に基づいてオペレーションに対するディシジョン処理の実行要求メッセージを前記1つ以上の第2の記憶制御部に送信することを特徴とする。
【0023】
また、本発明は、上記発明において、前記ディシジョン実行工程は、前記1つ以上の第2の記憶制御部が、前記第1の記憶制御部からディシジョン処理の実行要求メッセージを受信した後、前記1つ以上の第3の記憶制御部に係る障害を検出した場合に、第1の記憶制御部に対して前記ディシジョン完了メッセージを送信し、前記障害が復旧した場合に、前記1つ以上の第3の記憶制御部が、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記1つ以上の第3の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータを更新することを特徴とする。
【0024】
また、本発明は、上記発明において、前記ディシジョン実行要求メッセージ送信工程は、前記第1の記憶制御部が、前記1つ以上の第2の記憶制御部により送信されたすべての応答メッセージを受信した後、前記1つ以上の第2の記憶制御部のうちのいずれかに係る障害を検出した場合に、前記1つ以上の第3の記憶制御部にオペレーションに対するディシジョン処理の実行要求メッセージを送信し、前記ディシジョン実行工程は、前記1つ以上の第3の記憶制御部が、第1の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合に、ディシジョン処理を実行し、前記障害が復旧した場合にディシジョン処理に係るログ情報を障害から復旧した第2の記憶制御部に送信し、障害から復旧した第2の記憶制御部が、ディシジョン処理に係るログ情報を受信し、受信したログ情報に基づいてディシジョン処理を実行することを特徴とする。
【0025】
また、本発明は、データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部(実施例におけるディスク装置40a〜40d)に記憶させる制御をおこなうデータ記憶制御プログラムであって、第1の記憶制御部(実施例におけるプライマリマスター)が、データに対するオペレーションの実行要求メッセージを送信するオペレーション実行要求メッセージ送信手順と、1つ以上の第2の記憶制御部(実施例におけるプライマリコホート)が、前記オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対する応答メッセージを第1の記憶制御部に送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、1つ以上の第3の記憶制御部(実施例におけるバックアップコホート)が、前記1つ以上の第2の記憶制御部により送信されたメッセージを受信して各オペレーションに係るログ情報をメモリに記憶するオペレーション実行手順と、前記第1の記憶制御部が、前記1つ以上の第2の記憶制御部により送信された応答メッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信するディシジョン実行要求メッセージ送信手順と、前記1つ以上の第2の記憶制御部が、第1の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、前記1つ以上の第2の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたデータを更新するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、前記1つ以上の第3の記憶制御部が、前記1つ以上の第2の記憶制御部により送信されたメッセージを受信し、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記1つ以上の第3の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新をおこなうディシジョン実行手順と、をコンピュータに実行させることを特徴とする。
【0026】
本発明によれば、第1の記憶制御部が、データに対するオペレーションの実行要求メッセージを送信し、1つ以上の第2の記憶制御部が、オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対する応答メッセージを第1の記憶制御部に送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、1つ以上の第3の記憶制御部が、1つ以上の第2の記憶制御部により送信されたメッセージを受信して各オペレーションに係るログ情報をメモリに記憶し、第1の記憶制御部が、1つ以上の第2の記憶制御部により送信された応答メッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信し、1つ以上の第2の記憶制御部が、第1の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、1つ以上の第2の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたデータを更新するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、1つ以上の第3の記憶制御部が、1つ以上の第2の記憶制御部により送信されたメッセージを受信し、メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、1つ以上の第3の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新をおこなうこととしたので、トランザクションに係るオーバーヘッドの増大を抑制し、データ処理の効率を向上させることができる。
【0027】
また、本発明によれば、1つ以上の第3の記憶制御部が、ディシジョン処理を実行した後、ディシジョン処理の完了を示すディシジョン完了メッセージを送信し、1つ以上の第2の記憶制御部が、1つ以上の第3の記憶制御部からディシジョン完了メッセージを受信した場合に、第1の記憶制御部に対してデータの同期処理が完了したことを示す同期完了メッセージを送信することとしたので、データとバックアップデータとの間で同期を確実にとることができる。
【0028】
また、本発明によれば、第1の記憶制御部が、オペレーションの実行要求メッセージを送信する1つ以上の第2の記憶制御部を示すメンバーシップログ情報を生成して第4の記憶制御部に送信し、第4の記憶制御部が、メンバーシップログ情報をメモリに記憶し、第1の記憶制御部が、ディシジョン処理の実行を決定した場合にディシジョン処理の実行決定を示すディシジョンログ情報を生成して第4の記憶制御部に送信し、第4の記憶制御部が、ディシジョンログ情報を受信した後、第1の記憶制御部に係る障害を検出した場合に、メンバーシップログ情報に基づいてオペレーションに対するディシジョン処理の実行要求メッセージを1つ以上の第2の記憶制御部に送信することとしたので、第1の記憶制御部に係る障害が発生した場合でも、ディシジョン処理を迅速に実行することができる。
【0029】
また、本発明によれば、1つ以上の第2の記憶制御部が、第1の記憶制御部からディシジョン処理の実行要求メッセージを受信した後、1つ以上の第3の記憶制御部に係る障害を検出した場合に、第1の記憶制御部に対してディシジョン完了メッセージを送信し、障害が復旧した場合に、1つ以上の第3の記憶制御部が、メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、1つ以上の第3の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータを更新することとしたので、第3の記憶制御部に係る障害が発生した場合でも、ディシジョン処理を迅速に実行することができる。
【0030】
また、本発明によれば、第1の記憶制御部が、1つ以上の第2の記憶制御部により送信されたすべての応答メッセージを受信した後、1つ以上の第2の記憶制御部のうちのいずれかに係る障害を検出した場合に、1つ以上の第3の記憶制御部にオペレーションに対するディシジョン処理の実行要求メッセージを送信し、1つ以上の第3の記憶制御部が、第1の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合に、ディシジョン処理を実行し、障害が復旧した場合にディシジョン処理に係るログ情報を障害から復旧した第2の記憶制御部に送信し、障害から復旧した第2の記憶制御部が、ディシジョン処理に係るログ情報を受信し、受信したログ情報に基づいてディシジョン処理を実行することとしたので、第2の記憶制御部に係る障害が発生した場合でも、ディシジョン処理を迅速に実行することができる。
【発明の効果】
【0031】
本発明によれば、トランザクションに係るオーバーヘッドの増大を抑制することによりデータ処理の効率を向上させることができるため、ホストからのデータ処理要求に対するレスポンスを高速化でき、自律ディスクなどの自律分散型ストレージシステムにおける記憶ノードの増大にも効果的に対処することができるという効果を奏する。
【発明を実施するための最良の形態】
【0032】
以下に添付図面を参照して、本発明に係るデータ記憶制御装置およびデータ記憶装置の好適な実施例を詳細に説明する。
【実施例】
【0033】
まず、本発明に係る自律ディスクシステムの機能構成について説明する。図1は、本実施例に係る自律ディスクシステムの機能構成を示す図である。図1に示すように、この自律ディスクシステムは、クライアント10a〜10cとプロセッシングエレメント20a〜20dとがSAN(Storage Area Network)などのネットワーク50を介して接続された構成となっている。
【0034】
クライアント10a〜10cは、プロセッシングエレメント20a〜20dに対してデータの検索、挿入、削除などの各種データ処理の実行要求を送信するクライアント装置である。
【0035】
プロセッシングエレメント20a〜20dは、クライアント10a〜10cにより送信された各種データ処理の実行要求を受信し、要求されたデータ処理を実行する処理装置である。各プロセッシングエレメント20a〜20dは、処理の対象となるデータを分散して記憶する。そして、各プロセッシングエレメント20a〜20dは、Fat−Btreeと呼ばれるディレクトリ構造を用いてデータの検索をおこなう。なお、本発明はディレクトリ方式として、特にFat−Btree方式に限定するものではなく、ディレクトリを複数のプロセッシングエレメントで共有する分散ディレクトリ方式全般に適用できるものである。
【0036】
図2は、Fat−Btreeについて説明する説明図である。Fat−Btreeは、従来の並列Btreeを改良したものであり、自律ディスクのような分散型データベースシステムにおいて、データに高速にアクセスできるように開発されたディレクトリ構造である。
【0037】
このFat−Btreeでは、図2に示すように、B−treeのデータページを各プロセッシングエレメント20a〜20dに均等に記憶させ、そのデータページからみて上位にあるインデックスページのみを各プロセッシングエレメント20a〜20dに記憶させる。すなわち、Fat−Btreeでは、各プロセッシングエレメント20a〜20dは、B−treeの部分木を記憶する。
【0038】
このように、Fat−Btreeでは、ルートページに近く、アクセス頻度が高いインデックスページほどより多くのプロセッシングエレメント20a〜20dにコピーされるので、検索速度を高速化することができる。
【0039】
また、更新頻度が高い下位のインデックスページほど、そのコピーを記憶したプロセッシングエレメント20a〜20dの数が減少するため、コピーの更新をおこなう際に同期が必要となるプロセッシングエレメント20a〜20dの数が少なくなり、オーバーヘッドを減らすことができる。
【0040】
図1の説明に戻ると、各プロセッシングエレメント20a〜20dは、コントローラ30a〜30dと、ディスク装置40a〜40dとを有する。
【0041】
コントローラ30a〜30dは、ディスク装置40a〜40dに対するデータアクセスの制御をおこなう処理部である。このコントローラ30a〜30dは、図2に示したFat−Btreeを用いてデータの検索をおこない、ディスク装置40a〜40dに記憶されたデータに対する各種データ処理を実行する。コントローラ30a〜30dの詳細な機能構成については、後に図3を用いて説明する。
【0042】
ディスク装置40a〜40dは、ハードディスク装置などの記憶装置である。具体的には、このディスク装置40a〜40dは、図2に示したFat−Btreeのディレクトリ情報、他のディスク装置40a〜40dに記憶されたディレクトリ情報のバックアップデータ、各種データ処理の対象となるデータ、他のディスク装置40a〜40dに記憶されたデータのバックアップデータなどを記憶する。
【0043】
つぎに、図1に示したプロセッシングエレメント20a〜20dの機能構成について詳細に説明する。図3は、図1に示したプロセッシングエレメント20a〜20dの機能構成を示す図である。なお、各プロセッシングエレメント20a〜20dの機能構成は同様なものとなる。
【0044】
図1で説明したように、プロセッシングエレメント20a(20b,20c,20d)は、コントローラ30a(30b,30c,30d)とディスク装置40a(40b,40c,40d)とから構成されている。そして、コントローラ30a(30b,30c,30d)は、ネットワークインターフェース部31a(31b,31c,31d)、ディスクインターフェース部32a(32b,32c,32d)、メモリ33a(33b,33c,33d)、制御部34a(34b,34c,34d)を有する。
【0045】
ネットワークインターフェース部31a(31b,31c,31d)は、クライアント10a〜10cとの間でネットワーク50を介してデータの授受をおこなうネットワークインターフェースである。ディスクインターフェース部32a(32b,32c,32d)は、ディスク装置40a(40b,40c,40d)との間でデータの授受をおこなうディスクインターフェースである。
【0046】
メモリ33a(33b,33c,33d)は、制御部34a(34b,34c,34d)によりデータの読み出しや書き込みがなされる半導体主記憶装置である。このメモリ33a(33b,33c,33d)は、ログ330a(330b,330c,330d)、バックアップディスク管理データ331a(331b,331c,331d)、ACK管理データ332a(332b,332c,332d)などの各種データを記憶する。
【0047】
ログ330a(330b,330c,330d)は、各トランザクションにおいてなされた一連のオペレーションの内容に係る情報を記憶したログデータである。バックアップディスク管理データ331a(331b,331c,331d)は、元データを記憶するディスク装置40a〜40dと、元データのバックアップデータを記憶するディスク装置40a〜40dとの間の対応関係を記憶したデータである。
【0048】
図4は、図3に示したバックアップディスク管理データ331a(331b,331c,331d)の一例を示す図である。図4に示すように、このバックアップディスク管理データ331a(331b,331c,331d)は、プライマリディスクIDおよびバックアップディスクIDを記憶している。
【0049】
プライマリディスクIDは、元データを記憶するディスク装置40a〜40dを識別する識別情報である。バックアップディスクIDは、元データのバックアップデータを記憶するディスク装置40a〜40dを識別する識別情報である。
【0050】
図3の説明に戻ると、ACK管理データ332a(332b,332c,332d)は、制御部34a(34b,34c,34d)が他のプロセッシングエレメント20b〜20dに対してオペレーションの実行要求を送信した場合に、オペレーションの実行完了を示すACKメッセージを他のプロセッシングエレメント20b〜20dから受信したか否かを示すデータである。
【0051】
図5は、図3に示したACK管理データ332a(332b,332c,332d)の一例を示す図である。図5に示すように、ACK管理データ332a(332b,332c,332d)は、オペレーションID、オペレーション対象ディスクIDおよびACKフラグを記憶している。
【0052】
オペレーションIDは、他のプロセッシングエレメント20b〜20dに対して実行要求を送信した各オペレーションを識別する識別情報である。オペレーション対象ディスクIDは、オペレーションの実行要求を送信したプロセッシングエレメント20b〜20dが有するディスク装置40b〜40dを識別する識別情報である。
【0053】
ACKフラグは、オペレーションの実行要求を送信したプロセッシングエレメント20b〜20dからACKメッセージを受信したか否かを示すフラグである。このフラグが「1」である場合は、プロセッシングエレメント20b〜20dからACKメッセージを受信したことを示し、「0」である場合には、プロセッシングエレメント20b〜20dからACKメッセージを受信していないことを示す。
【0054】
図3の説明に戻ると、制御部34a(34b,34c,34d)は、コントローラ30a(30b,30c,30d)を全体制御する制御部であり、各機能部間のデータの授受を司る。この制御部34a(34b,34c,34d)は、トランザクション実行部340a(340b,340c,340d)および障害復旧処理部341a(341b,341c,341d)を有する。
【0055】
トランザクション実行部340a(340b,340c,340d)は、クライアント10a〜10cあるいは他のプロセッシングエレメント20b〜20dからトランザクションに係る各種データ処理の実行要求を受信した場合に、Fat−Btreeのディレクトリ情報に基づいて処理対象となるデータを検索し、そのデータに対する各種データ処理を実行する機能部である。
【0056】
このトランザクション実行部340a(340b,340c,340d)は、バックアップアシスト1.5相コミットプロトコル(BA−1.5PC)を用いてトランザクションを実行する。このBA−1.5PCについては、後に詳しく説明する。
【0057】
障害復旧処理部341a(341b,341c,341d)は、トランザクションの実行中にいずれかのプロセッシングエレメント20a〜20dに障害が発生した場合に、その障害に対する復旧処理をおこなう機能部である。
【0058】
この障害復旧処理部341a(341b,341c,341d)は、障害が発生したプロセッシングエレメント20a〜20dの役割(障害が発生したプロセッシングエレメント20a〜20dが元データを記憶するものか、バックアップデータを記憶するものかなど)に応じて異なる方法で復旧処理を実行する。この復旧処理についても後に詳しく説明する。
【0059】
ディスク装置40a(40b,40c,40d)は、ディレクトリデータ400a(400b,400c,400d)、ディレクトリバックアップデータ401a(401b,401c,401d)、プライマリデータ402a(402b,402c,402d)、バックアップデータ403a(403b,403c,403d)を記憶する。
【0060】
ディレクトリデータ400a(400b,400c,400d)は、Fat−Btreeにより構成されたディレクトリのデータである。このディレクトリデータ400a(400b,400c,400d)は、図2に示したB−treeの部分木に相当するデータである。
【0061】
ディレクトリバックアップデータ401a(401b,401c,401d)は、他のプロセッシングエレメント20b〜20dのディスク装置40b〜40dにより記憶されたディレクトリデータのバックアップデータである。
【0062】
プライマリデータ402a(402b,402c,402d)は、トランザクションにおける各種データ処理の実行対象となるデータである。バックアップデータ403a(403b,403c,403d)は、他のプロセッシングエレメント20b〜20dのディスク装置40b〜40dにより記憶されたプライマリデータのバックアップデータである。
【0063】
つぎに、非同期neighbor−WALプロトコルについて説明する。図6は、非同期neighbor−WALプロトコルについて説明するシーケンス図である。本実施例では、トランザクションのログオーバーヘッドを抑制するため、非同期neighbor−WALプロトコルを用いる。
【0064】
この非同期neighbor−WALプロトコルでは、元データを記憶するプライマリプロセッシングエレメントは、ログフラッシュ要求を受け付けた場合に(ステップS101)、プライマリプロセッシングエレメントのコントローラに備えられたメモリにログを書き込む(ステップS102)。
【0065】
さらに、プライマリプロセッシングエレメントは、メモリに書き込んだログの情報を含んだログメッセージを、バックアップデータを記憶するバックアッププロセッシングエレメントに送信する(ステップS103)。
【0066】
バックアッププロセッシングエレメントは、このログメッセージを受信すると、バックアッププロセッシングエレメントのコントローラに備えられたメモリにログを書き込み(ステップS104)、非同期neighbor−WALプロトコルを用いたログの書き込み処理を終了する。
【0067】
この非同期neighbor−WALプロトコルでは、バックアッププロセッシングエレメントは、ログの書き込み処理の完了を示すACKメッセージをプライマリプロセッシングエレメントに送信しないので、ログ書き込みの同期はとられない。また、ログはディスク装置に書き込まれるのではなく、メモリに書き込まれるので、ログオーバーヘッドを大幅に抑制することができる。一方、ここで、バックアッププロセッシングエレメントからACKメッセージをプライマリプロセッシングエレメントに送信し、ログ書き込みの同期を取る場合を同期neighbor−WALプロトコルと呼ぶ。
【0068】
つぎに、本実施例に係るBA−1.5フェーズコミットプロトコルについて説明する。図7は、本実施例に係るBA−1.5フェーズコミットプロトコルについて説明するシーケンス図である。
【0069】
図7では、各プロセッシングエレメント20a〜20dは、プライマリマスター、バックアップマスター、プライマリコホート、バックアップコホートの異なる役割をそれぞれ担っている。
【0070】
プライマリマスターは、クライアント10a〜10cからトランザクションの実行要求を受け付け、他のプロセッシングエレメント20a〜20dに当該トランザクションにおける各種オペレーションの実行要求を送信するプロセッシングエレメントである。バックアップマスターは、トランザクションに係る各種ログをプライマリマスターから取得してバックアップ用に記憶するプロセッシングエレメントである。
【0071】
プライマリコホートは、トランザクションにおいて更新される元データを記憶したプロセッシングエレメントである。バックアップコホートは、プライマリコホートにより記憶されたデータのバックアップデータを記憶するプロセッシングエレメントである。
【0072】
以下の説明においては、プライマリマスター、バックアップマスター、プライマリコホート、バックアップコホートはそれぞれ、プロセッシングエレメント20a、プロセッシングエレメント20b、プロセッシングエレメント20c、プロセッシングエレメント20dであるものとする。なお、プロセッシングエレメント20c(プライマリコホート)およびプロセッシングエレメント20d(バックアップコホート)はそれぞれ1台だけでなく、複数台あるものとする。
【0073】
まず、プロセッシングエレメント20aのトランザクション実行部340aは、クライアント10a〜10cからトランザクションの実行要求を受け付けた場合に、メンバーシップログを生成し、メモリ33aにログ330aとして記憶するとともに、そのメンバーシップログをプロセッシングエレメント20bに送信し、プロセッシングエレメント20bのメモリ33bにメンバーシップログをログ330bとして記憶させる(ステップS201)。
【0074】
ここで、メンバーシップログは、トランザクションにおいて実行される各種オペレーションの対象データを記憶しているプロセッシングエレメント20cの情報であり、ディレクトリデータ400aに基づいて生成される。
【0075】
また、プロセッシングエレメント20aのトランザクション実行部340aは、メンバーシップログを送信すべきプロセッシングエレメント20bをバックアップディスク管理データ331bを参照することにより判定し、そのプロセッシングエレメント20bにメンバーシップログを送信する。
【0076】
プロセッシングエレメント20bのトランザクション実行部340bは、プロセッシングエレメント20aからメンバーシップログを受信し、そのメンバーシップログをメモリ33bにログ330bとして記憶する。
【0077】
プロセッシングエレメント20aのトランザクション実行部340aは、メンバーシップログをプロセッシングエレメント20bに送信した後、複数のプロセッシングエレメント20cにトランザクションに係るオペレーションの実行要求メッセージを送信する(ステップS202)。ここで、オペレーションの実行要求メッセージを送信するプロセッシングエレメント20cはメンバーシップログにより特定される。
【0078】
各プロセッシングエレメント20cのトランザクション実行部340cは、このオペレーションの実行要求メッセージを受信し、当該オペレーションを実行する。そして、トランザクション実行部340cは、当該オペレーションに係るログを生成し、図6で説明した非同期neighbor−WALプロトコルを用いて、そのログをメモリ33cにログ330cとして記憶するとともに、各プロセッシングエレメント20cのバックアップデータを記憶するプロセッシングエレメント20dにログを送信する(ステップS203)。このログを受信したプロセッシングエレメント20dのトランザクション実行部340dは、送信されたログをメモリ33dにログ330dとして記憶する。
【0079】
プロセッシングエレメント20cのトランザクション実行部340cは、オペレーションの実行が完了すると、オペレーションの実行要求メッセージを送信したプロセッシングエレメント20aに対して、オペレーションの実行が完了したことを示すACKメッセージを送信する(ステップS204)。
【0080】
プロセッシングエレメント20aのトランザクション実行部340aは、プロセッシングエレメント20cのトランザクション実行部340cからACKメッセージを受信し、ACK管理データ332aのACKフラグを「1」に更新する。
【0081】
そして、トランザクション実行部340aは、プロセッシングエレメント20cに対して実行を要求するオペレーションがさらにある場合、つぎのオペレーションの実行要求メッセージをプロセッシングエレメント20cに送信する(ステップS205)。
【0082】
以下、プロセッシングエレメント20aのトランザクション実行部340a、プロセッシングエレメント20cのトランザクション実行部340c、および、プロセッシングエレメント20dのトランザクション実行部340dは、ステップS202〜ステップS204と同様の処理を、すべてのオペレーションが完了するまで繰り返す(ステップS206〜ステップS210)。
【0083】
そして、プロセッシングエレメント20aのトランザクション実行部340aは、すべてのオペレーションに対応するACKメッセージをメンバーシップログに登録されたすべてのプロセッシングエレメント20cから受信したことを確認した後、トランザクションに対するコミット処理(またはアボート処理)の実行要求に係る情報を含んだディシジョンログをメモリ33aにログ330aとして記憶するとともに、プロセッシングエレメント20bにそのディシジョンログを送信する(ステップS211)。
【0084】
プロセッシングエレメント20bのトランザクション実行部340bは、プロセッシングエレメント20aからディシジョンログを受信し、そのディシジョンログをメモリ33bにログ330bとして記憶する。
【0085】
そして、プロセッシングエレメント20aのトランザクション実行部340aは、トランザクションに対するコミット処理(またはアボート処理)の実行を要求するディシジョンメッセージをメンバーシップログに登録されたすべてのプロセッシングエレメント20cに送信する(ステップS212)。
【0086】
プロセッシングエレメント20cのトランザクション実行部340cは、このディシジョンメッセージを受信し、トランザクションのコミット処理(またはアボート処理)を実行して、ペンディング状態となる。このペンディング状態では、トランザクション実行部340cは、当該ディシジョンに係るログを生成し、同期neighbor−WALプロトコルを用いて、そのログをメモリ33cにログ330cとして記憶するとともに、プロセッシングエレメント20dに送信する(ステップS213)。
【0087】
このログを受信したプロセッシングエレメント20dのトランザクション実行部340dは、送信されたログをメモリ33dにログ330dとして記憶する。そして、トランザクション実行部340dは、プロセッシングエレメント20cから受信し、メモリ33dにログ330dとして情報が記憶されたすべてのオペレーションを実行する。
【0088】
オペレーションの実行後、トランザクション実行部340dは、オペレーションの実行完了を示すACKメッセージをプロセッシングエレメント20cに送信する(ステップS214)。ACKメッセージを送信した後、トランザクション実行部340dは、このトランザクションに係るすべてのログをメモリ33dから消去し、メモリ領域を開放する。
【0089】
プロセッシングエレメント20cのトランザクション実行部340cは、このACKメッセージを受信すると、プロセッシングエレメント20aに対して、プロセッシングエレメント20cおよびプロセッシングエレメント20dにおいてディシジョン処理が完了したことを示すディシジョンACKメッセージを送信する(ステップS215)。ディシジョンACKメッセージを送信した後、トランザクション実行部340cは、このトランザクションに係るすべてのログをメモリ33cから消去し、メモリ領域を開放する。
【0090】
プロセッシングエレメント20aのトランザクション実行部340aは、ディシジョンACKメッセージをメンバーシップログに登録されたすべてのプロセッシングエレメント20cから受信すると、トランザクションのディシジョン処理が完了したことを示すエンドログを生成し、非同期neighbor−WALプロトコルを用いて、エンドログをメモリ33aにログ330aとして記憶するとともに、プロセッシングエレメント20bにエンドログを送信する(ステップS216)。
【0091】
このエンドログを受信したプロセッシングエレメント20bのトランザクション実行部340bは、送信されたエンドログをメモリ33bにログ330bとして記憶し、このBA−1.5フェーズコミットプロトコルを用いたトランザクション処理を終了する。
【0092】
なお、ステップS213において、プライマリコホートであるプロセッシングエレメント20cは、ディシジョンに係るログをバックアップコホートであるプロセッシングエレメント20dに送信し、それに対するACKメッセージを待ち受けるが、プロセッシングエレメント20dに何らかの障害が発生し、ACKメッセージの受信ができなかった場合には、メモリに記憶したログを消去することなく、プライマリマスターであるプロセッシングエレメント20aにディシジョンACKメッセージを送信する。このログは、後にプロセッシングエレメント20dの復旧処理をおこなう際に用いられる。
【0093】
このように、プライマリコホートであるプロセッシングエレメント20cは、ディシジョン処理においてペンディング状態を経るが、バックアップコホートであるプロセッシングエレメント20dのペンディング状態における処理結果はトランザクションの最終結果に影響を及ぼさない。
【0094】
BA−1.5フェーズコミットプロトコルという名称は、このようなペンディング状態におけるプライマリコホートのディシジョン処理を0.5相とカウントし、プライマリマスターのディシジョン処理を1相とカウントすることにより命名されたものである。
【0095】
また、上記トランザクション処理では、トランザクション処理が終了したログをメモリ33c、33dから消去していくため、メモリオーバーフローの発生を抑制することができる。また、メモリオーバーフローが発生する場合には、ログの一部をディスク装置40c、40dに書き込むこととしてもよい。
【0096】
つぎに、プライマリマスター、バックアップマスター、プライマリコホート、バックアップコホートのいずれかに障害が発生した場合の復旧処理について説明する。なお、プライマリコホートであるプロセッシングエレメント20c、および、バックアップコホートであるプロセッシングエレメント20dはそれぞれ1台だけでなく、複数台あるものとする。
【0097】
(1)バックアップマスターに障害が発生した場合
バックアップマスターであるプロセッシングエレメント20bの障害は、トランザクション処理には何の影響も及ぼさない。プライマリマスターであるプロセッシングエレメント20aの障害復旧処理部341aは、プロセッシングエレメント20bに障害が発生したことを検出する。
【0098】
障害の発生は、常時接続が確立されているソケット通信がタイムアウトなどにより切断されたか否かや、プロセッシングエレメント20bから障害が発生したことを示す障害発生メッセージを受信したか否かなどを調べることにより検出される。
【0099】
そして、障害が検出された場合には、プロセッシングエレメント20aのトランザクション実行部340aは、非同期neighbor−WALプロトコルによりプロセッシングエレメント20bのメモリ33bにログを書き込むことはせず、プロセッシングエレメント20aのメモリ33aにだけログを書き込み、その後は通常の処理を継続する。
【0100】
(2)プライマリマスターに障害が発生した場合
(2−1)トランザクションのディシジョン前に障害が発生した場合
図8は、ディシジョン前にプライマリマスターに障害が検出された場合の復帰処理について説明するシーケンス図である。図8に示すように、バックアップマスターであるプロセッシングエレメント20bの障害復旧処理部341bは、プライマリマスターであるプロセッシングエレメント20aに発生した障害を検出する(ステップS301)。
【0101】
そして、障害復旧処理部341bは、メンバーシップログに登録されたプライマリコホートであるすべてのプロセッシングエレメント20cおよびバックアップコホートであるプロセッシングエレメント20dにトランザクションの実行を中止するアボートメッセージを送信する(ステップS302、ステップS303)。プロセッシングエレメント20cの障害復旧処理部341cおよびプロセッシングエレメント20dの障害復旧処理部341dは、このアボートメッセージを受信して、トランザクションの実行を中止する。
【0102】
(2−2)トランザクションのディシジョン処理実行決定後で、すべてのプライマリコホートからACKメッセージを受信する前に障害が発生した場合
図9は、ディシジョン処理実行決定後、すべてのプライマリコホートからACKメッセージを受信する前にプライマリマスターに障害が検出された場合の復帰処理について説明するシーケンス図である。
【0103】
ここで、バックアップマスターであるプロセッシングエレメント20bは、プライマリマスターであるプロセッシングエレメント20aがディシジョン処理の実行を決定した後、プロセッシングエレメント20aからディシジョンログを受信するので、ディシジョン処理の実行決定を検知することができる。
【0104】
図9に示すように、バックアップマスターであるプロセッシングエレメント20bの障害復旧処理部341bは、プライマリマスターであるプロセッシングエレメント20aに発生した障害を検出する(ステップS401)。そして、障害復旧処理部341bは、メンバーシップログに登録されたすべてのプロセッシングエレメント20cに対してディシジョンメッセージを送信する(ステップS402)。
【0105】
ここで、プロセッシングエレメント20bのメモリ33bには、メンバーシップログがすでに記憶されているので、障害復旧処理部341bは、ディシジョンメッセージを送信すべきすべてのプロセッシングエレメント20cをすべて検出することができる。
【0106】
このディシジョンメッセージを受信したプロセッシングエレメント20cのトランザクション実行部340cは、ディシジョン処理を実行するとともに、当該ディシジョン処理に係るログを生成し、同期neighbor−WALプロトコルを用いてバックアップコホートであるプロセッシングエレメント20dにログを送信する(ステップS403)。
【0107】
このログを受信したプロセッシングエレメント20dのトランザクション実行部340dは、プロセッシングエレメント20cから受信したログに情報が含まれるすべてのオペレーションを実行し、オペレーションの実行完了を示すACKメッセージをプロセッシングエレメント20cに送信する(ステップS404)。
【0108】
プロセッシングエレメント20cのトランザクション実行部340cは、このACKメッセージを受信すると、プロセッシングエレメント20bに対して、プロセッシングエレメント20cおよびプロセッシングエレメント20dにおいてディシジョン処理が完了したことを示すディシジョンACKメッセージを送信する(ステップS405)。
【0109】
プロセッシングエレメント20bの障害復旧処理部341bは、ディシジョンACKメッセージを受信すると、ディシジョン処理が完了したことを示すエンドログを生成し、エンドログをメモリ33bにログ330bとして記憶してトランザクション処理を終了する。
【0110】
(3)バックアップコホートに障害が発生した場合
トランザクション処理においては、バックアップコホートの障害はプライマリマスターおよびバックアップマスターには影響を及ぼさない。実際、プライマリマスターは、ディシジョン処理の実行以前には、プライマリコホートとバックアップコホートとの間で同期処理がおこなわれないので、バックアップコホートの障害を検出できない。
【0111】
図10は、バックアップコホートに異常が検出された場合の復帰処理について説明するシーケンス図である。図10に示すように、まず、プライマリコホートであるプロセッシングエレメント20cの障害復旧処理部341cは、バックアップコホートであるプロセッシングエレメント20dに発生した障害を検出する(ステップS501)。
【0112】
障害復旧処理部341cは、障害を検出すると、プライマリマスターであるプロセッシングエレメント20aにACKメッセージを送信する(ステップS502)。ここで、トランザクション実行部340cは、メモリ33cに記憶しているログを消去せず、保持しておく。
【0113】
その後、障害復旧処理部341cは、プロセッシングエレメント20dの復旧を検出する(ステップS503)。そして、障害復旧処理部341cは、復旧の検出後、メモリ33cに保持していたログをプロセッシングエレメント20dに送信する(ステップS504)。プロセッシングエレメント20dのトランザクション実行部340dは、このログを受信してメモリ33dに記憶するとともに、ログを用いてデータを最新の状態に更新する。
【0114】
(4)プライマリコホートに障害が発生した場合
(4−1)最後のオペレーションのプリペアード状態前に障害が発生した場合
プライマリマスターであるプロセッシングエレメント20aの障害復旧処理部341aが、最後のオペレーションのプリペアード状態前(図7のログライト(ログn)以前)に、プライマリコホートであるプロセッシングエレメント20cの1つに障害を検出した場合、障害復旧処理部341aは、障害を検出したプロセッシングエレメント20c以外のすべてのプライマリコホートおよびバックアップコホートに対して、トランザクションの中止を要求するアボートメッセージを送信する。
【0115】
(4−2)最後のオペレーションのプリペアード状態以降に障害が発生した場合
この状況においては、プライマリマスターであるプロセッシングエレメント20aは、プライマリコホートであるすべてのプロセッシングエレメント20cからオペレーションの実行要求に対するACKメッセージを収集し、すべてのプロセッシングエレメント20cに対してディシジョンメッセージを送信する。
【0116】
各プロセッシングエレメント20cにおいてはオペレーションの実行は完了しているので、この段階で障害が発生した場合には、プロセッシングエレメント20aは、トランザクションを中止するのではなく、そのまま継続させる。
【0117】
図11は、最後のオペレーションのプリペアード状態以降にプライマリコホートに障害が検出された場合の復帰処理について説明するシーケンス図である。図11に示すように、まず、プライマリマスターであるプロセッシングエレメント20aの障害復旧処理部341aは、プライマリコホートであるプロセッシングエレメント20cに発生した障害を検出する(ステップS601)。
【0118】
そして、障害復旧処理部341aは、バックアップコホートであるプロセッシングエレメント20dに、トランザクションに対するディシジョン処理の実行を要求するディシジョンメッセージを送信する(ステップS602)。
【0119】
プロセッシングエレメント20dのトランザクション実行部340dは、このディシジョンメッセージを受信し、ディシジョン処理を実行して、ディシジョンACKメッセージをプロセッシングエレメント20aに送信する(ステップS603)。ここで、トランザクション実行部340dは、メモリ33dに記憶しているログを消去せず、保持しておく。
【0120】
プロセッシングエレメント20cの障害復旧処理部341cは、障害から復旧した後、プロセッシングエレメント20dに対して、ログの問い合わせをおこなう(ステップS604)。
【0121】
プロセッシングエレメント20dの障害復旧処理部341dは、この問い合わせを受け付けると、プロセッシングエレメント20cにログを送信する(ステップS605)。プロセッシングエレメント20cの障害復旧処理部341cは、このログを用いて、データを最新の状態に更新する。
【0122】
本実施例にて説明してきた各種の処理は、あらかじめ用意されたプログラムをコンピュータで実行することによって実現することができる。そこで、以下では、上記各種処理を実現するプログラムを実行するコンピュータの一例について説明する。
【0123】
図12は、図3に示したコントローラ30a〜30dとなるコンピュータのハードウェア構成を示す図である。このコンピュータは、ネットワークを介して他のコンピュータとの間でデータの授受をおこなうネットワークインターフェース100、ディスク装置との間でデータの授受をおこなうディスクインターフェース101、CPU(Central Processing Unit)102、ROM(Read Only Memory)103、RAM(Random Access Memory)104をバス105で接続して構成される。
【0124】
そして、ROM103には、コントローラ30a〜30dの機能と同様の機能を発揮するデータ記憶制御プログラム103aが記憶されている。なお、このデータ記憶制御プログラム103aについては、適宜分散して記憶することとしてもよい。
【0125】
そして、CPU102が、データ記憶制御プログラム103aをROM103から読み出して実行することにより、データ記憶制御プロセス102aが起動され、機能するようになる。なお、ここではCPU102がデータ記憶制御プログラム103aを実行することしているが、MCU(Micro Controller Unit)やMPU(Micro Processing Unit)がデータ記憶制御プログラム103aを実行することとしてもよい。
【0126】
このデータ記憶制御プログラム103aは、図3に示したトランザクション実行部340a(340b,340c,340d)、障害復旧処理部341a(341b,341c,341d)に対応する。
【0127】
また、CPU102は、RAM104にログ104a、バックアップディスク管理データ104b、ACK管理データ104cを記憶させるとともに、RAM104からそれらのデータを読み出して各種データ処理を実行する。
【0128】
ログ104a、バックアップディスク管理データ104b、ACK管理データ104cは、図3に示したログ330a(330b,330c,330d)、バックアップディスク管理データ331a(331b,331c,331d)、ACK管理データ332a(332b,332c,332d)にそれぞれ対応する。
【0129】
つぎに、本実施例に係るBA−1.5フェーズコミットプロトコル(BA−1.5PC)、2フェーズコミットプロトコル(2PC)、および、アーリープリペアプロトコル(EP)間でのオーバーヘッドの比較について述べる。ここでいうオーバーヘッドには、トランザクションのオペレーション処理、コミット処理におけるメッセージ交換と、強制ディスク書き込みとの両方を含んでいる。
【0130】
図13は、各プロトコルのコミットされたトランザクションのオーバーヘッドを示す図である。ここで、Pは、トランザクションにおいて実行されるオペレーションの数であり、Nは、オペレーションを実行するコホートの数である。
【0131】
図13に示されるように、BA−1.5フェーズコミットプロトコル、2フェーズコミットプロトコル、アーリープリペアプロトコルにおいて送信されるメッセージ数はそれぞれ、3+3P+4N、2P+8N、4P+2Nとなる。
【0132】
また、BA−1.5フェーズコミットプロトコル、2フェーズコミットプロトコル、アーリープリペアプロトコルにおいて実行されるディスク装置への強制ログライト数はそれぞれ、0、4N+1、2P+2となる。
【0133】
BA−1.5フェーズコミットプロトコルのメッセージ数は、図7から得られる。また、BA−1.5フェーズコミットプロトコルでは、非同期neighbor−WALプロトコルを用いるため、ディスク装置への強制ログライトは不要であり、強制ログライト数は0となる。
【0134】
2フェーズコミットプロトコルでは、コホートは、コミット処理時に強制ディスクライトを2回実行する必要がある(1回は投票時、もう1回はディシジョン時)。一方、マスターは、ディシジョン時に1回強制ディスクライトを実行する必要がある。
【0135】
また、マスターは、各コホートとの間でメッセージを2往復分交換する必要がある。したがって、トランザクションにおいてP個のオペレーションをおこなう場合には、交換されるメッセージの数は4N+Pとなり、強制ディスクライトの数は2N+1となる。
【0136】
この2フェーズコミットプロトコルを自律ディスクに適用した場合、プライマリコホートは、オペレーションおよびコミット処理時にバックアップコホートにメッセージを送信してその応答を受信する。また、コミット処理時には強制ログライトが2回発生する。したがって、2フェーズコミットプロトコルにおけるメッセージ数は8N+2Pとなり、強制ログライト数は4N+1となる。
【0137】
アーリープリペアプロトコルでは、コホートは、オペレーションごとに更新データとともにログをディスク装置に強制ライトする。そして、コホートは、マスターにオペレーションに対するACKメッセージを送信する。
【0138】
コミット時には、コホートは、中止されたトランザクションに対してのみ強制ログライトをおこない、中止されたトランザクションに対してのみACKメッセージを送信する。マスターがおこなう強制ログライトは、トランザクションの開始時におけるメンバーシップログの強制ログライトと、コミット時におけるディシジョンログの強制ログライトである。したがって、アーリープリペアプロトコルにおけるメッセージ数は2P+Nとなり、強制ログライト数はP+2となる。
【0139】
このアーリープリペアプロトコルを自律ディスクに適用した場合、プライマリコホートはバックアップコホートに対してオペレーションおよびディシジョンメッセージを送信する必要があるため、メッセージ数は4P+2Nとなり、強制ログライト数は2P+2となる。
【0140】
図13からわかるように、BA−1.5フェーズコミットプロトコルでは強制ログライトが発生せず、2フェーズコミットプロトコル、アーリープリペアプロトコルと比較してデータ処理を高速におこなうことができる。また、N>3で、2N+3<P<4N−3の関係をPが満足する場合には、メッセージ数も最小となり、他の2つのプロトコルよりもデータ処理を効率的におこなうことができる。
【0141】
つぎに、BA−1.5フェーズコミットプロトコル、2フェーズコミットプロトコル、および、アーリープリペアプロトコル間でのスループットの比較について述べる。図14は、各プロトコルのスループットの比較結果を示す図である。図14には、24台のディスク装置を有する自律ディスクにおけるさまざまなサイズのデータのインサート処理に係るスループットが示されている。
【0142】
図14に示すように、BA−1.5フェーズコミットプロトコルのスループットは、すべてのデータサイズにおいて、2フェーズコミットプロトコルおよびアーリープリペアプロトコルのスループットを上回っている。これは、BA−1.5フェーズコミットプロトコルでは、コミット処理におけるメッセージ交換の複雑さを解消し、強制ログライトを不要としたためである。
【0143】
図15、16および17はそれぞれ、BA−1.5フェーズコミットプロトコル、2PCプロトコル、および、EPプロトコルのスループットを示す図である。図15、16および17に示されるように、いずれのプロトコルにおいてもディスク装置(ノード)の数が増えるにつれてスループットが増大することがわかる。
【0144】
そして、BA−1.5フェーズコミットプロトコルにおけるスループットは、ディスク装置の数がいくつであっても、2PCプロトコルおよびEPプロトコルのスループットよりも大きくなっている。このように、自律ディスクにBA−1.5フェーズコミットプロトコルを適用することにより、データ処理を高速におこなうことができる。
【0145】
上述してきたように、本実施例では、プライマリマスターであるプロセッシングエレメント20aが、データに対するオペレーションの実行要求メッセージを送信し、プライマリコホートである1つ以上のプロセッシングエレメント20bが、オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対するACKメッセージをプロセッシングエレメント20aに送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、バックアップコホートである1つ以上のプロセッシングエレメント20dが、1つ以上のプロセッシングエレメント20cにより送信されたメッセージを受信して各オペレーションに係るログ情報をメモリ33dに記憶し、プロセッシングエレメント20aが、1つ以上のプロセッシングエレメント20cにより送信されたACKメッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信し、1つ以上のプロセッシングエレメント20cは、プロセッシングエレメント20aにより送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、1つ以上のプロセッシングエレメント20cのそれぞれに接続されたディスク装置40cに記憶されたデータを更新するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、1つ以上のプロセッシングエレメント20dが、1つ以上のプロセッシングエレメント20cにより送信されたメッセージを受信し、メモリ33dに記憶されたログ情報に基づいてディシジョン処理を実行して、1つ以上のプロセッシングエレメント20dのそれぞれに接続されたディスク装置40dに記憶されたバックアップデータの更新をおこなうこととしたので、トランザクションに係るオーバーヘッドの増大を抑制し、データ処理の効率を向上させることができる。
【0146】
また、本実施例では、バックアップコホートである1つ以上のプロセッシングエレメント20dが、ディシジョン処理を実行した後、ディシジョン処理の完了を示すディシジョン完了メッセージを送信し、プライマリコホートである1つ以上のプロセッシングエレメント20cが、1つ以上のプロセッシングエレメント20dからディシジョン完了メッセージを受信した場合に、プライマリマスターであるプロセッシングエレメント20aに対してデータの同期処理が完了したことを示す同期完了メッセージを送信することとしたので、データとバックアップデータとの間で同期を確実にとることができる。
【0147】
また、本実施例では、プライマリマスターであるプロセッシングエレメント20aが、オペレーションの実行要求メッセージを送信する1つ以上のプロセッシングエレメント20cを示すメンバーシップログ情報を生成してバックアップマスターであるプロセッシングエレメント20bに送信し、プロセッシングエレメント20bが、メンバーシップログ情報をメモリ33bに記憶し、プロセッシングエレメント20aが、ディシジョン処理の実行を決定した場合にディシジョン処理の実行決定を示すディシジョンログ情報を生成してプロセッシングエレメント20bに送信し、プロセッシングエレメント20bが、ディシジョンログ情報を受信した後、プロセッシングエレメント20aに係る障害を検出した場合に、メンバーシップログ情報に基づいてオペレーションに対するディシジョン処理の実行要求メッセージを1つ以上のプロセッシングエレメント20cに送信することとしたので、プロセッシングエレメント20aに係る障害が発生した場合でも、ディシジョン処理を迅速に実行することができる。
【0148】
また、本実施例では、プライマリコホートである1つ以上のプロセッシングエレメント20cが、プライマリマスターであるプロセッシングエレメント20aからディシジョン処理の実行要求メッセージを受信した後、バックアップコホートである1つ以上のプロセッシングエレメント20dに係る障害を検出した場合に、プロセッシングエレメント20aに対してディシジョン完了メッセージを送信し、障害が復旧した場合に、1つ以上のプロセッシングエレメント20dが、メモリ33dに記憶されたログ情報に基づいてディシジョン処理を実行して、1つ以上のプロセッシングエレメント20dのそれぞれに接続されたディスク装置40dに記憶されたバックアップデータを更新することとしたので、プロセッシングエレメント20dに係る障害が発生した場合でも、ディシジョン処理を迅速に実行することができる。
【0149】
また、本実施例では、プライマリマスターであるプロセッシングエレメント20aが、プライマリコホートである1つ以上のプロセッシングエレメント20cにより送信されたすべての応答メッセージを受信した後、1つ以上のプロセッシングエレメント20cのうちのいずれかに係る障害を検出した場合に、1つ以上のプロセッシングエレメント20dにオペレーションに対するディシジョン処理の実行要求メッセージを送信し、1つ以上のプロセッシングエレメント20dが、プロセッシングエレメント20aにより送信されたディシジョン処理の実行要求メッセージを受信した場合に、ディシジョン処理を実行し、障害が復旧した場合にディシジョン処理に係るログ情報を障害が発生したプロセッシングエレメント20cに送信し、プロセッシングエレメント20cは、ディシジョン処理に係るログ情報を受信し、受信したログ情報に基づいてディシジョン処理を実行することとしたので、プロセッシングエレメント20cに係る障害が発生した場合でも、ディシジョン処理を迅速に実行することができる。
【0150】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、特許請求の範囲に記載した技術的思想の範囲内において種々の異なる実施例にて実施されてもよいものである。
【0151】
たとえば、図7のステップS215において、プライマリコホートは、バックアップコホートとの間でデータの同期をとった後に、プライマリマスターに対してディシジョンACKメッセージを送信しているが、バックアップコホートとのデータ同期を待たずに、ディシジョンACKメッセージを送信することとしてもよい。これにより、ディシジョン処理に要する時間をさらに短縮することができる。
【0152】
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。
【0153】
この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0154】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【0155】
さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPU(あるいはMCUやMPU)および当該CPU(あるいはMCUやMPU)にて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【0156】
(付記1)データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部に記憶させる制御をおこなうデータ記憶制御装置であって、
データに対するオペレーションの実行要求メッセージを複数送信する第1の記憶制御部と、
前記オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対する応答メッセージを第1の記憶制御部に送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信する1つ以上の第2の記憶制御部と、
前記1つ以上の第2の記憶制御部により送信されたメッセージを受信して各オペレーションに係るログ情報をメモリに記憶する1つ以上の第3の記憶制御部と、
を備え、
前記第1の記憶制御部は、前記1つ以上の第2の記憶制御部により送信された応答メッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信し、
前記1つ以上の第2の記憶制御部は、第1の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、前記1つ以上の第2の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたデータの更新を制御するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、
前記1つ以上の第3の記憶制御部は、前記1つ以上の第2の記憶制御部により送信されたメッセージを受信し、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記1つ以上の第3の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新制御をおこなう
ことを特徴とするデータ記憶制御装置。
【0157】
(付記2)前記1つ以上の第3の記憶制御部は、前記ディシジョン処理を実行した後、ディシジョン処理の完了を示すディシジョン完了メッセージを送信し、前記1つ以上の第2の記憶制御部は、前記1つ以上の第3の記憶制御部からディシジョン完了メッセージを受信した場合に、前記第1の記憶制御部に対してデータの同期処理が完了したことを示す同期完了メッセージを送信することを特徴とする付記1に記載のデータ記憶制御装置。
【0158】
(付記3)オペレーションの実行要求メッセージを送信する1つ以上の第2の記憶制御部を示すメンバーシップログ情報をメモリに記憶する第4の記憶制御部をさらに備え、前記第1の記憶制御部は、前記メンバーシップログ情報を生成して第4の記憶制御部に送信するとともに、前記ディシジョン処理の実行を決定した場合にディシジョン処理の実行決定を示すディシジョンログ情報を生成して第4の記憶制御部に送信し、前記第4の記憶制御部は、前記ディシジョンログ情報を受信した後、前記第1の記憶制御部に係る障害を検出した場合に、前記メンバーシップログ情報に基づいてオペレーションに対するディシジョン処理の実行要求メッセージを前記1つ以上の第2の記憶制御部に送信することを特徴とする付記1または2に記載のデータ記憶制御装置。
【0159】
(付記4)前記1つ以上の第2の記憶制御部は、前記第1の記憶制御部からディシジョン処理の実行要求メッセージを受信した後、前記1つ以上の第3の記憶制御部に係る障害を検出した場合に、第1の記憶制御部に対して前記ディシジョン完了メッセージを送信し、前記障害が復旧した場合に、前記1つ以上の第3の記憶制御部は、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記1つ以上の第3の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新制御をおこなうことを特徴とする付記1、2または3に記載のデータ記憶制御装置。
【0160】
(付記5)前記第1の記憶制御部は、前記1つ以上の第2の記憶制御部により送信されたすべての応答メッセージを受信した後、前記1つ以上の第2の記憶制御部のうちのいずれかに係る障害を検出した場合に、前記1つ以上の第3の記憶制御部にオペレーションに対するディシジョン処理の実行要求メッセージを送信し、前記1つ以上の第3の記憶制御部は、第1の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合に、ディシジョン処理を実行し、前記障害が復旧した場合にディシジョン処理に係るログ情報を障害から復旧した第2の記憶制御部に送信し、障害から復旧した第2の記憶制御部は、ディシジョン処理に係るログ情報を受信し、受信したログ情報に基づいてディシジョン処理を実行することを特徴とする付記1〜4のいずれか1つに記載のデータ記憶制御装置。
【0161】
(付記6)複数のデータ記憶部を有し、データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部に記憶させるデータ記憶装置であって、
データに対するオペレーションの実行要求メッセージを複数送信する第1の記憶制御部と、
前記オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対する応答メッセージを第1の記憶制御部に送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信する1つ以上の第2の記憶制御部と、
前記1つ以上の第2の記憶制御部により送信されたメッセージを受信して各オペレーションに係るログ情報をメモリに記憶する1つ以上の第3の記憶制御部と、
を備え、
前記第1の記憶制御部は、前記1つ以上の第2の記憶制御部により送信された応答メッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信し、
前記1つ以上の第2の記憶制御部は、第1の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、前記1つ以上の第2の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたデータを更新するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、
前記1つ以上の第3の記憶制御部は、前記1つ以上の第2の記憶制御部により送信されたメッセージを受信し、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記1つ以上の第3の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新をおこなう
ことを特徴とするデータ記憶装置。
【0162】
(付記7)前記1つ以上の第3の記憶制御部は、前記ディシジョン処理を実行した後、ディシジョン処理の完了を示すディシジョン完了メッセージを送信し、前記1つ以上の第2の記憶制御部は、前記1つ以上の第3の記憶制御部からディシジョン完了メッセージを受信した場合に、前記第1の記憶制御部に対してデータの同期処理が完了したことを示す同期完了メッセージを送信することを特徴とする付記6に記載のデータ記憶装置。
【0163】
(付記8)オペレーションの実行要求メッセージを送信する1つ以上の第2の記憶制御部を示すメンバーシップログ情報をメモリに記憶する第4の記憶制御部をさらに備え、前記第1の記憶制御部は、前記メンバーシップログ情報を生成して第4の記憶制御部に送信するとともに、前記ディシジョン処理の実行を決定した場合にディシジョン処理の実行決定を示すディシジョンログ情報を生成して第4の記憶制御部に送信し、前記第4の記憶制御部は、前記ディシジョンログ情報を受信した後、前記第1の記憶制御部に係る障害を検出した場合に、前記メンバーシップログ情報に基づいてオペレーションに対するディシジョン処理の実行要求メッセージを前記1つ以上の第2の記憶制御部に送信することを特徴とする付記6または7に記載のデータ記憶装置。
【0164】
(付記9)前記1つ以上の第2の記憶制御部は、前記第1の記憶制御部からディシジョン処理の実行要求メッセージを受信した後、前記1つ以上の第3の記憶制御部に係る障害を検出した場合に、第1の記憶制御部に対して前記ディシジョン完了メッセージを送信し、前記障害が復旧した場合に、前記1つ以上の第3の記憶制御部は、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記1つ以上の第3の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータを更新することを特徴とする付記6、7または8に記載のデータ記憶装置。
【0165】
(付記10)前記第1の記憶制御部は、前記1つ以上の第2の記憶制御部により送信されたすべての応答メッセージを受信した後、前記1つ以上の第2の記憶制御部のうちのいずれかに係る障害を検出した場合に、前記1つ以上の第3の記憶制御部にオペレーションに対するディシジョン処理の実行要求メッセージを送信し、前記1つ以上の第3の記憶制御部は、第1の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合に、ディシジョン処理を実行し、前記障害が復旧した場合にディシジョン処理に係るログ情報を障害から復旧した第2の記憶制御部に送信し、障害から復旧した第2の記憶制御部は、ディシジョン処理に係るログ情報を受信し、受信したログ情報に基づいてディシジョン処理を実行することを特徴とする付記6〜9のいずれか1つに記載のデータ記憶装置。
【0166】
(付記11)データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部に記憶させるデータ記憶方法であって、
第1の記憶制御部が、データに対するオペレーションの実行要求メッセージを送信するオペレーション実行要求メッセージ送信工程と、
1つ以上の第2の記憶制御部が、前記オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対する応答メッセージを第1の記憶制御部に送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、1つ以上の第3の記憶制御部が、前記1つ以上の第2の記憶制御部により送信されたメッセージを受信して各オペレーションに係るログ情報をメモリに記憶するオペレーション実行工程と、
前記第1の記憶制御部が、前記1つ以上の第2の記憶制御部により送信された応答メッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信するディシジョン実行要求メッセージ送信工程と、
前記1つ以上の第2の記憶制御部が、第1の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、前記1つ以上の第2の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたデータを更新するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、前記1つ以上の第3の記憶制御部が、前記1つ以上の第2の記憶制御部により送信されたメッセージを受信し、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記1つ以上の第3の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新をおこなうディシジョン実行工程と、
を含んだことを特徴とするデータ記憶方法。
【0167】
(付記12)前記1つ以上の第3の記憶制御部が、前記ディシジョン処理を実行した後、ディシジョン処理の完了を示すディシジョン完了メッセージを送信するディシジョン完了メッセージ送信工程と、前記1つ以上の第2の記憶制御部が、前記1つ以上の第3の記憶制御部からディシジョン完了メッセージを受信した場合に、前記第1の記憶制御部に対してデータの同期処理が完了したことを示す同期完了メッセージを送信する同期完了メッセージ送信工程とをさらに含んだことを特徴とする付記11に記載のデータ記憶方法。
【0168】
(付記13)前記オペレーション実行要求メッセージ送信工程は、前記第1の記憶制御部が、オペレーションの実行要求メッセージを送信する1つ以上の第2の記憶制御部を示すメンバーシップログ情報を生成して第4の記憶制御部に送信し、第4の記憶制御部が、前記メンバーシップログ情報をメモリに記憶し、前記ディシジョン実行要求メッセージ送信工程は、前記第1の記憶制御部が、前記ディシジョン処理の実行を決定した場合にディシジョン処理の実行決定を示すディシジョンログ情報を生成して第4の記憶制御部に送信し、第4の記憶制御部が、前記ディシジョンログ情報を受信した後、前記第1の記憶制御部に係る障害を検出した場合に、前記メンバーシップログ情報に基づいてオペレーションに対するディシジョン処理の実行要求メッセージを前記1つ以上の第2の記憶制御部に送信することを特徴とする付記11または12に記載のデータ記憶方法。
【0169】
(付記14)前記ディシジョン実行工程は、前記1つ以上の第2の記憶制御部が、前記第1の記憶制御部からディシジョン処理の実行要求メッセージを受信した後、前記1つ以上の第3の記憶制御部に係る障害を検出した場合に、第1の記憶制御部に対して前記ディシジョン完了メッセージを送信し、前記障害が復旧した場合に、前記1つ以上の第3の記憶制御部が、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記1つ以上の第3の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータを更新することを特徴とする付記11、12または13に記載のデータ記憶方法。
【0170】
(付記15)前記ディシジョン実行要求メッセージ送信工程は、前記第1の記憶制御部が、前記1つ以上の第2の記憶制御部により送信されたすべての応答メッセージを受信した後、前記1つ以上の第2の記憶制御部のうちのいずれかに係る障害を検出した場合に、前記1つ以上の第3の記憶制御部にオペレーションに対するディシジョン処理の実行要求メッセージを送信し、前記ディシジョン実行工程は、前記1つ以上の第3の記憶制御部が、第1の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合に、ディシジョン処理を実行し、前記障害が復旧した場合にディシジョン処理に係るログ情報を障害から復旧した第2の記憶制御部に送信し、障害から復旧した第2の記憶制御部が、ディシジョン処理に係るログ情報を受信し、受信したログ情報に基づいてディシジョン処理を実行することを特徴とする付記11〜14のいずれか1つに記載のデータ記憶方法。
【0171】
(付記16)データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部に記憶させる制御をおこなうデータ記憶制御プログラムであって、
第1の記憶制御部が、データに対するオペレーションの実行要求メッセージを送信するオペレーション実行要求メッセージ送信手順と、
1つ以上の第2の記憶制御部が、前記オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対する応答メッセージを第1の記憶制御部に送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、1つ以上の第3の記憶制御部が、前記1つ以上の第2の記憶制御部により送信されたメッセージを受信して各オペレーションに係るログ情報をメモリに記憶するオペレーション実行手順と、
前記第1の記憶制御部が、前記1つ以上の第2の記憶制御部により送信された応答メッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信するディシジョン実行要求メッセージ送信手順と、
前記1つ以上の第2の記憶制御部が、第1の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、前記1つ以上の第2の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたデータを更新するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、前記1つ以上の第3の記憶制御部が、前記1つ以上の第2の記憶制御部により送信されたメッセージを受信し、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記1つ以上の第3の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新をおこなうディシジョン実行手順と、
をコンピュータに実行させることを特徴とするデータ記憶制御プログラム。
【産業上の利用可能性】
【0172】
以上のように、本発明に係るデータ記憶制御装置およびデータ記憶装置は、トランザクションに係るオーバーヘッドの増大を抑制し、データ処理の効率を向上させることができるデータ記憶システムに有用である。
【図面の簡単な説明】
【0173】
【図1】本実施例に係る自律ディスクシステムの機能構成を示す図である。
【図2】Fat−Btreeについて説明する説明図である。
【図3】図1に示したプロセッシングエレメント20a〜20dの機能構成を示す図である。
【図4】図3に示したバックアップディスク管理データ331a〜331dの一例を示す図である。
【図5】図3に示したACK管理データ332a〜332dの一例を示す図である。
【図6】非同期neighbor−WALプロトコルについて説明するシーケンス図である。
【図7】本実施例に係るBA−1.5フェーズコミットプロトコルについて説明するシーケンス図である。
【図8】ディシジョン前にプライマリマスターに障害が検出された場合の復帰処理について説明するシーケンス図である。
【図9】ディシジョン処理実行決定後、すべてのプライマリコホートからACKメッセージを受信する前にプライマリマスターに障害が検出された場合の復帰処理について説明するシーケンス図である。
【図10】バックアップコホートに障害が検出された場合の復帰処理について説明するシーケンス図である。
【図11】最後のオペレーションのプリペアード状態以降にプライマリコホートに障害が検出された場合の復帰処理について説明するシーケンス図である。
【図12】図3に示したコントローラ30a〜30dとなるコンピュータのハードウェア構成を示す図である。
【図13】各プロトコルのコミットされたトランザクションのオーバーヘッドを示す図である。
【図14】各プロトコルのスループットの比較結果を示す図である。
【図15】BA−1.5フェーズコミットプロトコルのスループットを示す図である。
【図16】2PCプロトコルのスループットを示す図である。
【図17】EPプロトコルのスループットを示す図である。
【符号の説明】
【0174】
10a〜10c クライアント
100 ネットワークインターフェース
101 ディスクインターフェース
102 CPU
103 ROM
104 RAM
105 バス
20a〜20d プロセッシングエレメント
30a〜30d コントローラ
31a〜31d ネットワークインターフェース部
32a〜32d ディスクインターフェース部
33a〜33d メモリ
330a〜330d,104a ログ
331a〜331d,104b バックアップディスク管理データ
332a〜332d,104c ACK管理データ
34a〜34d 制御部
340a〜340d トランザクション実行部
341a〜341d 障害復旧処理部
40a〜40d ディスク装置
400a〜400d ディレクトリデータ
401a〜401d ディレクトリバックアップデータ
402a〜402d プライマリデータ
403a〜403d バックアップデータ
50 ネットワーク

【特許請求の範囲】
【請求項1】
データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部に記憶させる制御をおこなうデータ記憶制御装置であって、
データに対するオペレーションの実行要求メッセージを複数送信する第1の記憶制御部と、
前記オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対する応答メッセージを第1の記憶制御部に送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信する1つ以上の第2の記憶制御部と、
前記1つ以上の第2の記憶制御部により送信されたメッセージを受信して各オペレーションに係るログ情報をメモリに記憶する1つ以上の第3の記憶制御部と、
を備え、
前記第1の記憶制御部は、前記1つ以上の第2の記憶制御部により送信された応答メッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信し、
前記1つ以上の第2の記憶制御部は、第1の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、前記1つ以上の第2の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたデータの更新を制御するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、
前記1つ以上の第3の記憶制御部は、前記1つ以上の第2の記憶制御部により送信されたメッセージを受信し、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記1つ以上の第3の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新制御をおこなう
ことを特徴とするデータ記憶制御装置。
【請求項2】
前記1つ以上の第3の記憶制御部は、前記ディシジョン処理を実行した後、ディシジョン処理の完了を示すディシジョン完了メッセージを送信し、前記1つ以上の第2の記憶制御部は、前記1つ以上の第3の記憶制御部からディシジョン完了メッセージを受信した場合に、前記第1の記憶制御部に対してデータの同期処理が完了したことを示す同期完了メッセージを送信することを特徴とする請求項1に記載のデータ記憶制御装置。
【請求項3】
オペレーションの実行要求メッセージを送信する1つ以上の第2の記憶制御部を示すメンバーシップログ情報をメモリに記憶する第4の記憶制御部をさらに備え、前記第1の記憶制御部は、前記メンバーシップログ情報を生成して第4の記憶制御部に送信するとともに、前記ディシジョン処理の実行を決定した場合にディシジョン処理の実行決定を示すディシジョンログ情報を生成して第4の記憶制御部に送信し、前記第4の記憶制御部は、前記ディシジョンログ情報を受信した後、前記第1の記憶制御部に係る障害を検出した場合に、前記メンバーシップログ情報に基づいてオペレーションに対するディシジョン処理の実行要求メッセージを前記1つ以上の第2の記憶制御部に送信することを特徴とする請求項1または2に記載のデータ記憶制御装置。
【請求項4】
前記1つ以上の第2の記憶制御部は、前記第1の記憶制御部からディシジョン処理の実行要求メッセージを受信した後、前記1つ以上の第3の記憶制御部に係る障害を検出した場合に、第1の記憶制御部に対して前記ディシジョン完了メッセージを送信し、前記障害が復旧した場合に、前記1つ以上の第3の記憶制御部は、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記1つ以上の第3の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新制御をおこなうことを特徴とする請求項1、2または3に記載のデータ記憶制御装置。
【請求項5】
前記第1の記憶制御部は、前記1つ以上の第2の記憶制御部により送信されたすべての応答メッセージを受信した後、前記1つ以上の第2の記憶制御部のうちのいずれかに係る障害を検出した場合に、前記1つ以上の第3の記憶制御部にオペレーションに対するディシジョン処理の実行要求メッセージを送信し、前記1つ以上の第3の記憶制御部は、第1の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合に、ディシジョン処理を実行し、前記障害が復旧した場合にディシジョン処理に係るログ情報を障害から復旧した第2の記憶制御部に送信し、障害から復旧した第2の記憶制御部は、ディシジョン処理に係るログ情報を受信し、受信したログ情報に基づいてディシジョン処理を実行することを特徴とする請求項1〜4のいずれか1つに記載のデータ記憶制御装置。
【請求項6】
複数のデータ記憶部を有し、データと当該データのバックアップデータとをそれぞれ異なるデータ記憶部に記憶させるデータ記憶装置であって、
データに対するオペレーションの実行要求メッセージを複数送信する第1の記憶制御部と、
前記オペレーションの実行要求メッセージを受信した場合に、当該オペレーションを実行するとともに、オペレーションの実行が完了するたびにオペレーションの実行要求メッセージに対する応答メッセージを第1の記憶制御部に送信し、オペレーションに係るログ情報を生成して当該ログ情報を含んだメッセージを送信する1つ以上の第2の記憶制御部と、
前記1つ以上の第2の記憶制御部により送信されたメッセージを受信して各オペレーションに係るログ情報をメモリに記憶する1つ以上の第3の記憶制御部と、
を備え、
前記第1の記憶制御部は、前記1つ以上の第2の記憶制御部により送信された応答メッセージを受信してすべてのオペレーションの実行が完了したか否かを判定し、すべてのオペレーションの実行完了後、オペレーションに対するディシジョン処理の実行要求メッセージを送信し、
前記1つ以上の第2の記憶制御部は、第1の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合にディシジョン処理を実行して、前記1つ以上の第2の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたデータを更新するとともに、ディシジョン処理に係るログ情報を生成して当該ログ情報を含んだメッセージを送信し、
前記1つ以上の第3の記憶制御部は、前記1つ以上の第2の記憶制御部により送信されたメッセージを受信し、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記1つ以上の第3の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータの更新をおこなう
ことを特徴とするデータ記憶装置。
【請求項7】
前記1つ以上の第3の記憶制御部は、前記ディシジョン処理を実行した後、ディシジョン処理の完了を示すディシジョン完了メッセージを送信し、前記1つ以上の第2の記憶制御部は、前記1つ以上の第3の記憶制御部からディシジョン完了メッセージを受信した場合に、前記第1の記憶制御部に対してデータの同期処理が完了したことを示す同期完了メッセージを送信することを特徴とする請求項6に記載のデータ記憶装置。
【請求項8】
オペレーションの実行要求メッセージを送信する1つ以上の第2の記憶制御部を示すメンバーシップログ情報をメモリに記憶する第4の記憶制御部をさらに備え、前記第1の記憶制御部は、前記メンバーシップログ情報を生成して第4の記憶制御部に送信するとともに、前記ディシジョン処理の実行を決定した場合にディシジョン処理の実行決定を示すディシジョンログ情報を生成して第4の記憶制御部に送信し、前記第4の記憶制御部は、前記ディシジョンログ情報を受信した後、前記第1の記憶制御部に係る障害を検出した場合に、前記メンバーシップログ情報に基づいてオペレーションに対するディシジョン処理の実行要求メッセージを前記1つ以上の第2の記憶制御部に送信することを特徴とする請求項6または7に記載のデータ記憶装置。
【請求項9】
前記1つ以上の第2の記憶制御部は、前記第1の記憶制御部からディシジョン処理の実行要求メッセージを受信した後、前記1つ以上の第3の記憶制御部に係る障害を検出した場合に、第1の記憶制御部に対して前記ディシジョン完了メッセージを送信し、前記障害が復旧した場合に、前記1つ以上の第3の記憶制御部は、前記メモリに記憶されたログ情報に基づいてディシジョン処理を実行して、前記1つ以上の第3の記憶制御部のそれぞれに接続されたデータ記憶部に記憶されたバックアップデータを更新することを特徴とする請求項6、7または8に記載のデータ記憶装置。
【請求項10】
前記第1の記憶制御部は、前記1つ以上の第2の記憶制御部により送信されたすべての応答メッセージを受信した後、前記1つ以上の第2の記憶制御部のうちのいずれかに係る障害を検出した場合に、前記1つ以上の第3の記憶制御部にオペレーションに対するディシジョン処理の実行要求メッセージを送信し、前記1つ以上の第3の記憶制御部は、第1の記憶制御部により送信されたディシジョン処理の実行要求メッセージを受信した場合に、ディシジョン処理を実行し、前記障害が復旧した場合にディシジョン処理に係るログ情報を障害から復旧した第2の記憶制御部に送信し、障害から復旧した第2の記憶制御部は、ディシジョン処理に係るログ情報を受信し、受信したログ情報に基づいてディシジョン処理を実行することを特徴とする請求項6〜9のいずれか1つに記載のデータ記憶装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2008−97155(P2008−97155A)
【公開日】平成20年4月24日(2008.4.24)
【国際特許分類】
【出願番号】特願2006−275820(P2006−275820)
【出願日】平成18年10月6日(2006.10.6)
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成18年度、独立行政法人科学技術振興機構、「先進ストレージシステムのシステムアーキテクチャ研究」にかかわる委託研究,産業活力再生特別措置法第30条の適用を受ける特許出願
【出願人】(000005223)富士通株式会社 (25,993)
【出願人】(304021417)国立大学法人東京工業大学 (1,821)
【Fターム(参考)】