(57)【要約】【課題】ミラーリングによる信頼性を向上させることを可能とする。【解決手段】クライアント端末１０のＲＡＩＤコントローラ１２は、ライト要求に応じてＳＳＤ１１にデータを書き込む。ＲＡＩＤコントローラ１２は、ライト要求をミラーサーバ２０に送信する。ミラーサーバ２０は、ライト要求に含まれる端末識別情報によって識別されるクライアント端末１０に対してミラーサーバ２０がメインサーバとして動作するかサブサーバとして動作するかを、クライアント情報テーブルに保持されている動作情報に基づいて判定する。ミラーサーバ２０は、メインサーバとして動作すると判定された場合、ライト要求に応じてＨＤＤ２１にデータを書き込む。ミラーサーバ２０は、サブサーバとして動作すると判定された場合、ライト要求に応じてデータが書き込まれるＨＤＤ２１における書き込み位置をライト位置情報テーブルに登録する。【選択図】図１
2010198441.tif 000002
【特許請求の範囲】
【請求項１】
複数のクライアント端末と、当該複数のクライアント端末と通信路を介して接続される少なくとも２つのサーバとを具備し、前記複数のクライアント端末の各々に対して前記２つのサーバのうちの一方のサーバがメインサーバとして動作し、他方のサーバがサブサーバとして動作するミラーリングシステムにおいて、
前記複数のクライアント端末の各々は、
小容量記憶装置と、
前記小容量記憶装置にデータを書き込むためのライト要求を取得するライト要求取得手段と、
前記取得したライト要求に応じて、前記小容量記憶装置に前記データを書き込む第１の書き込み手段と、
当該クライアント端末を識別するための端末識別情報を含む前記取得したライト要求を前記２つのサーバに送信する送信手段と
を含み、
前記２つのサーバの各々は、
前記複数のクライアント端末の各々が有する小容量記憶装置をミラーリングするために用いられる大容量記憶装置と、
前記端末識別情報によって識別されるクライアント端末に対して当該サーバがメインサーバまたはサブサーバとして動作することを示す動作情報を保持するクライアント情報テーブルと、
前記端末識別情報によって識別されるクライアント端末に対して当該サーバがメインサーバまたはサブサーバとして動作するかを、前記クライアント情報テーブルに保持されている動作情報に基づいて判定する動作情報判定手段と、
当該サーバがメインサーバとして動作すると判定された場合、前記ライト要求に応じて前記大容量記憶装置に前記データを書き込む第２の書き込み手段と、
当該サーバがサブサーバとして動作すると判定された場合、前記ライト要求に応じて前記データが書き込まれる前記大容量記憶装置の書き込み位置を示すライト位置情報を保持するライト位置情報テーブルと
を含む
ことを特徴とするミラーリングシステム。
【請求項２】
前記２つのサーバの各々は、
当該サーバがサブサーバとして動作すると判定された場合、当該サーバの処理状況に基づいて前記大容量記憶装置に前記データを書き込むかを判定する書き込み判定手段と、
前記データを書き込まないと判定した場合、前記ライト位置情報テーブルに前記ライト位置情報を登録する登録手段と、
前記データを書き込むと判定した場合、前記ライト要求に応じて前記大容量記憶装置に前記データを書き込む第３の書き込み手段と
を更に含む
ことを特徴とする請求項１記載のミラーリングシステム。
【請求項３】
前記クライアント情報テーブルは、更に前記動作情報が当該端末識別情報によって識別されるクライアント端末に対してサブサーバとして動作することを示す場合において、当該クライアント端末に対してメインサーバとして動作する他方のサーバを識別するための対応サーバ識別情報を、当該端末識別情報に対応付けて保持し、
前記２つのサーバの各々は、
前記サブサーバとして動作することを示す動作情報に対応した端末識別情報によって識別されるクラインアント端末を監視することにより、当該クライアント端末が停止したことを検出する検出手段と、
前記クライアント端末が停止したことを検出した場合、前記ライト位置情報によって示される書き込み位置に書き込まれるデータを、前記対応サーバ識別情報によって識別される他方のサーバから取得するデータ取得手段と、
前記データ取得手段によって取得されたデータを、前記ライト位置情報テーブルに保持されているライト位置情報に示される前記大容量記憶装置の書き込み位置に書き込む第３の書き込み手段と
を更に含むことを特徴とする請求項１記載のミラーリングシステム。
【請求項４】
前記クライアント情報テーブルは、更に前記動作情報が当該端末識別情報によって識別されるクライアント端末に対してサブサーバとして動作することを示す場合において、当該クライアント端末に対してメインサーバとして動作する他方のサーバを識別するための対応サーバ識別情報を、当該端末識別情報に対応付けて保持し、
前記２つのサーバの各々は、
前記対応サーバ識別情報によって識別される他方のサーバを監視することにより、当該他方のサーバが停止したことを検出する検出手段と、
前記他方のサーバの動作が停止したことを検出した場合、前記ライト位置情報によって示される書き込み位置に書き込まれるデータを、前記サブサーバとして動作することを示す動作情報に対応した前記端末識別情報によって識別されるクライアント端末から取得するデータ取得手段と、
前記データ取得手段によって取得したデータを、前記ライト位置情報によって示される前記大容量記憶装置の書き込み位置に書き込む第３の書き込み手段と
を更に含むことを特徴とする請求項１記載のミラーリングシステム。
【請求項５】
前記クライアント情報テーブルは、更に前記動作情報が当該端末識別情報によって識別されるクライアント端末に対してサブサーバとして動作することを示す場合において、当該クライアント端末に対してメインサーバとして動作する他方のサーバが稼動中または停止中であることを示す稼動情報を、当該端末識別情報に対応付けて保持し、
前記２つのサーバの各々は、
当該サーバがサブサーバとして動作すると判定された場合、前記端末識別情報に対応した前記稼動情報に基づいて、前記他方のサーバが稼動中であるかまたは停止中であるかを判定する稼動情報判定手段と、
前記他方のサーバが停止中であると判定された場合、前記ライト要求に応じて前記大容量記憶装置に前記データを書き込む第３の書き込み手段と、
前記他方のサーバが稼動中であると判定された場合、前記ライト位置情報テーブルに前記ライト位置情報を登録する登録手段と
を更に含むことを特徴とする請求項１記載のミラーリングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶容量が異なる記憶デバイスを用いたミラーリング制御を行うミラーリングシステムに関する。
【背景技術】
【０００２】
一般的に、パーソナルコンピュータ（ＰＣ）またはサーバ等に使用される大容量記憶装置としてはハードディスクドライブ（ＨＤＤ：Hard Disk Drive）が主として用いられている。また、近年では、フラッシュメモリ等を用いたＳＳＤ（Solid State Disk）と呼ばれるデバイスの技術向上により、ＳＳＤが一部のＨＤＤの代わりに用いられるようになっている。  
このＳＳＤはＨＤＤと比較して、寿命が長い、データのリード性能が高い、消費電力が少ない、騒音が小さいという長所がある。一方で、記憶容量あたりの単価が高い、書込みの回数に制限があるという短所がある。
【０００３】
ところで、ＨＤＤを用いた大容量記憶装置／システムにおいては、ＲＡＩＤ（Redundant Array of Inexpensive Disk drives）によりデータを冗長化することで、ＨＤＤに障害が発生した場合にもシステム全体として処理を停止することなく運用できるように構成することが一般的である。  
一般的に、ＲＡＩＤは、規模の大きいサーバ等のシステムにおいて利用されている。しかしながら、ＨＤＤやＲＡＩＤコントローラが安価になってきたことに伴い、近年ではＰＣ等の比較的小規模なものでもＲＡＩＤを構成する場合がある。ＲＡＩＤには、いくつかのレベル（例えばＲＡＩＤ０〜５等）があり、それぞれ冗長の方法が異なる。
【０００４】
例えばＲＡＩＤ１において、上記した技術の単純な組み合わせとして、ＳＳＤを用いてＲＡＩＤ（ミラーリング）を構成することが考えられる。これによれば、複数のＳＳＤのうちの１つが故障してもシステムを停止することなく運用できるように構成することが可能となる。これに関連して、例えばフラッシュメモリでＲＡＩＤを構成した上で、多くの回数の書き込みが可能な技術が開示されている（例えば、特許文献１を参照）。
【０００５】
上記したようにＳＤＤは、ＨＤＤと比較して、記憶容量あたりの単価が高い代わりに故障頻度がＨＤＤよりも相当低いという特徴がある。これによると、比較的小規模な計算機においては、万一のためにミラーリングの必要はあるが、実際の故障頻度が非常に低いにもかかわらず上記したようにＳＳＤだけでミラーリングを行うのは経済的ではない場合が多い。
【０００６】
ＳＳＤのみのミラーリングによる経済的非効率を解決する手段として、ＳＳＤ及びＨＤＤの両方を用いてミラーリングするという手法が考えられる。しかしながら、一般的な製品１つあたりの記憶容量はＨＤＤの方が大きいため、ＳＳＤ及びＨＤＤを１対１でミラーリングさせる手法ではあまり効果が向上しない。
【０００７】
そこで、更に十分高速な通信手段を用いて、複数のＰＣ（クライアントＰＣ）がそれぞれＳＳＤを有し、複数のクライアントＰＣが例えば専用サーバ（以下、ミラーサーバと表記）上の１つのＨＤＤを共有することが考えられる。
【０００８】
ここで、各クライアントＰＣが有するＳＳＤ及びミラーサーバ上のＨＤＤを用いてミラーリングを行うように構成されたシステムにおいて、複数のクライアントＰＣのデータが格納されているミラーサーバ側のＨＤＤが故障した場合、つまり、当該ＨＤＤの故障による交換作業等によりミラーサーバ側が一時的に停止した場合、ミラーサーバを利用するクライアントＰＣには稼動中のものと停止中（電源が入っていない等）のものとが混在してしまう。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００７−２６５２６５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
実際の運用において、稼動を停止しているクライアントＰＣがどの程度の時間、稼動を停止しているのかを認識することはできない。また、稼動を停止しているクライアントＰＣにおいて停止中にどのような作業が行われたかを認識することはできない。
【００１１】
このように、例えばクライアントＰＣ側のＳＳＤの故障中にミラーサーバ側のＨＤＤが故障したような場合には、上記した先行技術におけるＳＳＤ及びＨＤＤを用いてミラーリングする単純な構成ではミラーリングの本来の信頼性には及ばない場合がある。
【００１２】
また、上記したような各クライアントＰＣが有するＳＳＤ及びミラーサーバ上のＨＤＤを用いてミラーリングを行うシステムにおいては、物理的なＨＤＤを複数のクライアントＰＣで共有するため、特にデータをライトする場合にはアクセス競合が生じる場合がある。つまり、ライト要求が集中する時間帯では、クライアントＰＣではミラーサーバからのライトアクセスの応答が非常に遅く見える場合がある。物理的なＨＤＤを共有する以上、本質的には回避できない課題ではあるが、可能な限り競合を回避できる方が望ましい。
【００１３】
そこで、本発明の目的は、ミラーリングによる信頼性を向上させることが可能なミラーリングシステムを提供することにある。
【課題を解決するための手段】
【００１４】
本発明の１つの態様によれば、複数のクライアント端末と、当該複数のクライアント端末と通信路を介して接続される少なくとも２つのサーバとを具備し、前記複数のクライアント端末の各々に対して前記２つのサーバのうちの一方のサーバがメインサーバとして動作し、他方のサーバがサブサーバとして動作するミラーリングシステムにおいて、前記複数のクライアント端末の各々は、小容量記憶装置と、前記小容量記憶装置にデータを書き込むためのライト要求を取得するライト要求取得手段と、前記取得したライト要求に応じて、前記小容量記憶装置に前記データを書き込む第１の書き込み手段と、当該クライアント端末を識別するための端末識別情報を含む前記取得したライト要求を前記２つのサーバに送信する送信手段とを含み、前記２つのサーバの各々は、前記複数のクライアント端末の各々が有する小容量記憶装置をミラーリングするために用いられる大容量記憶装置と、前記端末識別情報によって識別されるクライアント端末に対して当該サーバがメインサーバまたはサブサーバとして動作することを示す動作情報を保持するクライアント情報テーブルと、前記端末識別情報によって識別されるクライアント端末に対して当該サーバがメインサーバまたはサブサーバとして動作するかを、前記クライアント情報テーブルに保持されている動作情報に基づいて判定する動作情報判定手段と、当該サーバがメインサーバとして動作すると判定された場合、前記ライト要求に応じて前記大容量記憶装置に前記データを書き込む第２の書き込み手段と、当該サーバがサブサーバとして動作すると判定された場合、前記ライト要求に応じて前記データが書き込まれる前記大容量記憶装置の書き込み位置を示すライト位置情報を保持するライト位置情報テーブルとを含むことを特徴とするミラーリングシステムが提供される。
【発明の効果】
【００１５】
本発明は、ミラーリングによる信頼性を向上させることを可能とする。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に係るミラーリングシステムの概略構成を示すブロック図。
【図２】図１に示すミラーサーバ２０の主として機能構成を示すブロック図。
【図３】図２に示すクライアント情報テーブル２２のデータ構造の一例を示す図。
【図４】ライト要求が発行された場合のクライアント端末１０が有するＲＡＩＤコントローラ１２の処理手順を示すフローチャート。
【図５】クライアント端末１０によってライト要求が送信された場合のミラーサーバ２０の処理手順を示すフローチャート。
【図６】ミラーサーバ２０に含まれる停止監視部２７の処理手順を示すフローチャート。
【図７】メインサーバとして動作する対応ミラーサーバ２０からのコピー処理の処理手順を示すフローチャート。
【図８】本ミラーサーバ２０がサブサーバとして動作すべきクライアント端末１０からのコピー処理の処理手順を示すフローチャート。
【発明を実施するための形態】
【００１７】
以下、図面を参照して、本発明の実施形態について説明する。  
図１は、本実施形態に係るミラーリングシステムの概略構成を示すブロック図である。本実施形態のミラーリングシステムは、複数のクライアント端末１０及び少なくとも２つのミラーサーバ２０を備える。図１のミラーリングシステムは、２つのミラーサーバ２０を備えている。
【００１８】
複数のクライアント端末１０及び２つのミラーサーバ２０は、例えばＬＡＮ（Local Area Network）のような通信路３０を介して互いに接続されている。複数のクライアント端末１０は、それぞれ各種データを格納するＳＳＤ（小容量記憶装置）１１を有する。一方、２つのミラーサーバ２０は、それぞれＨＤＤ（大容量記憶装置）２１を有する。ＳＳＤ１１は、製品１つあたりの記憶容量はＨＤＤ２１より小さいが、ＨＤＤ２１と比較してデータのリード性能が高い記憶装置である。
【００１９】
各クライアント端末１０は、各ミラーサーバ２０が有するＨＤＤ２１を他のクライアント端末１０と共有する。これにより、各ミラーサーバ２０が有するＨＤＤ２１内には、複数のクライアント端末１０の各々が有するＳＳＤ１１のミラーとなるデータが保持（格納）される。つまり、本実施形態においては、複数のクライアント端末１０が有するＳＳＤ１１及び２つのミラーサーバ２０が有するＨＤＤ２１を用いてミラーリングが行われる。
【００２０】
また、各クライアント端末１０は、ＲＡＩＤコントローラ１２を有する。ＲＡＩＤコントローラ１２は、例えばクライアント端末１０上で動作する主プログラム（クライアント端末１０のＣＰＵが実行するプログラム）からＩ／Ｏ要求を取得する。Ｉ／Ｏ要求には、クライアント端末１０が有するＳＳＤ１１に対してデータを書き込むためのライト要求及び当該ＳＳＤ１１からデータを読み込むためのリード要求が含まれる。
【００２１】
ＲＡＩＤコントローラ１２は、主プログラムからのライト要求に応じて当該クライアント端末１０内のＳＳＤ１１にデータを書き込む。また、ＲＡＩＤコントローラ１２は、取得したライト要求を各ミラーサーバ２０に送信する。なお、ＲＡＩＤコントローラ１２から送信されるライト要求には、当該クライアント端末１０を識別するための端末ＩＤ（端末識別情報）が含まれる。  
一方、ＲＡＩＤコントローラ１２は、主プログラムからのリード要求に応じて当該クライアント端末１０内のＳＳＤ１１からデータを読み込む。
【００２２】
各ミラーサーバ２０は、複数のクライアント端末１０の各々に対してメインサーバまたはサブサーバとして動作する。すなわち、クライアント端末１０に対し、２つのミラーサーバ２０は、一方がメインサーバとして動作する場合は、他方はサブサーバとして動作する。各ミラーサーバ２０がメインサーバかサブサーバかは、クライアント端末１０毎に異なる。
【００２３】
ミラーリングシステムにおいて、例えばクライアント端末１０が１０台存在する場合を想定する。このとき、一方のミラーサーバ２０が５つのクライアント端末１０に対してメインサーバとして動作する場合、他方のミラーサーバ２０は、当該５つのクライアント端末１０に対してはサブサーバとして動作する。残りの５つのクライアント端末１０に対しては、各ミラーサーバ２０の動作（メインサーバ及びサブサーバとしての動作）が逆となる。
【００２４】
このように本実施形態においては、各ミラーサーバ２０はあるクライアント端末１０からみるとメインサーバであり、別のクライアント端末１０からみるとサブサーバであるように動作する。すなわち、２つのミラーサーバ２０で、全てのクライアント端末１０のメインサーバ及びサブサーバの機能を分担するように構成されている。
【００２５】
各ミラーサーバ２０は、クライアント端末１０から送信されたライト要求に応じて、当該クライアント端末１０に対応したメインサーバまたはサブサーバとしての処理を実行する。なお、複数のクライアント端末１０の各々においては、当該クライアント端末１０に対してメインサーバ及びサブサーバとして動作するミラーサーバ２０を識別するための情報（例えば、メインサーバＩＤ及びサブサーバＩＤ）が予め保持されている。
【００２６】
図２は、図１に示す各ミラーサーバ２０の主として機能構成を示すブロック図である。ミラーサーバ２０は、ＨＤＤ２１、クライアント情報テーブル２２、通信Ｉ／Ｆ２３、Ｉ／Ｏ処理部２４、物理ＨＤＤ制御部２５、ライト位置情報テーブル２６及び停止監視部２７を含む。なお、図２においては、本実施形態に係るミラーリングシステムの趣旨と直接関わらない機能（例えば、ＣＰＵ、メモリ、ディスク／ネットワーク以外のＩ／Ｏ等）については省略されている。
【００２７】
ＨＤＤ２１は、複数のクライアント端末１０の各々が有するＳＳＤ１１に格納されているデータをミラーリングするために用いられる記憶装置である。  
クライアント情報テーブル２２は、複数のクライアント端末１０の各々を識別する端末識別情報（以下、端末ＩＤと表記）に対応付けて、ミラーサーバ２０が当該クライアント端末１０に対してメインサーバまたはサブサーバとして動作することを示す動作情報を保持する。
【００２８】
また、クライアント情報テーブル２２は、動作情報がサブサーバ（またはメインサーバ）として識別されるクライアント端末１０に対し、メインサーバ（またはサブサーバ）として動作する他方のミラーサーバ２０を識別するための対応サーバ識別情報（以下、対応サーバＩＤと表記）を、当該端末ＩＤに対応付けて保持する。  
また、クライアント情報テーブル２２は、動作情報がサブサーバとして識別されるクライアント端末１０に対し、メインサーバとして動作する他方のミラーサーバ２０が稼動中または停止中であることを示す稼動情報を、当該端末ＩＤに対応付けて保持する。
【００２９】
通信Ｉ／Ｆ２３は、クライアント端末１０から送信されたライト要求を受信する。このライト要求には、書き込むデータ（以下、書き込みデータと表記）及び当該ライト要求を送信したクライアント端末１０を識別する端末ＩＤが含まれる。Ｉ／Ｏ処理部２４は、メイン／サブ振り分け部２４１、メイン機能部２４２及びサブ機能部２４３を含む。
【００３０】
メイン／サブ振り分け部２４１は、ライト要求に含まれる端末ＩＤのクライアント端末１０に対してミラーサーバ２０がメインサーバまたはサブサーバであるかを判定する。メイン／サブ振り分け部２４１は、端末ＩＤに対応付けられている動作情報に基づいて判定する。
【００３１】
メイン機能部２４２は、ミラーサーバ２０がメインサーバとして動作するための各種機能を有する。メイン機能部２４２は、ライト要求に含まれる書き込みデータをＨＤＤ２１に書き込むライト処理を実行する。このとき、メイン機能部２４２は、ＨＤＤ２１に対する物理ＨＤＤ制御部２５を介してライト処理を実行する。  
メイン機能部２４２はライト処理が実行されると、当該ライト処理が完了した旨の応答（以下、ライト完了応答と表記）を通信Ｉ／Ｆ２３を介してクライアント端末１０に送信する。このライト完了応答は、ライト要求に含まれる端末ＩＤのクライアント端末１０に送信される。
【００３２】
サブ機能部２４３は、ミラーサーバ２０がサブサーバとして動作するための各種機能を有する。サブ機能部２４３は、ライト要求に含まれる端末ＩＤのクライアント端末１０に対し、メインサーバである他方のミラーサーバ２０が稼動中であるか否かを判定する。このとき、サブ機能部２４３は、ライト要求に含まれる端末ＩＤに対応付けられている稼動情報に基づいて判定処理を実行する。
【００３３】
サブ機能部２４３は、ミラーサーバ２０の処理状況に基づいてライト要求に応じてＨＤＤ２１に書き込みデータを書き込むか否かを判定する。そして、サブ機能部２４３は、ライト要求に応じて書き込みデータが書き込まれるＨＤＤ２１における書き込み位置を示すライト位置情報をライト位置情報テーブル２６に登録する。
【００３４】
ライト位置情報テーブル２６には、ミラーサーバ２０がサブサーバとして動作すべきクライアント端末１０のＳＳＤ１１と当該クライアント端末１０に対してメインサーバとして動作する他方のミラーサーバ２０上のＨＤＤ２１において、書き込みデータが書き込まれた（上書きされた）位置情報が保持される。つまり、ライト位置情報テーブル２６は、ミラーサーバ２０上のＨＤＤ２１に格納されているデータがクライアント端末１０のＳＳＤ１１及びメインサーバとして動作する他方のミラーサーバ２０のＨＤＤ２１（に格納されているデータ）と一致するか否かを示すフラグ配列のような構造を有する。なお、ライト位置情報テーブル２６は、ミラーサーバ２０がサブサーバとして動作すべきクライアント端末１０毎に存在する。
【００３５】
サブ機能部２４３は、ライト位置情報がライト位置情報テーブル２６に登録されると、ライト要求に含まれる端末ＩＤのクライアント端末１０に対してライト要求を受け付けた旨の応答（以下、ライト受付応答と表記）を送信する。ライト受付応答は、通信Ｉ／Ｆ２３を介して送信される。また、サブ機能部２４３は、メイン機能部２４２と同様に、ライト要求に含まれる書き込みデータをＨＤＤ２１に書き込むライト処理を実行する。サブ機能部２４３は、ライト処理が実行されると、ライト完了応答を通信Ｉ／Ｆ２３を介してクライアント端末１０に送信する。
【００３６】
停止監視部２７は、ミラーサーバ２０がサブサーバとして動作すべきクライアント端末１０を監視することにより、当該クライアント端末１０の動作が停止したことを検出する。停止監視部２７は、クライアント端末１０の停止を検出した場合、当該クライアント端末１０に対応するライト位置情報テーブル２６に保持されているライト位置情報によって示される書き込み位置に書き込むデータ（書き込みデータ）を、当該クライアント端末１０に対してメインサーバとして動作する他方のミラーサーバ２０から取得する。  
停止監視部２７は、取得した書き込みデータを、動作の停止が検出されたクライアント端末１０に対応したライト位置情報によって示されるＨＤＤ２１の書き込み位置に書き込むライト処理を実行する。
【００３７】
また、停止監視部２７は、他方のミラーサーバ２０を監視することにより、当該他方のミラーサーバ２０の動作が停止したことを検出する。停止監視部２７は、他方のミラーサーバ２０の停止を検出した場合、ライト位置情報テーブル２６に保持されているライト位置情報によって示される書き込み位置に書き込むデータ（書き込みデータ）を、当該ライト位置情報テーブル２６に対応するクライアント端末１０から取得する。  
停止監視部２７は、クライアント端末１０から取得した書き込みデータを、当該クライアント端末１０に対応したライト位置情報によって示されるＨＤＤ２１の書き込み位置に書き込むライト処理を実行する。
【００３８】
図３は、図２に示すクライアント情報テーブル２２のデータ構造の一例を示す。図３に示したクライアント情報テーブル２２には、端末ＩＤ、動作情報、対応サーバＩＤ及び稼動情報が対応付けて保持される。  
端末ＩＤは、クライアント端末１０を一意に識別するための識別子である。動作情報は、当該端末ＩＤのクライアント端末１０に対してミラーサーバ２０がメインサーバまたはサブサーバとして動作することを示す。  対応サーバＩＤは、対応する端末ＩＤのクライアント端末１０に対してメインサーバまたはサブサーバとして対応関係にあるミラーサーバ２０を識別するための識別子である。なお、図１に示すようにミラーサーバ２０が２つである場合には、対応サーバＩＤとしては、全て他方のミラーサーバ２０を識別するための識別子が保持される。  
稼動情報は、対応する動作情報がサブサーバとして動作することを示す場合に、対応する対応サーバＩＤのミラーサーバ（端末ＩＤのクライアント端末１０に対してメインサーバとして動作する他方のミラーサーバ）２０が稼動中または停止中であることを示す。
【００３９】
図３に示す例では、クライアント情報テーブル２２には、端末ＩＤ「１」に対応付けられて、動作情報「メイン」、対応サーバＩＤ「２」が保持されている。これによれば、このクライアント情報テーブル２２を含むミラーサーバ２０は、端末ＩＤ「１」のクライアント端末１０に対してはメインサーバとして動作し、対応サーバＩＤ「２」のミラーサーバ（他方のミラーサーバ）２０がサブサーバとして動作することが示される。なお、ここでは動作情報が「メイン」であるため、クライアント情報テーブル２２には、稼動情報は保持されていない。
【００４０】
次に、図４のフローチャートを参照して、ライト要求が発行された場合のクライアント端末１０が有するＲＡＩＤコントローラ１２の処理手順について説明する。  
なお、クライアント端末１０においては、当該クライアント端末１０に対してメインサーバとして動作するミラーサーバ２０を特定するためのメインサーバＩＤ及びサブサーバとして動作するミラーサーバ２０を特定するためのサブサーバＩＤが予め保持されている。
【００４１】
まず、ＲＡＩＤコントローラ１２は、クライアント端末１０上で動作する主プログラムからライト要求が発行された場合、当該ライト要求を取得する（ステップＳ１）。ここで、クライアント端末１０上で動作する主プログラムとは、クライアント端末１０のＣＰＵが実行するプログラムであり、例えばＯＳ（Operating System）からアプリケーションまでの全てを含むプログラムをいう。ライト要求を取得すると、ＲＡＩＤコントローラ１２の処理は、第１〜第３の処理に分岐される。
【００４２】
第１の処理では、ＲＡＩＤコントローラ１２は、取得したライト要求をＳＳＤ１１に発行し、ＳＳＤ１１に書き込みデータを書き込むライト処理を実行する（ステップＳ２）。そして、ＲＡＩＤコントローラ１２は、ＳＳＤ１１からのライト完了応答を待つ（ステップＳ３）。
【００４３】
第２の処理では、ＲＡＩＤコントローラ１２は、取得したライト要求を当該ＲＡＩＤコントローラ１２を有するクライアント端末１０に対してメインサーバとして動作するミラーサーバ２０に送信する（ステップＳ４）。このとき、ＲＡＩＤコントローラ１２は、予め保持されているメインサーバＩＤのミラーサーバ２０にライト要求を送信する。そして、ＲＡＩＤコントローラ１２は、ライト要求が送信されたミラーサーバ２０からのライト完了応答を待つ（ステップＳ５）。
【００４４】
第３の処理では、ＲＡＩＤコントローラ１２は、取得したライト要求を当該ＲＡＩＤコントローラ１２を有するクライアント端末１０に対してサブサーバとして動作するミラーサーバ２０に送信する（ステップＳ６）。このとき、ＲＡＩＤコントローラ１２は、予め保持されているサブサーバＩＤのミラーサーバ２０にライト要求を送信する。そして、ＲＡＩＤコントローラ１２は、ライト要求が送信されたミラーサーバ２０からのライト完了応答またはライト受付応答を待つ（ステップＳ７）。
【００４５】
第１〜第３の処理が実行されると、ＲＡＩＤコントローラ１２は、ＳＳＤ１１、メインサーバとして動作するミラーサーバ２０及びサブサーバとして動作するミラーサーバ２０の全てから応答があったか否かを判定する（ステップＳ８）。全てから応答がないと判定された場合（ステップＳ８のＮＯ）、ＲＡＩＤコントローラ１２は、全てから応答があるまで待機する。  
一方、全てから応答があったと判定された場合（ステップＳ８のＹＥＳ）、これらの３つの応答があった時点で記憶媒体（ＳＳＤ１１及びＨＤＤ２１）に実際にデータが書き込まれたことが保障されるため、主プログラムに対してライト完了を応答して処理が終了する。
【００４６】
なお、サブサーバとして動作するミラーサーバ２０からの応答においては、実際に当該ミラーサーバ２０が有するＨＤＤ２１に書き込まれたか否かは保障されておらず、ライト位置情報テーブル２６にライト位置情報が登録された結果の応答（つまり、ライト受付応答）である可能性がある。この場合には、ＳＳＤ１１及びメインサーバとして動作するミラーサーバ２０からのライト完了応答とは異なる応答（ライト受付応答）がクライアント端末１０で受信されることになるが、当該クライアント端末１０側でこれらの応答の差を認識する必要はない。つまり、ライト完了応答及びライト受付応答を区別することなく、ＳＳＤ１１、メインサーバとして動作するミラーサーバ２０及びサブサーバとして動作するミラーサーバ２０の全てから応答があれば、全てから応答があったと判定する。
【００４７】
次に、図５のフローチャートを参照して、クライアント端末１０からライト要求が送信された場合のミラーサーバ２０の処理手順について説明する。  
以下では、図５に示す処理の主体となるミラーサーバ２０を本ミラーサーバ２０と表記する。一方、図５に示す処理の主体となるミラーサーバ（本ミラーサーバ）２０とメインサーバまたはサブサーバとして対応関係にある他方のミラーサーバ２０を対応ミラーサーバ２０と表記する。
【００４８】
まず、通信Ｉ／Ｆ２３は、クライアント端末１０から送信されたライト要求を受信する（ステップＳ１１）。このライト要求には、当該ライト要求を送信したクライアント端末１０を識別するための端末ＩＤ及び書き込みデータが含まれる。
【００４９】
次に、メイン／サブ振り分け部２４１は、クライアント情報テーブル２２を参照して、受信されたライト要求に含まれる端末ＩＤのクライアント端末１０に対して本ミラーサーバ２０がメインサーバとして動作するか否かを判定する（ステップＳ１２）。メイン／サブ振り分け部２４１は、端末ＩＤに対応した動作情報がメインサーバとして動作することを示す場合、本ミラーサーバ２０がメインサーバとして動作すると判定する。
【００５０】
本ミラーサーバ２０がメインサーバとして動作すると判定した場合（ステップＳ１２のＹＥＳ）、メイン機能部２４２はライト要求をＨＤＤ２１に発行する（ステップＳ１３）。これにより、メイン機能部２４２は、ライト要求に応じて、ＨＤＤ２１に書き込みデータを書き込むライト処理を実行する。
【００５１】
メイン機能部２４２は、ＨＤＤ２１（または物理ＨＤＤ制御部２５）からライト完了応答を待つ（ステップＳ１４）。メイン機能部２４２は、ＨＤＤ２１からライト完了応答があった場合、ライト要求に含まれる端末ＩＤのクライアント端末１０にライト完了応答を送信する（ステップＳ１５）。
【００５２】
一方、本ミラーサーバ２０がメインサーバとして動作しないと判定した場合（ステップＳ１２のＮＯ）、メイン／サブ振り分け部２４１は、クライアント情報テーブル２２を参照して、ライト要求に含まれる端末ＩＤのクライアント端末１０に対して本ミラーサーバ２０がサブサーバとして動作するか否かを判定する（ステップＳ１６）。メイン／サブ振り分け部２４１は、ライト要求に含まれる端末ＩＤに対応した動作情報がサブサーバとして動作することを示す場合、本ミラーサーバ２０がサブサーバとして動作すると判定する。
【００５３】
本ミラーサーバ２０がサブサーバとして動作すると判定した場合（ステップＳ１６のＹＥＳ）、サブ機能部２４３はクライアント情報テーブル２２を参照して、ライト要求に含まれる端末ＩＤのクライアント端末１０に対してメインサーバとして動作する対応ミラーサーバ（他方のミラーサーバ）２０が稼動中であるか否かを判定する（ステップＳ１７）。サブ機能部２４３は、ライト要求に含まれる端末ＩＤに対応した稼動情報が稼動中であることを示す場合、メインサーバとして動作する対応ミラーサーバ２０が稼動中であると判定する。
【００５４】
メインサーバとして動作する対応ミラーサーバ２０が稼動中であると判定した場合（ステップＳ１７のＹＥＳ）、サブ機能部２４３は本ミラーサーバ２０の処理状況に基づいて、ライト要求に応じてＨＤＤ２１に書き込みデータを書き込むか否かを判定する（ステップＳ１８）。
【００５５】
なお、この書き込みデータをＨＤＤ２１に書き込むか否かの判定方法としては様々な方法が考えられるが、本ミラーサーバ２０におけるメインサーバとしてのディスクアクセスを妨害しない場合に書き込みデータを書き込むと判定されるように判定処理を実行することが好ましい。  
具体的には、例えば本ミラーサーバ２０においてメインサーバとしての処理が現在存在しないときに限り、書き込みデータをＨＤＤ２１に書き込むと判定するという方法が用いられる。このメインサーバとしての処理が現在存在するか否かは、例えば本ミラーサーバ２０におけるメインサーバ側のライトキュー等で判定することができる。
【００５６】
書き込みデータをＨＤＤ２１に書き込むか否かの判定方法として、例えば本ミラーサーバ２０におけるメインサーバ側のライトキューが予め定められた臨界点を超えているか否かにより判定する方法、または、本ミラーサーバ２０におけるメインサーバ及びサブサーバとしてのＨＤＤ２１に対する書き込み比率が予め定められた一定値になるようにスケジューリングすることにより判定する方法が用いられる構成であっても構わない。
【００５７】
例えば本ミラーサーバ２０におけるメインサーバとしての処理が現在存在していることにより書き込みデータをＨＤＤ２１に書き込まないと判定した場合（ステップＳ１８のＮＯ）、サブ機能部２４３は、ライト要求に応じて書き込みデータが書き込まれるＨＤＤ２１におけるライト位置情報を、ライト位置情報テーブル２６に登録する（ステップＳ１９）。このライト位置情報は、ライト要求に含まれる端末ＩＤのクライアント端末１０に対応するライト位置情報テーブル２６に登録される。
【００５８】
ライト位置情報が登録された場合、書き込みデータ自体はＨＤＤ２１には書き込まれないため、ライト要求に含まれる書き込みデータは破棄される。ライト位置情報テーブル２６においては、クライアント端末１０及びメインサーバとして動作する対応ミラーサーバ（他方のミラーサーバ）２０と整合が取れていないという情報が保持される。また、サブ機能部２４３は、ライト要求に含まれる端末ＩＤのクライアント端末１０に対して、ライト受付応答を送信する（ステップＳ２０）。
【００５９】
なお、ステップＳ１６において本ミラーサーバ２０がサブサーバとして動作しないと判定された場合、例えば本ミラーサーバ２０のクライアント情報テーブル２２の内容に整合性がとれていない等の理由によりエラーとなり処理が終了する。  
また、ステップＳ１７においてメインサーバとして動作する対応ミラーサーバ２０が稼動中でないと判定された場合、または、ステップＳ１８において書き込みデータをＨＤＤ２１に書き込むと判定された場合、サブ機能部２４３はメイン機能部２４２と同様に、ステップＳ１３〜ステップＳ１５の処理を実行する。これにより、ライト要求に応じて本ミラーサーバ２０のＨＤＤ２１に書き込みデータが書き込まれる。
【００６０】
図４及び図５に示すようにクライアント端末１０及びミラーサーバ２０が動作することにより、クライアント端末１０のＳＳＤ１１及び当該クライアント端末１０に対してメインサーバとして動作するミラーサーバ２０のＨＤＤ２１には完全なデータが格納されている状態（つまり、ＳＳＤ１１に格納されているデータが全てＨＤＤ２１に格納されている状態）となる（２重化）。  
一方、このクライアント端末１０に対してサブサーバとして動作するミラーサーバ２０のＨＤＤ２１には、不完全なデータが格納されている状態、つまり、ライト位置情報のみがライト位置情報テーブル２６に保持され、実際にはＨＤＤ２１に書き込まれていない書き込みデータがある状態となる。これにより、通常時のミラーリングシステムにおけるデータ状態は、不完全な３重化ということになる。このサブサーバとして動作するミラーサーバ２０においてライト位置情報テーブル２６に保持されているライト位置情報は、クライアント端末１０またはメインサーバとして動作するミラーサーバ２０の動作が停止したときに利用される。
【００６１】
次に、図６のフローチャートを参照して、ミラーサーバ２０の停止監視部２７の処理手順について説明する。  
まず、停止監視部２７は、クライアント端末１０及び対応ミラーサーバ２０に対して停止監視処理を実行する（ステップＳ３１）。この停止監視処理の対象となるクライアント端末１０は、本ミラーサーバ２０がサブサーバとして動作すべきクライアント端末１０である。また、停止監視処理の対象となる対応ミラーサーバは、本ミラーサーバ２０がサブサーバとして動作する場合においてメインサーバとして動作する他方のミラーサーバ２０である。
【００６２】
この停止監視対象となるクライアント端末１０及び対応ミラーサーバ２０は、当該本ミラーサーバ２０のクライアント情報テーブル２２を参照することにより特定できる。具体的には、本ミラーサーバ２０がサブサーバとして動作すべきクライアント端末１０は、クライアント情報テーブル２２において、サブサーバとして動作することを示す動作情報に対応した端末ＩＤのクライアント端末１０である。
【００６３】
また、本ミラーサーバ２０がサブサーバとして動作する場合においてメインサーバとして動作する対応ミラーサーバ２０は、本ミラーサーバ２０のクライアント情報テーブル２２において、当該本ミラーサーバ２０がサブサーバとして動作することを示す動作情報に対応した対応サーバＩＤの他方のミラーサーバ２０である。
【００６４】
停止監視部２７は、これらの停止監視処理の対象となるクライアント端末１０及び対応ミラーサーバ２０を監視することにより、当該クライアント端末１０及び対応ミラーサーバ２０の動作停止（電源断）を検出する。
【００６５】
なお、停止監視処理における具体的な監視方法としては、例えば通信路上でのエコー（TCP/IPでのICMP echo：ping等）に応答するかどうかを定間隔のタイマで見る方法が用いられてもよいし、例えば専用のプロトコルを用意しても構わない。また、故障でない運用上の停止の場合は例えばシャットダウン時に停止監視処理の対象となるクライアント端末１０及び対応ミラーサーバ２０から通知を受けることにより停止が検出される構成であっても構わない。
【００６６】
停止監視部２７は、監視対象のクライアント端末１０の動作停止が検出されたか否かによって、当該クライアント端末１０が稼動中であるか否かを判定する（ステップＳ３２）。なお、監視対象のクライアント端末１０が複数存在する場合には、全てのクライアント端末１０について判定処理を実行する。
【００６７】
監視対象のクライアント端末１０が稼動中でないと判定した場合（ステップＳ３２のＮＯ）、停止監視部２７は当該クライアント端末１０に対してメインサーバとして動作する対応ミラーサーバ２０からのコピー処理を実行する（ステップＳ３３）。  
一方、監視対象のクライアント端末１０が稼動中であると判定した場合（ステップＳ３２のＹＥＳ）、停止監視部２７は同様に、監視対象の対応ミラーサーバ２０が稼動中であるか否かを判定する（ステップＳ３４）。
【００６８】
対応ミラーサーバ２０が稼動中でないと判定した場合（ステップＳ３４のＮＯ）、停止監視部２７は本ミラーサーバ２０がサブサーバとして動作すべきクライアント端末１０からのコピー処理を実行する（ステップＳ３５）。一方、対応ミラーサーバ２０が稼動中であると判定した場合（ステップＳ３４のＹＥＳ）、処理は終了する。図６に示した処理は、例えば予め定められた時間毎に定期的に実行される。
【００６９】
次に、図７のフローチャートを参照して、メインサーバとして動作する対応ミラーサーバ２０からのコピー処理（図６に示すステップＳ３３の処理）の処理手順について説明する。  
この処理は、監視対象のクライアント端末（本ミラーサーバ２０がサブサーバとして動作すべきクライアント端末）１０が稼動中でないと判定された場合に実行される。
【００７０】
まず、停止監視部２７は、稼動中でないと判定されたクライアント端末１０のライト位置情報テーブル２６を参照する。停止監視部２７は、ライト位置情報を当該ライト位置情報テーブル２６から検索し、ライト位置情報（エントリ）があるか否かを判定する（ステップＳ４１）。ライト位置情報があると判定された場合（ステップＳ４１のＹＥＳ）、停止監視部２７は当該ライト位置情報を取得する。
【００７１】
次に、停止監視部２７は、取得されたライト位置情報に該当する書き込みデータ（当該ライト位置情報によって示される書き込み位置に書き込まれるデータ）を、対応ミラーサーバ（稼動中でないと判定されたクライアント端末１０に対してメインサーバとして動作する他方のミラーサーバ）２０に要求する。
【００７２】
対応ミラーサーバ２０は、本ミラーサーバ２０の停止監視部２７からの要求に基づいて、書き込みデータを当該対応ミラーサーバ２０のＨＤＤ２１から読み出し、当該本ミラーサーバ２０に送信する。これにより、停止監視部２７は、取得したライト位置情報によって示される書き込み位置に書き込まれる書き込みデータを対応ミラーサーバ２０から取得する（ステップＳ４２）。
【００７３】
停止監視部２７は、取得したライト位置情報によって示されるＨＤＤ２１の書き込み位置に、取得した書き込みデータを書き込む（ステップＳ４３）。停止監視部２７は、取得したライト位置情報を、稼動中でないと判定されたクライアント端末１０に対応するライト位置情報テーブル２６から削除する（ステップＳ４４）。ステップＳ４４の処理が実行されると、ステップＳ４１に戻って処理が繰り返される。なお、ステップＳ４１においてライト位置情報テーブル２６に保持されているライト位置情報がないと判定された場合、処理は終了する。
【００７４】
上記した処理が実行されることにより、稼動中でないと判定されたクライアント端末１０に対してサブサーバとして動作する本ミラーサーバ２０のＨＤＤ２１にも実データ（当該クライアント端末１０のＳＳＤ１１に格納されているデータ）が完全な状態で保持される。すなわち、この時点において、本ミラーサーバ（サブサーバ）２０及び対応ミラーサーバ（メインサーバ）２０の２つのＨＤＤ２１で、稼動中でないと判定されたクライアント端末１０のＳＳＤ１１に格納されているデータについて完全なミラーが形成される。これにより、例えば稼動中でないと判定されたクライアント端末１０が結果的に長時間停止した上に故障し、かつ、その間に本ミラーサーバ２０及び対応ミラーサーバ２０のうちの一方のＨＤＤ２１が故障するような状況下であっても、データを回復することが可能となる。
【００７５】
次に、図８のフローチャートを参照して、本ミラーサーバ２０がサブサーバとして動作すべきクライアント端末１０からのコピー処理（図６に示すステップＳ３５の処理）の処理手順について説明する。  
この処理は、監視対象の対応ミラーサーバ（本ミラーサーバ２０がサブサーバとして動作する場合のメインサーバとして動作するミラーサーバ）２０が稼動中でないと判定された場合に実行される。
【００７６】
まず、停止監視部２７は、本ミラーサーバ２０がサブサーバとして動作すべき全てのクライアント端末１０に対応するライト位置情報テーブル２６を参照する。停止監視部２７は、これらライト位置情報テーブル２６からライト位置情報を検索する。これにより、停止監視部２７はこれらライト位置情報テーブル２６にライト位置情報があるか否かを判定する（ステップＳ５１）。ライト位置情報があると判定された場合（ステップＳ５１のＹＥＳ）、停止監視部２７は当該ライト位置情報を取得する。
【００７７】
次に、停止監視部２７は、取得したライト位置情報に該当する書き込みデータを、当該ライト位置情報を取得したライト位置情報テーブル２６に対応するクライアント端末１０に要求する。停止監視部２７からの要求を受けたクライアント端末１０は、当該要求に基づいて、書き込みデータを当該クライアント端末１０のＳＳＤ１１から読み出し、本ミラーサーバ２０に送信する。
【００７８】
これにより、停止監視部２７は、取得されたライト位置情報によって示される書き込み位置に書き込まれる書き込みデータをクライアント端末１０から取得する（ステップＳ５２）。停止監視部２７は、取得したライト位置情報によって示されるＨＤＤ２１の書き込み位置に、取得した書き込みデータを書き込む（ステップＳ５３）。
【００７９】
停止監視部２７は、取得したライト位置情報を、当該ライト位置情報を保持しているライト位置情報テーブル２６から削除する（ステップＳ５４）。ステップＳ５４の処理が実行されると、ステップＳ５１に戻って処理が繰り返される。
【００８０】
一方、ステップＳ５１においてライト位置情報がないと判定された場合、停止監視部２７は本ミラーサーバ２０がサブサーバとして動作することを示す動作情報（及び対応ミラーサーバ２０を識別するための対応サーバＩＤ）に対応付けて、当該対応ミラーサーバ２０が停止中であることを示す稼動情報をクライアント情報テーブル２２に登録する（ステップＳ５５）。この処理により、クライアント情報テーブル２２に保持されている稼動情報が更新される。
【００８１】
上記した処理が実行されることにより、対応ミラーサーバ２０が稼動中でない場合には、本ミラーサーバ２０のＨＤＤ２１には当該本ミラーサーバ２０がサブサーバとして動作すべき全てのクライアント端末１０のＳＳＤ１１（に格納されているデータ）に対するミラーが形成される。また、稼動情報が更新されるため、対応ミラーサーバ（メインサーバ）２０が停止している間に、クライアント端末１０においてライト要求が発生した場合、本ミラーサーバ（サブサーバ）２０においてはＨＤＤ２１に実データ（書き込みデータ）が書き込まれる。これにより、運用を継続したまま、クライアント端末１０のＳＳＤ１１及び当該クライアント端末１０に対してサブサーバとして動作する本ミラーサーバ２０のＨＤＤ２１でミラー状態を継続するように動作することが可能となる。
【００８２】
また、このような動作により、対応ミラーサーバ（メインサーバ）２０が再び稼動を開始する前にクライアント端末１０が停止し、対応ミラーサーバ２０の再起動時にクライアント端末１０が停止したままの状態であっても、クライアント端末１０の稼動を待つことなく、本ミラーサーバ（サブサーバ）２０から対応ミラーサーバ２０にデータをコピーすることによって通常時のデータ状態に復帰することができる。
【００８３】
本実施形態においては、クライアント端末１０からライト要求が送信された場合、ミラーサーバ２０ではクライアント端末１０に対してミラーサーバ２０がメインサーバ、またはサブサーバとして動作するかが判定される。  
ミラーサーバ２０がメインサーバと判定された場合、ライト要求に応じてミラーサーバ２０のＨＤＤ２１に書き込みデータが書き込まれる。一方、ミラーサーバ２０がサブサーバと判定された場合、ライト要求に応じて書き込みデータを書き込むＨＤＤ２１における書き込み位置を示すライト位置情報がミラーサーバ２０のライト位置情報テーブル２６に保持される。
【００８４】
また、本実施形態においては、クライアント端末１０の停止が検出された場合、当該クライアント端末１０に対してサブサーバとして動作するミラーサーバ（本ミラーサーバ）２０において、ライト位置情報によって示される書き込み位置に書き込まれる書き込みデータが、対応ミラーサーバ（当該クライアント端末１０に対してメインサーバとして動作するミラーサーバ）２０から取得され、当該本ミラーサーバ２０のＨＤＤ２１に書き込まれる。
【００８５】
また、本実施形態においては、クライアント端末１０に対してメインサーバとして動作するミラーサーバ（対応ミラーサーバ）２０の停止が検出された場合、当該クライアント端末１０に対してサブサーバとして動作するミラーサーバ（本ミラーサーバ）２０において、ライト位置情報によって示される書き込み位置に書き込まれる書き込みデータが、当該クライアント端末（本ミラーサーバがサブサーバとして動作すべきクライアント端末）１０から取得され、当該本ミラーサーバ２０のＨＤＤ２１に書き込まれる。
【００８６】
つまり、本実施形態においては、本ミラーサーバ２０がサブサーバとして動作すべきクライアント端末１０または当該クライアント端末１０に対してメインサーバとして動作する対応ミラーサーバ２０が停止したことが検出された場合、当該本ミラーサーバ２０において全ての実際のデータをＨＤＤ２１に書き込むように動作する。すなわち、本ミラーサーバ２０においては、クライアント端末１０及び対応ミラーサーバ２０のうち停止が検出されていない側から書き込みデータが読み出され、当該本ミラーサーバ２０のＨＤＤ２１に書き込みデータが書き込まれる。
【００８７】
これにより、本実施形態においては、本ミラーサーバ２０がサブサーバとして動作すべきクライアント端末１０及び当該クライアント端末１０に対してメインサーバとして動作する対応ミラーサーバ２０のうちのいずれかが停止した場合であっても、停止していない側（当該クライアント端末１０または当該対応ミラーサーバ２０）と当該本ミラーサーバ２０とでミラーが形成される。
【００８８】
したがって、本実施形態においては、例えばクライアント端末１０が長時間停止し、その間に２つのミラーサーバ２０のいずれかが故障した場合であっても、故障していないミラーサーバ２０から直ぐにデータを回復することが可能となる。すなわち、クライアント端末１０が再び稼動するまで待つ必要がなく、しかも長時間停止またはハードウェア作業により当該クライアント端末１０のＳＳＤ１１が故障しているような状況であっても対応することができる。これにより、本実施形態においては、ミラーリングによる信頼性を向上させることが可能となる。
【００８９】
また、本実施形態においては、クライアント端末１０毎にメインサーバとして動作するミラーサーバ２０を分散している。また、本実施形態においては、ミラーサーバ２０におけるサブサーバとしての動作は当該ミラーサーバ２０におけるメインサーバとしての動作をほとんど妨げることないように制御されている。したがって、本実施形態においては、クライアント端末１０におけるミラーサーバ２０からの応答性は例えば一方のミラーサーバ２０が全てのクライアント端末１０に対してメインサーバとして動作するような場合と比較して格段に改善される。
【００９０】
なお、本実施形態においては、図５に示すステップＳ８において本ミラーサーバ２０の処理状況に基づいて書き込みデータを書き込むか否かが判定されるものとして説明したが、この判定処理は行われず、上記したように本ミラーサーバ２０がサブサーバとして動作すべきクライアント端末１０または当該クライアント端末１０に対してメインサーバとして動作するミラーサーバ（対応サーバ）２０の停止が検出された場合に限り、本ミラーサーバ２０のＨＤＤ２１に書き込みデータが書き込まれる構成であっても構わない。
【００９１】
また、本実施形態においては、ミラーサーバ２０が２つである場合について説明したが、ミラーサーバ２０を３つ以上用意し、各クライアント端末１０に対して３つ以上のミラーサーバ２０の中からメインサーバ及びサブサーバが１つずつ割り当てられる構成であっても構わない。この場合においては、あるクライアント端末１０に対してはメインサーバとしてもサブサーバとしても動作しないミラーサーバ２０のクライアント情報テーブル２２には、当該クライアント端末１０を識別するための端末ＩＤに対応付けて例えばメインサーバとしてもサブサーバとしても動作しないことを示す動作情報が保持される。
【００９２】
また、本実施形態においては、便宜的にミラーサーバ１つにつき物理ＨＤＤ２１を１台備えるものとして説明したが、１つのミラーサーバ２０が複数のＨＤＤを１つのボリュームとして扱うことも可能である。
【００９３】
また、各ミラーサーバ２０は独立した装置である必要はなく、例えば１つのサーバ装置の中に複数のミラーサーバ２０の機能が存在しても構わない。なお、物理的なＨＤＤ２１は、各ミラーサーバ２０において共有しない方が性能面からは望ましい。
【００９４】
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。  
【符号の説明】
【００９５】
１０…クライアント端末、１１…ＳＳＤ（小容量記憶装置）、１２…ＲＡＩＤコントローラ、２０…ミラーサーバ、２１…ＨＤＤ（大容量記憶装置）、２２…クライアント情報テーブル、２３…通信Ｉ／Ｆ、２４…Ｉ／Ｏ処理部、２５…物理ＨＤＤ制御部、２６…ライト位置情報テーブル、２７…停止監視部、２４１…メイン／サブ振り分け部、２４２…メイン機能部、２４３…サブ機能部。
【図１】
2010198441.tif 000003
【図２】
2010198441.tif 000004
【図３】
2010198441.tif 000005
【図４】
2010198441.tif 000006
【図５】
2010198441.tif 000007
【図６】
2010198441.tif 000008
【図７】
2010198441.tif 000009
【図８】
2010198441.tif 000010