(57)【特許請求の範囲】
【請求項１】
複数のデータを記憶する記憶部と、
コピー先のストレージ装置の記憶部における前記データの記憶予定位置と、前記データを記憶する論理領域の識別子とを対応付けた位置情報を生成する位置情報生成部と、
前記複数のデータを一時的に記憶するキャッシュ領域から読み出して転送用バッファに格納する際に、該複数のデータのコピー先のストレージ装置の記憶部における、該複数のデータのそれぞれの記憶予定位置に基づいて、前記位置情報の順序を並び替えるとともに、並び替えた前記位置情報における記憶予定位置の順序で該複数のデータの順序を並び替える格納部と、
前記位置情報生成部により生成された位置情報を圧縮する圧縮部と、
前記格納部により順序が並び替えられた複数のデータを前記転送用バッファから読み出して前記コピー先のストレージ装置に送信するとともに、前記圧縮部により圧縮された位置情報を前記コピー先のストレージ装置に送信する送信部と
を備えることを特徴とするストレージ装置。
【請求項２】
情報の記憶に用いられる第１の領域と前記情報の記憶に用いられない第２の領域と前記第１の領域及び前記第２の領域の位置を示す領域情報が書込まれた第３の領域のうち、前記領域情報に基づいて前記第２の領域を除外し、前記第１の領域及び前記第３の領域における情報を基に、コピー用のデータを前記複数のデータごとに生成するコピー用データ生成部を更に備え、
前記格納部は、前記コピー先のストレージ装置の記憶部における、前記複数のデータのそれぞれの記憶予定位置に基づいて、複数の前記コピー用のデータの順序を並び替える
ことを特徴とする請求項１に記載のストレージ装置。
【請求項３】
ストレージ装置が、
コピー先のストレージ装置の記憶部におけるデータの記憶予定位置と、前記データを記憶する論理領域の識別子とを対応付けた位置情報を生成し、
記憶部に記憶される複数のデータを一時的に記憶するキャッシュ領域から読み出して転送用バッファに格納する際に、前記複数のデータそれぞれの、コピー先のストレージ装置の記憶部における記憶予定位置に基づいて、前記位置情報の順序を並び替えるとともに、並び替えた前記位置情報における記憶予定位置の順序で該複数のデータの順序を並び替え、
生成した位置情報を圧縮し、
順序が並び替えられた前記複数のデータを前記転送用バッファから読み出して前記コピー先のストレージ装置に送信するとともに、圧縮した位置情報を前記コピー先のストレージ装置に送信する
ことを特徴とするストレージ装置の制御方法。
【請求項４】
情報処理装置と、前記情報処理装置からデータの書込みを受け付けて自装置と接続される他装置に前記データを送信するコピー元のストレージ装置と、前記コピー元のストレージ装置から前記データを受信するコピー先のストレージ装置とを有するストレージシステムにおいて、
前記コピー元のストレージ装置は、
複数のデータを記憶する記憶部と、
コピー先のストレージ装置の記憶部における前記データの記憶予定位置と、前記データを記憶する論理領域の識別子とを対応付けた位置情報を生成する位置情報生成部と、
前記複数のデータを一時的に記憶するキャッシュ領域から読み出して転送用バッファに格納する際に、該複数のデータのコピー先のストレージ装置の記憶部における、該複数のデータのそれぞれの記憶予定位置に基づいて、前記位置情報の順序を並び替えるとともに、並び替えた前記位置情報における記憶予定位置の順序で該複数のデータの順序を並び替える格納部と、
前記位置情報生成部により生成された位置情報を圧縮する圧縮部と、
前記格納部により順序が並び替えられた複数のデータを前記転送用バッファから読み出して前記コピー先のストレージ装置に送信するとともに、前記圧縮部により圧縮された位置情報を前記コピー先のストレージ装置に送信する送信部とを備え、
前記コピー先のストレージ装置は、
前記コピー元のストレージ装置から前記順序が並び替えられた複数のデータを受信する受信部と、
受信した前記順序が並び替えられた複数のデータを記憶部に書込む書込部とを備える
ことを特徴とするストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、ストレージ装置の制御方法及びストレージシステムに関する。
【背景技術】
【０００２】
ストレージ装置は、予期せぬ災害発生時に備え、自装置が有するデータを遠隔地にあるストレージ装置に転送し、データをバックアップする機能を有する。また、ストレージ装置により転送されるデータが、コピー元のストレージ装置に書込まれた順序と同じ順序でコピー先のストレージ装置に書込まれない場合、コピー元のストレージ装置とコピー先のストレージ装置とでデータの整合性が失われる。
【０００３】
このため、コピー元のストレージ装置は、転送するデータの順序性を保証するようにコピー先のストレージ装置にデータを転送する。例えば、コピー元のストレージ装置は、サーバから受付けた更新データを一定容量単位に世代分けした専用メモリに格納し、この世代単位でコピー先ストレージ装置に転送する。そして、コピー先のストレージ装置は、コピー元のストレージ装置から世代単位でデータを受信し、自装置が有する記憶装置に展開する。このように、コピー元のストレージ装置は、世代単位でデータを転送することで、データの順序性を保証する。
【０００４】
このように、順序性を保証したデータのコピーは、Ｕｎｉｘ（登録商標）／ＩＡ（Intel（登録商標）  Architecture）サーバで構築されるオープンシステムばかりでなく、メインフレームで構築されるシステム（以下、メインフレームシステムと記す）においても利用される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−３１２１２５号公報
【特許文献２】特開２００４−２８０７７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した従来の技術では、コピー先のストレージ装置における転送データの展開処理に時間がかかるという課題がある。具体的には、コピー先のストレージ装置は、ディスクにアクセスするごとに、ディスクの位置を特定し、特定した位置までディスクヘッドを移動させる。コピー先のストレージ装置は、専用のメモリにデータが格納された順序でディスクに書き込みを行うので、ディスクに対してランダムにアクセスを行うことになる。このため、ディスクヘッドは、データを書き込む毎にランダムに移動する。この結果、コピー先のストレージ装置では、ディスクに対してアクセスを行う場合、ディスクヘッドの移動に時間がかかり、データの展開処理に時間がかかることになる。
【０００７】
１つの側面では、コピー先のストレージ装置における転送データの展開処理にかかる時間を短縮することができるストレージ装置、ストレージ装置の制御方法及びストレージシステムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
第１の案では、ストレージ装置は、複数のデータを記憶する。また、ストレージ装置は、コピー先のストレージ装置の記憶部における前記データの記憶予定位置と、前記データを記憶する論理領域の識別子とを対応付けた位置情報を生成する。また、ストレージ装置は、前記複数のデータを一時的に記憶するキャッシュ領域から読み出して転送用バッファに格納する際に、該複数のデータのコピー先のストレージ装置の記憶部における、該複数のデータのそれぞれの記憶予定位置に基づいて、前記位置情報の順序を並び替えるとともに、並び替えた前記位置情報における記憶予定位置の順序で複数のデータの順序を並び替える。また、ストレージ装置は、生成した位置情報を圧縮する。そして、ストレージ装置は、順序が並び替えられた複数のデータを前記転送用バッファから読み出してコピー先のストレージ装置に送信するとともに、前記位置情報をコピー先のストレージ装置に送信する。
【発明の効果】
【０００９】
コピー先のストレージ装置における転送データの展開処理にかかる時間を短縮することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例１に係るストレージシステムの構成を示すブロック図である。
【図２Ａ】図２Ａは、ホストコンピュータからの書込みデータを転送用バッファに格納した一例を示す図である。
【図２Ｂ】図２Ｂは、図２Ａに示す順序でデータがディスクに書込まれた場合のディスクヘッドの軌跡を示す図である。
【図２Ｃ】図２Ｃは、ストレージ装置により並び替えられたデータの順序の一例を示す図である。
【図２Ｄ】図２Ｄは、図２Ｃに示す順序でデータがディスクに書込まれた場合のディスクヘッドの軌跡を示す図である。
【図３】図３は、実施例１に係るＣＭの構成を示す機能ブロック図である。
【図４】図４は、論理ボリューム用キャッシュが記憶する１トラックあたりのデータの構造を模式的に示す図である。
【図５Ａ】図５Ａは、転送用バッファが記憶するデータの構造を模式的に示す図である。
【図５Ｂ】図５Ｂは、転送用バッファが記憶する１世代あたりのデータの構造を模式的に示す図である。
【図６】図６は、バッファ管理テーブルに記憶される情報の一例を示す図である。
【図７】図７は、並び替え部によるバッファ管理テーブルで管理されるトラックを並び替える処理の一例を示す図である。
【図８】図８は、データ格納部によるデータを格納する処理の一例を示す図である。
【図９】図９は、展開部によるデータを展開する処理の一例を示す図である。
【図１０】図１０は、実施例１に係るコピー元のストレージ装置による格納処理の処理手順を示すフローチャートである。
【図１１】図１１は、実施例１に係るコピー先のストレージ装置による展開処理の処理手順を示すフローチャートである。
【図１２】図１２は、実施例２に係るＣＭの構成を示すブロック図である。
【図１３】図１３は、実施例２に係るトラック単位の制御データの一例を示す図である。
【図１４】図１４は、圧縮部により生成されるバッファ管理テーブルの一例を示す図である。
【図１５】図１５は、データ格納部によるデータを格納する処理の一例を示す図である。
【図１６】図１６は、展開部によるデータを展開する処理の一例を示す図である。
【図１７】図１７は、実施例２に係るコピー元のストレージ装置による格納処理の処理手順を示すフローチャートである。
【図１８】図１８は、実施例２に係るコピー先のストレージ装置による展開処理の処理手順を示すフローチャートである。
【図１９】図１９は、オープンシステムにおける並び替え処理の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下に、本願の開示するストレージ装置、ストレージ装置の制御方法及びストレージシステムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１２】
実施例１では、図１から図１１を用いて、ストレージシステムの構成、ストレージ装置の構成、ＣＭの構成、処理手順、効果などについて説明する。
【００１３】
［実施例１に係るストレージシステムの構成］
実施例１に係るストレージシステム１の一例として、メインフレームが接続されたシステムを例にして説明する。図１は、実施例１に係るストレージシステムの構成を示すブロック図である。図１に示すように、ストレージシステム１は、ホストコンピュータ３と、ホストコンピュータ４と、ストレージ装置１０と、ストレージ装置２０とを有する。また、以下の説明では、ストレージ装置１０をコピー元として、ストレージ装置２０をコピー先として説明する。なお、ストレージシステム１が有するホストコンピュータの数及びストレージ装置の数はこれに限定されるものではなく、変更可能である。
【００１４】
ホストコンピュータ３は、ストレージ装置１０とＬＡＮ（Local  Area  Network）などのネットワークによって接続される。また、ホストコンピュータ４は、ストレージ装置２０とＬＡＮなどのネットワークによって接続される。そして、ストレージ装置２０は、ストレージ装置１０に対して遠隔地にあり、例えばＳＡＮ（Storage  Area  Network）によって互いに通信可能に接続される。
【００１５】
ホストコンピュータ３は、例えば、メインフレームであり、ストレージ装置１０に対してデータの読み書きを実行する。また、ホストコンピュータ３は、ストレージ装置１０に書込んだデータをストレージ装置２０にコピーするように依頼する。ここで、ホストコンピュータ３は、コピー元ボリューム、コピー元ＬＢＡ（Logical  Block  Address)、コピー先ボリューム及びコピー先ＬＢＡを指定する。ここで、１つのＬＢＡは、５１２ｂｙｔｅである。なお、ホストコンピュータ３は、ストレージ装置１０にデータを書き込むと同時に、書込んだデータをストレージ装置２０にコピーするようにストレージ装置１０に依頼してもよい。
【００１６】
ホストコンピュータ４は、ストレージ装置２０に対してデータの読み書きを実行する。なお、ホストコンピュータ３及び４が各ストレージ装置に対して読み書きするデータは、トラックと呼ばれる定型のフォーマットにて扱われる。また、この定型のフォーマットについては、後述する。
【００１７】
ストレージ装置１０は、ＣＡ（Channel  Adapter）１１ａ、１１ｂ、１２ａ、１２ｂ、ディスク１３ａ、１３ｂ、１４ａ、１４ｂ、ＣＭ（Control  Module）１５、１６を有する。ＣＡ１１ａ、１１ｂ、１２ａ、１２ｂは、ホストコンピュータ３とのインターフェースである。ディスク１３ａ、１３ｂ、１４ａ、１４ｂは、ＲＡＩＤ（Redundant  Arrays  of  Inexpensive  Disks）を構築し、ホストコンピュータ３から受信した書込みデータを記憶する。
【００１８】
ＣＭ１５は、ホストコンピュータ３とディスク１３ａ、１３ｂとの間のデータの入出力を制御し、ＣＭ１６は、ホストコンピュータ３とディスク１４ａ、１４ｂとの間のデータの入出力を制御する。なお、ＣＭ１５及び１６は、ホストコンピュータ３からの要求に応じてディスク１３ａまたは１３ｂで読み書きされるデータを一時的に記憶する図示しない論理ボリューム用キャッシュを有する。また、ＣＭ１５及び１６は、ホストコンピュータ３からストレージ装置２０へのデータの転送を依頼された場合に用いる図示しない転送用バッファを有する。また、ＣＭ１５及び１６の詳細な構成については後述する。
【００１９】
ストレージ装置２０は、ＣＡ２１ａ、２１ｂ、２２ａ、２２ｂ、ディスク２３ａ、２３ｂ、２４ａ、２４ｂ、ＣＭ２５、２６を有する。ＣＡ２１ａ、２１ｂ、２２ａ、２２ｂは、ホストコンピュータ４とのインターフェースである。ディスクディスク２３ａ、２３ｂ、２４ａ、２４ｂは、ＲＡＩＤを構築し、ホストコンピュータ４から受信した書込みデータやストレージ装置１０から転送されたデータを記憶する。
【００２０】
ＣＭ２５は、ホストコンピュータ４とディスク２３ａ、２３ｂとの間のデータの入出力やストレージ装置１０から転送されたデータの入出力を制御する。ＣＭ２６は、ホストコンピュータ４とディスク２４ａ、２４ｂとの間のデータの入出力やストレージ装置１０から転送されたデータの入出力を制御する。なお、ＣＭ２５及び２６は、ホストコンピュータ４からの要求に応じてディスク１３ａまたは１３ｂで読み書きされるデータを一時的に記憶する図示しない論理ボリューム用キャッシュを有する。また、ＣＭ２５及び２６は、ストレージ装置１０からデータを受信した場合に用いる図示しない転送用バッファを有する。また、ＣＭ２５及び２６の詳細な構成については後述する。
【００２１】
このように構成されるストレージシステム１において、ストレージ装置１０は、自装置が有するいずれかのディスクに書込んだデータのバックアップ要求をホストコンピュータ３から受付けた場合、以下の処理を実行する。すなわち、ストレージ装置１０は、自装置とネットワークを介して接続されるストレージ装置２０にディスクに書込んだデータを転送する。
【００２２】
また、ストレージ装置１０は、ディスクに書込んだデータを更新する更新データをホストコンピュータ３から受信した場合には、以下の処理を実行することで、データの順序性を保証してデータをバックアップする。なお、ここでいう順序性とは、ストレージ装置１０に書込まれた順序と同じ順序でコピー先のストレージ装置２０にデータを書込むことを示す。
【００２３】
例えば、ストレージ装置１０は、ホストコンピュータ３から更新データを受信した場合、データを論理ボリューム用キャッシュに格納する。そして、ストレージ装置１０は、論理ボリューム用キャッシュから、一定容量に世代分けした転送用バッファに更新データを格納し、世代単位でストレージ装置２０に転送する。
【００２４】
ストレージ装置２０は、ストレージ装置１０から受信したデータを転送用バッファに格納する。そして、ストレージ装置２０は、受信したデータを世代単位で転送用バッファから論理ボリューム用キャッシュに展開し、自装置が有するディスク２３ａ、２３ｂ、２４ａ及び２４ｂのいずれかに受信したデータを格納する。
【００２５】
また、ストレージシステム１において、コピー元のストレージ装置１０は、以下の処理を実行することでストレージ装置２０における各ディスクへの展開処理を高速化させる。まず、ストレージ装置１０は、ホストコンピュータ３から受信したデータを論理ボリューム用キャッシュから転送用バッファに格納する。
【００２６】
図２Ａは、ホストコンピュータから受信した書込みデータを転送用バッファに格納した一例を示す図である。図２Ａに示すように、ストレージ装置１０は、トラックＦ３０１、トラックＤ３０２、トラックＨ３０３、トラックＢ３０４、トラックＧ３０５、トラックＡ３０６、トラックＥ３０７、トラックＣ３０８の順でデータを転送用バッファに格納する。
【００２７】
ストレージ装置１０が、図２Ａに示す順で転送用バッファに格納されたデータをストレージ装置２０に送信した場合について説明する。図２Ｂは、図２Ａに示す順序でデータがディスクに書込まれた場合のディスクヘッドの軌跡を示す図である。図２Ｂに示すように、図２Ａに示す順序でデータがディスクに書込まれた場合、ディスクヘッドは、ランダムな軌跡を辿ることになる。この結果、ストレージ装置２０では、ディスクへのデータの展開処理に時間がかかる。
【００２８】
そこで、ストレージ装置１０は、転送用バッファ内のデータをトラック単位で並び替えを行う。図２Ｃは、ストレージ装置により並び替えられたデータの順序の一例を示す図である。図２Ｃに示すように、ストレージ装置１０は、トラックＡ３０６、トラックＢ３０４、トラックＣ３０８、トラックＤ３０２、トラックＥ３０７、トラックＦ３０１、トラックＧ３０５、トラックＨ３０３の順にデータを並び替える。そして、ストレージ装置１０は、図２Ｃに示すように並び替えたデータをストレージ装置２０に送信する。
【００２９】
ストレージ装置２０は、受信したデータを転送用バッファに格納する。ここで、ストレージ装置２０が受信するデータの順序は、トラックＡ３０６、トラックＢ３０４、トラックＣ３０８、トラックＤ３０２、トラックＥ３０７、トラックＦ３０１、トラックＧ３０５、トラックＨ３０３の順である。そして、ストレージ装置２０は、受信したデータを転送用バッファから論理ボリューム用キャッシュに展開してから、ディスクに格納する。図２Ｄは、図２Ｃに示す順序でデータがディスクに書込まれた場合のディスクヘッドの軌跡を示す図である。この際、ストレージ装置２０が、図２Ｄに示すような順序で指定されたディスクにデータを書込むことにより、ディスクヘッドは、ディスクに対してシーケンシャルにアクセスできる。なお、コピー先ボリュームへのデータ反映の順序性をこの世代単位で保証しており、同一世代内のトラックの並び替えを行っても順序性の保証に影響はない。
【００３０】
このように、ストレージ装置１０は、データの並び順を各ディスクの物理的な記憶位置が連続する順に並び替えて転送する。そして、ストレージ装置２０は、展開処理において、ディスクに対してシーケンシャルにアクセスする。この結果、ストレージ装置２０は、ディスクへのデータの展開処理を短縮することができる。
【００３１】
［実施例１に係るＣＭの構成］
次に、図３を用いて、実施例１に係るＣＭ１５、１６、２５、２６の構成を説明する。ＣＭ１５、１６、２５、２６の構成は同一であるので、ここでは、ＣＭ１５、１６、２５、２６を代表して、ＣＭ１５の構成を説明する。図３は、実施例１に係るＣＭの構成を示す機能ブロック図である。なお、図３には、ＣＭ１５が有する、コピーするデータを転送する機能に関連する構成のみを図示している。また、ここでは、ＣＭ１５がコピー元のストレージ装置及びコピー先のストレージ装置の機能を併せ持つ場合を例に示す。
【００３２】
図３に示すように、ＣＭ１５は、ＤＡ（Device  Adapter）１０１ａ及び１０１ｂと記憶部１１０と制御部１２０を有する。ＤＡ１０１ａは、ディスク１３ａとのインターフェースであり、ＤＡ１０１ｂは、ディスク１３ｂとのインターフェースである。
【００３３】
記憶部１１０は、ＤＩＭＭ（Dual  Inline  Memory  Module）やＤＲＡＭ(Dynamic  Random  Access  Memory)やフラッシュメモリなどであり、論理ボリューム用キャッシュ１１１と、転送用バッファ１１２と、バッファ管理テーブル１１３とを有する。
【００３４】
論理ボリューム用キャッシュ１１１は、ホストコンピュータ３からの要求に応じてディスク１３ａまたは１３ｂで読み書きされるデータを一時的に記憶するキャッシュメモリとして機能する。
【００３５】
図４を用いて、論理ボリューム用キャッシュ１１１が記憶するデータの構造について説明する。図４は、論理ボリューム用キャッシュが記憶する１トラックあたりのデータの構造を模式的に示す図である。
【００３６】
図４に示すように、各トラックには、レコードと呼ばれる単位でデータが記憶される。図４では、トラック４１０、トラック４２０、トラック４３０の３トラック分のデータ構造を示している。トラック４１０は、レコード４１１、レコード４１２を有し、トラック４２０は、レコード４２１を有し、トラック４３０は、レコード４３１、レコード４３２、レコード４３３を有する。
【００３７】
また、各トラックには制御データ４１３、４２２、４３４がそれぞれ付加される。この制御データには、トラック内のレコード数やレコードのデータ長といったトラックの内部情報が含まれる。
【００３８】
ここで、トラック単位に付加される制御データについて説明する。トラック単位の制御データには「シリンダ番号」、「ヘッド番号」、「補助フラグ」、「総レコード数」、「先頭レコード番号」、「データ長」を示す情報が含まれる。
【００３９】
「シリンダ番号」は、トラックのシリンダ番号を示す。また、「ヘッド番号」は、トラックのヘッド番号を示す。「補助フラグ」は、トラックの状態を示し、例えば、トラックにおいて、レコード長が固定長であるか可変長であるかを示す。「総レコード数」は、トラックの総レコード数を示す。「先頭レコード番号」は、トラックの先頭レコード番号を示す。「データ長」は、レコードあたりのブロック数を示す。
【００４０】
なお、トラック単位の制御データは、トラック内の最後のＬＢＡに記憶される。このように、ストレージ装置１０は、制御データを参照することで、トラックへのリード及びライトを高速に処理する。
【００４１】
図３に戻り、転送用バッファ１１２は、８ＭＢを一つの世代として、転送データを世代単位で記憶する。なお、転送用バッファ１１２が有する世代の数は、任意に設定可能である。なお、転送用バッファ１１２には、ひとつの世代に同一のトラックが重複して格納されないよう制御される。
【００４２】
図５Ａは、転送用バッファが記憶するデータの構造を模式的に示す図である。なお、ここでは、転送用バッファ１１２のサイズの設定値が１２８ＭＢであり、二重化により１２８ＭＢのうち半分の６４ＭＢが使用可能である場合を例に説明する。
【００４３】
図５Ａに示すように、転送用バッファ１１２において使用可能な６４ＭＢは、８ＭＢずつ８分割される。そして、この分割された８ＭＢそれぞれが「世代」を形成する。図５Ａに示す例では、転送用バッファ１１２は、世代０から世代７に８分割される。
【００４４】
図５Ｂは、転送用バッファが記憶する１世代あたりのデータの構造を模式的に示す図である。図５Ｂに示すように、この各世代は、８ＫＢごとに分割され、４８ＫＢごとにトラックを形成する。各世代には、４８ＫＢからなるトラックが１６６個含まれる。
【００４５】
バッファ管理テーブル１１３は、転送するデータがディスク上のどの位置に記憶されており、またコピー先のストレージ装置が有するディスク上のどの位置に記憶されるかを示す情報を記憶する。バッファ管理テーブル１１３は、１６ＬＢＡごと、すなわち８ＫＢごとに、バッファ管理テーブル生成部１２２により作成される。
【００４６】
図６を用いてバッファ管理テーブル１１３に記憶される情報の一例を説明する。図６は、バッファ管理テーブルに記憶される情報の一例を示す図である。なお、ここでは、１トラックあたりの情報を示す。すなわち、バッファ管理テーブル１１３は、８ＫＢごとに生成されることから、１トラックあたりに６つの情報を有する。
【００４７】
図６に示すように、バッファ管理テーブル１１３は、「コピー元ボリューム」、「コピー元ＬＢＡ」、「コピー先ボリューム」、「コピー先ＬＢＡ」、「ＬＢＡカウント」を対応付けて記憶する。
【００４８】
「コピー元ボリューム」は、データのコピー元である論理ボリュームを識別する情報を示す。また、「コピー元ＬＢＡ」は、コピー元のデータが記憶される位置を示す。
【００４９】
「コピー先ボリューム」は、データのコピー先である論理ボリュームを識別する情報を示す。また、「コピー先ＬＢＡ」は、コピー先のデータが記憶される位置を示す。
【００５０】
「ＬＢＡカウント」は、ＬＢＡの８ＫＢごとに含まれるＬＢＡの数を示す。なお、実施例１に係る「ＬＢＡカウント」には、１６が格納される。
【００５１】
図３に戻り、制御部１２０は、例えば、ＣＰＵ（Central  Processing  Unit）であり、データ処理部１２１とバッファ管理テーブル生成部１２２と並び替え部１２３と格納部１２４と通信部１２５と展開部１２６とを有する。
【００５２】
データ処理部１２１は、ホストコンピュータ３からデータの書込みを受付ける。データ処理部１２１は、ホストコンピュータ３から受付けたデータを論理ボリューム用キャッシュ１１１に書込む。そして、データ処理部１２１は、書き込みが完了したことをホストコンピュータ３に応答する。また、データ処理部１２１は、論理ボリューム用キャッシュ１１１が記憶するデータを読み出して、ディスク１３ａまたは１３ｂに格納する。
【００５３】
また、データ処理部１２１は、ある世代に書込むデータの容量が所定容量を超えたか否かを判定する。ここで、データ処理部１２１は、ある世代に書込むデータの容量が所定容量を超えていないと判定した場合、引き続き、ホストコンピュータ３からデータの書込みを受付ける。
【００５４】
一方、データ処理部１２１は、ある世代に書込むデータの容量が所定容量を超えたと判定した場合、並び替え部１２３にバッファ管理テーブル１１３の並び替えを依頼する。
【００５５】
バッファ管理テーブル生成部１２２は、ホストコンピュータ３から受信した書込みデータを自装置のディスクに記憶させるボリュームと位置とをホストコンピュータ３から受付けたコピー依頼から抽出する。
【００５６】
そして、バッファ管理テーブル生成部１２２は、抽出した値をコピー元ボリュームとコピー元ＬＢＡとに対応付けてバッファ管理テーブル１１３に格納する。また、バッファ管理テーブル生成部１２２は、書込みデータをコピー先のストレージ装置のディスクに記憶させるボリュームと位置とをホストコンピュータ３から受付けたコピー依頼から抽出する。そして、バッファ管理テーブル生成部１２２は、抽出した値をコピー先ボリュームとコピー先ＬＢＡとに対応付けてバッファ管理テーブル１１３に格納する。
【００５７】
並び替え部１２３は、データ処理部１２１によりある世代に書込むデータの容量が所定容量を超えたと判定された場合、バッファ管理テーブル１１３で管理されるトラックを並び替える。図７を用いて並び替え部１２３によるバッファ管理テーブル１１３で管理されるトラックを並び替える処理を説明する。図７は、並び替え部によるバッファ管理テーブルで管理されるトラックを並び替える処理の一例を示す図である。
【００５８】
図７では、並び替え部１２３が、バッファ管理テーブル１１３で管理されるトラック４１０、トラック４２０、トラック４３０の３トラックを並び替える場合を例に説明する。また、ここでは、トラック４１０のコピー先ＬＢＡが１１２８から１２０８であり、トラック４２０のコピー先ＬＢＡが９８０から１０６０であり、トラック４３０のコピー先ＬＢＡが１４００から１４８０であるものと仮定する。
【００５９】
並び替え部１２３は、例えば、コピー先におけるＬＢＡの順序を昇順になるようにバッファ管理テーブル１１３で管理されるトラックを並び替える。図７に示す例では、並び替え部１２３は、バッファ管理テーブル１１３におけるトラック４１０、トラック４２０、トラック４３０の並び順をトラック４３０、トラック４１０、トラック４２０の順に並び替える。そして、並び替え部１２３は、バッファ管理テーブル１１３を並び替えたことを格納部１２４に通知する。
【００６０】
格納部１２４は、格納元のアドレス及び格納先のアドレスを確定する。ここで、格納元のアドレスとは、論理ボリューム用キャッシュ１１１においてデータが記憶されているアドレスを示す。また、格納先アドレスとは、転送用バッファ１１２においてデータが記憶されるアドレスを示す。
【００６１】
また、格納部１２４は、並び替え部１２３によりバッファ管理テーブル１１３を並び替えたことを通知された場合、以下の処理を実行する。すなわち、格納部１２４は、並び替え部１２３により並び替えられたバッファ管理テーブル１１３に基づいて、論理ボリューム用キャッシュ１１１から転送用バッファ１１２にデータを格納する。図８を用いて、格納部１２４によるデータを格納する処理を説明する。図８は、データ格納部によるデータを格納する処理の一例を示す図である。
【００６２】
図８では、格納部１２４が、論理ボリューム用キャッシュ１１１に記憶されるトラック４１０、トラック４２０、トラック４３０の３トラックを転送用バッファ１１２に格納する場合を例に説明する。また、ここでは、格納部１２４は、図７に示した、並び替え部１２３により並び替えられたバッファ管理テーブル１１３を用いるものとして説明する。
【００６３】
図８に示すように、格納部１２４は、論理ボリューム用キャッシュ１１１からトラック４３０を読み出し、転送用バッファ１１２に格納する。ここで、格納部１２４は、確定した格納先のアドレスにトラック４３０を格納する。続いて、格納部１２４は、論理ボリューム用キャッシュ１１１からトラック４１０を読み出し、転送用バッファ１１２のトラック４３０の後にトラック４１０を格納する。そして、格納部１２４は、論理ボリューム用キャッシュ１１１からトラック４２０を読み出し、転送用バッファ１１２のトラック４１０の後にトラック４２０を格納する。
【００６４】
また、格納部１２４は、転送用バッファ１１２に１世代分のデータの格納を完了した場合、転送用バッファ１１２に格納されたデータをコピー先のストレージ装置２０に送信するように通信部１２５に通知する。
【００６５】
また、格納部１２４は、転送するデータが論理ボリューム用キャッシュ１１１に存在しない場合、ディスクから転送するデータを読み出し、論理ボリューム用キャッシュ１１１に格納してから、転送用バッファ１１２に格納する。
【００６６】
通信部１２５は、格納部１２４から転送用バッファ１１２に１世代分のデータの格納を完了したことを通知された場合、以下の処理を実行する。すなわち、通信部１２５は、転送用バッファ１１２に記憶されるデータを読み出して、コピー先のストレージ装置に読み出したデータを送信する。また、通信部１２５は、並び替え部１２３により並び替えられたバッファ管理テーブル１１３をコピー先のストレージ装置に送信する。
【００６７】
また、通信部１２５は、コピー元から転送データを受信した場合、受信したデータを転送用バッファ１１２に格納する。そして、通信部１２５は、受信したデータを転送用バッファ１１２に格納したことを展開部１２６に通知する。
【００６８】
展開部１２６は、通信部１２５から受信したデータを転送用バッファ１１２に格納したことを通知された場合、ある世代に含まれるデータのすべてを受信したか否かを判定する。ここで、展開部１２６は、ある世代に含まれるデータのすべてを受信していないと判定した場合、ある世代に含まれるデータのすべてを受信するまで転送用バッファ１１２を監視する。
【００６９】
一方、展開部１２６は、ある世代に含まれるデータのすべてを受信したと判定した場合、展開処理を実行する。例えば、展開部１２６は、バッファ管理テーブル１１３を参照し、展開元のアドレス及び展開先のアドレスを確定する。ここで、展開元のアドレスは、転送用バッファ１１２においてデータが記憶されているアドレスを示し、展開先のアドレスは、論理ボリューム用キャッシュ１１１においてデータが記憶されるアドレスを示す。そして、展開部１２６は、転送用バッファ１１２が記憶するデータを論理ボリューム用キャッシュ１１１に格納する。
【００７０】
図９は、展開部によるデータを展開する処理の一例を示す図である。図９では、展開部１２６が、転送用バッファ１１２に格納されたトラック４１０、トラック４２０、トラック４３０の３トラックを論理ボリューム用キャッシュ１１１に展開する場合を例に説明する。
【００７１】
図９に示すように、展開部１２６は、転送用バッファ１１２に格納されたトラック４３０を論理ボリューム用キャッシュ１１１に展開する。続いて、展開部１２６は、転送用バッファ１１２に格納されたトラック４１０を論理ボリューム用キャッシュ１１１に展開する。そして、展開部１２６は、転送用バッファ１１２に格納されたトラック４２０を論理ボリューム用キャッシュ１１１に展開する。
【００７２】
［実施例１に係るストレージ装置による処理の処理手順］
次に、図１０及び図１１を用いて実施例１に係るストレージ装置による処理の処理手順について説明する。図１０を用いて、コピー元のストレージ装置における格納処理の処理手順を説明し、図１１を用いて、コピー先のストレージ装置における展開処理の処理手順を説明する。
【００７３】
（コピー元のストレージ装置における格納処理）
図１０は、実施例１に係るコピー元のストレージ装置による格納処理の処理手順を示すフローチャートである。図１０に示すように、データ処理部１２１は、ホストコンピュータ３からデータの書込みを受付ける（ステップＳ１０１）。格納部１２４は、トラック単位の制御データを参照し（ステップＳ１０２）、格納元のアドレス及び格納先アドレスを確定する（ステップＳ１０３）。
【００７４】
バッファ管理テーブル生成部１２２は、ホストコンピュータ３から指定されたコピー元ボリュームとコピー元ＬＢＡ及びコピー先ボリュームとコピー先ＬＢＡに基づいてバッファ管理テーブル１１３を生成する（ステップＳ１０４）。そして、データ処理部１２１は、ホストコンピュータ３から受付けたデータを論理ボリューム用キャッシュ１１１に書込み、書き込みが完了したことをホストコンピュータ３に応答する（ステップＳ１０５）。
【００７５】
そして、データ処理部１２１は、ある世代に書込むデータの容量が所定容量を超えたか否かを判定する（ステップＳ１０６）。ここで、データ処理部１２１は、ある世代に書込むデータの容量が所定容量を超えていないと判定した場合（ステップＳ１０６、Ｎｏ）、ステップＳ１０１に移行して、ホストコンピュータ３からデータの書込みを受付ける。
【００７６】
並び替え部１２３は、データ処理部１２１によりある世代に書込まれたデータの容量が所定容量を超えたと判定された場合（ステップＳ１０６、Ｙｅｓ）、バッファ管理テーブル１１３においてトラックを並び替える（ステップＳ１０７）。そして、格納部１２４は、バッファ管理テーブル１１３に基づいて、データを論理ボリューム用キャッシュ１１１から転送用バッファ１１２に格納する（ステップＳ１０８）。この処理の終了後、通信部１２５は、データをストレージ装置２０に送信する。
【００７７】
（コピー先のストレージ装置における展開処理）
図１１は、実施例１に係るコピー先のストレージ装置による展開処理の処理手順を示すフローチャートである。図１１に示すように、通信部１２５は、コピー元からデータを受信し（ステップＳ２０１）、受信したデータを転送用バッファ１１２に格納する。そして、展開部１２６は、ある世代に含まれるデータのすべてを受信したか否かを判定する（ステップＳ２０２）。
【００７８】
ここで、展開部１２６は、ある世代に含まれるデータのすべてを受信したと判定した場合（ステップＳ２０２、Ｙｅｓ）、展開処理を実行すると判定する（ステップＳ２０３）。一方、通信部１２５は、展開部１２６によりある世代に含まれるデータのすべてを受信していないと判定された場合（ステップＳ２０２、Ｎｏ）、引き続きコピー元からデータを受信する（ステップＳ２０１）。
【００７９】
展開部１２６は、トラック単位の制御データを参照し（ステップＳ２０４）、展開元のアドレス及び展開先のアドレスを確定する（ステップＳ２０５）。そして、展開部１２６は、転送用バッファ１１２に記憶されるデータを論理ボリューム用キャッシュ１１１に格納し（ステップＳ２０６）、処理を終了する。なお、この処理が終了後、データ処理部１２１は、論理ボリューム用キャッシュ１１１が記憶するデータをディスクに格納する。
【００８０】
［実施例１の効果］
上述してきたように、本実施例１では、コピー先装置における転送データの展開処理を短縮することができる。
【００８１】
また、通常、トラックを並び替える場合、トラックの並び替えを行う作業用のメモリ領域が必要になる。また、並び替えを行うための余分なメモリーコピーが発生する。一方、ストレージ装置１０は、トラックを並び替える場合、データ量の小さいバッファ管理テーブル１１３を生成し、このバッファ管理テーブル１１３を並び替える。これにより、トラックを並び替える場合、トラックの並び替えを行う作業用のメモリ領域を必要とせず、メモリーコピーも一度で済む。この結果、ストレージ装置１０は、資源を有効に活用でき、性能を向上させることが出来る。
【００８２】
また、並び替え部１２３は、コピー先におけるトラックの順序をＬＢＡに基づいて昇順になるようにバッファ管理テーブル１１３を並び替えるものとして説明したが、これに限定されるものではない。例えば、並び替え部１２３は、コピー先におけるトラックの順序をＬＢＡに基づいて降順になるようにバッファ管理テーブル１１３を並び替えてもよい。
【実施例２】
【００８３】
実施例１では、トラックを並び替えることでコピー先のストレージ装置における展開処理を短縮する場合について説明した。ところで、順序性を保証して、リモートコピーを行う場合、コピー元のストレージ装置２０が転送するトラックに含まれるレコードの数は各トラックにより異なる。例えば、あるトラックには多くのレコードが保存され、あるトラックには少しのレコードが保存される。
【００８４】
また、転送用バッファ１１３における格納および展開処理はトラック単位で行われるため、レコードを保存していない空き（未使用）領域まで格納処理や展開処理を行うことになる。また、レコードを保存していない空き領域をコピー先に転送することで通信負荷が高くなる。
【００８５】
このようなことから、コピー元のストレージ装置１０は、レコードを保存している領域のみをコピー先のストレージ装置に転送するようにしてもよいものである。そこで、実施例２では、ストレージシステムにおいて、転送するトラックからレコードを保存していない領域を除いて、レコードを保存している領域のみをコピー先のストレージ装置に転送する場合を説明する。
【００８６】
実施例２に係るストレージシステムの構成は、実施例１に係るストレージシステムの構成と同様である。また、実施例２に係るストレージ装置の構成は、実施例１に係るストレージ装置の構成と同様である。
【００８７】
［実施例２に係るＣＭの構成］
次に、図１２を用いて、実施例２に係るＣＭの構成を説明する。なお、実施例１に係るＣＭと同様の構成部については、同一の符号を付し、詳細な説明は省略する。
【００８８】
図１２は、実施例２に係るＣＭの構成を示すブロック図である。図１２に示すように、実施例２に係るＣＭ１５は、ＤＡ１０１ａ及び１０１ｂと記憶部２１０と制御部２２０を有する。記憶部２１０は、ＤＩＭＭやＤＲＡＭなどであり、論理ボリューム用キャッシュ２１１と、転送用バッファ１１２と、バッファ管理テーブル１１３とを有する。
【００８９】
論理ボリューム用キャッシュ２１１は、実施例１に係る論理ボリューム用キャッシュ１１１と同様に、ホストコンピュータ３とディスク１３ａまたは１３ｂとに対してキャッシュメモリとして機能する。実施例２に係る論理ボリューム用キャッシュ２１１が記憶するデータの構造は、実施例１に係る論理ボリューム用キャッシュ１１１が記憶するデータの構造と同様であるが、実施例１におけるトラック単位の制御データに加えて以下の情報を追加して有する点で異なる。
【００９０】
実施例２に係るトラック単位の制御データは、実施例１に係るトラック単位の制御データに加えて、「先頭レコードオフセット」、「レコード間オフセット」、「ＲＥＣ制御フラグ」を更に保持する。
【００９１】
「先頭レコードオフセット」は、先頭のレコードが記憶される位置、すなわち、先頭のレコードの開始位置までのオフセットを示す。言い換えると、「先頭レコードオフセット」は、先頭のレコードの開始位置までのデータを保存していない領域を示す。「レコード間オフセット」は、レコード間の間隔を示す。言い換えると、「レコード間オフセット」は、レコード間のデータを保存していない空き領域を示す。
【００９２】
「ＲＥＣ制御フラグ」は、データが圧縮可能であるか否かを示す。例えば、「ＲＥＣ制御フラグ」には、データが圧縮可能である場合、「圧縮実施」が格納される。ここで、データが圧縮可能である場合とは、レコード長が固定長である場合を指す。
【００９３】
図１３は、実施例２に係るトラック単位の制御データの一例を示す図である。図１３では、トラック４１０、トラック４２０、トラック４３０の３トラックを例に制御データを説明する。図１３に示すように、トラック４１０は、レコードを２つ有するので、トラック４１０の制御データの「総レコード数」には２が格納される。ここで、「データ長」が１８であり、各レコード長が１８ＬＢＡであることを示す。
【００９４】
また、図１３中の４１０ａは、「先頭レコードオフセット」を示し、図１３中の４１０ｂは、「レコード間オフセット」を示す。トラック４１０において、「先頭レコードオフセット」が８ＬＢＡであり、「レコード間オフセット」が１６ＬＢＡである。また、「ＲＥＣ制御フラグ」が圧縮実施であるので、このトラック４１０は圧縮可能である。
【００９５】
図１３に示すように、トラック４２０は、レコードを１つ有するので、トラック４２０の制御データの「総レコード数」には１が格納される。ここで、「データ長」が６４であり、各レコード長が６４ＬＢＡであることを示す。
【００９６】
また、図１３中の４２０ａは、「先頭レコードオフセット」を示す。トラック４２０において、「先頭レコードオフセット」が１６ＬＢＡであり、「レコード間オフセット」が０ＬＢＡである。また、「ＲＥＣ制御フラグ」が圧縮実施であるので、このトラック４２０は圧縮可能である。
【００９７】
図１３に示すように、トラック４３０は、レコードを３つ有するので、トラック４３０の制御データの「総レコード数」には３が格納される。ここで、「データ長」が１６であり、各レコード長が１６ＬＢＡであることを示す。
【００９８】
また、図１３中の４３０ａは、「先頭レコードオフセット」を示し、図１３中の４３０ｂは、「レコード間オフセット」を示す。トラック４３０において、「先頭レコードオフセット」が１２ＬＢＡであり、「レコード間オフセット」が８ＬＢＡである。また、「ＲＥＣ制御フラグ」が圧縮実施であるので、このトラック４３０は圧縮可能である。
【００９９】
このように、制御データにはトラック内のレコード数やレコードのデータ長といったトラックの内部情報が含まれるので、ストレージ装置１０及び２０は、トラック内の必要な部分だけを識別できる。
【０１００】
転送用バッファ１１２は、実施例１に係る転送用バッファ１１２と同様である。バッファ管理テーブル１１３は、実施例１に係るバッファ管理テーブル１１３と同様である。
【０１０１】
図１２に戻り、制御部２２０は、例えば、ＣＰＵ（Central  Processing  Unit）であり、データ処理部１２１とバッファ管理テーブル生成部２２１と圧縮部２２２と並び替え部２２３と格納部２２４と通信部２２５と展開部２２６とを有する。なお、図１２には、制御部２２０が有するコピーするデータを転送する機能に関連する構成のみを図示している。
【０１０２】
データ処理部１２１は、実施例１に係るデータ処理部１２１と同様の機能を有し、バッファ管理テーブル生成部２２１は、実施例１に係るバッファ管理テーブル生成部１２２と同様の機能を有する。
【０１０３】
圧縮部２２２は、制御データの「ＲＥＣ制御フラグ」から、ホストコンピュータ３から受信した書込みデータが圧縮可能なトラックであるか否かを判定する。圧縮部２２２は、制御データの「ＲＥＣ制御フラグ」に「圧縮実施」が格納されている場合、受信した書込みデータが圧縮可能であると判定する。そして、圧縮部２２２は、バッファ管理テーブル生成部２２１により生成されたバッファ管理テーブル１１３を圧縮する。
【０１０４】
例えば、圧縮部２２２は、バッファ管理テーブル生成部２２１によりバッファ管理テーブル１１３が生成された場合、生成されたバッファ管理テーブル１１３をトラック単位で圧縮する。そして、圧縮部２２２は、圧縮したバッファ管理テーブル１１３を並び替え部２２３に出力する。なお、圧縮部２２２は、受信した書込みデータが圧縮可能ではないと判定した場合、バッファ管理テーブル生成部２２１により生成されたバッファ管理テーブル１１３を並び替え部２２３に出力する。
【０１０５】
図１４は、圧縮部により生成されるバッファ管理テーブルの一例を示す図である。圧縮部２２２は、図６に示したバッファ管理テーブル１１３から先頭８ＫＢの情報１１３ａを抽出する。また、圧縮部２２２は、次の８ＫＢ以降の情報については、コピー元ＬＢＡ及びコピー先ＬＢＡの値を「ＮＵＬＬ」に設定する。ここで、「ＮＵＬＬ」は、バッファ管理テーブル１１３が圧縮されたことを示す。
【０１０６】
また、圧縮部２２２は、「ＬＢＡカウントの総和」を算出して、「ＬＢＡカウント」に値を格納する。ここで、「ＬＢＡカウントの総和」は、「総レコード数」×「データ長」＋「制御データ長」によって算出される。なお、データ長と、制御データ長との単位は、ＬＢＡである。また、いずれの制御データも１ＬＢＡである。ここでは、図１４に示す１トラックにおける「総レコード数」が２、「データ長」が１８である場合を例に「ＬＢＡカウントの総和」の算出を説明する。この場合、圧縮部２２２は、「ＬＢＡカウントの総和」を２×１８＋１から３７であると算出する。
【０１０７】
図１４に示すように、バッファ管理テーブル１１３は、８ＫＢごとに１６ＬＢＡがカウントされる。圧縮部２２２は、１番目及び２番目の「ＬＢＡカウント」には、１６を格納する。ここで、圧縮部２２２は、「ＬＢＡカウントの総和」が３７であるので、３番目の「ＬＢＡカウント」には、「ＬＢＡカウントの総和」である３７から既にカウントしたＬＢＡの総和である３２を減算した「５」を格納する。このように、圧縮部２２２は、バッファ管理テーブル１１３が有する９６ＬＢＡ分の情報を３７ＬＢＡ分に圧縮する。
【０１０８】
並び替え部２２３は、実施例１に係る並び替え部１２３が有する機能に加えて以下の機能を有する。例えば、並び替え部２２３は、圧縮部２２２により生成されたバッファ管理テーブル１１３をトラック単位でコピー先のＬＢＡの順が昇順になるように並び替える。
【０１０９】
格納部２２４は、実施例１に係る格納部１２４が有する機能に加えて以下の機能を有する。例えば、格納部２２４は、ホストコンピュータ３から受信した書込みデータが圧縮可能なトラックであると圧縮部２２２により判定された場合、格納元のアドレス及び格納先のアドレスを確定する。ここで、格納元のアドレスとは、論理ボリューム用キャッシュ２１１においてデータが記憶されているアドレスを示す。また、格納先アドレスとは、転送用バッファ１１２においてデータが記憶されるアドレスを示す。
【０１１０】
また、格納部２２４は、並び替え部２２３により並び替えられたバッファ管理テーブル１１３と制御データとに基づいて、論理ボリューム用キャッシュ２１１から読み出したデータのうち、レコードが保存されている部分のみを転送用バッファ１１２に格納する。
【０１１１】
図１５を用いて、格納部２２４によるデータを格納する処理を説明する。図１５は、データ格納部によるデータを格納する処理の一例を示す図である。
【０１１２】
図１５では、論理ボリューム用キャッシュ２１１が有するトラック４１０、トラック４２０、トラック４３０の３トラックを転送用バッファ１１２に格納する場合を例に説明する。また、ここでは、格納部２２４は、並び替え部２２３により並び替えられたバッファ管理テーブル１１３を用いるものとして説明する。
【０１１３】
図１５に示すように、格納部２２４は、論理ボリューム用キャッシュ２１１からトラック４３０を読み出し、制御データからレコードを保存していない領域を判定し、トラック４３０のレコードを保存している領域のみを転送用バッファ１１２に格納する。すなわち、格納部２２４は、トラック４３０のレコード４３１、４３２及び４３３と制御データ４３４とを転送用バッファ１１２に格納する。ここで、格納部２２４は、確定した格納先のアドレスにトラック４３０を格納する。
【０１１４】
続いて、格納部２２４は、論理ボリューム用キャッシュ２１１からトラック４１０を読み出し、転送用バッファ１１２のトラック４３０の制御データの後にトラック４１０のレコードを格納する。すなわち、格納部２２４は、トラック４１０のレコード４１１及び４１２と制御データ４１３とを転送用バッファ１１２に格納する。
【０１１５】
そして、格納部２２４は、論理ボリューム用キャッシュ２１１からトラック４２０を読み出し、転送用バッファ１１２のトラック４１０の制御データの後にトラック４２０のレコードを格納する。すなわち、格納部２２４は、トラック４２０のレコード４２１と制御データ４２２とを転送用バッファ１１２に格納する。
【０１１６】
また、格納部２２４は、転送用バッファ１１２に１世代分のデータの格納を完了した場合、転送用バッファ１１２に格納されたデータをコピー先のストレージ装置２０に送信するように通信部１２５に通知する。
【０１１７】
通信部２２５は、転送用バッファ１１２に１世代分のデータの格納を完了したことを格納部２２４から通知された場合、転送用バッファ１１２に記憶されるデータを読み出して、コピー先のストレージ装置に読み出したデータを送信する。また、通信部２２５は、並び替え部２２３により並び替えられたバッファ管理テーブル１１３をコピー先のストレージ装置に送信する。
【０１１８】
展開部２２６は、並び替え部２２３により並び替えられたバッファ管理テーブル１１３と、制御データとを参照して、レコードが保存されている部分及びレコードが保存されていない部分を転送用バッファ１１２から論理ボリューム用キャッシュ２１１に展開する。図１６は、展開部によるデータを展開する処理の一例を示す図である。
【０１１９】
図１６では、転送用バッファ１１２に、レコード４３１、レコード４３２、レコード４３３、制御データ４３４が記憶されている。また、転送用バッファ１１２に、レコード４１１、レコード４１２、制御データ４１３が記憶されている。また、転送用バッファ１１２に、レコード４２１、制御データ４２２が記憶されている。
【０１２０】
展開部２２６は、レコード４３１、レコード４３２、レコード４３３、制御データ４３４を転送用バッファ１１２から読み出して、「先頭レコードオフセット」と「レコード間オフセット」とを含むトラック４３０として論理ボリューム用キャッシュ２１１に展開する。
【０１２１】
同様に、展開部２２６は、レコード４１１、レコード４１２、制御データ４１３を転送用バッファ１１２から読み出して、「先頭レコードオフセット」と「レコード間オフセット」とを含むトラック４１０として論理ボリューム用キャッシュ２１１に展開する。また、展開部２２６は、レコード４２１、制御データ４２２を転送用バッファ１１２から読み出して、「先頭レコードオフセット」と「レコード間オフセット」とを含むトラック４２０として論理ボリューム用キャッシュ２１１に展開する。
【０１２２】
［実施例２に係るストレージ装置による処理の処理手順］
次に図１７及び図１８を用いて、実施例２に係るストレージ装置による処理の処理手順を説明する。ここでは、図１７を用いてコピー元のストレージ装置における格納処理を説明し、図１８を用いてコピー先のストレージ装置における展開処理を説明する。
【０１２３】
（コピー元のストレージ装置における格納処理）
図１７は、実施例２に係るコピー元のストレージ装置による格納処理の処理手順を示すフローチャートである。図１７に示すように、データ処理部１２１は、ホストコンピュータ３からデータの書込みを受付ける（ステップＳ３０１）。なお、ステップＳ３０１の処理の後、バッファ管理テーブル生成部２２１は、ホストコンピュータ３から指定されたコピー元ボリュームとコピー元ＬＢＡ及びコピー先ボリュームとコピー先ＬＢＡに基づいてバッファ管理テーブル１１３を生成する。圧縮部２２２は、トラック単位の制御データを参照し（ステップＳ３０２）、圧縮が可能なトラックか否かを判定する（ステップＳ３０３）。
【０１２４】
ここで、格納部２２４は、圧縮部２２２により圧縮が可能なトラックであると判定された場合（ステップＳ３０３、Ｙｅｓ）、トラック内の必要な部分を考慮して格納元のアドレス及び格納先アドレスを確定する（ステップＳ３０４）。
【０１２５】
圧縮部２２２は、圧縮が可能なトラックでないと判定した場合（ステップＳ３０３、Ｎｏ）、またはステップＳ３０４の処理が終了後、バッファ管理テーブルを生成する（ステップＳ３０５）。例えば、圧縮部２２２は、圧縮が可能なトラックであると判定した場合、バッファ管理テーブル生成部２２１により生成されたバッファ管理テーブル１１３を圧縮し、並び替え部２２３に出力する。また、圧縮部２２２は、圧縮が可能なトラックではないと判定した場合、バッファ管理テーブル生成部２２１により生成されたバッファ管理テーブル１１３を並び替え部２２３に出力する。
【０１２６】
そして、データ処理部１２１は、ホストコンピュータ３から受付けたデータを論理ボリューム用キャッシュ２１１に書込み、書き込みが完了したことをホストコンピュータ３に応答する（ステップＳ３０６）。
【０１２７】
また、データ処理部１２１は、ある世代に書込まれたデータの容量が所定容量を超えたか否かを判定する（ステップＳ３０７）。ここで、データ処理部１２１は、ある世代に書込まれたデータの容量が所定容量を超えていないと判定した場合（ステップＳ３０７、Ｎｏ）、ステップＳ３０１に移行して、ホストコンピュータ３からデータの書込みを受付ける。
【０１２８】
並び替え部２２３は、データ処理部１２１によりある世代に書込まれたデータの容量が所定容量を超えたと判定された場合（ステップＳ３０７、Ｙｅｓ）、圧縮部２２２により生成されたバッファ管理テーブル１１３を並び替える（ステップＳ３０８）。そして、格納部２２４は、バッファ管理テーブル１１３と制御データとに基づいて、データを論理ボリューム用キャッシュ２１１から転送用バッファ１１２に格納する（ステップＳ３０９）。この処理の終了後、通信部１２５は、データをストレージ装置２０に送信する。
【０１２９】
（コピー先のストレージ装置における展開処理）
図１８は、実施例２に係るコピー先のストレージ装置による展開処理の処理手順を示すフローチャートである。図１８に示すように、通信部１２５は、コピー元からデータを受信し（ステップＳ４０１）、受信したデータを転送用バッファ１１２に格納する。そして、展開部２２６は、ある世代に含まれるデータのすべてを受信したか否かを判定する（ステップＳ４０２）。ここで、展開部２２６は、ある世代に含まれるデータのすべてを受信したと判定した場合（ステップＳ４０２、Ｙｅｓ）、展開処理を実行すると判定する（ステップＳ４０３）。
【０１３０】
展開部２２６は、トラック単位の制御データを参照し（ステップＳ４０４）、圧縮が可能なトラックであるか否かを判定する（ステップＳ４０５）。ここで、展開部２２６は、圧縮が可能なトラックであると判定した場合（ステップＳ４０５、Ｙｅｓ）、トラック内の必要な部分を考慮して展開元のアドレス及び展開先のアドレスを確定する（ステップＳ４０６）。
【０１３１】
展開部２２６は、圧縮が可能なトラックでないと判定した場合（ステップＳ４０５、Ｎｏ）、またはステップＳ４０６の処理が終了後、転送用バッファ１１２が記憶するデータを論理ボリューム用キャッシュ２１１に格納し、処理を終了する（ステップＳ４０７）。なお、この処理が終了後、データ処理部１２１は、論理ボリューム用キャッシュ２１１が記憶するデータをディスクに格納する。
【０１３２】
［実施例２の効果］
上述してきたように、本実施例２では、データを圧縮して転送するので、通信負荷を軽減することができる。また、レコードを保存していない領域を処理する無駄を削減できるようになる。具体的には、実際にレコードが保存されている部分のみを転送用バッファ１１２に格納すること、圧縮されたトラック情報のみを転送すること、転送用バッファ１１２から最小限のレコードのみを展開することが実現できる。この結果、実施例２に係るストレージシステムでは、従来技術に比べて大幅な性能向上やコスト削減が見込める。
【０１３３】
また、実施例２では、コピー元のストレージ装置が、データを圧縮し、圧縮したデータを並び替えてからコピー先のストレージ装置に転送するものとして説明したが、これに限定されるものではない。例えば、コピー元のストレージ装置は、圧縮したデータを並び替えずに、コピー先のストレージ装置に転送するようにしてもよい。あるいは、バッファ管理テーブル１１３を並び替えた後に、制御データと並び替えられたバッファ管理テーブルとに基づいて、データを転送用バッファ１１２に格納するようにしてもよい。
【実施例３】
【０１３４】
ところで、本発明は、上述した実施例以外にも、種々の異なる形態にて実施されてよい。そこで、実施例３では、本発明に含まれる他の実施例について説明する。
【０１３５】
（システム構成等）
本実施例において説明した各処理のうち自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。
【０１３６】
この他、上記文章中や図面中で示した処理手順、制御手順、具体的名称については、特記する場合を除いて任意に変更することができる。また、図示した記憶部が格納する情報は一例に過ぎず、必ずしも図示のごとく情報が格納される必要はない。
【０１３７】
また、実施例１では、メインフレームが接続されたストレージシステムを例にトラックの並び替えを説明したが、開示の技術は、これに限定されるものではない。例えば、実施例１に開示の技術は、Ｕｎｉｘ／ＩＡサーバが接続されたオープンシステムにおいても適用することが出来る。
【０１３８】
図１９を用いて、オープンシステムにおける並び替え処理の一例を説明する。図１９は、オープンシステムにおける並び替え処理の一例を示す図である。図１９では、ＬＢＡ１８ａ、ＬＢＡ１８ｂ、ＬＢＡ１８ｃの３つのデータを並び替える場合を説明する。また、ここでは、コピー先のＬＢＡの昇順がＬＢＡ１８ｃ、ＬＢＡ１８ａ、ＬＢＡ１８ｂの順であるとする。
【０１３９】
オープンシステムにおいてデータは、ＬＢＡ単位で論理ボリューム用キャッシュ１１１に記憶される。このため、並び替え部１２３は、コピー先のＬＢＡが昇順になるようにデータをＬＢＡ単位で並び替える。ここで、論理ボリューム用キャッシュ１１１には、ＬＢＡ１８ａ、ＬＢＡ１８ｂ、ＬＢＡ１８ｃが記憶されており、バッファ管理テーブル生成部１２２により、ＬＢＡ１８ａ、ＬＢＡ１８ｂ、ＬＢＡ１８ｃの順でバッファ管理テーブル１１３が生成されているものとする。
【０１４０】
並び替え部１２３は、バッファ管理テーブル１１３におけるＬＢＡ１８ａ、ＬＢＡ１８ｂ、ＬＢＡ１８ｃの順をコピー先のＬＢＡが昇順になるようにＬＢＡ１８ｃ、ＬＢＡ１８ａ、ＬＢＡ１８ｂの順に並び替える。この結果、格納部１２４は、ＬＢＡ１８ｃ、ＬＢＡ１８ａ、ＬＢＡ１８ｂの順で転送用バッファ１１２にデータを格納する。このように、コピー元のストレージ装置がデータをＬＢＡ単位で並び替えてコピー先のストレージ装置に転送することで、コピー先のストレージ装置では、ディスクヘッドの移動時間を短縮し、展開処理を高速化することができる。
【０１４１】
また、上述した実施例では、ホストコンピュータ３から書込みの要求があったデータをディスク１３ａ〜１４ｂに書き込む。そして、ホストコンピュータ３からストレージ装置２０へのデータ送信の要求に応じてデータを送信する際に、データのトラックの並び順を並び替えることとした。しかし、これに限らず、ホストコンピュータ３から書込みの要求があったデータをディスク１３ａ〜１４ｂに書き込む際に、データのトラックの並び順を並び替えた上で書込むこととしてもよい。
【０１４２】
また、図示した各構成部は、必ずしも物理的に図示のごとく構成されていることを要しない。例えば、コピー元のストレージ装置１０では、データ処理部１２１とバッファ管理テーブル生成部１２２と並び替え部１２３と格納部１２４と通信部１２５とを有するようにしてもよい。また、コピー先のストレージ装置２０では、データ処理部１２１と通信部１２５と展開部１２６とを有するようにしてもよい。
【０１４３】
また、ストレージ装置１０では、バッファ管理テーブル生成部１２２と並び替え部１２３とが統合されてもよい。また、バッファ管理テーブル生成部２２１と圧縮部２２２とが統合されてもよい。さらに、各装置にて行われる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１４４】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１４５】
（付記１）複数のデータを記憶する記憶部と、
該複数のデータのコピー先のストレージ装置の記憶部における、該複数のデータのそれぞれの記憶予定位置に基づいて、前記複数のデータの順序を並び替える並び替え部と、
前記並び替え部により順序が並び替えられた複数のデータを前記コピー先のストレージ装置に送信する送信部と
を備えることを特徴とするストレージ装置。
【０１４６】
（付記２）前記複数のデータがそれぞれ記憶される、情報が書込まれた第１の領域と前記情報が書込まれていない第２の領域と前記第１の領域及び前記第２の領域の位置を示す領域情報が書込まれた第３の領域のうち、前記領域情報に基づいて前記第２の領域を除外し、前記第１の領域及び前記第３の領域における情報を基に、コピー用のデータを前記複数のデータごとに生成するコピー用データ生成部を更に備え、
前記並び替え部は、前記コピー先のストレージ装置の記憶部における、前記複数のデータのそれぞれの記憶予定位置に基づいて、複数の前記コピー用のデータの順序を並び替える
ことを特徴とする付記１に記載のストレージ装置。
【０１４７】
（付記３）コピー先のストレージ装置の記憶部における前記データの記憶予定位置と、前記のデータの識別子とを対応付けた位置情報を生成する位置情報生成部を更に備え、
前記並び替え部は、前記記憶予定位置に基づいて、前記位置情報の順序を並び替えるとともに、並び替えた前記位置情報における記憶予定位置の順序で前記複数のデータの順序を並び替え、
前記送信部は、前記並び替え部により並び替えられた前記複数のデータと前記位置情報とを前記コピー先のストレージ装置に送信する
ことを特徴とする付記１または２に記載のストレージ装置
【０１４８】
（付記４）記憶部における記憶予定位置に基づいて順序が並び替えられた複数のデータをコピー元のストレージ装置から受信する受信部と、
受信した前記順序が並び替えられた複数のデータを前記記憶部に書込む書込部と
を有することを特徴とするストレージ装置。
【０１４９】
（付記５）ストレージ装置が、
記憶部に記憶される複数のデータそれぞれの、コピー先のストレージ装置の記憶部における記憶予定位置に基づいて、該複数のデータの順序を並び替え、
順序が並び替えられた前記複数のデータを前記コピー先のストレージ装置に送信する
ことを特徴とするストレージ装置の制御方法。
【０１５０】
（付記６）ストレージ装置が、更に、
前記複数のデータがそれぞれ記憶される、情報が書込まれた第１の領域と前記情報が書込まれていない第２の領域と前記第１の領域及び前記第２の領域の位置を示す領域情報が書込まれた第３の領域のうち、前記領域情報に基づいて前記第２の領域を除外し、前記第１の領域及び前記第３の領域における情報を基に、コピー用のデータを前記複数のデータごとに生成し、
前記コピー先のストレージ装置の記憶部における、前記複数のデータのそれぞれの記憶予定位置に基づいて、複数の前記コピー用のデータの順序を並び替える
ことを特徴とする付記５に記載のストレージ装置の制御方法。
【０１５１】
（付記７）前記ストレージ装置が、更に、
コピー先のストレージ装置の記憶部における前記データの記憶予定位置と、前記のデータの識別子とを対応付けた位置情報を生成し、
前記記憶予定位置に基づいて、前記位置情報の順序を並び替えるとともに、並び替えた前記位置情報における記憶予定位置の順序で前記複数のデータの順序を並び替え、
並び替えられた前記複数のデータと前記位置情報とを前記コピー先のストレージ装置に送信する
ことを特徴とする付記５または６に記載のストレージ装置の制御方法。
【０１５２】
（付記８）ストレージ装置が、
記憶部における記憶予定位置に基づいて順序が並び替えられた複数のデータをコピー元のストレージ装置から受信し、
受信した前記順序が並び替えられた複数のデータを前記記憶部に書込む
ことを特徴とするストレージ装置の制御方法。
【０１５３】
（付記９）情報処理装置と、前記情報処理装置からデータの書込みを受け付けて自装置と接続される他装置に前記データを送信するコピー元のストレージ装置と、前記コピー元のストレージ装置から前記データを受信するコピー先のストレージ装置とを有するストレージシステムにおいて、
前記コピー元のストレージ装置は、
複数のデータを記憶する記憶部と、
該複数のデータのコピー先のストレージ装置の記憶部における、該複数のデータのそれぞれの記憶予定位置に基づいて、前記複数のデータの順序を並び替える並び替え部と、
前記並び替え部により順序が並び替えられた複数のデータを前記コピー先のストレージ装置に送信する送信部とを備え、
前記コピー先のストレージ装置は、
前記コピー元のストレージ装置から前記順序が並び替えられた複数のデータを受信する受信部と、
受信した前記順序が並び替えられた複数のデータを記憶部に書込む書込部とを備える
ことを特徴とするストレージシステム。
【符号の説明】
【０１５４】
１  ストレージシステム
３、４  ホストコンピュータ
１０、２０  ストレージ装置
１１ａ、１１ｂ、１２ａ、１２ｂ、２１ａ、２１ｂ、２２ａ、２２ｂ  ＣＡ
１３ａ、１３ｂ、１４ａ、１４ｂ、２３ａ、２３ｂ、２４ａ、２４ｂ  ディスク
１５、１６、２５、２６  ＣＭ
１０１ａ、１０１ｂ  ＤＡ
１１０、２１０  記憶部
１１１、２１１  論理ボリューム用キャッシュ
１１２  転送用バッファ
１１３  バッファ管理テーブル
１２０  制御部
１２１  データ処理部
１２２、２２１  バッファ管理テーブル生成部
１２３、２２３  並び替え部
１２４、２２４  格納部
１２５、２２５  通信部
１２６、２２６  展開部
２２２  圧縮部
【図１】
0005923913.tif 000002
【図２Ａ】
0005923913.tif 000003
【図２Ｂ】
0005923913.tif 000004
【図２Ｃ】
0005923913.tif 000005
【図２Ｄ】
0005923913.tif 000006
【図３】
0005923913.tif 000007
【図４】
0005923913.tif 000008
【図５Ａ】
0005923913.tif 000009
【図５Ｂ】
0005923913.tif 000010
【図６】
0005923913.tif 000011
【図７】
0005923913.tif 000012
【図８】
0005923913.tif 000013
【図９】
0005923913.tif 000014
【図１０】
0005923913.tif 000015
【図１１】
0005923913.tif 000016
【図１２】
0005923913.tif 000017
【図１３】
0005923913.tif 000018
【図１４】
0005923913.tif 000019
【図１５】
0005923913.tif 000020
【図１６】
0005923913.tif 000021
【図１７】
0005923913.tif 000022
【図１８】
0005923913.tif 000023
【図１９】
0005923913.tif 000024