(57)【特許請求の範囲】
【請求項１】
記憶部を備える他のストレージ制御装置から読み出し要求を受信し、前記読み出し要求の受信後にホスト装置から書き込みデータの書き込み要求を受信すると、前記書き込みデータを前記読み出し要求に対する応答として前記他のストレージ制御装置に送信し、前記他のストレージ制御装置から前記書き込みデータの前記記憶部への書き込み完了通知を受信すると、前記ホスト装置に前記書き込みデータの書き込み完了応答を送信する制御部と、
を有するストレージ制御装置。
【請求項２】
前記制御部は、
前記書き込みデータを前記他のストレージ制御装置に送信する際に、当該送信処理を識別する識別情報を前記書き込みデータに付加し、
前記他のストレージ制御装置から前記識別情報を含む前記書き込み完了通知を受信すると、前記ホスト装置に前記書き込み完了応答を送信する、
請求項１記載のストレージ制御装置。
【請求項３】
前記他のストレージ制御装置には、前記ストレージ制御装置からの受信データを一時的に記憶する複数のバッファ領域が確保され、前記複数のバッファ領域はそれぞれ異なるサイズを有し、
前記制御部は、前記他のストレージ制御装置から、前記複数のバッファ領域がそれぞれ割り当てられた複数の読み出し要求を受信し、前記ホスト装置から前記書き込み要求を受信すると、前記複数の読み出し要求の中から、前記書き込みデータのサイズ以下であり、かつ、前記書き込みデータのサイズに最も近いサイズのバッファ領域が対応付けられた選択読み出し要求を選択し、前記選択読み出し要求に対する応答として前記書き込みデータを前記他のストレージ制御装置に送信する、
請求項１または２記載のストレージ制御装置。
【請求項４】
ホスト装置からの書き込みデータが他のストレージ制御装置を経由して転送されるストレージ制御装置において、
記憶部と、
前記他のストレージ制御装置に読み出し要求を送信し、前記読み出し要求の送信後に前記他のストレージ制御装置が前記ホスト装置から受信した書き込みデータを前記読み出し要求に対する応答として前記他のストレージ制御装置から受信し、前記書き込みデータを前記記憶部に書き込む制御部と、
を有するストレージ制御装置。
【請求項５】
前記他のストレージ制御装置から転送された前記書き込みデータには、当該送信処理を識別する識別情報が付加されており、
前記制御部は、前記書き込みデータの前記記憶部への書き込みが完了すると、前記識別情報を含む書き込み完了通知を前記他のストレージ制御装置に送信する、
請求項４記載のストレージ制御装置。
【請求項６】
前記制御部は、
前記他のストレージ制御装置からの受信データを一時的に記憶する複数のバッファ領域を前記ストレージ制御装置に確保して、前記複数のバッファ領域をそれぞれ対応付けた複数の読み出し要求を前記他のストレージ制御装置に送信し、
前記書き込みデータを受信したとき、前記複数の読み出し要求の中から、前記書き込みデータの送信に用いた特定読み出し要求を特定し、前記複数のバッファ領域のうち、前記特定読み出し要求に対応付けられたバッファ領域に前記書き込みデータを一時的に記憶した後、前記書き込みデータを前記記憶部に書き込み、
前記複数のバッファ領域には、サイズの異なるバッファ領域が含まれる、
請求項４または５記載のストレージ制御装置。
【請求項７】
前記制御部は、
前記他のストレージ制御装置から受信した複数の書き込みデータそれぞれのデータサイズを履歴情報に蓄積し、
前記履歴情報に基づいてバッファ領域の確保数をバッファ領域のサイズごとに決定し、サイズごとの前記確保数に基づいて確保されたバッファ領域にそれぞれ対応付けた前記複数の読み出し要求を前記他のストレージ制御装置に送信する、
請求項６記載のストレージ制御装置。
【請求項８】
第１のストレージ制御装置と、記憶部を有する第２のストレージ制御装置とを含むストレージシステムにおいて、
前記第２のストレージ制御装置は、前記第１のストレージ制御装置に読み出し要求を送信し、
前記第１のストレージ制御装置は、前記第２のストレージ制御装置から前記読み出し要求を受信し、前記読み出し要求の受信後にホスト装置から書き込みデータの書き込み要求を受信すると、前記書き込みデータを前記読み出し要求に対する応答として前記第２のストレージ制御装置に送信し、
前記第２のストレージ制御装置は、前記読み出し要求の応答として前記書き込みデータを前記第１のストレージ制御装置から受信すると、前記書き込みデータを前記記憶部に書き込み、前記書き込み完了通知を前記第１のストレージ制御装置に送信し、
前記第１のストレージ制御装置は、前記第２のストレージ制御装置から前記書き込みデータの前記記憶部への書き込み完了通知を受信すると、前記ホスト装置に前記書き込みデータの書き込み完了応答を送信する、
ストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はストレージ制御装置およびストレージシステムに関する。
【背景技術】
【０００２】
データのバックアップ方法の一例として、ホスト装置から一方のストレージ制御装置に書き込みが要求されたデータを、当該ストレージ制御装置が他方のストレージ装置に送信することで、各ストレージ制御装置が制御する記憶装置にデータを二重化する方法がある。このバックアップ方法では、例えば、各ストレージ制御装置を物理的に離れた場所に設置することで、災害の発生によるデータ消失の可能性を低減することができる。また、上記バックアップ方法において、ホスト装置からデータの書き込み要求を受けたストレージ制御装置が、データの二重化が完了した後に書き込み完了応答をホスト装置に送信するという動作モードは、“同期モード”などと呼ばれる。
【０００３】
さらに、データをバックアップする技術の一例として、第１の記憶サブシステムがホスト端末から受信したライトデータを第２の記憶サブシステムが受信する技術が提案されている。この技術において、第１の記憶サブシステムは、ライトデータと第１の記憶サブシステムが有する記憶デバイスの更新順序を表す更新番号とを含んだデータセットを生成する。第１の記憶サブシステムは、第２の記憶サブシステムからリード命令で指定された更新番号に対応するライトデータを第２の記憶サブシステムに送信する。
【０００４】
また、他の例として、第１の記憶システムは、ライトデータとライトデータが書き込まれる格納位置を示すアドレス情報とを第３の記憶システムに送信し、第２の記憶システムは、アドレス情報に従って第３の記憶システムからライトデータを受信する、という技術が提案されている。
【０００５】
また、データの書き込み要求手順の例として、ホストコンピュータが書き込み要求を送信すると、ストレージシステムがデータの受信準備の完了通知を返信し、完了通知を受信したホストコンピュータが書き込みデータを送信する、という手順が知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−６５６２４号公報
【特許文献２】特開２００５−５５９４８号公報
【特許文献３】特開２００７−２１９７１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、上記の同期モードによるバックアップ処理において、ホスト装置からデータの書き込み要求を受けた一方のストレージ制御装置が他方のストレージ制御装置に書き込みデータを送信する際に、上記の書き込み要求手順が用いられる場合がある。この場合、一方のストレージ制御装置は、他方のストレージ制御装置に書き込み要求を送信し、他方のストレージ制御装置から受信準備の完了通知を受信した後、他方のストレージ制御装置に書き込みデータを送信する。
【０００８】
しかし、この場合には、一方のストレージ制御装置は、書き込みデータを送信する前に他方のストレージ制御装置との間で１往復の通信を行う必要があり、その分だけホスト装置に応答するまでの時間が長くなるという問題がある。特に、ストレージ制御装置間の物理的な距離が長くなるほどストレージ制御装置間の通信に要する時間が長くなり、その結果、ホスト装置に応答するまでの時間も長くなってしまう。
【０００９】
また、同期モードによるバックアップ処理以外に、ホスト装置から書き込みデータを受信した一方のストレージ制御装置が他方のストレージ制御装置に書き込みデータを転送して、他方のストレージ制御装置の記憶装置へ書き込みデータを書き込みする場合の書き込みを要求する際にも、上記の書き込み要求手順が用いられる場合もある。この場合にも、上記と同様の問題がある。
【００１０】
１つの側面では、本発明は、ストレージ制御装置への書き込みが要求されてから書き込み完了応答を要求元に送信するまでの時間を短縮可能なストレージ制御装置およびストレージシステムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
１つの態様では、ストレージ制御装置が提供される。このストレージ制御装置は、制御部を有する。制御部は、記憶部を備える他のストレージ制御装置から読み出し要求を受信し、読み出し要求の受信後にホスト装置から書き込みデータの書き込み要求を受信すると、書き込みデータを読み出し要求に対する応答として他のストレージ制御装置に送信し、他のストレージ制御装置から書き込みデータの記憶部への書き込み完了通知を受信すると、ホスト装置に書き込みデータの書き込み完了応答を送信する。
【００１２】
また、１つの態様では、ホスト装置からの書き込みデータが他のストレージ制御装置を経由して転送されるストレージ制御装置が提供される。このストレージ制御装置は、記憶部と制御部とを有する。制御部は、他のストレージ制御装置に読み出し要求を送信し、読み出し要求の送信後に他のストレージ制御装置がホスト装置から受信した書き込みデータを読み出し要求に対する応答として他のストレージ制御装置から受信し、書き込みデータを記憶部に書き込む。
【００１３】
また、１つの態様では、第１のストレージ制御装置と、記憶部を有する第２のストレージ制御装置とを含むストレージシステムが提供される。第２のストレージ制御装置は、第１のストレージ制御装置に読み出し要求を送信する。第１のストレージ制御装置は、第２のストレージ制御装置から読み出し要求を受信し、読み出し要求の受信後にホスト装置から書き込みデータの書き込み要求を受信すると、書き込みデータを読み出し要求に対する応答として第２のストレージ制御装置に送信する。第２のストレージ制御装置は、読み出し要求の応答として書き込みデータを第１のストレージ制御装置から受信すると、書き込みデータを記憶部に書き込み、書き込み完了通知を第１のストレージ制御装置に送信する。第１のストレージ制御装置は、第２のストレージ制御装置から書き込みデータの記憶部への書き込み完了通知を受信すると、ホスト装置に書き込みデータの書き込み完了応答を送信する。
【発明の効果】
【００１４】
１つの側面では、ストレージ制御装置への書き込みが要求されてから書き込み完了応答を要求元に送信するまでの時間を短縮できる。
【図面の簡単な説明】
【００１５】
【図１】第１の実施の形態のストレージシステムを示す図である。
【図２】第２の実施の形態のストレージシステムを示す図である。
【図３】ストレージ装置のＣＭのハードウェア例を示す図である。
【図４】バックアップ処理の比較例を示すシーケンス図である。
【図５】各ストレージ装置のＣＭの機能例を示す図である。
【図６】ＣＭ間の通信で使用される情報を示す図である。
【図７】要求テーブルの例を示す図である。
【図８】統計テーブルの例を示す図である。
【図９】読み出し要求管理テーブルの例を示す図である。
【図１０】第２の実施の形態のバックアップ処理を示すシーケンス図である。
【図１１】読み出し要求の送信処理の例を示すフローチャートである。
【図１２】読み出し要求に対する応答の受信処理の例を示すフローチャートである。
【図１３】読み出し要求の受信処理の例を示すフローチャートである。
【図１４】書き込み要求受信処理の例（その１）を示すフローチャートである。
【図１５】書き込み要求受信処理の例（その２）を示すフローチャートである。
【図１６】バッファ領域確保の最適化処理の具体例を示す図である。
【発明を実施するための形態】
【００１６】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態のストレージシステムを示す図である。ストレージシステムは、ストレージ制御装置１，２を含む。ストレージ制御装置１，２は、例えばネットワークを介して接続されている。また、ストレージ制御装置１には、ストレージ制御装置１に対してデータの書き込みを要求するホスト装置３が接続されている。ストレージ制御装置１とホスト装置３とは、例えばネットワークを介して接続されている。
【００１７】
ストレージ制御装置１は、記憶部１ａと制御部１ｂを有する。ストレージ制御装置２は、記憶部２ａと制御部２ｂを有する。記憶部１ａ，２ａは、ＲＡＭ（Random Access Memory）などの揮発性記憶装置でもよいし、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などの不揮発性記憶装置でもよい。制御部１ｂ，２ｂは、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。制御部１ｂ，２ｂは、複数のプロセッシング要素を含むマルチプロセッサであってもよい。
【００１８】
ストレージシステムでは、ホスト装置３から書き込みデータを受信したストレージ制御装置１が、書き込みデータを記憶部１ａに格納するとともに、ストレージ制御装置２に書き込みデータを格納させ、書き込みデータをバックアップさせる。
【００１９】
ストレージ制御装置１において、記憶部１ａは、ホスト装置３から書き込みが要求された書き込みデータを記憶する。なお、記憶部１ａは、ホスト装置３からのアクセス対象の記憶装置である。または、記憶部１ａとは別の記憶装置がホスト装置３からのアクセス対象であり、記憶部１ａは、ホスト装置がアクセス対象の記憶装置にアクセスする際にキャッシュ領域として利用されてもよい。
【００２０】
制御部１ｂは、ストレージ制御装置２から読み出し要求を受信する。制御部１ｂは、読み出し要求の受信後にホスト装置３から書き込みデータの書き込み要求を受信する。このとき、制御部１ｂは、書き込みデータを記憶部１ａに書き込むとともに、書き込みデータを読み出し要求に対する応答としてストレージ制御装置２に送信する。制御部１ｂは、ストレージ制御装置２から書き込みデータの記憶部２ａへの書き込み完了通知を受信すると、ホスト装置３に書き込みデータの書き込み完了応答を送信する。
【００２１】
ストレージ制御装置２において、記憶部２ａは、ストレージ制御装置１から送信される書き込みデータを格納する。制御部２ｂは、ストレージ制御装置１に読み出し要求を送信する。この読み出し要求は、特定のデータを指定するものではない。制御部２ｂは、読み出し要求の送信後にストレージ制御装置１がホスト装置３から書き込みデータの書き込み要求を受信したとき、書き込みデータを読み出し要求に対する応答としてストレージ制御装置１から受信する。制御部２ｂは、書き込みデータを記憶部２ａに書き込み、書き込み完了通知をストレージ制御装置１に送信する。
【００２２】
このようなストレージシステムによれば、ストレージ制御装置１は、ホスト装置３から書き込み要求を受信したとき、あらかじめ受信済みの読み出し要求に対する応答として、ホスト装置３からの書き込みデータをストレージ制御装置２に送信する。これにより、ストレージ制御装置１は、ホスト装置３から書き込み要求を受信した後、ストレージ制御装置２との間で特に通信せずに、書き込みデータをストレージ制御装置２に送信できる。よって、ストレージ制御装置１がホスト装置３から書き込み要求を受信してから、記憶部１ａ，２ａのそれぞれに書き込みデータが書き込まれ、ストレージ制御装置１がホスト装置３に書き込み完了通知を送信するまでの時間が短縮される。
【００２３】
以下、図１を参照しながら具体的な処理例について説明する。制御部２ｂは、ストレージ制御装置１がホスト装置３から書き込み要求を受信する前に、読み出し要求をストレージ制御装置１に送信する（ステップＳ１）。制御部１ｂは、ストレージ制御装置２から読み出し要求を受信する。
【００２４】
読み出し要求を受信した後、制御部１ｂは、ホスト装置３から書き込み要求を受信する（ステップＳ２）。制御部１ｂは、書き込みデータを受信する準備が完了した旨の通知をホスト装置３に通知する（ステップＳ３）。なお、書き込みデータを受信する準備としては、ストレージ制御装置１内に受信した書き込みデータを一時的に記憶するためのバッファ領域を確保する処理がある。ホスト装置３は、準備が完了した旨の通知を受けると、データＸをストレージ制御装置１に送信する（ステップＳ４）。制御部１ｂは、データＸを受信すると、記憶部１ａにデータＸを書き込むと共に、読み出し要求に対する応答としてデータＸをストレージ制御装置２に送信する（ステップＳ５）。
【００２５】
制御部２ｂは、データＸを受信すると、データＸを記憶部２ａに格納する。制御部２ｂは、ストレージ制御装置１にデータＸの記憶部２ａへの書き込み完了通知を送信する（ステップＳ６）。制御部１ｂは、当該通知を受信すると、ホスト装置３に書き込みデータの書き込み完了応答を送信する（ステップＳ７）。
【００２６】
ここで、相手装置にデータの書き込みを要求する手順としては、ステップＳ２〜Ｓ４の例のように、相手装置に書き込み要求を送信し、相手装置から書き込みの準備が完了した旨の通知を受けると、相手装置に書き込みデータを送信する、という手順がある。仮に、ストレージ制御装置１が書き込みデータをストレージ制御装置２に送信する際に上記の手順が実行されたとすると、ストレージ制御装置１は、書き込みデータを送信する前に、書き込み要求の送信および準備完了通知の受信という通信を行う必要がある。
【００２７】
これに対して、第１の実施の形態によれば、ストレージ制御装置１がホスト装置３からの書き込み要求を受信する前に、ストレージ制御装置２が先行して読み出し要求をストレージ制御装置１に送信する。そして、ストレージ制御装置１は、ホスト装置３から書き込み要求を受信したとき、受信済みの読み出し要求に対する応答として書き込みデータをストレージ制御装置２に送信する。これにより、ストレージ制御装置１が書き込み要求を受信してから、書き込みデータをストレージ制御装置２に送信するまでの間に、上記のような書き込み要求の送信および準備完了通知の受信という通信を行わなくて済む。そのため、ストレージ制御装置１がホスト装置３から書き込み要求を受信してからホスト装置３に書き込み完了応答を送信するまでに要する時間を短縮することができる。よって、第１の実施の形態によれば、ストレージ制御装置２への書き込みが要求されてから書き込み完了応答をホスト装置３に送信するまでの時間を短縮できる。
【００２８】
なお、ストレージ制御装置１がホスト装置３から受信したデータＸは、記憶部１ａに書き込まれずに、ストレージ制御装置２の記憶部２ａにのみ書き込まれてもよい。このような形態としては、例えば、ストレージ制御装置２の記憶部２ａに対する書き込み要求を、ストレージ制御装置２がホスト装置３から受信する形態が考えられる。このようにデータＸが記憶部２ａにのみ書き込まれる形態にも、上記と同様の処理を適用できる。すなわち、ストレージ制御装置１の制御部１ｂは、ストレージ制御装置２の制御部２ｂからあらかじめ読み出し要求を受信し、ホスト装置３からデータＸの書き込み要求を受信すると、読み出し要求に対する応答としてデータＸをストレージ制御装置２に転送する。そして、制御部１ｂは、制御部２ｂからデータＸの記憶部２ａへの書き込み完了通知を受信したら、ホスト装置３にデータＸの書き込み完了応答を送信する。これにより、ストレージ制御装置２への書き込みが要求されてから書き込み完了応答をホスト装置３に送信するまでの時間を短縮できる。
【００２９】
［第２の実施の形態］
図２は、第２の実施の形態のストレージシステムを示す図である。第２の実施の形態のストレージシステムは、ストレージ装置１００，２００を含む。ストレージ装置１００は、ストレージシステムのプライマリとして機能する。ストレージ装置２００は、ストレージシステムのセカンダリとして機能する。このストレージシステムでは、予期せぬ災害などに備えて、ストレージ装置１００に格納されるデータを遠隔地に配置されているストレージ装置２００にバックアップさせることが可能になっている。
【００３０】
ストレージ装置１００は、ＣＭ（Controller Module）１０１およびＨＤＤ１０２，１０２ａを有する。ストレージ装置２００は、ＣＭ２０１およびＨＤＤ２０２，２０２ａを有する。ＣＭ１０１とＣＭ２０１との間は、例えば、ファイバチャネル（ＦＣ：Fibre Channel）やｉＳＣＳＩ（Internet Small Computer System Interface）などを用いたＳＡＮ（Storage Area Network）、あるいは、ｉＳＣＳＩを用いたＷＡＮ（Wide Area Network）を介して接続されている。
【００３１】
なお、ＣＭ１０１，２０１は、それぞれ第１の実施の形態のストレージ制御装置１，２の一例である。また、ＣＭ１０１，２０１にそれぞれ接続されるＨＤＤの数は、２台に限定されない。また、ＣＭ１０１，２０１のそれぞれには、複数のＨＤＤが搭載されたディスクアレイ装置が接続されてもよい。
【００３２】
ＣＭ１０１には、ホスト装置３００が接続されている。ＣＭ１０１とホスト装置３００との間は、例えば、ＦＣを用いたＳＡＮを介して接続されている。ホスト装置３００は、ＣＭ１０１に対してＨＤＤ１０２，１０２ａへのアクセスを要求する。ＣＭ１０１は、自装置内のＲＡＭをキャッシュ領域として使用しながら、ホスト装置３００からの要求に応じたＨＤＤ１０２，１０２ａへのアクセスを制御する。
【００３３】
また、ＣＭ１０１は、キャッシュ領域のデータをＣＭ２０１に送信してバックアップさせる。具体的には、ＣＭ１０１は、ホスト装置３００からデータの書き込み要求を受信すると、書き込みデータをキャッシュ領域に書き込むとともにＣＭ２０１にも送信する。ＣＭ１０１は、ＣＭ２０１から、ＣＭ２０１のＲＡＭ上のキャッシュ領域に対する書き込みデータの書き込みの完了通知を受信した後、ホスト装置３００に対して書き込み完了を通知する。
【００３４】
ＣＭ２０１は、ＣＭ１０１から送信されたデータを、自装置内のＲＡＭ上のキャッシュ領域にバックアップする。また、ＣＭ２０１は、ＣＭ１０１と同様のキャッシュ制御により、キャッシュ領域内のデータをＨＤＤ２０２，２０２ａに格納することもできる。
【００３５】
図３は、ストレージ装置のＣＭのハードウェア例を示す図である。ＣＭ１０１は、ＣＰＵ１０３、ＲＡＭ１０４、ＳＳＤ１０５、ＤＩ（Drive Interface）１０６、ＣＡ（Channel Adapter）１０７およびＲＡ（Remote Adapter）１０８を有する。各ユニットがバスに接続されている。
【００３６】
ＣＰＵ１０３は、ＣＭ１０１の情報処理を制御する。ＣＰＵ１０３は、複数のプロセッシング要素を含むマルチプロセッサであってもよい。
ＲＡＭ１０４は、ＣＭ１０１の主記憶装置である。ＲＡＭ１０４は、ＣＰＵ１０３に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０４は、ＣＰＵ１０３による処理に用いる各種データを記憶する。
【００３７】
ＳＳＤ１０５は、ＣＭ１０１の補助記憶装置である。ＳＳＤ１０５は、不揮発性の半導体メモリである。ＳＳＤ１０５には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ＣＭ１０１は、補助記憶装置として、ＳＳＤ１０５の代わりにＨＤＤを備えていてもよい。
【００３８】
ＤＩ１０６は、ＨＤＤ１０２，１０２ａと通信するためのインタフェースである。ＣＡ１０７は、ホスト装置３００と通信するためのインタフェースである。ＲＡ１０８は、ストレージ装置２００と通信するためのインタフェースである。
【００３９】
なお、ＣＭ２０１もＣＭ１０１と同様のハードウェアにより実現できる。
ここで、ＨＤＤ１０２，１０２ａのそれぞれの記憶領域は、例えば、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）として管理される。記憶領域には、１つ以上の論理ボリュームが設定され、各論理ボリュームにはＬＵＮ（Logical Unit Number）が割り当てられている。ホスト装置３００は、ＬＵＮおよび当論理ボリュームのＬＢＡ（Logical Block Address）を指定してアクセス処理を行う。
【００４０】
また、ＣＭ１０１は、論理ボリュームに対するホスト装置３００からの書き込みデータをＣＭ２０１にバックアップさせる際、書き込み先として当該書き込みデータについて指定されたＬＵＮおよびＬＢＡを指定する。これにより、ＣＭ１０１とＣＭ２０１において論理ボリュームが二重化される。
【００４１】
次に、ＣＭ１０１のキャッシュ領域のデータをＣＭ２０１にバックアップするバックアップ処理についての比較例を示し、この比較例における問題点について説明する。図４は、バックアップ処理の比較例を示すシーケンス図である。以下、図４に示す処理をステップ番号に沿って説明する。
【００４２】
（ＳＴ１０１）ホスト装置３００は、ＣＭ１０１に書き込み要求を送信する。
（ＳＴ１０２）ＣＭ１０１は、書き込みデータを一時的に記憶するためのバッファ領域をＲＡＭ１０４に確保する。
【００４３】
（ＳＴ１０３）ＣＭ１０１は、書き込み準備が完了した旨をホスト装置３００に通知する。
（ＳＴ１０４）ホスト装置３００は、書き込みデータをＣＭ１０１に送信する。
【００４４】
（ＳＴ１０５）ＣＭ１０１は、書き込みデータを受信し、ＲＡＭ１０４に確保したバッファ領域に書き込みデータを書き込む。さらに、ＣＭ１０１は、ＲＡＭ１０４上のキャッシュ領域における書き込み要求によって指定された記憶領域に、バッファ領域の書き込みデータを書き込む。なお、バッファ領域への書き込みデータの書き込みが完了した時点で、次のステップＳＴ１０６の処理が実行されてもよい。
【００４５】
（ＳＴ１０６）ＣＭ１０１は、書き込み要求をＣＭ２０１に送信する。
（ＳＴ１０７）ＣＭ２０１は、自装置が有するＲＡＭに書き込みデータを一時的に記憶するためのバッファ領域を確保する。
【００４６】
（ＳＴ１０８）ＣＭ２０１は、書き込み準備が完了した旨をＣＭ１０１に通知する。
（ＳＴ１０９）ＣＭ１０１は、書き込みデータをＣＭ２０１に送信する。
（ＳＴ１１０）ＣＭ２０１は、書き込みデータを受信し、自装置が有するＲＡＭに確保したバッファ領域に書き込みデータを書き込む。さらに、ＣＭ２０１は、ＲＡＭ上のキャッシュ領域における書き込み要求によって指定された記憶領域に、バッファ領域の書き込みデータを書き込む。
【００４７】
（ＳＴ１１１）ＣＭ２０１は、書き込みデータの自装置が有するＲＡＭへの書き込みが完了した旨をＣＭ１０１に通知する。
（ＳＴ１１２）ＣＭ１０１は、ホスト装置３００に書き込み完了の通知を行う。
【００４８】
以上の処理例では、ステップＳＴ１０９で書き込みデータがＣＭ１０１からＣＭ１０２に送信される前に、ステップＳＴ１０６，ＳＴ１０８のように、ＣＭ１０１とＣＭ２０１との間で通信が行われる。このため、ホスト装置３００に対する書き込み完了の通知までに時間を要するという問題がある。さらに、ＣＭ１０１とＣＭ２０１との距離が長ければ長いほど、ホスト装置３００に対する書き込み完了の通知までの時間が長くなる可能性がある。
【００４９】
そこで、第２の実施の形態では、ＣＭ１０１がホスト装置３００から書き込み要求を受信する前に、ＣＭ２０１が先行して読み出し要求をＣＭ１０１に送信し、読み出し要求に対する応答として書き込みデータを受信する。これにより、ステップＳＴ１０６，ＳＴ１０８の通信処理を行わなくて済む。そのため、ホスト装置３００に対する書き込み完了の通知までに要する時間を短くできる。
【００５０】
図５は、各ストレージ装置のＣＭの機能例を示す図である。ＣＭ１０１は、記憶部１１０、アクセス制御部１２０および監視部１３０を有する。記憶部１１０は、バッファ記憶部１１１、データ格納部１１２およびテーブル記憶部１１３を有する。バッファ記憶部１１１、データ格納部１１２およびテーブル記憶部１１３は、ＲＡＭ１０４に確保した記憶領域として実装される。
【００５１】
バッファ記憶部１１１は、書き込みデータを一時的に記憶する。バッファ記憶部１１１は、アクセス制御部１２０によって確保されたバッファ領域の集合として実現される。データ格納部１１２は、ホスト装置３００から論理ボリュームへのアクセスの際にキャッシュ領域として使用される。
【００５２】
テーブル記憶部１１３は、読み出し要求管理テーブルおよび書き込み要求管理テーブルを記憶する。読み出し要求管理テーブルには、ＣＭ２０１から送信された読み出し要求に関する情報が登録される。書き込み要求管理テーブルには、ホスト装置３００から受信し、ＣＭ２０１からの読み出し要求の応答として書き込みデータを送信した書き込み要求を示す情報が登録される。
【００５３】
アクセス制御部１２０および監視部１３０は、例えば、ＣＭ１０１が有するＣＰＵ１０３として実装される。
アクセス制御部１２０は、ホスト装置３００からのアクセス処理を制御する。例えば、アクセス制御部１２０は、ホスト装置３００から読み出し要求を受信したとき、読み出しが要求されたデータがデータ格納部１１２に格納されている場合には、そのデータをデータ格納部１１２から読み出してホスト装置３００に送信する。一方、アクセス制御部１２０は、読み出しが要求されたデータがデータ格納部１１２に格納されていない場合には、そのデータをＨＤＤ１０２，１０２ａから読み出してデータ格納部１１２に格納した後、そのデータをホスト装置３００に送信する。
【００５４】
また、ホスト装置３００から書き込み要求を受信した場合、アクセス制御部１２０は、バッファ記憶部１１１に確保したバッファ領域に、ホスト装置３００から受信した書き込みデータを一時的に格納する。アクセス制御部１２０は、バッファ領域から書き込みデータを読み出し、ホスト装置３００から指定されたＬＵＮおよびＬＢＡに基づくデータ格納部１１２の記憶領域に書き込みデータを格納する。また、アクセス制御部１２０は、ホスト装置３００からの書き込み要求の受信時とは非同期のタイミングで、データ格納部１１２に格納した書き込みデータをＨＤＤ１０２，１０２ａの対応する記憶領域に格納する。
【００５５】
また、アクセス制御部１２０は、ホスト装置３００から書き込み要求を受信したとき、書き込みデータをデータ格納部１１２に格納するだけでなく、書き込みデータをＣＭ２０１のキャッシュ領域（後述するデータ格納部２１２）にバックアップするように制御する。このバックアップ処理を短時間で実現するために、アクセス制御部１２０は、ホスト装置３００から書き込み要求を受信する前に、ＣＭ２０１から読み出し要求を受信する。アクセス制御部１２０は、ホスト装置３００から書き込み要求を受信したとき、受信済みの読み出し要求の応答として書き込みデータをＣＭ２０１に送信する。また、アクセス制御部１２０は、ＣＭ２０１からキャッシュ領域への書き込みデータの書き込みが完了した旨の通知を受信した場合、ホスト装置３００に書き込み完了通知を送信する。
【００５６】
監視部１３０は、ＣＭ２０１から読み出し要求を受信した場合、受信した時刻から一定時間内に読み出し要求に対応する応答ができるか否かを監視する。
ＣＭ２０１は、記憶部２１０、発行制御部２２０および書き込み制御部２３０を有する。記憶部２１０は、バッファ記憶部２１１、データ格納部２１２およびテーブル記憶部２１３を有する。バッファ記憶部２１１、データ格納部２１２およびテーブル記憶部２１３は、ＣＭ２０１が有するＲＡＭに確保した記憶領域として実装される。
【００５７】
バッファ記憶部２１１は、ＣＭ１０１から受信した書き込みデータを一時的に記憶する。バッファ記憶部２１１は、アクセス制御部１２０によって確保されたバッファ領域の集合として実現される。このため、バッファ記憶部２１１の容量は確保されたバッファ領域の数や各バッファ領域のサイズに応じて変化する。データ格納部２１２は、ＣＭ１０１のデータ格納部１１２に記憶されたデータに対応するバックアップデータを記憶する。
【００５８】
テーブル記憶部２１３は、要求テーブルおよび統計テーブルを記憶する。要求テーブルには、読み出し要求に関する情報が登録される。統計テーブルには、書き込み制御部２３０が所定時間内に読み出し要求に対する応答を受信した数などを示す情報が登録される。
【００５９】
発行制御部２２０および書き込み制御部２３０は、例えば、ＣＭ２０１が有するＣＰＵとして実装される。発行制御部２２０および書き込み制御部２３０は、ＣＭ１０１のデータ格納部１１２に記憶されたデータのバックアップのための処理を実行する。
【００６０】
発行制御部２２０は、読み出し要求に対する応答としてストレージ装置１００から送信される書き込みデータを格納するためのバッファ領域をバッファ記憶部２１１に確保する。ＣＭ２０１からＣＭ１０１へは複数の読み出し要求が送信され、発行制御部２２０は、送信された各読み出し要求に対応するバッファ領域を確保する。これらの複数のバッファ領域には、サイズが異なるものが含まれる。また、発行制御部２２０は、ＣＭ１０１に送信する読み出し要求の数や、各読み出し要求に割り当てるバッファ領域のサイズを調整する。
【００６１】
書き込み制御部２３０は、ストレージ装置１００に読み出し要求を送信する。この読み出し要求は、特定のデータを指定するものではない。この読み出し要求は、データサイズの指定を含むものである。すなわち、書き込み制御部２３０は、発行制御部２２０がバッファ記憶部２１１に確保したバッファ領域のサイズ以内のデータを要求するための読み出し要求をストレージ装置１００に送信する。
【００６２】
書き込み制御部２３０は、ＣＭ１０１から読み出し要求の応答として、ホスト装置３００から書き込みが要求された書き込みデータを受信した場合、書き込みデータを対応するバッファ領域に一時的に格納した後、その書き込みデータをデータ格納部２１２に書き込む。そして、書き込み制御部２３０は、書き込みデータの書き込みが完了した旨の通知をＣＭ１０１に送信する。
【００６３】
ここで、書き込み制御部２３０が読み出し要求をストレージ装置１００に送信してから書き込みデータを受信し、バッファ記憶部２１１に格納するまでを簡単に説明する。
発行制御部２２０は、バッファ記憶部２１１に複数のバッファ領域を確保する。これらの複数のバッファ領域には、サイズが異なるものが含まれる。書き込み制御部２３０は、発行制御部２２０が確保したバッファ領域にそれぞれ対応する読み出し要求をＣＭ１０１に送信する。アクセス制御部１２０は、ホスト装置３００から書き込み要求を受信すると、ＣＭ２０１から受信済みの複数の読み出し要求の中から書き込み要求で指定されたデータサイズに合う読み出し要求を特定する。アクセス制御部１２０は、特定した読み出し要求に対する応答として、ホスト装置３００から受信した書き込みデータをＣＭ２０１に送信する。書き込み制御部２３０は、アクセス制御部１２０が特定した読み出し要求に対して割り当てられていたバッファ領域に書き込みデータを一時的に格納した後、当該データをデータ格納部２１２に格納する。
【００６４】
図６は、ＣＭ間の通信で使用される情報を示す図である。ここでは、ＣＭ１０１とＣＭ２０１との間がＦＣを用いたＳＡＮを介して接続される場合の例を示す。
図６（Ａ）は、書き込み制御部２３０が生成する読み出し要求のパケットを示す図である。例えば、この読み出し要求は、後述する図１０のステップＳＴ１２２の読み出し要求である。読み出し要求のパケットには、ＦＣパケット識別子、ＳＣＳＩコマンド識別子、ＣＤＢ（Command Descriptor Block）の項目が含まれる。ＦＣパケット識別子には、ＦＣパケットを識別する情報が登録される。ＳＣＳＩコマンド識別子には、ＳＣＳＩコマンドを識別する情報として、ＣＤＢの送信を示す情報が登録される。ＣＤＢには、コマンドコード、要求サイズなどの項目が含まれる。コマンドコードには、ストレージ装置１００がホスト装置３００から書き込み要求を受信する前の先行の読み出し要求であることを示すコード名が登録される。要求サイズには、当該読み出し要求に対してバッファ記憶部２１１に確保されたバッファ領域のサイズを示す情報が登録される。
【００６５】
図６（Ｂ）は、読み出し要求に対する応答として、ストレージ装置２００に送信される応答パケットを示す図である。応答パケットには、ＦＣパケット識別子、ＳＣＳＩコマンド識別子、データ領域が含まれる。
【００６６】
ＦＣパケット識別子には、ＦＣパケットを識別する情報が登録される。ＳＣＳＩコマンド識別子には、ＳＣＳＩコマンドを識別する情報として、読み出しが要求されたデータを含むことを示す情報が登録される。
【００６７】
データ領域には、データ格納部２１２へ転送する実データにヘッダ情報が付加される。ヘッダ情報には、ＬＵＮ、開始ＬＢＡ、ブロック数、転送ＩＤ（identifier）の項目が含まれる。ＬＵＮ、開始ＬＢＡおよびブロック数は、データ格納部２１２における書き込み先論理アドレスを示す。すなわち、ＬＵＮには、書き込み先として指定されたＬＵＮが登録される。開始ＬＢＡには、指定されたＬＵＮにおける書き込み開始位置を示すＬＢＡが登録される。ブロック数には、書き込み先領域に含まれる論理ブロックの数が登録される。この論理ブロックの数とは、データ格納部２１２に格納されるデータサイズを示す。転送ＩＤには、当該応答パケットの送信処理に対してＣＭ１０１が任意で割り当てた識別子が登録される。
【００６８】
図６（Ｃ）は、書き込み制御部２３０が生成する書き込み完了通知のパケットを示す図である。例えば、この書き込み完了通知は、後述する図１０のステップＳＴ１３１の書き込み完了通知である。書き込み完了通知には、ＦＣパケット識別子、ＳＣＳＩコマンド識別子、ＣＤＢの項目が含まれる。ＦＣパケット識別子には、ＦＣパケットを識別する情報が登録される。ＳＣＳＩコマンド識別子には、ＳＣＳＩコマンドを識別する情報として、ＣＤＢの送信を示す情報が登録される。ＣＤＢには、コマンドコード、転送ＩＤなどの項目が含まれる。コマンドコードには、図６（Ｂ）の応答パケットの受信に応じてデータをデータ格納部２１２に書き込み、その書き込みが完了したことを示すコード名が登録される。転送ＩＤには、対応する応答パケットのヘッダ情報に登録された転送ＩＤが登録される。
【００６９】
図７は、要求テーブルの例を示す図である。要求テーブル２１４は、テーブル記憶部２１３に格納される。要求テーブル２１４は、識別番号、カテゴリ、サイズ範囲の項目を含む。
【００７０】
識別番号の項目には、書き込み制御部２３０がＣＭ１０１に送信した読み出し要求を識別する識別子が登録される。この識別子には、図６（Ａ）のＳＣＳＩコマンド識別子が登録される。カテゴリの項目には、読み出し要求に対する応答として送信されるデータサイズに関するカテゴリを示す情報が登録される。この情報は、読み出し要求に対する応答として送信可能なデータサイズの上限を示し、読み出し要求に対して割り当てられたバッファ領域のサイズを示す。サイズ範囲の項目には、カテゴリに対応するデータサイズの範囲を示す情報が登録される。また、サイズ範囲に示されている“Ｓ”は、サイズを示している。また、他のテーブルのサイズ範囲の項目の“Ｓ”も同様にサイズを示している。
【００７１】
例えば、要求テーブル２１４には、識別番号が“Ｒ９”、カテゴリが“４ＫＢ”、サイズ範囲が“１ＫＢ＜Ｓ≦４ＫＢ”という情報が登録される。これは、識別番号“Ｒ９”の読み出し要求に対する応答としてＣＭ１０１から４ＫＢを上限とするデータの受信が可能であることを示す。また、バッファ領域の無駄な領域が大きくなることを防ぐために、この読み出し要求に対する応答により送信されるデータのサイズは１ＫＢより大きいことが望ましいことを示す。
【００７２】
図８は、統計テーブルの例を示す図である。統計テーブル２１５は、テーブル記憶部２１３に格納される。統計テーブル２１５は、カテゴリ、サイズ範囲、統計個数、最適確保数の項目を含む。
【００７３】
カテゴリの項目には、カテゴリを示す情報が登録される。サイズ範囲の項目には、カテゴリに対応するデータサイズの範囲を示す情報が登録される。統計個数の項目には、書き込み制御部２３０が一定の収集期間内に、ＣＭ１０１がホスト装置３００から受信し、ＣＭ１０１からＣＭ２０１に送信された書き込みデータの数を示す情報が登録される。収集期間の時間とは、例えば、１分である。なお、統計個数がカウントアップされる条件には、ＣＭ２０１からの読み出し要求の応答として書き込みデータがＣＭ１０１から送信された場合と、ＣＭ１０１から書き込み要求によって書き込みデータが送信された場合とが含まれる。最適確保数の項目には、発行制御部２２０がカテゴリに対応するサイズのバッファ領域をバッファ記憶部２１１に確保すべき数を示す情報が登録される。
【００７４】
統計個数は、収集期間が終了するごとに“０”にリセットされる。また、収集期間が終了したとき、その時点での統計個数に基づいて、次の収集期間に確保すべきバッファ領域の最適数がカテゴリごとに計算され、計算結果によって統計テーブル２１５の最適確保数が更新される。
【００７５】
図９は、読み出し要求管理テーブルの例を示す図である。読み出し要求管理テーブル１１４は、テーブル記憶部１１３に格納される。読み出し要求管理テーブル１１４は、識別番号、カテゴリ、サイズ範囲、受信時刻の項目を含む。
【００７６】
識別番号の項目には、読み出し要求を識別する識別子が登録される。また、この識別子には、例えば、図６（Ａ）のＳＣＳＩコマンド識別子が登録される。識別番号の項目に登録される識別子は、ＣＭ２０１から受信済みで、かつ、応答を行っていない読み出し要求を示す。カテゴリの項目には、カテゴリを示す情報が登録される。サイズ範囲の項目には、カテゴリに対応するデータサイズの範囲を示す情報が登録される。受信時刻の項目には、アクセス制御部１２０が読み出し要求を受信した時刻が登録される。
【００７７】
図１０は、第２の実施の形態のバックアップ処理を示すシーケンス図である。詳細な処理は図１１〜１５で説明し、図１０ではＣＭ１０１，２０１、ホスト装置３００の装置間における通信の概略的な処理の流れを説明する。以下、図１０に示す処理をステップ番号に沿って説明する。
【００７８】
（ＳＴ１２１）ＣＭ２０１は、バッファ記憶部２１１に所定サイズのバッファ領域を確保する。
（ＳＴ１２２）ＣＭ２０１は、ステップＳＴ１２１で確保したバッファ領域が割り当てられた読み出し要求をＣＭ１０１に送信する。
【００７９】
（ＳＴ１２３）ＣＭ１０１は、ホスト装置３００から書き込み要求が送信されるのを待つ。なお、図１０では、説明を簡単にするために、次のステップＳ１２４の前にＣＭ２０１から読み出し要求が１回だけ送信されたものとする。
【００８０】
（ＳＴ１２４）ホスト装置３００は、ＣＭ１０１に書き込み要求を送信する。
（ＳＴ１２５）ＣＭ１０１は、バッファ記憶部１１１に書き込みデータを書き込むためのバッファ領域を確保する。
【００８１】
（ＳＴ１２６）ＣＭ１０１は、書き込み準備が完了した旨をホスト装置３００に通知する。
（ＳＴ１２７）ホスト装置３００は、書き込みデータをＣＭ１０１に送信する。
【００８２】
（ＳＴ１２８）ＣＭ１０１は、書き込みデータを受信し、バッファ記憶部１１１に確保されたバッファ領域に書き込みデータを書き込む。また、ＣＭ１０１は、バッファ領域に書き込まれた書き込みデータをデータ格納部１１２に格納する。
【００８３】
（ＳＴ１２９）ＣＭ１０１は、読み出し要求の応答として、バッファ領域に書き込まれた書き込みデータをＣＭ２０１に送信する。
（ＳＴ１３０）ＣＭ２０１は、書き込みデータを受信し、読み出し要求に対して割当てられていたバッファ領域に書き込みデータを書き込む。ＣＭ２０１は、バッファ領域に書き込まれた書き込みデータをデータ格納部２１２に格納する。
【００８４】
（ＳＴ１３１）ＣＭ２０１は、ＣＭ１０１に書き込み完了通知を送信する。
（ＳＴ１３２）ＣＭ１０１は、ホスト装置３００に書き込み完了通知を送信する。
（ＳＴ１３３）ＣＭ１０１は、ステップＳＴ１３１の書き込み完了通知に対する応答をＣＭ２０１に送信する。
【００８５】
以上の図１０の処理によれば、ＣＭ１０１は、ホスト装置３００から書き込み要求を受信する前に、ＣＭ２０１から先行して送信された読み出し要求を受信する。そして、ＣＭ１０１は、ホスト装置３００から書き込み要求を受信すると、ＣＭ２０１から受信済みの読み出し要求に対する応答として、ホスト装置３００からの書き込みデータをＣＭ２０１に送信し、ＣＭ２０１のデータ格納部１１２にバックアップさせる。これにより、ＣＭ１０１は、ホスト装置３００から書き込み要求を受信した後に、図４のステップＳＴ１０６，ＳＴ１０８のような通信を行わずに、書き込みデータをＣＭ２０１へ送信できる。そのため、ホスト装置３００に対する書き込み完了の通知までに要する時間を短くできる。
【００８６】
次に、ＣＭ２０１における処理の詳細についてフローチャートを用いて説明する。
まず、図１１は、読み出し要求の送信処理の例を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。また、後述するバッファ領域の確保および統計テーブル２１５の更新などの処理は、統計テーブル２１５の全てのカテゴリに対して行われるものとする。
【００８７】
（Ｓ１１）発行制御部２２０は、統計テーブル２１５の各カテゴリに対応する最適確保数の項目に、予め決められた初期値を登録する。発行制御部２２０は、各カテゴリに対応するサイズのバッファ領域を、登録した最適確保数の分だけバッファ記憶部２１１に確保する。例えば、発行制御部２２０は、統計テーブル２１５のカテゴリ“６４ＫＢ”に対応する最適確保数として“４”を登録した場合、６４ＫＢのバッファ領域を４つ確保する。
【００８８】
発行制御部２２０は、バッファ領域の確保が完了した旨を書き込み制御部２３０に通知し、読み出し要求の送信を依頼する。また、発行制御部２２０は、統計テーブル２１５の各カテゴリに対応する統計個数の値をすべて“０”にリセットする。
【００８９】
（Ｓ１２）書き込み制御部２３０は、ステップＳ１１で発行制御部２２０がバッファ記憶部２１１に確保したバッファ領域にそれぞれ対応する読み出し要求をＣＭ１０１に送信する。例えば、統計テーブル２１５のカテゴリ“６４ＫＢ”に対応する最適確保数が“４”の場合、書き込み制御部２３０は、ＣＤＢの要求サイズの項目に“６４ＫＢ”を登録した読み出し要求のパケットを４つ、ＣＭ１０１に送信する。読み出し要求の要求サイズには、発行制御部２２０が割り当てたデータサイズが登録される。例えば、読み出し要求の要求サイズには、“６４ＫＢ”が登録される。
【００９０】
書き込み制御部２３０は、送信した読み出し要求に関する情報を要求テーブル２１４に登録する。具体的には、要求テーブル２１４の識別番号には、ＳＣＳＩコマンド識別子が登録される。要求テーブル２１４のカテゴリには、読み出し要求の要求サイズが登録される。要求テーブル２１４のサイズ範囲には、読み出し要求の要求サイズに対応するデータサイズの範囲が登録される。
【００９１】
（Ｓ１３）書き込み制御部２３０は、ＣＭ２０１の動作を終了するかを判定する。例えば、ＣＭ２０１の電源をオフにする指示を受けた場合に、動作を終了すると判定する。動作を終了すると判定された場合、図１１の処理は終了される。一方、ステップＳ１２またはステップＳ１９の実行、もしくはステップＳ１６で“Ｙｅｓ”と判定されてから一定時間内に動作を終了すると判定されなかった場合、書き込み制御部２３０は、発行制御部２２０に統計テーブル２１５の最適確保数を更新するように指示する。そして、処理をステップＳ１４に進める。これにより、ステップＳ１４の処理は、一定時間間隔で、すなわち統計個数を収集するための一定の収集期間が終了するたびに実行される。なお、一定時間とは、例えば１分である。
【００９２】
（Ｓ１４）発行制御部２２０は、統計テーブル２１５の統計個数を参照して、カテゴリ毎に最適確保数の計算を行う。最適確保数は、“全体係数×（１つのカテゴリの統計個数／全カテゴリの統計個数の合計）”という式により算出される。全体係数は、０以上の整数である。また、全体係数は、“全体係数×１ＭＢ（最大のカテゴリ）”がバッファ記憶部２１１として確保可能な最大容量を超えないように算出される。計算した結果、小数点以下の数を含む場合、小数点以下第１位の値を四捨五入してもよい。
【００９３】
なお、あるカテゴリの最適確保数の計算値が１未満になった場合でも、次のステップＳ１５で統計テーブル２１５に登録する最適確保数を１以上の所定数とすることが望ましい。これにより、直前の収集期間にそのカテゴリに対応する書き込み要求がホスト装置３００から要求されなかった場合でも、次の収集期間にそのカテゴリに対応する書き込み要求がホスト装置３００から要求されたときに、最適な読み出し要求を選択することができる。
【００９４】
（Ｓ１５）発行制御部２２０は、ステップＳ１４で計算したカテゴリごとの最適確保数を統計テーブル２１５に登録する。発行制御部２２０は、統計テーブル２１５の全てのカテゴリの統計個数を“０”にリセットにする。また、発行制御部２２０は、カテゴリ毎に更新前の統計テーブル２１５の最適確保数の情報を記憶部２１０に一時的に格納する。
【００９５】
（Ｓ１６）発行制御部２２０は、カテゴリ毎に統計テーブル２１５の更新前の最適確保数とステップＳ１６で更新した更新後の最適確保数とを比較する。全カテゴリについて、更新後の最適確保数が更新前の最適確保数以下である場合、バッファ領域の確保数は足りている。この場合、処理をステップＳ１３に進める。一方、更新後の最適確保数の方が多いカテゴリが１つでも存在している場合、処理をステップＳ１７に進める。
【００９６】
（Ｓ１７）発行制御部２２０は、更新後の最適確保数の方が多いカテゴリについて、差分に対応する数のバッファ領域をバッファ記憶部２１１に確保する。例えば、更新後のカテゴリ“１ＫＢ”の最適確保数が８個、更新前のカテゴリ“１ＫＢ”の最適確保数が７個の場合、発行制御部２２０は、１ＫＢのバッファ領域を１つ新たに確保する。
【００９７】
発行制御部２２０は、書き込み制御部２３０に新たに確保したバッファ領域に関する情報を通知して、読み出し要求の送信を依頼する。
（Ｓ１８）書き込み制御部２３０は、ステップＳ１７で発行制御部２２０が新たに確保したバッファ領域のそれぞれに対応する読み出し要求を、ＣＭ１０１に送信する。例えば、１ＫＢのバッファ領域が新たに１つ確保された場合、書き込み制御部２３０は、ＣＤＢの要求サイズの項目に“１ＫＢ”を登録した読み出し要求のパケットを１つ、ＣＭ１０１に送信する。
【００９８】
（Ｓ１９）書き込み制御部２３０は、ステップＳ１８で送信した読み出し要求に関する情報を要求テーブル２１４に登録する。そして、処理をステップＳ１３に進める。
図１２は、読み出し要求に対する応答の受信処理の例を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。
【００９９】
（Ｓ２１）書き込み制御部２３０は、読み出し要求に対する応答を受信する。
（Ｓ２２）書き込み制御部２３０は、読み出し要求に対する応答のデータ領域を参照し、ヘッダ情報のブロック数を確認する。ブロック数が０の場合、書き込み制御部２３０は、受信した読み出し要求に対してバッファ記憶部２１１に割当てていた記憶領域を解放する。そして、処理をステップＳ２６に進める。ブロック数が０でない場合、処理をステップＳ２３に進める。
【０１００】
（Ｓ２３）書き込み制御部２３０は、読み出し要求に対して割当てられていたバッファ記憶部２１１のバッファ領域に、応答パケットに含まれていた書き込みデータを格納する。例えば、４ＫＢのバッファ領域を確保し、要求サイズ“４ＫＢ”の読み出し要求をしている場合、書き込み制御部２３０は、その読み出し要求の応答として４ＫＢ以下の書き込みデータを受信する。なお、この場合は通常、１ＫＢより大きく４ＫＢ以下の書き込みデータを受信する。書き込み制御部２３０は、受信した書き込みデータを４ＫＢのバッファ領域に格納する。
【０１０１】
書き込み制御部２３０は、バッファ領域に書き込んだ書き込みデータをデータ格納部２１２に書き込む。データ格納部２１２における書き込みデータの書き込み位置は、ヘッダ情報のＬＵＮおよび開始ＬＢＡに基づいて決定される。
【０１０２】
（Ｓ２４）書き込み制御部２３０は、書き込み完了通知を、図６（Ｃ）のようなパケットとしてＣＭ１０１に送信する。書き込み完了通知の転送ＩＤには、書き込みデータに付加されたヘッダ情報の転送ＩＤが登録される。これにより、書き込み完了通知を受信したＣＭ１０１は、書き込み完了通知の転送ＩＤと後述するステップＳ４９で設定する転送ＩＤとを比較することで、どの書き込みデータに対する書き込み完了通知であるかを確認することができる。
【０１０３】
その後、書き込み制御部２３０は、書き込み完了通知に対する応答の通知をＣＭ１０１から受信する。なお、次のステップＳ２５の処理は、書き込み完了通知を送信してから、その応答の通知をＣＭ１０１から受信する前に実行されてもよい。
【０１０４】
（Ｓ２５）書き込み制御部２３０は、受信した書き込みデータのデータサイズから統計テーブル２１５のカテゴリを特定する。書き込み制御部２３０は、特定したカテゴリに対応する統計個数をインクリメントする。例えば、書き込みデータが３ＫＢの場合、統計テーブル２１５を参照すると、３ＫＢは、カテゴリ“４ＫＢ（１ＫＢ＜Ｓ≦４ＫＢ）”に属する。そのため、書き込み制御部２３０は、カテゴリ“４ＫＢ”を特定する。書き込み制御部２３０は、カテゴリ“４ＫＢ”に対応する統計個数をインクリメントする。
【０１０５】
（Ｓ２６）書き込み制御部２３０は、読み出し要求に対する応答に含まれていたＳＣＳＩコマンド識別子に基づいて、要求テーブル２１４に登録された識別番号の中から、受信した応答に対応する読み出し要求を示す識別番号を特定する。書き込み制御部２３０は、特定した識別番号に対応付けられたカテゴリの情報を記憶部２１０に格納する。書き込み制御部２３０は、特定した識別番号に対応するレコードを要求テーブル２１４から削除する。これにより、対応するバッファ領域が解放される。書き込み制御部２３０は、発行制御部２２０に新たにバッファ領域を確保するかを判定するように指示する。
【０１０６】
（Ｓ２７）発行制御部２２０は、ステップＳ２６で記憶部２１０に格納したカテゴリの情報を取得する。発行制御部２２０は、統計テーブル２１５を参照し、取得したカテゴリに対応する最適確保数を特定する。発行制御部２２０は、要求テーブル２１４のカテゴリを参照し、取得したカテゴリと同じカテゴリの登録数を検出する。検出された登録数は、現在確保されているバッファ領域のうち、該当カテゴリに対応するバッファ領域の数を示す。発行制御部２２０は、要求テーブル２１４から検出した登録数が統計テーブル２１５の最適確保数以上であるか否かを判定する。検出した登録数が最適確保数以上の場合、処理を終了する。検出した登録数が最適確保数より少ない場合、発行制御部２２０は、差分を算出する。そして、処理をステップＳ２８に進める。
【０１０７】
（Ｓ２８）発行制御部２２０は、ステップＳ２７で算出した差分に対応する数のバッファ領域をバッファ記憶部２１１に確保する。例えば、ステップＳ２７で、カテゴリ“４ＫＢ”について検出された登録数が最適確保数より“２”少ない場合、発行制御部２２０は、４ＫＢのバッファ領域を２つ新たに確保する。発行制御部２２０は、書き込み制御部２３０に新たに確保したバッファ領域に関する情報を通知して、読み出し要求の送信を依頼する。
【０１０８】
（Ｓ２９）書き込み制御部２３０は、ステップＳ２８で発行制御部２２０が新たに確保したバッファ領域のそれぞれに対応する読み出し要求を、ＣＭ１０１に送信する。
（Ｓ３０）書き込み制御部２３０は、ステップＳ２９で送信した読み出し要求に関する情報を要求テーブル２１４に登録する。そして、処理を終了する。
【０１０９】
なお、ステップＳ２６では、確保されていたバッファ領域が１つ解放され、現在のバッファ領域の確保数が１だけ減少する。ここで、ステップＳ２７で“Ｙｅｓ”と判定された場合には、新たなバッファ領域が確保されない。すなわち、ステップＳ２７で“Ｙｅｓ”と判定されるケースとは、図１２の処理の開始時点において該当カテゴリに対応するバッファ領域の確保数が多過ぎるケースである。このため、新たなバッファ領域が確保されないことで、図１２の処理の開始時点と比較して該当カテゴリに対応するバッファ領域の確保数が１だけ減少する。
【０１１０】
次に、ＣＭ１０１における処理の詳細についてフローチャートを用いて説明する。
まず、図１３は、読み出し要求の受信処理の例を示すフローチャートである。図１３の処理は、ＣＭ１０１がＣＭ２０１から読み出し要求を受信するたびに実行される。以下、図１３に示す処理をステップ番号に沿って説明する。
【０１１１】
（Ｓ３１）アクセス制御部１２０は、ＣＭ２０１から読み出し要求を受信する。アクセス制御部１２０は、読み出し要求管理テーブル１１４に読み出し要求に関する情報を登録する。識別番号には、読み出し要求のＳＣＳＩコマンド識別子が登録される。カテゴリには、読み出し要求の要求サイズが登録される。サイズ範囲には、読み出し要求の要求サイズに対応するデータサイズの範囲が登録される。受信時刻には、アクセス制御部１２０が読み出し要求を受信した時刻が登録される。
【０１１２】
アクセス制御部１２０は、タイマ監視するように監視部１３０に指示する。
（Ｓ３２）監視部１３０は、タイマのカウントを開始する。
（Ｓ３３）監視部１３０は、受信した読み出し要求に対応するタイマキャンセル要求をアクセス制御部１２０から受信したか否かを判定する。タイマキャンセル要求は、ホスト装置３００から書き込み要求を受信し、読み出し要求に対応するバッファの使用を決定した時に受信される。なお、ステップＳ３１で受信した読み出し要求に対応するタイマキャンセル要求であることは、ステップＳ３１で読み出し要求管理テーブル１１４に登録した識別番号と同じ識別番号がアクセス制御部１２０から通知されることで判定される。タイマキャンセル要求を受信した場合、処理を終了する。これにより、該当読み出し要求に対応するタイマカウント処理が終了する。受信していない場合、処理をステップＳ３４に進める。
【０１１３】
（Ｓ３４）監視部１３０は、ステップＳ３１の受信時刻とタイマのカウント値との差分が所定値以上になったか、すなわち、受信時刻から所定時間以上経過したかを判定する。所定時間以上経過した場合、タイムアウトが発生したと判定し、処理をステップＳ３５に進める。所定時間経過していない場合、処理をステップＳ３３に進める。
【０１１４】
（Ｓ３５）監視部１３０は、受信した読み出し要求に対応する応答に含めるヘッダ情報を生成する。監視部１３０は、ヘッダ情報のＬＵＮ番号、開始ＬＢＡ、ブロック数、転送ＩＤに０（ゼロ）を設定する。
【０１１５】
（Ｓ３６）監視部１３０は、ステップＳ３５で生成したヘッダ情報を含む読み出し要求の応答をＣＭ２０１に送信する。この応答は、図６（Ｂ）のような応答パケットとして送信される。ただし、データの項目には、何も格納されないか、またはパディングデータが格納される。
【０１１６】
（Ｓ３７）監視部１３０は、読み出し要求管理テーブル１１４からステップＳ３１で登録した識別番号を含むレコードを削除する。そして、処理を終了する。
上記のステップＳ３２〜Ｓ３７の処理によれば、受信した読み出し要求に対応する応答が一定時間以上ＣＭ１０１から送信されなかった場合に、実データを含まない応答がＣＭ１０１からＣＭ２０１へ送信される。これにより、その読み出し要求のセッションを正常に終了させることができ、ＣＭ２０１で送信要求に対するタイムアウトによるエラーを発生させずにバックアップ処理を継続させることができる。
【０１１７】
図１４は、書き込み要求受信処理の例（その１）を示すフローチャートである。以下、図１４に示す処理をステップ番号に沿って説明する。
（Ｓ４１）アクセス制御部１２０は、ホスト装置３００から書き込み要求を受信する。書き込み要求には、書き込み要求に対応する書き込みデータのデータサイズを示す情報が含まれている。
【０１１８】
（Ｓ４２）アクセス制御部１２０は、読み出し要求管理テーブル１１４のサイズ範囲を参照し、書き込み要求が示すデータサイズに該当するサイズ範囲に対応する読み出し要求（識別番号）が存在するか否かを判定する。例えば、書き込み要求が示すデータサイズが０．７ＫＢの場合、読み出し要求管理テーブル１１４のサイズ範囲を参照すると、０．７ＫＢはサイズ範囲“Ｓ≦１ＫＢ”に該当する。そのため、アクセス制御部１２０は、サイズ範囲“Ｓ≦１ＫＢ”に対応する識別番号を特定する。
【０１１９】
書き込み要求が示すデータサイズに対応する読み出し要求が存在する場合、アクセス制御部１２０は、識別番号を特定する。そして、処理をステップＳ４４に進める。書き込み要求が示すデータサイズに対応する読み出し要求が存在しない場合、処理をステップＳ４３に進める。
【０１２０】
（Ｓ４３）アクセス制御部１２０は、図４のステップＳＴ１０２〜ＳＴ１０５と同様の手順でホスト装置３００から書き込みデータを受信してデータ格納部１１２に格納する。さらに、アクセス制御部１２０は、図４のステップＳＴ１０６〜Ｓ１１２と同様の手順で、書き込み要求によるＣＭ２０１へのデータ送信を行う。そして、処理を終了する。
【０１２１】
（Ｓ４４）アクセス制御部１２０は、タイマキャンセル要求を、ステップＳ４２で特定した識別番号とともに監視部１３０に通知する。
（Ｓ４５）アクセス制御部１２０は、読み出し要求管理テーブル１１４からステップＳ４２で特定した識別番号を含むレコードを削除する。
【０１２２】
（Ｓ４６）アクセス制御部１２０は、バッファ記憶部１１１に書き込みデータを格納するためのバッファ領域を確保する。
（Ｓ４７）アクセス制御部１２０は、書き込み準備が完了した旨をホスト装置３００に通知する。
【０１２３】
（Ｓ４８）アクセス制御部１２０は、ホスト装置３００から書き込みデータを受信する。アクセス制御部１２０は、バッファ記憶部１１１に確保したバッファ領域に書き込みデータを書き込む。その後、アクセス制御部１２０は、バッファ領域に書き込んだ書き込みデータをデータ格納部１１２に書き込む。データ格納部１１２への書き込み位置は、ステップＳ４１で受信した書き込み要求に含まれるＬＵＮ、開始ＬＢＡおよびブロック数に基づいて決定される。
【０１２４】
（Ｓ４９）アクセス制御部１２０は、読み出し要求に対する応答に含めるヘッダ情報を生成する。アクセス制御部１２０は、ヘッダ情報のＬＵＮ番号、開始ＬＢＡ、ブロック数に、ステップＳ４１で受信した書き込み要求に含まれるＬＵＮ、開始ＬＢＡおよびブロック数を設定する。また、アクセス制御部１２０は、ステップＳ４１で受信した書き込み要求を示す転送ＩＤを生成し、生成した転送ＩＤをヘッダ情報の転送ＩＤに設定する。転送ＩＤは、例えば、ステップＳ４１で受信した書き込み要求パケットのパケット識別子とされてもよい。
【０１２５】
アクセス制御部１２０は、ヘッダ情報を付加した書き込みデータを、図６（Ｂ）のような応答パケットとしてＣＭ２０１に送信する。そして、処理をステップＳ５１に進める。
図１５は、書き込み要求受信処理の例（その２）を示すフローチャートである。以下、図１５に示す処理をステップ番号に沿って説明する。
【０１２６】
（Ｓ５１）アクセス制御部１２０は、タイマのカウントを開始する。
（Ｓ５２）アクセス制御部１２０は、ＣＭ２０１からの書き込み完了通知のうち、ステップＳ４９でヘッダ情報に設定した転送ＩＤがＣＤＢに設定されている書き込み完了通知を監視する。アクセス制御部１２０は、所定時間内にＣＭ２０１から該当する書き込み完了通知を受信したか否かを判定する。受信した場合、処理をステップＳ５４に進める。受信しなかった場合、処理をステップＳ５３に進める。
【０１２７】
（Ｓ５３）アクセス制御部１２０は、ステップＳ４１の書き込み要求に対応する処理が正常に完了できなかったことを示すエラー通知をホスト装置３００に送信する。そして、処理を終了する。
【０１２８】
（Ｓ５４）アクセス制御部１２０は、ステップＳ４１の書き込み要求に対応する処理が正常に完了したことを示す書き込み完了通知をホスト装置３００に送信する。
（Ｓ５５）アクセス制御部１２０は、ステップＳ５２でＣＭ２０１から受信した該当する書き込み完了通知に対する応答をＣＭ２０１に送信する。そして、処理を終了する。
【０１２９】
以上の図１４〜１５の処理では、ステップＳ４９において書き込みデータにヘッダ情報が付加されることで、ＣＭ２０１の書き込み制御部２３０は、先行して読み出し要求を送信しても、ヘッダ情報を参照することで書き込みデータの書き込み先を認識することができる。
【０１３０】
また、ステップＳ４９で送信される応答と、ステップＳ５２で受信される書き込み完了通知とは別セッションの通信で送受信される。このため、アクセス制御部１２０は、ＣＭ２０１から送信される書き込み完了通知が、どの書き込みデータに対応するものなのかを判別できない。これに対し、ステップＳ４９でヘッダ情報に転送ＩＤが付加され、その転送ＩＤが書き込み完了通知に設定されることで、アクセス制御部１２０は、ＣＭ２０１から受信した書き込み完了通知がどの書き込みデータに対応するものなのかを判別できる。これにより、ステップＳ５５で正しい書き込み要求に対応する書き込み完了通知をホスト装置３００に確実に送信できる。
【０１３１】
第２の実施の形態では、複数のバッファ領域がＣＭ２０１に確保され、それらのバッファ領域に対応する読み出し要求がＣＭ１０１に先行して送信される。これにより、ＣＭ１０１は、ホスト装置３００から連続して書き込み要求を受信した場合でも、ＣＭ２０１から新たな読み出し要求が送信されるのを待たずに、受信済みの読み出し要求の中から選択したものに対する応答として書き込みデータをＣＭ２０１に送信できる確率が高くなる。よって、ホスト装置３００に対する応答性能を向上させることができる。
【０１３２】
また、第２の実施の形態では、ＣＭ２０１は、サイズの異なるバッファ領域をＣＭ２０１に確保し、それらのバッファ領域に対応する読み出し要求をＣＭ１０１に先行して送信する。そして、ＣＭ１０１は、受信済みの読み出し要求の中から、書き込みデータのサイズに近いバッファ領域が割り当てられた読み出し要求を選択して、その応答として書き込みデータを送信する。これにより、ＣＭ２０１において余分なバッファ領域が確保されにくくなる。例えば、６４ＫＢのバッファ領域に８ＫＢの書き込みデータが書き込まれた場合、５６ＫＢのバッファ領域が余分であったことになる。一方、６４ＫＢのバッファ領域だけでなく、８ＫＢのバッファ領域も確保されていることで、８ＫＢの書き込みデータを受信した場合に、その書き込みデータを８ＫＢのバッファ領域に書き込むことができる。
【０１３３】
さらに、ＣＭ２０１は、図１１，１２に示した処理により、バッファ領域の確保数や、確保する各バッファ領域のサイズを、直前の収集期間におけるホスト装置３００からの書き込み要求の履歴に基づいて最適化することができる。ここで、図１６を用いて、バッファ領域確保の最適化の例について説明する。
【０１３４】
図１６は、バッファ領域確保の最適化処理の具体例を示す図である。図１６（Ａ）の統計テーブル２１５ａは、ある収集期間が終了した時点での統計テーブル２１５の例を示す。例えば、統計テーブル２１５ａでは、カテゴリ“４ＫＢ”に対応する統計個数の項目は、書き込み制御部２３０が１分間にカテゴリ“４ＫＢ”に属する書き込みデータを４０個受信したことを示している。
【０１３５】
発行制御部２２０は、書き込み制御部２３０から統計テーブル２１５の最適確保数を更新するように指示を受けて、最適確保数の更新処理を行う。最適確保数は、“全体係数×（１つのカテゴリの統計個数／全カテゴリの統計個数の合計）”という式により算出される。例えば、図１６（Ａ）においてカテゴリ“４ＫＢ”に対応する最適確保数の更新を考える。全体係数を４８とする。上記式を用いると４８×（４０／４２０）≒４．５７となる。４．５７を小数点第１の位を四捨五入すると５になる。発行制御部２２０は、カテゴリ“４ＫＢ”に対応する最適確保数を５に更新する。発行制御部２２０は、同様に全てのカテゴリに対しても割当て数の更新処理を行う。
【０１３６】
また、計算した結果が０（ゼロ）の場合は、最適確保数を１にすることが望ましい。例えば、図１６（Ａ）においてカテゴリ“２５６ＫＢ”に対応する最適確保数の更新を考える。全体係数を４８とする。上記式を用いると４８×（０／４２０）＝０となる。発行制御部２２０は、カテゴリ“２５６ＫＢ”に対応する最適確保数を１に更新する。
【０１３７】
発行制御部２２０は、全てのカテゴリに対する割当て数の更新が終了したら、統計テーブル２１５の全てのカテゴリの統計個数を０（ゼロ）にする。図１６（Ｂ）の統計テーブル２１５ｂは、全てのカテゴリに対して最適確保数の更新を行った後の状態を示している。
【０１３８】
ここで、統計テーブル２１５ａを参照すると、１ＭＢのカテゴリに属する書き込みデータの受信数は少ない。受信数が少ないのであれば１分経過後も同様に、受信数は少ないと推測できる。１ＭＢのバッファ領域の確保数を調整しないと、受信しないであろう書き込みデータのために余分な１ＭＢのバッファ領域が確保されたままになることになる。一方、１６ＫＢのカテゴリに属する書き込みデータの受信数は多いので、１分経過後も同様に、受信数は多いと推測できる。１６ＫＢのバッファ領域の確保数を調整しないと、確保された数以上の大量の書き込みデータを受信した場合には、いくつかの書き込みデータをＣＭ１０１からの書き込み要求によってＣＭ２０１に書き込まざるを得なくなり、ホスト応答性能が低下してしまう。
【０１３９】
そこで、上記のように最適確保数を調整することで、時間の経過と共に変化する各カテゴリの統計個数に応じた適切な数およびサイズのバッファ領域を確保できるようになる。
なお、各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
【符号の説明】
【０１４０】
１，２  ストレージ制御装置
１ａ，２ａ  記憶部
１ｂ，２ｂ  制御部
３  ホスト装置
Ｓ１，Ｓ２，Ｓ３，Ｓ４，Ｓ５，Ｓ６，Ｓ７  ステップ
【図１】
0006354507.tif 000002
【図２】
0006354507.tif 000003
【図３】
0006354507.tif 000004
【図４】
0006354507.tif 000005
【図５】
0006354507.tif 000006
【図６】
0006354507.tif 000007
【図７】
0006354507.tif 000008
【図８】
0006354507.tif 000009
【図９】
0006354507.tif 000010
【図１０】
0006354507.tif 000011
【図１１】
0006354507.tif 000012
【図１２】
0006354507.tif 000013
【図１３】
0006354507.tif 000014
【図１４】
0006354507.tif 000015
【図１５】
0006354507.tif 000016
【図１６】
0006354507.tif 000017