(57)【特許請求の範囲】
【請求項１】
クラスタ構成された複数台のデータ管理サーバと、
振分サーバと、
を備え、
前記振分サーバは、
外部からの要求を前記データ管理サーバに振り分ける振分部と、
外部からの要求と前記データ管理サーバとの対応を示す振分表と、
を備え、
前記データ管理サーバは、それぞれ、
各データの収容位置を含むデータ管理テーブルを管理するテーブル管理部と、
前記各データを管理するデータ管理部と、
前記振分表と前記データ管理テーブルとを書込ロックしてスナップショットを作成したのちにロックを解除し、前記各データを書込ロックせずにスナップショットを作成するスナップショット作成部と、
外部からの要求に基づいてデータの書込または参照を行うものであり、前記スナップショット作成部のスナップショット作成中に、スナップショット作成開始時以降の未更新データに係る書込要求を外部から受信したならば、当該書込要求に係る未更新データをコピーし、コピーしたデータに当該書込要求を行って更新後の属性を設定して更新後データとすると共に、当該書込要求に係る未更新データに更新前の属性を設定して更新前データとするデータ書込参照処理部と、
前記各データ、前記データ管理テーブル、および、前記スナップショット作成部が作成したスナップショットデータを記憶する記憶部と、
を備えることを特徴とするサーバクラスタのスナップショット作成システム。
【請求項２】
前記データ書込参照処理部は、
前記スナップショット作成部のスナップショット作成中に、外部からデータの参照要求を受信したならば、前記データ管理テーブルに基づいて、各データを参照する、
ことを特徴とする請求項１に記載のサーバクラスタのスナップショット作成システム。
【請求項３】
前記スナップショット作成部は、
スナップショット作成開始時以降の各未更新データおよび各更新前データを収集してスナップショットを作成する、
ことを特徴とする請求項１に記載のサーバクラスタのスナップショット作成システム。
【請求項４】
前記スナップショット作成部は、
スナップショット作成が終了したならば、前記各更新前データを削除し、各更新後データに未更新の属性を設定する、
ことを特徴とする請求項３に記載のサーバクラスタのスナップショット作成システム。
【請求項５】
前記データ書込参照処理部は、
前記スナップショット作成部のスナップショット作成中に、外部から未更新データの削除要求を受信したならば、当該削除要求に係る未更新データに更新前の属性を設定する、
ことを特徴とする請求項１に記載のサーバクラスタのスナップショット作成システム。
【請求項６】
前記データ書込参照処理部は、
前記スナップショット作成部のスナップショット作成中に、外部からデータの新規作成要求を受信したならば、当該新規作成要求に係るデータに更新後の属性を設定する、
ことを特徴とする請求項１に記載のサーバクラスタのスナップショット作成システム。
【請求項７】
前記データ管理部は、前記記憶部に格納された第２データ管理テーブルに基づき、前記各データの属性を管理する、
ことを特徴とする請求項１に記載のサーバクラスタのスナップショット作成システム。
【請求項８】
各データの収容位置を含むデータ管理テーブルを管理するテーブル管理部と、
前記各データを管理するデータ管理部と、
前記データ管理テーブルを書込ロックしてスナップショットを作成したのちにロックを解除し、前記各データを書込ロックせずにスナップショットを作成するスナップショット作成部と、
外部からの要求に基づいてデータの書込または参照を行うものであり、前記スナップショット作成部のスナップショット作成中に、スナップショット作成開始時以降の未更新データに係る書込要求を外部から受信したならば、当該書込要求に係る未更新データをコピーし、コピーしたデータに当該書込要求を行って更新後の属性を設定して更新後データとすると共に、当該書込要求に係る未更新データに更新前の属性を設定して更新前データとするデータ書込参照処理部と、
前記各データ、前記データ管理テーブル、および前記スナップショット作成部が作成したスナップショットデータを記憶する記憶部と、
を備えることを特徴とするデータ管理サーバのスナップショット作成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを保持管理することを目的としたデータ管理サーバまたは複数のデータ管理サーバを含んだサーバクラスタにおいて、同一時点でのスナップショットを作成するシステムに関する。
【背景技術】
【０００２】
公衆向けサービスで扱うデータの量や、企業や大学などの特定組織内で扱うデータの量は、年を追うごとに増加している。かつては、１台のサーバにデータを集約管理するケースや、複数のサーバが個々にデータを管理するケースが多かった。管理されるデータに信頼性が必要な場合には、管理されるデータが二重化されているケースが多かった。
しかし、２０００年代後半になると、複数のデータ管理サーバのクラスタと、１台または複数台の振分サーバとで構成したクラスタシステムが登場して使われるようになっている。このクラスタシステムは、外部のクライアントには多量のデータを管理する単一のデータ管理サーバのように振る舞い、内部的には多量のデータを分割して管理する複数のデータ管理サーバとして構成される。
【０００３】
このクラスタシステムにおいて、振分サーバが、クライアントへのフロントエンドとなっている。振分サーバは、クライアントが送信したデータ書込要求やデータ参照要求を代理して受け付けて、然るべきデータ管理サーバに転送する。この仕組みにより、クラスタシステムは、クライアントには単一のデータ管理サーバのように振る舞う。このクラスタシステムは、データ管理サーバのいずれかが壊れた場合でも、個々のデータを複製して複数のデータ管理サーバに保持する技術により、そのデータの損失を防ぐことができる。
【０００４】
振り分けサーバとデータ管理サーバで構成されるデータベースでは、各データのキーとなる情報と、各データそのものである情報（バリュー）とに分けた管理方法が用いられる場合が多い。これらのデータベースは、キー値のハッシュとバリュー値の格納位置とを直接に結びつけることや、キー値のハッシュとバリュー値の格納位置とを結びつけるテーブルを管理することで、スケーラビリティを実現している。
【０００５】
これらデータ管理サーバは、各データをハードディスクのような不揮発性媒体で管理する場合が多い。また、データ管理サーバは、レスポンスを重視するような場合には、各データをＲＡＭ（Random Access Memory）のような揮発性メモリで管理することが一般的である。このような場合、データ管理サーバは、揮発性メモリ上のデータを不揮発性媒体にバックアップする場合がある。
【０００６】
クラスタシステムは、扱うデータの量の増加に併せて、データ管理サーバを増やすことが可能である。クラスタシステムは、データ管理サーバを増やす際に、各データ管理サーバの負荷の平準化のため、新しいデータ管理サーバにデータを移動可能であることが望ましい。このように高いデータ流動性が要求される場合、クラスタシステムは、揮発性メモリ上のデータを不揮発性媒体にバックアップしない場合もある。このようなクラスタシステムでは、複製されたデータが複数のサーバに格納されるため、１台のデータ管理サーバだけが壊れた場合には、データの損失が発生しない。しかし、このクラスタシステムでは、激甚災害などで複数のデータ管理サーバが一度に壊れる場合、データの損失が発生する。よって、クラスタシステムでは、データの損失を避けるため、データのバックアップは必要である。
クラスタシステムにおいて、データのバックアップは、任意のタイミングにおけるデータのスナップショットを作成することで行われる。
【０００７】
非特許文献１は、クラスタシステムのスナップショット作成を行うものである。非特許文献１には、「データベース静止化機能は、日次・月次などのバッチ処理や、データベースのバックアップ取得などの処理を、オンラインと並行して実行するための機能です。任意の時刻の静的（トランザクション処理の完結した矛盾のない状態）なデータベースを創出することにより、オンラインシステムの２４時間連続運転を支援します。」と記載されている。
【０００８】
非特許文献１に記載のＴＭＳ−４Ｖ／ＳＰは、各データを、ペア装置による二重書きによって二重化して管理する。スナップショットを作成する際、ＴＭＳ−４Ｖ／ＳＰは、一時的にデータ更新要求を受け付けないようにしてデータの変更を止め、二重化を解除して一重化運転を行うことにより、データを静止化する。静止化後、ＴＭＳ−４Ｖ／ＳＰは、二重化された一方のデータで運用を続け、他方のデータでスナップショットを生成する。これにより、ＴＭＳ−４Ｖ／ＳＰは、任意の時刻のデータをバックアップすることができる。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】日立製作所、「ＴＭＳ−４Ｖ／ＳＰ：データベース静止化機能」、[online]、[平成２５年６月１９日検索]インターネット<URL:http://www.hitachi.co.jp/Prod/comp/soft1/4vsp/products/staticizer1.html>
【発明の概要】
【発明が解決しようとする課題】
【００１０】
データを二重化する一般的な方法は、不揮発性媒体上で二重にデータ管理する方法と、揮発性メモリ上と不揮発性媒体上とで二重にデータ管理する方法である。揮発性メモリ上で二重にデータ管理する方法は、すべてのサーバに多量のＲＡＭを必要とし、コストが掛かるため一般的ではない。
データの流動性の高いシステムでは、単体サーバで見た場合、各データは揮発性メモリ上の一重化されているもののみである。このシステムでは、各データが二重化されていないため、スナップショットを作成するために、各データの静止化を行うことは困難である。
【００１１】
一重化で管理されたデータは、これらを更新できないようにロックすることで、スナップショットを収集可能である。しかし、この方法によれば、サーバは、すべてのデータのスナップショットを収集する間、データ更新をロックしなければならない。データのスナップショット収集には長時間を要する。よって、この方法は、随時データの更新が必要なシステムや、リアルタイム性が高くデータの更新を停止できないシステムに適用することはできない。
【００１２】
本発明は、前記した問題を解決し、スナップショット作成のためのデータのロックを短時間で解除することが可能なデータ管理サーバのスナップショット作成システム、および、サーバクラスタのスナップショット作成システムを提供することを課題とする。
【課題を解決するための手段】
【００１３】
前記課題を解決するため、請求項１に記載の発明では、サーバクラスタのスナップショット作成システムは、複数台のデータ管理サーバと、振分サーバとを備えている。前記振分サーバは、外部からの要求を前記データ管理サーバに振り分ける振分部と、外部からの要求と前記データ管理サーバとの対応を示す振分表と、を備えている。前記データ管理サーバは、それぞれ、各データの収容位置を含むデータ管理テーブルを管理するテーブル管理部と、前記各データを管理するデータ管理部と、前記振分表と前記データ管理テーブルとを書込ロックしてスナップショットを作成したのちにロックを解除し、前記各データを書込ロックせずにスナップショットを作成するスナップショット作成部と、外部からの要求に基づいてデータの書込または参照を行うものであるデータ書込参照処理部と、前記各データ、前記データ管理テーブル、および、前記スナップショット作成部が作成したスナップショットデータを記憶する記憶部とを備える。
前記データ書込参照処理部は、前記スナップショット作成部のスナップショット作成中に、スナップショット作成開始時以降の未更新データに係る書込要求を外部から受信したならば、当該書込要求に係る未更新データをコピーする。前記データ書込参照処理部は更に、コピーしたデータに当該書込要求を行って更新後の属性を設定して更新後データとすると共に、当該書込要求に係る未更新データに更新前の属性を設定して更新前データとする。
【００１４】
このようにすることで、本発明によれば、スナップショット作成のためのデータのロックを短時間で解除することができる。
【００１５】
請求項２に記載の発明では、前記データ書込参照処理部は、前記スナップショット作成部のスナップショット作成中に、外部からデータの参照要求を受信したならば、前記データ管理テーブルに基づいて、各データを参照する、ことを特徴とする請求項１に記載のサーバクラスタのスナップショット作成システムとした。
【００１６】
このように、データ書込参照処理部は、スナップショット作成中であっても、通常時と同様にデータ管理テーブルを参照することで、各データを参照できる。これにより、スナップショット作成に伴う時間計算量のオーバーヘッドを無くすことができる。
【００１７】
請求項３に記載の発明では、前記スナップショット作成部は、スナップショット作成開始時以降の各未更新データおよび各更新前データを収集してスナップショットを作成する、ことを特徴とする請求項１に記載のサーバクラスタのスナップショット作成システムとした。
【００１８】
これにより、スナップショット作成部は、スナップショット作成開始時における各データを、すべてバックアップすることができる。
【００１９】
請求項４に記載の発明では、前記スナップショット作成部は、スナップショット作成が終了したならば、前記各更新前データを削除し、各更新後データに未更新の属性を設定する、ことを特徴とする請求項３に記載のサーバクラスタのスナップショット作成システムとした。
【００２０】
これにより、各データ管理サーバ３は、通常時の空間計算量を削減し、データの管理により多くのリソースを割り当てることができる。
【００２１】
請求項５に記載の発明では、前記データ書込参照処理部は、前記スナップショット作成部のスナップショット作成中に、外部から未更新データの削除要求を受信したならば、当該削除要求に係る未更新データに更新前の属性を設定する、ことを特徴とする請求項１に記載のサーバクラスタのスナップショット作成システムとした。
【００２２】
このように、データ書込参照処理部は、スナップショット作成中かつ削除対象データの属性が未更新ならば、削除対象のデータを更新前集合に移動させている。これにより、データ管理サーバは、削除対象のデータを、スナップショット作成の対象としたまま、以降の書込更新処理の対象から外すことができる。
【００２３】
請求項６に記載の発明では、前記データ書込参照処理部は、前記スナップショット作成部のスナップショット作成中に、外部からデータの新規作成要求を受信したならば、当該新規作成要求に係るデータに更新後の属性を設定する、ことを特徴とする請求項１に記載のサーバクラスタのスナップショット作成システムとした。
【００２４】
このように、データ書込参照処理部は、スナップショット作成中には更新後集合にのみ新規作成データを作成し、更新前集合にはデータを作成していない。これにより、データ管理サーバは、スナップショット作成中に新規作成されたデータを、このスナップショット作成の対象外とすることができる。
【００２５】
請求項７に記載の発明では、前記データ管理部は、前記記憶部に格納された第２データ管理テーブルに基づき、前記各データの属性を管理する、ことを特徴とする請求項１に記載のサーバクラスタのスナップショット作成システムとした。
【００２６】
このように、データ管理サーバは、第２データ管理テーブルにより、スナップショット作成開始時点におけるデータを管理している。よって、データ管理サーバは、データ全体の二重化処理を行わず、更新されたデータのみを二重化するだけで、任意のタイミングのスナップショットを作成することができる。
【００２７】
請求項８に記載の発明では、スナップショット作成システムであるデータ管理サーバは、各データの収容位置を含むデータ管理テーブルを管理するテーブル管理部と、前記各データを管理するデータ管理部と、前記データ管理テーブルを書込ロックしてスナップショットを作成したのちにロックを解除し、前記各データを書込ロックせずにスナップショットを作成するスナップショット作成部と、外部からの要求に基づいてデータの書込または参照を行うものであるデータ書込参照処理部と、前記各データ、前記データ管理テーブル、および前記スナップショット作成部が作成したスナップショットデータを記憶する記憶部とを備える。
前記データ書込参照処理部は、前記スナップショット作成部のスナップショット作成中に、スナップショット作成開始時以降の未更新データに係る書込要求を外部から受信したならば、当該書込要求に係る未更新データをコピーする。前記データ書込参照処理部は更に、コピーしたデータに当該書込要求を行って更新後の属性を設定して更新後データとすると共に、当該書込要求に係る未更新データに更新前の属性を設定して更新前データとする。
【００２８】
このようにすることで、本発明によれば、スナップショット作成のためのデータのロックを短時間で解除することができる。
【発明の効果】
【００２９】
本発明によれば、スナップショット作成のためのデータの更新ロックを短時間で解除することが可能なデータ管理サーバのスナップショット作成システム、および、サーバクラスタのスナップショット作成システムを提供可能である。
【図面の簡単な説明】
【００３０】
【図１】第１の実施形態におけるクラスタシステムを示す概略の構成図である。
【図２】通常時のデータ処理を示すシーケンス図である。
【図３】スナップショット作成処理（その１）を示すシーケンス図である。
【図４】スナップショット作成処理（その２）を示すシーケンス図である。
【図５】データ管理テーブルと第２データ管理テーブルを示す図である。
【図６】スナップショット作成動作とデータ更新動作を示す図である。
【図７】データ書込参照処理を示すフローチャートである。
【図８】データ更新処理を示すフローチャートである。
【図９】新規作成処理を示すフローチャートである。
【図１０】データ削除処理を示すフローチャートである。
【図１１】スナップショット作成中処理を示すフローチャートである。
【図１２】スナップショット作成後処理を示すフローチャートである。
【図１３】スナップショット作成中の各集合と各データとを示す図である。
【図１４】第２の実施形態におけるデータ管理サーバを示す概略の構成図である。
【発明を実施するための形態】
【００３１】
次に、本発明を実施するための形態（「実施形態」という）について、適宜図面を参照しながら詳細に説明する。
（第１の実施形態）
図１は、第１の実施形態におけるクラスタシステム１を示す概略の構成図である。
このクラスタシステム１は、振分サーバ２と、複数台のデータ管理サーバ３−１〜３−３と、スナップショット作成管理サーバ４とを含んで構成されるサーバクラスタのスナップショット作成システムである。以下、データ管理サーバ３−１〜３−３を特に区別しないときには、単にデータ管理サーバ３と記載している場合がある。また、各図では、データ管理サーバ３−１を「データ管理サーバ＃１」、データ管理サーバ３−２を「データ管理サーバ＃２」、データ管理サーバ３−３を「データ管理サーバ＃３」と示している場合がある。
【００３２】
クラスタシステム１は、外部からデータ書込要求信号やデータ参照要求信号を受信すると、その要求に基づいて、データの書込処理やデータの参照処理を行うものである。クラスタシステム１は、外部に対しては、多量のデータを管理する単一のデータ管理サーバ３のように振る舞う。クラスタシステム１は更に、外部からスナップショット作成要求信号を受信すると、その要求に基づいて、データのスナップショットを作成する。
【００３３】
振分サーバ２は、外部装置（不図示）に対するフロントエンドであり、外部装置（不図示）からデータ書込要求信号やデータ参照要求信号を代理して受け付けて、データ管理サーバ３−１〜３−３のいずれかに振り分けて転送するものである。振分サーバ２は、各要求信号をデータ管理サーバ３−１〜３−３のいずれかに振り分ける振分部２１と、各要求信号と、この要求信号の振り分け先との対応を示す振分表２２とを含んで構成されている。
【００３４】
データ管理サーバ３−１〜３−３は、それぞれデータ書込参照処理部３１と、テーブル管理部３２と、データ管理部３３と、記憶部３４と、スナップショット作成部３５とを含んで構成されている。データ管理サーバ３−１〜３−３は、振分サーバ２により振り分けられた各要求信号に基づいて、格納するデータの書込処理や参照処理を行うものである。
データ書込参照処理部３１は、受信した各データ書込要求信号やデータ参照要求信号を処理するものである。データ書込参照処理部３１は、スナップショット作成中に、スナップショット作成開始時以降の未更新データに係る書込要求を外部から受信したならば、この書込要求に係る未更新データをコピーし、コピーしたデータに書込要求を行って更新後の属性を設定して更新後データとする。データ書込参照処理部３１は、更に、この書込要求に係る未更新データに更新前の属性を設定して更新前データとする。
【００３５】
テーブル管理部３２は、後記するデータ管理テーブル３４１や、第２データ管理テーブル３４２を管理するものである。データ管理テーブル３４１や、第２データ管理テーブル３４２は、各データの収容位置の情報を含んでいる。テーブル管理部３２は、各要求信号が含んでいる処理対象データのキー名に基づき、この処理対象データの収容位置を応答する。
【００３６】
データ管理部３３は、各データを管理するものである。データ管理部３３は、処理対象データの収容位置に基づき、この処理対象データの書込処理や参照処理を行う。
記憶部３４は、データ管理テーブル３４１と、第２データ管理テーブル３４２と、データ３４３と、スナップショットデータ３４４とを記憶している。記憶部３４は、揮発性メモリで構成されているので、各データや各テーブルへの書込や参照を短時間に行うことができる。
【００３７】
データ管理テーブル３４１は、各データのキー値と、各データの収容位置などの情報との関係を格納するものである。第２データ管理テーブル３４２は、データ管理テーブル３４１と同様の情報に加えて、各データの属性の情報を格納するものである。データ３４３は、処理対象の各データ本体である。スナップショットデータ３４４は、任意の時刻におけるデータ管理テーブル３４１とデータ３４３のスナップショットである。
【００３８】
スナップショット作成部３５は、外部から受信したスナップショット作成要求信号に応じて、当該データ管理サーバ３が格納するデータ管理テーブル３４１とデータ３４３のスナップショットを作成するものである。スナップショット作成部３５は、振分表２２とデータ管理テーブル３４１とを書込ロックしてスナップショットを作成したのちに、この書込ロックを解除し、データ３４３を書込ロックせずにスナップショットを作成する。
【００３９】
スナップショット作成管理サーバ４は、スナップショット作成統括部４１を含んで構成されている。スナップショット作成管理サーバ４は、外部に対するフロントエンドである。スナップショット作成管理サーバ４は、スナップショット作成統括部４１により、外部からスナップショット作成要求信号を代理して受け付けて、各データ管理サーバ３−１〜３−３に転送するものである。
【００４０】
図２は、通常時のデータ処理を示すシーケンス図である。
（データ参照要求信号に対する処理）
不図示の外部装置から、振分サーバ２にデータ参照要求信号が送信されたならば、シーケンスＱ１０〜Ｑ１９に示す処理が開始する。なお、以下のシーケンス図では、データ参照要求信号のことをデータ参照要求と略し、データ書込要求信号のことをデータ書込要求と略している。
シーケンスＱ１０において、振分サーバ２の振分部２１は、不図示の外部装置から、データ参照要求信号を受信する。更に振分部２１は、データ管理サーバ＃１〜＃３のうち、どのデータ管理サーバ３が格納するデータへの参照かを判断する。振分部２１は、既に振り分けたデータが処理対象ならば、振分表２２に基づいて、振分対象のデータ管理サーバ３を特定する。
シーケンスＱ１１において、振分サーバ２の振分部２１は、データ管理サーバ＃１〜＃３のうちいずれか該当するものに、データ参照要求信号を振り分ける。振り分けたデータ参照要求信号は、該当するデータ管理サーバ３のデータ書込参照処理部３１が受信する。
【００４１】
シーケンスＱ１２において、データ書込参照処理部３１は、テーブル管理部３２に、このデータ参照要求信号が含んだキー値に対応する処理対象データの収容位置を問い合わせる。この問い合わせは、テーブル管理部３２に入力される。
シーケンスＱ１３において、テーブル管理部３２は、入力されたキー値に基づいてデータ管理テーブル３４１を検索し、キー値に対応するデータの収容位置を取得する。
シーケンスＱ１４において、テーブル管理部３２は、データ書込参照処理部３１に、このデータ参照要求信号が含んだキー値に対応するデータの収容位置を応答する。この収容位置の応答は、データ書込参照処理部３１に入力される。
【００４２】
シーケンスＱ１５において、データ書込参照処理部３１は、データ管理部３３に、このデータ参照要求信号と、処理対象データの収容位置とを通知する。この通知は、データ管理部３３に入力される。
シーケンスＱ１６において、データ管理部３３は、処理対象データの収容位置に基づき、処理対象データを参照する。
【００４３】
シーケンスＱ１７において、データ管理部３３は、データ書込参照処理部３１に、この処理対象データの参照結果を応答する。この参照結果の応答は、データ書込参照処理部３１に入力される。
シーケンスＱ１８において、データ書込参照処理部３１は、振分サーバ２の振分部２１に、この処理対象データの参照結果を応答する。この参照結果の応答は、振分部２１によって受信される。
シーケンスＱ１９において、振分サーバ２の振分部２１は、データ書込要求信号の送信元である不図示の外部装置に、この処理対象データの参照結果を応答する。これにより、データ参照要求信号に対する処理を終了する。
【００４４】
（データ書込要求信号に対する処理）
不図示の外部装置から、振分サーバ２にデータ書込要求信号が送信されたならば、シーケンスＱ２０〜Ｑ２９に示す処理が開始する。シーケンスＱ２０〜Ｑ２９の処理は、前記したシーケンスＱ１０〜Ｑ１９の処理とは異なり、処理種別がデータ参照ではなくデータ書込である。なお、データの書込とは、データの更新、データの新規作成、データの削除の３通りの処理のいずれかである。
シーケンスＱ２０において、振分サーバ２の振分部２１は、不図示の外部装置から、データ書込要求信号を受信する。振分部２１は、データ管理サーバ＃１〜＃３のうち、どのデータ管理サーバ３が格納するデータへの書込みかを判断する。振分部２１は、既に振り分けたデータが処理対象ならば、振分表２２に基づいて、振分対象のデータ管理サーバ３を特定する。振分部２１は、未だ振り分けていないデータが処理対象ならば、ハッシュ関数によって振分対象のデータ管理サーバ３を特定し、特定したデータ管理サーバ３とデータとの関係を振分表２２に記録する。
【００４５】
シーケンスＱ２１において、振分サーバ２の振分部２１は、データ管理サーバ＃１〜＃３のうちいずれか該当するものに、データ書込要求信号を振り分ける。振り分けたデータ書込要求信号は、該当するデータ管理サーバ３のデータ書込参照処理部３１が受信する。
【００４６】
シーケンスＱ２２において、データ書込参照処理部３１は、テーブル管理部３２に、このデータ書込要求信号が含んだキー値に対応する処理対象データの収容位置を問い合わせる。この問い合わせは、テーブル管理部３２に入力される。
シーケンスＱ２３において、テーブル管理部３２は、このキー値に基づいてデータ管理テーブル３４１を検索し、キー値に対応するデータの収容位置を取得する。
シーケンスＱ２４において、テーブル管理部３２は、データ書込参照処理部３１に、このデータ書込要求信号が含んだキー値に対応するデータの収容位置を応答する。この収容位置の応答は、データ書込参照処理部３１に入力される。
【００４７】
シーケンスＱ２５において、データ書込参照処理部３１は、データ管理部３３に、このデータ書込要求信号と、処理対象データの収容位置とを通知する。この通知は、データ管理部３３に入力される。
シーケンスＱ２６において、データ管理部３３は、処理対象データの収容位置に基づき、処理対象データに書込を行う。
【００４８】
シーケンスＱ２７において、データ管理部３３は、データ書込参照処理部３１に、この処理対象データの書込結果を応答する。この書込結果の応答は、データ書込参照処理部３１に入力される。
シーケンスＱ２８において、データ書込参照処理部３１は、振分サーバ２の振分部２１に、この処理対象データの書込結果を応答する。この書込結果の応答は、振分部２１によって受信される。
シーケンスＱ２９において、振分サーバ２の振分部２１は、不図示の外部装置に、この処理対象データの書込結果を応答する。この書込結果の応答は、データ書込要求信号の送信元である不図示の外部装置によって受信される。これにより、データ書込要求信号に対する処理は終了する。
【００４９】
図３と図４とは、スナップショット作成処理を示すシーケンス図である。図３は、スナップショット作成処理のシーケンスＱ４０〜Ｑ６１を示している。図４は、図３に続いてスナップショット作成処理のシーケンスＱ６２〜Ｑ６６を示している。
不図示の外部端末から、スナップショット作成管理サーバ４にスナップショット作成要求信号が送信されたならば、シーケンスＱ４０〜Ｑ６６に示すスナップショット作成処理が開始する。
【００５０】
シーケンスＱ４０において、スナップショット作成管理サーバ４のスナップショット作成統括部４１は、不図示の外部端末から、スナップショット作成要求信号を受信する。
シーケンスＱ４１において、スナップショット作成管理サーバ４のスナップショット作成統括部４１は、振分サーバ２に、振分表２２のロック指示を送信する。この振分表２２のロック指示は、振分サーバ２の振分部２１によって受信される。
シーケンスＱ４２において、振分部２１は、振分表２２の書込をロックする。
シーケンスＱ４３において、振分部２１は、スナップショット作成管理サーバ４に、振分表２２の書込のロックが完了したことを示すロック完了応答を返信する。このロック完了応答は、スナップショット作成管理サーバ４のスナップショット作成統括部４１によって受信される。
【００５１】
シーケンスＱ４４において、スナップショット作成統括部４１は、クラスタシステム１を構成する各データ管理サーバ３に、テーブルロック指示を送信する。これらのテーブルロック指示は、各データ管理サーバ３のスナップショット作成部３５によって受信される。この処理は、各データ管理サーバ３の台数分だけ繰り返される。
【００５２】
シーケンスＱ４５において、スナップショット作成部３５は、テーブル管理部３２に、データ管理テーブル３４１のロック指示を通知する。このロック指示は、各テーブル管理部３２に入力される。
シーケンスＱ４６において、テーブル管理部３２は、データ管理テーブル３４１の書込をロックする。
シーケンスＱ４７において、テーブル管理部３２は、スナップショット作成部３５に、データ管理テーブル３４１のロック完了応答を返す。このロック完了応答は、スナップショット作成部３５に返される。なお、このシーケンスＱ４７は、テーブル管理部３２の書込ロックが成功したときのものである。
【００５３】
なお、図３と図４とに示す動作例は、データ管理テーブル３４１全体の書込ロックを行うものである。しかし、これに限られず、データ管理サーバ３は、データ管理テーブル３４１の一部の書込ロック、あるいは読取・書込ロックなどを行ってもよい。更にデータ管理サーバ３は、スナップショット作成管理サーバ４から受信したスナップショット作成要求信号のパラメータにより、どのようなロックを行うかを選択してもよい。
シーケンスＱ４８において、スナップショット作成部３５は、スナップショット作成管理サーバ４に、テーブルロック完了応答を返す。この処理は、各データ管理サーバ３の台数分だけ繰り返される。このテーブルロック完了応答は、スナップショット作成統括部４１によって受信される。
シーケンスＱ４９において、スナップショット作成統括部４１は、クラスタシステム１のすべてのデータ管理サーバ３から、テーブルロック完了応答が返っているかチェックする（応答チェック）。すべてのデータ管理サーバ３からテーブルロック完了応答が返っていたならば、振分サーバ２の振分部２１は、シーケンスＱ５０以下の処理を行う。
【００５４】
シーケンスＱ５０において、スナップショット作成統括部４１は、振分サーバ２に、振分表２２のコピー指示を送信する。このコピー指示は、振分部２１によって受信される。ここで振分表２２のコピーとは、振分表２２を二重化して静止化することにより、スナップショットを作成することをいう。
シーケンスＱ５１において、振分部２１は、振分表２２のコピーを実行してスナップショットを作成する。
シーケンスＱ５２において、振分部２１は、振分表２２の書込ロックを解除する。
シーケンスＱ５３において、振分部２１は、スナップショット作成管理サーバ４にコピー完了応答を返す。このコピー完了応答は、スナップショット作成統括部４１によって受信される。
【００５５】
シーケンスＱ５４において、スナップショット作成統括部４１は、各データ管理サーバ３に、スナップショット作成指示を送信する。この処理は、各データ管理サーバ３の台数分だけ繰り返される。このスナップショット作成指示は、スナップショット作成部３５によって受信される。
シーケンスＱ５５において、スナップショット作成部３５は、テーブル管理部３２に、データ管理テーブル３４１のコピー指示を通知する。このコピー指示は、テーブル管理部３２に入力される。
シーケンスＱ５６において、テーブル管理部３２は、データ管理テーブル３４１をコピーしてスナップショットを作成する。以下のシーケンスは、テーブル管理部３２によるコピーが成功した場合のものである。
【００５６】
シーケンスＱ５７において、テーブル管理部３２は、データ管理テーブル３４１に基づいて第２データ管理テーブル３４２を作成する。すなわち、テーブル管理部３２は、データ管理テーブル３４１をコピーし、更に属性欄３４２ｎ（図５（ｂ）参照）を追加することにより、第２データ管理テーブル３４２を作成する。
シーケンスＱ５８において、テーブル管理部３２は、データ管理テーブル３４１の書込ロックを解除する。
シーケンスＱ５９において、テーブル管理部３２は、スナップショット作成部３５にコピー完了応答を返す。このコピー完了応答は、スナップショット作成部３５に入力される。
【００５７】
シーケンスＱ６０において、スナップショット作成部３５は、スナップショット作成管理サーバ４にコピー指示受信応答を返す。このコピー指示受信応答は、スナップショット作成統括部４１によって台数分だけ受信される。このコピー指示受信応答は、一次的な応答であり、各データ管理サーバ３は、継続してスナップショットを作成する。
シーケンスＱ６１において、スナップショット作成統括部４１は、コピー指示受信応答が、すべてのデータ管理サーバ３から返っているがチェックする。シーケンスＱ６１の処理が終了すると、図４のシーケンスＱ６２の処理が行われる。
【００５８】
図４に示すように、シーケンスＱ６２において、スナップショット作成部３５は、テーブル管理部３２と連携してスナップショット作成中処理を行い、スナップショットを作成する。スナップショット作成中処理は、後記する図１１で詳細に説明する。
シーケンスＱ６３において、スナップショット作成部３５は、テーブル管理部３２と連携して、スナップショット作成後処理を行う。スナップショット作成後処理は、後記する図１２で詳細に説明する。
【００５９】
シーケンスＱ６４において、スナップショット作成部３５は、スナップショット作成管理サーバ４にスナップショット作成応答を返す。このスナップショット作成応答は、スナップショット作成統括部４１によって、データ管理サーバ３の台数分だけ受信される。
シーケンスＱ６５において、スナップショット作成統括部４１は、クラスタシステム１のすべてのデータ管理サーバ３から、スナップショット作成応答が返っているかチェックする。
シーケンスＱ６６において、スナップショット作成統括部４１は、不図示の外部端末に、スナップショット作成応答を返す。この不図示の外部端末は、シーケンスＱ４０においてスナップショット作成要求信号を送信したものと同一である。
【００６０】
これらシーケンスＱ４０〜Ｑ６６の処理により、クラスタシステム１は、振分表２２のロックとデータ管理テーブル３４１のロックのみで、振分表２２とデータ管理テーブル３４１とデータ３４３のスナップショットを作成することができる。振分表２２とデータ管理テーブル３４１のデータ量は、データ３４３と比べると極めて小さいので、これらのコピーは短時間で終了する。これにより、クラスタシステム１は、短時間のロックにより多量のデータのスナップショットを作成することができる。
【００６１】
図５（ａ），（ｂ）は、データ管理テーブル３４１と第２データ管理テーブル３４２を示す図である。
図５（ａ）は、データ管理テーブル３４１を示している。
データ管理テーブル３４１は、キー値欄３４１ａと、収容位置欄３４１ｂと、それ以外の欄とを含んでいる。
【００６２】
キー値欄３４１ａは、データにアクセスするときのキー値を格納する欄であり、「＃Ａ」、「＃Ｂ」、…のキー値が格納されている。「＃Ａ」のキー値により、対応するデータＡにアクセスすることができる。データ書込要求信号やデータ参照要求信号には、これらのキー値が格納されており、キー値に対応するデータを処理することを示している。
収容位置欄３４１ｂは、データにアクセスするための収容位置を格納する欄であり、各データのアドレスが格納されている。これらの収容位置により、各データ本体にアクセスすることができる。
【００６３】
図５（ｂ）は、第２データ管理テーブル３４２を示している。
第２データ管理テーブル３４２は、データ管理テーブル３４１と同様なキー値欄３４２ａと、収容位置欄３４２ｂと、それ以外の欄とを含み、更に属性欄３４２ｎを含んでいる。この第２データ管理テーブル３４２は、スナップショット作成開始時点におけるデータ管理テーブル３４１をコピーして作成される。
属性欄３４２ｎは、各データの属性が格納される欄であり、「未更新」と「更新前」と「更新後」の属性が格納されている。
【００６４】
属性欄３４２ｎの属性が「未更新」ならば、対応するデータ本体は、スナップショット作成開始時点から更新されていないことを示している。
属性欄３４２ｎの属性が「更新前」ならば、対応するデータ本体は、スナップショット作成開始時点のものであり、かつ、当該データに対する更新処理が行われたことを示している。
属性欄３４２ｎの属性が「更新後」ならば、対応するデータ本体は、更新後のものであり、対応する更新前のデータが存在することを示している。
このように、データ管理サーバ３は、第２データ管理テーブル３４２により、スナップショット作成開始時点におけるデータを管理している。よって、データ管理サーバ３は、二重化処理を行うことなく、任意の時刻におけるスナップショットを作成することができる。
【００６５】
図６は、スナップショット作成動作とデータ更新動作とを示す図である。
図６に示すように、データ３４３の各データは、スナップショット作成中にコピーされれて更新された「更新後データ」と、スナップショット作成開始時から更新されていない「未更新データ」と、更新後データに係るコピー元である「更新前データ」の３つの集合に、論理的に分けられている。
データＡ，Ｃ，Ｅは、スナップショット作成開始時から更新されていない「未更新データ」である。データＢ，Ｄは、スナップショット作成中に外部から書込要求を受けたもののうち、スナップショット作成開始時における元データかつ「更新前データ」である。データＢ２，Ｄ２は、「更新後データ」であり、スナップショット作成開始時におけるデータＢ，Ｄをそれぞれ更新したものである。
【００６６】
各データＡ，Ｂ，Ｃ，…は、第２データ管理テーブル３４２の属性欄３４２ｎ（図５（ｂ）参照）によって管理される。この第２データ管理テーブル３４２は、スナップショット作成部３５によるスナップショット作成動作に用いられる。スナップショット作成部３５は、テーブル管理部３２およびデータ管理部３３により、データ３４３の各データにアクセスすることができる。スナップショット作成部３５から更新前データと未更新データとに伸びる一点鎖線の矢印は、スナップショット作成動作に係る更新前データと未更新データへのアクセスを示している。
【００６７】
それに対してデータ管理テーブル３４１は、データ書込参照処理部３１によるデータ参照動作に用いられる。データ書込参照処理部３１は、テーブル管理部３２およびデータ管理部３３により、データ３４３の各データにアクセスすることができる。データ書込参照処理部３１から更新後データと未更新データとに伸びる一点鎖線の矢印は、データ参照動作に係る更新後データと未更新データへのアクセスを示している。
このように、データ書込参照処理部３１とスナップショット作成部３５とは、それぞれ別のテーブルを参照して各データにアクセスしている。よって、データ書込参照処理部３１によるデータ参照と並行して、スナップショット作成部３５は、スナップショット作成動作を行うことができる。
【００６８】
図７は、データ書込参照処理を示すフローチャートである。
各データ管理サーバ３のデータ書込参照処理部３１が、外部からの要求信号を受信すると、図７に示すデータ書込参照処理が開始する。
ステップＳ１０において、データ書込参照処理部３１は、受信した要求信号の処理種別を判断する。
【００６９】
データ書込参照処理部３１は、処理種別が参照ならば、ステップＳ１１の処理を行う。
ステップＳ１１において、データ書込参照処理部３１は、原本であるデータ管理テーブル３４１に基づいて該当データを参照する。データ書込参照処理部３１は、要求信号が含むキー値に基づいて、テーブル管理部３２により該当データの収容位置を取得し、データ管理部３３により該当データを参照する。データ書込参照処理部３１は、ステップＳ１１の処理が終了すると、図７の処理を終了する。
【００７０】
データ管理テーブル３４１で管理されているのは、更新前集合と更新後集合に含まれるデータである。よって、外部からの参照要求が含むキー値に基づき、データ管理テーブル３４１を参照することにより該当データの収容位置を取得可能である。また、スナップショット作成部３５は、これとは別のテーブルである第２データ管理テーブル３４２を参照することにより、スナップショットを作成している。これにより、スナップショット作成部３５は、データ３４３を書込ロックすることなく、スナップショットを作成することができる。
【００７１】
データ書込参照処理部３１は、処理種別が更新ならば、ステップＳ１２のデータ更新処理を行い、図７の処理を終了する。データ更新処理は、後記する図８で詳細に説明する。
データ書込参照処理部３１は、処理種別が新規作成ならば、ステップＳ１３の新規作成処理を行い、図７の処理を終了する。新規作成処理は、後記する図９で詳細に説明する。
データ書込参照処理部３１は、処理種別が削除ならば、ステップＳ１４のデータ削除処理を行い、図７の処理を終了する。データ削除処理は、後記する図１０で詳細に説明する。
【００７２】
図８は、データ更新処理を示すフローチャートである。
各データ管理サーバ３のデータ書込参照処理部３１が外部からのデータ更新要求信号を受信すると、図８に示すデータ更新処理が開始する。
ステップＳ３０において、データ書込参照処理部３１は、スナップショット作成中であるか否かを判断する。データ書込参照処理部３１は、当該判断条件が成立しなかったならば（Ｎｏ）、ステップＳ３１の処理を行い、当該判断条件が成立したならば（Ｙｅｓ）、ステップＳ３２の処理を行う。
【００７３】
ステップＳ３１において、データ書込参照処理部３１は、該当データを更新する。データ書込参照処理部３１は、要求信号が含むキー値に基づいて、テーブル管理部３２により該当データの収容位置を取得し、データ管理部３３により該当データにアクセスする。データ書込参照処理部３１は、ステップＳ３１の処理が終了したならば、図８の処理を終了する。
【００７４】
ステップＳ３２において、データ書込参照処理部３１は、該当データの属性は「未更新」であるか否かを判断する。データ書込参照処理部３１は、要求信号が含むキー値に基づいて、テーブル管理部３２により該当データの属性を取得し、「未更新」であるか否かを判断する。データ書込参照処理部３１は、当該判断条件が成立しなかったならば（Ｎｏ）、ステップＳ３３の処理を行い、当該判断条件が成立したならば（Ｙｅｓ）、ステップＳ３４の処理を行う。
【００７５】
ステップＳ３３において、データ書込参照処理部３１は、「更新後」属性の該当データを更新する。データ書込参照処理部３１は、要求信号が含むキー値に基づいて、テーブル管理部３２によりデータ管理テーブル３４１を参照して更新後データの収容位置を取得し、データ管理部３３により更新後データを更新する。データ書込参照処理部３１は、ステップＳ３３の処理が終了したならば、図８の処理を終了する。
【００７６】
ステップＳ３４〜Ｓ３９の処理は、スナップショット作成中かつ該当データの属性が未更新の場合の処理である。
ステップＳ３４において、データ書込参照処理部３１は、該当データをコピーする。データ書込参照処理部３１は、要求信号が含むキー値に基づいて、テーブル管理部３２によりデータ管理テーブル３４１を参照して収容位置を取得し、データ書込参照処理部３１は更に、取得した収容位置に基づき、データ管理部３３により記憶部３４に該当データサイズの領域を取得したのち、取得した領域に該当データをコピーする。
ステップＳ３５において、データ書込参照処理部３１は、第２データ管理テーブル３４２にコピーしたデータの参照情報を登録する。すなわち、データ書込参照処理部３１は、テーブル管理部３２により、コピーしたデータのレコードを第２データ管理テーブル３４２に作成する。データ書込参照処理部３１は更に、このレコードのキー値欄３４２ａをコピー元データのキー値に設定し、その収容位置欄３４２ｂをコピーしたデータのアドレスに書き換える。
【００７７】
ステップＳ３６において、データ書込参照処理部３１は、コピーしたデータに、「更新後」属性を設定する。データ書込参照処理部３１は、テーブル管理部３２により、コピーしたデータに係る第２データ管理テーブル３４２のレコードを参照し、その属性欄３４２ｎを「更新後」に設定する。
ステップＳ３７において、データ書込参照処理部３１は、データ管理部３３により、コピーしたデータを更新する。
【００７８】
ステップＳ３８において、データ書込参照処理部３１は、テーブル管理部３２により、該当データに係るデータ管理テーブル３４１の上の収容位置を、コピーしたデータのアドレスに書き換える。すなわち、データ書込参照処理部３１は、テーブル管理部３２により、該当データに係るデータ管理テーブル３４１のレコードを参照し、その収容位置欄３４１ｂに、コピーしたデータのアドレスを設定する。
ステップＳ３９において、データ書込参照処理部３１は、該当データのコピー元データに「更新前」属性を設定する。データ書込参照処理部３１は、テーブル管理部３２により、第２データ管理テーブル３４２の該当データのコピー元データに係るレコードを参照し、その属性欄３４２ｎを「更新前」に設定する。データ書込参照処理部３１は、ステップＳ３９の処理が終了したならば、図８の処理を終了する。
【００７９】
このように、データ書込参照処理部３１は、スナップショット作成中の「未更新」属性のデータの更新に限り、その処理対象データを更新前データと更新後データとに二重化している。これにより、データ管理サーバ３は、データの二重化に伴う時間計算量と空間計算量とを削減することができる。
【００８０】
図９は、データの新規作成処理を示すフローチャートである。
各データ管理サーバ３のデータ書込参照処理部３１が、外部からのデータ新規作成要求信号を受信すると、図９に示すデータの新規作成処理が開始する。
ステップＳ４０において、データ書込参照処理部３１は、データを新規に作成する。すなわち、データ書込参照処理部３１は、データ管理部３３によりデータと、データのキー値とを新規に作成する。
ステップＳ４１において、データ書込参照処理部３１は、データ管理テーブル３４１と第２データ管理テーブル３４２に新規作成データの参照情報を登録する。すなわち、データ書込参照処理部３１は、テーブル管理部３２により、データ管理テーブル３４１と第２データ管理テーブル３４２に新規作成データに係るレコードを作成する。データ書込参照処理部３１は、そのレコードのキー値欄３４１ａに新規に作成したキー値を設定し、そのレコードの収容位置欄３４１ｂに新規作成データのアドレスを設定する。
ステップＳ４２において、データ書込参照処理部３１は、スナップショット作成中であるか否かを判断する。データ書込参照処理部３１は、当該判断条件が成立しなかったならば（Ｎｏ）、ステップＳ４３の処理を行い、当該判断条件が成立したならば（Ｙｅｓ）、ステップＳ４４の処理を行う。
【００８１】
ステップＳ４３において、データ書込参照処理部３１は、新規作成データに「未更新」属性を設定する。すなわち、データ書込参照処理部３１は、テーブル管理部３２により、新規作成データに係る第２データ管理テーブル３４２のレコードを参照し、その属性欄３４２ｎを「未更新」に設定する。データ書込参照処理部３１は、ステップＳ４３の処理が終了したならば、図９の処理を終了する。
ステップＳ４４において、データ書込参照処理部３１は、新規作成データに「更新後」属性を設定する。すなわち、データ書込参照処理部３１は、テーブル管理部３２により、新規作成データに係る第２データ管理テーブル３４２のレコードを参照し、その属性欄３４２ｎを「更新後」に設定する。データ書込参照処理部３１は、ステップＳ４４の処理が終了したならば、図９の処理を終了する。
【００８２】
このように、データ書込参照処理部３１は、スナップショット作成中には、更新後集合にのみ新規作成データを作成し、更新前集合にはデータを作成していない。これにより、データ管理サーバ３は、スナップショット作成中に新規作成されたデータを、このスナップショット作成の対象外とすることができる。
【００８３】
図１０は、データ削除処理を示すフローチャートである。
各データ管理サーバ３のデータ書込参照処理部３１が、外部からのデータ削除要求信号を受信すると、図１０に示すデータ削除処理が開始する。
ステップＳ５０において、データ書込参照処理部３１は、スナップショット作成中であるか否かを判断する。データ書込参照処理部３１は、当該判断条件が成立しなかったならば（Ｎｏ）、ステップＳ５１の処理を行い、当該判断条件が成立したならば（Ｙｅｓ）、ステップＳ５２の処理を行う。
【００８４】
ステップＳ５１において、データ書込参照処理部３１は、該当データを削除する。データ書込参照処理部３１は、データ削除要求信号が含むキー値に基づいて、テーブル管理部３２により処理対象データの収容位置を取得し、データ管理部３３により処理対象データを削除する。データ書込参照処理部３１は、ステップＳ５１の処理が終了したならば、ステップＳ５４の処理を行う。
【００８５】
ステップＳ５２において、データ書込参照処理部３１は、該当データの属性は「未更新」であるか否かを判断する。データ書込参照処理部３１は、データ削除要求信号が含むキー値に基づいて、テーブル管理部３２により処理対象データの属性を取得し、「未更新」であるか否かを判断する。データ書込参照処理部３１は、当該判断条件が成立しなかったならば（Ｎｏ）、ステップＳ５３の処理を行い、当該判断条件が成立したならば（Ｙｅｓ）、ステップＳ５５の処理を行う。
【００８６】
ステップＳ５３において、データ書込参照処理部３１は、「更新後」属性の該当データを削除する。データ書込参照処理部３１は、テーブル管理部３２により、データ管理テーブル３４１に基づいて更新後データの収容位置を取得し、データ管理部３３により処理対象データの格納領域を解放して、この処理対象データを削除する。データ書込参照処理部３１は、ステップＳ５３の処理が終了したならば、ステップＳ５４の処理を行う。
【００８７】
ステップＳ５４において、データ書込参照処理部３１は、第２データ管理テーブル３４２の該当データの参照情報（レコード）を削除する。データ書込参照処理部３１は、ステップＳ５４の処理が終了したならば、ステップＳ５６の処理を行う。
ステップＳ５５において、データ書込参照処理部３１は、該当データに「更新前」属性を設定する。データ書込参照処理部３１は、テーブル管理部３２により、第２データ管理テーブル３４２の該当データに係るレコードを特定し、その属性欄３４２ｎに「更新前」属性を設定する。データ書込参照処理部３１は、ステップＳ５５の処理が終了したならば、ステップＳ５６の処理を行う。
ステップＳ５６において、データ書込参照処理部３１は、データ管理テーブル３４１の該当データの参照情報（レコード）を削除する。データ書込参照処理部３１は、ステップＳ５６の処理が終了したならば、図１０の処理を終了する。
【００８８】
このように、データ書込参照処理部３１は、スナップショット作成中かつ削除対象データの属性が未更新ならば、削除対象データを更新前集合に移動させ、かつデータ管理テーブル３４１の削除対象データの参照情報（レコード）を削除する。これにより、データ管理サーバ３は、削除対象データを、スナップショット作成の対象としたまま、以降の書込更新処理の対象から除外することができる。
データ書込参照処理部３１は、スナップショット作成中かつ削除対象データの属性が未更新でないならば、削除対象データの更新後データのみを削除し、更新前データを残している。更にデータ書込参照処理部３１は、スナップショット作成中には、データ管理テーブル３４１から削除対象データの参照情報（レコード）を削除している。これにより、データ管理サーバ３は、削除対象データを、以降の書込更新処理の対象から除外することができる。
【００８９】
図１１は、スナップショット作成中処理を示すフローチャートである。
スナップショット作成部３５は、テーブル管理部３２からコピー完了応答が入力されたならば、スナップショット作成中処理を開始する。
ステップＳ６０〜Ｓ６３において、スナップショット作成部３５は、第２データ管理テーブル３４２のすべてのレコードについて処理を繰り返す。
【００９０】
ステップＳ６１において、スナップショット作成部３５は、テーブル管理部３２により、当該レコードの属性欄３４２ｎを参照し、「未更新」または「更新前」であるか否かを判断する。スナップショット作成部３５は、当該判断条件が成立したならば（Ｙｅｓ）、ステップＳ６２の処理を行い、当該判断条件が成立しなかったならば（Ｎｏ）、ステップＳ６３の処理を行う。
【００９１】
ステップＳ６２において、スナップショット作成部３５は、データ管理部３３により、当該レコードに係るデータを、スナップショットデータ３４４に収集する。
ステップＳ６３において、スナップショット作成部３５は、第２データ管理テーブル３４２のすべてのレコードについて処理を繰り返したか否かを判断する。スナップショット作成部３５は、当該判断条件が成立しなかったならば、ステップＳ６０の処理に戻り、当該判断条件が成立したならば、図１１の処理を終了する。
【００９２】
スナップショット作成部３５は、第２データ管理テーブル３４２に係る各データのうち、未更新集合と更新前集合に含まれるデータを取得して、スナップショットデータ３４４に収集している。未更新集合は、スナップショット作成開始時以降において更新されていないデータの集合である。更新前集合は、スナップショット作成中にコピーされて更新されたデータに係る、コピー元のデータの集合である。
これにより、スナップショット作成部３５は、スナップショット作成開始時におけるデータを、すべてバックアップすることができる。
【００９３】
図１２は、スナップショット作成後処理を示すフローチャートである。
スナップショット作成部３５は、図１１に示すスナップショット作成中処理が終了したならば、スナップショット作成後処理を開始する。
ステップＳ７０〜Ｓ７３において、スナップショット作成部３５は、第２データ管理テーブル３４２のすべてのレコードについて処理を繰り返す。
【００９４】
ステップＳ７１において、スナップショット作成部３５は、当該レコードの属性欄３４２ｎを判断する。スナップショット作成部３５は、テーブル管理部３２により、当該レコードの属性欄３４２ｎを参照する。スナップショット作成部３５は、属性欄３４２ｎが「更新前」ならばステップＳ７２の処理を行い、属性欄３４２ｎが「更新後」ならばステップＳ７４の処理を行い、属性欄３４２ｎが「未更新」ならばステップＳ７５の処理を行う。
ステップＳ７２において、スナップショット作成部３５は、該当データを削除する。スナップショット作成部３５は、テーブル管理部３２により、当該レコードの収容位置欄３４２ｂを参照し、この格納位置に格納されている該当データを削除する。
【００９５】
ステップＳ７３において、スナップショット作成部３５は、第２データ管理テーブル３４２の該当データの参照情報（レコード）を削除する。スナップショット作成部３５は、ステップＳ７３の処理が終了すると、ステップＳ７５の処理を行う。
ステップＳ７４において、スナップショット作成部３５は、該当データに「未更新」属性を設定する。スナップショット作成部３５は、テーブル管理部３２により、当該レコードの属性欄３４２ｎに「未更新」属性を設定する。
【００９６】
ステップＳ７５において、スナップショット作成部３５は、第２データ管理テーブル３４２のすべてのレコードについて処理を繰り返したか否かを判断する。スナップショット作成部３５は、当該判断条件が成立しなかったならば、ステップＳ７０の処理に戻り、当該判断条件が成立したならば、図１２の処理を終了する。
【００９７】
第１の実施形態のスナップショット作成部３５は、スナップショット作成後処理において、更新前集合のデータを削除している。これにより、スナップショット作成部３５は、更新前データの記憶領域を解放して、通常時の空間計算量を削減することができる。
なお、これに限られず、スナップショット作成部３５は、スナップショット作成後処理において、最後に第２データ管理テーブル３４２を削除してもよい。これにより、各データ管理サーバ３は、第２データ管理テーブル３４２を格納していた記憶領域を解放し、通常時の空間計算量を更に削減することができる。
【００９８】
図１３（ａ）〜（ｇ）は、スナップショット作成中の各集合と各データとを示す図である。
図１３（ａ）から図１３（ｇ）まで時系列順に、外部からの書込更新処理が行われた結果を示している。未更新集合は、第２データ管理テーブル３４２の属性欄３４２ｎが「未更新」のデータの集合である。更新前集合は、第２データ管理テーブル３４２の属性欄３４２ｎが「更新前」のデータの集合である。更新後集合は、第２データ管理テーブル３４２の属性欄３４２ｎが「更新後」のデータの集合である。
【００９９】
図１３（ａ）は、データ管理テーブル３４１がスナップショットデータ３４４にコピーされたときの、各集合と各データとを示している。これは、スナップショット作成開始における各データを示している。
未更新集合は、データＡ〜Ｅをすべて含んでいる。即ち、データＡ〜Ｅは、スナップショット作成開始の時点と同一であり、更新されていないことを示している。更新前集合と更新後集合は、データを含まない。
【０１００】
図１３（ｂ）は、＃Ｂをキー値とするデータＢが更新されたときの、各集合と各データとを示している。
データＢ（図１３（ａ）参照）は、更新前集合に移動している。ここでは、データの移動を実線矢印で示している。データＢ（図１３（ａ）参照）は、コピーされて更新されることでデータＢ２となり、更新後集合に移動している。ここでは、データの更新と移動とを破線矢印で示している。
【０１０１】
図１３（ｃ）は、＃Ｄをキー値とするデータＤが更新されたときの、各集合と各データとを示している。
データＤ（図１３（ｂ）参照）は、更新前集合に移動している。更にデータＤ（図１３（ｂ）参照）は、コピーされて更新されることでデータＤ２となり、更新後集合に移動している。
【０１０２】
図１３（ｄ）は、＃Ｂをキー値とするデータＢ２が再更新されたときの、各集合と各データとを示している。
更新後集合のデータＢ２（図１３（ｃ）参照）は、再更新されデータＢ３となり、同様に更新後集合に含まれている。
【０１０３】
図１３（ｅ）は、＃Ｄをキー値とするデータＤ２が削除されたときの、各集合と各データとを示している。
更新後集合のデータＤ２（図１３（ｄ）参照）は削除され、更新後集合から消滅している。
【０１０４】
図１３（ｆ）は、＃Ｅをキー値とするデータＥが削除されたときの、各集合と各データとを示している。
未更新集合のデータＥ（図１３（ｄ）参照）は、更新前集合に移動している。
【０１０５】
図１３（ｇ）は、スナップショット作成後処理を実行したのちの、各集合と各データとを示している。
更新後集合のデータＢ３（図１３（ｆ）参照）は、未更新集合に移動している。これにより、未更新集合には、データＡ，Ｂ３，Ｃのみが含まれるようになる。すなわち、この未更新集合には、データＤ，Ｅの削除と、データＢの２回の更新とが反映される。
【０１０６】
図１３（ａ）〜（ｆ）のすべての期間において、未更新集合と更新前集合との論理和はデータＡ〜Ｅであり、スナップショット作成開始時におけるデータＡ〜Ｅと一致している。よって、スナップショット作成部３５は、未更新集合と更新前集合のデータを収集することにより、スナップショット作成開始時におけるデータを収集することができる。
【０１０７】
（発明の効果）
以上説明した第１の実施形態では、次の（Ａ）〜（Ｇ）のような効果がある。
【０１０８】
（Ａ）  スナップショット作成部３５は、データ３４３の全体をロックせず、データ管理テーブル３４１をロックして、このスナップショットを作成したのちにロック解除している。その後、データ管理サーバ３は、一方でデータ更新を継続しながら、他方でスナップショットを収集している。これにより、データ管理サーバ３は、少量のテーブルのロックにより、このテーブルで管理された多量のデータのスナップショットを作成できる。
【０１０９】
（Ｂ）  スナップショット作成中のバックアップ対象データは、更新後集合と、未更新集合と、更新前集合とに分けて管理される。データ書込参照処理部３１は、未更新集合のデータを更新する場合、そのデータをコピーし、それぞれ更新前集合と更新後集合とにデータを移動し、更新後集合に移動したデータに、更新処理を行っている。これにより、データ書込参照処理部３１は、更新されたデータに限定して二重化しているので、二重化のための時間計算量と空間計算量とを減らし、短時間でスナップショットを作成することができる。
【０１１０】
（Ｃ）  データ書込参照処理部３１は、スナップショット作成中にデータを新規作成する場合、更新後集合にデータを作成する。これにより、データ書込参照処理部３１は、スナップショット作成処理に影響することなく、データを新規作成可能である。
【０１１１】
（Ｄ）  データ書込参照処理部３１は、スナップショット作成中にデータを削除する場合、未更新集合のデータならば更新前集合に移動し、更新後集合のデータならば削除している。これにより、データ書込参照処理部３１は、スナップショット作成処理への影響無しに、処理対象データを削除することができる。
【０１１２】
（Ｅ）  データ書込参照処理部３１は、スナップショット作成中のデータの参照要求を、データ更新状況が反映された原本であるデータ管理テーブル３４１に基づいて行う。スナップショット作成部３５は、スナップショット作成開始時点のデータ管理テーブル３４１をコピーし、未更新集合と更新前集合に含まれるデータを管理する第２データ管理テーブル３４２に基づいて、スナップショットを作成する。このように、データ書込参照処理部３１と、スナップショット作成部３５とは、それぞれ別のテーブルに基づいて、データの参照と、スナップショットの作成とを行う。よって、各データ管理サーバ３は、排他制御によりデータやデータ管理テーブル３４１の整合性を保つ必要がなくなる。
【０１１３】
（Ｆ）  スナップショット作成部３５は、スナップショット作成後に、通常時には不要である更新前集合の各データを削除している。これにより、データ管理サーバ３は、通常時のメモリリソースを充分に確保することができる。
【０１１４】
（Ｇ）  スナップショット作成部３５は、スナップショット作成中に更新後集合と未更新データ集合とに分けて管理していた各データを、スナップショット作成後には、これらを分けずに単一の集合で管理するように変える。これにより、データ管理サーバ３は、通常時の時間計算量を削減することができる。
【０１１５】
（第２の実施形態）
図１４は、第２の実施形態におけるデータ管理サーバを示す概略の構成図である。
データ管理サーバ３は、図１に示す第１の実施形態の各データ管理サーバ３と同様に構成されている。
データ管理サーバ３は、第１の実施形態とは異なり、外部から振分サーバ２（図１参照）を介さずにデータ書込要求信号やデータ参照要求信号などが送信される。
データ管理サーバ３は、第１の実施形態とは異なり、外部端末からスナップショット作成管理サーバ４（図１参照）を介さずに、スナップショット作成要求信号が送信される。それ以外は、第１の実施形態の各データ管理サーバ３と同様に構成され、同様に動作する。
【０１１６】
このように、複数のデータ管理サーバ３から構成されるクラスタシステム１（図１参照）に限られず、単一のデータ管理サーバ３であっても、スナップショット作成部３５は、少量のデータ管理テーブル３４１のロックにより、多量のデータのスナップショットを作成することができる。
【０１１７】
（変形例）
本発明は、上記実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲で、変更実施が可能であり、例えば、次の（ａ）〜（ｃ）のようなものがある。
【０１１８】
（ａ）  データ管理サーバ３は、スナップショット作成中に、データを削除する場合、データをコピーして、それぞれ更新前集合と更新後集合にデータを移動し、更新後集合のデータのみを削除してもよい。
【０１１９】
（ｂ）  スナップショット作成部３５は、スナップショット作成指示を受けて、テーブル管理部３２に、テーブルロックを解除するように処理してもよい。
【０１２０】
（ｃ）  スナップショット作成部３５は、データ管理テーブル３４１の全体ではなく、データ管理テーブル３４１のバックアップ対象部分をロックして、バックアップを作成したのちにロック解除してもよい。これにより、スナップショット作成部３５は、限定されたバックアップ対象部分のスナップショットを作成可能である。
【符号の説明】
【０１２１】
１  クラスタシステム  （サーバクラスタのスナップショット作成システム）
２  振分サーバ
２１  振分部
２２  振分表
３，３−１〜３−３  データ管理サーバ
３１  データ書込参照処理部
３２  テーブル管理部
３３  データ管理部
３４  記憶部
３４１  データ管理テーブル
３４２  第２データ管理テーブル
３４３  データ
３４４  スナップショットデータ
３５  スナップショット作成部
４  スナップショット作成管理サーバ
４１  スナップショット作成統括部
【図１】
0005956387.tif 000002
【図２】
0005956387.tif 000003
【図３】
0005956387.tif 000004
【図４】
0005956387.tif 000005
【図５】
0005956387.tif 000006
【図６】
0005956387.tif 000007
【図７】
0005956387.tif 000008
【図８】
0005956387.tif 000009
【図９】
0005956387.tif 000010
【図１０】
0005956387.tif 000011
【図１１】
0005956387.tif 000012
【図１２】
0005956387.tif 000013
【図１３】
0005956387.tif 000014
【図１４】
0005956387.tif 000015