(57)【特許請求の範囲】
【請求項１】
外部装置が利用するデータを格納する記憶装置と、
前記記憶装置から読み出されるデータを一時的に格納する第１の一時データ記憶部及び第２の一時データ記憶部と、
前記外部装置からのＩ／Ｏ要求に基づき前記記憶装置から読み出すデータを前記第１の一時データ記憶部に転送する場合、前記第２の一時データ記憶部を経由せずに前記記憶装置から前記第１の一時データ記憶部へデータを転送する第１のデータ転送処理と、前記記憶装置から前記第２の一時データ記憶部へデータを転送し、前記第２の一時データ記憶部から前記第１の一時データ記憶部へデータを転送する第２のデータ転送処理とのいずれかを、前記第１の一時データ記憶部の状態に基づいて選択する制御部と、
を備えるストレージシステム。
【請求項２】
前記第１の一時データ記憶部はキャッシュメモリであり、前記第２の一時データ記憶部はバッファである
請求項１に記載のストレージシステム。
【請求項３】
前記制御部は、前記第１の一時データ記憶部の状態が、前記Ｉ／Ｏ要求に基づき前記記憶装置から読み出すデータの転送先となる前記第１の一時データ記憶部上の領域に、ダーティデータが格納されている状態であると判定した場合、前記第２のデータ転送処理を選択する
請求項２に記載のストレージシステム。
【請求項４】
前記制御部により前記第１のデータ転送処理が選択された場合に、前記第１のデータ転送処理を実行するディスクインタフェースと、
前記第１のデータ転送処理で、前記第１の一時データ記憶部へ転送されたデータを、前記第１の一時データ記憶部から前記外部装置へ転送するホストインタフェースと、
をさらに備える
請求項１乃至３のいずれか一項に記載のストレージシステム。
【請求項５】
前記制御部により前記第２のデータ転送処理が選択された場合に、前記第２のデータ転送処理のうち、前記記憶装置から前記第２の一時データ記憶部へデータを転送する処理を実行するディスクインタフェースと、
前記第２のデータ転送処理のうち、前記第２の一時データ記憶部から前記第１の一時データ記憶部へデータを転送する処理を実行するデータ転送制御部と、
前記第２のデータ転送処理で、前記第１の一時データ記憶部へ転送されたデータを、前記第１の一時データ記憶部から前記外部装置へ転送するホストインタフェースと、
をさらに備える
請求項１乃至４のいずれか一項に記載のストレージシステム。
【請求項６】
前記データ転送制御部はデータ処理機能を実行し、
前記制御部は、前記Ｉ／Ｏ要求に基づく処理で前記データ処理機能による処理が必要か否かを前記Ｉ／Ｏ要求の内容から判定し、
前記判定の結果、前記Ｉ／Ｏ要求に基づく処理で前記データ処理機能による処理が必要な場合、前記第２のデータ転送処理を選択する
請求項５に記載のストレージシステム。
【請求項７】
外部装置が利用するデータを格納する記憶装置と、
前記記憶装置から読み出されるデータを一時的に格納する第１の一時データ記憶部及び
第２の一時データ記憶部と、
前記外部装置からのＩ／Ｏ要求に基づき前記第１の一時データ記憶部から読み出すデータを前記外部装置に転送する場合、前記第２の一時データ記憶部を経由せずに前記第１の一時データ記憶部から前記外部装置へデータを転送する第１のデータ転送処理と、前記第１の一時データ記憶部から前記第２の一時データ記憶部へデータを転送し、前記第２の一時データ記憶部から前記外部装置へデータを転送する第２のデータ転送処理とのいずれかを、前記第１の一時データ記憶部の状態に基づいて選択する制御部と、
を備えるストレージシステム。
【請求項８】
前記制御部により前記第１のデータ転送処理が選択された場合に、前記第１のデータ転送処理を実行するホストインタフェースをさらに備える
請求項７に記載のストレージシステム。
【請求項９】
前記制御部により前記第２のデータ転送処理が選択された場合に、前記第２のデータ転送処理のうち、前記第１の一時データ記憶部から前記第２の一時データ記憶部へデータを転送する処理を実行するデータ転送制御部と、
前記第２のデータ転送処理のうち、前記第２の一時データ記憶部から前記外部装置へデータを転送する処理を実行するホストインタフェースと、
をさらに備える請求項７乃至８のいずれか一項に記載のストレージシステム。
【請求項１０】
前記データ転送制御部はデータ処理機能を実行し、
前記制御部は、前記Ｉ／Ｏ要求に基づく処理で前記データ処理機能による処理が必要か否かを前記Ｉ／Ｏ要求の内容から判定し、
前記判定の結果、前記Ｉ／Ｏ要求に基づく処理で前記データ処理機能による処理が必要な場合、前記第２のデータ転送処理を選択する
請求項９に記載のストレージシステム。
【請求項１１】
外部装置が利用するデータを格納する記憶装置と、
前記記憶装置へライトするデータを一時的に格納する第１の一時データ記憶部及び第２の一時データ記憶部と、
前記外部装置からのＩ／Ｏ要求に基づき前記外部装置からライトするデータを前記第１の一時データ記憶部に転送する場合、前記第２の一時データ記憶部を経由せずに前記外部装置から前記第１の一時データ記憶部へデータを転送する第１のデータ転送処理と、前記外部装置から前記第２の一時データ記憶部へデータを転送し、前記第２の一時データ記憶部から前記第１の一時データ記憶部へデータを転送する第２のデータ転送処理とのいずれかを、前記第１の一時データ記憶部の状態に基づいて選択する制御部と、
を備えるストレージシステム。
【請求項１２】
外部装置が利用するデータを格納する記憶装置と、
前記記憶装置へライトするデータを一時的に格納する第１の一時データ記憶部及び第２の一時データ記憶部と、
前記外部装置からのＩ／Ｏ要求に基づき前記第１の一時データ記憶部からライトするデータを前記記憶装置に転送する場合、前記第２の一時データ記憶部を経由せずに前記第１の一時データ記憶部から前記記憶装置へデータを転送する第１のデータ転送処理と、前記第１の一時データ記憶部から前記第２の一時データ記憶部へデータを転送し、前記第２の一時データ記憶部から前記記憶装置へデータを転送する第２のデータ転送処理とのいずれかを、前記第１の一時データ記憶部の状態に基づいて選択する制御部と、
を備えるストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム及びストレージシステムのデータ転送方法に関し、特にハードウェア資源が限られている場合においても、より高いデータＩ／Ｏ性能を得ることができるストレージシステム及びストレージシステムのデータ転送方法に関する。
【背景技術】
【０００２】
情報化社会において、ストレージシステムの重要性は増す一方であり、近年では特に低コストでありながら高性能なストレージシステムが市場から要求されている。
【０００３】
一般的に、ストレージシステムにおいては、ホストインタフェース（Host Interface、以下「ホストＩ／Ｆ」）及びディスクインタフェース（Disk Interface、以下「ディスクＩ／Ｆ」）が、それぞれホスト計算機−キャッシュメモリ間、キャッシュメモリ−記憶装置間のデータ転送処理を行っている場合が多い。なお、以下、ホストＩ／Ｆ及びディスクＩ／Ｆをまとめて「プロトコルチップ」と称することがある。
【０００４】
しかし、ストレージシステムの運用時には、汎用プロトコルチップでは対応困難な様々な課題が存在する。
【０００５】
例えば記憶装置からキャッシュメモリへデータを転送する際に、キャッシュメモリ上の領域に、未だディスクに書き込んでいない更新データであるダーティデータが存在する場合、このダーティデータを上書きしないように、該領域を避けてキャッシュメモリにデータを転送する必要があるため、複数回のディスクリードが必要になるという課題がある。この課題に対して、例えば特許文献１では、ＤＭＡ（Direct Memory Access）と呼ばれるデータ転送コントローラの機能を用いてダーティデータが存在する領域のみをマスクし、必要な部分のみをキャッシュメモリに転送することで、ディスクリード回数を最小限に抑える手法（ビットマップステージング）が開示されている。
【０００６】
また、例えば特許文献２では、全てのデータが記憶装置に記憶できないという異常を検出するために、ＷＲＳＥＱ＃と呼ばれる、汎用プロトコルチップではサポート困難な特殊な保証コードを、ＤＭＡにて転送データに付与／チェックする方法が開示されている。
【０００７】
この他にも、キャッシュメモリへの二重書き処理等、汎用プロトコルチップでは実現困難な機能を用いることを目的として、プロトコルチップとは別に、ＤＭＡを有するＬＳＩ（Large Scale Integration）を設け、ＤＭＡの持つ機能を使用するようにしたストレー
ジシステムは多い。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平６−２８２６１号公報
【特許文献２】特開２００９−６４３６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
通常、ＤＭＡを用いた処理を行う際にプロセッサで発生する処理遅延（以下「レイテンシ」）は、プロトコルチップのみを用いた転送を行う際のレイテンシよりも大きい。このレイテンシを隠蔽するためには、同時にデータの多重転送を行う必要があるが、データ多重転送を行うためには、それに応じた容量を持ったバッファを導入することが必要となる
。また、ビットマップステージング、特殊な保証コードの付与／チェック等のＤＭＡがもつ特殊な機能は、バッファ領域がキャッシュメモリ領域とは別の領域に存在することが前提となっている場合が多い。しかし、コストパフォーマンスが求められるミッドレンジクラス、エントリークラスのストレージシステムにおいては、限られたハードウェア資源で所定の性能を出したいという要求が強い。
【００１０】
本発明は以上の課題に鑑みて成されたものである。すなわち、本発明の一つの目的は、ミッドレンジクラス、エントリークラスのストレージシステムのように、ハードウェア資源が限られている場合においても、より高いデータＩ／Ｏ性能を得ることができるストレージシステム及びストレージシステムのデータ転送方法を提供することである。
【課題を解決するための手段】
【００１１】
上記の及び他の目的を達成するために、本発明の一つの態様は、外部装置が利用するデータを格納する記憶装置と、前記記憶装置から読み出されるデータを一時的に格納する第１の一時データ記憶部及び第２の一時データ記憶部と、前記外部装置からのＩ／Ｏ要求に基づき前記記憶装置から読み出すデータを前記第１の一時データ記憶部に転送する場合、前記記憶装置から前記第１の一時データ記憶部へデータを転送する第１のデータ転送処理と、前記記憶装置から前記第２の一時データ記憶部へデータを転送し、前記第２の一時データ記憶部から前記第１の一時データ記憶部へデータを転送する第２のデータ転送処理とのいずれかを、前記Ｉ／Ｏ要求の内容に基づいて選択する制御部とを備えるストレージシステムである。
【発明の効果】
【００１２】
本発明によれば、ミッドレンジクラス、エントリークラスのストレージシステムのように、ハードウェア資源が限られている場合においても、より高いデータＩ／Ｏ性能を得ることができるストレージシステム及びストレージシステムのデータ転送方法を提供することができる。
【００１３】
上記した以外の本発明の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１４】
【図１】図１は、本発明が適用されるストレージシステム２００を備える情報処理システム１の構成の一例を示す図である。
【図２】図２は、ホスト計算機１００、管理装置１１０として使用することができるコンピュータ１０の構成例である。
【図３】図３は、ホスト計算機１００、管理装置１１０のソフトウェア構成例である。
【図４】図４は、ホストＩ／Ｆ２０１のハードウェア構成の一例を示す図である。
【図５】図５は、ＣＰＵ２０３のハードウェア構成の一例を示す図である。
【図６】図６は、ディスクＩ／Ｆ２０８のハードウェア構成の一例を示す図である。
【図７】図７は、ローカルメモリ２０４に格納される情報の一例を示す図である。
【図８】図８は、ホストＩ／Ｆ２０１がデータ転送を行う際に使用する転送情報が格納されたホストＩ／Ｆ転送テーブル３００の一例を示す図である。
【図９】図９は、ディスクＩ／Ｆ２０８がデータ転送を行う際に使用する転送情報が格納されたディスクＩ／Ｆ転送テーブル４００の一例を示す図である。
【図１０】図１０は、ＤＭＡ２０５がデータ転送を行う際に使用する転送情報が格納されたＤＭＡ転送テーブル５００の一例を示す図である。
【図１１】図１１は、ローカルメモリ２０４にホストＩ／Ｆ転送テーブル３００、ディスクＩ／Ｆ転送テーブル４００、ＤＭＡ転送テーブル５００、及び直転送フラグ６００が転送情報として格納されている状況の一例を示す図である。
【図１２】図１２は、ストレージシステム２００での直転送の構成の一例を示す図である。
【図１３】図１３は、ストレージシステム２００での二段転送の構成の一例を示す図である。
【図１４】図１４は、データ転送方式の選択処理の概略を示すフロー図である。
【図１５】図１５は、データ転送方式の選択処理の他の処理方式の一例を示すフロー図である。
【図１６】図１６は、図１４のサブルーチンＳ９０１の処理の一例を示すフロー図である。
【図１７】図１７は、図１４のサブルーチンＳ９０１の処理の他の例を示すフロー図である。
【図１８】図１８は、ホスト計算機１００からキャッシュメモリ２０６へデータの二重書きを行う場合のデータの流れを示す模式図である。
【図１９】図１９は、記憶デバイス２１０からキャッシュメモリ２０６へデータの二重書きを行う場合のデータの流れを示す模式図である。
【図２０】図２０は、複数のダーティデータを、複数の記憶デバイス２１０に対して個別にデステージする場合のデータの流れを示す模式図である。
【図２１】図２１は、複数のダーティデータ間をステージングしたデータで埋めた後に、複数の記憶デバイス２１０に対してデステージする場合のデータの流れを示す模式図である。
【図２２】図２２は、図１４のサブルーチンＳ９０１の他の例を示すフロー図である。
【図２３】図２３は、ビットマップステージング処理を用いずに、直転送でステージングする場合のデータの流れの一例を表す模式図である
【図２４】図２４は、ビットマップステージング処理を用いて、二段転送でステージングする場合のデータの流れの一例を表す模式図である。
【図２５】図２５は、図１４のサブルーチンＳ９０２の一例を示すフロー図である。
【図２６】図２６は、バッファ領域２０７の一部をキャッシュメモリ２０６の領域へ変更する様子を示す模式図である。
【図２７】図２７は、キャッシュメモリ２０６の領域の一部をバッファ領域２０７へ変更する様子を示す模式図である。
【図２８】図２８は、データ転送方式の選択を行うための基準となる情報が格納された転送方式選択基準テーブル１８００の一例を示す図である。
【図２９】図２９は、本発明が適用されるストレージシステム２００ａ、２００ｂを含む情報処理システム１の構成の一例を示す図である。
【図３０】図３０は、リモートコピー実施時に使用する制御情報が格納されたリモートコピー用制御情報テーブル１９００の一例を示す図である。
【図３１】図３１は、図２９の構成に適用される場合の図１４のサブルーチンＳ９０１の一例を示すフロー図である。
【発明を実施するための形態】
【００１５】
以下、本発明を実施する形態として、第１の実施形態と、第２の実施形態とを、図面を参照して説明する。
【００１６】
《第１の実施形態》
最初に、本発明の第１の実施形態について、図１から図２７を用いて説明する。図１に、第１の実施形態による情報処理システム１の構成例を示している。
【００１７】
第１の実施形態は、単一のストレージシステム内で実行される本発明のデータＩ／Ｏ処
理に関する。図１に示す構成は、本発明の理解及び実施に必要な程度で本発明の概要を示しており、本発明の構成は図１に示すものに限定されない。
【００１８】
図１に示す第１の実施形態の情報処理装置１は、ホスト計算機１００（外部装置）と、ホスト計算機１００と通信可能に接続されているストレージシステム２００と、ストレージシステム２００と通信可能に接続されている管理装置１１０とを備えている。
【００１９】
ホスト計算機１００は、ストレージシステム２００内部に存在するホストＩ／Ｆ２０１に接続されており、当該ホスト計算機１００上で動作しているアプリケーション等のソフトウェアのデータ記憶領域としてストレージシステム２００を利用する。図１の例では１台のホスト計算機１００がストレージシステム２００に接続されているが、複数のホスト計算機１００を接続してもよい。
【００２０】
図２にホスト計算機１００に適用することができるコンピュータ１０の一例を示している。コンピュータ１０は、ＣＰＵ（Central Processing Unit）１１、揮発性または不揮
発性のメモリ１２（ＲＡＭ（Random Access Memory）またはＲＯＭ（Read-Only Memory））、記憶装置１３（例えばＨＤＤ（Hard Disk Drive）、ＳＳＤ（Solid State Drive））、キーボードやマウス等の入力装置１４、液晶モニタやプリンタ等の出力装置１５、及びＮＩＣやＨＢＡ等の通信インタフェース（通信Ｉ／Ｆ１６と表記する。）を備える。
【００２１】
図３に、ホスト計算機１００のソフトウェア構成の一例を示している。ホスト計算機１００は、ホスト計算機１００のハードウェア資源を制御する基本ソフトウェアであるオペレーティングシステム（Operating System、以下「ＯＳ」）１０１と、ＯＳ１０１上で動作する応用ソフトウェアである各種のアプリケーション１０２と、外部装置との間でのデータＩ／Ｏ処理を実行するデータＩ／Ｏ部１０３とを備えている。アプリケーション１０２からストレージシステム２００へのデータライト、及びストレージシステム２００からのデータリードは、データＩ／Ｏ部１０３を通じて発行されるホストＩ／Ｏ要求を、後述するストレージシステム２００のホストＩ／Ｆ２０１に送信することによって実行される。
【００２２】
管理装置１１０は、キーボードやマウス等の入力装置を介してストレージシステム２００の管理者からの指示を受信し、受信した運用・保守指示をストレージシステム２００内部に設けられている管理Ｉ／Ｆ２１１を介して各機器に送信する機能を有する。管理装置１１０は、例えばパーソナルコンピュータやオフィスコンピュータであり、前記した図２に例示のコンピュータ１０の構成を有する。
【００２３】
管理装置１１０は、ストレージシステム２００と一体として構成しても（同一筐体に実装されていても）よい。管理装置１１０は、前記のホスト計算機１００と同様に、例えば図３に示すソフトウェア構成を有し、ストレージシステム２００の制御や監視のためのＧＵＩ（Graphical User Interface）やＣＬＩ（Command Line Interface）等を用いたユーザインタフェースを備えるアプリケーション１１２と、ＯＳ１１１及びデータＩ／Ｏ部１１３とを備える。
【００２４】
内部ネットワーク２０２を介して行われる通信は、例えば、ファイバーチャネル、ｉＳＣＳＩ、ＴＣＰ／ＩＰ等のプロトコルに従って行われる。
【００２５】
次に、本実施形態のストレージシステム２００について説明する。図１に例示するように、ストレージシステム２００は、ホストＩ／Ｆ２０１（第１のデータ転送制御部）と、内部ネットワーク２０２と、ＣＰＵ２０３と、ローカルメモリ２０４と、ＤＭＡ２０５（第３のデータ転送制御部）と、キャッシュメモリ２０６（第１の一時データ記憶部）と、
ディスクＩ／Ｆ２０８（第２のデータ転送制御部）と、記憶装置２０９と、管理Ｉ／Ｆ２１１とを備えて構成される。なお、ホストＩ／Ｆ２０１と、内部ネットワーク２０２と、ＣＰＵ２０３と、ローカルメモリ２０４と、ＤＭＡ２０５と、キャッシュメモリ２０６と、ディスクＩ／Ｆ２０８と、記憶装置２０９と、管理Ｉ／Ｆ２１１とは、ストレージシステム２００内にそれぞれ複数設けられていても構わない。
【００２６】
キャッシュメモリ２０６は、ホスト計算機１００と記憶装置２１０の間で授受されるデータを一時的に格納するメモリであり、例えば高速アクセスが可能なＲＡＭを用いて構成される。また、本実施形態では、キャッシュメモリ２０６は、内部にバッファ２０７（第２の一時データ記憶部）を有する。このバッファ２０７は、後述するように、ホストＩ／Ｆ２０１がホスト計算機１００とキャッシュメモリ２０６との間でのデータ転送を制御する際、あるいはディスクＩ／Ｆ２０８が、記憶装置２０９とキャッシュメモリ２０６との間でのデータ転送を制御する際に、転送データを一時的に格納する記憶領域として使用される。なお、バッファ２０７は、キャッシュメモリ２０６と別のハードウェアとしての他のメモリに設けるようにしてもよい。キャッシュメモリ２０６には、内部ネットワーク２０２を通じて、ホストＩ／Ｆ２０１、ＣＰＵ２０３、ＤＭＡ２０５、及びディスクＩ／Ｆ２０８がアクセスすることができる。
【００２７】
記憶装置２０９は、ディスクＩ／Ｆ２０８を介して内部ネットワーク２０２と接続されており、複数の記憶デバイス２１０（ＨＤＤ、ＳＳＤ、フレキシブルディスク、磁気テープ、光ディスク等）を備えて構成されている。以下の説明において、記憶装置２０９は、例えばＳＡＳ（Serial Attached SCSI）、ＳＡＴＡ（Serial ATA）、ＦＣ（Fibre Channel）、ＰＡＴＡ（Parallel ATA）、ＳＣＳＩ等のタイプのＨＤＤ、もしくはＳＳＤを用い
て構成されているものとする。
【００２８】
記憶装置２０９は、記憶デバイス２１０をＲＡＩＤ（Redundant Arrays of Inexpensive （or Independent) Disks）等の制御方式で制御することによって提供される記憶領域
（例えばＲＡＩＤグループ（パリティグループ（Parity Group）の記憶領域）を用いて構成される論理装置（ＬＤＥＶ: Logical Device）を単位とする記憶領域を提供する。すなわち、ストレージシステム２００は、ホスト計算機１００に対し、ＬＤＥＶを用いて構成される論理的な記憶領域（ＬＵ：Logical Unit）を提供する。
【００２９】
ホストＩ／Ｆ２０１は、ホスト計算機１００と、キャッシュメモリ２０６またはバッファ２０７との間のデータ転送を実行する機能を備え、内部ネットワーク２０２によりキャッシュメモリ２０６またはバッファ２０７に接続されている。図４にホストＩ／Ｆ２０１のハードウェア構成の一例を示している。ホストＩ／Ｆ２０１は、ホスト計算機１００と通信するためのポート（通信ポート）を有する外部通信インタフェース（以下、外部通信Ｉ／Ｆ２０１１と表記する。）、プロセッサ２０１２、メモリ２０１３、内部ネットワーク２０２と通信するためのポート（通信ポート）を有する内部通信インタフェース（以下、内部通信Ｉ／Ｆ２０１４と表記する。）を備える。
【００３０】
このうち外部通信Ｉ／Ｆ２０１１は、例えばＮＩＣ（Network Interface Card）やＨＢＡ（Host Bus Adaptor）を用いて構成される。プロセッサ２０１２は、例えばＣＰＵ、ＭＰＵ（Micro Processing Unit）を用いて構成される。メモリ２０１３は、ＲＡＭ、ＲＯ
Ｍ等である。内部通信Ｉ／Ｆ２０１４は、内部ネットワーク２０２を介して、ＣＰＵ２０３、ローカルメモリ２０４、ディスクＩ／Ｆ２０８、キャッシュメモリ２０６、バッファ２０７と通信を行う。
【００３１】
ＣＰＵ２０３は、ローカルメモリ２０４に格納された各種のコンピュータプログラムを実行することによって、ホスト計算機１００と記憶装置２０９との間でのデータの授受を
制御する。図５にＣＰＵ２０３のハードウェア構成の一例を示している。ＣＰＵ２０３は、内部通信インタフェース（以下、内部通信Ｉ／Ｆ２０３１と表記する。）、プロセッサ２０３２、及びメモリ２０３３を備える。内部通信Ｉ／Ｆ２０３１は、内部ネットワーク２０２を介してホストＩ／Ｆ２０１、ディスクＩ／Ｆ２０８、ローカルメモリ２０４、キャッシュメモリ２０６と通信を行う。内部通信Ｉ／Ｆ２０３１はまた、内部ネットワーク２０２とは別に設けられた管理ネットワークを経由して、管理Ｉ／Ｆ２１１を通じて管理装置１１０と通信を行う。プロセッサ２０３２は、適宜の演算プロセッサである。メモリ２０３３は、ＲＡＭ又はＲＯＭであり、ＣＰＵ２０３のデータＩ／Ｏに関するバッファ等として使用される。
【００３２】
ローカルメモリ２０４は、ＣＰＵ２０３と接続されており、ＣＰＵ２０３から発行される命令等を格納する機能を有し、ＲＡＭ、ＲＯＭ等のメモリと、このメモリをＣＰＵ２０３に接続するインタフェース回路とを備える。図７に、ローカルメモリ２０４に格納されるコンピュータプログラム及びデータ等の一構成例を示している。
【００３３】
図７の例では、ローカルメモリ２０４には、ＣＰＵ２０３によって読み出されて実行されることによりデータ転送方式管理部２０４１及びデータ転送方式判定部２０４２の機能を実現するコンピュータプログラムと、ホストＩ／Ｆ転送テーブル３００、ディスクＩ／Ｆ転送テーブル４００、ＤＭＡ転送テーブル５００、及び直転送フラグ６００を含むデータテーブル類が格納されている。
【００３４】
データ転送方式管理部２０４１（データ転送制御管理部）は、ＣＰＵ２０３によるホスト計算機１００、キャッシュメモリ２０６、バッファ２０７、及び記憶装置２０９の間でのデータ転送制御機能を提供する。データ転送方式管理部２０４１とともにデータ転送制御管理部を構成するデータ転送方式判定部２０４２は、ＤＭＡ２０５を用いたデータ転送を実行するかを判定する機能を提供する。
【００３５】
ホストＩ／Ｆ転送テーブル３００、ディスクＩ／Ｆ転送テーブル４００、及びＤＭＡ転送テーブル５００は、それぞれＣＰＵ２０３がホスト計算機１００からホストＩ／Ｏ要求を受け取る毎に、ホストＩ／Ｏ要求の内容に従ってローカルメモリ２０４上に生成する。これらのテーブル３００、４００、及び５００については後述する。
【００３６】
直転送フラグ６００は、ホストＩ／Ｏ要求等に含まれる各種転送条件を基に、ＣＰＵ２０３によってＯＮ又はＯＦＦに設定される。ＣＰＵ２０３は、該直転送フラグ６００に記録されているデータを基に、ＤＭＡ２０５を使用したデータ転送処理を実行するかを判断する。直転送フラグ６００がＯＮに設定されている場合には、ＤＭＡ２０５によるデータ転送処理は行われない。なお、図７では、直転送フラグ６００がローカルメモリ２０４に格納されているが、ＣＰＵ２０３が参照可能なメモリであるならば、直転送フラグ６００はキャッシュメモリ２０６やバッファ２０７の一部に格納してもよい。
【００３７】
なお、ローカルメモリ２０４に格納されるコンピュータプログラム、データテーブル類は、必ずしも図７に示したブロックの単位で構成する必要はなく、以下に詳述する本発明の実施形態の機能を実現するように構成されていればよい。
【００３８】
ＤＭＡ２０５は、キャッシュメモリ２０６と、バッファ２０７との間のデータ転送を実行する機能を有し、汎用プロトコルチップでは実現することができない様々な特殊機能を備える。ＤＭＡ２０５が有する特殊機能については後述する。ＤＭＡ２０５は、内部ネットワーク２０２によりキャッシュメモリ２０６またはバッファ２０７に接続されている。ＤＭＡ２０５のハードウェア構成の一例としては、前記の特殊機能を含む所用のデータ転送機能を有するように構成されるカスタムＬＳＩが挙げられる。なお、ＤＭＡ２０５は、
プロセッサにより実現する等、他のハードウェア構成を採用することもできる。
【００３９】
ディスクＩ／Ｆ２０８は、記憶装置２０９と、キャッシュメモリ２０６またはバッファ領域２０７との間のデータ転送を実行する機能を有し、内部ネットワーク２０２によりキャッシュメモリ２０６またはバッファ２０７に接続されている。図６にディスクＩ／Ｆ２０８のハードウェア構成の一例を示している。ディスクＩ／Ｆ２０８は、内部通信Ｉ／Ｆ２０８１、プロセッサ２０８２、メモリ２０８３、及びドライブインタフェース（以下、ドライブＩ／Ｆ２０８４と表記する。）を備える。内部通信Ｉ／Ｆ２０８１は、内部ネットワーク２０２を介して、ホストＩ／Ｆ２０１、ＣＰＵ２０３、ローカルメモリ２０４、キャッシュメモリ２０６、バッファ２０７と通信する。プロセッサ２０８２は、例えばＣＰＵ、ＭＰＵである。メモリ２０８３は、例えばＲＡＭ、ＲＯＭである。ドライブＩ／Ｆ２０８４は、記憶装置２０９と通信する。なお、図１、２、及び４〜６に示したハードウェア構成は本実施形態における一例であって、例えば各ハードウェア構成要素をストレージシステム２００としてどのように実装するかは、性能上、設計上の要請によって適宜決定することができる。
【００４０】
本実施形態においては、図７に関して説明したように、ホスト計算機１００からホストＩ／Ｏ要求を受け付けたＣＰＵ２０３が、ホストＩ／Ｆ転送テーブル３００、ディスクＩ／Ｆ転送テーブル４００、及びＤＭＡ転送テーブル５００を作成してローカルメモリ２０４に格納し、ホストＩ／Ｆ２０１と、ディスクＩ／Ｆ２０８と、ＤＭＡ２０５とが、それぞれこれらの転送テーブル３００、４００、及び５００に記録されている内容に従いデータ転送を行う。以下にホストＩ／Ｆ転送テーブル３００、ディスクＩ／Ｆ転送テーブル４００、及びＤＭＡ転送テーブル５００の詳細を説明する。
【００４１】
まず、ホストＩ／Ｆ転送テーブル３００について説明する。図８は、後述のホストＩ／Ｆ２０１によるデータ転送時にホストＩ／Ｆ２０１が参照して用いる制御情報を格納したホストＩ／Ｆ転送テーブル３００の一構成例を示すものである。ホストＩ／Ｆ転送テーブル３００は、ホスト計算機１００から受領したホストＩ／Ｏ要求を基にＣＰＵ２０３によって作成され、ホストＩ／Ｆ２０１は、該ホストＩ／Ｆ転送テーブル３００に記録されている情報を基にデータ転送を実行する。図７では、ホストＩ／Ｆ転送テーブル３００がローカルメモリ２０４に格納されているが、ＣＰＵ２０３が参照可能なメモリであるならば、キャッシュメモリ２０６や、バッファ２０７の一部に格納してもよい。
【００４２】
ホストＩ／Ｆ転送テーブル３００中に格納される情報について順次説明すると、まず転送長３０１には、ホストＩ／Ｆ２０１が転送すべきデータの長さが格納される。
【００４３】
転送種別情報３０２には、ホストＩ／Ｆ転送テーブル３００を用いて行われるデータ転送処理が、ホスト計算機１００からバッファ２０７またはキャッシュメモリ２０６へのライト処理、バッファ２０７またはキャッシュメモリ２０６からホスト計算機１００へのリード処理のいずれであるかの情報、ホストＩ／Ｆ２０１が実施可能な機能を用いた特殊なＩ／Ｏ処理の実施判定等が格納される。
【００４４】
データ格納元アドレス３０３には、ホスト計算機１００からのホストＩ／Ｏ要求がリード処理である場合に、Ｉ／Ｏ処理の対象となるデータが格納されているキャッシュメモリ２０６またはバッファ２０７のアドレス情報が格納される。
【００４５】
データ格納先アドレス３０４には、ホスト計算機１００からのホストＩ／Ｏ要求がライト処理である場合に、Ｉ／Ｏ処理の対象となるデータを格納する、キャッシュメモリ２０６またはバッファ２０７のアドレス情報が格納される。
【００４６】
ステータス返送先アドレス３０５には、ホストＩ／Ｆ２０１がデータ転送処理終了後にその転送終了をＣＰＵ２０３に通知するために、転送終了を示すステータス情報を返送する返送先となるローカルメモリ２０４のアドレス情報が格納される。
【００４７】
保証コード付与の要否判定情報３０６には、ホストＩ／Ｆ２０１が付与可能な保証コードについて、付与が必要か否かの情報が格納される。この保証コード付与が必要か否かの情報は、ＣＰＵ２０３がホストＩ／Ｏ要求の内容から判定して、例えばＯＮ／ＯＦＦの符号として格納する。保証コードは、ホスト計算機１００から記憶装置２０９にデータをライトするときに、同一データのリード時にその整合性をチェックするために元のデータに付与されるコードであり、例えば５１２バイト単位でリード／ライトされるデータに８バイトの保証コードを付与する方式等が採用される。
【００４８】
保証コード設定値３０７には、保証コード付与の要否判定情報３０６がＯＮに設定されている場合に、ホストＩ／Ｆ２０１によって付与される保証コードの設定値が格納される。
【００４９】
保証コードチェックの要否判定情報３０８には、ホストＩ／Ｆ２０１がチェック可能な保証コードについて、ホスト計算機１００からのホストＩ／Ｏ要求がリード処理である場合にチェックが必要か否かの情報が格納される。この保証コードチェックが必要か否かの情報は、ＣＰＵ２０３がホストＩ／Ｏ要求の内容から判定して、例えばＯＮ／ＯＦＦの符号として格納する。保証コード期待値３０９には、保証コードチェックの要否判定情報３０８がＯＮに設定されている場合に、ホストＩ／Ｆ２０１によるチェックに使用される保証コードの期待値が格納される。なお、ホストＩ／Ｆ転送テーブル３００に格納される情報は、図８に記載された情報に限定されない。
【００５０】
次に、ディスクＩ／Ｆ転送テーブル４００について説明する。図９は、後述のディスクＩ／Ｆ２０８によるデータ転送時にディスクＩ／Ｆ２０８が参照して用いる制御情報を格納したディスクＩ／Ｆ転送テーブル４００の一構成例を示すものである。ディスクＩ／Ｆ転送テーブル４００は、ホスト計算機１００から受領したホストＩ／Ｏ要求を基にＣＰＵ２０３によって作成され、ディスクＩ／Ｆ２０８は、ディスクＩ／Ｆ転送テーブル４００に記録されている情報を基にデータ転送を実行する。図７では、ディスクＩ／Ｆ転送テーブル４００がローカルメモリ２０４に格納されているが、ＣＰＵ２０３が参照可能なメモリであるならば、キャッシュメモリ２０６、あるいはバッファ２０７の一部に格納してもよい。
【００５１】
ディスクＩ／Ｆ転送テーブル４００中に格納される情報について順次説明すると、まず転送長４０１にはディスクＩ／Ｆ２０８が転送すべきデータの長さが格納される。
【００５２】
転送種別情報４０２には、ディスクＩ／Ｆ転送テーブル４００を用いてディスクＩ／Ｆ２０８によって実行されるデータ転送処理が、バッファ２０７またはキャッシュメモリ２０６から記憶装置２０９へのライト処理、記憶装置２０９からバッファ２０７またはキャッシュメモリ２０６へのリード処理のいずれであるかの情報、ディスクＩ／Ｆ２０８が実施可能な機能を用いた特殊なＩ／Ｏ処理の実施判定等が格納される。
【００５３】
データ格納元アドレス４０３には、ホスト計算機１００からのホストＩ／Ｏ要求がライト処理である場合には、Ｉ／Ｏ処理の対象となるデータが格納されているキャッシュメモリ２０６またはバッファ２０７のアドレス情報が格納され、リード処理である場合には、Ｉ／Ｏ処理の対象となるデータが格納されている記憶装置２０９のアドレス情報が格納される。
【００５４】
データ格納先アドレス４０４には、ホスト計算機１００からのホストＩ／Ｏ要求がライト処理である場合には、Ｉ／Ｏ処理の対象となるデータを格納する、記憶装置２０９のアドレス情報が格納され、リード処理である場合には、Ｉ／Ｏ処理の対象となるデータを格納する、キャッシュメモリ２０６またはバッファ２０７のアドレス情報が格納される。
【００５５】
ステータス返送先アドレス４０５には、ディスクＩ／Ｆ２０８がデータ転送処理終了後にその転送終了をＣＰＵ２０３に通知するために、転送終了を示すステータス情報を返送する返送先となるローカルメモリ２０４のアドレス情報が格納される。
【００５６】
保証コード付与の要否判定情報４０６には、ディスクＩ／Ｆ２０８が付与可能な保証コードについて、付与が必要か否かの情報が格納される。保証コード付与の要否については、ホストＩ／Ｆ転送テーブル３００に関して説明したのと同様である。保証コード設定値４０７には、保証コード付与の要否判定情報４０６がＯＮだった場合に、ディスクＩ／Ｆ２０８によって付与される保証コードの設定値が格納される。
【００５７】
保証コードチェックの要否判定情報４０８には、ホストＩ／Ｆ転送テーブル３００の場合と同様に、ディスクＩ／Ｆ２０８がチェック可能な保証コードについて、チェックが必要か否かの情報が格納される。保証コード期待値４０９には、保証コードチェックの要否判定情報４０８がＯＮだった場合に、ディスクＩ／Ｆ２０８によるチェックに使用される保証コードの期待値が格納される。なお、ディスクＩ／Ｆ転送テーブル４００に格納される情報は、図９に記載された情報に限定されない。
【００５８】
次に、ＤＭＡ転送テーブル５００について説明する。図１０は、後述のＤＭＡ２０５によるデータ転送時にＤＭＡ２０５が参照して用いる制御情報を格納したＤＭＡ転送テーブル５００の一構成例を示すものである。ＤＭＡ転送テーブル５００はホスト計算機１００から受領したホストＩ／Ｏ要求を基にＣＰＵ２０３によって作成され、ＤＭＡ２０５は、ＤＭＡ転送テーブル５００に記録されている情報を参照してデータ転送を実行する。図７では、ＤＭＡ転送テーブル５００がローカルメモリ２０４に格納されているが、ＣＰＵ２０３が参照可能なメモリであるならば、キャッシュメモリ２０６、バッファ２０７の一部等に格納してもよい。
【００５９】
ＤＭＡ転送テーブル５００中に格納される情報について順次説明すると、まず転送長５０１には転送すべきデータの長さが格納される。
【００６０】
転送種別情報５０２には、ＤＭＡ転送テーブル５００を用いてＤＭＡ２０５によって実行されるデータ転送処理が、バッファ２０７からキャッシュメモリ２０６へのデータ転送処理、キャッシュメモリ２０６からバッファ２０７へのデータ転送処理のいずれであるかの情報、ＤＭＡ２０５が実施可能な機能を用いた特殊なＩ／Ｏ処理の実施判定等が格納される。
【００６１】
データ格納元アドレス５０３には、Ｉ／Ｏ処理の対象となるデータが格納されたキャッシュメモリ２０６またはバッファ２０７のアドレス情報が格納される。
【００６２】
データ格納先アドレス５０４には、Ｉ／Ｏ処理の対象となるデータを格納する、キャッシュメモリ２０６またはバッファ２０７のアドレス情報が格納される。
【００６３】
ステータス返送先アドレス５０５には、ＤＭＡ２０５がデータ転送処理終了後にその転送終了をＣＰＵ２０３に通知するために、転送終了を示すステータス情報を返送する返送先となるローカルメモリ２０４のアドレス情報が格納される。
【００６４】
保証コード付与の要否判定情報５０６には、ＤＭＡ２０５がＩ／Ｏ処理に係るデータに付与可能な保証コードについて、付与が必要か否かの情報が格納される。この保証コード付与が必要か否かの情報は、ホストＩ／Ｆ転送テーブル３００の場合と同様に、ＣＰＵ２０３がホストＩ／Ｏ要求の内容から判定して、例えばＯＮ／ＯＦＦの符号として格納する。
【００６５】
保証コード設定値５０７には、保証コード付与の要否判定情報５０６がＯＮに設定されている場合に、ＤＭＡ２０５によって付与される保証コードの設定値が格納される。
【００６６】
保証コードチェックの要否判定情報５０８には、ＤＭＡ２０５がチェック可能な保証コードについて、チェックが必要か否かの情報が格納される。保証コード期待値５０９には、保証コードチェックの要否判定情報５０８がＯＮに設定されている場合に、ＤＭＡ２０５によってチェックされる保証コードの期待値が格納される。
【００６７】
ビットマップステージングの実行要否判定情報５１０には、ビットマップステージング処理を実施するか否かの情報が格納される。ビットマスク設定値５１１には、ビットマップステージング実行要否判定情報５０３がＯＮだった場合に、ステージングデータをマスクするためのビットマスク情報が格納される。パターン検出処理の要否判定情報５１２には、パターン検出処理を実行するか否かの情報が格納される。ビットマスクステージング処理、及びパターン検出処理については後述する。なお、ＤＭＡ転送テーブル５００に格納される情報は、図１０に格納されたものに限定されない。
【００６８】
図１１は、ローカルメモリ２０４に前記のホストＩ／Ｆ転送テーブル３００、ディスクＩ／Ｆ転送テーブル４００、及びＤＭＡ転送テーブル５００が転送情報として格納されている状況の一例を示す図である。前記のように、ＣＰＵ２０３はホスト計算機１００からのホストＩ／Ｏ要求を受け取る毎にホストＩ／Ｆ転送テーブル３００、またはディスクＩ／Ｆ転送テーブル４００、またはＤＭＡ転送テーブル５００を作成するから、ローカルメモリ２０４には、例えばホストＩ／Ｆ転送テーブル３００ａ、３００ｂ、３００ｃのように、複数の転送テーブルを格納することができるように構成されている。図１１では、ローカルメモリ２０４中にホストＩ／Ｆ転送テーブル３００ａ、３００ｂ、３００ｃと、ディスクＩ／Ｆ転送テーブル４００ａ、４００ｂ、４００ｃと、ＤＭＡ転送テーブル５００ａ、５００ｂ、５００ｃと、直転送フラグ６００ａ、６００ｂ、６００ｃとが格納されている。
【００６９】
次に、ホスト計算機１００、キャッシュメモリ２０６又はバッファ２０７、及び記憶装置２０９の間で実行される、本実施形態のデータ転送の方式について、図示の処理例を参照しながら説明する。図１２は、記憶装置２０９からキャッシュメモリ２０６へ直接データが転送されるデータ転送方式（以下「直転送（direct data transfer）」）の模式図の一例を示す図である。図１２に示す直転送は、ディスクＩ／Ｆ２０８によって実行される。図１２では、一例として記憶装置２０９からキャッシュメモリ２０６へのデータ転送（以下「ステージング」とも称する。）７０１について示しているが、直転送は、キャッシュメモリ２０６から記憶装置２０９へのデータ転送（以下「デステージ」とも称する。）、及びホスト計算機１００とキャッシュメモリ２０６相互間でのデータ転送のいずれかの形態でも実行されることがある。
【００７０】
一方、図１３は、記憶装置２０９からリードしたデータをいったんキャッシュメモリ２０６内のバッファ２０７に格納し、その後ＤＭＡ２０５によってキャッシュメモリ２０６にデータを転送するデータ転送方式（以下「二段転送（two-step data transfer）」）の模式図の一例を示す図である。図１３に例示される二段転送は、ＤＭＡ２０５とディスクＩ／Ｆ２０８によって実行される。図１３では、一例として記憶装置２０９からバッファ
２０７へのデータ転送８０１と、バッファ２０７からキャッシュメモリ２０６へのデータ転送８０２とを組み合わせたデータ転送処理について示している。この他、二段転送は、キャッシュメモリ２０６からバッファ２０７へのデータ転送と、バッファ２０７から記憶装置２０９へのデータ転送とを組み合わせたデータ転送、ホスト計算機１００からバッファ２０７へのデータ転送と、バッファ２０７からキャッシュメモリ２０６へのデータ転送とを組み合わせたデータ転送、キャッシュメモリ２０６からバッファ２０７へのデータ転送と、バッファ２０７からホスト計算機１００へのデータ転送とを組み合わせたデータ転送のいずれかの形態で実行されることがある。なお、本実施形態ではキャッシュメモリ２０６の記憶領域の一部に、二段転送の場合の一時的データ記憶領域であるバッファ２０７を設けているので、本明細書において、単にキャッシュメモリ２０６というときは、バッファ２０７として利用されている記憶領域以外のキャッシュメモリ２０６の記憶領域を指すものとする。
【００７１】
次に、ホスト計算機１００からのホストＩ／Ｏ要求に基づいて実行されるＩ／Ｏ処理に適用するデータ転送方式として、前記の直転送、二段転送のいずれを用いるかを判定するための、データ転送方式選択処理の詳細について説明する。
【００７２】
図１４は、データ転送方式選択処理の概略を示すフロー図である。以下では本実施形態について、図１４のフロー図を用いて説明する。なお、図１４のフロー図は本データ転送方式選択処理の一例を示すものであり、データ転送方式の選択処理フローは図１４で示すものに限定されない。例えば、図１４では、直転送を実施するか否かの判定に、専用のフラグ（ローカルメモリ２０４に格納される直転送フラグ６００）を用いているが、直転送を実施するか否かの判定は直転送フラグ６００を用いたものに限定されず、例えば各サブルーチンＳ９０１及びＳ９０２の内部でそれぞれ個別の判定を行い、これらの判定結果を基に、直転送を実施するか否かの判定を行う等の方法を用いてもよい。このデータ転送方式選択処理は、ＣＰＵ２０３によって実現されるデータ転送方式管理部２０４１によって、ＣＰＵ２０３がホストＩ／Ｏ要求を受領したときに実行される。以下、符号「Ｓ」はステップを表す。
【００７３】
まず、データ転送方式管理部２０４１は、ローカルメモリ２０４にアクセスして直転送フラグ６００をＯＮに設定する（Ｓ９００）。データ転送方式管理部２０４１が設定する代わりに、直転送フラグ６００の初期値をＯＮに設定しておいてもよい。Ｓ９０１のステップ以降の処理において、二段転送を用いることが決定した時点で直転送フラグ６００がＯＮからＯＦＦへ変更される。
【００７４】
本データ転送方式選択処理のサブルーチンであるＳ９０１では、ホスト計算機１００の指示によって実行されるＩ／Ｏ処理を、直転送にて実施することが可能か否か（ＤＭＡ２０５の持つ特殊な機能を必要とするか否か）の判定処理が行われる。判定処理の結果、直転送を実施不可能と判定された場合は、直転送フラグ６００がＯＦＦに設定される。なお、同じくサブルーチンであるＳ９０２による判定が実施される場合、Ｓ９０１による直転送実施可否判定処理は実施しなくてもよい。
【００７５】
次に、サブルーチンのＳ９０２では、ホスト計算機１００の指示によって実行されるＩ／Ｏ処理を、直転送にて実施した方が、二段転送にて実施した場合に比べてデータ転送処理が高速で実行することができるか否かの判定処理が行われる。判定処理の結果、二段転送にて実施した方が高速であると判定された場合は、直転送フラグ６００がＯＦＦに設定され、それ以外の場合には直転送フラグ６００は変更されない。なお、サブルーチンのＳ９０１による判定が実施される場合、Ｓ９０２による判定は実施しなくてもよい。また、Ｓ９０１において直転送実施が不可能であると判定された場合には、Ｓ９０２の処理をスキップするように構成することができる。
【００７６】
次いで、サブルーチンのＳ９０１及びＳ９０２で行われた判定処理の結果を基に、データ転送方式の選択を行う（Ｓ９０３）。Ｓ９０１及びＳ９０２で行われた判定処理の結果、直転送フラグ６００がＯＮに設定されている場合は（Ｓ９０３、Ｙｅｓ）、直転送が実行される（Ｓ９０４）。直転送フラグ６００がＯＦＦに設定されている場合は（Ｓ９０３、Ｎｏ）、二段転送が実行される（Ｓ９０５）。
【００７７】
図１５は、図１４に示すデータ転送方式選択処理フローの他の構成例である。図１５では、図１４の直転送実施可否判定処理サブルーチンであるＳ９０１は、複数の判定処理Ｓ９０１ａ〜Ｓ９０１ｃを組み合わせて構成されている。また、サブルーチンＳ９０２の判定処理は単一の判定処理に依存することなく、複数の高速化可否判定処理を行った結果を基に、総合的に最もデータ転送処理が高速となる転送方式を選択する処理としてもよい。
【００７８】
次に、図１４のサブルーチンＳ９０１で行われる直転送実施可否判定処理の詳細を説明する。図１６は、保証コードの付与／チェックの要否に基づいてデータ転送方式の選択を行うための、サブルーチンＳ９０１の一例である。以下では、本実施例のＳ９０１での処理について図１６のフロー図を用いて説明する。この直転送実施可否判定処理は、ＣＰＵ２０３によって実現されるデータ転送方式判定部２０４１によって実行される。
【００７９】
サブルーチンＳ９０１の判定処理において、直転送を実施不可能と判定されるＩ／Ｏ処理の例としては、例えば汎用プロトコルチップでは付与／チェックが困難な特殊なデータ保証コードにつき、ＤＭＡ２０５を用いて付与／チェックを行うケースが考えられる。
【００８０】
例えば、極めて重要なデータを扱うストレージシステムでは、ＳＡＴＡ  ＨＤＤを採用した場合、所要の信頼性が十分に確保できない場合がある。そこで、データ転送先または転送元のデバイスがＳＡＴＡ  ＨＤＤの場合は、ＤＭＡ２０５を用いてデータ保証コードを付与／チェックするために二段転送を用いる。データ転送先または転送元のデバイスがＦＣ  ＨＤＤあるいはＳＡＳ  ＨＤＤの場合は、そのような特殊なデータ保証コードを付与／チェックしなくても、汎用プロトコルチップで付与／チェックが可能な保証コードを用いるだけで十分な信頼性が確保できるため、直転送を用いることができる。
【００８１】
また、ストレージシステム２００を含む情報処理システム１に求められる信頼性等に基づいて転送方式を使い分けてもよい。例えば、データ自体の信頼性よりもデータ転送のスループット性能が求められる状況下においては、転送先または転送元のデバイスがＳＡＴＡ  ＨＤＤの場合においても、直転送を実施することでシステムのスループット性能を高めることができる。逆に、スループット性能よりも、データ自体の信頼性が優先される状況下においては、ＦＣ  ＨＤＤやＳＡＳ  ＨＤＤの場合もデータ保証コードを付与／チェックするために二段転送を用いることで、システムの信頼性をより高めることができる。
【００８２】
図１６の処理フロー例を参照すると、データ転送方式判定部２０４２は、まずＤＭＡ２０５によって実行される特殊な保証コード（以下「特殊保証コード」ともいう。）の付与／チェックが必要であるか判定を行う（Ｓ１０００）。特殊保証コードの付与／チェックの要否は、例えば転送種別情報３０２、４０２、または５０２に設定される転送先／転送元の記憶装置種別情報を基に判定される。
【００８３】
Ｓ１０００にて、特殊保証コードの付与／チェックが不必要と判定された場合は（Ｓ１０００、Ｎｏ）、データ転送方式判定部２０４２は、ＤＭＡ転送テーブル５００中の、保証コード付与の要否判定情報５０６、または保証コードチェックの要否判定情報５０８をＯＦＦとする（Ｓ１００１）。この際、直転送フラグ６００は変更されない。
【００８４】
Ｓ１０００にて、特殊保証コードの付与／チェックが必要と判定された場合は（Ｓ１０００、Ｙｅｓ）、データ転送方式判定部２０４２は、直転送フラグ６００をＯＦＦとし（Ｓ１００２）、ＤＭＡ転送テーブル５００中の、保証コード付与の要否判定５０６、または保証コードチェックの要否判定情報５０８をＯＮとする（Ｓ１００３）。
【００８５】
以上の処理が終了した後、データ転送方式判定部２０４２は、生成した保証コード、またはチェックを行うための保証コードの期待値をＤＭＡ転送テーブル５００の保証コード設定値５０７、または保証コード期待値５０９に設定し、ＤＭＡ２０５によるデータ転送を行う際に、ＤＭＡ転送テーブル５００の設定内容に基づいて、特殊保証コードの付与／チェックを行う。
【００８６】
なお、図１６のフロー図にて付与／チェックされる保証コードは、一つの保証コードに限定されない。例えば二種類の保証コードが適用される場合、これらの付与／チェックが必要か、データ転送方式判定部２０４２によりそれぞれの判定を続けて行ってもよい
【００８７】
また、保証コードには、プロトコルチップで付与／チェックすることができる汎用保証コードと、ＤＭＡ２０５で付与／チェックする特殊保証コードとを混在させてもよい。例えば、５１２バイトのデータ毎に８バイトの保証コードを付与する場合、最上位の１バイトにはＤＭＡ２０５で特殊な保証コードを付与し、残りの７バイトにはプロトコルチップで別の保証コードを付与する等の実装を行ってもよい。
【００８８】
図１４のサブルーチンＳ９０１の判定処理において、データの直転送が実施不可能と判定される他のＩ／Ｏ処理の例としては、ＤＭＡ２０５によってデータ中の特定のパターンを検出する処理（以下「パターン検出処理」ともいう。）がある。このパターン検出処理を実行する必要がある場合は、ＤＭＡ２０５による二段転送を実施し、その必要がない場合はＣＰＵ２０３による直転送を実施する。パターン検出処理には、例えば、ストレージシステム内に格納されているデータについて、重複したデータを排除するための重複排除処理、記憶装置中のデータが書かれていない部分（スペースあるいはｎｕｌｌ）及びゼロ・データで埋められている部分を検出するゼロ・データ検出等がある。
【００８９】
図１７は、パターン検出処理実行の要否判定結果からデータ転送方式の選択を行うためにデータ転送方式判定部２０４２により実行される、図１４のサブルーチンＳ９０１の一例である。以下では、本実施例のＳ９０１での処理について、図１７のフロー図を用いて説明する。
【００９０】
まずデータ転送方式判定部２０４２は、パターン検出処理の実行が必要か判定を行う（Ｓ１１００）。パターン検出処理の実行要否は、例えばホスト計算機１００からの指示を含むホストＩ／Ｏ要求を基に判定される。
【００９１】
Ｓ１１００にて、パターン検出処理の実行が不必要と判定された場合は（Ｓ１１００、Ｎｏ）、データ転送方式判定部２０４２は、ＤＭＡ転送テーブル５００中の、パターン検出処理の要否判定情報５１２をＯＦＦとする（Ｓ１１０１）。この際、直転送フラグ６００は変更されない。
【００９２】
Ｓ１１００にて、パターン検出処理の実行が必要と判定された場合は（Ｓ１１００、Ｙｅｓ）、データ転送方式判定部２０４２は、直転送フラグ６００をＯＦＦとし（Ｓ１１０２）、ＤＭＡ転送テーブル５００中の、パターン検出処理の要否判定情報５１２をＯＮとする（Ｓ１１０３）。以上の処理が終了した後、ＤＭＡ２０５は任意のタイミングでパターン検出処理を行う。
【００９３】
次に、サブルーチンＳ９０１の判定処理において、直転送が実施不可能と判定される、さらに他のＩ／Ｏ処理の例を説明する。この「他のＩ／Ｏ処理」の例では、キャッシュメモリ２０６への二重書き（以下「キャッシュ二重書き」ともいう。）を行う場合は二段転送を実施し、キャッシュ二重書きを行う必要がない場合は直転送を実施する。
【００９４】
直転送にてキャッシュ二重書きを実施するためには、データ転送を実行するプロトコルチップが複数のキャッシュメモリ２０６のアドレスに対して転送を行う必要がある。汎用プロトコルチップには複数の転送先アドレスを設定する機能がない場合が多いため、キャッシュ二重書きを行う際は、ＤＭＡ２０５による二段転送を実施する必要がある。
【００９５】
図１８はキャッシュ二重書きの一例を示す模式図であり、ホスト計算機１００からキャッシュメモリ２０６へのデータ転送の様子を示したものである。図１８の例では、ホスト計算機１００からキャッシュメモリ２０６へデータ１２００を転送する際に、キャッシュメモリ２０６にライトするデータを二重化することによってシステムの信頼性を高めるために、キャッシュ二重書きを実施する。なお、データ二重書きの対象は、ハードウェアとして同一のキャッシュメモリ２０６の異なるアドレス、あるいはハードウェアとして異なるキャッシュメモリ２０６上の各アドレスのいずれかである。
【００９６】
図１９はキャッシュ二重書きの別の一例を示す模式図であり、記憶デバイス２１０からキャッシュメモリ２０６へのデータ転送の様子を示したものである。図１９において、キャッシュ二重書きが必要となる場合について、図２０及び図２１を用いてさらに説明する。
【００９７】
図２０及び図２１は、記憶デバイス２１０（２１０ａ及び２１０ｂ）が、ＲＡＩＤ１の構成を取るストレージシステムにおける、キャッシュメモリ２０６中のダーティデータ１３００ａ及び１３００ｂのデステージ処理を示す模式図である。ダーティデータは、キャッシュメモリ２０６に格納されているデータであって、まだ記憶装置２０９（記憶デバイス２１０）にライトされていないデータを示す。
【００９８】
図２０は、ダーティデータ１３００ａ及び１３００ｂを、記憶デバイス２１０ａ及び２１０ｂに対して個別にデステージした場合のデータの流れを示す模式図である。図２０の例では、記憶デバイス２１０ａ及び２１０ｂに対するアクセス回数は、計４回となる。
【００９９】
これに対して、図２１では、デステージを実行する前に、ＣＰＵ２０３がキャッシュメモリ２０６の状態をチェックし、デステージするダーティデータの間をステージングによって埋めることが可能かチェックを行う。ダーティデータ１３００ａ、１３００ｂ間を埋めることが可能な場合は、図２１に示すように、ダーティデータ１３００ａ及び１３００ｂの間のデータ１３０１を記憶デバイス２１０からステージングした後、ダーティデータ１３００ａ及び１３００ｂ及びステージングしたデータ１３０１をまとめてデステージする。図２１の例では、記憶デバイス２１０ａ及び２１０ｂに対するアクセス回数は計３回となり、図２０の例よりも、記憶デバイス２１０ａ及び２１０ｂに対するアクセス回数を減少させることができる。
【０１００】
ただし、キャッシュメモリ２０６ａに障害が発生した場合は、図２０に例示した機能を用いることができないため、キャッシュメモリ２０６ａ及び２０６ｂに対して、キャッシュ二重書きを実施することとなる。
【０１０１】
図２２は、キャッシュ二重書き処理実行の要否判定結果に基づいてデータ転送方式の選択を行うために実行される、図１４のサブルーチンＳ９０１の一例である。以下では、本実施例のＳ９０１での処理について、図２２のフロー図を用いて説明する。
【０１０２】
データ転送方式判定部２０４２は、まずキャッシュ二重書き処理の実行が必要か判定を行う（Ｓ１４００）。キャッシュ二重書き処理の実行要否は、例えばＤＭＡ転送テーブル５００中の、転送種別情報５０２に設定されている情報を基に判定される。
【０１０３】
Ｓ１４００にて、キャッシュ二重書き処理の実行が不必要と判定された場合は（Ｓ１４００、Ｎｏ）、データ転送方式判定部２０４２は直転送フラグ６００を変更することなくそのまま処理を終了する。
【０１０４】
Ｓ１４００にて、キャッシュ二重書き処理の実行が必要と判定された場合は（Ｓ１４００、Ｙｅｓ）、データ転送方式判定部２０４２は、直転送フラグ６００をＯＦＦとする（Ｓ１４０１）。
【０１０５】
以上の処理が終了した後、ＤＭＡ転送テーブル５００中の、データ格納先アドレスに記載された二つのキャッシュメモリ２０６のアドレスに対してデータがステージングされる。
【０１０６】
次に、図１４のサブルーチンＳ９０２で実行される判定処理の詳細を説明する。
サブルーチンＳ９０２において、二段転送処理の方がＩ／Ｏ処理が高速になると判定される例としては、記憶装置２０９からキャッシュメモリ２０６にデータをステージングする際に、キャッシュメモリ２０６上に記憶されているダーティデータを上書きしないように、ステージングするデータのマスキングを行う場合がある。以下この場合の処理を、「ビットマップステージング」ともいうこととする。
【０１０７】
図２３は、ビットマップステージングを用いずに、直転送でステージングを実行した場合のデータの流れの一例を表す模式図である。図２３に示すように、キャッシュメモリ２０６上のキャッシュセグメント１５００にダーティデータ１５０１ａ、１５０１ｂが存在し、且つキャッシュセグメント１５００上の、ダーティデータ１５０１ａ、１５０１ｂの存在する領域を含む領域に対してデータをステージングする場合を考える。
【０１０８】
直転送でデータをステージングしようとする場合、ダーティデータ１５０１ａ、１５０１ｂが存在する領域を上書きしないように、該領域を避けてステージングしなければならないため、記憶デバイス２１０に対して複数回のＩ／Ｏ処理を実行する必要がある。図２３の例では、ステージングデータ１５０２、１５０３、及び１５０４を、記憶デバイス２１０から別々にステージングしなければならない。記憶デバイス２１０のＩ／Ｏ性能は、一般的にメインメモリのＩ／Ｏ性能に対して３〜４桁程度小さいため、このような場合は記憶デバイス２１０へのデータＩ／Ｏ処理がボトルネックとなり、システム性能の低下を招くおそれがある。
【０１０９】
図２４は、ビットマップステージングを用いて、二段転送でキャッシュメモリ２０６へステージングした場合のデータの流れの一例を表す模式図である。図２４に示すように、ステージングするキャッシュセグメント１６００中のダーティデータ１６０１ａ、１６０１ｂの存在を示すビットマップからビットマスク１６０２を作成し、記憶デバイス２１０からリードしたデータ１６０１に該ビットマスク１６０２を適用したデータ１６０３を、キャッシュメモリ２０６のキャッシュセグメント１６００にステージングする。これにより、記憶デバイス２１０に対するＩ／Ｏ回数を最小限に抑えることが可能となり、システムのスループットを高めることができる。
【０１１０】
図２５は、前記のビットマップステージング処理実行の要否判定結果に基づいてデータ転送方式の選択を行うために実行される、図１４のサブルーチンＳ９０２の一例である。
以下では、本実施例のＳ９０２について図２５に例示するフロー図を用いて説明する。
【０１１１】
データ転送方式判定部２０４２は、まずホスト計算機１００からのホストＩ／Ｏ要求がステージング処理であるか否かの判定を行う（Ｓ１７００）。ホスト計算機１００からのホストＩ／Ｏ要求種別は、例えばホストＩ／Ｆ転送テーブル３００中に設定される、転送種別情報３０２の情報を基に判定される。
【０１１２】
ホスト計算機１００からのホストＩ／Ｏ要求の内容がステージングでないと判定された場合（Ｓ１７００、Ｎｏ）、ビットマップステージング処理は実行されないため、Ｓ９０２の処理はそのまま終了する。ホスト計算機１００からのホストＩ／Ｏ要求の内容がステージングであると判定された場合（Ｓ１７００、Ｙｅｓ）、ＣＰＵ２０３により具現化されているデータ転送方式判定部２０４２は、キャッシュメモリ２０６中のステージングを行うアドレス範囲の状態を確認し、当該アドレス範囲におけるビットマップを作成する（Ｓ１７０１）。このビットマップは、Ｓ１７０１実行前の適当な時機に予め作成しておいてもよい。次にデータ転送方式判定部２０４２は、Ｓ１７０１にて作成したビットマップを基に、ビットマップステージング処理の実行の要否を判定する（Ｓ１７０２）。
【０１１３】
Ｓ１７０２にて、ビットマップステージング処理の実行が不必要と判定された場合は（Ｓ１７０２、Ｎｏ）、データ転送方式判定部２０４２は、ＤＭＡ転送テーブル５００中の、ビットマップステージング処理の要否判定情報５１０をＯＦＦとする（Ｓ１７０３）。この際、直転送フラグ６００は変更されない。
【０１１４】
Ｓ１７０２にて、ビットマップステージング処理の実行が必要と判定された場合は（Ｓ１７０２、Ｙｅｓ）、データ転送方式判定部２０４２は、直転送フラグ６００をＯＦＦとし（Ｓ１７０４）、ＤＭＡ転送テーブル５００中の、ビットマップステージング処理の要否判定情報５１０をＯＮとする（Ｓ１７０５）。次に、データ転送方式判定部２０４２は、Ｓ１７０１にて作成されたビットマップを基に、ビットマスクを作成し、ＤＭＡ転送テーブル５００のビットマスク設定値５１１に設定する（Ｓ１７０６）。
【０１１５】
以上の処理が終了した後、ＤＭＡ２０５がＤＭＡ転送テーブル５００のビットマスク設定値５１１を用いて、ステージングするアドレス範囲のデータをマスキングしつつステージングを実施する。
【０１１６】
また、キャッシュメモリ２０６及びバッファ２０７の負荷状態、記憶デバイス２１０のＩ／Ｏ性能等を基に、ビットマップステージング処理の実行要否を判定してもよい。例えば、キャッシュメモリ２０６の負荷が極端に高い状況下では、二段転送によるビットマップステージング処理を実施した場合の方が直転送によるステージングを実施した場合よりもスループット性能が低くなる場合がありうる。このような場合は、ステージングを行うキャッシュセグメント上にダーティデータが存在するか否かに関わらず、直転送を実施するように構成することができる。実際の運用方法としては、予めキャッシュメモリ２０６に対する負荷の閾値を定めておき、キャッシュメモリ２０６に対する負荷が閾値以下の場合は、上記通常のビットマップステージング処理要否判定を行い、キャッシュメモリ２０６の負荷が前記閾値を超えている場合は、ビットマップステージング処理の要否判定情報５１０を常にＯＦＦにする、等の構成が考えられる。
【０１１７】
また、メモリ負荷があまり高くない状況下においても、ステージングする記憶デバイス２１０が、ＳＳＤ等の高速なＩ／Ｏ処理が期待できるものである場合は、該記憶デバイス２１０に対する複数回のＩ／Ｏ処理を直転送で実行するために必要な処理時間の方が、二段転送によるビットマップステージング処理に必要な処理時間よりも短い場合がある。このような場合もビットマップステージング処理を実行することなく直転送を実施する。
【０１１８】
本実施例においては、バッファ２０７に割り当てられているメモリ領域及び帯域は、実行中の処理や、ストレージシステム２００の状態等に応じて増減させてもよい。例えば、データ転送方式の大半を直転送が占めている場合等、バッファ２０７に割り当てられている容量及び帯域に余裕がある場合は、バッファ２０７に割り当てられている容量及び帯域を減らし、減らした分をキャッシュメモリ２０６に割り当てることでよりＩ／Ｏ性能を高めることができる。図２６は、バッファ２０７の容量及び帯域の一部をキャッシュメモリ２０６に割り当てる様子を示す模式図である。
【０１１９】
逆に、キャッシュメモリ２０６に割り当てられている容量及び帯域に余裕がある場合は、キャッシュメモリ２０６からバッファ２０７に割り当てられる容量及び帯域を増やすことで、同様にＩ／Ｏ性能を高めることができる。図２７はキャッシュメモリ２０６の領域及び帯域の一部をバッファ２０７に割り当てる様子を示す模式図である。
【０１２０】
これらのデータ転送方式の選択処理は、ストレージシステム２００を設計する際に予め設定された判定方式に従って自動的に実施されるように構成してもよいし、管理装置１１０が、Ｉ／Ｏ性能、信頼性等の条件を基にシステム管理者が設定した判定方式を、管理Ｉ／Ｆ２１１を介してストレージシステム２００（特にＣＰＵ２０３により具現化されるデータ転送方式管理部２４０１）に通知して適用させるようにしてもよい。
【０１２１】
次に、管理装置１１０からの指示を受けてデータ転送方式選択の基準を変更する方法の一例を示す。
【０１２２】
図２８はデータ転送方式の選択を行うための基準となる情報が格納されたテーブル（以下「転送方式選択基準テーブル」ともいう。）の一例を示す図である。まず、予め、ＣＰＵ２０３が、転送方式選択基準テーブル１８００を作成し、記憶デバイス２１０等の不揮発な記憶領域に格納しておく。ストレージシステム２００の電源投入時に、ＣＰＵ２０３（例えばデータ転送方式管理部２４０１）が転送方式選択基準テーブル１８００を読み込み、ローカルメモリ２０４等の、ＣＰＵ２０３が参照可能な記憶領域に格納する。管理装置１１０からの指示を受けたＣＰＵ２０３は、転送方式選択基準テーブル１８００に格納された、特殊保証コード適用デバイス情報１８０１等を、管理装置１１０からの指示通りに書き換える。データ転送時は、転送方式選択基準テーブル１８００をデータ転送方式管理部２４０１が参照し、ホストＩ／Ｆ転送テーブル３００、ディスクＩ／Ｆ転送テーブル４００、またはＤＭＡ転送テーブル５００を作成する。電源断時は、ＣＰＵ２０３が具現化するデータ転送方式管理部２４０１が、転送方式選択基準テーブル１８００を記憶デバイス２１０等の不揮発な記憶領域に格納する。
【０１２３】
転送方式選択基準テーブル１８００には、例えば、図１６のＳ１０００にて、特殊な保証コードの付与／チェックが要と判定されるデバイス種別の情報である、特殊保証コード適用デバイス情報１８０１や、図１７のパターン検出処理を実施するか否か、あるいはどのパターン検出処理を実施するかを示す、パターン検出処理の要否判定情報１８０２、図２５のＳ１７０２にてビットマップステージング不要と判定されるキャッシュメモリ２０６の負荷の閾値である、ビットマップステージング実施閾値情報１８０３等を格納することができる。
【０１２４】
《第２の実施形態》
次に、本発明の第２の実施形態について、図２９から図３１を参照して説明する。
【０１２５】
第１の実施形態では、単一のストレージシステム２００における本発明の実施形態を説明したが、第２の実施形態は、複数のストレージシステム２００間で実行されるＩ／Ｏ処
理に関する。
【０１２６】
なお、第２の実施形態は、第１の実施形態の変形例であるから、以下には第２の実施形態の構成につき、第１の実施形態の差異に注目して説明する。
【０１２７】
図２９は、本実施例における情報システム１の構成を示している。図２９に示す構成は、本発明の理解及び実施に必要な程度で本発明の概要を示しており、本発明の範囲は図２９に示す構成に限定されない。
【０１２８】
ホスト計算機１００と、ストレージシステム２００ａ及び２００ｂとは、ＳＡＮ（Storage Area Network）等の通信ネットワーク１２１を介して相互に接続される。管理装置１１０と、ストレージシステム２００ａ及び２００ｂとは、ＬＡＮ（Local Area Network）等の通信ネットワーク１２２を介して相互に接続される。図２９において、ホストI／Ｆ
２０１ａは、第１の実施形態で既に説明した機能に加えて、通信ネットワーク１２１を介して相互に接続されたストレージシステム２０１ｂとのデータ転送を実行する。ストレージシステム２００ｂに設けられているホストI／Ｆ２０１ｂも同様に、第１の実施形態で
既に説明した機能に加えて、通信ネットワーク１２１を介して、相互に接続されたストレージシステム２０１ａとのデータ転送を実行する。これ以外の図２８の構成要素が有する機能は、図１を参照して説明した第１の実施形態とほぼ同等であるため、説明は省略する。
【０１２９】
なお、通信ネットワーク１２１及び１２２に接続されるストレージシステム２００は、３台以上であってもよい。また、本実施例にて、情報システム１が図２９の構成をとった場合においても、ストレージシステム２００ａまたは２００ｂ内のＩ／Ｏ処理に関しては、第１の実施形態で示した全ての方式を適用可能である。
【０１３０】
以下、本実施例について、第１の実施形態の図１４のフロー図を用いて説明する。ストレージシステム２００ａ、２００ｂ間でデータバックアップ等の目的でデータをコピーする（以下このデータコピーを「リモートコピー」という。）際には、ストレージシステム２００ａ、２００ｂ間でのデータ転送時のエラーを検出または訂正するため、転送するデータに対して保証コードを付与する必要がある。実際のストレージシステムの運用形態としては、例えば、あるストレージ製品の新機種を導入する際に、同シリーズの旧機種をバックアップストレージ等に転用すること等が考えられる。この際、新機種で用いる汎用プロトコルチップがサポートする保証コードを、旧機種で用いられた汎用プロトコルチップがサポートしているとは限らないため、汎用プロトコルチップに依存しない独自の保証コードを用いる必要がある。
【０１３１】
本実施例では、別個のストレージシステム２００ａ、２００ｂ間でリモートコピーを実施する際には、使用しているホストＩ／Ｆ２０１の構成が同一であるストレージシステム２００ａ、２００ｂ間でのみ行われるリモートコピーの場合には、双方のホストＩ／Ｆ２０１が付与／チェック可能な保証コードを用いることで、両ストレージシステム２００ａ、２００ｂ間で直転送を実施することが可能となる。したがって、前記のように、リモートコピーに伴うデータ転送を行うストレージシステム２００ａ、２００ｂのペアで同一のホストＩ／Ｆ２０１を使用している等、同じ保証コードを用いることができる場合は、ストレージシステム２００ａ、２００ｂ間で直転送を実行してメモリ負荷を軽減し、それ以外の場合はストレージシステム２００間で二段転送を用いることができる。ストレージシステム２００ａ、２００ｂ間で同じ保証コードを用いることができない場合、ＤＭＡ２０５ａまたは２０５ｂを使用して新旧両ストレージシステム２００ａ、２００ｂで共通の保証コードを利用するために、ＤＭＡ２０５ａまたは２０５ｂ経由の二段転送を実行する。この場合、図１４のサブルーチンＳ９０１の判定処理において、直転送が実施不可能であ
ると判定されるように構成する。
【０１３２】
図３０は、リモートコピー実施時に使用する転送情報が格納されたリモートコピー用制御情報テーブル１９００の一例を示す図である。リモートコピーを実行する際は、ＣＰＵ２０３はリモートコピー用制御情報テーブル１９００を参照し、データ転送を実行する。
【０１３３】
リモートコピー用制御情報テーブル１９００は、ローカルメモリ２０４等のＣＰＵ２０３が参照可能な記憶領域に格納される。転送先ストレージシステム情報１９０１には、転送先のストレージシステム２００ａ、２００ｂの情報が格納される。ペア論理ユニット管理情報１９０２には、転送元のストレージシステムと、転送先のストレージシステムにおいて、ペアとなる論理ユニットの情報が格納される。
【０１３４】
図３１は、リモートコピーのコピー先アドレス情報からデータ転送方式の選択を行うために実行される、図１４のサブルーチンＳ９０１の一例である。以下では、本実施例のＳ９０１での処理について図３１のフロー図を用いて説明する。
【０１３５】
まず、ＣＰＵ２０３によって具現化されるデータ転送方式判定部２０４２は、ホスト計算機１００の指示したホストＩ／Ｏ要求に含まれているコピー先のアドレス情報から、ストレージシステム２００ａ、２００ｂ間のリモートコピーの実施が必要か否かの判定を行う（Ｓ２０００）。
【０１３６】
Ｓ２０００にて、ストレージシステム２００ａ、２００ｂ間のリモートコピーの実施が不必要と判定された場合は（Ｓ２０００、Ｎｏ）、そのまま処理は終了し、直転送フラグ６００は変更されない。
【０１３７】
一方、Ｓ２０００にて、ストレージシステム２００ａ、２００ｂ間のリモートコピーの実施が必要と判定された場合は（Ｓ２０００、Ｙｅｓ）、データ転送方式判定部２０４２は、直転送フラグ６００をＯＦＦとし（Ｓ２００１）、リモートコピー先ストレージシステムにおける保証コードを設定する（Ｓ２００２）。この保証コードは、例えばＤＭＡ転送テーブル５００中に格納しておく。実際にリモートコピーを行う際は、ＤＭＡ２０５ａまたは２０５ｂが、該保証コードを参照し、保証コードの付与を行う。
【０１３８】
以上詳細に説明したように、本発明の実施形態によれば、ストレージシステム２００内でのデータ転送に伴って実行する必要があるデータ処理、例えば特殊保証コードの付与／チェック等の要否、あるいはビットマップステージング等のデータＩ／Ｏ処理高速化のための処理実施可否の判定結果に応じて直転送と二段転送とを使い分けることにより、記憶デバイス２１０の性能、キャッシュメモリ２０６の容量等のハードウェア資源に制約がある場合でも、データＩ／Ｏ処理性能の向上を図ることができる。また、２台以上のストレージシステム２００間でリモートコピー処理を実行する場合でも、単一のストレージシステム２００の場合と同様に、直転送と二段転送とを使い分けることにより、データＩ／Ｏ処理性能の向上を図ることができる。
【０１３９】
なお、本発明は、上記した第１の実施形態または第２の実施形態によって限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、一の実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、一の実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の実施形態構成の追加・削除・置換をすることが可能である。また、図示した構成は、説明上必要と考えられる範囲で示しており、具体的製品として成立させるために必要な全ての構成を示しているわけで
はない。
【図１】
0005856665.tif 000002
【図２】
0005856665.tif 000003
【図３】
0005856665.tif 000004
【図４】
0005856665.tif 000005
【図５】
0005856665.tif 000006
【図６】
0005856665.tif 000007
【図７】
0005856665.tif 000008
【図８】
0005856665.tif 000009
【図９】
0005856665.tif 000010
【図１０】
0005856665.tif 000011
【図１１】
0005856665.tif 000012
【図１２】
0005856665.tif 000013
【図１３】
0005856665.tif 000014
【図１４】
0005856665.tif 000015
【図１５】
0005856665.tif 000016
【図１６】
0005856665.tif 000017
【図１７】
0005856665.tif 000018
【図１８】
0005856665.tif 000019
【図１９】
0005856665.tif 000020
【図２０】
0005856665.tif 000021
【図２１】
0005856665.tif 000022
【図２２】
0005856665.tif 000023
【図２３】
0005856665.tif 000024
【図２４】
0005856665.tif 000025
【図２５】
0005856665.tif 000026
【図２６】
0005856665.tif 000027
【図２７】
0005856665.tif 000028
【図２８】
0005856665.tif 000029
【図２９】
0005856665.tif 000030
【図３０】
0005856665.tif 000031
【図３１】
0005856665.tif 000032