(57)【要約】【課題】ストレージ装置間における転送データ量を削減するとともに、通信時間を短縮する。【解決手段】処理装置１１は、コピー先データ処理装置２において対応するハッシュ値が存在しない再転送対象の論理アドレスの実データと、再転送対象の論理アドレスの後続の論理アドレスに対応するハッシュ値とを組み合わせた転送データを生成し、生成した転送データをコピー先データ処理装置２に送信する。【選択図】図５
2020086576.tif 000002
【特許請求の範囲】
【請求項１】
データをコピー先データ処理装置に転送するデータ転送制御装置であって、
処理装置を備え、
前記処理装置は、
前記コピー先データ処理装置において対応するハッシュ値が存在しない再転送対象の論理アドレスの実データと、前記再転送対象の論理アドレスの後続の論理アドレスに対応するハッシュ値とを組み合わせた転送データを生成し、
生成した前記転送データを前記コピー先データ処理装置に送信する、
データ転送制御装置。
【請求項２】
転送対象の論理アドレスに対応するハッシュ値を前記コピー先データ処理装置に送信し、
前記コピー先データ処理装置において前記対応するハッシュ値が存在しないことを前記コピー先データ処理装置から応答された場合に、前記転送対象の論理アドレスの実データを含む前記転送データを生成して、前記再転送対象とする、
請求項１に記載のデータ転送制御装置。
【請求項３】
前記処理装置は、
前記コピー先データ処理装置が重複排除機能とデータ圧縮機能との少なくとも一方をサポートしていない場合には、データ圧縮前の前記実データである原本データを前記転送データとして送信する、
請求項１又は２に記載のデータ転送制御装置。
【請求項４】
前記処理装置は、
前記コピー先データ処理装置に記憶されている実データに対応するハッシュ値が前記コピー先データ処理装置で管理されている場合には、前記転送データに含まれる実データに対応するハッシュ値を前記再転送対象としない、
請求項１〜３のいずれか１項に記載のデータ転送制御装置。
【請求項５】
前記コピー先データ処理装置に記憶されている実データに対応するハッシュ値が前記コピー先データ処理装置で管理されていない場合には、前記転送データに含まれる実データに対応するハッシュ値を前記再転送対象とし、
前記再転送対象として決定された１又は複数の論理アドレスの実データと、後続の転送対象の複数の論理アドレスの各ハッシュ値とで、前記転送データを生成する、
請求項１〜３のいずれか１項に記載のデータ転送制御装置。
【請求項６】
前記処理装置は、
前記転送データにおける各論理アドレスのデータについての、実データとハッシュ値との種別、論理アドレス、及び、データサイズに関する情報を、当該転送データに含める、
請求項１〜５のいずれか１項に記載のデータ転送制御装置。
【請求項７】
データをコピー元データ処理装置からコピー先データ処理装置へ転送するデータ処理システムであって、
前記コピー先データ処理装置は、
前記コピー元データ処理装置から送信されたハッシュ値に対応する実データが前記コピー先データ処理装置において存在するか否かを、前記コピー元データ処理装置に応答し、
前記コピー元データ処理装置は、
前記コピー先データ処理装置からの応答に基づき、前記コピー先データ処理装置において対応するハッシュ値が存在しない再転送対象の実データと、前記再転送対象の論理アドレスの後続の論理アドレスに対応するハッシュ値とを組み合わせた転送データを、前記コピー先データ処理装置に送信する、
ストレージシステム。
【請求項８】
データをコピー先データ処理装置に転送するコンピュータに、
前記コピー先データ処理装置において対応するハッシュ値が存在しない再転送対象の実データと、前記再転送対象の論理アドレスの後続の論理アドレスに対応するハッシュ値とを組み合わせた転送データを生成し、
生成した前記転送データを前記コピー先データ処理装置に送信する、
処理を実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送制御装置，ストレージシステム及びプログラムに関する。
【背景技術】
【０００２】
ストレージ装置間で差分コピー（別言すれば、「レプリケーション」）を行なうストレージシステムが存在する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−２１２５５１号公報
【特許文献２】国際公開第２０１２／０８１０９９号
【特許文献３】特表２０１４−５２４６０１号公報
【特許文献４】特表２０１８−５０６０８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ストレージ装置間のリモートコピーでデータを伝送する場合に、ストレージ間のデータ転送量が多くなり、コピー処理時間の増大や回線容量の圧迫が生じるおそれがある。
【０００５】
１つの側面では、ストレージ装置間における転送データ量を削減するとともに、通信時間を短縮することを目的とする。
【課題を解決するための手段】
【０００６】
データ転送制御装置は、データをコピー先データ処理装置に転送するデータ転送制御装置であって、処理装置を備え、前記処理装置は、前記コピー先データ処理装置において対応するハッシュ値が存在しない再転送対象の論理アドレスの実データと、前記再転送対象の論理アドレスの後続の論理アドレスに対応するハッシュ値とを組み合わせた転送データを生成し、生成した前記転送データを前記コピー先データ処理装置に送信する。
【発明の効果】
【０００７】
１つの側面では、ストレージ装置間における転送データ量を削減するとともに、通信時間を短縮することができる。
【図面の簡単な説明】
【０００８】
【図１】関連例における重複排除処理を説明するテーブルである。
【図２】関連例におけるデータ転送処理を説明するブロック図である。
【図３】関連例におけるコピー元ストレージ装置でのデータ管理を説明するテーブルである。
【図４】関連例におけるコピー先ストレージ装置でのデータ管理を説明するテーブルである。
【図５】実施例としてのストレージシステムのハードウェア構成を模式的に示すブロック図である。
【図６】図５に示したコピー元ストレージ装置における機能構成を模式的に示すブロック図である。
【図７】図５に示したコピー先ストレージ装置における機能構成を模式的に示すブロック図である。
【図８】図５に示したストレージシステムにおけるデータ転送処理を説明する図である。
【図９】図５に示したストレージシステムにおけるデータ転送処理を説明する図である。
【図１０】図５に示したストレージシステムにおけるデータ転送処理を説明する図である。
【図１１】図５に示したストレージシステムにおけるLogical Block Address（ＬＢＡ）とハッシュ値との関係の一例を示すテーブルである。
【図１２】図５に示したストレージシステムにおける転送データの第１の例を示す図である。
【図１３】図５に示したストレージシステムにおける転送データの第２の例を示す図である。
【図１４】関連例におけるデータ転送処理と実施例におけるデータ転送処理とを比較するテーブルである。
【図１５】図５に示したストレージシステムにおけるメタデータを付加する場合のCommand Descriptor Block（ＣＤＢ）の転送処理を説明する図である。
【図１６】図５に示したストレージシステムにおけるメタデータを付加しない場合のＣＤＢの転送処理を説明する図である。
【図１７】図５に示したストレージシステムにおけるデータ圧縮処理及びデータ解凍処理を説明する図である。
【図１８】図５に示したコピー元ストレージ装置におけるデータ転送処理の第１の例を説明するフローチャートである。
【図１９】図５に示したコピー先ストレージ装置におけるデータ転送処理の第１の例を説明するフローチャートである。
【図２０】図５に示したコピー先ストレージ装置におけるデータ転送処理の第１の例を説明するフローチャートである。
【図２１】図５に示したコピー元ストレージ装置におけるデータ転送処理の第２の例を説明するフローチャートである。
【図２２】図５に示したコピー先ストレージ装置におけるデータ転送処理の第２の例を説明するフローチャートである。
【図２３】図５に示したコピー先ストレージ装置におけるデータ転送処理の第２の例を説明するフローチャートである。
【発明を実施するための形態】
【０００９】
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
【００１０】
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００１１】
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
【００１２】
〔Ａ〕関連例
図１は、関連例における重複排除処理を説明するテーブルである。
【００１３】
重複排除機能やデータ圧縮機能をサポートするストレージシステムでは、同一のデータについては１つのデータに限って、記憶領域が割り当てられる。また、記憶領域が割り当てられたデータは、圧縮されて記憶領域に記憶される。
【００１４】
図１に示すように、重複排除は、固定サイズ（例えば、４キロバイト（ＫＢ））で行なわれ、４ＫＢ毎に同一データが同一スロットで管理されてよい。
【００１５】
ユーザから認識されるボリューム（「ユーザボリューム」と称してもよい。）のＬＢＡに対して４ＫＢごとにスロットを示すテーブルが保持されて、重複排除の制御が行なわれてもよい。
【００１６】
図２は、関連例におけるデータ転送処理を説明するブロック図である。
【００１７】
図２に示す例では、ストレージシステム６００において、コピー元ストレージ装置６のボリューム６１から、コピー先ストレージ装置７のボリューム７１に対して、リモート回線を介したデータ転送が行なわれる。
【００１８】
コピー元ストレージ装置６とコピー先ストレージ装置７とが共に重複排除及びデータ圧縮をサポートしているストレージシステム６００において、ストレージ装置６，７間のリモートコピーでデータを転送する場合がある。このような場合に、ストレージ装置６，７間のデータ転送量が多くなり、コピー処理時間の増大や回線容量の圧迫が生じるおそれがある。
【００１９】
例えば、重複データの管理が各ストレージ装置６，７内に閉じて行なわれている場合には、これから転送するデータと同一のデータがコピー先ストレージ装置７に存在するか否かは、コピー元ストレージ装置６によって判断することができない。従って、重複するデータが存在する場合においても同一のデータを転送し、コピー先ストレージ装置７において重複判定を行なって同一のデータに対する重複排除が行なわれる。
【００２０】
そこで、同一のデータの転送を回避するため、最初にデータのハッシュ値を転送してコピー先ストレージ装置７で同一のデータが存在するかをチェックして結果を受信し、同一のデータが存在しない場合に限って実データを転送する手法が想定される。
【００２１】
しかしながら、このような手法では、ハッシュ値の送信と実データの送信とで通信を２回行なうこととなり、通信回数が多くなり、レスポンスタイムが増加するおそれがある。
【００２２】
図３は、関連例におけるコピー元ストレージ装置６でのデータ管理を説明するテーブルである。また、図４は、関連例におけるコピー先ストレージ装置７でのデータ管理を説明するテーブルである。
【００２３】
例えば２００ＫＢの圧縮されたデータを転送する場合には、連続した２００ＫＢのデータのうち、どの圧縮データがどの４ＫＢのデータに対応するかが分からないため、コピー先ストレージ装置７側でどのＬＢＡに対するデータなのかが区別できない。
【００２４】
図３に示すように、ＬＢＡ＝０ｘ００００〜０ｘ００１Ｆのデータ（符号Ａ１参照）を圧縮した状態で転送する場合に、ＡＡ（Ｓｌｏｔ１００），ＥＥ（Ｓｌｏｔ１０４），ＤＤ（Ｓｌｏｔ１０３）及びＦＦ（Ｓｌｏｔ１０５）の合計１５ブロックが連続して転送される（符号Ａ２〜Ａ５参照）。
【００２５】
コピー先ストレージ装置７では、転送されたデータは圧縮前の４ＫＢ毎に管理されるため、それぞれのデータのサイズを認識しなければデータ管理ができない。
【００２６】
例えば、図４に示すように、コピー先ストレージ装置７は、ＬＢＡ＝０ｘ００００が先頭から６ブロックであることを認識してデータを格納する（符号Ｂ１及びＢ２参照）。
【００２７】
ただし、Small Computer System Interface（ＳＣＳＩ）コマンドとしては全体の総転送長として１５ブロックが指定されるため（符号Ｂ２〜Ｂ５参照）、コピー先ストレージ装置７において各データのサイズを認識することができない。
【００２８】
そこで、コピー元ストレージ装置６において圧縮データを解凍してから転送し、コピー先ストレージ装置７において圧縮してデータを格納することとなる。
【００２９】
〔Ｂ〕実施形態の一例
〔Ｂ−１〕システム構成例
図５は、実施例としてのストレージシステム１００のハードウェア構成を模式的に示すブロック図である。
【００３０】
ストレージシステム１００は、例示的に、コピー元ストレージ装置１，コピー先ストレージ装置２及びホスト３を備える。ホスト３とコピー元ストレージ装置１とは通信可能に接続されとり、コピー元ストレージ装置１とコピー先ストレージ装置２とも通信可能に接続されている。
【００３１】
ホスト３は、例えば、サーバ機能を備えたコンピュータである。図５に示す例においてはストレージシステム１００が１つのホスト３を備えることとしているが、ストレージシステム１００が備えるホスト３の数は種々変更することができる。
【００３２】
コピー元ストレージ装置１は、コピー元データ処理装置の一例である。コピー元ストレージ装置１は、後述する複数の記憶装置１６を搭載し、ホスト３に対して記憶領域を提供する装置であり、例えばRedundant Arrays of Inexpensive Disks（ＲＡＩＤ）を用いて複数の記憶装置１６にデータを分散又は冗長化した状態で保存する。コピー元ストレージ装置１は、Controller Module（ＣＭ）１０及びDisk Enclosure（ＤＥ）１６０を備える。
【００３３】
ＤＥ１６０は、冗長化のためにＣＭ１０と２つのアクセスパスで通信可能に接続されてよく、複数の記憶装置１６を備える。
【００３４】
記憶装置１６は、例示的に、データを読み書き可能に記憶する装置であり、例えば、Hard Disk Drive（ＨＤＤ）やSolid State Drive（ＳＳＤ），Storage Class Memory（ＳＣＭ）が用いられてよい。
【００３５】
ＣＭ１０は、種々の制御を行なうストレージ制御装置の一例であり、ホスト３からのストレージアクセス要求（「アクセス制御信号」や「ホストＩ／Ｏ」と称してもよい。）に従って、各種制御を行なう。ＣＭ１０は、Central Processing Unit（ＣＰＵ）１１，メモリ１２，Remote Adaptor（ＲＡ）１３，複数（図示する例では２つ）のDevice Adaptor（ＤＡ）１４及びCommunication Adaptor（ＣＡ）１５を備える。
【００３６】
ＲＡ１３は、コピー元ストレージ装置１とコピー先ストレージ装置２との間のインタフェースを制御する。
【００３７】
ＤＡ１４は、ＣＭ１０と記憶装置１６とを通信可能に接続するためのインタフェースであり、例えばFibre Channel（ＦＣ）アダプタである。
【００３８】
ＣＡ１５は、ホスト３をコピー元ストレージ装置１と通信可能に接続するインタフェースである。
【００３９】
メモリ１２は、例示的に、Read Only Memory（ＲＯＭ）及びRandom Access Memory（ＲＡＭ）を含む記憶装置である。メモリ１２のＲＯＭには、Basic Input/Output System（ＢＩＯＳ）等のプログラムが書き込まれてよい。メモリ１２のソフトウェアプログラムは、ＣＰＵ１１に適宜に読み込まれて実行されてよい。また、メモリ１２のＲＡＭは、一次記録メモリあるいはワーキングメモリとして利用されてよい。
【００４０】
図６は、図５に示したコピー元ストレージ装置１における機能構成を模式的に示すブロック図である。
【００４１】
ＣＰＵ１１は、例示的に、種々の制御や演算を行なう処理装置であり、メモリ１２に格納されたOperating System（ＯＳ）やプログラムを実行することにより、種々の機能を実現する。すなわち、ＣＰＵ１１は、図６に示すように、第１送信部１１１，第１受信部１１２及び第１判定部１１３として機能してよい。
【００４２】
なお、これらの第１送信部１１１，第１受信部１１２及び第１判定部１１３としての機能を実現するためのプログラムは、例えばフレキシブルディスク、ＣＤ（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ等）、ＤＶＤ（ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−Ｒ、ＤＶＤ＋Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、ＨＤ  ＤＶＤ等）、ブルーレイディスク、磁気ディスク、光ディスク、光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供されてよい。そして、コンピュータ（本実施形態ではＣＰＵ１１）は上述した記録媒体から図示しない読取装置を介してプログラムを読み取って内部記録装置または外部記録装置に転送し格納して用いてよい。また、プログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、記憶装置から通信経路を介してコンピュータに提供してもよい。
【００４３】
第１送信部１１１，第１受信部１１２及び第１判定部１１３としての機能を実現する際には、内部記憶装置（本実施形態ではメモリ１２）に格納されたプログラムがコンピュータ（本実施形態ではＣＰＵ１１）によって実行されてよい。また、記録媒体に記録されたプログラムをコンピュータが読み取って実行してもよい。
【００４４】
ＣＰＵ１１は、例示的に、コピー元ストレージ装置１全体の動作を制御する。コピー元ストレージ装置１全体の動作を制御するための装置は、ＣＰＵ１１に限定されず、例えば、ＭＰＵやＤＳＰ，ＡＳＩＣ，ＰＬＤ，ＦＰＧＡのいずれか１つであってもよい。また、コピー元ストレージ装置１全体の動作を制御するための装置は、ＣＰＵ，ＭＰＵ，ＤＳＰ，ＡＳＩＣ，ＰＬＤ及びＦＰＧＡのうちの２種類以上の組み合わせであってもよい。なお、ＭＰＵはMicro Processing Unitの略称であり、ＤＳＰはDigital Signal Processorの略称であり、ＡＳＩＣはApplication Specific Integrated Circuitの略称である。また、ＰＬＤはProgrammable Logic Deviceの略称であり、ＦＰＧＡはField Programmable Gate Arrayの略称である。
【００４５】
第１送信部１１１は、コピー先ストレージ装置２に対して、実データ及びハッシュ値を送信する。
【００４６】
実データは、コピー元ストレージ装置１とコピー先ストレージ装置２との間において圧縮されて転送されるデータである圧縮データと、圧縮前の原本データとの両方を含んでよい。
【００４７】
第１受信部１１２は、第１送信部１１１によって送信されたハッシュ値に対応する実データがコピー先ストレージ装置２に存在するか否かを示すセンスデータを、コピー先ストレージ装置２から受信する。
【００４８】
第１判定部１１３は、第１受信部１１２によって受信されたセンスデータに応じて、第１送信部１１１によって送信させる実データとハッシュ値との組み合わせを判定する。
【００４９】
なお、第１送信部１１１，第１受信部１１２及び第１判定部１１３としての機能の詳細は、図８〜図１０等を用いて後述する。
【００５０】
コピー先ストレージ装置２は、コピー先データ処理装置の一例である。図５に示すように、コピー先ストレージ装置２は、後述する複数の記憶装置２６を搭載し、例えばＲＡＩＤを用いて複数の記憶装置２６にデータを分散又は冗長化した状態で保存する。コピー先ストレージ装置２は、ＣＭ２０及びＤＥ２６０を備える。
【００５１】
ＤＥ２６０は、冗長化のためにＣＭ２０と２つのアクセスパスで通信可能に接続されてよく、複数の記憶装置２６を備える。
【００５２】
記憶装置２６は、例示的に、データを読み書き可能に記憶する装置であり、例えば、ＨＤＤやＳＳＤ，ＳＣＭが用いられてよい。
【００５３】
ＣＭ２０は、種々の制御を行なうストレージ制御装置の一例であり、コピー元ストレージ装置１を介したホスト３からのストレージアクセス要求（「アクセス制御信号」や「ホストＩ／Ｏ」と称してもよい。）に従って、各種制御を行なう。ＣＭ２０は、ＣＰＵ２１，メモリ２２，ＲＡ２３及び複数（図示する例では２つ）のＤＡ２４を備える。
【００５４】
ＲＡ２３は、コピー元ストレージ装置１とコピー先ストレージ装置２との間のインタフェースを制御する。
【００５５】
ＤＡ２４は、ＣＭ２０と記憶装置２６とを通信可能に接続するためのインタフェースであり、例えばＦＣアダプタである。
【００５６】
メモリ２２は、例示的に、ＲＯＭ及びＲＡＭを含む記憶装置である。メモリ２２のＲＯＭには、ＢＩＯＳ等のプログラムが書き込まれてよい。メモリ２２のソフトウェアプログラムは、ＣＰＵ２１に適宜に読み込まれて実行されてよい。また、メモリ２２のＲＡＭは、一次記録メモリあるいはワーキングメモリとして利用されてよい。
【００５７】
図７は、図５に示したコピー先ストレージ装置２における機能構成を模式的に示すブロック図である。
【００５８】
ＣＰＵ２１は、例示的に、種々の制御や演算を行なう処理装置であり、メモリ２２に格納されたＯＳやプログラムを実行することにより、種々の機能を実現する。すなわち、ＣＰＵ２１は、図７に示すように、第２受信部２１１，第２判定部２１２及び第２送信部２１３として機能してよい。
【００５９】
なお、これらの第２受信部２１１，第２判定部２１２及び第２送信部２１３としての機能を実現するためのプログラムは、例えばフレキシブルディスク、ＣＤ（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ等）、ＤＶＤ（ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−Ｒ、ＤＶＤ＋Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、ＨＤ  ＤＶＤ等）、ブルーレイディスク、磁気ディスク、光ディスク、光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供されてよい。そして、コンピュータ（本実施形態ではＣＰＵ２１）は上述した記録媒体から図示しない読取装置を介してプログラムを読み取って内部記録装置または外部記録装置に転送し格納して用いてよい。また、プログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、記憶装置から通信経路を介してコンピュータに提供してもよい。
【００６０】
第２受信部２１１，第２判定部２１２及び第２送信部２１３としての機能を実現する際には、内部記憶装置（本実施形態ではメモリ２２）に格納されたプログラムがコンピュータ（本実施形態ではＣＰＵ２１）によって実行されてよい。また、記録媒体に記録されたプログラムをコンピュータが読み取って実行してもよい。
【００６１】
ＣＰＵ２１は、例示的に、コピー先ストレージ装置２全体の動作を制御する。コピー先ストレージ装置２全体の動作を制御するための装置は、ＣＰＵ２１に限定されず、例えば、ＭＰＵやＤＳＰ，ＡＳＩＣ，ＰＬＤ，ＦＰＧＡのいずれか１つであってもよい。また、コピー先ストレージ装置２全体の動作を制御するための装置は、ＣＰＵ，ＭＰＵ，ＤＳＰ，ＡＳＩＣ，ＰＬＤ及びＦＰＧＡのうちの２種類以上の組み合わせであってもよい。
【００６２】
第２受信部２１１は、コピー元ストレージ装置１から送信された実データ及びハッシュ値を受信する。
【００６３】
第２判定部２１２は、第２受信部２１１によって受信されたハッシュ値に対応する実データがコピー先ストレージ装置２において記憶されているか否かを判定する。
【００６４】
第２送信部２１３は、第２判定部２１２による判定結果に応じて、実データがコピー先ストレージ装置２において記憶されているか否かを示すセンスデータを、コピー元ストレージ装置１に送信する。
【００６５】
コピー先ストレージ装置２は、コピー元ストレージ装置１において圧縮されたデータを受信し、圧縮されたデータを解凍して記憶してよい。また、コピー先ストレージ装置２は、記憶するデータに対して、重複排除を実施してよい。
【００６６】
コピー先ストレージ装置２は、データの重複が発生しているか否かについて、書き込み対象のデータのハッシュ値を計算し、計算したハッシュ値がハッシュテーブル（図１１を用いて後述）に登録されているかを判定する。すなわち、コピー先ストレージ装置２は、ハッシュ値を転送データとして受信するため、ハッシュテーブルの参照により、ハッシュ値が管理されているかを判定する。
【００６７】
コピー先ストレージ装置２は、データの重複が発生していない（別言すれば、「ハッシュミスが発生している」）場合に、ハッシュ値を計算してハッシュテーブルに登録する。そして、コピー先ストレージ装置２は、受信したデータを圧縮された状態において記憶装置２６に書き込んでもよいし、受信したデータを解凍してから記憶装置２６に書き込んでもよい。
【００６８】
コピー先ストレージ装置２は、データの重複（別言すれば、「ハッシュヒット」）が発生している場合には、記憶装置２６に対する実データの書き込みを行なわない。
【００６９】
コピー先ストレージ装置２は、実データを受信した場合には、対応するハッシュ値に関連付けて、実データを記憶装置２６に書き込む。
【００７０】
なお、第２受信部２１１，第２判定部２１２及び第２送信部２１３としての機能の詳細は、図８〜図１０等を用いて後述する。
【００７１】
図８〜図１０は、図５に示したストレージシステム１００におけるデータ転送処理を説明する図である。
【００７２】
図８に示すように、コピー元ストレージ装置１から送信されるデータには、メタデータ（ｍｅｔａ）が付加される。ストレージシステム１００内においてメタデータ等の内容を互いに認識して制御が行なわれるため、コピー元ストレージ装置１とコピー先ストレージ装置２とは同一ベンダによって提供される。
【００７３】
また、コピーの対応関係（別言すれば、「コピーセッション」）の作成の際に、コピー先ストレージ装置２が重複排除及びデータ圧縮をサポートしているかが確認され、コピー元ストレージ装置１においてサポートの有無が記憶されてよい。コピー元ストレージ装置１の第１送信部１１１は、コピー先ストレージ装置２が重複排除とデータ圧縮との少なくとも一方をサポートしていない場合には、データ圧縮前の実データである原本データを転送データとして送信する。
【００７４】
データの初期コピー及び差分データのコピーでは、ボリュームの先頭から末尾まで未コピーデータをコピーするため、転送するデータ（別言すれば、「後続のデータ」）は、コピー元ストレージ装置１で認識できる。
【００７５】
重複データの転送を回避するために、データのハッシュ値を一度転送してハッシュミス（別言すれば、「コピー先ストレージ装置２に該当のデータが存在しない状態」）の場合に限って、実データを転送する手法が想定される。しかしながら、このような手法では、実データを含まないハッシュ値に限った転送のための１往復分の通信が無駄に実施されることとなり、レスポンスの遅延が生じるおそれがある。
【００７６】
そこで、本実施例においては、コピー元ストレージ装置１では、転送データの先頭にメタデータが付加され、メタデータの中に制御情報が設定される。コピー元ストレージ装置１は、実データと共に、trial writeとして、後続の転送データのハッシュ値を先行してコピー先ストレージ装置２に送信する。そして、trial writeによってhash hitした場合に、対応するデータの書き込みが完了となる。コピー先ストレージ装置２からコピー元ストレージ装置１へのhash hitの有無の通知は、ベンダユニークセンス（別言すれば、「センスデータ」）によって応答される。なお、センスデータは７２バイトと小さいため、センスデータの応答によるオーバヘッドは無視できる。
【００７７】
図８に示すように、メタデータには、ＬＢＡ，ｆｌａｇ及びｓｉｚｅが登録される。ＬＢＡは、各ブロックの先頭アドレスを示す。ｆｌａｇは、各ブロックのハッシュ値（ｈａｓｈ）と実データ（ｄａｔａ）の別を示す。ｓｉｚｅは、各ブロックのデータサイズを示す。
【００７８】
すなわち、第１送信部１１１は、転送データにおける各論理アドレスのデータについての、実データとハッシュ値との種別、論理アドレス、及び、データサイズに関する情報を、当該転送データに含める。
【００７９】
図８に示すように、初回のデータ転送の際には、コピー元ストレージ装置１においてハッシュのヒット／ミスの情報を有していないため、コピー元ストレージ装置１の第１送信部１１１は、ハッシュ値に限ってコピー先ストレージ装置２へ転送する（符号Ｃ１参照）。
【００８０】
コピー元ストレージ装置１からコピー先ストレージ装置２への初期コピーが実施される際に、コピー先ストレージ装置２のボリューム単位での重複排除が行なわれる場合には、初期コピーにおける転送データは実データとなる。一方、コピー元ストレージ装置１からコピー先ストレージ装置２への初期コピーが実施される際に、コピー先ストレージ装置２の単位での重複排除が行なわれる場合には、初期コピーにおける転送データは、実データでもよいし、ハッシュ値でもよい。
【００８１】
コピー先ストレージ装置２の第２受信部２１１は、コピー元ストレージ装置１から送信されたハッシュ値を受信する。
【００８２】
コピー先ストレージ装置２の第２判定部２１２は、Hash100, 101, 102, 180, 105, 125, 103に対してコピー先ストレージ装置２内に実データが存在するかをチェックし、存在する場合にはハッシュ値に対応するデータが書き込まれたとして処理する（符号Ｃ２参照）。図８に示す例では、Hash100, 101, 102, 125, 103がhit writeとして処理されている。
【００８３】
コピー先ストレージ装置２の第２送信部２１３は、ハッシュのヒット／ミスの判定結果をセンスデータ内のビットマップとしてコピー元ストレージ装置１へ応答する（符号Ｃ３参照）。図８に示す例では、第１，第２，第３，第６，第７ビットがハッシュヒットとして、センスデータに格納されている。
【００８４】
図９において、２回目のデータ転送では、コピー元ストレージ装置１の第１判定部１１３は、転送するハッシュ値及び実データを、コピー先ストレージ装置２から前回受信したセンスデータに応じて判定する。
【００８５】
図９に示すように、コピー元ストレージ装置１の第１送信部１１１は、初回のデータ転送においてハッシュヒットしなかったLBA=0x0018, 0x0020について実データを転送する。また、第１送信部１１１は、後続のブロックであるLBA=0x0038, 0x0040, 0x0048, 0x0050のハッシュ値を混在して転送する（符号Ｄ１参照）。
【００８６】
すなわち、第１送信部１１１は、コピー先ストレージ装置２において対応するハッシュ値が存在しない再転送対象の論理アドレスの実データと、再転送対象の論理アドレスの後続の論理アドレスに対応するハッシュ値とを組み合わせた転送データを生成する。そして、第１送信部１１１は、生成した転送データをコピー先ストレージ装置２に送信する。
【００８７】
また、第１送信部１１１は、転送対象の論理アドレスに対応するハッシュ値をコピー先ストレージ装置２に送信する。そして、第１送信部１１１は、コピー先ストレージ装置２において対応するハッシュ値が存在しないことをコピー先ストレージ装置２から応答された場合に、転送対象の論理アドレスの実データを含む転送データを生成して、再転送対象とする。
【００８８】
コピー先ストレージ装置２の第２受信部２１１は、コピー元ストレージ装置１からの実データ及びハッシュ値を受信する。
【００８９】
コピー先ストレージ装置２の第２判定部２１２は、メタデータを参照して、各ブロックのｆｌａｇによる実データ及びハッシュ値の別を判定する。そして、第２判定部２１２は、実データについてはnew writeとして書き込み処理を行なうと共に、ハッシュヒットしたハッシュ値についてはhit writeとして処理する（符号Ｄ２参照）。図示する例では、data 180, 105がnew writeとして処理されていると共に、Hash 100, 161がhit writeとして処理されている。
【００９０】
コピー先ストレージ装置２の第２送信部２１３は、ハッシュのヒット／ミスの判定結果に基づき、センスデータを送信する（符号Ｄ３参照）。図示する例では、センスデータの第２，第４ビットがハッシュヒットを示している。
【００９１】
図１０において、ｎ（ｎ≧２）回目のデータ転送では、コピー元ストレージ装置１の第１判定部１１３は、転送するハッシュ値及び実データを、コピー先ストレージ装置２から前回受信したセンスデータに応じて判定する。
【００９２】
図１０に示すように、コピー元ストレージ装置１の第１送信部１１１は、ｎ回目のデータ転送においてハッシュヒットしなかったLBA=0x0028, 0x0038について実データを転送する。一方、第１送信部１１１は、後続のブロックであるLBA=0x0058, 0x0060, 0x0068, 0x0070のハッシュ値を混在して転送する（符号Ｅ１参照）。
【００９３】
コピー先ストレージ装置２の第２受信部２１１は、コピー元ストレージ装置１からの実データ及びハッシュ値を受信する。
【００９４】
コピー先ストレージ装置２の第２判定部２１２は、メタデータを参照して、各ブロックのｆｌａｇによる実データ及びハッシュ値の別を判定する。そして、第２判定部２１２は、実データについてはnew writeとして書き込み処理を行なうと共に、ハッシュヒットしたハッシュ値についてはhit writeとして処理する（符号Ｅ２参照）。図示する例では、data 106, 177がnew writeとして処理されていると共に、Hash 100, 199, 101がhit writeとして処理されている。
【００９５】
コピー先ストレージ装置２の第２送信部２１３は、ハッシュのヒット／ミスの判定結果に基づき、センスデータを送信する（符号Ｅ３参照）。図示する例では、センスデータの第１，第２，第３ビットがハッシュヒットを示している。
【００９６】
実データとハッシュ値との比率としては、例えば、ハッシュ値を５１２個の固定長として、余った領域に実データを格納する。ＳＨＡ１値をハッシュ値として使用する場合には、ハッシュ値は２０バイト×５１２個＝１０ＫＢの固定長としてよい。
【００９７】
圧縮データが転送される場合には、コピー先ストレージ装置２では、重複制御のためにハッシュ値が生成されて管理される。ハッシュ値は圧縮前のデータから生成されるため、圧縮データからハッシュ値を生成するには圧縮データを解凍して圧縮前データからハッシュ値を生成することとなり、コピー先ストレージ装置２での性能低下が生じるおそれがある。
【００９８】
そこで、実施例におけるストレージシステム１００では、コピー先ストレージ装置２でハッシュ値を保持する手法、又は、コピー先ストレージ装置２でハッシュ値を保持しない手法が実施される。
【００９９】
図１１は、図５に示したストレージシステム１００におけるＬＢＡとハッシュ値との関係の一例を示すテーブルである。また、図１２は、図５に示したストレージシステム１００における転送データの第１の例を示す図である。
【０１００】
コピー先ストレージ装置２でハッシュ値を保持する手法では、trial writeにより最初にハッシュ値が転送され、重複しない場合に限り、その後の圧縮データが転送される。
【０１０１】
図１１に示すように、コピー先ストレージ装置２において、ＬＢＡとハッシュ値との組み合わせが保持される。図示するテーブルは、図８〜図１０にそれぞれ示した１回の転送データの転送に係るハッシュ値を記憶するサイズを有していればよく、あふれた場合には古い値が削除されてよい。
【０１０２】
図１２に示すように、コピー元ストレージ装置１からコピー先ストレージ装置２に転送されるデータは、メタデータと実データとハッシュ値とを有する。転送データにおいて、複数の実データは連続して配置されると共に、複数のハッシュ値も連続して配置されてよい。
【０１０３】
すなわち、第１送信部１１１は、コピー先ストレージ装置２に記憶されている実データに対応するハッシュ値がコピー先ストレージ装置２で管理されている場合には、転送データに含まれる実データに対応するハッシュ値を再転送対象としない。
【０１０４】
図１３は、図５に示したストレージシステム１００における転送データの第２の例を示す図である。
【０１０５】
コピー先ストレージ装置２でハッシュ値を保持しない手法では、コピー元ストレージ装置１において圧縮データに対応するハッシュ値が管理される。
【０１０６】
図１３に示すように、コピー元ストレージ装置１は、圧縮データの直前に対応するハッシュで値を付加して、コピー先ストレージ装置２に転送する。
【０１０７】
すなわち、第１送信部１１１は、コピー先ストレージ装置２に記憶されている実データに対応するハッシュ値がコピー先ストレージ装置２で管理されていない場合には、転送データに含まれる実データに対応するハッシュ値を再転送対象とする。そして、第１送信部１１１は、再転送対象として決定された１又は複数の論理アドレスの実データと、後続の転送対象の複数の論理アドレスの各ハッシュ値とで、転送データを生成する。
【０１０８】
コピー先ストレージ装置２は、転送データに含まれるハッシュ値を利用して重複排除処理を実施する。
【０１０９】
コピー先ストレージ装置２でハッシュ値を保持しない手法では、ハッシュ値を保持する手法と比較して、リモート回線に流れるデータ量は若干増加するが、コピー先ストレージ装置２においてハッシュ値に関するテーブルを保持しなくてもよい。
【０１１０】
図１４は、関連例におけるデータ転送処理と実施例におけるデータ転送処理とを比較するテーブルである。
【０１１１】
関連例において、１組のデータを転送するために、４回の通信が実施される。１回目の通信は、コピー元ストレージ装置６からコピー先ストレージ装置７へのハッシュ値（ＨＡＳＨ）の送信である。２回目の通信は、コピー先ストレージ装置７からコピー元ストレージ装置６へのレスポンス（ＲＥＳＰＯＮＳＥ）である。３回目の通信は、コピー元ストレージ装置６からコピー先ストレージ装置７への実データ（ＤＡＴＡ）の送信である。４回目の通信は、コピー先ストレージ装置７からコピー元ストレージ装置６へのレスポンス（ＲＥＳＰＯＮＳＥ）である。
【０１１２】
すなわち、関連例において、３組のデータを転送するためには、合計１２回の通信が実施される。
【０１１３】
一方、実施例においては、１組のデータを転送するために、２回の通信が実施される。２回の通信は、コピー元ストレージ装置１からコピー先ストレージ装置２へのハッシュ値及び実データ（ＨＡＳＨ＋ＤＡＴＡ）の送信と、コピー先ストレージ装置２からコピー元ストレージ装置１へのレスポンス（ＲＥＳＰＯＮＳＥ）とである。
【０１１４】
すなわち、実施例において、３組のデータを転送するためには、合計６回の通信が実施されればよい。
【０１１５】
図１５は、図５に示したストレージシステム１００におけるメタデータを付加する場合のＣＤＢの転送処理を説明する図である。
【０１１６】
リモート転送の際には、ＣＤＢによってコマンドを送信する。図１５に示すように、ＣＤＢには、メタデータを示すメタフラグが追加される（符号Ｆ１参照）。転送データにメタデータが存在する場合にはメタフラグ＝０１が設定されてよい。これにより、メタデータが存在するデータ転送とメタデータが存在しないデータ転送とを区別できる。
【０１１７】
メタデータ内にコピー先ＬＢＡの情報が格納されるため、ＣＤＢ内にはＬＢＡの情報が格納されなくてよい。
【０１１８】
ＣＤＢには、転送ブロックのサイズ（図示する例では１６ブロック）も登録される（符号Ｆ２参照）。
【０１１９】
コピー元ストレージ装置１からコピー先ストレージ装置２へのＣＤＢのライトに応じて、コピー先ストレージ装置２からコピー元ストレージ装置１へ転送データの転送要求が発行される。これにより、コピー元ストレージ装置１からコピー先ストレージ装置２へ転送データが送信される（符号Ｆ３参照）。転送データは、メタデータが１ブロックであり、圧縮データとハッシュ値とが１５ブロックである。
【０１２０】
転送データのメタデータには、各ブロックの先頭ＬＢＡ，ｆｌａｇ及びｓｉｚｅが登録される（符号Ｆ４参照）。これにより、コピー先ストレージ装置２は、各ブロックのサイズを認識でき、連続したデータであっても、１回でまとめて転送できる。
【０１２１】
また、メタデータが小さい場合には、ＣＤＢ内にメタデータが格納されてもよい。
【０１２２】
図１６は、図５に示したストレージシステム１００におけるメタデータを付加しない場合のＣＤＢの転送処理を説明する図である。
【０１２３】
図１６に示すように、ＣＤＢには、メタデータを示すメタフラグが追加される（符号Ｇ１参照）。転送データにメタデータが存在しない場合にはメタフラグ＝００が設定されてよい。これにより、メタデータが存在するデータ転送とメタデータが存在しないデータ転送とを区別できる。
【０１２４】
ＣＤＢには、転送ブロックのサイズ（図示する例では１６ブロック）も登録される（符号Ｇ２参照）。
【０１２５】
コピー元ストレージ装置１からコピー先ストレージ装置２へのＣＤＢのライトに応じて、コピー先ストレージ装置２からコピー元ストレージ装置１へ転送データの転送要求が発行される。これにより、コピー元ストレージ装置１からコピー先ストレージ装置２へ転送データが送信される（符号Ｇ３参照）。転送データは、実データが１６ブロックである。
【０１２６】
図１７は、図５に示したストレージシステム１００におけるデータ圧縮処理及びデータ解凍処理を説明する図である。
【０１２７】
ディスク上においてデータはブロック単位（例えば、５１２バイト単位）で格納されるため、例えば４ＫＢの圧縮データは５１２バイトのアラインメントに切り上げて格納される。実データが存在しない領域には、ゴミデータがパディングされる。
【０１２８】
リモート転送の際には、ゴミデータが削除されて、一時バッファ上に有効な実データを詰めて転送されてよい。これにより、コピー元ストレージ装置１とコピー先ストレージ装置２との間における転送量を削減できる。
【０１２９】
図１７に示すように、コピー元ストレージ装置１において、各データは５１２バイトの整数倍のサイズでディスクから読み出される（符号Ｈ１参照）。図示されているデータにおいて、網掛け部は実データを示し、空白部はゴミデータを示す。
【０１３０】
コピー元ストレージ装置１は、実データを詰め合わせて一時バッファに格納し、メタデータには元データのサイズを設定する（符号Ｈ２参照）。そして、コピー元ストレージ装置１は、コピー先ストレージ装置２に対して、リモート転送を実施する。
【０１３１】
コピー先ストレージ装置２は、一時バッファにより、リモート転送されたデータを受信する（符号Ｈ３参照）。
【０１３２】
コピー先ストレージ装置２は、メタデータに登録されている元データのサイズを参照して、５１２バイトのアラインメントに合せてゴミデータをパディングする（符号Ｈ４参照）。そして、コピー先ストレージ装置２は、パディングしたデータをディスクへ書き込む。
【０１３３】
〔Ｂ−２〕動作例
図５に示したコピー元ストレージ装置１におけるデータ転送処理の第１の例を、図１８に示すフローチャート（ステップＳ１〜Ｓ１１）に従って説明する。コピー元ストレージ装置１におけるデータ転送処理の第１の例では、コピー先ストレージ装置２でハッシュ値を記憶する場合におけるデータ転送処理を説明する。
【０１３４】
コピー元ストレージ装置１の第１送信部１１１は、データコピーを開始する（ステップＳ１）。
【０１３５】
第１送信部１１１は、コピー位置のＬＢＡをLogical Unit Number（ＬＵＮ）の先頭に設定する（ステップＳ２）。
【０１３６】
第１送信部１１１は、コピー元の圧縮データをディスクから読み込む（ステップＳ３）。ここで、コピー先ストレージ装置２にコピー済みの領域については、スキップされる。
【０１３７】
第１送信部１１１は、読み込んだ５１２バイト単位の圧縮データのうち、有効データをメモリ１２上の一時バッファに連続して詰めて書き込む（ステップＳ４）。ここで、有効データのハッシュ値は、コピー先ストレージ装置２において記憶されているため、一時バッファには書き込まれない。また、コピー先ストレージ装置２にコピー済みの領域については、スキップされる。
【０１３８】
第１送信部１１１は、後続データのハッシュ値を読み込み、圧縮データの末尾に続けて書き込む（ステップＳ５）。
【０１３９】
第１送信部１１１は、一時データの先頭にメタデータを付加し、コピー先ストレージ装置２へ転送する（ステップＳ６）。
【０１４０】
コピー元ストレージ装置１の第１受信部１１２は、コピー先ストレージ装置２からの応答としてセンスデータを受信する（ステップＳ７）。
【０１４１】
コピー元ストレージ装置１の第１判定部１１３は、応答されたセンスデータのビットをチェックする（ステップＳ８）。
【０１４２】
第１判定部１１３は、ハッシュヒット状態のデータをコピー済み状態に設定する（ステップＳ９）。
【０１４３】
第１送信部１１１は、コピー位置のＬＢＡを次に進める（ステップＳ１０）。
【０１４４】
第１送信部１１１は、コピー位置のＬＢＡが最終ＬＢＡであるかを判定する（ステップＳ１１）。
【０１４５】
最終ＬＢＡでない場合には（ステップＳ１１のＮｏルート参照）、処理はステップＳ３へ戻る。
【０１４６】
一方、最終ＬＢＡである場合には（ステップＳ１１のＹｅｓルート参照）、コピー元ストレージ装置１におけるデータ転送処理は終了する。
【０１４７】
次に、図５に示したコピー先ストレージ装置２におけるデータ転送処理の第１の例を、図１９及び図２０に示すフローチャート（ステップＳ２１〜Ｓ３９）に従って説明する。コピー先ストレージ装置２におけるデータ転送処理の第１の例では、コピー先ストレージ装置２でハッシュ値を記憶する場合におけるデータ転送処理を説明する。なお、図１９にはステップＳ２１〜Ｓ３６における処理を示し、図２０にはステップＳ３７〜Ｓ３９における処理を示す。
【０１４８】
コピー先ストレージ装置２の第２受信部２１１は、コピー元ストレージ装置１からデータを受信する（ステップＳ２１）。
【０１４９】
コピー先ストレージ装置２の第２判定部２１２は、応答データのセンスビットマップを全ビット０に初期化する（ステップＳ２２）。
【０１５０】
第２判定部２１２は、受信データの先頭にあるメタデータをチェックする（ステップＳ２３）。
【０１５１】
第２判定部２１２は、受信データのうち最初のデータを選択する（ステップＳ２４）。
【０１５２】
第２判定部２１２は、選択したデータが圧縮データであるかを判定する（ステップＳ２５）。
【０１５３】
圧縮データである場合には（ステップＳ２５のＹｅｓルート参照）、第２判定部２１２は、圧縮データを選択する（ステップＳ２６）。
【０１５４】
第２判定部２１２は、一時バッファのテーブルを検索し、選択した圧縮データに対応する対象ＬＢＡが存在するかをチェックする（ステップＳ２７）。
【０１５５】
第２判定部２１２は、対象ＬＢＡが存在するかを判定する（ステップＳ２８）。
【０１５６】
対象ＬＢＡが存在する場合には（ステップＳ２８のＹｅｓルート参照）、処理はステップＳ３１へ進む。
【０１５７】
一方、対象ＬＢＡが存在しない場合には（ステップＳ２８のＮｏルート参照）、第２判定部２１２は、圧縮データをディスクへ書き込む（ステップＳ２９）。
【０１５８】
第２判定部２１２は、圧縮データを解凍し、解凍データからハッシュ値を生成する（ステップＳ３０）。
【０１５９】
第２判定部２１２は、生成したハッシュ値を使用して、対象データを書き込み済みに設定する（ステップＳ３１）。そして、処理は図２０のステップＳ３７へ進む。
【０１６０】
ステップＳ２５において、選択したデータが圧縮データでない場合には（ステップＳ２５のＮｏルート参照）、第２判定部２１２は、ハッシュ値を選択する（ステップＳ３２）。
【０１６１】
第２判定部２１２は、ハッシュデータに対して重複判定を行なう（ステップＳ３３）。
【０１６２】
第２判定部２１２は、重複するハッシュ値が存在するかを判定する（ステップＳ３４）。
【０１６３】
重複するハッシュ値が存在する場合には（ステップＳ３４のＹｅｓルート参照）、第２判定部２１２は、制御テーブルを更新して対象データを書き込み済みに設定し、対応するセンスビットマップをＯＮにする（ステップＳ３５）。そして、処理は図２０のステップＳ３７へ進む。
【０１６４】
一方、重複するハッシュ値が存在しない場合には（ステップＳ３４のＮｏルート参照）、第２判定部２１２は、ＬＢＡとハッシュ値とのセットを一時バッファに記憶させる（ステップＳ３６）。そして、処理は図２０のステップＳ３７へ進む。
【０１６５】
図２０において、第２判定部２１２は、受信データにおいて次のデータがあるかを判定する（ステップＳ３７）。
【０１６６】
次のデータがある場合には（ステップＳ３７のＹｅｓルート参照）、第２判定部２１２は、次のデータを選択する（ステップＳ３８）。そして、処理は図１９のステップＳ２５へ戻る。
【０１６７】
一方、次のデータがない場合には（ステップＳ３７のＮｏルート参照）、コピー先ストレージ装置２の第２送信部２１３は、センスデータをコピー先ストレージ装置２へ応答する（ステップＳ３９）。そして、コピー先ストレージ装置２におけるデータ転送処理は終了する。
【０１６８】
次に、図５に示したコピー元ストレージ装置１におけるデータ転送処理の第２の例を、図２１に示すフローチャート（ステップＳ４１〜Ｓ５１）に従って説明する。コピー元ストレージ装置１におけるデータ転送処理の第２の例では、コピー先ストレージ装置２でハッシュ値を記憶しない場合におけるデータ転送処理を説明する。
【０１６９】
コピー元ストレージ装置１の第１送信部１１１は、データコピーを開始する（ステップＳ４１）。
【０１７０】
第１送信部１１１は、コピー位置のＬＢＡをＬＵＮの先頭に設定する（ステップＳ４２）。
【０１７１】
第１送信部１１１は、コピー元の圧縮データをディスクから読み込む（ステップＳ４３）。ここで、コピー先ストレージ装置２にコピー済みの領域については、スキップされる。
【０１７２】
第１送信部１１１は、読み込んだ５１２バイト単位の圧縮データの先頭にハッシュ値を付加し、有効データをメモリ１２上の一時バッファに連続して詰めて書き込む（ステップＳ４４）。ここで、コピー先ストレージ装置２にコピー済みの領域については、スキップされる。
【０１７３】
第１送信部１１１は、後続データのハッシュ値を読み込み、圧縮データの末尾に続けて書き込む（ステップＳ４５）。
【０１７４】
第１送信部１１１は、一時データの先頭にメタデータを付加し、コピー先ストレージ装置２へ転送する（ステップＳ４６）。
【０１７５】
コピー元ストレージ装置１の第１受信部１１２は、コピー先ストレージ装置２からの応答としてセンスデータを受信する（ステップＳ４７）。
【０１７６】
コピー元ストレージ装置１の第１判定部１１３は、応答されたセンスデータのビットをチェックする（ステップＳ４８）。
【０１７７】
第１判定部１１３は、ハッシュヒット状態のデータをコピー済み状態に設定する（ステップＳ４９）。
【０１７８】
第１送信部１１１は、コピー位置のＬＢＡを次に進める（ステップＳ５０）。
【０１７９】
第１送信部１１１は、コピー位置のＬＢＡが最終ＬＢＡであるかを判定する（ステップＳ５１）。
【０１８０】
最終ＬＢＡでない場合には（ステップＳ５１のＮｏルート参照）、処理はステップＳ４３へ戻る。
【０１８１】
一方、最終ＬＢＡである場合には（ステップＳ５１のＹｅｓルート参照）、コピー元ストレージ装置１におけるデータ転送処理は終了する。
【０１８２】
次に、図５に示したコピー先ストレージ装置２におけるデータ転送処理の第２の例を、図２２及び図２３に示すフローチャート（ステップＳ６１〜Ｓ７７）に従って説明する。コピー先ストレージ装置２におけるデータ転送処理の第２の例では、コピー先ストレージ装置２でハッシュ値を記憶しない場合におけるデータ転送処理を説明する。なお、図２２にはステップＳ６１〜Ｓ７４における処理を示し、図２３にはステップＳ７５〜Ｓ７７における処理を示す。
【０１８３】
コピー先ストレージ装置２の第２受信部２１１は、コピー元ストレージ装置１からデータを受信する（ステップＳ６１）。
【０１８４】
コピー先ストレージ装置２の第２判定部２１２は、応答データのセンスビットマップを全ビット０に初期化する（ステップＳ６２）。
【０１８５】
第２判定部２１２は、受信データの先頭にあるメタデータをチェックする（ステップＳ６３）。
【０１８６】
第２判定部２１２は、受信データのうち最初のデータを選択する（ステップＳ６４）。
【０１８７】
第２判定部２１２は、選択したデータが圧縮データであるかを判定する（ステップＳ６５）。
【０１８８】
圧縮データである場合には（ステップＳ６５のＹｅｓルート参照）、第２判定部２１２は、圧縮データに付随したハッシュ値を選択する（ステップＳ６６）。
【０１８９】
第２判定部２１２は、ハッシュデータに対して重複判定を行なう（ステップＳ６７）。
【０１９０】
第２判定部２１２は、重複するハッシュ値が存在するかを判定する（ステップＳ６８）。
【０１９１】
重複するハッシュ値が存在する場合には（ステップＳ６８のＹｅｓルート参照）、処理はステップＳ７０へ進む。
【０１９２】
一方、重複するハッシュ値が存在しない場合には（ステップＳ６８のＮｏルート参照）、第２判定部２１２は、圧縮データをディスクへ書き込む（ステップＳ６９）。
【０１９３】
第２判定部２１２は、ハッシュ値を使用して、対象データを書き込み済みに設定する（ステップＳ７０）。そして、処理は図２３のステップＳ７５へ進む。
【０１９４】
ステップＳ６５において、選択したデータが圧縮データでない場合には（ステップＳ６５のＮｏルート参照）、第２判定部２１２は、ハッシュ値を選択する（ステップＳ７１）。
【０１９５】
第２判定部２１２は、ハッシュデータに対して重複判定を行なう（ステップＳ７２）。
【０１９６】
第２判定部２１２は、重複するハッシュ値が存在するかを判定する（ステップＳ７３）。
【０１９７】
重複するハッシュ値が存在する場合には（ステップＳ７３のＹｅｓルート参照）、第２判定部２１２は、対象データを書き込み済みに設定し、対応するセンスビットマップをＯＮにする（ステップＳ７４）。そして、処理は図２３のステップＳ７５へ進む。
【０１９８】
一方、重複するハッシュ値が存在しない場合には（ステップＳ７３のＮｏルート参照）、処理は図２３のステップＳ７５へ進む。
【０１９９】
図２３において、第２判定部２１２は、受信データにおいて次のデータがあるかを判定する（ステップＳ７５）。
【０２００】
次のデータがある場合には（ステップＳ７５のＹｅｓルート参照）、第２判定部２１２は、次のデータを選択する（ステップＳ７６）。そして、処理は図２２のステップＳ６５へ戻る。
【０２０１】
一方、次のデータがない場合には（ステップＳ７５のＮｏルート参照）、コピー先ストレージ装置２の第２送信部２１３は、センスデータをコピー先ストレージ装置２へ応答する（ステップＳ７７）。そして、コピー先ストレージ装置２におけるデータ転送処理は終了する。
【０２０２】
〔Ｂ−３〕効果
上述した実施形態の一例におけるＣＭ１０によれば、例えば、以下の作用効果を奏することができる。
【０２０３】
第１送信部１１１は、コピー先ストレージ装置２において対応するハッシュ値が存在しない再転送対象の論理アドレスの実データと、再転送対象の論理アドレスの後続の論理アドレスに対応するハッシュ値とを組み合わせた転送データを生成し、生成した転送データをコピー先ストレージ装置２に送信する。
【０２０４】
これにより、コピー元ストレージ装置１とコピー先ストレージ装置２との間における転送データ量を削減するとともに、通信時間を短縮することができる。
【０２０５】
第１送信部１１１は、転送対象の論理アドレスに対応するハッシュ値をコピー先ストレージ装置２に送信する。そして、第１送信部１１１は、コピー先ストレージ装置２において対応するハッシュ値が存在しないことをコピー先ストレージ装置２から応答された場合に、転送対象の論理アドレスの実データを含む転送データを生成して、再転送対象とする。
【０２０６】
これにより、コピー先ストレージ装置２において対応するハッシュ値が存在しない実データに限って転送データに含めることができる。
【０２０７】
第１送信部１１１は、コピー先ストレージ装置２が重複排除とデータ圧縮との少なくとも一方をサポートしていない場合には、データ圧縮前の実データである原本データを転送データとして送信する。
【０２０８】
これにより、コピー先ストレージ装置２の種類にかかわらず、データコピーを実施できる。
【０２０９】
第１送信部１１１は、コピー先ストレージ装置２に記憶されている実データに対応するハッシュ値がコピー先ストレージ装置２で管理されている場合には、転送データに含まれる実データに対応するハッシュ値を再転送対象としない。
【０２１０】
これにより、転送データ量を削減できる。
【０２１１】
第１送信部１１１は、コピー先ストレージ装置２に記憶されている実データに対応するハッシュ値がコピー先ストレージ装置２で管理されていない場合には、転送データに含まれる実データに対応するハッシュ値を再転送対象とする。そして、第１送信部１１１は、再転送対象として決定された１又は複数の論理アドレスの実データと、後続の転送対象の複数の論理アドレスの各ハッシュ値とで、転送データを生成する。
【０２１２】
これにより、コピー先ストレージ装置２における記憶データ量を低減できる。
【０２１３】
第１送信部１１１は、転送データにおける各論理アドレスのデータについての、実データとハッシュ値との種別、論理アドレス、及び、データサイズに関する情報を、当該転送データに含める。
【０２１４】
これにより、コピー先ストレージ装置２において、転送データに含まれる各データを識別できる。
【０２１５】
〔Ｃ〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【０２１６】
〔Ｄ〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【０２１７】
（付記１）
データをコピー先データ処理装置に転送するデータ転送制御装置であって、
処理装置を備え、
前記処理装置は、
前記コピー先データ処理装置において対応するハッシュ値が存在しない再転送対象の論理アドレスの実データと、前記再転送対象の論理アドレスの後続の論理アドレスに対応するハッシュ値とを組み合わせた転送データを生成し、
生成した前記転送データを前記コピー先データ処理装置に送信する、
データ転送制御装置。
【０２１８】
（付記２）
転送対象の論理アドレスに対応するハッシュ値を前記コピー先データ処理装置に送信し、
前記コピー先データ処理装置において前記対応するハッシュ値が存在しないことを前記コピー先データ処理装置から応答された場合に、前記転送対象の論理アドレスの実データを含む前記転送データを生成して、前記再転送対象とする、
付記１に記載のデータ転送制御装置。
【０２１９】
（付記３）
前記処理装置は、
前記コピー先データ処理装置が重複排除機能とデータ圧縮機能との少なくとも一方をサポートしていない場合には、データ圧縮前の前記実データである原本データを前記転送データとして送信する、
付記１又は２に記載のデータ転送制御装置。
【０２２０】
（付記４）
前記処理装置は、
前記コピー先データ処理装置に記憶されている実データに対応するハッシュ値が前記コピー先データ処理装置で管理されている場合には、前記転送データに含まれる実データに対応するハッシュ値を前記再転送対象としない、
付記１〜３のいずれか１項に記載のデータ転送制御装置。
【０２２１】
（付記５）
前記コピー先データ処理装置に記憶されている実データに対応するハッシュ値が前記コピー先データ処理装置で管理されていない場合には、前記転送データに含まれる実データに対応するハッシュ値を前記再転送対象とし、
前記再転送対象として決定された１又は複数の論理アドレスの実データと、後続の前記転送対象の複数の論理アドレスの各ハッシュ値とで、前記転送データを生成する、
付記１〜３のいずれか１項に記載のデータ転送制御装置。
【０２２２】
（付記６）
前記処理装置は、
前記転送データにおける各論理アドレスのデータについての、実データとハッシュ値との種別、論理アドレス、及び、データサイズに関する情報を、当該転送データに含める、
付記１〜５のいずれか１項に記載のデータ転送制御装置。
【０２２３】
（付記７）
データをコピー元データ処理装置からコピー先データ処理装置へ転送するデータ処理システムであって、
前記コピー先データ処理装置は、
前記コピー元データ処理装置から送信されたハッシュ値に対応する実データが前記コピー先データ処理装置において存在するか否かを、前記コピー元データ処理装置に応答し、
前記コピー元データ処理装置は、
前記コピー先データ処理装置からの応答に基づき、前記コピー先データ処理装置において対応するハッシュ値が存在しない再転送対象の実データと、前記再転送対象の論理アドレスの後続の論理アドレスに対応するハッシュ値とを組み合わせた転送データを、前記コピー先データ処理装置に送信する、
ストレージシステム。
【０２２４】
（付記８）
前記コピー元データ処理装置は、
転送対象の論理アドレスに対応するハッシュ値を前記コピー先データ処理装置に送信し、
前記コピー先データ処理装置において前記対応するハッシュ値が存在しないことを前記コピー先データ処理装置から応答された場合に、前記転送対象の論理アドレスの実データを含む前記転送データを生成して、前記再転送対象とする、
付記７に記載のストレージシステム。
【０２２５】
（付記９）
前記コピー元データ処理装置は、
前記コピー先データ処理装置が重複排除機能とデータ圧縮機能との少なくとも一方をサポートしていない場合には、データ圧縮前の前記実データである原本データを前記転送データとして送信する、
付記７又は８に記載のストレージシステム。
【０２２６】
（付記１０）
前記コピー先データ処理装置は、
当該コピー先データ処理装置に記憶されている実データに対応するハッシュ値を管理し、
前記コピー元データ処理装置は、
前記コピー先データ処理装置に記憶されている実データに対応するハッシュ値が前記コピー先データ処理装置で管理されている場合には、前記転送データに含まれる実データに対応するハッシュ値を前記再転送対象としない、
付記７〜９のいずれか１項に記載のストレージシステム。
【０２２７】
（付記１１）
前記コピー先データ処理装置は、
当該コピー先ストレージ装置に記憶されている実データに対応するハッシュ値を管理せず、
前記コピー元データ処理装置は、
前記コピー先データ処理装置に記憶されている実データに対応するハッシュ値が前記コピー先データ処理装置で管理されていない場合には、前記転送データに含まれる実データに対応するハッシュ値を前記再転送対象とし、
前記再転送対象として決定された１又は複数の論理アドレスの実データと、後続の前記転送対象の複数の論理アドレスの各ハッシュ値とで、前記転送データを生成する、
付記７〜９のいずれか１項に記載のストレージシステム。
【０２２８】
（付記１２）
前記コピー元データ処理装置は、
前記転送データにおける各論理アドレスのデータについての、実データとハッシュ値との種別、論理アドレス、及び、データサイズに関する情報を、当該転送データに含める、
付記７〜１１のいずれか１項に記載のストレージシステム。
【０２２９】
（付記１３）
データをコピー先データ処理装置に転送するコンピュータに、
前記コピー先データ処理装置において対応するハッシュ値が存在しない再転送対象の実データと、前記再転送対象の論理アドレスの後続の論理アドレスに対応するハッシュ値とを組み合わせた転送データを生成し、
生成した前記転送データを前記コピー先データ処理装置に送信する、
処理を実行させる、プログラム。
【０２３０】
（付記１４）
転送対象の論理アドレスに対応するハッシュ値を前記コピー先データ処理装置に送信し、
前記コピー先データ処理装置において前記対応するハッシュ値が存在しないことを前記コピー先データ処理装置から応答された場合に、前記転送対象の論理アドレスの実データを含む前記転送データを生成して、前記再転送対象とする、
処理を前記コンピュータに実行させる、付記１３に記載のプログラム。
【０２３１】
（付記１５）
前記コピー先データ処理装置が重複排除機能とデータ圧縮機能との少なくとも一方をサポートしていない場合には、データ圧縮前の前記実データである原本データを前記転送データとして送信する、処理を前記コンピュータに実行させる、付記１３又は１４に記載のプログラム。
【０２３２】
（付記１６）
前記コピー先データ処理装置に記憶されている実データに対応するハッシュ値が前記コピー先データ処理装置で管理されている場合には、前記転送データに含まれる実データに対応するハッシュ値を前記再転送対象としない、
処理を前記コンピュータに実行させる、付記１３〜１５のいずれか１項に記載のプログラム。
【０２３３】
（付記１７）
前記コピー先データ処理装置に記憶されている実データに対応するハッシュ値が前記コピー先データ処理装置で管理されていない場合には、前記転送データに含まれる実データに対応するハッシュ値を前記再転送対象とし、
前記再転送対象として決定された１又は複数の論理アドレスの実データと、後続の前記転送対象の複数の論理アドレスの各ハッシュ値とで、前記転送データを生成する、
処理を前記コンピュータに実行させる、付記１３〜１５のいずれか１項に記載のプログラム。
【０２３４】
（付記１８）
前記転送データにおける各論理アドレスのデータについての、実データとハッシュ値との種別、論理アドレス、及び、データサイズに関する情報を、当該転送データに含める、
処理を前記コンピュータに実行させる、付記１３〜１７のいずれか１項に記載のプログラム。
【符号の説明】
【０２３５】
１００，６００：ストレージシステム
１，６    ：コピー元ストレージ装置
１０，２０：ＣＭ
１１，２１：ＣＰＵ
１２，２２：メモリ
１３，２３：ＲＡ
１４，２４：ＤＡ
１５      ：ＣＡ
１６，２６：記憶装置
１６０，２６０：ＤＥ
２，７    ：コピー先ストレージ装置
３        ：ホスト
６１，７１：ボリューム
１１１    ：第１送信部
１１２    ：第１受信部
１１３    ：第１判定部
２１１    ：第２受信部
２１２    ：第２判定部
２１３    ：第２送信部
【図１】
2020086576.tif 000003
【図２】
2020086576.tif 000004
【図３】
2020086576.tif 000005
【図４】
2020086576.tif 000006
【図５】
2020086576.tif 000007
【図６】
2020086576.tif 000008
【図７】
2020086576.tif 000009
【図８】
2020086576.tif 000010
【図９】
2020086576.tif 000011
【図１０】
2020086576.tif 000012
【図１１】
2020086576.tif 000013
【図１２】
2020086576.tif 000014
【図１３】
2020086576.tif 000015
【図１４】
2020086576.tif 000016
【図１５】
2020086576.tif 000017
【図１６】
2020086576.tif 000018
【図１７】
2020086576.tif 000019
【図１８】
2020086576.tif 000020
【図１９】
2020086576.tif 000021
【図２０】
2020086576.tif 000022
【図２１】
2020086576.tif 000023
【図２２】
2020086576.tif 000024
【図２３】
2020086576.tif 000025