(57)【要約】【課題】レプリケーションにおけるデータ転送の高速化を図る。【解決手段】本発明のレプリケーションシステムは、マスタ側ストレージシステムがそれぞれが並列にレプリカ側ストレージシステムに対してデータを転送する複数のデータ転送手段を備えると共に、各データ転送手段は、転送候補であるデータの内容に基づくデータ特徴量情報を生成して、当該データ特徴量情報が、レプリカ側ストレージシステムに対して転送中あるいは転送済みのデータのデータ特徴量情報が記憶された転送データリストに存在するか否かを調べ、当該転送データリストにデータ特徴量情報が存在している転送候補のデータはレプリカ側ストレージシステムに転送せず、転送データリストにデータ特徴量情報が存在していない転送候補のデータはレプリカ側ストレージシステムに転送する。【選択図】図２２
2014178827.tif 000002
【特許請求の範囲】
【請求項１】
マスタ側記憶装置を備えたマスタ側ストレージシステムと、レプリカ側記憶装置を備えたレプリカ側ストレージシステムと、がネットワークを介して接続されており、
前記マスタ側ストレージシステムは、前記マスタ側記憶装置に記憶されたデータを、それぞれが並列に前記レプリカ側ストレージシステムに対して転送する複数のデータ転送手段を備えると共に、
前記レプリカ側ストレージシステムは、前記マスタ側ストレージシステムから送信されたデータを前記レプリカ側記憶装置に記憶して前記マスタ側記憶装置に記憶されているデータのレプリカを生成するレプリカ手段を備え、
前記マスタ側ストレージシステムの前記各データ転送手段は、前記レプリカ側ストレージシステムに対する転送候補であるデータの内容に基づく当該データの特徴量を表すデータ特徴量情報を生成して、当該転送候補であるデータの前記データ特徴量情報が、前記レプリカ側ストレージシステムに対して転送中あるいは転送済みのデータの前記データ特徴量情報が記憶された転送データリストに存在するか否かを調べ、当該転送データリストに前記データ特徴量情報が存在している転送候補のデータは前記レプリカ側ストレージシステムに転送せず、前記転送データリストに前記データ特徴量情報が存在していない転送候補のデータは前記レプリカ側ストレージシステムに転送する、
レプリケーションシステム。
【請求項２】
請求項１に記載のレプリケーションシステムであって、
前記各データ転送手段は、それぞれが異なる所定単位のデータを分割した分割データを転送候補とし、前記分割データの内容に基づく当該分割データの特徴量を表す前記データ特徴量情報を生成して前記転送データリストに存在するか否かを調べ、当該転送データリストに前記データ特徴量情報が存在している前記分割データは前記レプリカ側ストレージシステムに転送せず、前記転送データリストに前記データ特徴量情報が存在していない前記分割データは前記レプリカ側ストレージシステムに転送すると共に当該分割データの前記データ特徴量情報を前記転送データリストに登録する、
レプリケーションシステム。
【請求項３】
請求項２に記載のレプリケーションシステムであって、
前記各データ転送手段は、前記分割データの前記データ特徴量情報が前記転送データリストに存在しない場合に、当該分割データの前記データ特徴量情報が、前記レプリカ側記憶装置に記憶されている前記分割データの前記データ特徴量情報が登録されたレプリカデータリストに存在するか否かを調べ、当該レプリカデータリストに前記データ特徴量情報が存在している前記分割データは前記レプリカ側ストレージシステムに転送せず、前記レプリカデータリストに前記データ特徴量情報が存在していない前記分割データは前記レプリカ側ストレージシステムに転送すると共に当該分割データの前記データ特徴量情報を前記転送データリストに登録する、
レプリケーションシステム。
【請求項４】
請求項２又は３に記載のレプリケーションシステムであって、
前記各データ転送手段は、前記分割データを前記レプリカ側ストレージシステムに転送しない場合に、当該分割データの分割前における前記所定単位のデータを構築するための情報を少なくとも含むメタデータを前記レプリカ側ストレージシステムに転送し、
前記レプリカ側ストレージシステムの前記レプリカ手段は、前記マスタ側ストレージシステムから転送された前記分割データ及び前記メタデータに基づいて、前記マスタ側記憶装置に記憶されているデータのレプリカを生成する、
レプリケーションシステム。
【請求項５】
請求項４に記載のレプリケーションシステムであって、
前記各データ転送手段は、前記分割データを前記レプリカ側ストレージシステムに転送中である場合に、当該分割データの前記データ特徴量情報を転送中である旨の情報と共に前記転送データリストに登録し、前記分割データを前記レプリカ側ストレージシステムに転送済みである場合に、当該分割データの前記データ特徴量情報を転送済みである旨の情報と共に前記転送データリストに登録し、
前記転送データリストに転送中である旨の情報と共に登録されて存在する前記データ特徴量情報に対応する前記分割データの前記メタデータは、当該分割データの前記データ特徴量情報が転送済みである旨の情報と共に前記転送データリストに登録された後に前記レプリカ側ストレージシステムに転送する、
レプリケーションシステム。
【請求項６】
マスタ側記憶装置を備えたマスタ側ストレージシステムと、レプリカ側記憶装置を備えたレプリカ側ストレージシステムと、がネットワークを介して接続されたレプリケーションシステムによるレプリケーション方法であって、
前記マスタ側ストレージシステムが、前記マスタ側記憶装置に記憶されたデータを、複数のデータ転送手段にて並列に前記レプリカ側ストレージシステムに対して転送する際に、前記レプリカ側ストレージシステムに対する転送候補であるデータの内容に基づく当該データの特徴量を表すデータ特徴量情報を生成して、当該転送候補であるデータの前記データ特徴量情報が、前記レプリカ側ストレージシステムに対して転送中あるいは転送済みのデータの前記データ特徴量情報が記憶された転送データリストに存在するか否かを調べ、当該転送データリストに前記データ特徴量情報が存在している転送候補のデータは前記レプリカ側ストレージシステムに転送せず、前記転送データリストに前記データ特徴量情報が存在していない転送候補のデータは前記レプリカ側ストレージシステムに転送し、
前記レプリカ側ストレージシステムが、前記マスタ側ストレージシステムから送信されたデータを前記レプリカ側記憶装置に記憶して前記マスタ側記憶装置に記憶されているデータのレプリカを生成する、
レプリケーション方法。
【請求項７】
請求項６に記載のレプリケーション方法であって、
前記各データ転送手段が、それぞれが異なる所定単位のデータを分割した分割データを転送候補とし、前記分割データの内容に基づく当該分割データの特徴量を表す前記データ特徴量情報を生成して前記転送データリストに存在するか否かを調べ、当該転送データリストに前記データ特徴量情報が存在している前記分割データは前記レプリカ側ストレージシステムに転送せず、前記転送データリストに前記データ特徴量情報が存在していない前記分割データは前記レプリカ側ストレージシステムに転送すると共に当該分割データの前記データ特徴量情報を前記転送データリストに登録する、
レプリケーション方法。
【請求項８】
装備されたレプリカ側記憶装置に転送されたデータのレプリカを生成するレプリカ側ストレージシステムにネットワークを介して接続され、マスタ側記憶装置を備えたマスタ側ストレージシステムであって、
前記マスタ側記憶装置に記憶されたデータを、それぞれが並列に前記レプリカ側ストレージシステムに対して転送する複数のデータ転送手段を備えると共に、
前記各データ転送手段は、前記レプリカ側ストレージシステムに対する転送候補であるデータの内容に基づく当該データの特徴量を表すデータ特徴量情報を生成して、当該転送候補であるデータの前記データ特徴量情報が、前記レプリカ側ストレージシステムに対して転送中あるいは転送済みのデータの前記データ特徴量情報が記憶された転送データリストに存在するか否かを調べ、当該転送データリストに前記データ特徴量情報が存在している転送候補のデータは前記レプリカ側ストレージシステムに転送せず、前記転送データリストに前記データ特徴量情報が存在していない転送候補のデータは前記レプリカ側ストレージシステムに転送する、
マスタ側ストレージシステム。
【請求項９】
請求項８に記載のマスタ側ストレージシステムであって、
前記各データ転送手段は、それぞれが異なる所定単位のデータを分割した分割データを転送候補とし、前記分割データの内容に基づく当該分割データの特徴量を表す前記データ特徴量情報を生成して前記転送データリストに存在するか否かを調べ、当該転送データリストに前記データ特徴量情報が存在している前記分割データは前記レプリカ側ストレージシステムに転送せず、前記転送データリストに前記データ特徴量情報が存在していない前記分割データは前記レプリカ側ストレージシステムに転送すると共に当該分割データの前記データ特徴量情報を前記転送データリストに登録する、
マスタ側ストレージシステム。
【請求項１０】
装備されたレプリカ側記憶装置に転送されたデータのレプリカを生成するレプリカ側ストレージシステムにネットワークを介して接続され、マスタ側記憶装置を備えたマスタ側ストレージ装置に、
前記マスタ側記憶装置に記憶されたデータを、それぞれが並列に前記レプリカ側ストレージシステムに対して転送する複数のデータ転送手段を実現すると共に、
前記各データ転送手段は、前記レプリカ側ストレージシステムに対する転送候補であるデータの内容に基づく当該データの特徴量を表すデータ特徴量情報を生成して、当該転送候補であるデータの前記データ特徴量情報が、前記レプリカ側ストレージシステムに対して転送中あるいは転送済みのデータの前記データ特徴量情報が記憶された転送データリストに存在するか否かを調べ、当該転送データリストに前記データ特徴量情報が存在している転送候補のデータは前記レプリカ側ストレージシステムに転送せず、前記転送データリストに前記データ特徴量情報が存在していない転送候補のデータは前記レプリカ側ストレージシステムに転送する、
ことを実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レプリケーションシステムにかかり、特に、重複記憶を排除するレプリケーションシステムに関する。
【背景技術】
【０００２】
近年、ＩＴシステムの「災害対策・遠隔バックアップ」の必要性への認識が高まり、レプリケーションの帯域のコストも重視され、高速、かつ効率的なレプリケーションが求められる。
【０００３】
通常のストレージシステムでは、図１に示すように、マスタサイト１０００からレプリカサイト１２００に対して、当該レプリカサイト１２００に存在しないファイルのみを転送する（符号１１１３）ことにより、転送量を低減している。さらに、マスタサイト１０００におけるマルチスレッドレプリケーションにより、異なるファイルを各スレッド１１１０が独立に処理し、同時に転送することにより、レプリケーションを高速化している。
【０００４】
また、近年では、ストレージシステムにおいて、ファイルをブロックデータに分割して格納する際に、同一内容のブロックデータに関しては、既に記憶されているブロックデータを参照することで、重複記憶を排除することが行われている。このような重複排除ストレージシステムでは、図２に示すように、マスタサイト１１００とレプリカサイト１２００間でブロックデータの重複をチェックし（図２の符号１１１２）、レプリカサイト１２００に存在しないブロックデータのみを転送している。このため、一部が変更されたファイルについては、変更されたブロックデータのみの転送となり、転送量をさらに低減することができる。
【０００５】
なお、レプリケーションにおけるデータ転送量の低減に関する技術が特許文献１に開示されている。特許文献１では、重複するデータを一回転送するだけでデータ転送を完了させることが記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−１４６５８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ここで、重複排除ストレージシステムでのレプリケーションでは、重複するブロックデータを転送しないという前提がある。また、図２に示すようなマルチスレッドレプリケーションでは、各スレッド１１１０が独立に処理するブロックデータがレプリカサイト１２００に存在するか否かを判断し（符号１１１２）、存在しない場合に転送している（符号１１１３）。このため、各スレッド１１１０が同時に処理するブロックデータ間が重複し、レプリカサイト１２００にブロックデータがまだ存在しない場合は、重複が判断できず、ブロックデータを重複して転送してしまう。つまり、重複排除ストレージシステムにおけるマルチスレッドレプリケーションでは、重複するブロックデータを送信してしまう可能性があり、データ転送量を低減し、データ転送の高速化を図ることができない、という問題があった。
【０００８】
このため、本発明の目的は、上述した課題である、マルチスレッドレプリケーションにおけるデータ転送量の低減、及び、データ転送の高速化を図ることができないこと、を解決することができるレプリケーションシステムを提供することにある。
【課題を解決するための手段】
【０００９】
本発明の一形態であるレプリケーションシステムは、
マスタ側記憶装置を備えたマスタ側ストレージシステムと、レプリカ側記憶装置を備えたレプリカ側ストレージシステムと、がネットワークを介して接続されており、
前記マスタ側ストレージシステムは、前記マスタ側記憶装置に記憶されたデータを、それぞれが並列に前記レプリカ側ストレージシステムに対して転送する複数のデータ転送手段を備えると共に、
前記レプリカ側ストレージシステムは、前記マスタ側ストレージシステムから送信されたデータを前記レプリカ側記憶装置に記憶して前記マスタ側記憶装置に記憶されているデータのレプリカを生成するレプリカ手段を備え、
前記マスタ側ストレージシステムの前記各データ転送手段は、前記レプリカ側ストレージシステムに対する転送候補であるデータの内容に基づく当該データの特徴量を表すデータ特徴量情報を生成して、当該転送候補であるデータの前記データ特徴量情報が、前記レプリカ側ストレージシステムに対して転送中あるいは転送済みのデータの前記データ特徴量情報が記憶された転送データリストに存在するか否かを調べ、当該転送データリストに前記データ特徴量情報が存在している転送候補のデータは前記レプリカ側ストレージシステムに転送せず、前記転送データリストに前記データ特徴量情報が存在していない転送候補のデータは前記レプリカ側ストレージシステムに転送する、
という構成をとる。
【００１０】
また、本発明の他の形態であるレプリケーション方法は、
マスタ側記憶装置を備えたマスタ側ストレージシステムと、レプリカ側記憶装置を備えたレプリカ側ストレージシステムと、がネットワークを介して接続されたレプリケーションシステムによるレプリケーション方法であって、
前記マスタ側ストレージシステムが、前記マスタ側記憶装置に記憶されたデータを、複数のデータ転送手段にて並列に前記レプリカ側ストレージシステムに対して転送する際に、前記レプリカ側ストレージシステムに対する転送候補であるデータの内容に基づく当該データの特徴量を表すデータ特徴量情報を生成して、当該転送候補であるデータの前記データ特徴量情報が、前記レプリカ側ストレージシステムに対して転送中あるいは転送済みのデータの前記データ特徴量情報が記憶された転送データリストに存在するか否かを調べ、当該転送データリストに前記データ特徴量情報が存在している転送候補のデータは前記レプリカ側ストレージシステムに転送せず、前記転送データリストに前記データ特徴量情報が存在していない転送候補のデータは前記レプリカ側ストレージシステムに転送し、
前記レプリカ側ストレージシステムが、前記マスタ側ストレージシステムから送信されたデータを前記レプリカ側記憶装置に記憶して前記マスタ側記憶装置に記憶されているデータのレプリカを生成する、
という構成をとる。
【００１１】
また、本発明の他の形態であるマスタ側ストレージシステムは、
装備されたレプリカ側記憶装置に転送されたデータのレプリカを生成するレプリカ側ストレージシステムにネットワークを介して接続され、マスタ側記憶装置を備えたマスタ側ストレージシステムであって、
前記マスタ側記憶装置に記憶されたデータを、それぞれが並列に前記レプリカ側ストレージシステムに対して転送する複数のデータ転送手段を備えると共に、
前記各データ転送手段は、前記レプリカ側ストレージシステムに対する転送候補であるデータの内容に基づく当該データの特徴量を表すデータ特徴量情報を生成して、当該転送候補であるデータの前記データ特徴量情報が、前記レプリカ側ストレージシステムに対して転送中あるいは転送済みのデータの前記データ特徴量情報が記憶された転送データリストに存在するか否かを調べ、当該転送データリストに前記データ特徴量情報が存在している転送候補のデータは前記レプリカ側ストレージシステムに転送せず、前記転送データリストに前記データ特徴量情報が存在していない転送候補のデータは前記レプリカ側ストレージシステムに転送する、
という構成をとる。
【００１２】
また、本発明の他の形態であるプログラムは、
装備されたレプリカ側記憶装置に転送されたデータのレプリカを生成するレプリカ側ストレージシステムにネットワークを介して接続され、マスタ側記憶装置を備えたマスタ側ストレージ装置に、
前記マスタ側記憶装置に記憶されたデータを、それぞれが並列に前記レプリカ側ストレージシステムに対して転送する複数のデータ転送手段を実現すると共に、
前記各データ転送手段は、前記レプリカ側ストレージシステムに対する転送候補であるデータの内容に基づく当該データの特徴量を表すデータ特徴量情報を生成して、当該転送候補であるデータの前記データ特徴量情報が、前記レプリカ側ストレージシステムに対して転送中あるいは転送済みのデータの前記データ特徴量情報が記憶された転送データリストに存在するか否かを調べ、当該転送データリストに前記データ特徴量情報が存在している転送候補のデータは前記レプリカ側ストレージシステムに転送せず、前記転送データリストに前記データ特徴量情報が存在していない転送候補のデータは前記レプリカ側ストレージシステムに転送する、
ことを実現させるためのプログラムである。
【発明の効果】
【００１３】
本発明は、以上のように構成されることにより、レプリケーションにおけるデータ転送量の低減、及び、データ転送の高速化を図ることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明に関連するレプリケーションシステムの構成及び動作の概略を示すブロック図である。
【図２】本発明の関連するレプリケーションシステムの構成及び動作の概略を示すブロック図である。
【図３】本発明の実施形態１におけるレプリケーションシステムの構成及び動作の概略を示すブロック図である。
【図４】図３に開示したマスタサイトあるいはレプリカサイトを構成するストレージシステムの構成の概略を示すブロック図である。
【図５】図３に開示したマスタサイトあるいはレプリカサイトの構成を示すブロック図である。
【図６】図４に開示したマスタシステムあるいはレプリカシステムにおけるデータ書き込み処理の様子を説明するための説明図である。
【図７】図４に開示したマスタシステムあるいはレプリカシステムデータ書き込み処理の様子を説明する説明図である。
【図８Ａ】図３に開示したレプリケーションシステムによるレプリケーション処理の動作を示すフローチャートである。
【図８Ｂ】図３に開示したレプリケーションシステムによるレプリケーション処理の動作を示すフローチャートである。
【図８Ｃ】図３に開示したレプリケーションシステムによるレプリケーション処理の動作を示すフローチャートである。
【図９】図３に開示したレプリケーションシステムによるレプリケーション処理の様子を示す説明図である。
【図１０】図３に開示したレプリケーションシステムによるレプリケーション処理の様子を示す説明図である。
【図１１】図３に開示したレプリケーションシステムによるレプリケーション処理の様子を示す説明図である。
【図１２】図３に開示したレプリケーションシステムによるレプリケーション処理の様子を示す説明図である。
【図１３】図３に開示したレプリケーションシステムによるレプリケーション処理の様子を示す説明図である。
【図１４】図３に開示したレプリケーションシステムによるレプリケーション処理の様子を示す説明図である。
【図１５】図３に開示したレプリケーションシステムによるレプリケーション処理の様子を示す説明図である。
【図１６】図３に開示したレプリケーションシステムによるレプリケーション処理の様子を示す説明図である。
【図１７】図３に開示したレプリケーションシステムによるレプリケーション処理の様子を示す説明図である。
【図１８】図３に開示したレプリケーションシステムによるレプリケーション処理の様子を示す説明図である。
【図１９】図３に開示したレプリケーションシステムによるレプリケーション処理の様子を示す説明図である。
【図２０】図３に開示したレプリケーションシステムによるレプリケーション処理の様子を示す説明図である。
【図２１】図３に開示したレプリケーションシステムによるレプリケーション処理の様子を示す説明図である。
【図２２】本発明の付記１におけるストレージシステムの構成を示すブロック図である。
【発明を実施するための形態】
【００１５】
＜実施形態１＞
本発明の第１の実施形態を、図３乃至図２１を参照して説明する。図３は、レプリケーションシステム全体の構成を示すブロック図であり、図４乃至図５は、レプリケーションシステムを構成するストレージシステムの構成を示すブロック図である。図６乃至図７は、レプリケーションシステムにおけるデータ書き込み処理の動作を説明するための説明図である。図８Ａ乃至図８Ｃは、レプリケーションシステムにおけるレプリケーションの動作を示すフローチャートである。図９乃至図２１は、レプリケーション処理の様子を説明する説明図である。
【００１６】
ここで、本実施形態は、後述する付記に記載のレプリケーションシステムを構成するマスタ側ストレージシステム及びレプリカ側ストレージシステムの具体的な一例を示すものである。そして、以下では、各ストレージシステムが、複数台のサーバコンピュータが接続されて構成されている場合を説明する。但し、本発明におけるレプリケーションシステムを構成する各ストレージシステムは、複数台のコンピュータにて構成されることに限定されず、１台のコンピュータで構成されていてもよい。
【００１７】
［構成］
図３に示すように、本実施形態におけるレプリケーションシステムは、ストレージシステムであるマスタサイト１００及びレプリカサイト２００がネットワークＮ（レプリケーション回線）を介して接続されて構成されている。そして、レプリケーションシステムは、マスタサイト１００に記憶されているファイル（データ）を、レプリカサイト２００に転送してレプリケーションするものである。
【００１８】
ここで、図３に開示したレプリケーションシステムの構成及びレプリケーション処理の流れの概略について説明する。マスタサイト１００は、レプリケーションを行う複数のスレッド１１０を備えており、各スレッド１１０は、レプリケーション対象ファイルリスト１０１を参照してファイルであるデータ１０３を記憶装置から読み出し、レプリケーション処理を行う。
【００１９】
このとき、各スレッド１１０は、スレッド間において重複してレプリケーションを行うブロックデータのチェック１１１をそれぞれ行う。特に、各スレッド１１０は、実行中のレプリケーションジョブにて、自身が転送するブロックデータと、他のスレッド１１０が転送中または転送済みのブロックデータと、の重複チェックを行う。
【００２０】
また、各スレッド１１０は、転送候補であるブロックデータがレプリカサイト２００に存在するか否かを、当該レプリカサイトに確認するチェック１１２を行う。そして、各スレッド１１０は、上述したスレッド間のチェック１１１とサイト間のチェック１１２の結果に基づいて、対象となるブロックデータ又はブロックデータのメタデータを複製して、レプリカサイト２００に転送する（符号１１３）。
【００２１】
具体的には、本実施形態では、マスタサイト１００にブロックデータの情報を記録する構成を用意する。ここでは、ブロックデータの一意性を識別するためのハッシュ値を記録するハッシュテーブルとする。なお、チェックサム値等を利用することも考えられる。ハッシュテーブルには、「転送中」カテゴリと「転送済み」カテゴリを設ける。
【００２２】
レプリケーションジョブを開始した際に、複数のブロックデータを各スレッド１１０が同時に処理し、ブロックデータのハッシュ値を計算し、マスタサイト１００にあるハッシュテーブルに確認し、その結果に応じて下記の処理を行う。
【００２３】
・マスタサイト１００のハッシュテーブルにハッシュ値のエントリーが存在しない場合は、レプリカサイト２００にあるブロックデータリスト２０１と比較し、存在するかを確認する。
・レプリカサイト２００にハッシュ値が存在する場合は、ハッシュテーブルの「転送済み」カテゴリに登録し、ブロックデータのメタデータのみを転送する。転送が完了になると、該当ブロックデータの処理は完了し、次のブロックデータを処理する。
・レプリカサイト２００にハッシュ値が存在しない場合は、「転送中」カテゴリに処理中のブロックデータのハッシュ値を登録し、当該ブロックデータを転送する。転送が完了になると、「転送中」カテゴリのエントリーを「転送済み」カテゴリに移動する。これにより、該当ブロックデータの処理は完了し、次のブロックデータを処理する。
・「転送中」カテゴリにエントリーが存在している場合は、転送待ちキャッシュにブロックデータのメタデータを登録する。これにより、該当ブロックデータの処理は完了し、次のブロックデータを処理する。
・「転送済み」カテゴリにエントリーが存在している場合は、該当ブロックデータはレプリカサイト２００に存在するため、ブロックデータを転送せずに、ブロックデータのメタデータのみを転送する。転送が完了になると、該当ブロックデータの処理は完了し、次のブロックデータを処理する。
【００２４】
各スレッド１１０は、上記のようにブロックデータの処理を繰り返し、全てのブロックデータの処理が完了になると、転送待ちキャッシュに登録しているエントリーを処理し、該当メタデータを転送する。
【００２５】
レプリカサイト２００では、上記マスタサイト１００から転送されてきたブロックデータまたはブロックデータのメタデータを受信し（符号２１１）、記憶装置に保存する（符号２０３）。レプリカサイト２００は、ブロックデータが保存された後に、ブロックデータリスト２０１を更新する。また、レプリカサイト２００は、ブロックデータとブロックデータのメタデータをもとにファイルを生成し、ファイルリスト２０２を更新する。
【００２６】
上記の処理にて、各スレッドは、ハッシュテーブルや転送待ちキャッシュへ参照／更新が同時に行われる可能性があるため、参照／更新ロックにより、排他制御を行う。ここでは、類似する処理として、参照／更新操作に矛盾を生じないように各スレッドに優先度を付与すること等も考えられる。
【００２７】
また、通信障害等の障害により、ブロックデータあるいはブロックデータのメタデータの転送が正常に完了できなかった場合は、かかる転送が完了するように、再送が行われる。
【００２８】
以上のように、レプリケーションシステムでは、各スレッドが転送中または転送済みのブロックデータの情報を記録する構成（ハッシュテーブル）と、転送しようとするブロックデータのメタデータを記録する構成（転送待ちキャッシュ）と、をそれぞれマスタサイト１００に用意している。そして、各スレッドは、新しいブロックデータの処理時に、ハッシュテーブル及び転送待ちキャッシュに確認し、エントリーが存在した場合、ブロックデータを転送しないことで、レプリケーション回線Ｎに重複してブロックデータを転送せず、レプリケーション処理を効率化つまり高速化を図ることができる。
【００２９】
次に、マスタサイト１００及びレプリカサイト２００を構成するストレージシステム１の詳細な構成を、図４乃至図５を参照して説明する。まず、図４に示すように、マスタサイト１００及びレプリカサイト２００であるストレージシステムは、複数のサーバコンピュータが接続された構成を採っている。具体的に、ストレージシステム１は、ストレージシステム１自体における記憶再生動作を制御するサーバコンピュータであるアクセラレータノード２と、データを格納する記憶装置を備えたサーバコンピュータであるストレージノード３と、を備えている。なお、アクセラレータノード２の数とストレージノード３の数は、図４に示したものに限定されず、さらに多くの各ノード２，３が接続されて構成されていてもよい。
【００３０】
さらに、本実施形態におけるストレージシステム１は、データを分割及び冗長化し、分散して複数の記憶装置に記憶すると共に、記憶するデータの内容に応じて設定される固有のコンテンツアドレスによって、当該データを格納した格納位置を特定するコンテンツアドレスストレージシステムである。
【００３１】
なお、以下では、ストレージシステム１が１つのシステムであるとして、当該ストレージシステム１が備えている構成及び機能を説明する。つまり、以下に説明するストレージシステム１が有する構成及び機能は、アクセラレータノード２あるいはストレージノード３のいずれに備えられていてもよい。なお、ストレージシステム１は、図４に示すように、必ずしもアクセラレータノード２とストレージノード３とを備えていることに限定されず、いかなる構成であってもよく、例えば、１台のコンピュータにて構成されていてもよい。さらには、ストレージシステム１は、コンテンツアドレスストレージシステムであることにも限定されず、重複排除機能を有しているストレージシステムであればよい。
【００３２】
図５は、マスタサイト１００及びレプリカサイト２００であるストレージシステム１の詳細な構成を示す機能ブロックである。ストレージシステム１は、演算装置で構成された制御装置１０と、記憶装置で構成されたデータ記憶部４０と、レプリカサイト２００あるいはマスタサイト１００とデータ通信するための通信部５０と、を備えている。
【００３３】
上記データ記憶部４０は、データを保存する場所であり、ファイルが分割されたブロックデータ４４、当該ブロックデータによるファイル構成を表すメタデータ４３、後述するハッシュテーブル４１、転送待ちキャッシュ４２、などを格納する領域を形成している。また、制御装置１０は、プログラムが組み込まれることにより構築された、データを重複排除してデータ記憶部４０に格納するための重複圧縮制御部３１、メタデータ制御部３２、ブロックデータ制御部３３、を備える。さらに、制御装置１０は、プログラムが組み込まれることにより構築された、データをレプリケーションするためのレプリケーション制御部２０を備えており、当該レプリケーション制御部２０は、スレッド間制御部２１、スレッド毎制御部２２、ハッシュテーブル制御部２３、転送待ちキャッシュ制御部２４、差分チェック制御部２５、レプリケーション送受信制御部２６、を備えている。
【００３４】
そして、マスタサイト１００を構成するストレージシステム１（マスタ側ストレージシステム）における上記レプリケーション制御部２０によるレプリケーション処理を行うための機能は、図３で示すように、複数のスレッド１１０（データ転送手段）として起動し、それぞれが並列にレプリケーション処理を行う。また、レプリカサイト２００を構成するストレージシステム１（レプリカ側ストレージシステム）における上記レプリケーション制御部２０によるレプリケーション処理を行うための機能は、マスタサイト１００から転送されたデータに基づいて当該マスタサイト１００に記憶されているデータのレプリカを生成する処理を行う（レプリカ手段）。
【００３５】
上述したように、マスタサイト１００及びレプリカサイト２００であるストレージシステム１が備える構成の機能は、以下の動作説明にて詳細に説明する。
【００３６】
［動作］
まず、マスタサイト１００及びレプリカサイト２００であるストレージシステム１による、重複記憶を排除するデータ書き込み処理、及び、データ読み出し処理の動作について、図６乃至図７を参照して説明する。なお、以下に説明する動作は、ストレージシステム１が備える重複圧縮制御部３１、メタデータ制御部３２、ブロックデータ制御部３３等の処理によるものである。
【００３７】
まず、図６及び図７の矢印Ｙ１に示すように、ストレージシステム１が書き込み要求されたファイルＡの入力を受ける。すると、図６及び図７の矢印Ｙ２に示すように、ファイルＡを所定容量（例えば、６４ＫＢ）のブロックデータＤに分割する。
【００３８】
続いて、分割されたブロックデータＤのデータ内容に基づいて、当該データ内容を代表する固有のハッシュ値Ｈ（データ特徴量情報）を算出する（図７の矢印Ｙ３）。例えば、ハッシュ値Ｈは、予め設定されたハッシュ関数を用いて、ブロックデータＤのデータ内容から算出する。
【００３９】
続いて、ファイルＡのブロックデータＤのハッシュ値Ｈを用いて、当該ブロックデータＤが既に格納されているか否かを調べる。具体的には、まず、既に格納されているブロックデータＤは、そのハッシュ値Ｈと格納位置を表すコンテンツアドレスＣＡとが、関連付けられてＭＦＩ（Ｍａｉｎ  Ｆｒａｇｍｅｎｔ  Ｉｎｄｅｘ）ファイルに登録されている。従って、格納前に算出したブロックデータＤのハッシュ値ＨがＭＦＩファイル内に存在している場合には、既に同一内容のブロックデータＤが格納されていると判断できる（図７の矢印Ｙ４）。この場合には、格納前のブロックデータＤのハッシュ値Ｈと一致したＭＦＩ内のハッシュ値Ｈに関連付けられているコンテンツアドレスＣＡを、当該ＭＦＩファイルから取得する。そして、このコンテンツアドレスＣＡを、書き込み要求されたブロックデータＤのコンテンツアドレスＣＡとして返却する。
【００４０】
そして、返却されたコンテンツアドレスＣＡが参照する既に格納されているデータを、書き込み要求されたブロックデータＤとして使用する。つまり、書き込み要求されたブロックデータＤの格納先として、返却されたコンテンツアドレスＣＡが参照する領域を指定することで、当該書き込み要求されたブロックデータＤを記憶したこととする。これにより、書き込み要求にかかるブロックデータＤを、実際に記憶装置内に記憶する必要がなくなる。
【００４１】
また、書き込み要求にかかるブロックデータＤがまだ記憶されていないと判断された場合には、以下のようにして書き込み要求にかかるブロックデータＤの書き込みを行う。まず、書き込み要求にかかるブロックデータＤを圧縮して、図７の矢印Ｙ５に示すように、複数の所定の容量のフラグメントデータに分割する。例えば、図６の符号Ｄ１〜Ｄ９に示すように、９つのフラグメントデータ（分割データ９１）に分割する。そしてさらに、分割したフラグメントデータのうちいくつかが欠けた場合であっても、元となるブロックデータを復元可能なよう冗長データを生成し、上記分割したフラグメントデータ９１に追加する。例えば、図６の符号Ｄ１０〜Ｄ１２に示すように、３つのフラグメントデータ（冗長データ９２）を追加する。これにより、９つの分割データ９１と、３つの冗長データ９２とにより構成される１２個のフラグメントデータからなるデータセット９０を生成する。
【００４２】
続いて、上述したように生成されたデータセットを構成する各フラグメントデータを、記憶装置に形成された各記憶領域に、それぞれ分散して格納する。例えば、図６に示すように、１２個のフラグメントデータＤ１〜Ｄ１２を生成した場合には、複数の記憶装置内にそれぞれ形成したデータ格納ファイルに、各フラグメントデータＤ１〜Ｄ１２を１つずつそれぞれ格納する（図７の矢印Ｙ６参照）。
【００４３】
続いて、ストレージシステム１は、上述したように格納したフラグメントデータＤ１〜Ｄ１２の格納位置、つまり、当該フラグメントデータＤ１〜Ｄ１２にて復元されるブロックデータＤの格納位置を表すコンテンツアドレスＣＡを生成して管理する。具体的には、格納したブロックデータＤの内容に基づいて算出したハッシュ値Ｈの一部（ショートハッシュ）（例えば、ハッシュ値Ｈの先頭８Ｂ（バイト））と、論理格納位置を表す情報と、を組み合わせて、コンテンツアドレスＣＡを生成する。そして、このコンテンツアドレスＣＡを、ストレージシステム１内のファイルシステムに返却する（図７の矢印Ｙ７）。すると、ストレージシステム１は、バックアップ対象データのファイル名などの識別情報と、コンテンツアドレスＣＡとを関連付けてファイルシステムで管理する。
【００４４】
また、ブロックデータＤのコンテンツアドレスＣＡと、当該ブロックデータＤのハッシュ値Ｈと、を関連付けて、各ストレージノード３がＭＦＩファイルにて管理する。このように、上記コンテンツアドレスＣＡは、ファイルを特定する情報やハッシュ値Ｈなどと関連付けられて、アクセラレータノード２やストレージノード３の記憶装置に格納される。
【００４５】
さらに、ストレージシステム１は、上述したように格納したファイルを読み出す制御を行う。例えば、ストレージシステム１に対して、特定のファイルを指定して読み出し要求があると、まず、ファイルシステムに基づいて、読み出し要求にかかるファイルに対応するハッシュ値の一部であるショートハッシュと論理位置の情報からなるコンテンツアドレスＣＡを指定する。そして、コンテンツアドレスＣＡがＭＦＩファイルに登録されているか否かを調べる。登録されていなければ、要求されたデータは格納されていないため、エラーを返却する。
【００４６】
一方、読み出し要求にかかるコンテンツアドレスＣＡが登録されている場合には、上記コンテンツアドレスＣＡにて指定される格納位置を特定し、この特定された格納位置に格納されている各フラグメントデータを、読み出し要求されたデータとして読み出す。このとき、各フラグメントが格納されているデータ格納ファイルと、当該データ格納ファイルのうち１つのフラグメントデータの格納位置が分かれば、同一の格納位置から他のフラグメントデータの格納位置を特定することができる。
【００４７】
そして、読み出し要求に応じて読み出した各フラグメントデータからブロックデータＤを復元する。さらに、復元したブロックデータＤを複数連結し、ファイルＡなどの一群のデータに復元して返却する。
【００４８】
次に、上述したように重複排除機能を有するマスタサイト１００（マスタ側ストレージシステム）の記憶装置内に書き込まれたデータを、同じく重複排除機能を有するレプリカサイト２００（レプリカ側ストレージシステム）の記憶装置にレプリケーションするときの動作を説明する。
【００４９】
マスタサイト１００を構成するストレージシステム１の差分チェック制御部２５は、データ記憶部４０に格納されているファイルであるレプリケーション対象ファイルリスト（図３の符号１０１）を特定する（図８ＡのステップＳ１）。レプリケーション対象ファイルリスト１０１を特定する方法としては、レプリケーションジョブを開始した時点のマスタサイト１００とレプリカサイト１００とのファイルシステムのスナップショットを取り、両スナップショットを比較し、更新ファイルを特定する方法や、マスタサイト１００におけるファイルの変更履歴により、更新ファイルを特定する方法、などが考えられる。
【００５０】
そして、スレッド間制御部２１は、レプリケーション対象ファイルリスト１０１に対し、各スレッド（図３の符号１１０）の処理対象を均等に決めておく（図８ＡのステップＳ２）。各スレッド１１０が異なるファイルを処理するために、例えば、ファイルのinode情報をもとにし、処理対象を決めると考えられる。これは事前に処理対象を決めておく方法であるが、別の方法としては、各スレッド１１０が処理したファイルに対して処理済みのフラグ等を設定しておき、次回処理対象を選択する時に、処理済みのフラグが設定されていないファイルのみを選択する方法も考えられる。
【００５１】
続いて、スレッド間制御部２１及びスレッド毎制御部２２により、各スレッド１１０にて同時にレプリケーション処理を開始する（図８ＡのステップＳ３，・・・，Ｓｎ）。つまり、各スレッド１１０にて、図８Ｂの処理が順次実行される。また、ここでは、図９に示すように、スレッド数を４、ファイル数を４にし、各スレッド１１０がファイルを１つずつ処理する場合を説明する。なお、各ファイル１，２，３，４は、図９に示すように、各ブロックデータ（Ａ，Ｂ，Ｃ，Ｃ’等）の組み合わせにより構成されていることとする。
【００５２】
まず、各スレッドは、ブロックデータ制御部３３により、処理するファイルをブロックデータに分割し、当該ブロックデータ（転送候補のデータ：分割データ）のハッシュ値（データ特徴量情報）を計算する（図８ＢのステップＳ１１）。ここでは、ブロックデータのチェックサムを計算する方法も考えられる。続いて、ブロックデータのハッシュ値をハッシュテーブル制御部２３を通じて、ハッシュテーブル４１に存在確認を行う。このとき、参照／更新の衝突が生じないように、ハッシュテーブル４１への操作は参照／更新ロックを取得して行われる。以下では、説明を簡単にするため、各スレッドの処理順番をスレッド１，２，３，４の順とする。
【００５３】
図９に示すように、スレッド１は、ファイル１を処理対象とし、当該ファイル１を構成するブロックデータＡのハッシュ値Ｈ（Ａ）をハッシュテーブル４１（転送データリスト）に確認する（図８ＢのステップＳ１２）。この場合は、ハッシュテーブル４１に存在しないため（図８ＢのステップＳ１２：存在なし）、重複圧縮制御３１を通じて、レプリカサイト２００を構成するストレージシステムにあるブロックデータリスト２０１（レプリカデータリスト）と比較する（図８ＢのステップＳ１３）。すると、図９に示すように、レプリカサイト２００にはＨ（Ａ）に対応するブロックデータＡが存在しない（図８ＢのステップＳ１３：存在なし）。このため、スレッド１は、図１０に示すように、ハッシュテーブル４１の「転送中」にＨ（Ａ）を登録し（図８ＢのステップＳ１４）、Ｈ（Ａ）に対応するブロックデータＡのレプリカサイト２００への転送を始める（図８ＢのステップＳ１５）。
【００５４】
続いて、図１１に示すように、スレッド２は、ファイル２を処理対象とし、当該ファイル２を構成するブロックデータＡ（Ｒ２１）のハッシュ値Ｈ（Ａ）をハッシュテーブル４１に確認する（図８ＢのステップＳ１２）。この場合は、ハッシュテーブル４１の「転送中」に既に存在しているため（図８ＢのステップＳ１２：「転送中」に存在）、Ｈ（Ａ）に対応するブロックデータＡを転送せずに、図１１に示すように、当該ブロックデータＡ（Ｒ２１）のメタデータＭ（Ａ）を転送待ちキャッシュ４２に登録する（図８ＢのステップＳ２０）。
【００５５】
そして、スレッド２は、ファイル２を構成する次のブロックデータＢ（Ｒ２２）の処理を始める（ステップＳ１９：Ｎｏ）。スレッド２は、図１１に示すように、ブロックデータＢ（Ｒ２２）のハッシュ値Ｈ（Ｂ）がハッシュテーブル４１に存在しないため（ステップＳ１２：存在なし）、重複圧縮制御３１を通じて、レプリカサイト２００を構成するストレージシステムにあるブロックデータリスト２０１と比較する（図８ＢのステップＳ１３）。すると、図１１に示すように、レプリカサイト２００にはＨ（Ｂ）に対応するブロックデータＢが存在しないため（図８ＢのステップＳ１３：存在なし）、ハッシュテーブル４１の「転送中」にＨ（Ｂ）を登録し（図８ＢのステップＳ１４）、Ｈ（Ｂ）に対応するブロックデータＢ（Ｒ２２）のレプリカサイト２００への転送を始める（図８ＢのステップＳ１５）。
【００５６】
続いて、図１２に示すように、スレッド３は、ファイル３を処理対象とし、当該ファイル３を構成するブロックデータＡ（Ｒ３１）のハッシュ値Ｈ（Ａ）をハッシュテーブル４１に確認する（図８ＢのステップＳ１２）。この場合は、ハッシュテーブル４１の「転送中」に既に存在しているため（図８ＢのステップＳ１２：「転送中」に存在）、Ｈ（Ａ）に対応するブロックデータＡを転送せずに、図１２に示すように、当該ブロックデータＡ（Ｒ３１）のメタデータＭ（Ａ）を転送待ちキャッシュ４２に登録する（図８ＢのステップＳ２０）。続いて、スレッド３は、ファイル３を構成する次のブロックデータＢ（Ｒ３２）の処理を始めるが（図８ＢのステップＳ１９：Ｎｏ）、当該ブロックデータＢのハッシュ値Ｈ（Ｂ）も「転送中」に既に存在しているため、ブロックデータＢを転送せずに、当該ブロックデータＢ（Ｒ３２）のメタデータＭ（Ｂ）を転送待ちキャッシュ４２に登録する。
【００５７】
さらに、スレッド３は、ファイル３を構成するさらに次のブロックデータＣ’（Ｒ３３）の処理を始める（ステップＳ１９：Ｎｏ）。この場合、ブロックデータＣ’（Ｒ３３）のハッシュ値Ｈ（Ｃ’）がハッシュテーブル４１に存在しないため（ステップＳ１２：存在なし）、重複圧縮制御３１を通じて、レプリカサイト２００を構成するストレージシステムにあるブロックデータリスト２０１と比較する（図８ＢのステップＳ１３）。すると、図１２に示すように、レプリカサイト２００にはＨ（Ｃ’）に対応するブロックデータＣ’が存在しないため（図８ＢのステップＳ１３：存在なし）、ハッシュテーブル４１の「転送中」にＨ（Ｃ’）を登録し（図８ＢのステップＳ１４）、Ｈ（Ｃ’）に対応するブロックデータＣ’のレプリカサイト２００への転送を始める（図８ＢのステップＳ１５）。
【００５８】
続いて、図１３に示すように、スレッド４は、ファイル４を処理対象とするが、当該ファイル４を構成するブロックデータＡ（Ｒ４１）、ブロックデータＢ（Ｒ４２）のハッシュ値Ｈ（Ａ），Ｈ（Ｂ）がハッシュテーブル４１の「転送中」に既に存在している。このため、上述同様に、ブロックデータＡ，Ｂを転送せずに、メタデータＭ（Ａ），Ｍ（Ｂ）を転送待ちキャッシュ４２に登録する。そして、スレッド４、ファイル４を構成するさらに次のブロックデータＣ（Ｒ４３）の処理を始めるが、当該ブロックデータＣのハッシュ値Ｈ（Ｃ）がハッシュテーブル４１に存在しないため（図８ＢのステップＳ１２：存在なし）、重複圧縮制御３１を通じて、レプリカサイト２００を構成するストレージシステムにあるブロックデータリスト２０１と比較する。すると、図１３に示すように、レプリカサイト２００にはＨ（Ｃ）に対応するブロックデータＣが存在しないため（図８ＢのステップＳ１３：存在なし）、ハッシュテーブル４１の「転送中」にＨ（Ｃ）を登録し（図８ＢのステップＳ１４）、Ｈ（Ｃ）に対応するブロックデータＣのレプリカサイト２００への転送を始める（図８ＢのステップＳ１５）。
【００５９】
その後、図１４に示すように、スレッド１は、ブロックデータＡ（Ｒ１１）のレプリカサイト１００への転送を完了し（図８ＢのステップＳ１５）、当該ブロックデータＡのメタデータの転送も完了すると（図８ＢのステップＳ１６）、ハッシュテーブル４１のＨ（Ａ）を「転送中」から「転送済み」に移動する（図８ＢのステップＳ１７）。これに応じて、レプリカサイト２００は、図１４に示すように、マスタサイト１００から受信したブロックデータＡ（Ｒ５１）を保存し、ブロックデータリスト２０１を更新する（図８ＢのステップＳ１８）。そして、スレッド１は、ファイル１を構成する次のブロックデータＢ（Ｒ１２）の処理を始める（図８ＢのステップＳ１９：Ｎｏ）。
【００６０】
続いて、スレッド１は、次のブロックデータＢ（Ｒ１２）の処理を始めるが、当該ブロックデータＢ（Ｒ１２）のハッシュ値Ｈ（Ｂ）がハッシュテーブル４１の「転送中」に既に存在しているため（図８ＢのステップＳ１２：「転送中」に存在）、上述同様に、ブロックデータＢを転送せずに、メタデータＭ（Ｂ）を転送待ちキャッシュ４２に登録する（図８ＢのステップＳ２０）。その後、さらに次のブロックデータＣ（Ｒ１３）の処理を始めるが、当該ブロックデータＣのハッシュ値Ｈ（Ｃ）もハッシュテーブル４１の「転送中」に既に存在しているため（図８ＢのステップＳ１２：「転送中」に存在）、ブロックデータＣを転送せずに、メタデータＭ（Ｃ）を転送待ちキャッシュ４２に登録する（図８ＢのステップＳ２０）。これにより、スレッド１は、ファイル１を構成するすべてのブロックデータＡ，Ｂ，Ｃの処理が完了したため（図８ＢのステップＳ１９：Ｙｅｓ）、図１４に示すようにスレッド１の状態は完了となる。
【００６１】
続いて、図１５に示すように、スレッド２は、ブロックデータＢ（Ｒ２２）のレプリカサイト１００への転送を完了し（図８ＢのステップＳ１５）、当該ブロックデータＢのメタデータの転送も完了すると（図８ＢのステップＳ１６）、ハッシュテーブル４１のＨ（Ｂ）を「転送中」から「転送済み」に移動する（図８ＢのステップＳ１７）。これに応じて、レプリカサイト２００は、図１５に示すように、マスタサイト１００から受信したブロックデータＢ（Ｒ６１）を保存し、ブロックデータリスト２０１を更新する（図８ＢのステップＳ１８）。そして、スレッド２は、ファイル２を構成する次のブロックデータＡ（Ｒ２３）の処理を始める（図８ＢのステップＳ１９：Ｎｏ）。
【００６２】
そして、スレッド２は、次のブロックデータＡ（Ｒ２３）の処理を始めるが、当該ブロックデータＡ（Ｒ２３）のハッシュ値Ｈ（Ａ）は上述したスレッド１による転送により、ハッシュテーブル４１の「転送済み」に既に存在している（図８ＢのステップＳ１２：「転送済み」に存在）。このため、スレッド２は、ブロックデータＡを転送せずに、当該ブロックデータＡのメタデータＭ（Ａ）のみをレプリカサイト２００に転送する処理を始める（図８ＢのステップＳ２２）。
【００６３】
続いて、図１６に示すように、スレッド３は、ブロックデータＣ’（Ｒ３３）のレプリカサイト１００への転送を完了し（図８ＢのステップＳ１５）、当該ブロックデータＣ’のメタデータの転送も完了すると（図８ＢのステップＳ１６）、ハッシュテーブル４１のＨ（Ｃ’）を「転送中」から「転送済み」に移動する（図８ＢのステップＳ１７）。これに応じて、レプリカサイト２００は、図１６に示すように、マスタサイト１００から受信したブロックデータＣ’（Ｒ７１）を保存し、ブロックデータリスト２０１を更新する（図８ＢのステップＳ１８）。これにより、スレッド３は、ファイル３を構成するすべてのブロックデータＡ，Ｂ，Ｃ’の処理が完了したため（図８ＢのステップＳ１９：Ｙｅｓ）、図１６に示すようにスレッド３の状態は完了となる。
【００６４】
続いて、図１７に示すように、スレッド４は、ブロックデータＣ（Ｒ４３）のレプリカサイト１００への転送を完了し（図８ＢのステップＳ１５）、当該ブロックデータＣのメタデータの転送も完了すると（図８ＢのステップＳ１６）、ハッシュテーブル４１のＨ（Ｃ）を「転送中」から「転送済み」に移動する（図８ＢのステップＳ１７）。これに応じて、レプリカサイト２００は、図１７に示すように、マスタサイト１００から受信したブロックデータＣ（Ｒ８１）を保存し、ブロックデータリスト２０１を更新する（図８ＢのステップＳ１８）。これにより、スレッド４は、ファイル４を構成するすべてのブロックデータＡ，Ｂ，Ｃの処理が完了したため（図８ＢのステップＳ１９：Ｙｅｓ）、図１７に示すようにスレッド４の状態は完了となる。
【００６５】
その後、図１８に示すように、スレッド２は、ブロックデータＡ（Ｒ２３）のメタデータＭ（Ａ）のレプリカサイト１００への転送を完了する（図８ＢのステップＳ２２）。これに応じて、レプリカサイト２００は、転送されたメタデータＭ（Ａ）（Ｒ６２参照）を保存する（図８ＢのステップＳ２３）。これにより、スレッド２は、ファイル２を構成するすべてのブロックデータＡ，Ｂ，Ａの処理が完了したため（図８ＢのステップＳ１９：Ｙｅｓ）、図１８に示すようにスレッド２の状態は完了となる。
【００６６】
以上のように、すべてのスレッド１，２，３，４の状態は完了となると（図８ＣのステップＳ３１）、マスタサイト１００は、転送待ちキャッシュ制御部２４により、転送待ちキャッシュ４２にあるメタデータを処理し、すべてをレプリカサイト２００転送する（図８ＣのステップＳ３２）。レプリカサイト２００は、図１９に示すように、受信したメタデータ（Ｒ５２，Ｒ５３，Ｒ６３，Ｒ７２，Ｒ７３，Ｒ８２，Ｒ８３参照）を保存する（図８ＣのステップＳ３３）。
【００６７】
マスタサイト１００は、最後に、図２０に示すように、ハッシュテーブル４１と転送待ちキャッシュ４２をすべてクリアする（図８ＣのステップＳ３４）。そして、レプリカサイト２００は、ブロックデータ制御部３３とメタデータ制御部３２により、図２１に示すように、受け取ったブロックデータとメタデータをもとに、各ファイル１，２，３，４を生成し、ファイルリスト２０２の更新を行う（図８ＣのステップＳ３５）。これにより、レプリケーション処理はすべて完了し、本レプリケーションジョブは完了となる。
【００６８】
以上のように、本発明におけるレプリケーションシステムによると、まず、ネットワークＮ（レプリケーション回線）には重複してブロックデータを一切転送することがない。このため、レプリケーション回線を有効に利用でき、レプリケーション処理の効率化、高速化を図ることができる。特に、同じレプリケーションジョブにおけるレプリケーション対象ファイルに重複ブロックデータが存在している場合であっても、レプリケーション回線Ｎを経由してレプリカサイト２００に確認する必要がなく、マスタサイト２００にて重複判断ができる。このため、レプリケーション回線Ｎでのやり取りがなくなるため、レプリケーション処理の効率化及び高速化を図ることができる。
【００６９】
ここで、上記では、事前に各スレッドにレプリケーション対象ファイルを均等に配置する場合を例示したが、各スレッドは毎回、レプリケーション対象ファイルを取得するよう構成してもよい。これにより、レプリケーション対象ファイルの特徴（サイズ／重複率等）によって一部のスレッドが早く完了し、マルチスレッド処理の効率が低下することを抑制することができる。
【００７０】
また、転送待ちキャッシュ４２にあるメタデータを処理する別の方法として、すべてのブロックデータの処理を完了したスレッドは、転送待ちキャッシュ４２にある自スレッドが登録したメタデータに対し、定期的に、ハッシュテーブル４１の「転送済み」に確認し、ブロックデータのハッシュ値のエントリーが存在している場合は、登録したメタデータをレプリカサイト２００に転送する方法も考えられる。
【００７１】
また、レプリケーションジョブが完了後、ハッシュテーブル４１をクリアするが、レプリケーションジョブにより、ハッシュテーブル４１にエントリーが膨大になり、検索が重くなった場合は、レプリケーションジョブ中でも最適化により一部またはすべてのエントリーをクリアする実装が考えられる。また、マスタサイト２００における重複判断のヒット率が高めるため、検索速度とヒット率のバランスを考慮し、複数のレプリケーションジョブが完了した後に、最適化により一部またはすべてのエントリーをクリアする実装も考えられる。
【００７２】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるレプリケーションシステム（図２２参照）、マスタ側ストレージシステム、プログラム、レプリケーション方法の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
【００７３】
（付記１）
マスタ側記憶装置３０１を備えたマスタ側ストレージシステム３００と、レプリカ側記憶装置４０１を備えたレプリカ側ストレージシステム４００と、がネットワークＮを介して接続されており、
前記マスタ側ストレージシステム３００は、前記マスタ側記憶装置に記憶されたデータを、それぞれが並列に前記レプリカ側ストレージシステムに対して転送する複数のデータ転送手段３０２を備えると共に、
前記レプリカ側ストレージシステム４００は、前記マスタ側ストレージシステムから送信されたデータを前記レプリカ側記憶装置に記憶して前記マスタ側記憶装置に記憶されているデータのレプリカを生成するレプリカ手段４０２を備え、
前記マスタ側ストレージシステム３００の前記各データ転送手段３０１は、前記レプリカ側ストレージシステムに対する転送候補であるデータの内容に基づく当該データの特徴量を表すデータ特徴量情報を生成して、当該転送候補であるデータの前記データ特徴量情報が、前記レプリカ側ストレージシステムに対して転送中あるいは転送済みのデータの前記データ特徴量情報が記憶された転送データリストに存在するか否かを調べ、当該転送データリストに前記データ特徴量情報が存在している転送候補のデータは前記レプリカ側ストレージシステムに転送せず、前記転送データリストに前記データ特徴量情報が存在していない転送候補のデータは前記レプリカ側ストレージシステムに転送する、
レプリケーションシステム。
【００７４】
（付記２）
付記１に記載のレプリケーションシステムであって、
前記各データ転送手段は、それぞれが異なる所定単位のデータを分割した分割データを転送候補とし、前記分割データの内容に基づく当該分割データの特徴量を表す前記データ特徴量情報を生成して前記転送データリストに存在するか否かを調べ、当該転送データリストに前記データ特徴量情報が存在している前記分割データは前記レプリカ側ストレージシステムに転送せず、前記転送データリストに前記データ特徴量情報が存在していない前記分割データは前記レプリカ側ストレージシステムに転送すると共に当該分割データの前記データ特徴量情報を前記転送データリストに登録する、
レプリケーションシステム。
【００７５】
（付記３）
付記２に記載のレプリケーションシステムであって、
前記各データ転送手段は、前記分割データの前記データ特徴量情報が前記転送データリストに存在しない場合に、当該分割データの前記データ特徴量情報が、前記レプリカ側記憶装置に記憶されている前記分割データの前記データ特徴量情報が登録されたレプリカデータリストに存在するか否かを調べ、当該レプリカデータリストに前記データ特徴量情報が存在している前記分割データは前記レプリカ側ストレージシステムに転送せず、前記レプリカデータリストに前記データ特徴量情報が存在していない前記分割データは前記レプリカ側ストレージシステムに転送すると共に当該分割データの前記データ特徴量情報を前記転送データリストに登録する、
レプリケーションシステム。
【００７６】
（付記４）
付記２又は３に記載のレプリケーションシステムであって、
前記各データ転送手段は、前記分割データを前記レプリカ側ストレージシステムに転送しない場合に、当該分割データの分割前における前記所定単位のデータを構築するための情報を少なくとも含むメタデータを前記レプリカ側ストレージシステムに転送し、
前記レプリカ側ストレージシステムの前記レプリカ手段は、前記マスタ側ストレージシステムから転送された前記分割データ及び前記メタデータに基づいて、前記マスタ側記憶装置に記憶されているデータのレプリカを生成する、
レプリケーションシステム。
【００７７】
（付記５）
付記４に記載のレプリケーションシステムであって、
前記各データ転送手段は、前記分割データを前記レプリカ側ストレージシステムに転送中である場合に、当該分割データの前記データ特徴量情報を転送中である旨の情報と共に前記転送データリストに登録し、前記分割データを前記レプリカ側ストレージシステムに転送済みである場合に、当該分割データの前記データ特徴量情報を転送済みである旨の情報と共に前記転送データリストに登録し、
前記転送データリストに転送中である旨の情報と共に登録されて存在する前記データ特徴量情報に対応する前記分割データの前記メタデータは、当該分割データの前記データ特徴量情報が転送済みである旨の情報と共に前記転送データリストに登録された後に前記レプリカ側ストレージシステムに転送する、
レプリケーションシステム。
【００７８】
（付記６）
マスタ側記憶装置を備えたマスタ側ストレージシステムと、レプリカ側記憶装置を備えたレプリカ側ストレージシステムと、がネットワークを介して接続されたレプリケーションシステムによるレプリケーション方法であって、
前記マスタ側ストレージシステムが、前記マスタ側記憶装置に記憶されたデータを、複数のデータ転送手段にて並列に前記レプリカ側ストレージシステムに対して転送する際に、前記レプリカ側ストレージシステムに対する転送候補であるデータの内容に基づく当該データの特徴量を表すデータ特徴量情報を生成して、当該転送候補であるデータの前記データ特徴量情報が、前記レプリカ側ストレージシステムに対して転送中あるいは転送済みのデータの前記データ特徴量情報が記憶された転送データリストに存在するか否かを調べ、当該転送データリストに前記データ特徴量情報が存在している転送候補のデータは前記レプリカ側ストレージシステムに転送せず、前記転送データリストに前記データ特徴量情報が存在していない転送候補のデータは前記レプリカ側ストレージシステムに転送し、
前記レプリカ側ストレージシステムが、前記マスタ側ストレージシステムから送信されたデータを前記レプリカ側記憶装置に記憶して前記マスタ側記憶装置に記憶されているデータのレプリカを生成する、
レプリケーション方法。
【００７９】
（付記７）
付記６に記載のレプリケーション方法であって、
前記各データ転送手段が、それぞれが異なる所定単位のデータを分割した分割データを転送候補とし、前記分割データの内容に基づく当該分割データの特徴量を表す前記データ特徴量情報を生成して前記転送データリストに存在するか否かを調べ、当該転送データリストに前記データ特徴量情報が存在している前記分割データは前記レプリカ側ストレージシステムに転送せず、前記転送データリストに前記データ特徴量情報が存在していない前記分割データは前記レプリカ側ストレージシステムに転送すると共に当該分割データの前記データ特徴量情報を前記転送データリストに登録する、
レプリケーション方法。
【００８０】
（付記８）
装備されたレプリカ側記憶装置に転送されたデータのレプリカを生成するレプリカ側ストレージシステムにネットワークを介して接続され、マスタ側記憶装置を備えたマスタ側ストレージシステムであって、
前記マスタ側記憶装置に記憶されたデータを、それぞれが並列に前記レプリカ側ストレージシステムに対して転送する複数のデータ転送手段を備えると共に、
前記各データ転送手段は、前記レプリカ側ストレージシステムに対する転送候補であるデータの内容に基づく当該データの特徴量を表すデータ特徴量情報を生成して、当該転送候補であるデータの前記データ特徴量情報が、前記レプリカ側ストレージシステムに対して転送中あるいは転送済みのデータの前記データ特徴量情報が記憶された転送データリストに存在するか否かを調べ、当該転送データリストに前記データ特徴量情報が存在している転送候補のデータは前記レプリカ側ストレージシステムに転送せず、前記転送データリストに前記データ特徴量情報が存在していない転送候補のデータは前記レプリカ側ストレージシステムに転送する、
マスタ側ストレージシステム。
【００８１】
（付記９）
付記８に記載のマスタ側ストレージシステムであって、
前記各データ転送手段は、それぞれが異なる所定単位のデータを分割した分割データを転送候補とし、前記分割データの内容に基づく当該分割データの特徴量を表す前記データ特徴量情報を生成して前記転送データリストに存在するか否かを調べ、当該転送データリストに前記データ特徴量情報が存在している前記分割データは前記レプリカ側ストレージシステムに転送せず、前記転送データリストに前記データ特徴量情報が存在していない前記分割データは前記レプリカ側ストレージシステムに転送すると共に当該分割データの前記データ特徴量情報を前記転送データリストに登録する、
マスタ側ストレージシステム。
【００８２】
（付記１０）
装備されたレプリカ側記憶装置に転送されたデータのレプリカを生成するレプリカ側ストレージシステムにネットワークを介して接続され、マスタ側記憶装置を備えたマスタ側ストレージ装置に、
前記マスタ側記憶装置に記憶されたデータを、それぞれが並列に前記レプリカ側ストレージシステムに対して転送する複数のデータ転送手段を実現すると共に、
前記各データ転送手段は、前記レプリカ側ストレージシステムに対する転送候補であるデータの内容に基づく当該データの特徴量を表すデータ特徴量情報を生成して、当該転送候補であるデータの前記データ特徴量情報が、前記レプリカ側ストレージシステムに対して転送中あるいは転送済みのデータの前記データ特徴量情報が記憶された転送データリストに存在するか否かを調べ、当該転送データリストに前記データ特徴量情報が存在している転送候補のデータは前記レプリカ側ストレージシステムに転送せず、前記転送データリストに前記データ特徴量情報が存在していない転送候補のデータは前記レプリカ側ストレージシステムに転送する、
ことを実現させるためのプログラム。
【００８３】
（付記１１）
付記１０に記載のプログラムであって、
前記各データ転送手段は、それぞれが異なる所定単位のデータを分割した分割データを転送候補とし、前記分割データの内容に基づく当該分割データの特徴量を表す前記データ特徴量情報を生成して前記転送データリストに存在するか否かを調べ、当該転送データリストに前記データ特徴量情報が存在している前記分割データは前記レプリカ側ストレージシステムに転送せず、前記転送データリストに前記データ特徴量情報が存在していない前記分割データは前記レプリカ側ストレージシステムに転送すると共に当該分割データの前記データ特徴量情報を前記転送データリストに登録する、
プログラム。
【００８４】
なお、上述したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されている。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【００８５】
以上、上記実施形態等を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。
【符号の説明】
【００８６】
１  ストレージシステム
２  アクセラレータノード
３  ストレージノード
１０  制御装置
２０  レプリケーション制御部
２１  スレッド間制御部
２２  スレッド毎制御部
２３  ハッシュテーブル制御部
２４  転送待ちキャッシュ制御部
２５  差分チェック制御部
２６  レプリケーション送受信制御部
３１  重複圧縮制御部
３２  メタデータ制御部
３３  ブロックデータ制御部
４０  データ記憶部
４１  ハッシュテーブル
４２  転送待ちキャッシュ
４３  メタデータ
４４  ブロックデータ
５０  通信部
１００  マスタサイト
２００  レプリカサイト
３００  マスタ側ストレージシステム
３０１  マスタ側記憶装置
３０２  データ転送手段
４００  レプリカ側ストレージシステム
４０１  レプリカ側記憶装置
４０２  レプリカ手段
【図１】
2014178827.tif 000003
【図２】
2014178827.tif 000004
【図３】
2014178827.tif 000005
【図４】
2014178827.tif 000006
【図５】
2014178827.tif 000007
【図６】
2014178827.tif 000008
【図７】
2014178827.tif 000009
【図８Ａ】
2014178827.tif 000010
【図８Ｂ】
2014178827.tif 000011
【図８Ｃ】
2014178827.tif 000012
【図９】
2014178827.tif 000013
【図１０】
2014178827.tif 000014
【図１１】
2014178827.tif 000015
【図１２】
2014178827.tif 000016
【図１３】
2014178827.tif 000017
【図１４】
2014178827.tif 000018
【図１５】
2014178827.tif 000019
【図１６】
2014178827.tif 000020
【図１７】
2014178827.tif 000021
【図１８】
2014178827.tif 000022
【図１９】
2014178827.tif 000023
【図２０】
2014178827.tif 000024
【図２１】
2014178827.tif 000025
【図２２】
2014178827.tif 000026