以下、本発明を実施する形態として、第1の実施形態と、第2の実施形態とを、図面を参照して説明する。
《第1の実施形態》
最初に、本発明の第1の実施形態について、図1から図27を用いて説明する。図1に、第1の実施形態による情報処理システム1の構成例を示している。
第1の実施形態は、単一のストレージシステム内で実行される本発明のデータI/O処
理に関する。図1に示す構成は、本発明の理解及び実施に必要な程度で本発明の概要を示しており、本発明の構成は図1に示すものに限定されない。
図1に示す第1の実施形態の情報処理装置1は、ホスト計算機100(外部装置)と、ホスト計算機100と通信可能に接続されているストレージシステム200と、ストレージシステム200と通信可能に接続されている管理装置110とを備えている。
ホスト計算機100は、ストレージシステム200内部に存在するホストI/F201に接続されており、当該ホスト計算機100上で動作しているアプリケーション等のソフトウェアのデータ記憶領域としてストレージシステム200を利用する。図1の例では1台のホスト計算機100がストレージシステム200に接続されているが、複数のホスト計算機100を接続してもよい。
図2にホスト計算機100に適用することができるコンピュータ10の一例を示している。コンピュータ10は、CPU(Central Processing Unit)11、揮発性または不揮
発性のメモリ12(RAM(Random Access Memory)またはROM(Read-Only Memory))、記憶装置13(例えばHDD(Hard Disk Drive)、SSD(Solid State Drive))、キーボードやマウス等の入力装置14、液晶モニタやプリンタ等の出力装置15、及びNICやHBA等の通信インタフェース(通信I/F16と表記する。)を備える。
図3に、ホスト計算機100のソフトウェア構成の一例を示している。ホスト計算機100は、ホスト計算機100のハードウェア資源を制御する基本ソフトウェアであるオペレーティングシステム(Operating System、以下「OS」)101と、OS101上で動作する応用ソフトウェアである各種のアプリケーション102と、外部装置との間でのデータI/O処理を実行するデータI/O部103とを備えている。アプリケーション102からストレージシステム200へのデータライト、及びストレージシステム200からのデータリードは、データI/O部103を通じて発行されるホストI/O要求を、後述するストレージシステム200のホストI/F201に送信することによって実行される。
管理装置110は、キーボードやマウス等の入力装置を介してストレージシステム200の管理者からの指示を受信し、受信した運用・保守指示をストレージシステム200内部に設けられている管理I/F211を介して各機器に送信する機能を有する。管理装置110は、例えばパーソナルコンピュータやオフィスコンピュータであり、前記した図2に例示のコンピュータ10の構成を有する。
管理装置110は、ストレージシステム200と一体として構成しても(同一筐体に実装されていても)よい。管理装置110は、前記のホスト計算機100と同様に、例えば図3に示すソフトウェア構成を有し、ストレージシステム200の制御や監視のためのGUI(Graphical User Interface)やCLI(Command Line Interface)等を用いたユーザインタフェースを備えるアプリケーション112と、OS111及びデータI/O部113とを備える。
内部ネットワーク202を介して行われる通信は、例えば、ファイバーチャネル、iSCSI、TCP/IP等のプロトコルに従って行われる。
次に、本実施形態のストレージシステム200について説明する。図1に例示するように、ストレージシステム200は、ホストI/F201(第1のデータ転送制御部)と、内部ネットワーク202と、CPU203と、ローカルメモリ204と、DMA205(第3のデータ転送制御部)と、キャッシュメモリ206(第1の一時データ記憶部)と、
ディスクI/F208(第2のデータ転送制御部)と、記憶装置209と、管理I/F211とを備えて構成される。なお、ホストI/F201と、内部ネットワーク202と、CPU203と、ローカルメモリ204と、DMA205と、キャッシュメモリ206と、ディスクI/F208と、記憶装置209と、管理I/F211とは、ストレージシステム200内にそれぞれ複数設けられていても構わない。
キャッシュメモリ206は、ホスト計算機100と記憶装置210の間で授受されるデータを一時的に格納するメモリであり、例えば高速アクセスが可能なRAMを用いて構成される。また、本実施形態では、キャッシュメモリ206は、内部にバッファ207(第2の一時データ記憶部)を有する。このバッファ207は、後述するように、ホストI/F201がホスト計算機100とキャッシュメモリ206との間でのデータ転送を制御する際、あるいはディスクI/F208が、記憶装置209とキャッシュメモリ206との間でのデータ転送を制御する際に、転送データを一時的に格納する記憶領域として使用される。なお、バッファ207は、キャッシュメモリ206と別のハードウェアとしての他のメモリに設けるようにしてもよい。キャッシュメモリ206には、内部ネットワーク202を通じて、ホストI/F201、CPU203、DMA205、及びディスクI/F208がアクセスすることができる。
記憶装置209は、ディスクI/F208を介して内部ネットワーク202と接続されており、複数の記憶デバイス210(HDD、SSD、フレキシブルディスク、磁気テープ、光ディスク等)を備えて構成されている。以下の説明において、記憶装置209は、例えばSAS(Serial Attached SCSI)、SATA(Serial ATA)、FC(Fibre Channel)、PATA(Parallel ATA)、SCSI等のタイプのHDD、もしくはSSDを用い
て構成されているものとする。
記憶装置209は、記憶デバイス210をRAID(Redundant Arrays of Inexpensive (or Independent) Disks)等の制御方式で制御することによって提供される記憶領域
(例えばRAIDグループ(パリティグループ(Parity Group)の記憶領域)を用いて構成される論理装置(LDEV: Logical Device)を単位とする記憶領域を提供する。すなわち、ストレージシステム200は、ホスト計算機100に対し、LDEVを用いて構成される論理的な記憶領域(LU:Logical Unit)を提供する。
ホストI/F201は、ホスト計算機100と、キャッシュメモリ206またはバッファ207との間のデータ転送を実行する機能を備え、内部ネットワーク202によりキャッシュメモリ206またはバッファ207に接続されている。図4にホストI/F201のハードウェア構成の一例を示している。ホストI/F201は、ホスト計算機100と通信するためのポート(通信ポート)を有する外部通信インタフェース(以下、外部通信I/F2011と表記する。)、プロセッサ2012、メモリ2013、内部ネットワーク202と通信するためのポート(通信ポート)を有する内部通信インタフェース(以下、内部通信I/F2014と表記する。)を備える。
このうち外部通信I/F2011は、例えばNIC(Network Interface Card)やHBA(Host Bus Adaptor)を用いて構成される。プロセッサ2012は、例えばCPU、MPU(Micro Processing Unit)を用いて構成される。メモリ2013は、RAM、RO
M等である。内部通信I/F2014は、内部ネットワーク202を介して、CPU203、ローカルメモリ204、ディスクI/F208、キャッシュメモリ206、バッファ207と通信を行う。
CPU203は、ローカルメモリ204に格納された各種のコンピュータプログラムを実行することによって、ホスト計算機100と記憶装置209との間でのデータの授受を
制御する。図5にCPU203のハードウェア構成の一例を示している。CPU203は、内部通信インタフェース(以下、内部通信I/F2031と表記する。)、プロセッサ2032、及びメモリ2033を備える。内部通信I/F2031は、内部ネットワーク202を介してホストI/F201、ディスクI/F208、ローカルメモリ204、キャッシュメモリ206と通信を行う。内部通信I/F2031はまた、内部ネットワーク202とは別に設けられた管理ネットワークを経由して、管理I/F211を通じて管理装置110と通信を行う。プロセッサ2032は、適宜の演算プロセッサである。メモリ2033は、RAM又はROMであり、CPU203のデータI/Oに関するバッファ等として使用される。
ローカルメモリ204は、CPU203と接続されており、CPU203から発行される命令等を格納する機能を有し、RAM、ROM等のメモリと、このメモリをCPU203に接続するインタフェース回路とを備える。図7に、ローカルメモリ204に格納されるコンピュータプログラム及びデータ等の一構成例を示している。
図7の例では、ローカルメモリ204には、CPU203によって読み出されて実行されることによりデータ転送方式管理部2041及びデータ転送方式判定部2042の機能を実現するコンピュータプログラムと、ホストI/F転送テーブル300、ディスクI/F転送テーブル400、DMA転送テーブル500、及び直転送フラグ600を含むデータテーブル類が格納されている。
データ転送方式管理部2041(データ転送制御管理部)は、CPU203によるホスト計算機100、キャッシュメモリ206、バッファ207、及び記憶装置209の間でのデータ転送制御機能を提供する。データ転送方式管理部2041とともにデータ転送制御管理部を構成するデータ転送方式判定部2042は、DMA205を用いたデータ転送を実行するかを判定する機能を提供する。
ホストI/F転送テーブル300、ディスクI/F転送テーブル400、及びDMA転送テーブル500は、それぞれCPU203がホスト計算機100からホストI/O要求を受け取る毎に、ホストI/O要求の内容に従ってローカルメモリ204上に生成する。これらのテーブル300、400、及び500については後述する。
直転送フラグ600は、ホストI/O要求等に含まれる各種転送条件を基に、CPU203によってON又はOFFに設定される。CPU203は、該直転送フラグ600に記録されているデータを基に、DMA205を使用したデータ転送処理を実行するかを判断する。直転送フラグ600がONに設定されている場合には、DMA205によるデータ転送処理は行われない。なお、図7では、直転送フラグ600がローカルメモリ204に格納されているが、CPU203が参照可能なメモリであるならば、直転送フラグ600はキャッシュメモリ206やバッファ207の一部に格納してもよい。
なお、ローカルメモリ204に格納されるコンピュータプログラム、データテーブル類は、必ずしも図7に示したブロックの単位で構成する必要はなく、以下に詳述する本発明の実施形態の機能を実現するように構成されていればよい。
DMA205は、キャッシュメモリ206と、バッファ207との間のデータ転送を実行する機能を有し、汎用プロトコルチップでは実現することができない様々な特殊機能を備える。DMA205が有する特殊機能については後述する。DMA205は、内部ネットワーク202によりキャッシュメモリ206またはバッファ207に接続されている。DMA205のハードウェア構成の一例としては、前記の特殊機能を含む所用のデータ転送機能を有するように構成されるカスタムLSIが挙げられる。なお、DMA205は、
プロセッサにより実現する等、他のハードウェア構成を採用することもできる。
ディスクI/F208は、記憶装置209と、キャッシュメモリ206またはバッファ領域207との間のデータ転送を実行する機能を有し、内部ネットワーク202によりキャッシュメモリ206またはバッファ207に接続されている。図6にディスクI/F208のハードウェア構成の一例を示している。ディスクI/F208は、内部通信I/F2081、プロセッサ2082、メモリ2083、及びドライブインタフェース(以下、ドライブI/F2084と表記する。)を備える。内部通信I/F2081は、内部ネットワーク202を介して、ホストI/F201、CPU203、ローカルメモリ204、キャッシュメモリ206、バッファ207と通信する。プロセッサ2082は、例えばCPU、MPUである。メモリ2083は、例えばRAM、ROMである。ドライブI/F2084は、記憶装置209と通信する。なお、図1、2、及び4〜6に示したハードウェア構成は本実施形態における一例であって、例えば各ハードウェア構成要素をストレージシステム200としてどのように実装するかは、性能上、設計上の要請によって適宜決定することができる。
本実施形態においては、図7に関して説明したように、ホスト計算機100からホストI/O要求を受け付けたCPU203が、ホストI/F転送テーブル300、ディスクI/F転送テーブル400、及びDMA転送テーブル500を作成してローカルメモリ204に格納し、ホストI/F201と、ディスクI/F208と、DMA205とが、それぞれこれらの転送テーブル300、400、及び500に記録されている内容に従いデータ転送を行う。以下にホストI/F転送テーブル300、ディスクI/F転送テーブル400、及びDMA転送テーブル500の詳細を説明する。
まず、ホストI/F転送テーブル300について説明する。図8は、後述のホストI/F201によるデータ転送時にホストI/F201が参照して用いる制御情報を格納したホストI/F転送テーブル300の一構成例を示すものである。ホストI/F転送テーブル300は、ホスト計算機100から受領したホストI/O要求を基にCPU203によって作成され、ホストI/F201は、該ホストI/F転送テーブル300に記録されている情報を基にデータ転送を実行する。図7では、ホストI/F転送テーブル300がローカルメモリ204に格納されているが、CPU203が参照可能なメモリであるならば、キャッシュメモリ206や、バッファ207の一部に格納してもよい。
ホストI/F転送テーブル300中に格納される情報について順次説明すると、まず転送長301には、ホストI/F201が転送すべきデータの長さが格納される。
転送種別情報302には、ホストI/F転送テーブル300を用いて行われるデータ転送処理が、ホスト計算機100からバッファ207またはキャッシュメモリ206へのライト処理、バッファ207またはキャッシュメモリ206からホスト計算機100へのリード処理のいずれであるかの情報、ホストI/F201が実施可能な機能を用いた特殊なI/O処理の実施判定等が格納される。
データ格納元アドレス303には、ホスト計算機100からのホストI/O要求がリード処理である場合に、I/O処理の対象となるデータが格納されているキャッシュメモリ206またはバッファ207のアドレス情報が格納される。
データ格納先アドレス304には、ホスト計算機100からのホストI/O要求がライト処理である場合に、I/O処理の対象となるデータを格納する、キャッシュメモリ206またはバッファ207のアドレス情報が格納される。
ステータス返送先アドレス305には、ホストI/F201がデータ転送処理終了後にその転送終了をCPU203に通知するために、転送終了を示すステータス情報を返送する返送先となるローカルメモリ204のアドレス情報が格納される。
保証コード付与の要否判定情報306には、ホストI/F201が付与可能な保証コードについて、付与が必要か否かの情報が格納される。この保証コード付与が必要か否かの情報は、CPU203がホストI/O要求の内容から判定して、例えばON/OFFの符号として格納する。保証コードは、ホスト計算機100から記憶装置209にデータをライトするときに、同一データのリード時にその整合性をチェックするために元のデータに付与されるコードであり、例えば512バイト単位でリード/ライトされるデータに8バイトの保証コードを付与する方式等が採用される。
保証コード設定値307には、保証コード付与の要否判定情報306がONに設定されている場合に、ホストI/F201によって付与される保証コードの設定値が格納される。
保証コードチェックの要否判定情報308には、ホストI/F201がチェック可能な保証コードについて、ホスト計算機100からのホストI/O要求がリード処理である場合にチェックが必要か否かの情報が格納される。この保証コードチェックが必要か否かの情報は、CPU203がホストI/O要求の内容から判定して、例えばON/OFFの符号として格納する。保証コード期待値309には、保証コードチェックの要否判定情報308がONに設定されている場合に、ホストI/F201によるチェックに使用される保証コードの期待値が格納される。なお、ホストI/F転送テーブル300に格納される情報は、図8に記載された情報に限定されない。
次に、ディスクI/F転送テーブル400について説明する。図9は、後述のディスクI/F208によるデータ転送時にディスクI/F208が参照して用いる制御情報を格納したディスクI/F転送テーブル400の一構成例を示すものである。ディスクI/F転送テーブル400は、ホスト計算機100から受領したホストI/O要求を基にCPU203によって作成され、ディスクI/F208は、ディスクI/F転送テーブル400に記録されている情報を基にデータ転送を実行する。図7では、ディスクI/F転送テーブル400がローカルメモリ204に格納されているが、CPU203が参照可能なメモリであるならば、キャッシュメモリ206、あるいはバッファ207の一部に格納してもよい。
ディスクI/F転送テーブル400中に格納される情報について順次説明すると、まず転送長401にはディスクI/F208が転送すべきデータの長さが格納される。
転送種別情報402には、ディスクI/F転送テーブル400を用いてディスクI/F208によって実行されるデータ転送処理が、バッファ207またはキャッシュメモリ206から記憶装置209へのライト処理、記憶装置209からバッファ207またはキャッシュメモリ206へのリード処理のいずれであるかの情報、ディスクI/F208が実施可能な機能を用いた特殊なI/O処理の実施判定等が格納される。
データ格納元アドレス403には、ホスト計算機100からのホストI/O要求がライト処理である場合には、I/O処理の対象となるデータが格納されているキャッシュメモリ206またはバッファ207のアドレス情報が格納され、リード処理である場合には、I/O処理の対象となるデータが格納されている記憶装置209のアドレス情報が格納される。
データ格納先アドレス404には、ホスト計算機100からのホストI/O要求がライト処理である場合には、I/O処理の対象となるデータを格納する、記憶装置209のアドレス情報が格納され、リード処理である場合には、I/O処理の対象となるデータを格納する、キャッシュメモリ206またはバッファ207のアドレス情報が格納される。
ステータス返送先アドレス405には、ディスクI/F208がデータ転送処理終了後にその転送終了をCPU203に通知するために、転送終了を示すステータス情報を返送する返送先となるローカルメモリ204のアドレス情報が格納される。
保証コード付与の要否判定情報406には、ディスクI/F208が付与可能な保証コードについて、付与が必要か否かの情報が格納される。保証コード付与の要否については、ホストI/F転送テーブル300に関して説明したのと同様である。保証コード設定値407には、保証コード付与の要否判定情報406がONだった場合に、ディスクI/F208によって付与される保証コードの設定値が格納される。
保証コードチェックの要否判定情報408には、ホストI/F転送テーブル300の場合と同様に、ディスクI/F208がチェック可能な保証コードについて、チェックが必要か否かの情報が格納される。保証コード期待値409には、保証コードチェックの要否判定情報408がONだった場合に、ディスクI/F208によるチェックに使用される保証コードの期待値が格納される。なお、ディスクI/F転送テーブル400に格納される情報は、図9に記載された情報に限定されない。
次に、DMA転送テーブル500について説明する。図10は、後述のDMA205によるデータ転送時にDMA205が参照して用いる制御情報を格納したDMA転送テーブル500の一構成例を示すものである。DMA転送テーブル500はホスト計算機100から受領したホストI/O要求を基にCPU203によって作成され、DMA205は、DMA転送テーブル500に記録されている情報を参照してデータ転送を実行する。図7では、DMA転送テーブル500がローカルメモリ204に格納されているが、CPU203が参照可能なメモリであるならば、キャッシュメモリ206、バッファ207の一部等に格納してもよい。
DMA転送テーブル500中に格納される情報について順次説明すると、まず転送長501には転送すべきデータの長さが格納される。
転送種別情報502には、DMA転送テーブル500を用いてDMA205によって実行されるデータ転送処理が、バッファ207からキャッシュメモリ206へのデータ転送処理、キャッシュメモリ206からバッファ207へのデータ転送処理のいずれであるかの情報、DMA205が実施可能な機能を用いた特殊なI/O処理の実施判定等が格納される。
データ格納元アドレス503には、I/O処理の対象となるデータが格納されたキャッシュメモリ206またはバッファ207のアドレス情報が格納される。
データ格納先アドレス504には、I/O処理の対象となるデータを格納する、キャッシュメモリ206またはバッファ207のアドレス情報が格納される。
ステータス返送先アドレス505には、DMA205がデータ転送処理終了後にその転送終了をCPU203に通知するために、転送終了を示すステータス情報を返送する返送先となるローカルメモリ204のアドレス情報が格納される。
保証コード付与の要否判定情報506には、DMA205がI/O処理に係るデータに付与可能な保証コードについて、付与が必要か否かの情報が格納される。この保証コード付与が必要か否かの情報は、ホストI/F転送テーブル300の場合と同様に、CPU203がホストI/O要求の内容から判定して、例えばON/OFFの符号として格納する。
保証コード設定値507には、保証コード付与の要否判定情報506がONに設定されている場合に、DMA205によって付与される保証コードの設定値が格納される。
保証コードチェックの要否判定情報508には、DMA205がチェック可能な保証コードについて、チェックが必要か否かの情報が格納される。保証コード期待値509には、保証コードチェックの要否判定情報508がONに設定されている場合に、DMA205によってチェックされる保証コードの期待値が格納される。
ビットマップステージングの実行要否判定情報510には、ビットマップステージング処理を実施するか否かの情報が格納される。ビットマスク設定値511には、ビットマップステージング実行要否判定情報503がONだった場合に、ステージングデータをマスクするためのビットマスク情報が格納される。パターン検出処理の要否判定情報512には、パターン検出処理を実行するか否かの情報が格納される。ビットマスクステージング処理、及びパターン検出処理については後述する。なお、DMA転送テーブル500に格納される情報は、図10に格納されたものに限定されない。
図11は、ローカルメモリ204に前記のホストI/F転送テーブル300、ディスクI/F転送テーブル400、及びDMA転送テーブル500が転送情報として格納されている状況の一例を示す図である。前記のように、CPU203はホスト計算機100からのホストI/O要求を受け取る毎にホストI/F転送テーブル300、またはディスクI/F転送テーブル400、またはDMA転送テーブル500を作成するから、ローカルメモリ204には、例えばホストI/F転送テーブル300a、300b、300cのように、複数の転送テーブルを格納することができるように構成されている。図11では、ローカルメモリ204中にホストI/F転送テーブル300a、300b、300cと、ディスクI/F転送テーブル400a、400b、400cと、DMA転送テーブル500a、500b、500cと、直転送フラグ600a、600b、600cとが格納されている。
次に、ホスト計算機100、キャッシュメモリ206又はバッファ207、及び記憶装置209の間で実行される、本実施形態のデータ転送の方式について、図示の処理例を参照しながら説明する。図12は、記憶装置209からキャッシュメモリ206へ直接データが転送されるデータ転送方式(以下「直転送(direct data transfer)」)の模式図の一例を示す図である。図12に示す直転送は、ディスクI/F208によって実行される。図12では、一例として記憶装置209からキャッシュメモリ206へのデータ転送(以下「ステージング」とも称する。)701について示しているが、直転送は、キャッシュメモリ206から記憶装置209へのデータ転送(以下「デステージ」とも称する。)、及びホスト計算機100とキャッシュメモリ206相互間でのデータ転送のいずれかの形態でも実行されることがある。
一方、図13は、記憶装置209からリードしたデータをいったんキャッシュメモリ206内のバッファ207に格納し、その後DMA205によってキャッシュメモリ206にデータを転送するデータ転送方式(以下「二段転送(two-step data transfer)」)の模式図の一例を示す図である。図13に例示される二段転送は、DMA205とディスクI/F208によって実行される。図13では、一例として記憶装置209からバッファ
207へのデータ転送801と、バッファ207からキャッシュメモリ206へのデータ転送802とを組み合わせたデータ転送処理について示している。この他、二段転送は、キャッシュメモリ206からバッファ207へのデータ転送と、バッファ207から記憶装置209へのデータ転送とを組み合わせたデータ転送、ホスト計算機100からバッファ207へのデータ転送と、バッファ207からキャッシュメモリ206へのデータ転送とを組み合わせたデータ転送、キャッシュメモリ206からバッファ207へのデータ転送と、バッファ207からホスト計算機100へのデータ転送とを組み合わせたデータ転送のいずれかの形態で実行されることがある。なお、本実施形態ではキャッシュメモリ206の記憶領域の一部に、二段転送の場合の一時的データ記憶領域であるバッファ207を設けているので、本明細書において、単にキャッシュメモリ206というときは、バッファ207として利用されている記憶領域以外のキャッシュメモリ206の記憶領域を指すものとする。
次に、ホスト計算機100からのホストI/O要求に基づいて実行されるI/O処理に適用するデータ転送方式として、前記の直転送、二段転送のいずれを用いるかを判定するための、データ転送方式選択処理の詳細について説明する。
図14は、データ転送方式選択処理の概略を示すフロー図である。以下では本実施形態について、図14のフロー図を用いて説明する。なお、図14のフロー図は本データ転送方式選択処理の一例を示すものであり、データ転送方式の選択処理フローは図14で示すものに限定されない。例えば、図14では、直転送を実施するか否かの判定に、専用のフラグ(ローカルメモリ204に格納される直転送フラグ600)を用いているが、直転送を実施するか否かの判定は直転送フラグ600を用いたものに限定されず、例えば各サブルーチンS901及びS902の内部でそれぞれ個別の判定を行い、これらの判定結果を基に、直転送を実施するか否かの判定を行う等の方法を用いてもよい。このデータ転送方式選択処理は、CPU203によって実現されるデータ転送方式管理部2041によって、CPU203がホストI/O要求を受領したときに実行される。以下、符号「S」はステップを表す。
まず、データ転送方式管理部2041は、ローカルメモリ204にアクセスして直転送フラグ600をONに設定する(S900)。データ転送方式管理部2041が設定する代わりに、直転送フラグ600の初期値をONに設定しておいてもよい。S901のステップ以降の処理において、二段転送を用いることが決定した時点で直転送フラグ600がONからOFFへ変更される。
本データ転送方式選択処理のサブルーチンであるS901では、ホスト計算機100の指示によって実行されるI/O処理を、直転送にて実施することが可能か否か(DMA205の持つ特殊な機能を必要とするか否か)の判定処理が行われる。判定処理の結果、直転送を実施不可能と判定された場合は、直転送フラグ600がOFFに設定される。なお、同じくサブルーチンであるS902による判定が実施される場合、S901による直転送実施可否判定処理は実施しなくてもよい。
次に、サブルーチンのS902では、ホスト計算機100の指示によって実行されるI/O処理を、直転送にて実施した方が、二段転送にて実施した場合に比べてデータ転送処理が高速で実行することができるか否かの判定処理が行われる。判定処理の結果、二段転送にて実施した方が高速であると判定された場合は、直転送フラグ600がOFFに設定され、それ以外の場合には直転送フラグ600は変更されない。なお、サブルーチンのS901による判定が実施される場合、S902による判定は実施しなくてもよい。また、S901において直転送実施が不可能であると判定された場合には、S902の処理をスキップするように構成することができる。
次いで、サブルーチンのS901及びS902で行われた判定処理の結果を基に、データ転送方式の選択を行う(S903)。S901及びS902で行われた判定処理の結果、直転送フラグ600がONに設定されている場合は(S903、Yes)、直転送が実行される(S904)。直転送フラグ600がOFFに設定されている場合は(S903、No)、二段転送が実行される(S905)。
図15は、図14に示すデータ転送方式選択処理フローの他の構成例である。図15では、図14の直転送実施可否判定処理サブルーチンであるS901は、複数の判定処理S901a〜S901cを組み合わせて構成されている。また、サブルーチンS902の判定処理は単一の判定処理に依存することなく、複数の高速化可否判定処理を行った結果を基に、総合的に最もデータ転送処理が高速となる転送方式を選択する処理としてもよい。
次に、図14のサブルーチンS901で行われる直転送実施可否判定処理の詳細を説明する。図16は、保証コードの付与/チェックの要否に基づいてデータ転送方式の選択を行うための、サブルーチンS901の一例である。以下では、本実施例のS901での処理について図16のフロー図を用いて説明する。この直転送実施可否判定処理は、CPU203によって実現されるデータ転送方式判定部2041によって実行される。
サブルーチンS901の判定処理において、直転送を実施不可能と判定されるI/O処理の例としては、例えば汎用プロトコルチップでは付与/チェックが困難な特殊なデータ保証コードにつき、DMA205を用いて付与/チェックを行うケースが考えられる。
例えば、極めて重要なデータを扱うストレージシステムでは、SATA HDDを採用した場合、所要の信頼性が十分に確保できない場合がある。そこで、データ転送先または転送元のデバイスがSATA HDDの場合は、DMA205を用いてデータ保証コードを付与/チェックするために二段転送を用いる。データ転送先または転送元のデバイスがFC HDDあるいはSAS HDDの場合は、そのような特殊なデータ保証コードを付与/チェックしなくても、汎用プロトコルチップで付与/チェックが可能な保証コードを用いるだけで十分な信頼性が確保できるため、直転送を用いることができる。
また、ストレージシステム200を含む情報処理システム1に求められる信頼性等に基づいて転送方式を使い分けてもよい。例えば、データ自体の信頼性よりもデータ転送のスループット性能が求められる状況下においては、転送先または転送元のデバイスがSATA HDDの場合においても、直転送を実施することでシステムのスループット性能を高めることができる。逆に、スループット性能よりも、データ自体の信頼性が優先される状況下においては、FC HDDやSAS HDDの場合もデータ保証コードを付与/チェックするために二段転送を用いることで、システムの信頼性をより高めることができる。
図16の処理フロー例を参照すると、データ転送方式判定部2042は、まずDMA205によって実行される特殊な保証コード(以下「特殊保証コード」ともいう。)の付与/チェックが必要であるか判定を行う(S1000)。特殊保証コードの付与/チェックの要否は、例えば転送種別情報302、402、または502に設定される転送先/転送元の記憶装置種別情報を基に判定される。
S1000にて、特殊保証コードの付与/チェックが不必要と判定された場合は(S1000、No)、データ転送方式判定部2042は、DMA転送テーブル500中の、保証コード付与の要否判定情報506、または保証コードチェックの要否判定情報508をOFFとする(S1001)。この際、直転送フラグ600は変更されない。
S1000にて、特殊保証コードの付与/チェックが必要と判定された場合は(S1000、Yes)、データ転送方式判定部2042は、直転送フラグ600をOFFとし(S1002)、DMA転送テーブル500中の、保証コード付与の要否判定506、または保証コードチェックの要否判定情報508をONとする(S1003)。
以上の処理が終了した後、データ転送方式判定部2042は、生成した保証コード、またはチェックを行うための保証コードの期待値をDMA転送テーブル500の保証コード設定値507、または保証コード期待値509に設定し、DMA205によるデータ転送を行う際に、DMA転送テーブル500の設定内容に基づいて、特殊保証コードの付与/チェックを行う。
なお、図16のフロー図にて付与/チェックされる保証コードは、一つの保証コードに限定されない。例えば二種類の保証コードが適用される場合、これらの付与/チェックが必要か、データ転送方式判定部2042によりそれぞれの判定を続けて行ってもよい
また、保証コードには、プロトコルチップで付与/チェックすることができる汎用保証コードと、DMA205で付与/チェックする特殊保証コードとを混在させてもよい。例えば、512バイトのデータ毎に8バイトの保証コードを付与する場合、最上位の1バイトにはDMA205で特殊な保証コードを付与し、残りの7バイトにはプロトコルチップで別の保証コードを付与する等の実装を行ってもよい。
図14のサブルーチンS901の判定処理において、データの直転送が実施不可能と判定される他のI/O処理の例としては、DMA205によってデータ中の特定のパターンを検出する処理(以下「パターン検出処理」ともいう。)がある。このパターン検出処理を実行する必要がある場合は、DMA205による二段転送を実施し、その必要がない場合はCPU203による直転送を実施する。パターン検出処理には、例えば、ストレージシステム内に格納されているデータについて、重複したデータを排除するための重複排除処理、記憶装置中のデータが書かれていない部分(スペースあるいはnull)及びゼロ・データで埋められている部分を検出するゼロ・データ検出等がある。
図17は、パターン検出処理実行の要否判定結果からデータ転送方式の選択を行うためにデータ転送方式判定部2042により実行される、図14のサブルーチンS901の一例である。以下では、本実施例のS901での処理について、図17のフロー図を用いて説明する。
まずデータ転送方式判定部2042は、パターン検出処理の実行が必要か判定を行う(S1100)。パターン検出処理の実行要否は、例えばホスト計算機100からの指示を含むホストI/O要求を基に判定される。
S1100にて、パターン検出処理の実行が不必要と判定された場合は(S1100、No)、データ転送方式判定部2042は、DMA転送テーブル500中の、パターン検出処理の要否判定情報512をOFFとする(S1101)。この際、直転送フラグ600は変更されない。
S1100にて、パターン検出処理の実行が必要と判定された場合は(S1100、Yes)、データ転送方式判定部2042は、直転送フラグ600をOFFとし(S1102)、DMA転送テーブル500中の、パターン検出処理の要否判定情報512をONとする(S1103)。以上の処理が終了した後、DMA205は任意のタイミングでパターン検出処理を行う。
次に、サブルーチンS901の判定処理において、直転送が実施不可能と判定される、さらに他のI/O処理の例を説明する。この「他のI/O処理」の例では、キャッシュメモリ206への二重書き(以下「キャッシュ二重書き」ともいう。)を行う場合は二段転送を実施し、キャッシュ二重書きを行う必要がない場合は直転送を実施する。
直転送にてキャッシュ二重書きを実施するためには、データ転送を実行するプロトコルチップが複数のキャッシュメモリ206のアドレスに対して転送を行う必要がある。汎用プロトコルチップには複数の転送先アドレスを設定する機能がない場合が多いため、キャッシュ二重書きを行う際は、DMA205による二段転送を実施する必要がある。
図18はキャッシュ二重書きの一例を示す模式図であり、ホスト計算機100からキャッシュメモリ206へのデータ転送の様子を示したものである。図18の例では、ホスト計算機100からキャッシュメモリ206へデータ1200を転送する際に、キャッシュメモリ206にライトするデータを二重化することによってシステムの信頼性を高めるために、キャッシュ二重書きを実施する。なお、データ二重書きの対象は、ハードウェアとして同一のキャッシュメモリ206の異なるアドレス、あるいはハードウェアとして異なるキャッシュメモリ206上の各アドレスのいずれかである。
図19はキャッシュ二重書きの別の一例を示す模式図であり、記憶デバイス210からキャッシュメモリ206へのデータ転送の様子を示したものである。図19において、キャッシュ二重書きが必要となる場合について、図20及び図21を用いてさらに説明する。
図20及び図21は、記憶デバイス210(210a及び210b)が、RAID1の構成を取るストレージシステムにおける、キャッシュメモリ206中のダーティデータ1300a及び1300bのデステージ処理を示す模式図である。ダーティデータは、キャッシュメモリ206に格納されているデータであって、まだ記憶装置209(記憶デバイス210)にライトされていないデータを示す。
図20は、ダーティデータ1300a及び1300bを、記憶デバイス210a及び210bに対して個別にデステージした場合のデータの流れを示す模式図である。図20の例では、記憶デバイス210a及び210bに対するアクセス回数は、計4回となる。
これに対して、図21では、デステージを実行する前に、CPU203がキャッシュメモリ206の状態をチェックし、デステージするダーティデータの間をステージングによって埋めることが可能かチェックを行う。ダーティデータ1300a、1300b間を埋めることが可能な場合は、図21に示すように、ダーティデータ1300a及び1300bの間のデータ1301を記憶デバイス210からステージングした後、ダーティデータ1300a及び1300b及びステージングしたデータ1301をまとめてデステージする。図21の例では、記憶デバイス210a及び210bに対するアクセス回数は計3回となり、図20の例よりも、記憶デバイス210a及び210bに対するアクセス回数を減少させることができる。
ただし、キャッシュメモリ206aに障害が発生した場合は、図20に例示した機能を用いることができないため、キャッシュメモリ206a及び206bに対して、キャッシュ二重書きを実施することとなる。
図22は、キャッシュ二重書き処理実行の要否判定結果に基づいてデータ転送方式の選択を行うために実行される、図14のサブルーチンS901の一例である。以下では、本実施例のS901での処理について、図22のフロー図を用いて説明する。
データ転送方式判定部2042は、まずキャッシュ二重書き処理の実行が必要か判定を行う(S1400)。キャッシュ二重書き処理の実行要否は、例えばDMA転送テーブル500中の、転送種別情報502に設定されている情報を基に判定される。
S1400にて、キャッシュ二重書き処理の実行が不必要と判定された場合は(S1400、No)、データ転送方式判定部2042は直転送フラグ600を変更することなくそのまま処理を終了する。
S1400にて、キャッシュ二重書き処理の実行が必要と判定された場合は(S1400、Yes)、データ転送方式判定部2042は、直転送フラグ600をOFFとする(S1401)。
以上の処理が終了した後、DMA転送テーブル500中の、データ格納先アドレスに記載された二つのキャッシュメモリ206のアドレスに対してデータがステージングされる。
次に、図14のサブルーチンS902で実行される判定処理の詳細を説明する。
サブルーチンS902において、二段転送処理の方がI/O処理が高速になると判定される例としては、記憶装置209からキャッシュメモリ206にデータをステージングする際に、キャッシュメモリ206上に記憶されているダーティデータを上書きしないように、ステージングするデータのマスキングを行う場合がある。以下この場合の処理を、「ビットマップステージング」ともいうこととする。
図23は、ビットマップステージングを用いずに、直転送でステージングを実行した場合のデータの流れの一例を表す模式図である。図23に示すように、キャッシュメモリ206上のキャッシュセグメント1500にダーティデータ1501a、1501bが存在し、且つキャッシュセグメント1500上の、ダーティデータ1501a、1501bの存在する領域を含む領域に対してデータをステージングする場合を考える。
直転送でデータをステージングしようとする場合、ダーティデータ1501a、1501bが存在する領域を上書きしないように、該領域を避けてステージングしなければならないため、記憶デバイス210に対して複数回のI/O処理を実行する必要がある。図23の例では、ステージングデータ1502、1503、及び1504を、記憶デバイス210から別々にステージングしなければならない。記憶デバイス210のI/O性能は、一般的にメインメモリのI/O性能に対して3〜4桁程度小さいため、このような場合は記憶デバイス210へのデータI/O処理がボトルネックとなり、システム性能の低下を招くおそれがある。
図24は、ビットマップステージングを用いて、二段転送でキャッシュメモリ206へステージングした場合のデータの流れの一例を表す模式図である。図24に示すように、ステージングするキャッシュセグメント1600中のダーティデータ1601a、1601bの存在を示すビットマップからビットマスク1602を作成し、記憶デバイス210からリードしたデータ1601に該ビットマスク1602を適用したデータ1603を、キャッシュメモリ206のキャッシュセグメント1600にステージングする。これにより、記憶デバイス210に対するI/O回数を最小限に抑えることが可能となり、システムのスループットを高めることができる。
図25は、前記のビットマップステージング処理実行の要否判定結果に基づいてデータ転送方式の選択を行うために実行される、図14のサブルーチンS902の一例である。
以下では、本実施例のS902について図25に例示するフロー図を用いて説明する。
データ転送方式判定部2042は、まずホスト計算機100からのホストI/O要求がステージング処理であるか否かの判定を行う(S1700)。ホスト計算機100からのホストI/O要求種別は、例えばホストI/F転送テーブル300中に設定される、転送種別情報302の情報を基に判定される。
ホスト計算機100からのホストI/O要求の内容がステージングでないと判定された場合(S1700、No)、ビットマップステージング処理は実行されないため、S902の処理はそのまま終了する。ホスト計算機100からのホストI/O要求の内容がステージングであると判定された場合(S1700、Yes)、CPU203により具現化されているデータ転送方式判定部2042は、キャッシュメモリ206中のステージングを行うアドレス範囲の状態を確認し、当該アドレス範囲におけるビットマップを作成する(S1701)。このビットマップは、S1701実行前の適当な時機に予め作成しておいてもよい。次にデータ転送方式判定部2042は、S1701にて作成したビットマップを基に、ビットマップステージング処理の実行の要否を判定する(S1702)。
S1702にて、ビットマップステージング処理の実行が不必要と判定された場合は(S1702、No)、データ転送方式判定部2042は、DMA転送テーブル500中の、ビットマップステージング処理の要否判定情報510をOFFとする(S1703)。この際、直転送フラグ600は変更されない。
S1702にて、ビットマップステージング処理の実行が必要と判定された場合は(S1702、Yes)、データ転送方式判定部2042は、直転送フラグ600をOFFとし(S1704)、DMA転送テーブル500中の、ビットマップステージング処理の要否判定情報510をONとする(S1705)。次に、データ転送方式判定部2042は、S1701にて作成されたビットマップを基に、ビットマスクを作成し、DMA転送テーブル500のビットマスク設定値511に設定する(S1706)。
以上の処理が終了した後、DMA205がDMA転送テーブル500のビットマスク設定値511を用いて、ステージングするアドレス範囲のデータをマスキングしつつステージングを実施する。
また、キャッシュメモリ206及びバッファ207の負荷状態、記憶デバイス210のI/O性能等を基に、ビットマップステージング処理の実行要否を判定してもよい。例えば、キャッシュメモリ206の負荷が極端に高い状況下では、二段転送によるビットマップステージング処理を実施した場合の方が直転送によるステージングを実施した場合よりもスループット性能が低くなる場合がありうる。このような場合は、ステージングを行うキャッシュセグメント上にダーティデータが存在するか否かに関わらず、直転送を実施するように構成することができる。実際の運用方法としては、予めキャッシュメモリ206に対する負荷の閾値を定めておき、キャッシュメモリ206に対する負荷が閾値以下の場合は、上記通常のビットマップステージング処理要否判定を行い、キャッシュメモリ206の負荷が前記閾値を超えている場合は、ビットマップステージング処理の要否判定情報510を常にOFFにする、等の構成が考えられる。
また、メモリ負荷があまり高くない状況下においても、ステージングする記憶デバイス210が、SSD等の高速なI/O処理が期待できるものである場合は、該記憶デバイス210に対する複数回のI/O処理を直転送で実行するために必要な処理時間の方が、二段転送によるビットマップステージング処理に必要な処理時間よりも短い場合がある。このような場合もビットマップステージング処理を実行することなく直転送を実施する。
本実施例においては、バッファ207に割り当てられているメモリ領域及び帯域は、実行中の処理や、ストレージシステム200の状態等に応じて増減させてもよい。例えば、データ転送方式の大半を直転送が占めている場合等、バッファ207に割り当てられている容量及び帯域に余裕がある場合は、バッファ207に割り当てられている容量及び帯域を減らし、減らした分をキャッシュメモリ206に割り当てることでよりI/O性能を高めることができる。図26は、バッファ207の容量及び帯域の一部をキャッシュメモリ206に割り当てる様子を示す模式図である。
逆に、キャッシュメモリ206に割り当てられている容量及び帯域に余裕がある場合は、キャッシュメモリ206からバッファ207に割り当てられる容量及び帯域を増やすことで、同様にI/O性能を高めることができる。図27はキャッシュメモリ206の領域及び帯域の一部をバッファ207に割り当てる様子を示す模式図である。
これらのデータ転送方式の選択処理は、ストレージシステム200を設計する際に予め設定された判定方式に従って自動的に実施されるように構成してもよいし、管理装置110が、I/O性能、信頼性等の条件を基にシステム管理者が設定した判定方式を、管理I/F211を介してストレージシステム200(特にCPU203により具現化されるデータ転送方式管理部2401)に通知して適用させるようにしてもよい。
次に、管理装置110からの指示を受けてデータ転送方式選択の基準を変更する方法の一例を示す。
図28はデータ転送方式の選択を行うための基準となる情報が格納されたテーブル(以下「転送方式選択基準テーブル」ともいう。)の一例を示す図である。まず、予め、CPU203が、転送方式選択基準テーブル1800を作成し、記憶デバイス210等の不揮発な記憶領域に格納しておく。ストレージシステム200の電源投入時に、CPU203(例えばデータ転送方式管理部2401)が転送方式選択基準テーブル1800を読み込み、ローカルメモリ204等の、CPU203が参照可能な記憶領域に格納する。管理装置110からの指示を受けたCPU203は、転送方式選択基準テーブル1800に格納された、特殊保証コード適用デバイス情報1801等を、管理装置110からの指示通りに書き換える。データ転送時は、転送方式選択基準テーブル1800をデータ転送方式管理部2401が参照し、ホストI/F転送テーブル300、ディスクI/F転送テーブル400、またはDMA転送テーブル500を作成する。電源断時は、CPU203が具現化するデータ転送方式管理部2401が、転送方式選択基準テーブル1800を記憶デバイス210等の不揮発な記憶領域に格納する。
転送方式選択基準テーブル1800には、例えば、図16のS1000にて、特殊な保証コードの付与/チェックが要と判定されるデバイス種別の情報である、特殊保証コード適用デバイス情報1801や、図17のパターン検出処理を実施するか否か、あるいはどのパターン検出処理を実施するかを示す、パターン検出処理の要否判定情報1802、図25のS1702にてビットマップステージング不要と判定されるキャッシュメモリ206の負荷の閾値である、ビットマップステージング実施閾値情報1803等を格納することができる。
《第2の実施形態》
次に、本発明の第2の実施形態について、図29から図31を参照して説明する。
第1の実施形態では、単一のストレージシステム200における本発明の実施形態を説明したが、第2の実施形態は、複数のストレージシステム200間で実行されるI/O処
理に関する。
なお、第2の実施形態は、第1の実施形態の変形例であるから、以下には第2の実施形態の構成につき、第1の実施形態の差異に注目して説明する。
図29は、本実施例における情報システム1の構成を示している。図29に示す構成は、本発明の理解及び実施に必要な程度で本発明の概要を示しており、本発明の範囲は図29に示す構成に限定されない。
ホスト計算機100と、ストレージシステム200a及び200bとは、SAN(Storage Area Network)等の通信ネットワーク121を介して相互に接続される。管理装置110と、ストレージシステム200a及び200bとは、LAN(Local Area Network)等の通信ネットワーク122を介して相互に接続される。図29において、ホストI/F
201aは、第1の実施形態で既に説明した機能に加えて、通信ネットワーク121を介して相互に接続されたストレージシステム201bとのデータ転送を実行する。ストレージシステム200bに設けられているホストI/F201bも同様に、第1の実施形態で
既に説明した機能に加えて、通信ネットワーク121を介して、相互に接続されたストレージシステム201aとのデータ転送を実行する。これ以外の図28の構成要素が有する機能は、図1を参照して説明した第1の実施形態とほぼ同等であるため、説明は省略する。
なお、通信ネットワーク121及び122に接続されるストレージシステム200は、3台以上であってもよい。また、本実施例にて、情報システム1が図29の構成をとった場合においても、ストレージシステム200aまたは200b内のI/O処理に関しては、第1の実施形態で示した全ての方式を適用可能である。
以下、本実施例について、第1の実施形態の図14のフロー図を用いて説明する。ストレージシステム200a、200b間でデータバックアップ等の目的でデータをコピーする(以下このデータコピーを「リモートコピー」という。)際には、ストレージシステム200a、200b間でのデータ転送時のエラーを検出または訂正するため、転送するデータに対して保証コードを付与する必要がある。実際のストレージシステムの運用形態としては、例えば、あるストレージ製品の新機種を導入する際に、同シリーズの旧機種をバックアップストレージ等に転用すること等が考えられる。この際、新機種で用いる汎用プロトコルチップがサポートする保証コードを、旧機種で用いられた汎用プロトコルチップがサポートしているとは限らないため、汎用プロトコルチップに依存しない独自の保証コードを用いる必要がある。
本実施例では、別個のストレージシステム200a、200b間でリモートコピーを実施する際には、使用しているホストI/F201の構成が同一であるストレージシステム200a、200b間でのみ行われるリモートコピーの場合には、双方のホストI/F201が付与/チェック可能な保証コードを用いることで、両ストレージシステム200a、200b間で直転送を実施することが可能となる。したがって、前記のように、リモートコピーに伴うデータ転送を行うストレージシステム200a、200bのペアで同一のホストI/F201を使用している等、同じ保証コードを用いることができる場合は、ストレージシステム200a、200b間で直転送を実行してメモリ負荷を軽減し、それ以外の場合はストレージシステム200間で二段転送を用いることができる。ストレージシステム200a、200b間で同じ保証コードを用いることができない場合、DMA205aまたは205bを使用して新旧両ストレージシステム200a、200bで共通の保証コードを利用するために、DMA205aまたは205b経由の二段転送を実行する。この場合、図14のサブルーチンS901の判定処理において、直転送が実施不可能であ
ると判定されるように構成する。
図30は、リモートコピー実施時に使用する転送情報が格納されたリモートコピー用制御情報テーブル1900の一例を示す図である。リモートコピーを実行する際は、CPU203はリモートコピー用制御情報テーブル1900を参照し、データ転送を実行する。
リモートコピー用制御情報テーブル1900は、ローカルメモリ204等のCPU203が参照可能な記憶領域に格納される。転送先ストレージシステム情報1901には、転送先のストレージシステム200a、200bの情報が格納される。ペア論理ユニット管理情報1902には、転送元のストレージシステムと、転送先のストレージシステムにおいて、ペアとなる論理ユニットの情報が格納される。
図31は、リモートコピーのコピー先アドレス情報からデータ転送方式の選択を行うために実行される、図14のサブルーチンS901の一例である。以下では、本実施例のS901での処理について図31のフロー図を用いて説明する。
まず、CPU203によって具現化されるデータ転送方式判定部2042は、ホスト計算機100の指示したホストI/O要求に含まれているコピー先のアドレス情報から、ストレージシステム200a、200b間のリモートコピーの実施が必要か否かの判定を行う(S2000)。
S2000にて、ストレージシステム200a、200b間のリモートコピーの実施が不必要と判定された場合は(S2000、No)、そのまま処理は終了し、直転送フラグ600は変更されない。
一方、S2000にて、ストレージシステム200a、200b間のリモートコピーの実施が必要と判定された場合は(S2000、Yes)、データ転送方式判定部2042は、直転送フラグ600をOFFとし(S2001)、リモートコピー先ストレージシステムにおける保証コードを設定する(S2002)。この保証コードは、例えばDMA転送テーブル500中に格納しておく。実際にリモートコピーを行う際は、DMA205aまたは205bが、該保証コードを参照し、保証コードの付与を行う。
以上詳細に説明したように、本発明の実施形態によれば、ストレージシステム200内でのデータ転送に伴って実行する必要があるデータ処理、例えば特殊保証コードの付与/チェック等の要否、あるいはビットマップステージング等のデータI/O処理高速化のための処理実施可否の判定結果に応じて直転送と二段転送とを使い分けることにより、記憶デバイス210の性能、キャッシュメモリ206の容量等のハードウェア資源に制約がある場合でも、データI/O処理性能の向上を図ることができる。また、2台以上のストレージシステム200間でリモートコピー処理を実行する場合でも、単一のストレージシステム200の場合と同様に、直転送と二段転送とを使い分けることにより、データI/O処理性能の向上を図ることができる。
なお、本発明は、上記した第1の実施形態または第2の実施形態によって限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、一の実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、一の実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の実施形態構成の追加・削除・置換をすることが可能である。また、図示した構成は、説明上必要と考えられる範囲で示しており、具体的製品として成立させるために必要な全ての構成を示しているわけで
はない。