(57)【要約】      （修正有）【課題】メインサイトからリモートサイトへのデータのコピーを行う場合に、更新データが矛盾なく反映されるディスクアレイシステムを提供する。【解決手段】ディスクアレイシステムにおいて、第１のディスクアレイ装置１７が、第１のキャッシュと、更新データを第１のキャッシュへ書き込む第１のＩ/Ｏ処理部１１と、キャッシュＩＤによるリンクを生成する第１の順序保証制御部１４と、を具備し、所定のタイミングで、更新データと、キャッシュＩＤによるリンクとを第２のディスクアレイ装置２７へ送信する。第２のディスクアレイ装置が、第２のキャッシュと、第１のディスクアレイ装置から更新データと、キャッシュＩＤによるリンクとを受け取り、更新データを第２のキャッシュへ書き込む第２のＩ/Ｏ処理部２１と、所定のタイミングで更新データを、更新データの受け取り順序に従って、ディスクへ書き込む第２の順序保証制御部２４と、を具備する。【選択図】図１
2020170253.tif 000002
【特許請求の範囲】
【請求項１】
第1のディスクアレイ装置と、第2のディスクアレイ装置とを備えるディスクアレイシステムであって、
前記第1のディスクアレイ装置が、
第1のキャッシュと、
外部から更新データを受け取り、前記更新データに対応するキャッシュIDを生成し、前記更新データを前記第1のキャッシュへ書き込む第1のI/O処理部と、
前記キャッシュIDを、前記更新データを受け付けた順にリンクさせてキャッシュIDによるリンクを生成する、第1の順序保証制御部と、を具備し、
所定のタイミングで、前記第1の順序保証制御部が、前記更新データと、前記キャッシュIDによるリンクとを前記第2のディスクアレイ装置へ送信し、
前記第2のディスクアレイ装置が、
第2のキャッシュと、
前記第1のディスクアレイ装置から前記更新データと、前記キャッシュIDによるリンクとを受け取り、前記キャッシュIDによるリンクを参照して前記更新データの受け取り順序に従って、前記更新データを前記第2のキャッシュへ書き込む、第2のI/O処理部と、
所定のタイミングで前記第2のキャッシュに格納された前記更新データを、前記キャッシュIDによるリンクを参照して前記更新データの受け取り順序に従って、ディスクへ書き込む、第2の順序保証制御部と、を具備する、
ディスクアレイシステム。
【請求項２】
前記第1の順序保証制御部は、前記キャッシュIDに対応する属性情報を生成し、前記更新データを前記第1のキャッシュへ格納するときに、前記更新データの属性情報を第1の属性に設定し、更に、前記更新データについて前記ディスクの同じ領域へ書き込まれる既存の更新データが前記第1のキャッシュに格納されている場合には、前記既存の更新データの属性情報を第2の属性に設定する、請求項1に記載のディスクアレイシステム。
【請求項３】
前記第1のI/O処理部は、前記更新データが、既存の更新データと前記ディスクの同じ領域に書き込まれる場合、前記既存の更新データが前記第1のキャッシュにあっても、前記既存の更新データが前記第2のディスクアレイ装置へ送信されるのを待たずに前記更新データを前記第1のキャッシュへ書き込む、請求項1または2に記載のディスクアレイシステム。
【請求項４】
前記第1のディスクアレイ装置から前記第2のディスクアレイ装置へ前記更新データを送信する場合に、前記更新データの属性情報も前記第2のディスクアレイ装置へ送信する、請求項2に記載のディスクアレイシステム。
【請求項５】
前記第2の順序保証制御部は、前記更新データの受け取り順序に従い、かつ、前記属性情報が第1の属性である更新データのみを前記ディスクへ書き込む、請求項2または4に記載のディスクアレイシステム。
【請求項６】
第1のディスクアレイ装置と、第2のディスクアレイ装置とを備えるディスクアレイシステムにおけるディスクアレイシステムの制御方法であって、
前記第1のディスクアレイ装置が、外部から更新データを受け取るステップと、
前記第1のディスクアレイ装置が、前記更新データに対応するキャッシュIDを生成し、前記更新データを第1のキャッシュへ書き込むステップと、
前記第1のディスクアレイ装置が、前記キャッシュIDを前記更新データを受け付けた順にリンクさせてキャッシュIDによるリンクを生成するステップと、
前記第1のディスクアレイ装置が、前記更新データと、前記キャッシュIDによるリンクとを前記第2のディスクアレイ装置へ送信するステップと、
前記第2のディスクアレイ装置が、前記第1のディスクアレイ装置から前記更新データと、前記キャッシュIDによるリンクとを受け取り、前記キャッシュIDによるリンクを参照して前記更新データの受け取り順序に従って、前記更新データを第2のキャッシュへ書き込むステップと、
前記第2のディスクアレイ装置が、所定のタイミングで前記第2のキャッシュに格納された前記更新データを、前記キャッシュIDによるリンクを参照して前記更新データの受け取り順序に従って、ディスクへ書き込むステップと、を具備する、
ディスクアレイシステムの制御方法。
【請求項７】
第1のディスクアレイ装置であって、
第1のキャッシュと、
外部から更新データを受け取り、前記更新データに対応するキャッシュIDを生成し、前記更新データを前記第1のキャッシュへ書き込む第1のI/O処理部と、
前記キャッシュIDを、前記更新データを受け付けた順にリンクさせてキャッシュIDによるリンクを生成する、第1の順序保証制御部と、を具備し、
所定のタイミングで、前記第1の順序保証制御部が、前記更新データと、前記キャッシュIDによるリンクとを第2のディスクアレイ装置へ送信して前記更新データの格納を要求する、
前記第1のディスクアレイ装置。
【請求項８】
前記第1の順序保証制御部は、前記キャッシュIDに対応する属性情報を生成し、前記更新データを前記第1のキャッシュへ格納するときに、前記更新データの属性情報を第1の属性に設定し、更に、前記更新データについてディスクの同じ領域へ書き込まれる既存の更新データが前記第1のキャッシュに格納されている場合には、前記既存の更新データの属性情報を第2の属性に設定する、請求項7に記載の第1のディスクアレイ装置。
【請求項９】
前記第1のI/O処理部は、前記更新データが、既存の更新データとディスクの同じ領域に書き込まれる場合、前記既存の更新データが前記第1のキャッシュにあっても、前記既存の更新データが前記第2のディスクアレイ装置へ送信されるのを待たずに前記更新データを前記第1のキャッシュへ書き込む、請求項7または8に記載の第1のディスクアレイ装置。
【請求項１０】
前記第1のディスクアレイ装置から前記第2のディスクアレイ装置へ前記更新データを送信する場合に、前記更新データの属性情報も前記第2のディスクアレイ装置へ送信する、請求項9に記載の第1のディスクアレイ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
後述の実施の形態は、例えば、ディスクアレイシステム、ディスクアレイシステムの制御方法、および、ディスクアレイ装置に関する。
【背景技術】
【０００２】
一般に、複数のサイトを含むコンピュータシステムにおいては、メインサイト上のデータをリモートサイトにコピーすることがあり得る。メインサイトへのデータにおける処理負荷が高い場合に、リモートサイトを使って負荷分散を図ることもあり得る。あるいは、メインサイトで何らかのトラブルが発生した場合に、リモートサイトのデータを使って業務を継続することもあり得る。
【０００３】
例えば、特許文献１には、正サイトでの災害発生時に副サイトで業務を継続するなどの開示が見られる（段落0002など）。また、特許文献１によれば、ディスクアレイを利用することもあり得る（段落0026など）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１７０４８５号公報
【特許文献２】特開２０１２−０２２６４５号公報
【特許文献３】特開２０１２−００３６２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
以下は例示である。このため、以下は本願発明の範囲を限定するものではない。
【０００６】
一般に、複数のサイトを有するコンピュータシステムにおいて更新データが発生した場合に、更新データが矛盾なく反映されることが望ましい。例えば、更新データD1、D2、D3が時系列にこの順番で発生した場合、更新データD1、D2、D3がこの順に反映されることが好ましい。
【０００７】
一般に、例えば、複数のサイトを含むコンピュータシステムにおいて、メインサイトからリモートサイトへのデータのコピーを行う場合に、上記の例に従うなら、更新データD1、D2、D3の順にコピーすることが好ましい。例えば、更新データの中にディスク上の同じ領域に対するものが複数ある場合、更新データの順通りにコピーが行われないとデータに誤りが発生することとなり得る。
【０００８】
そこで、本発明は、複数のサイトを有するコンピュータシステムにおいて更新データが発生した場合に、更新データが矛盾なく反映することを、目的の一つとし得る。しかし、この点は、本発明の範囲を限定するものではない。
【課題を解決するための手段】
【０００９】
以下の記載は例示であり、本発明の範囲を限定するものではない。
【００１０】
後述の実施の形態においては、例えば、ディスクアレイシステムが開示されている。このディスクアレイシステムは、例えば、第1のディスクアレイ装置と、第2のディスクアレイ装置とを備えてもよい。第1のディスクアレイ装置は、第1のキャッシュと、外部から更新データを受け取り、更新データに対応するキャッシュIDを生成し、更新データを第1のキャッシュへ書き込む第1のI/O処理部と、キャッシュIDを、更新データを受け付けた順にリンクさせてキャッシュIDによるリンクを生成する第1の順序保証制御部と、を具備してもよい。所定のタイミングで、第1の順序保証制御部が、更新データと、キャッシュIDによるリンクとを第2のディスクアレイ装置へ送信してもよい。第2のディスクアレイ装置は、第2のキャッシュと、第1のディスクアレイ装置から更新データとキャッシュIDによるリンクとを受け取り、キャッシュIDによるリンクを参照して更新データの受け取り順序に従って、更新データを第2のキャッシュへ書き込む第2のI/O処理部と、所定のタイミングで第2のキャッシュに格納された更新データを、キャッシュIDによるリンクを参照して更新データの受け取り順序に従ってディスクへ書き込む第2の順序保証制御部と、を具備してもよい。
【００１１】
後述の実施の形態においては、例えば、ディスクアレイシステムの制御方法が開示されている。このディスクアレイシステムの制御方法は、例えば、第1のディスクアレイ装置と、第2のディスクアレイ装置とを備えるディスクアレイシステムにおけるディスクアレイシステムの制御方法であって、第1のディスクアレイ装置が、外部から更新データを受け取るステップと、第1のディスクアレイ装置が、更新データに対応するキャッシュIDを生成し、更新データを第1のキャッシュへ書き込むステップと、第1のディスクアレイ装置が、キャッシュIDを更新データを受け付けた順にリンクさせてキャッシュIDによるリンクを生成するステップと、第1のディスクアレイ装置が、更新データと、キャッシュIDによるリンクとを第2のディスクアレイ装置へ送信するステップと、第2のディスクアレイ装置が、第1のディスクアレイ装置から更新データと、キャッシュIDによるリンクとを受け取り、キャッシュIDによるリンクを参照して更新データの受け取り順序に従って、第2のキャッシュへ書き込むステップと、第2のディスクアレイ装置が、所定のタイミングで第2のキャッシュに格納された更新データを、キャッシュIDによるリンクを参照して更新データの受け取り順序に従って、ディスクへ書き込むステップと、を具備してもよい。
【００１２】
後述の実施の形態においては、例えば、第1のディスクアレイ装置が開示されている。この第1のディスクアレイ装置は、例えば、第1のキャッシュと、外部から更新データを受け取り、更新データに対応するキャッシュIDを生成し、更新データを第1のキャッシュへ書き込む第1のI/O処理部と、キャッシュIDを、更新データを受け付けた順にリンクさせてキャッシュIDによるリンクを生成する、第1の順序保証制御部と、を具備し、所定のタイミングで、第1の順序保証制御部が、更新データと、キャッシュIDによるリンクとを第2のディスクアレイ装置へ送信して更新データの格納を要求する、第1のディスクアレイ装置であってもよい。
【発明の効果】
【００１３】
後述の実施の形態によれば、例えば、複数のサイトを有するコンピュータシステムにおいて、更新データが発生した場合に、更新データが矛盾なく反映され得る。例えば、更新データD1、D2、D3が時系列にこの順番で発生した場合、更新データD1、D2、D3がこの順に反映され得る。ただし、これは、本願発明の範囲を限定するものではない。
【図面の簡単な説明】
【００１４】
【図１】本願の実施形態におけるディスクアレイシステムの構成を表す図面である。
【図２】本願の本実施形態におけるディスクアレイシステムの処理の流れを示す図面である。
【図３】本願の実施形態におけるキャッシュIDによるリンクを表す図面である。
【図４】本願の実施形態におけるキャッシュIDによるリンクを表す図面である。
【図５】本願の実施形態におけるディスクアレイ装置の構成を表す図面である。
【図６】本願の実施形態におけるディスクアレイ装置の処理の流れを表す図面である。
【発明を実施するための形態】
【００１５】
以下、図面を参照し、いくつかの実施形態について説明する。なお、以下の開示は例である。本発明の範囲は、以下の開示のみに限定して解釈されるべきではない。
【００１６】
第1の実施形態
図1は、第1の実施形態におけるディスクアレイシステムの構成を表す図面である。図1を参照して本実施形態におけるディスクアレイシステムの構成を説明する。
【００１７】
図1において、この実施形態におけるディスクアレイシステムは、メインサイト1と、リモートサイト2とを備える。メインサイト1と、リモートサイト2とは、遠隔回線３０で接続され、相互にデータの送受信を行い得る。メインサイト1は、例えば、データをリモートサイト2へ送信し、リモートサイト2は、メインサイト1からデータを受信して格納する。即ち、メインサイト1のデータがリモートサイト2へコピーされ得る。
【００１８】
遠隔回線３０は、メインサイト1と、リモートサイト2とを接続するネットワークである。
【００１９】
メインサイト１は、データ更新ホスト10と、ディスクアレイ装置17とを備える。データ更新ホスト10と、ディスクアレイ装置17は、それぞれ独立した装置であり、ネットワークを介して接続されていてもよい。あるいは、データ更新ホスト10と、ディスクアレイ装置17は、同一の装置であってもよい。
【００２０】
ディスクアレイ装置17は、I/O処理部11と、キャッシュ12と、ディスク16と、ディスク制御部15とを備える。また、ディスクアレイ装置17は、例えばメモリなど、図示しない記憶部を有し得る。
【００２１】
データ更新ホスト10は、更新データと書き込み先の情報を含む書き込み要求とを送信する。更新データは、例えば、ユーザによってデータ更新ホスト10に入力されるデータであってもよい。あるいは、更新データは、データ更新ホスト10が外部の装置や媒体から受け取るデータであってもよい。書き込み先の情報は、例えば、更新データの書き込み先として、ディスク16に含まれるいずれかのディスクと、そのディスク中の書き込み位置もしくはアドレスと、を示す情報であってもよい。
【００２２】
I/O処理部11は、更新データと、書き込み先の情報とをデータ更新ホスト10から入力（あるいは受信）する。I/O処理部11は、キャッシュ12に更新データを出力する。キャッシュ12は、更新データを一時格納するための記憶手段である。
【００２３】
ディスク16は、更新データを記憶するための記憶手段である。ディスク16は、単一のディスクであってもよい。ディスク16は、複数のディスクから構成されてもよい。あるいは、ディスク16は、ハードディスク、SSD（solid state drive、ソリッド・ステート・ドライブ）などであってもよい。更新データは、ディスク16に既に格納されているデータを更新するためのデータを含んでもよい。更新データは、ディスク16に新たに追加されるデータを含んでもよい。
【００２４】
ディスク制御部15は、データをディスク16に書き込むための手段である。ディスク制御部15は、例えば、一定時間（例えば、5秒、60秒、300秒）ごとにキャッシュ12内にディスク16への書き込みが行われていない更新データが存在するか否かをチェックし得る。キャッシュ12内にディスク16への書き込みが行われていない更新データが存在する場合、ディスク制御部15は、キャッシュ12から書き込みが行われていない更新データを読み出し、読み出した更新データをディスク16に書き込んでもよい。
【００２５】
順序保証制御部14は、キャッシュ12上の更新データの順番を保証する手段である。送信部13は、リモートサイト2へデータを送信する手段である。
【００２６】
リモートサイト2は、例えば、メインサイト1からデータを受信して格納する。リモートサイト2は、ディスクアレイ装置27を備える。ディスクアレイ装置17とディスクアレイ装置27は遠隔回線30を介して接続されている。ディスクアレイ装置27は、受信部23と、キャッシュ22と、I/O処理部21と、順序保証制御部24と、ディスク26と、ディスク制御部25とを備える。また、ディスクアレイ装置27は、例えばメモリなど、図示しない記憶部を有してもよい。
【００２７】
受信部23は、遠隔回線30を介して、メインサイト1からデータを受信して出力する。I/O処理部21は、受信部23が出力したデータを入力する。I/O処理部21は、入力したデータをキャッシュ22に格納する。ディスク制御部25は、キャッシュ22に格納されたデータを、ディスク26に書き込む。順序保証制御部24は、ディスク26に書き込まれるデータの書き込みの順序の保証を行う。
【００２８】
図2は、本実施形態におけるディスクアレイシステムの処理の流れを示す図面である。図2を参照してディスクアレイシステムの処理の流れを説明する。ここでは、データ更新ホスト10が3個の更新データをディスクアレイ装置17へ送信する例を示す。
【００２９】
最初に、データ更新ホスト10は、更新データD1を送信する。ディスクアレイ装置17のI/O処理部11は、データ更新ホスト10から更新データD1を受信する（図2の丸付き数字1）。
【００３０】
データ更新ホスト10は、更新データD1を送信する際に、更新データD1を格納するディスク16上の領域に関する書き込み先の情報を含む、書き込み要求を送信してもよい。書き込み先の情報は、例えば、ファイルのパスやファイル名であってもよい。あるいは、書き込み先の情報は、SCSI（small computer system interface、スカジー）コマンドなどであってもよい。I/O処理部11は、更新データD1と、書き込み要求とを受信し得る。
【００３１】
I/O処理部11は、更新データD1をキャッシュ12へ格納する（図2の丸付き数字1）。また、I/O処理部11は、更新データD1に対応するキャッシュIDを生成する。ここでは、更新データD1に対応するキャッシュIDを、理解が容易なものとなるよう、D1とする。キャッシュIDは、例えば、更新データD1の書き込み先の情報からハッシュ演算などにより計算されてもよい。また、キャッシュIDは、更新データD1のキャッシュ12における格納位置もしくはアドレスを含むものとしてもよい。あるいは、キャッシュIDは、更新データD1のキャッシュ12における格納位置もしくはアドレスと、乱数との組み合わせを含んでもよい。I/O処理部11は、更新データD1のキャッシュ12中の格納位置もしくはアドレスを、ハッシュ演算により計算してもよい。また、I/O処理部11は、更新データD1のキャッシュ12中の格納位置もしくはアドレスを、複数のハッシュ演算により計算し衝突を回避してもよい。あるいは、更新データD1のキャッシュ12における格納位置を乱数を用いてランダムに割り当て、キャッシュIDと、キャッシュ12における格納位置とを必ずしも関連しないものとして決定してもよい。
【００３２】
I/O処理部11は、書き込み先の情報を参照し、更新データD1を格納するディスクやアドレスを判断し得る。更新データD1を格納するディスクやアドレスは、キャッシュID（および必要に応じてキャッシュ12における更新データD1の格納位置）と対応付けて記憶部に記憶され、後続の処理で参照され得る。I/O処理部11は、書き込み先の情報も、キャッシュIDと対応付けて記憶部に格納し得る。
【００３３】
I/O処理部11は、キャッシュID（D1）を順序保証制御部14へ出力する。順序保証制御部14は、キャッシュID（D1）を入力する。図３は、キャッシュIDによるリンクを表す。順序保証制御部14は、キャッシュIDをI/O処理部11から入力し、図３の丸付き数字１のようなキャッシュIDによるリンクを作成する（図2の丸付き数字2）。図３の丸付き数字１では、キャッシュIDによるリンクは、３個の要素100、要素200、要素300を含んでいる。要素100は、キャッシュID （D1）を含む。要素200と要素300は、後続の処理で生成され、追加されるので、この段階では要素100のみが存在する。要素100（および要素200と要素300）は、記憶部上に作成されるもので、更新データの入力順にリンクされている。この例は一方向リンクの例であるが、例えば、双方向のリンクなど種々の形式であってもよい。キャッシュIDによるリンクは、例えば、記憶部に格納されてもよい。要素100は、次のリンク先を示す情報を有していてもよい。次のリンク先を示す情報は、この段階では０（リンクの終端を表す）などであり得る。次のリンク先を示す情報は、後続の更新データが追加されると、例えば、要素200の記憶部上のアドレスに更新してもよい。同様に、図3における要素200や要素300も同様で、終端においては、次のリンク先を示す情報は、例えば、０などのリンクの終端を表す所定の値であり得る。
【００３４】
順序保証制御部14は、キャッシュIDをI/O処理部11から入力したときに、キャッシュIDに対応する更新データの状態を表す状態情報を、記憶部に格納してもよい。例えば、順序保証制御部14は、キャッシュID（D1）をI/O処理部11から入力したときに、キャッシュID（D1）に対応する更新データ（更新データD1）の状態として「未送信」を表す状態情報を、キャッシュID（D1）と対応付けて記憶部に格納してもよい。「未送信」は、対応する更新データがリモートサイト2へ送信されていないことを表す。「未送信」を表す状態情報は、例えば、要素100中に2バイトの領域をあらかじめ設けておき、この領域に所定の値、例えば0を設定してもよい。あるいは、状態情報は、キャッシュIDによるリンク（要素100など）とは別に、記憶部中にテーブルを作成し、これに格納されてもよい。
【００３５】
また、I/O処理部11は、キャッシュID（D1）を順序保証制御部14へ出力した後に、データ更新ホスト10へ、応答信号を送信する。応答信号は、例えば、更新データD1をキャッシュ12へ格納することが成功した旨を表してもよく（例えば、0）、あるいは、キャッシュ12の領域不足などにより失敗した旨を表してもよい（例えば、-1）。応答信号は、例えば、単純に更新データD1を受信した旨を表すものでもよい（例えば、1）。データ更新ホスト10は、I/O処理部11から応答信号を受信する。データ更新ホスト10は、応答信号に応じた処理を行ってもよい。例えば、データ更新ホスト10は、データ格納成功などのメッセージを図示しない表示部に表示してもよい。例えば、データ更新ホスト10は、再度更新データD1の格納を試みてもよい。
【００３６】
上記に引き続き、データ更新ホスト10は、更新データD2を送信する（図2の丸付き数字3）場合を想定する。I/O処理部11が、キャッシュIDを順序保証制御部14へ出力するまでの処理は、上記と同様である。更新データD2に対応するキャッシュIDをD2とする。
【００３７】
I/O処理部11は、キャッシュID（D2）を順序保証制御部14へ出力する。順序保証制御部14は、キャッシュID（D2）を入力する。順序保証制御部14は、図３の丸付き数字１のようなキャッシュIDによるリンクを更新する（図2の丸付き数字4）。図３の丸付き数字１では、キャッシュIDによるリンクは、３個の要素100、要素200、要素300を含んでいる。要素200は、キャッシュID （D2）を含む。要素300は、後続の処理で生成され、追加されるので存在せず、この段階では要素100と200が存在する。要素100および要素200（と要素300）は、記憶部上に作成されるもので、更新データの入力順にリンクされる。この例は一方向リンクの例であるが、例えば、双方向のリンクなど種々の形式であってもよい。キャッシュIDによるリンクは、例えば、記憶部に格納されてもよい。要素100（、200、および300）は、次のリンク先を示す情報を有していてもよい。次のリンク先を示す情報は、要素200のアドレスであり得る。要素200における次のリンク先を示す情報は、この段階では終端を表す、例えば0であってもよい。後続の更新データ（D3）が追加されると、例えば、要素200における次のリンク先を示す情報は、要素300の記憶部上のアドレスに更新されてもよい。
【００３８】
順序保証制御部14は、キャッシュID（D2）に対応する更新データ（更新データD2）の状態として「未送信」を表す状態情報を、キャッシュID（D2）と対応付けて記憶部に格納してもよい。
【００３９】
また、I/O処理部11は、キャッシュID（D2）を順序保証制御部14へ出力した後に、データ更新ホスト10へ、応答信号を送信する。この処理は更新データD1に関する上記の処理と同様である。
【００４０】
上記に引き続き、データ更新ホスト10は、更新データD3を送信する（図2の丸付き数字5）場合を想定する。I/O処理部11が、キャッシュIDを順序保証制御部14へ出力するまでの処理は、上記と同様である。更新データD3に対応するキャッシュIDをD3とする。
【００４１】
順序保証制御部14は、キャッシュID（D3）を入力する。順序保証制御部14は、図３の丸付き数字１のようにキャッシュIDによるリンクを更新する（図2の丸付き数字7）。図3の丸付き数字1では、キャッシュIDによるリンクは、３個の要素100、要素200、要素300を含んでいる。要素300は、キャッシュID （D3）を含む。要素100、要素200および要素300は、記憶部上に作成されるもので、更新データの入力順にリンクされている。この例は一方向リンクの例であるが、例えば、双方向のリンクなど種々の形式であってもよい。要素200は、次のリンク先を示す情報を有していてもよい。次のリンク先を示す情報は、要素300のアドレスであり得る。要素300における次のリンク先を示す情報は、この段階では終端を表す、例えば0であってもよい。後続の更新データが追加されると、要素300における次のリンク先を示す情報は、例えば、更なる要素の記憶部上のアドレスに更新されてもよい。
【００４２】
順序保証制御部14は、キャッシュID（D3）に対応する更新データ（更新データD3）の状態として「未送信」を表す状態情報を、キャッシュID（D3）と対応付けて記憶部に格納してもよい。
【００４３】
また、I/O処理部11は、キャッシュID（D3）を順序保証制御部14へ出力した後に、データ更新ホスト10へ、応答信号を送信する。この処理は更新データD1に関する上記の処理と同様である。
【００４４】
I/O処理部11は、更新データのキャッシュ12への格納の前、あるいは後に、キャッシュ12の空き領域の大きさをチェックしてもよく、更に、I/O処理部11は、キャッシュ12の空き領域の大きさが所定の閾値より小さい場合に、順序保証制御部14にデータ送信要求を出力してもよい。この閾値は、例えば、キャッシュ12の全容量の20％であってもよい。あるいは、I/O処理部11は、更新データをキャッシュ12への格納した後、所定の時間を経過した場合に、順序保証制御部14にデータ送信要求を出力してもよい。この所定の時間は、例えば、10秒であってもよい。
【００４５】
順序保証制御部14は、I/O処理部11からデータ送信要求を入力し、キャッシュ12に格納された更新データを読み出す。順序保証制御部14は、更新データと、記憶部に格納されたキャッシュIDによるリンク（図3の丸付き数字1）と、を送信部13へ出力する（図2の丸付き数字8）。
【００４６】
ここで、順序保証制御部14は、例えば、更新データD1乃至D3を、図３の丸付き数字１のキャッシュIDによるリンクを参照して、更新データD1、更新データD2、更新データD3の順につなげてひとまとまりのデータを生成し、送信部13へ出力してもよい。また、順序保証制御部14は、キャッシュIDによるリンクを、D1、D2、D3の順番を維持するように、送信部13へ出力してもよい。例えば、順序保証制御部14は、要素100、要素200、および、要素300を、この順につなげてひとまとまりのデータを生成し、送信部13へ出力してもよい（図2の丸付き数字8）。送信部13は、順序保証制御部14から更新データのひとまとまりのデータと、キャッシュIDによるリンクのひとまとまりのデータと、を入力し、それらを遠隔回線30を介してリモートサイト2へ送信して格納を要求する（図2の丸付き数字9）。
【００４７】
あるいは、順序保証制御部14は、例えば、更新データD1乃至D3を、図３の丸付き数字１のキャッシュIDによるリンクを参照して、更新データD1、更新データD2、更新データD3の順に送信部13へ出力してもよい。また、順序保証制御部14は、キャッシュIDによるリンクを、D1、D2、D3の順番を維持しながら、送信部13へ出力してもよい。例えば、順序保証制御部14は、要素100、要素200、および、要素300を、この順に従って送信部13へ出力してもよい（図2の丸付き数字8）。送信部13は、順序保証制御部14から更新データと、キャッシュIDによるリンクと、を入力し、入力した順番の通りに、それらを遠隔回線30を介してリモートサイト2へ送信する（図2の丸付き数字9）。順序保証制御部14は、更新データD1乃至D3に対応する格納先の情報を記憶部から読み出し、これらも送信部13を介してリモートサイト2へ送信し得る。
【００４８】
リモートサイト2の受信部23は、メインサイト1の送信部13から、更新データD1、更新データD2、更新データD3の順につなげて生成されたひとまとまりのデータと、要素100、要素200、および、要素300の順につなげて生成されたひとまとまりのデータと、更新データD1乃至D3に対応する格納先の情報と、を受信してもよい。受信部23は、それらを、I/O処理部21へ出力する。
【００４９】
あるいは、リモートサイト2の受信部23は、更新データを、更新データD1、更新データD2、更新データD3の順に受信し、また、キャッシュIDによるリンクを、要素100、要素200、および、要素300の順に受信し、更新データD1乃至D3に対応する格納先の情報を受信してもよい。受信部23は、それらを、I/O処理部21へ出力する。
【００５０】
I/O処理部21は、受信部23が出力したデータを入力する。I/O処理部21は、更新データD1、更新データD2、更新データD3の順につなげて生成されたひとまとまりのデータを入力した場合には、更新データD1、更新データD2、更新データD3を順番を維持しながら復元する。I/O処理部21は、要素100、要素200、および、要素300の順につなげて生成されたひとまとまりのデータを入力した場合には、要素100、要素200、および、要素300を順番を維持しながら復元する。I/O処理部21は、復元された更新データD1、更新データD2、および更新データD3と、要素100、要素200、および、要素300を、リモートサイト2の図示しないメモリなどの記憶部上に保持し得る。I/O処理部21は、記憶部上の更新データD1、更新データD2、更新データD3を、キャッシュ22へ格納する。I/O処理部21は、更新データD1、更新データD2、および更新データD3のキャッシュ22における格納位置を、対応する要素100、要素200、および、要素300中に含めることとしてもよい。I/O処理部21は、要素100、要素200、および、要素300を、これらの順序を維持しつつ、順序保証制御部24へ出力する（図2の丸付き数字9）。I/O処理部21は、更新データD1乃至D3に対応する格納先の情報を記憶部に格納する。
【００５１】
順序保証制御部24は、要素100、要素200、および、要素300を、これら順序を維持しつつ、I/O処理部21から入力する（図2の丸付き数字9）。順序保証制御部24は、要素100、要素200、および、要素300のリンク関係を復元する。要素100は、次のリンク先を示す情報を有していてもよい。次のリンク先を示す情報は、例えば、要素200の記憶部上のアドレスであり得る。要素200は、次のリンク先を示す情報を有していてもよい。次のリンク先を示す情報は、例えば、記憶部上の要素300のアドレスであり得る。要素300は、次のリンク先を示す情報を有していてもよい。要素300の次のリンク先を示す情報は、例えば、０などのリンクの終端を表す所定の値であり得る。
【００５２】
順序保証制御部24は、要素100乃至300をI/O処理部21から入力したときに、それらに対応する更新データの状態を表す状態情報を、記憶部に格納してもよい。例えば、順序保証制御部24は、要素100をI/O処理部11から入力したときに、要素100に対応する更新データ（更新データD1）の状態として「受信済」を表す状態情報を、記憶部に格納してもよい。この状態情報は、例えば、図3の丸付き数字1における「未送信」の部分が「受信済」で置き換えられた状態の情報でありえる。「受信済」は、対応する更新データのメインサイト1からの受信が完了したことを表す。「受信済」を表す状態情報は、例えば、要素100中に2バイトの領域をあらかじめ設けておき、この領域に所定の値、例えば１を格納してもよい。あるいは、状態情報は、キャッシュIDによるリンクとは別に、記憶部中にテーブルを作成し、これに格納されてもよい。
【００５３】
順序保証制御部24は、I/O処理部21へ、格納完了通知を出力する。I/O処理部21は、順序保証制御部24から格納完了通知を入力する。I/O処理部21は、受信部23へ、格納完了通知を送信する。受信部23は、I/O処理部21から格納完了通知を受信する。受信部23は、メインサイト1の送信部13へ完了レスポンスを送信する（図2の丸付き数字11）。
【００５４】
送信部13は、リモートサイト2の受信部23から完了レスポンスを受信する。送信部13は、順序保証制御部14へ送信済みデータ情報を出力する。送信済みデータ情報は、例えば、送信部13がリモートサイト2へ送信した要素100乃至300、もしくはその一部であるキャッシュID（D1乃至D3）であってもよい。
【００５５】
順序保証制御部14は、送信部13から、送信済みデータ情報を入力する（図2の丸付き数字12）。順序保証制御部14は、送信済みデータ情報を参照し、記憶部中の要素100乃至300を見つけ出す。順序保証制御部14は、記憶部中の要素100乃至300の状態情報を、「送信済」へ変更する。図3の丸付き数字2はこの更新処理を表しており、要素100と200の状態情報がすでに「送信済」へ変更されており、要素300の状態情報がこれから「送信済」へ変更されるところである（もしくは、更新データD1と更新データD2のみがリモートサイト2へ送信され、更新データD3が送信されていない状態を表し得る）。
【００５６】
上記の処理により、いずれの更新データがリモートサイト2へ送信されたのか、明らかとなり得る。また、同じ更新データを二重に送信するといった送信処理の誤りを抑止可能となり得る。また、更新データを、入力された順にリモートサイトへ送信することができ得る。このため、更新データの送信順序が前後することを抑止し得る。よって、リモートサイトにおける更新データの矛盾の発生を抑止し得る。
【００５７】
I/O処理部21は、更新データのキャッシュ22への格納の前、あるいは後に、キャッシュ22の空き領域の大きさをチェックしてもよく、更に、I/O処理部11は、キャッシュ22の空き領域の大きさが所定の閾値より小さい場合に、順序保証制御部24にデータ書き込み要求を出力してもよい。この閾値は、例えば、キャッシュ22の全容量の20％であってもよい。順序保証制御部24は、I/O処理部11からデータ書き込み要求を入力し、記憶部中のキャッシュIDによるリンクと状態情報とを参照し、状態情報が「受信済」であるものについて、キャッシュ22に格納された更新データをキャッシュIDによるリンクの順に従って、I/O処理部11を介して読み出す。順序保証制御部24は、キャッシュIDによるリンクの順に従って、更新データをディスク制御部25へ出力し、また、キャッシュIDを含むディスク26への書き込み要求を出力する。ディスク制御部25は、順序保証制御部24から書き込み要求と更新データとを入力し、記憶部を参照してキャッシュIDに対応する格納先を読み出し、格納先に基づいてディスク26へ更新データを書き込む（もしくは、該当する場合には、既存のデータを更新データで上書きする）。ディスク制御部25は、書き込みが成功した場合には、書き込み成功応答を順序保証制御部24へ出力する。順序保証制御部24は、書き込み成功応答を入力し、書き込みが成功した更新データに対応するキャッシュIDによるリンク中の要素を、取り外す、解放する、もしくは、空きの要素である旨の、例えば、「空き」との情報を状態情報へ書き込む。順序保証制御部24は、I/O処理部11を介して、書き込みが成功した更新データのキャッシュ22中の領域を解放する。更に、順序保証制御部24は、記憶部中のキャッシュIDによるリンクを参照し、ディスク26への書き込みが行われていない更新データ（例えば、状態情報が「受信済」）がキャッシュ22中に存在する場合には、キャッシュIDによるリンクの順に従って更に読み出す。以後、ディスク26への書き込みが行われていない更新データ（例えば、状態情報が「受信済」）がキャッシュ22中に存在する場合には、上述のディスク26への書き込み処理を繰り返す。
【００５８】
また、ディスク制御部25は、所定の時間間隔で、順序保証制御部24にデータチェック要求を出力してもよい。この所定の時間は、例えば、10秒であってもよい。順序保証制御部24は、ディスク制御部25からデータチェック要求を入力し、記憶部中のキャッシュIDによるリンクと状態情報とを参照し、状態情報が「受信済」であるものについて、キャッシュ22に格納された更新データをキャッシュIDによるリンクの順に従って、I/O処理部11を介して読み出す。順序保証制御部24は、キャッシュIDによるリンクの順に従って、更新データをディスク制御部25へ出力し、また、キャッシュIDを含むディスク26への書き込み要求を出力する。ディスク制御部25は、順序保証制御部24から書き込み要求と更新データとを入力し、記憶部を参照してキャッシュIDに対応する格納先を読み出し、格納先に基づいてディスク26へ更新データを書き込む（もしくは、該当する場合には、既存のデータを更新データで上書きする）。ディスク制御部25は、書き込みが成功した場合には、書き込み成功応答を順序保証制御部24へ出力する。順序保証制御部24は、書き込み成功応答を入力し、書き込みが成功した更新データに対応するキャッシュIDによるリンク中の要素を、取り外す、解放する、もしくは、空きの要素である旨の、例えば、「空き」との情報を状態情報へ書き込む。順序保証制御部24は、I/O処理部11を介して、書き込みが成功した更新データのキャッシュ22中の領域を解放する。更に、順序保証制御部24は、記憶部中のキャッシュIDによるリンクを参照し、ディスク26への書き込みが行われていない更新データ（例えば、状態情報が「受信済」）がキャッシュ22中に存在する場合には、キャッシュIDによるリンクの順に従って更に読み出す。以後、ディスク26への書き込みが行われていない更新データ（例えば、状態情報が「受信済」）がキャッシュ22中に存在する場合には、上述のディスク26への書き込み処理を繰り返す。
【００５９】
メインサイト1においても、キャッシュ12の更新データをディスク16へ格納してもよい。例えば、ディスク制御部15は、所定の時間間隔で、順序保証制御部14にデータチェック要求を出力してもよい。この所定の時間は、例えば、10秒であってもよい。順序保証制御部14は、ディスク制御部15からデータチェック要求を入力し、記憶部中のキャッシュIDによるリンクと状態情報を参照し、キャッシュ12中に状態情報が「送信済」である、すなわち、リモートサイト2への送信が完了し、かつ、ディスク16への書き込みがまだ行われていない状態の更新データが存在するか否かをチェックする。順序保証制御部14は、キャッシュ12中に、リモートサイト2への送信が完了し、かつ、ディスク16への書き込みがまだ行われていない更新データが存在すると判断した場合（例えば、状態情報が「送信済」）には、記憶部中のキャッシュIDによるリンクと状態情報を参照し、キャッシュ12に格納された更新データを、キャッシュIDによるリンクの順に従って、I/O処理部11を介して読み出す。順序保証制御部24は、キャッシュIDによるリンクの順に従って、更新データをディスク制御部15へ出力し、また、ディスク16への書き込みを要求する書き込み要求を、更新データと対応するキャッシュIDを含めて出力する。ディスク制御部15は、順序保証制御部14から書き込み要求と更新データとを入力し、記憶部からキャッシュIDに対応する書き込み先の情報を参照し、書き込み先の情報に基づいてディスク16へ更新データを書き込む（もしくは、該当する場合には、既存のデータを更新データで上書きする）。ディスク制御部15は、書き込みが成功した場合には、書き込み成功通知を順序保証制御部14へ出力する。順序保証制御部14は、書き込み成功通知を入力し、書き込みが成功した更新データに対応するキャッシュIDによるリンク中の要素を、取り外す、解放する、もしくは、空きの要素である旨の、例えば、「空き」との情報を状態情報へ書き込む。図３の丸付き数字3では、要素D1に対応する状態情報が空白となっており、更新データD1のディスク16への書き込みが完了した、すなわち、「空き」の状態であることを示している。順序保証制御部14は、I/O処理部11を介して、書き込みが成功した更新データのキャッシュ12中の領域を解放し得る。更に、順序保証制御部14は、記憶部中のキャッシュIDによるリンクを参照し、ディスク16への書き込みが行われていない更新データ（例えば、状態情報が「送信済」）がキャッシュ12中に存在する場合には、キャッシュIDによるリンクの順に従って更に読み出す。以後、ディスク16への書き込みが行われていない更新データ（例えば、状態情報が「送信済」）がキャッシュ12中に存在する場合には、上述のディスク16への書き込み処理を繰り返す。
【００６０】
上記のように、本実施形態では、更新データが更新データの受付順にメインサイト1やリモートサイト2のディスクに書き込まれる。このため、更新データの書き込み順序が維持され、データの書き込み順序が変わることがなく、データの矛盾を回避し得る。
【００６１】
また、上記の実施形態では、I/O処理部11（21）とキャッシュ12（22）との間にバッファを設ける必要が無い。このため、キャッシュ12（22）とバッファとの間のコピー処理を行う必要が無い。従って、メインサイト1やリモートサイト2における処理の負荷を低減し得る。よって、メインサイト1においては、例えば、ホスト10との間の通信やデータのやり取りにプロセッサなどのリソースを多く利用することができ得る。即ち、上記の実施形態によれば、メインサイト1やリモートサイト2の性能を向上させることができ得る。
【００６２】
また、上述のように、メインサイト1やリモートサイト2が、例えば、内部の記憶部などに専用のバッファを確保しないため、他の用途に記憶部の空いた部分を利用することができ得る。例えば、メインサイト1やリモートサイト2において、他のアプリケーションプログラムが記憶部の空いた部分を使用することもでき得る。あるいは、メインサイト1やリモートサイト2において記憶部に余裕ができることから、他のアプリケーションプログラムをより安定して実行することができ得る。
【００６３】
第2の実施形態
次に、図1及び4を参照し、第2の実施形態について説明する。この実施形態は、上記の実施形態に加えて用いられてもよい。この実施の形態において、図１の構成要素は、上記と同様である。この実施の形態では、例として、ホスト10が更新データD1、更新データD2、更新データD3、更新データD2´をこの順に送信し、メインサイト1がそれらを同じ順序で受信する場合を想定する。また、この実施形態では、更新データD2と、更新データD2´とがいずれもディスク16の同じ領域へ書き込みが行う場合を想定する。
【００６４】
上記の実施形態と同じように、I/O処理部11は、キャッシュ12へ更新データD1、更新データD2、更新データD3、更新データD2´を順番に格納する。この処理において、更新データD2と更新データD2´とが同じ領域に関する更新データであるので、更新データD2´がキャッシュ12へ格納されるのを更新データD1乃至D3のリモートサイト2への送信（およびディスク16への書き込み）が完了した後としてもよい。この場合、更新データD2のリモートサイト2への送信（およびディスク16への書き込み）が完了するまで、更新データD2´のキャッシュ12への格納を待つ必要があり得る。そこで、このことを考慮し、例えば、更新データD2のリモートサイト2への送信（およびディスク16への書き込み）の前であっても、更新データD2´のキャッシュ12への格納を許してもよい。以下、この処理を説明する。
【００６５】
上述の実施形態と同じように、データ更新ホスト10から、更新データD1と書き込み先の情報を含む書き込み要求とを送信する。ディスクアレイ装置17のI/O処理部11は、データ更新ホスト10から更新データD1と書き込み要求とを受信する（図2の丸付き数字1）。
【００６６】
I/O処理部11は、更新データD1をキャッシュ12へ格納する（図2の丸付き数字1）際に、書き込み先の情報を参照し、更新データD1と同じ領域へ格納する他の更新データがすでにキャッシュ12に存在するか否かを確認する。この段階では、更新データD1と同じ領域へ格納する他の更新データもキャッシュ12に存在しない。キャッシュ12中に、更新データD1と同じ領域への書き込みを行う更新データが存在しない場合、I/O処理部11は、キャッシュ12に更新データD1を格納し、記憶部に書き込み先の情報をキャッシュID（D1）と対応付けて格納し、また、更新データD1に対応するキャッシュID（D1）を生成する。キャッシュ12中に、更新データD1と同じ領域への書き込みを行う更新データが存在する場合の処理は、後述の更新データD2´のケースが該当する。
【００６７】
I/O処理部11は、キャッシュID（D1）を順序保証制御部14へ出力する。順序保証制御部14の処理は、上述と同様である。また、I/O処理部11は、データ更新ホスト10へ、応答信号を送信する。
【００６８】
順序保証制御部14は、キャッシュIDをI/O処理部11から入力したときに、上述のようなキャッシュIDによるリンクの作成／更新を行い、また、キャッシュIDに対応する更新データの属性を表す属性情報を、記憶部に格納してもよい。例えば、順序保証制御部14は、キャッシュID（D1）をI/O処理部11から入力したときに、キャッシュID（D1）に対応する更新データ（更新データD1）の属性として「メイン」を表す属性情報を、記憶部に格納してもよい。「メイン」は、対応する更新データと同じ領域に書き込まれる最後の更新データであることを表す。
【００６９】
データ更新ホスト10は、更新データD2と書き込み先の情報を含む書き込み要求とを送信する（図2の丸付き数字3）。ディスクアレイ装置17のI/O処理部11は、データ更新ホスト10から更新データD2と書き込み要求を受信する。
【００７０】
I/O処理部11は、書き込み先の情報を参照して更新データD2と同じ場所へ格納する他の更新データがすでにキャッシュ12に存在するか否かを確認する。記憶部に存在する更新データD1の書き込み先の情報が存在する。I/O処理部11は、更新データD1とD2の書き込み先の情報を参照して、更新データD2と同じ場所へ格納する他の更新データがすでにキャッシュ12に存在するか否かを確認する。キャッシュ12中に、更新データD2と同じ場所への書き込みを行う更新データが存在しない場合、上記と同じように、I/O処理部11は、キャッシュ12に更新データD2を格納し、記憶部に更新データD2の書き込み先の情報をキャッシュID（D2）と対応付けて格納し、また、更新データD2に対応するキャッシュID（D2）を生成する。キャッシュ12中に、更新データD2と同じ場所への書き込みを行う更新データが存在する場合の処理は、後述の更新データD2´のケースが該当する。
【００７１】
I/O処理部11は、キャッシュID（D2）を順序保証制御部14へ出力する。順序保証制御部14の処理は、上述と同様である。また、I/O処理部11は、データ更新ホスト10へ、応答信号を送信する。応答信号は、例えば、上記と同様のものであってもよい。データ更新ホスト10は、I/O処理部11から応答信号を受信する。データ更新ホスト10は、応答信号に応じた処理を行ってもよい。
【００７２】
順序保証制御部14は、キャッシュIDをI/O処理部11から入力したときに、上述のようなキャッシュIDによるリンクの作成／更新を行い、また、キャッシュIDに対応する更新データの属性を表す属性情報を、記憶部に格納してもよい。例えば、順序保証制御部14は、キャッシュID（D2）をI/O処理部11から入力したときに、キャッシュID（D2）に対応する更新データ（更新データD1）の属性として「メイン」を表す属性情報を、記憶部に格納してもよい。
【００７３】
データ更新ホスト10は、更新データD3と書き込み先の情報を含む書き込み要求とを送信する（図2の丸付き数字5）。ディスクアレイ装置17のI/O処理部11は、データ更新ホスト10から更新データD3と書き込み要求を受信する。
【００７４】
I/O処理部11は、記憶部の更新データD2とD3の書き込み先の情報を参照し、更新データD3と同じ領域へ格納する他の更新データがすでにキャッシュ12に存在するか否かを確認する。キャッシュ12中に、更新データD3と同じ領域への書き込みを行う更新データが存在しない場合、上記と同じように、I/O処理部11は、キャッシュ12に更新データD3を格納し、記憶部に更新データD3の書き込み先の情報をキャッシュID（D3）と対応付けて格納し、更新データD3に対応するキャッシュID（D3）を生成する。キャッシュ12中に、更新データD3と同じ場所への書き込みを行う更新データが存在する場合の処理は、後述の更新データD2´のケースが該当する。
【００７５】
I/O処理部11は、キャッシュID（D3）を順序保証制御部14へ出力する。また、I/O処理部11は、データ更新ホスト10へ、応答信号を送信する。応答信号は、例えば、上記と同様のものであってもよい。データ更新ホスト10は、I/O処理部11から応答信号を受信する。データ更新ホスト10は、応答信号に応じた処理を行ってもよい。
【００７６】
順序保証制御部14は、キャッシュIDをI/O処理部11から入力したときに、上述のようなキャッシュIDによるリンクの作成／更新を行い、また、キャッシュIDに対応する更新データの属性を表す属性情報を、記憶部に格納してもよい。例えば、順序保証制御部14は、キャッシュID（D3）をI/O処理部11から入力したときに、キャッシュID（D3）に対応する更新データ（更新データD3）の属性として「メイン」を表す属性情報を、記憶部に格納してもよい。
【００７７】
データ更新ホスト10は、更新データD2´と書き込み先の情報を含む書き込み要求とを送信する。ディスクアレイ装置17のI/O処理部11は、データ更新ホスト10から更新データD2´と書き込み要求を受信する。
【００７８】
I/O処理部11は、記憶部の更新データD1、D2、D3の書き込み先の情報を参照し、更新データD3と同じ領域へ格納する他の更新データがすでにキャッシュ12に存在するか否かを確認する。キャッシュ12中に、更新データD2´と同じ領域への書き込みを行う更新データが存在しない場合、上記と同じように、I/O処理部11は、記憶部に更新データD2´の書き込み先の情報をキャッシュID（D2´）と対応付けて格納し、更新データD3に対応するキャッシュID（D3）を生成する。
【００７９】
キャッシュ12中に、更新データD2´と同じ場所への書き込みを行う更新データ（D2）が存在する場合であっても、I/O処理部11は、更新データ（D2）がキャッシュ12から追い出されるまで更新データD2´のキャッシュ12への格納を待機することはしない。I/O処理部11は、更新データD2´をキャッシュ12へ格納する。この際、I/O処理部11は、例えば、キャッシュ12中に重複する更新データ用の領域を予め割り当てておき、重複する更新データ用の領域に更新データD2´を格納してもよい。I/O処理部11は、更新データD2´に対応するキャッシュIDを生成する。ここでは、更新データD2´に対応するキャッシュIDをD2´とする。
【００８０】
I/O処理部11は、更新データD2´と同じ領域に格納される更新データD2のキャッシュID（D2）を記憶部から読み出す。I/O処理部11は、キャッシュID（D2´）と、キャッシュID（D2）とを、順序保証制御部14へ出力する。また、I/O処理部11は、データ更新ホスト10へ、応答信号を送信する。応答信号は、例えば、上記と同様のものであってもよい。データ更新ホスト10は、I/O処理部11から応答信号を受信する。データ更新ホスト10は、応答信号に応じた処理を行ってもよい。
【００８１】
図４は、キャッシュIDによるリンクを表す。順序保証制御部14は、キャッシュID（D2´）と、キャッシュID（D2）とを、をI/O処理部11から入力し、キャッシュID（D2）に対し、ディスク上の同じ領域を更新するキャッシュID（D2´）に対応するデータを受け付けたことを判断する。順序保証制御部14は、図４の丸付き数字１のようなキャッシュIDによるリンクを作成／更新する。図４の丸付き数字１のように、キャッシュIDによるリンクは、３個の要素100、要素200、要素300を含む。順序保証制御部14は、要素400を追加する。順序保証制御部14は、最も新しく発生した要素400を、要素300キャッシュID（D3）の先にリンクさせる、すなわち、要素300が要素400にリンクされる。
【００８２】
順序保証制御部14は、図4の丸付き数字2のように、キャッシュID（D2´）に対応する要素400をキャッシュIDによるリンクに追加する。更に、順序保証制御部14は、例えば、キャッシュID（D2）に対応する更新データの属性を表す属性情報を、「サブ」と変更してもよい。「サブ」は、対応する更新データと同じ領域に書き込まれる更新データが存在することを表す。キャッシュID（D2´）については、属性を「メイン」として属性情報を、記憶部に格納してもよい。
【００８３】
属性情報は、キャッシュIDによるリンクとは別に、記憶部中にテーブルを作成し、これに格納されてもよい。
【００８４】
図4の丸付き数字2の状態において、更新データのリモートサイト2への送信の際、メインサイト1は、更新データD2とD2´とを含めた更新データを、リモートサイト2へ送信し得る。即ち、すべての更新データを順序を維持しながらリモートサイト2へ送信し得る。この際、属性情報もリモートサイト2へ送信し得る。これにより、リモートサイト2では、更新データをその順序を維持しながら、ディスク26へ書き込み得る。リモートサイト2では、更新データに対応する属性情報が「メイン」であれ、「サブ」であれ、更新データをその順序を維持しながらディスク26へ書き込み得る。あるいは、リモートサイト2では、更新データに対応する属性情報が「メイン」であるもののみを、更新データをその順序を維持しながらディスク26へ書き込むこととしてもよい。メインサイト1におけるディスク16への書き込みも同様に、更新データをその順序を維持しながら実行し得る。
【００８５】
上記のように、本実施形態では、更新データD2´を、更新データD2がリモートサイト2へ送信される（追い出される）のを待つことなく、キャッシュ12へ書き込まれる。このため、メインサイト1の処理が高速となり得る。また、メインサイト1において、更新データD2がリモートサイト2へ送信される（追い出される）のを待って、更新データD2´のキャッシュ12への書き込みを行う必要が無いため、例えば、バッファのような更新データD2´を一時的に格納するための構成要素を省略し得る。
【００８６】
ここで、本実施形態において、例えば、図4の丸付き数字2の状態において、ホスト10など外部から、ディスクアレイ装置17にデータの読み出し要求が送信された場合であって、かつ、読み出し要求が図4の丸付き数字2に示す更新データD2´の領域のデータの読み出しを要求するものであった場合を想定する。この場合、I/O処理部11は、（順序保証制御部14を介して）キャッシュIDによるリンクをたどり、属性情報が「サブ」である更新データD2を参照することなく、属性情報が「メイン」である更新データD2´をキャッシュ12から読み出す。このような処理により、ディスクアレイ装置17は、最新の状態のデータを提供し得る。
【００８７】
また、図4の丸付き数字2に示す更新データD2´のキャッシュ12への格納の後に更新データD2´と同じ領域へ書き込まれる更新データD2″がディスクアレイ装置17によって受信された場合には、更新データD2´の属性情報を「サブ」と変更し、更に、更新データD2″の属性情報を「メイン」としてキャッシュ12へ格納してもよい。これにより、同じ領域に対する複数の更新データを受け付けた場合も、すべてキャッシュへ格納し得る。
【００８８】
上記のように、本実施形態では、同じ領域への更新データが発生しても、更新データを１本のリンクを用いて接続し、更新の順序を保証し得る。これにより、更新の順序の不正を抑止し得る。
【００８９】
また、上記の実施形態では、キャッシュへの書き込みに専用のバッファを用いることを省略し得る。この点、例えば、ディスクアレイ装置間のコピーに専用のバッファを用意することにより、メインサイトでホストから受けた更新データをバッファリングし、バッファへの順序だてた更新データの格納により更新データの順序保証を行い、更に、バッファリングしたデータをまとめてリモートサイトへ送ることにより通信のオーバーヘッドを小さくする方法もあり得る。ここで、ホスト／ディスクアレイの性能向上とともに、大量データの書き込み、あるいは、一時的な負荷の上昇、といった要因によって大きなバッファが求められることがあり得るが、この場合には内部リソースを大きく消費することになり、バッファが枯渇することがあり得、仮にキャッシュに空きがあったとしても次の更新データを受け付けられなくなることもあり得る。更に、ディスクアレイ装置間のコピーに専用のバッファを用意する場合には、キャッシュと専用バッファとの間のコピー処理により、装置内部負荷が高くなることがあり得る。上記の実施形態のようにキャッシュへの書き込みに専用のバッファを用いることを省略し得る場合、キャッシュに空きがあれば次の更新データを受け付けられるものとなり得る。これにより、上記の実施形態では、メインサイトの、そして、ディスクアレイシステム全体の効率を向上するものとなり得る。また、キャッシュと専用バッファとの間のコピー処理が発生しないため、ディスクアレイシステム全体の処理負荷を削減し得る。
また、単純にバッファを用いない同期したディスクアレイ装置間のデータのコピーなどでは、同じ領域への更新データがあると、キャッシュ競合による更新データの書き込み遅延が発生することもあり得る。上記の実施形態では、同じ領域への書き込みを行う更新データを２以上受け付けた場合でも、キャッシュ競合を回避し得るとともに、書き込みの遅延も回避し得る。
【００９０】
また、上記のホスト10、ディスクアレイ装置17、ディスクアレイ装置27は、プロセッサ、メモリ、ハードディスク、SSD(solid state drive、ソリッド・ステート・ドライブ)、光学ドライブ、光磁気ドライブ、送受信機、ディスプレイ、キーボード、マウスなどを適宜必要に応じて備え得る。また、上記の構成要素はソフトウェアで実装されてもよい。
【００９１】
また、上記の実施形態において、ネットワークは、例えば、イーサネット（登録商標）、ファイバーチャネル、無線通信ネットワークであってもよい。ネットワークは、LAN（local area network）、WAN（wide area network）、インターネット、イントラネット、公衆回線などであってもよい。あるいは、ネットワークは、複数種類のネットワークを組み合わせて構成されてもよい。
【００９２】
他の追加の実施形態
更に、以下、他の追加の実施形態を示す。
【００９３】
第1のディスクアレイ装置と、第2のディスクアレイ装置とを備えるディスクアレイシステムであって、
第1のディスクアレイ装置が、
第1のキャッシュと、
外部から更新データを受け取り、更新データに対応するキャッシュIDを生成し、更新データを第1のキャッシュへ書き込む第1のI/O処理部と、
キャッシュIDを、更新データを受け付けた順にリンクさせてキャッシュIDによるリンクを生成する、第1の順序保証制御部と、を具備し、
所定のタイミングで、第1の順序保証制御部が、更新データと、キャッシュIDによるリンクとを第2のディスクアレイ装置へ送信し、
第2のディスクアレイ装置が、
第2のキャッシュと、
第1のディスクアレイ装置から更新データと、キャッシュIDによるリンクとを受け取り、キャッシュIDによるリンクを参照して更新データの受け取り順序に従って、第2のキャッシュへ書き込む、第2のI/O処理部と、
所定のタイミングで第2のキャッシュに格納された更新データを、キャッシュIDによるリンクを参照して更新データの受け取り順序に従って、ディスクへ書き込む、第2の順序保証制御部と、を具備する、
ディスクアレイシステム。
【００９４】
第1の順序保証制御部は、キャッシュIDに対応する属性情報を生成し、更新データを第1のキャッシュへ格納するときに、更新データの属性情報を第1の属性に設定し、更に、更新データについてディスクの同じ領域へ書き込まれる既存の更新データが第1のキャッシュに格納されている場合には、既存の更新データの属性情報を第2の属性に設定する、上述のディスクアレイシステム。
【００９５】
第1のI/O処理部は、更新データが、既存の更新データとディスクの同じ領域に書き込まれる場合、既存の更新データが第1のキャッシュにあっても、既存の更新データが第2のディスクアレイ装置へ送信されるのを待たずに更新データをキャッシュへ書き込む、上述のディスクアレイシステム。
【００９６】
第1のディスクアレイ装置から第2のディスクアレイ装置へ更新データを送信する場合に、更新データの属性情報も第2のディスクアレイ装置へ送信する、上述のディスクアレイシステム。
【００９７】
ディスク制御部は、更新データの受け取り順序に従い、かつ、属性情報が第1の属性である更新データのみをディスクへ書き込む、上述のディスクアレイシステム。
【００９８】
第1のディスクアレイ装置と、第2のディスクアレイ装置とを備えるディスクアレイシステムにおけるディスクアレイシステムの制御方法であって、
第1のディスクアレイ装置が、外部から更新データを受け取るステップと、
第1のディスクアレイ装置が、更新データに対応するキャッシュIDを生成し、更新データを第1のキャッシュへ書き込むステップと、
第1のディスクアレイ装置が、キャッシュIDを更新データを受け付けた順にリンクさせてキャッシュIDによるリンクを生成するステップと、
第1のディスクアレイ装置が、更新データと、キャッシュIDによるリンクとを第2のディスクアレイ装置へ送信するステップと、
第2のディスクアレイ装置が、第1のディスクアレイ装置から更新データと、キャッシュIDによるリンクとを受け取り、キャッシュIDによるリンクを参照して更新データの受け取り順序に従って、第2のキャッシュへ書き込むステップと、
第2のディスクアレイ装置が、所定のタイミングで第2のキャッシュに格納された更新データを、キャッシュIDによるリンクを参照して更新データの受け取り順序に従って、ディスクへ書き込むステップと、を具備する、
ディスクアレイシステムの制御方法。
【００９９】
キャッシュIDによるリンクを生成するステップは、キャッシュIDに対応する属性情報を生成するステップを具備し、
更新データを第1のキャッシュへ格納したときに、属性情報を生成するステップにおいて、更新データの属性情報を第1の属性に設定し、更に、更新データについてディスクの同じ領域へ書き込まれる既存の更新データが第1のキャッシュに既に格納されている場合には、既存の更新データの属性情報を第2の属性に設定する、上述のディスクアレイシステムの制御方法。
【０１００】
更新データを第1のキャッシュへ書き込むステップにおいて、更新データが既存の更新データとディスクの同じ領域に書き込まれる場合、既存の更新データが第1のキャッシュに既にあっても、既存の更新データが第2のディスクアレイ装置へ送信されるのを待たずに更新データがキャッシュへ書き込まれる、上述のディスクアレイシステムの制御方法。
【０１０１】
更新データの属性情報を第2のディスクアレイ装置へ送信するステップを更に具備する、上述のディスクアレイシステムの制御方法。
【０１０２】
ディスクへ書き込むステップは、更新データの受け取り順序に従い、かつ、属性情報が第1の属性である更新データのみをディスクへ書き込む、上述のディスクアレイシステムの制御方法。
【０１０３】
第1のディスクアレイ装置であって、
第1のキャッシュと、
外部から更新データを受け取り、更新データに対応するキャッシュIDを生成し、更新データを第1のキャッシュへ書き込む第1のI/O処理部と、
キャッシュIDを、更新データを受け付けた順にリンクさせてキャッシュIDによるリンクを生成する、第1の順序保証制御部と、を具備し、
所定のタイミングで、第1の順序保証制御部が、更新データと、キャッシュIDによるリンクとを第2のディスクアレイ装置へ送信して更新データの格納を要求する、
第1のディスクアレイ装置。
【０１０４】
ここで、図5は、上記の実施形態に対応する装置の構成を表す図面である。構成要素については、第１の実施形態を参照。また、図６は、この実施形態における処理の流れを示している。ステップS601において、第1のI/O処理部が、外部から更新データを受け取り、更新データに対応するキャッシュIDを生成し、更新データを第1のキャッシュへ書き込む。ステップS602において、第1の順序保証制御が、キャッシュIDを、更新データを受け付けた順にリンクさせてキャッシュIDによるリンクを生成する。ステップS603において、第1の順序保証制御部が、所定のタイミングで、更新データと、キャッシュIDによるリンクとを第2のディスクアレイ装置へ送信して更新データの格納を要求する。
【０１０５】
更に、以下、他の追加の実施形態の説明を続ける。
【０１０６】
第1の順序保証制御部は、キャッシュIDに対応する属性情報を生成し、更新データを第1のキャッシュへ格納するときに、更新データの属性情報を第1の属性に設定し、更に、更新データについてディスクの同じ領域へ書き込まれる既存の更新データが第1のキャッシュに格納されている場合には、既存の更新データの属性情報を第2の属性に設定する、上述の第1のディスクアレイ装置。
【０１０７】
第1のI/O処理部は、更新データが、既存の更新データとディスクの同じ領域に書き込まれる場合、既存の更新データが第1のキャッシュにあっても、既存の更新データが第2のディスクアレイ装置へ送信されるのを待たずに更新データを第1のキャッシュへ書き込む、上述の第1のディスクアレイ装置。
【０１０８】
第1のディスクアレイ装置から第2のディスクアレイ装置へ更新データを送信する場合に、更新データの属性情報も第2のディスクアレイ装置へ送信する、上述の第1のディスクアレイ装置。
【０１０９】
以上の開示は例である。従って、本発明の範囲は、上記の実施形態などの開示のみに限定して解釈されるべきではない。
【０１１０】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１１１】
（付記１）
第1のディスクアレイ装置と、第2のディスクアレイ装置とを備えるディスクアレイシステムであって、
前記第1のディスクアレイ装置が、
第1のキャッシュと、
外部から更新データを受け取り、前記更新データに対応するキャッシュIDを生成し、前記更新データを前記第1のキャッシュへ書き込む第1のI/O処理部と、
前記キャッシュIDを、前記更新データを受け付けた順にリンクさせてキャッシュIDによるリンクを生成する、第1の順序保証制御部と、を具備し、
所定のタイミングで、前記第1の順序保証制御部が、前記更新データと、前記キャッシュIDによるリンクとを前記第2のディスクアレイ装置へ送信し、
前記第2のディスクアレイ装置が、
第2のキャッシュと、
前記第1のディスクアレイ装置から前記更新データと、前記キャッシュIDによるリンクとを受け取り、前記キャッシュIDによるリンクを参照して前記更新データの受け取り順序に従って、前記更新データを前記第2のキャッシュへ書き込む、第2のI/O処理部と、
所定のタイミングで前記第2のキャッシュに格納された前記更新データを、前記キャッシュIDによるリンクを参照して前記更新データの受け取り順序に従って、ディスクへ書き込む、第2の順序保証制御部と、を具備する、
ディスクアレイシステム。
【０１１２】
（付記２）
前記第1の順序保証制御部は、前記キャッシュIDに対応する属性情報を生成し、前記更新データを前記第1のキャッシュへ格納するときに、前記更新データの属性情報を第1の属性に設定し、更に、前記更新データについて前記ディスクの同じ領域へ書き込まれる既存の更新データが前記第1のキャッシュに格納されている場合には、前記既存の更新データの属性情報を第2の属性に設定する、付記1に記載のディスクアレイシステム。
【０１１３】
（付記３）
前記第1のI/O処理部は、前記更新データが、既存の更新データと前記ディスクの同じ領域に書き込まれる場合、前記既存の更新データが前記第1のキャッシュにあっても、前記既存の更新データが前記第2のディスクアレイ装置へ送信されるのを待たずに前記更新データを前記第1のキャッシュへ書き込む、付記1または2に記載のディスクアレイシステム。
【０１１４】
（付記４）
前記第1のディスクアレイ装置から前記第2のディスクアレイ装置へ前記更新データを送信する場合に、前記更新データの属性情報も前記第2のディスクアレイ装置へ送信する、付記２に記載のディスクアレイシステム。
【０１１５】
（付記５）
前記第2の順序保証制御部は、前記更新データの受け取り順序に従い、かつ、前記属性情報が第1の属性である更新データのみを前記ディスクへ書き込む、付記2または4に記載のディスクアレイシステム。
【０１１６】
（付記６）
第1のディスクアレイ装置と、第2のディスクアレイ装置とを備えるディスクアレイシステムにおけるディスクアレイシステムの制御方法であって、
前記第1のディスクアレイ装置が、外部から更新データを受け取るステップと、
前記第1のディスクアレイ装置が、前記更新データに対応するキャッシュIDを生成し、前記更新データを第1のキャッシュへ書き込むステップと、
前記第1のディスクアレイ装置が、前記キャッシュIDを前記更新データを受け付けた順にリンクさせてキャッシュIDによるリンクを生成するステップと、
前記第1のディスクアレイ装置が、前記更新データと、前記キャッシュIDによるリンクとを前記第2のディスクアレイ装置へ送信するステップと、
前記第2のディスクアレイ装置が、前記第1のディスクアレイ装置から前記更新データと、前記キャッシュIDによるリンクとを受け取り、前記キャッシュIDによるリンクを参照して前記更新データの受け取り順序に従って、前記更新データを第2のキャッシュへ書き込むステップと、
前記第2のディスクアレイ装置が、所定のタイミングで前記第2のキャッシュに格納された前記更新データを、前記キャッシュIDによるリンクを参照して前記更新データの受け取り順序に従って、ディスクへ書き込むステップと、を具備する、
ディスクアレイシステムの制御方法。
【０１１７】
（付記７）
前記キャッシュIDによるリンクを生成するステップは、前記キャッシュIDに対応する属性情報を生成するステップを具備し、
前記更新データを前記第1のキャッシュへ格納したときに、前記属性情報を生成するステップにおいて、前記更新データの属性情報を第1の属性に設定し、更に、前記更新データについて前記ディスクの同じ領域へ書き込まれる既存の更新データが前記第1のキャッシュに既に格納されている場合には、前記既存の更新データの属性情報を第2の属性に設定する、付記6に記載のディスクアレイシステムの制御方法。
【０１１８】
（付記８）
前記更新データを前記第1のキャッシュへ書き込むステップにおいて、前記更新データが既存の更新データと前記ディスクの同じ領域に書き込まれる場合、前記既存の更新データが前記第1のキャッシュに既にあっても、前記既存の更新データが前記第2のディスクアレイ装置へ送信されるのを待たずに前記更新データが前記第1のキャッシュへ書き込まれる、付記6または7に記載のディスクアレイシステムの制御方法。
【０１１９】
（付記９）
前記更新データの属性情報を前記第2のディスクアレイ装置へ送信するステップを更に具備する、付記7に記載のディスクアレイシステムの制御方法。
【０１２０】
（付記１０）
前記ディスクへ書き込むステップは、前記更新データの受け取り順序に従い、かつ、前記属性情報が第1の属性である更新データのみを前記ディスクへ書き込む、付記7または9に記載のディスクアレイシステムの制御方法。
【０１２１】
（付記１１）
第1のディスクアレイ装置であって、
第1のキャッシュと、
外部から更新データを受け取り、前記更新データに対応するキャッシュIDを生成し、前記更新データを前記第1のキャッシュへ書き込む第1のI/O処理部と、
前記キャッシュIDを、前記更新データを受け付けた順にリンクさせてキャッシュIDによるリンクを生成する、第1の順序保証制御部と、を具備し、
所定のタイミングで、前記第1の順序保証制御部が、前記更新データと、前記キャッシュIDによるリンクとを第2のディスクアレイ装置へ送信して前記更新データの格納を要求する、
前記第1のディスクアレイ装置。
【０１２２】
（付記１２）
前記第1の順序保証制御部は、前記キャッシュIDに対応する属性情報を生成し、前記更新データを前記第1のキャッシュへ格納するときに、前記更新データの属性情報を第1の属性に設定し、更に、前記更新データについて前記ディスクの同じ領域へ書き込まれる既存の更新データが前記第1のキャッシュに格納されている場合には、前記既存の更新データの属性情報を第2の属性に設定する、付記11に記載の第1のディスクアレイ装置。
【０１２３】
（付記１３）
前記第1のI/O処理部は、前記更新データが、既存の更新データと前記ディスクの同じ領域に書き込まれる場合、前記既存の更新データが前記第1のキャッシュにあっても、前記既存の更新データが前記第2のディスクアレイ装置へ送信されるのを待たずに前記更新データを前記第1のキャッシュへ書き込む、付記11または12に記載の第1のディスクアレイ装置。
【０１２４】
（付記１４）
前記第1のディスクアレイ装置から前記第2のディスクアレイ装置へ前記更新データを送信する場合に、前記更新データの属性情報も前記第2のディスクアレイ装置へ送信する、付記12に記載の第1のディスクアレイ装置。
【符号の説明】
【０１２５】
１    メインサイト
２    リモートサイト
１０  データ更新ホスト
１１  Ｉ／Ｏ処理部
１２  キャッシュ
１３  送信部
１４  順序保証制御部
１５  ディスク制御部
１６  ディスク
１７  ディスクアレイ装置
２１  Ｉ／Ｏ処理部
２２  キャッシュ
２３  受信部
２４  順序保証制御部
２５  ディスク制御部
２６  ディスク
２７  ディスクアレイ装置
３０  遠隔回線
【図１】
2020170253.tif 000003
【図２】
2020170253.tif 000004
【図３】
2020170253.tif 000005
【図４】
2020170253.tif 000006
【図５】
2020170253.tif 000007
【図６】
2020170253.tif 000008