(57)【要約】【課題】重複排除に伴う処理負担を低減すること。【解決手段】論理領域と物理領域２０のアドレスとを対応付けるためのメタ情報１１ａを記憶する記憶部１１と、第１の論理領域２１にあるデータを第２の論理領域２２にコピーするとき、メタ情報１１ａのうち第１の論理領域２１と物理領域２０のアドレスとを対応付けるための第１のメタ情報を用いて取得した、第１の論理領域２１におけるデータのアドレスに対応する物理領域２０の第１のアドレスを、メタ情報１１ａのうち第２の論理領域２２と物理領域２０のアドレスとを対応付けるための第２のメタ情報における物理アドレスとして、第２の論理領域２２におけるデータのコピー先アドレスに対応付けることでコピーを完了する制御部１２とを有する、ストレージ制御装置１０が提供される。【選択図】図１
2018181173.tif 000002
【特許請求の範囲】
【請求項１】
論理領域と物理領域のアドレスとを対応付けるためのメタ情報を記憶する記憶部と、
第１の論理領域にあるデータを第２の論理領域にコピーするとき、前記メタ情報のうち前記第１の論理領域と前記物理領域のアドレスとを対応付けるための第１のメタ情報を用いて取得した、前記第１の論理領域における前記データのアドレスに対応する前記物理領域の第１のアドレスを、
前記メタ情報のうち前記第２の論理領域と前記物理領域のアドレスとを対応付けるための第２のメタ情報における物理アドレスとして、前記第２の論理領域における前記データのコピー先アドレスに対応付けることで前記コピーを完了する制御部と
を有する、ストレージ制御装置。
【請求項２】
前記制御部は、前記データが前記第１の論理領域に書き込まれるとき、前記第１の論理領域に関する情報を前記データに付与し、前記データを前記第１の論理領域から前記第２の論理領域にコピーするとき、前記データに前記第２の論理領域に関する情報をさらに付与する
請求項１に記載のストレージ制御装置。
【請求項３】
前記制御部は、前記メタ情報のデータサイズが所定サイズに到達したとき、前記メタ情報を前記物理領域に書き込むと共に、前記メタ情報の書き込み先となる前記物理領域内の位置を示す位置情報を生成する
請求項２に記載のストレージ制御装置。
【請求項４】
前記制御部は、前記コピーの完了前に、前記第２の論理領域における前記データのコピー先アドレスに新たなデータが書き込まれるとき、前記第１のアドレスを前記データのコピー先アドレスに対応付けた後で、前記第２のメタ情報を用いて、前記新たなデータの書き込み先となる前記物理領域の第２のアドレスと、前記新たなデータが書き込まれる前記第２の論理領域のアドレスとを対応付ける
請求項１に記載のストレージ制御装置。
【請求項５】
前記制御部は、前記第１の論理領域における前記データのアドレスに新たなデータが書き込まれるとき、前記新たなデータが前記第１のアドレスとは異なる前記物理領域の第３のアドレスに書き込まれるように制御すると共に、前記第１のメタ情報を用いて、前記第１の論理領域における前記データのアドレスと前記第３のアドレスとを対応付ける
請求項１に記載のストレージ制御装置。
【請求項６】
論理領域と物理領域のアドレスとを対応付けるためのメタ情報を記憶部に記憶させ、
第１の論理領域にあるデータを第２の論理領域にコピーするとき、前記メタ情報のうち前記第１の論理領域と前記物理領域のアドレスとを対応付けるための第１のメタ情報を用いて取得した、前記第１の論理領域における前記データのアドレスに対応する前記物理領域の第１のアドレスを、
前記メタ情報のうち前記第２の論理領域と前記物理領域のアドレスとを対応付けるための第２のメタ情報における物理アドレスとして、前記第２の論理領域における前記データのコピー先アドレスに対応付けることで前記コピーを完了する
処理をコンピュータに実行させる、ストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、及びストレージ制御プログラムに関する。
【背景技術】
【０００２】
業務サーバなどのサーバ装置が扱う大量のデータは、例えば、記憶容量の大きなストレージ装置を有するストレージシステムにより管理される。ストレージシステムでは、論理的な記憶領域（論理領域）と、ストレージ装置に搭載される記憶装置の記憶領域（物理領域）とを利用してデータのＩ／Ｏ（Input/Output）が処理される。
【０００３】
記憶装置としては、例えば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などの記録媒体や、複数の記録媒体を組み合わせて利用するＲＡＩＤ（Redundant Arrays of Inexpensive Disks）装置などがある。複数の記憶装置の物理領域を纏めて１つの仮想的な物理領域（ストレージプール／ディスクプール）として利用する技術もある。キャッシュを搭載するストレージ装置の場合、物理領域として一時的にキャッシュが利用される場合もある。
【０００４】
サーバ装置によるデータへのアクセスは論理領域を介して実施される。ある論理領域に対するデータの書き込みがあると、ストレージ装置は、データが書き込まれる論理領域のアドレス（論理アドレス）に対応する物理領域のアドレス（物理アドレス）にデータを書き込む。このとき、新たに書き込まれるデータと同じ内容の他のデータが物理領域に存在しても、書き込み先の論理アドレスと、他のデータの論理アドレスとが異なる場合、他のデータとは異なる物理アドレスにデータが書き込まれる。
【０００５】
ＨＤＤやＳＳＤなどのハードウェア資源により提供される物理領域の容量は有限であるため、同じ内容のデータが複数の論理アドレスに書き込まれる場合に、これら複数の論理アドレスを同じ物理アドレスに対応付けて物理領域を有効利用する方法がある。この方法は重複排除と呼ばれる場合がある。
【０００６】
なお、ある時点における記憶領域のスナップショットを作成するストレージシステムにおいて、スナップショットの作成時にデータのハッシュ値を利用して同じデータの存在を判定する方法が提案されている。この方法では、同じデータが存在する場合に、スナップショットの作成時に既に存在するデータが利用される。また、ハッシュ値が同じ場合にデータ同士を比較し、比較結果に応じて重複データを排除する方法が提案されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−７２７４６号公報
【特許文献２】特開２００９−２５１７２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
論理領域の間でデータのコピーを実施する場合、コピー対象のデータは、コピー先の論理アドレスに対応する物理アドレスに書き込まれる。そのため、物理領域には、コピー元のデータ及びコピー先のデータが格納される。しかし、コピー元のデータとコピー先のデータとは同じデータである。同じ論理領域内にある２つの論理アドレス間でデータをコピーする場合も同様に、２つの論理アドレスにそれぞれ対応する２つの物理アドレスに同じデータが格納される。コピー後に上記の重複排除を実施すれば物理領域を有効活用できるが、重複データを処理するための負担が生じる。
【０００９】
１つの側面によれば、本発明の目的は、重複排除に伴う処理負担を低減することが可能なストレージ制御装置、及びストレージ制御プログラムを提供することにある。
【課題を解決するための手段】
【００１０】
一態様によれば、論理領域と物理領域のアドレスとを対応付けるためのメタ情報を記憶する記憶部と、第１の論理領域にあるデータを第２の論理領域にコピーするとき、メタ情報のうち第１の論理領域と物理領域のアドレスとを対応付けるための第１のメタ情報を用いて取得した、第１の論理領域におけるデータのアドレスに対応する物理領域の第１のアドレスを、メタ情報のうち第２の論理領域と物理領域のアドレスとを対応付けるための第２のメタ情報における物理アドレスとして、第２の論理領域におけるデータのコピー先アドレスに対応付けることでコピーを完了する制御部とを有する、ストレージ制御装置が提供される。
【発明の効果】
【００１１】
重複排除に伴う処理負担を低減することができる。
【図面の簡単な説明】
【００１２】
【図１】第１実施形態に係るストレージ制御装置の一例を示した図である。
【図２】第２実施形態に係るストレージシステムの一例を示した図である。
【図３】第２実施形態に係るサーバの機能を実現可能なハードウェアの一例を示したブロック図である。
【図４】第２実施形態に係るノードの機能を実現可能なハードウェア及びソフトウェアスタックの一例を示したブロック図である。
【図５】複数のノードに対するデータの分散配置について説明するための図である。
【図６】ストレージプールに書き込まれるユーザデータ及びメタ情報の管理方法について説明するための図である。
【図７】メタアドレス情報の構造及び内容について説明するための図である。
【図８】メタ情報の構造及び内容について説明するための図である。
【図９】メタアドレス情報及びメタ情報のキャッシュ及びストレージプールへの書き込み方法について説明するための図である。
【図１０】書き込み処理の流れ（重複なしの場合）について説明するためのシーケンス図である。
【図１１】書き込み処理の流れ（重複ありの場合）について説明するためのシーケンス図である。
【図１２】読み出し処理の流れについて説明するためのシーケンス図である。
【図１３】スナップショット系コピーの例（ＳｎａｐＯＰＣ／ＳｎａｐＯＰＣ＋）について説明するための図である。
【図１４】スナップショット系コピー中のＩ／Ｏ処理について説明するための図である。
【図１５】第２実施形態に係るスナップショット系重複排除コピー中のＩ／Ｏ処理（コピー元ＷＲＩＴＥの場合）について説明するための図である。
【図１６】第２実施形態に係るスナップショット系重複排除コピー中のＩ／Ｏ処理（コピー先ＷＲＩＴＥの場合）について説明するための図である。
【図１７】バックアップ系コピーの例（ＱｕｉｃｋＯＰＣ）について説明するための図である。
【図１８】第２実施形態に係るバックアップ系重複排除コピー中のＩ／Ｏ処理（初期コピー＃１）について説明するための図である。
【図１９】第２実施形態に係るバックアップ系重複排除コピー中のＩ／Ｏ処理（初期コピー＃２）について説明するための図である。
【図２０】第２実施形態に係る重複排除コピー中のＩ／Ｏ処理（初期コピー）の流れを示した第１のフロー図である。
【図２１】第２実施形態に係る重複排除コピー中のＩ／Ｏ処理（初期コピー）の流れを示した第２のフロー図である。
【図２２】第２実施形態に係る重複排除コピー中の書き込みＩ／Ｏ処理（コピー中ＷＲＩＴＥ）の流れを示した第１のフロー図である。
【図２３】第２実施形態に係る重複排除コピー中の書き込みＩ／Ｏ処理（コピー中ＷＲＩＴＥ）の流れを示した第２のフロー図である。
【発明を実施するための形態】
【００１３】
以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。
【００１４】
＜１．第１実施形態＞
図１を参照しながら、第１実施形態について説明する。第１実施形態は、コピーされるデータの重複排除に伴う処理負担を低減する方法に関する。図１は、第１実施形態に係るストレージ制御装置の一例を示した図である。なお、図１に示したストレージ制御装置１０は、第１実施形態に係るストレージ制御装置の一例である。
【００１５】
図１に示すように、ストレージ制御装置１０は、記憶部１１及び制御部１２を有する。
記憶部１１は、ＲＡＭ（Random Access Memory）などの揮発性記憶装置、或いは、ＨＤＤやフラッシュメモリなどの不揮発性記憶装置である。制御部１２は、１つ又は複数のＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などのプロセッサである。制御部１２は、例えば、記憶部１１又は他のメモリ（非図示）に記憶されたプログラムを実行する。
【００１６】
ストレージ制御装置１０は、物理領域２０に接続される。物理領域２０は、例えば、ＨＤＤ、ＳＳＤ、ＲＡＩＤ装置などの記憶装置により形成される記憶領域、或いは、複数の記憶領域により形成されるストレージプールである。物理領域２０には、一例として、第１の論理領域２１の少なくとも一部、及び第２の論理領域２２の少なくとも一部が対応付けられる。
【００１７】
第１の論理領域２１及び第２の論理領域２２のアドレス（論理アドレス）と、物理領域２０のアドレス（物理アドレス）との関係は、記憶部１１に格納されるメタ情報１１ａにより規定される。図１に例示したメタ情報１１ａは、第１の論理領域２１に関する情報３１と、第２の論理領域２２に関する情報３２とを含む。
【００１８】
第１の論理領域２１に関する情報３１は、第１の論理領域２１の論理アドレスと、物理領域２０の物理アドレスとを対応付ける。第２の論理領域２２に関する情報３２は、第２の論理領域２２の論理アドレスと、物理領域２０の物理アドレスとを対応付ける。
【００１９】
第１の論理領域２１の枠内で「＃００」と表記されたブロックは、論理アドレス「ｌｇＡｄｄ＃００」にあるデータを表す。一方、物理領域２０の枠内で「＃００」と表記されたブロックは、物理アドレス「ｐｈＡｄｄ＃０」にあるデータを表す。「ｌｇＡｄｄ＃００」と「ｐｈＡｄｄ＃０」とは第１の論理領域２１に関する情報３１の中で対応付けられている。「＃０１」「＃０２」についても同様である。なお、説明の都合上、コピー前の状態において第２の論理領域２２にはデータが格納されていないとする。
【００２０】
第１の論理領域２１にあるデータを第２の論理領域２２にコピーするとき、制御部１２は、メタ情報１１ａを用いて、第１の論理領域２１におけるデータのアドレスに対応する物理領域２０のアドレスを、第２の論理領域２２におけるデータのコピー先アドレスに対応付けてコピーを完了する。
【００２１】
例えば、第１の論理領域２１のｌｇＡｄｄ＃００にあるデータをそれぞれ第２の論理領域２２のｌｇＡｄｄ＃１０にコピーする場合、制御部１２は、第１の論理領域２１に関する情報３１からｌｇＡｄｄ＃００に対応するｐｈＡｄｄ＃０を取得する。そして、制御部１２は、第２の論理領域２２に関する情報３２のうち、コピー先アドレスであるｌｇＡｄｄ＃１０に対応する物理アドレスの欄に「ｐｈＡｄｄ＃０」と記載する。つまり、制御部１２は、ｌｇＡｄｄ＃１０とｐｈＡｄｄ＃０とを対応付ける。
【００２２】
ｌｇＡｄｄ＃１０とｐｈＡｄｄ＃０とを対応付けた制御部１２は、コピーの状態を管理するための完了情報１１ｂのうち、ｌｇＡｄｄ＃１０に対応する状態の情報を「完了」に更新する。なお、完了情報１１ｂは、記憶部１１に格納される。同様に、制御部１２は、ｌｇＡｄｄ＃１１にｐｈＡｄｄ＃１を対応付け、ｌｇＡｄｄ＃１２にｐｈＡｄｄ＃２を対応付ける。そして、制御部１２は、ｌｇＡｄｄ＃１１、＃１２に対応する状態の情報を「完了」に更新する。
【００２３】
上記のように、メタ情報１１ａの更新をもってコピーを完了とすることで同じデータが物理領域２０に重複して格納されずに済み、物理領域２０を有効活用することができる。コピー後に重複排除する場合には物理領域２０のコピー先アドレスにデータを一旦書き込み、その後で削除する処理が生じるが、上述した第１実施形態の技術を適用することで、無駄な書き込み及び削除の処理を省略することができる。その結果、重複排除に伴う処理負担を低減することができる。
【００２４】
以上、第１実施形態について説明した。
＜２．第２実施形態＞
次に、第２実施形態について説明する。第２実施形態は、重複排除機能を有するストレージシステムに関する。
【００２５】
［２−１．システム］
図２を参照しながら、第２実施形態に係るストレージシステムについて説明する。図２は、第２実施形態に係るストレージシステムの一例を示した図である。なお、図２に示したストレージシステム５０は、第２実施形態に係るストレージシステムの一例である。
【００２６】
図２に示すように、ストレージシステム５０は、サーバ５１と、ノードブロック１０１、１０２とを有する。サーバ５１は、例えば、ホストコンピュータである。ノードブロック１０１、１０２は、例えば、それぞれ１つの筐体に収容されるストレージ装置である。以下では、説明の都合上、ノードブロック１０１、１０２をそれぞれＮｏｄｅＢｌｏｃｋ＃０、＃１と表記する場合がある。
【００２７】
ノードブロック１０１は、ノード１１１、１１３、及びドライブグループ１１２、１１４を有する。ノード１１１、１１３は、サーバ５１から受け付けるＩ／Ｏ要求を処理するコンピュータである。なお、ノード１１１、１１３は、ストレージ制御装置の一例である。ドライブグループ１１２、１１４は、例えば、ＨＤＤ、ＳＳＤ、ＲＡＩＤ装置などの記憶装置、或いは、複数の記憶装置を接続した記憶装置の集合である。
【００２８】
ノードブロック１０２は、ノード１２１、１２３、及びドライブグループ１２２、１２４を有する。ノード１２１、１２３は、サーバ５１から受け付けるＩ／Ｏ要求を処理するコンピュータである。なお、ノード１２１、１２３は、ストレージ制御装置の一例である。ドライブグループ１２２、１２４は、例えば、ＨＤＤ、ＳＳＤ、ＲＡＩＤ装置などの記憶装置、或いは、複数の記憶装置を接続した記憶装置の集合である。
【００２９】
以下では、説明の都合上、ノード１１１、１１３、１２１、１２３をそれぞれＮｏｄｅ＃０、＃１、＃２、＃３と表記する場合や、ドライブグループ１１２、１１４、１２２、１２４をそれぞれＤｒｉｖｅＧ＃０、＃１、＃２、＃３と表記する場合がある。
【００３０】
サーバ５１とノード１１１、１１３、１２１、１２３とは、例えば、ＦＣ（Fibre Channel）やｉＳＣＳＩ（Internet Small Computer System Interface）などを利用して接続される。ノードブロック１０１、１０２は、例えば、ＦＣ、ｉＳＣＳＩ、ＬＡＮ（Local Area Network）などを利用して接続される。ノード１１１、１１３、１２１、１２３とドライブグループ１１２、１１４、１２２、１２４とは、それぞれ、ＦＣ、ｉＳＣＳＩ、ＳＡＴＡ（Serial Advanced Technology Attachment）などを利用して接続される。なお、これらの接続方法は一例であり、上記の例に限定されない。
【００３１】
（サーバのハードウェア）
図３を参照しながら、サーバ５１のハードウェアについて説明する。図３は、第２実施形態に係るサーバの機能を実現可能なハードウェアの一例を示したブロック図である。
【００３２】
図３に示すように、サーバ５１は、メモリ５１ａ、プロセッサ５１ｂ、及びホストＩ／Ｆ（Interface）５１ｃを有する。
メモリ５１ａは、ＲＡＭなどの揮発性記憶装置、或いは、ＨＤＤやフラッシュメモリなどの不揮発性記憶装置である。プロセッサ５１ｂは、１つ又は複数のＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどの演算回路である。ホストＩ／Ｆ５１ｃは、ホストコンピュータと他の機器（ストレージ装置やネットワーク機器）とを接続するためのＨＢＡ（Host Bus Adapter）や通信インターフェースである。
【００３３】
プロセッサ５１ｂは、入出力Ｉ／Ｆ５１ｄに接続される。入出力Ｉ／Ｆ５１ｄは、例えば、キーボード、マウス、タッチパッドなどの入力装置や、ＥＬＤ（Electro-Luminescent Display）、ＬＣＤ（Liquid Crystal Display）などの表示装置である。プロセッサ５１ｂは、例えば、メモリ５１ａに格納されたプログラムを実行する。
【００３４】
なお、プログラムは、予めメモリ５１ａに格納されるか、或いは、光ディスク、磁気ディスク、半導体メモリなどの可搬記憶媒体５１ｅから読み出されてプロセッサ５１ｂによりメモリ５１ａに格納される。サーバ５１と、ノード１１１、１１３、１２１、１２３とはホストＩ／Ｆ５１ｃを介して接続される。
【００３５】
（ノードのハードウェア及びソフトウェアスタック）
図４を参照しながら、ノード１１１のハードウェア及びソフトウェアスタックについて説明する。図４は、第２実施形態に係るノードの機能を実現可能なハードウェア及びソフトウェアスタックの一例を示したブロック図である。なお、ノード１１１、１１３、１２１、１２３のハードウェア及びソフトウェアスタックは実質的に同じであるため、ノード１１３、１２１、１２３についての説明は省略する。
【００３６】
図４に示すように、ノード１１１は、メモリ１１１ａ、プロセッサ１１１ｂ、ホストＩ／Ｆ１１１ｃ、通信Ｉ／Ｆ１１１ｄ、及び接続Ｉ／Ｆ１１１ｅを有する。
メモリ１１１ａは、ＲＡＭなどの揮発性記憶装置、或いは、ＨＤＤやフラッシュメモリなどの不揮発性記憶装置である。プロセッサ１１１ｂは、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどの演算回路である。ホストＩ／Ｆ１１１ｃは、例えば、ＨＢＡである。図４の例では、プロセッサ１１１ｂを含む複数のプロセッサ、及びホストＩ／Ｆ１１１ｃを含む複数のホストＩ／Ｆがノード１１１に搭載されている。
【００３７】
通信Ｉ／Ｆ１１１ｄは、ノードブロック１０２との間の通信に利用される通信インターフェース（ＦＣアダプタ、ｉＳＣＳＩアダプタなど）である。接続Ｉ／Ｆ１１１ｅは、ドライブグループ１１２と接続するための接続インターフェース（ＦＣアダプタ、ＳＡＴＡアダプタなど）である。
【００３８】
プロセッサ１１１ｂは、例えば、メモリ１１１ａに格納されたプログラムを実行する。プログラムは、予めメモリ１１１ａに格納されるか、或いは、光ディスク、磁気ディスク、半導体メモリなどの可搬記憶媒体５２から読み出されてプロセッサ１１１ｂによりメモリ１１１ａに格納される。サーバ５１とノード１１１とはホストＩ／Ｆ１１１ｃを介して接続される。ノード１１１とノードブロック１０２とは通信Ｉ／Ｆ１１１ｄを介して接続される。
【００３９】
ノード１１１により提供される基本機能は、主に、メモリ１１１ａ及びプロセッサ１１１ｂによるソフトウェアの処理により実現される。
図４に示すように、ノード１１１は、機能要素として、上位接続部２０１、Ｉ／Ｏ制御部２０２、重複排除部２０３、データ管理部２０４、及びデバイス管理部２０５を有する。なお、専用のハードウェアを利用して少なくとも一部の機能要素を実現するように変形することが可能である。
【００４０】
上位接続部２０１は、サーバ５１からＩ／Ｏ要求を受け付ける。Ｉ／Ｏ制御部２０２は、上位接続部２０１が受け付けたＩ／Ｏ要求に応じてＩ／Ｏ処理を制御する。重複排除部２０３は、重複データの有無を判定する。データ管理部２０４は、データの圧縮及び伸張、バッファリング、後述するメタ情報（論理アドレスと物理アドレスとを対応付ける情報）の管理などを実施する。デバイス管理部２０５は、ドライブグループ１１２に対するデータの読み書きを実施する。
【００４１】
（データの書き込み方法）
ここで、データの書き込み方法について説明する。
まず、図５を参照する。図５は、複数のノードに対するデータの分散配置について説明するための図である。
【００４２】
ストレージシステム５０では、ノード間の負荷分散を図るために書き込み対象のデータ（ＷＲＩＴＥ  Ｉ／Ｏデータ）が複数のデータ（実データ）に分割され、ノード１１１、１１３、１２１、１２３に分散配置される。そして、ノード１１１、１１３、１２１、１２３に分散配置された複数の実データは、それぞれドライブグループ１１２、１１４、１２２、１２４に書き込まれる。
【００４３】
なお、ストレージシステム５０では、データが書き込まれる物理領域としてドライブグループ１１２、１１４、１２２、１２４を束ねたストレージプール２０６が利用される。ストレージプール２０６内に書き込まれるデータの位置は、ストレージプール２０６のアドレス（物理アドレス）により管理される。
【００４４】
図５の例では、０番目の論理領域（以下、ＬＵＮ（Logical Unit Number）＃０）のＷＲＩＴＥ  Ｉ／Ｏデータがストレージプール２０６に書き込まれる。ＷＲＩＴＥ  Ｉ／Ｏデータは、例えば、実データＤ０、Ｄ１、…、Ｄ１９に分割される。そして、Ｄｋ（ｋ＝ｐ＋４ｑ；ｐ＝０，１，２，３、ｑ＝０，１，２，３，４）がＮｏｄｅ＃ｐに割り当てられる。この分散配置を適用することで、ノード１１１、１１３、１２１、１２３、及びドライブグループ１１２、１１４、１２２、１２４の負荷が分散される。
【００４５】
なお、ノード数が増加した場合にはデータの再配置が実施される。
次に、図６を参照する。図６は、ストレージプールに書き込まれるユーザデータ及びメタ情報の管理方法について説明するための図である。
【００４６】
図６（Ａ）に示すように、実データＤ０をストレージプール２０６に書き込むとき、データ管理部２０４は、実データＤ０に参照情報２０７を付加してユーザデータ２０８を生成する。参照情報２０７は、ＳＢ（Super Block）２０７ａと、参照ＬＵＮ／ＬＢＡ（Logical Block Addressing）情報２０７ｂとを含む。
【００４７】
ＳＢ２０７ａは、例えば、３２バイトに設定され、参照情報２０７の長さを示すヘッダ長（Header Length）や実データＤ０のハッシュ値（Hash Value）などを含む。参照ＬＵＮ／ＬＢＡ情報２０７ｂは、例えば、８バイトに設定され、実データＤ０が格納される論理領域のＬＵＮ、及びその格納位置を示すＬＢＡを含む。つまり、参照ＬＵＮ／ＬＢＡ情報２０７ｂは、実データＤ０の論理的な格納先に関する情報を含む。
【００４８】
実データＤ０と同じ内容の実データＤｘを書き込む場合、データ管理部２０４は、実データＤｘの格納先となる論理領域のＬＵＮ、及びその格納位置を示すＬＢＡを含む参照ＬＵＮ／ＬＢＡ情報２０７ｂを生成する。また、データ管理部２０４は、実データＤｘの参照ＬＵＮ／ＬＢＡ情報２０７ｂを実データＤ０のユーザデータ２０８に追加する。
【００４９】
データ管理部２０４は、図６（Ｂ）のように、ユーザデータ２０８をメモリ１１１ａに一時的に格納する。なお、ユーザデータ２０８の格納先はメモリ１１１ａとは異なるキャッシュメモリ（非図示）でもよい。データ管理部２０４は、複数の実データのそれぞれに対応する複数のユーザデータをメモリ１１１ａに追記し、所定のデータ量（例えば、２４ＭＢ）を単位としてストレージプール２０６に書き出す制御を実施する。
【００５０】
以下では、説明の都合上、書き出されるデータの単位をＲＡＩＤユニットと呼ぶ場合がある。図６（Ｃ）の例では、ユーザデータＵＤ＃１、ＵＤ＃２、…、ＵＤ＃ｍを結合したデータがストレージプール２０６に書き込まれている。なお、図６（Ｃ）の矢印（ａ）、（ｂ）、（ｃ）は、参照ＬＵＮ／ＬＢＡ情報２０７ｂと実データとの対応関係を示している。ストレージプール２０６には、ユーザデータ２０８の他に、後述するメタアドレス情報２０９及びメタ情報２１０が書き込まれる。
【００５１】
メタ情報２１０は、論理アドレスと物理アドレスとを対応付ける情報である。メタアドレス情報２０９は、ストレージプール２０６におけるメタ情報２１０の位置情報である。メタアドレス情報２０９及びメタ情報２１０もＲＡＩＤユニット単位でストレージプール２０６に書き込まれる。メタアドレス情報２０９が書き込まれる領域は、例えば、ストレージプール２０６の先頭から所定範囲に予め確保される。
【００５２】
他方、ユーザデータ２０８及びメタ情報２１０は、ＲＡＩＤユニット単位のデータが集まったタイミングでストレージプール２０６に順次追記される。そのため、図６（Ｃ）に示すように、メタアドレス情報２０９がストレージプール２０６の所定範囲（この例では先頭から所定範囲）に書き込まれ、ユーザデータ２０８及びメタ情報２１０は混在する。
【００５３】
メタアドレス情報２０９は、図７のような構造及び内容を有する。図７は、メタアドレス情報の構造及び内容について説明するための図である。
図７に示すように、メタアドレス情報２０９は、ストレージプール２０６の識別情報（Disk Pool No.）を含む。また、メタアドレス情報２０９は、対応するメタ情報２１０のＲＡＩＤユニットを特定するための識別情報（RAID Unit No.）を含む。また、メタアドレス情報２０９は、対応するメタ情報２１０があるＲＡＩＤユニット内の位置情報（RAID Unit Offset LBA）を含む。メタアドレス情報２０９を参照することで、ストレージプール２０６に格納されているメタ情報２１０を検索することができる。
【００５４】
メタ情報２１０は、図８に示すような構造及び内容を有する。図８は、メタ情報の構造及び内容について説明するための図である。
図８に示すように、メタ情報２１０は、論理アドレス情報２１０ａ及び物理アドレス情報２１０ｂなどを含む。論理アドレス情報２１０ａには、ユーザデータ２０８が格納される論理領域のＬＵＮ及びその格納位置を示すＬＢＡが含まれる。また、物理アドレス情報２１０ｂには、ユーザデータ２０８が格納されるストレージプール２０６の識別情報（Disk Pool No.）、そのストレージプール２０６におけるＲＡＩＤユニットの識別情報（RAID Unit No.）、そのＲＡＩＤユニット内の位置情報（RAID Unit LBA）が含まれる。
【００５５】
メタアドレス情報２０９及びメタ情報２１０は、図９に示すような方法でメモリ１１１ａにキャッシュされ、ＲＡＩＤユニット単位でストレージプール２０６に書き込まれる。図９は、メタアドレス情報及びメタ情報のキャッシュ及びストレージプールへの書き込み方法について説明するための図である。
【００５６】
図９に示すように、メモリ１１１ａには、キャッシュ領域として、メタアドレス情報２０９が一時的に格納されるメタアドレスキャッシュ２１１と、メタ情報２１０が一時的に格納されるメタ情報キャッシュ２１２とが設定される。メタアドレスキャッシュ２１１には、メタアドレス情報２０９が蓄積される。メタ情報キャッシュ２１２には、メタ情報２１０が蓄積される。なお、メタアドレスキャッシュ２１１及びメタ情報キャッシュ２１２のサイズは、ＲＡＩＤユニットのサイズ（例えば、２４ＭＢ）に設定される。
【００５７】
メタ情報キャッシュ２１２のデータ（メタ情報２１０）がキャッシュフル（充填状態）になると、そのデータはストレージプール２０６へ書き込まれ、メタ情報キャッシュ２１２はリセットされる。例えば、ストレージプール２０６内の１７番目にあるＲＡＩＤユニット（ＲＵ＃１７）までが格納済の場合、１８番目のＲＡＩＤユニット（ＲＵ＃１８）にメタ情報キャッシュ２１２のデータが書き込まれる。
【００５８】
この場合、ＲＵ＃１８のメタ情報２１０に対応するメタアドレス情報２０９が生成され、メタアドレスキャッシュ２１１に格納される。メタアドレスキャッシュ２１１のデータ（メタアドレス情報２０９）がキャッシュフル（充填状態）になると、そのデータはストレージプール２０６に書き込まれ、メタアドレスキャッシュ２１１はリセットされる。このとき、メタアドレスキャッシュ２１１のデータは、メタアドレス情報２０９用に予約されているＲＡＩＤユニットに書き込まれる。なお、メタアドレス情報２０９の書き込みは上書きでもよい。
【００５９】
（書き込み処理の流れ）
ノード１１１における書き込み処理の流れは図１０及び図１１のようになる。
まず、図１０を参照する。図１０は、書き込み処理の流れ（重複なしの場合）について説明するためのシーケンス図である。
【００６０】
（Ｓ１０１）Ｉ／Ｏ制御部２０２は、上位接続部２０１を介してサーバ５１から実データの書き込み要求（ＷＲＩＴＥ要求）を受け付け、実データと共にＷＲＩＴＥ要求を重複排除部２０３へと出力する。
【００６１】
（Ｓ１０２）重複排除部２０３は、ＷＲＩＴＥ要求の対象となる実データが重複排除の対象になるか否かを判定する。例えば、重複排除部２０３は、メモリ１１１ａ又はストレージプール２０６にあるユーザデータ２０８のＳＢ２０７ａからハッシュ値を抽出し、ＷＲＩＴＥ要求の対象となる実データのハッシュ値と比較する。ハッシュ値が一致する場合、重複排除部２０３は、重複する実データがあると判定する。図１０の例では重複排除部２０３により重複がないと判定される。
【００６２】
（Ｓ１０３）重複排除部２０３は、データ管理部２０４にユーザデータ２０８を新規に書き込むように依頼する（ＵＤ  ＷＲＩＴＥ）。
（Ｓ１０４）データ管理部２０４は、ＷＲＩＴＥ要求の書き込み先となるＲＡＩＤユニットの識別情報（ＲＵ＃）をデバイス管理部２０５に要求する。
【００６３】
（Ｓ１０５）デバイス管理部２０５は、ＷＲＩＴＥ要求の書き込み先となるＲＡＩＤユニットの識別情報（ＲＵ＃）及びそのＲＡＩＤユニットがあるストレージプール２０６の識別情報（ＤＰ＃）をデータ管理部２０４へと出力する。
【００６４】
（Ｓ１０６）データ管理部２０４は、ＷＲＩＴＥ要求の対象となる実データを圧縮する。なお、非圧縮の状態でストレージプール２０６へ書き込む設定に変形してもよい。
（Ｓ１０７、Ｓ１０８）データ管理部２０４は、デバイス管理部２０５から出力されたＤＰ＃及びＲＵ＃を用いて参照ＬＵＮ／ＬＢＡ情報２０７ｂを生成し、ＳＢ２０７ａと組み合わせて参照情報２０７を生成する。そして、データ管理部２０４は、圧縮後の実データに参照情報２０７を組み合わせたユーザデータ２０８をメモリ１１１ａに格納する（バッファリング）。
【００６５】
（Ｓ１０９）データ管理部２０４は、メモリ１１１ａにあるユーザデータ２０８をＲＡＩＤユニット単位でストレージプール２０６に書き出せるか否かを判定する。書き出せる場合にはストレージプール２０６への書き出し処理が実行される。図１０の例では、メモリ１１１ａにあるユーザデータ２０８のデータ量がＲＡＩＤユニットの単位に達しておらず、書き出さないと判定されている（ＮＯ）。
【００６６】
（Ｓ１１０、Ｓ１１１）データ管理部２０４は、デバイス管理部２０５から出力されたＤＰ＃及びＲＵ＃を重複排除部２０３へ出力する。ＤＰ＃及びＲＵ＃を受信した重複排除部２０３は、ユーザデータ２０８の書き込み先及び書き込み完了を認識し、データ管理部２０４に対してメタ情報２１０の更新を要求する。
【００６７】
（Ｓ１１２）データ管理部２０４は、デバイス管理部２０５から出力されたＤＰ＃及びＲＵ＃に基づいてメタ情報２１０を更新する。
（Ｓ１１３、Ｓ１１４）データ管理部２０４は、バッファリングしたユーザデータ２０８に対応するメタ情報２１０の書き込み先となるＲＡＩＤユニットの識別情報（ＲＵ＃）をデバイス管理部２０５に要求する。この要求を受信したデバイス管理部２０５は、メタ情報２１０の書き込み先となるストレージプール２０６の識別情報（ＤＰ＃）及びＲＡＩＤユニットの識別情報（ＲＵ＃）をデータ管理部２０４に出力する。
【００６８】
（Ｓ１１５、Ｓ１１６）データ管理部２０４は、バッファリングしたユーザデータ２０８に対応するメタ情報２１０をメタ情報キャッシュ２１２（メモリ１１１ａ）に格納する（バッファリング）。そして、データ管理部２０４は、メタ情報キャッシュ２１２がキャッシュフルか否かを判定する（書き出し判定）。キャッシュフルの場合にはメタ情報キャッシュ２１２のデータをストレージプール２０６へ書き出す制御が実施される。図１０の例では、書き出さないと判定されている（ＮＯ）。
【００６９】
（Ｓ１１７、Ｓ１１８）データ管理部２０４は、デバイス管理部２０５から受信したＤＰ＃及びＲＵ＃を用いてメタアドレス情報２０９を更新する。そして、データ管理部２０４は、ＷＲＩＴＥ要求に対する応答としてユーザデータ２０８の書き込み完了をＩ／Ｏ制御部２０２に通知する。Ｉ／Ｏ制御部２０２は、上位接続部２０１を介してサーバ５１に書き込み完了の応答を返す。Ｓ１１８の処理が完了すると、図１０に示した一連の処理は終了する。
【００７０】
次に、図１１を参照する。図１１は、書き込み処理の流れ（重複ありの場合）について説明するためのシーケンス図である。
（Ｓ１２１）Ｉ／Ｏ制御部２０２は、上位接続部２０１を介してサーバ５１から実データの書き込み要求（ＷＲＩＴＥ要求）を受け付け、実データと共にＷＲＩＴＥ要求を重複排除部２０３へと出力する。
【００７１】
（Ｓ１２２）重複排除部２０３は、ＷＲＩＴＥ要求の対象となる実データが重複排除の対象になるか否かを判定する。例えば、重複排除部２０３は、メモリ１１１ａ又はストレージプール２０６にあるユーザデータ２０８のＳＢ２０７ａからハッシュ値を抽出し、ＷＲＩＴＥ要求の対象となる実データのハッシュ値と比較する。ハッシュ値が一致する場合、重複排除部２０３は、重複する実データがあると判定する。図１１の例では重複排除部２０３により重複があると判定される。
【００７２】
（Ｓ１２３）重複排除部２０３は、データ管理部２０４に対して重複のあるユーザデータ２０８の書き込みを指示する（ＵＤ  ＷＲＩＴＥ）。
（Ｓ１２４）データ管理部２０４は、ＷＲＩＴＥ要求の対象となる実データと同じデータを含むユーザデータ２０８をストレージプール２０６から読み出す処理をデバイス管理部２０５に要求する（ＲＥＡＤ要求）。なお、読み出し対象のユーザデータ２０８がメモリ１１１ａにある場合、データ管理部２０４は、デバイス管理部２０５へのＲＥＡＤ要求を省略してメモリ１１１ａからユーザデータ２０８を読み出してもよい。
【００７３】
（Ｓ１２５）デバイス管理部２０５は、ＲＥＡＤ要求に応じてユーザデータ２０８を読み出し、読み出したユーザデータ２０８をデータ管理部２０４に出力する。
（Ｓ１２６）データ管理部２０４は、デバイス管理部２０５から受信したユーザデータ２０８に含まれるＳＢ２０７ａのハッシュ値と、ＷＲＩＴＥ要求の対象となる実データから生成されるハッシュ値とを比較する。ハッシュ値が一致しない場合、データ管理部２０４は、エラー処理を実行する。図１１の例ではハッシュ値が一致している。
【００７４】
（Ｓ１２７）データ管理部２０４は、ＷＲＩＴＥ要求の対象となる実データに対応する参照ＬＵＮ／ＬＢＡ情報２０７ｂを生成し、デバイス管理部２０５から受信したユーザデータ２０８の参照情報２０７に追加する（参照情報更新）。
【００７５】
（Ｓ１２８）データ管理部２０４は、ＷＲＩＴＥ要求の書き込み先となるＲＡＩＤユニットの識別情報（ＲＵ＃）をデバイス管理部２０５に要求する。
（Ｓ１２９）デバイス管理部２０５は、ＷＲＩＴＥ要求の書き込み先となるＲＡＩＤユニットの識別情報（ＲＵ＃）及びそのＲＡＩＤユニットがあるストレージプール２０６の識別情報（ＤＰ＃）をデータ管理部２０４へと出力する。
【００７６】
（Ｓ１３０、Ｓ１３１）データ管理部２０４は、デバイス管理部２０５から出力されたＤＰ＃及びＲＵ＃を重複排除部２０３へ出力する。ＤＰ＃及びＲＵ＃を受信した重複排除部２０３は、ユーザデータ２０８の書き込み先及び書き込み完了を認識し、データ管理部２０４に対してメタ情報２１０の更新を要求する。
【００７７】
（Ｓ１３２）データ管理部２０４は、デバイス管理部２０５から出力されたＤＰ＃及びＲＵ＃に基づいてメタ情報２１０を更新する。
（Ｓ１３３、Ｓ１３４）データ管理部２０４は、バッファリングしたユーザデータ２０８に対応するメタ情報２１０の書き込み先となるＲＡＩＤユニットの識別情報（ＲＵ＃）をデバイス管理部２０５に要求する。この要求を受信したデバイス管理部２０５は、メタ情報２１０の書き込み先となるストレージプール２０６の識別情報（ＤＰ＃）及びＲＡＩＤユニットの識別情報（ＲＵ＃）をデータ管理部２０４に出力する。
【００７８】
（Ｓ１３５、Ｓ１３６）データ管理部２０４は、バッファリングしたユーザデータ２０８に対応するメタ情報２１０をメタ情報キャッシュ２１２（メモリ１１１ａ）に格納する（バッファリング）。そして、データ管理部２０４は、メタ情報キャッシュ２１２がキャッシュフルか否かを判定する（書き出し判定）。キャッシュフルの場合にはメタ情報キャッシュ２１２のデータをストレージプール２０６へ書き出す制御が実施される。図１１の例では、書き出さないと判定されている（ＮＯ）。
【００７９】
（Ｓ１３７、Ｓ１３８）データ管理部２０４は、デバイス管理部２０５から受信したＤＰ＃及びＲＵ＃を用いてメタアドレス情報２０９を更新する。そして、データ管理部２０４は、ＷＲＩＴＥ要求に対する応答としてユーザデータ２０８の書き込み完了をＩ／Ｏ制御部２０２に通知する。Ｉ／Ｏ制御部２０２は、上位接続部２０１を介してサーバ５１に書き込み完了の応答を返す。Ｓ１３８の処理が完了すると、図１１に示した一連の処理は終了する。
【００８０】
（読み出し処理の流れ）
ノード１１１における読み出し処理の流れは図１２のようになる。図１２は、読み出し処理の流れについて説明するためのシーケンス図である。
【００８１】
（Ｓ１４１）Ｉ／Ｏ制御部２０２は、上位接続部２０１を介してサーバ５１から実データの読み出し要求（ＲＥＡＤ要求）を受け付け、ＲＥＡＤ要求をデータ管理部２０４へと出力する。
【００８２】
（Ｓ１４２、Ｓ１４３）データ管理部２０４は、メタ情報２１０があるストレージプール２０６及びＲＡＩＤユニットなどの情報を含むメタアドレス情報２０９を探索する。そして、データ管理部２０４は、メタアドレス情報２０９をデバイス管理部２０５に通知してメタ情報２１０の読み出しを要求する（ＲＥＡＤ要求）。
【００８３】
（Ｓ１４４）デバイス管理部２０５は、データ管理部２０４から受け付けたＲＥＡＤ要求に応じてメタ情報２１０をストレージプール２０６から読み出し、データ管理部２０４に出力する。なお、該当するメタ情報２１０がメタアドレスキャッシュ２１１にある場合、デバイス管理部２０５は、メタアドレスキャッシュ２１１から読み出したメタ情報２１０をデータ管理部２０４に出力する。
【００８４】
（Ｓ１４５、Ｓ１４６）データ管理部２０４は、メタ情報２１０を解析し、Ｉ／Ｏ制御部２０２から受け付けたＲＥＡＤ要求の対象となるデータがあるストレージプール２０６、ＲＡＩＤユニット、及び物理アドレスなどを含む物理アドレス情報２１０ｂを特定する。そして、データ管理部２０４は、物理アドレス情報２１０ｂをデバイス管理部２０５に通知してユーザデータ２０８の読み出しを要求する（ＲＥＡＤ要求）。
【００８５】
（Ｓ１４７）デバイス管理部２０５は、データ管理部２０４から受け付けたＲＥＡＤ要求に応じてユーザデータ２０８をストレージプール２０６から読み出し、データ管理部２０４に出力する。なお、該当するユーザデータ２０８がメモリ１１１ａにキャッシュされている場合、デバイス管理部２０５は、メモリ１１１ａから読み出したユーザデータ２０８をデータ管理部２０４に出力する。
【００８６】
（Ｓ１４８、Ｓ１４９）ユーザデータ２０８が圧縮されている場合、データ管理部２０４は、ユーザデータ２０８を伸張する。また、データ管理部２０４は、ユーザデータ２０８に付与されている参照情報２０７を削除して実データを復元する。
【００８７】
（Ｓ１５０）データ管理部２０４は、ＲＥＡＤ要求に対する応答として、復元した実データをＩ／Ｏ制御部２０２に出力する。Ｉ／Ｏ制御部２０２は、上位接続部２０１を介してサーバ５１に実データを出力する。Ｓ１５０の処理が完了すると、図１２に示した一連の処理は終了する。
【００８８】
以上、第２実施形態に係るストレージシステムについて説明した。なお、ここでは説明の都合上、ノード１１１の基本機能をソフトウェアスタックとして表現し、ソフトウェアスタックの要素を単位としてデータの書き込み及び読み出しの動作について説明した。また、ユーザデータ２０８、メタ情報２１０がＲＡＩＤユニット単位でストレージプール２０６に追記書き込みされる仕組みについて説明してきた。
【００８９】
上記のような仕組みを適用することで、ストレージプール２０６を形成する記録媒体への書き込み頻度を低減するシステムの実現に寄与し、ＳＳＤなどの書き込み回数に制約のある記録媒体を利用する際にコスト低減や運用効率の向上などに繋がると期待されうる。但し、上述したストレージシステム５０は、第２実施形態の技術を適用可能なシステムの一例であり、一部の機能を省略する変形や他の機能を追加する変形も可能である。
【００９０】
［２−２．重複排除コピー］
上記のストレージシステム５０には、ストレージプール２０６に同じデータが書き込まれることを抑制する重複排除機能が搭載されている。上記の例では、データの書き込み要求を受け付けるタイミングで重複排除を実施していた。以下では、データをコピーする処理の中で効率的に重複排除を実施する方法（重複排除コピー）について説明する。
【００９１】
（スナップショット系重複排除コピー）
重複排除コピーは、例えば、開始指示の時点を基準にコピー元領域にあるデータの更新部分をコピー先領域へとコピーするスナップショット系のコピー処理（スナップショット系コピー）に適用可能である。スナップショット系コピーとしては、例えば、図１３のような仕組みがある。図１３は、スナップショット系コピーの例（ＳｎａｐＯＰＣ／ＳｎａｐＯＰＣ＋）について説明するための図である。
【００９２】
図１３の横軸は時間軸である。「コピー元領域」という表記の横に並ぶ各ブロックは、各ブロックに対応する時点のコピー元領域及びそのコピー元領域にあるデータを示している。「コピー先領域」という表記の横に並ぶ各ブロックは、各ブロックに対応する時点のコピー先領域及びそのコピー先領域にあるデータを示している。「世代管理」という表記の横に並ぶ各ブロックは、各ブロックに対応する時点におけるコピー先領域の状態（各世代のバックアップデータの内容）を示している。なお、世代管理は、ＳｎａｐＯＰＣ＋の機能である。
【００９３】
図１３に示すように、スナップショット系コピーの開始指示があると、コピー元領域のデータ更新に応じて、順次、更新前のデータがコピー先領域へコピーされる。新たな開始指示があると、前の開始指示に応じてコピーされたコピー先領域のデータが第１世代バックアップデータとして管理される。そして、新たな開始指示後のコピー元領域におけるデータ更新に応じて、順次、更新前のデータがコピー先領域へコピーされる。これらの手順により、図１３の例では、第１世代バックアップデータに加え、第２世代バックアップデータ、及び第３世代バックアップデータが生成されている。
【００９４】
スナップショット系コピーは、サーバ５１によるＩ／Ｏ要求を遮断せずに実施される。そのため、コピー元領域からコピー先領域へのデータコピー中にＩ／Ｏが生じうる。この場合、スナップショット系コピー中のＩ／Ｏ処理は、例えば、図１４のようになる。図１４は、スナップショット系コピー中のＩ／Ｏ処理について説明するための図である。
【００９５】
スナップショット系コピーの動作中にコピー元領域に対するデータの書き込み要求（コピー元ＷＲＩＴＥ）が生じ、コピーが未了である場合、（Ａ）に示すように、まず、更新前のデータ（旧データ）をコピー先領域へコピーする処理が実行される。そして、コピー元ＷＲＩＴＥに応じたコピー元領域への書き込み処理が実行される。一方、コピーが完了している場合には、コピー元ＷＲＩＴＥに応じて書き込み処理が実行される。
【００９６】
スナップショット系コピーの動作中にコピー先領域に対するデータの書き込み要求（コピー先ＷＲＩＴＥ）が生じ、コピーが未了である場合、（Ｂ）に示すように、まず、旧データをコピー元領域からコピー先領域へコピーする処理が実行される。そして、コピー先ＷＲＩＴＥに応じたコピー先領域への書き込み処理が実行される。一方、コピーが完了している場合には、コピー先ＷＲＩＴＥに応じて書き込み処理が実行される。
【００９７】
スナップショット系コピーの動作中にコピー元領域に対するデータの読み出し要求（コピー元ＲＥＡＤ）が生じた場合、コピーが未了であるか、完了しているかにかかわらず、コピー元領域に対する読み出し処理が実行される。
【００９８】
スナップショット系コピーの動作中にコピー先領域に対するデータの読み出し要求（コピー先ＲＥＡＤ）が生じ、コピーが未了である場合、コピー元領域にある読み出し対象のデータが読み出され、コピー先ＲＥＡＤへの応答としてサーバ５１に出力される。つまり、内部でコピー先ＲＥＡＤが、コピー元領域に対するデータの読み出し要求（コピー元ＲＥＡＤ）に変換される。一方、コピーが完了している場合には、コピー先ＲＥＡＤに応じてコピー先領域のデータに対する読み出し処理が実行される。
【００９９】
上記（Ａ）及び（Ｂ）の場合、スナップショット系コピーの動作中、コピーが未了のタイミングで書き込み要求が生じると、対象となるデータのコピーが完了するまで新たなデータの書き込み処理が待たされる。そこで、第２実施形態に係るノード１１１は、重複排除部２０３及びデータ管理部２０４の機能により、図１５及び図１６に示すような方法で重複排除コピーを実施する。
【０１００】
図１５を参照する。図１５は、第２実施形態に係るスナップショット系重複排除コピー中のＩ／Ｏ処理（コピー元ＷＲＩＴＥの場合）について説明するための図である。
一例として、０番目の論理領域（ＬＵＮ＃０）をコピー元領域とし、１番目の論理領域（ＬＵＮ＃１）をコピー先領域として、スナップショット系コピーによりＬＵＮ＃０からＬＵＮ＃１へとデータをコピーするケースについて説明する。
【０１０１】
図１５には、論理アドレスと物理アドレスとを対応付ける情報としてＬＵＮ＃０、＃１のマップ情報が示されている。なお、ここでは説明の都合上、「アドレス」という表現を用いるが、ここではＬＢＡなどのアドレス値を表すものに限られず、データ又はデータの集合（例えば、ＲＡＩＤユニット）がある位置を表す情報を意味する。
【０１０２】
また、説明の都合上、表現を簡略化したマップ情報を例に説明するが、論理アドレス情報２１０ａと物理アドレス情報２１０ｂとを含むメタ情報２１０がマップ情報に対応する。例えば、ＬＵＮ＃０のマップ情報は、ＬＵＮ＃０の論理アドレス情報２１０ａを有するメタ情報２１０に対応する。ＬＵＮ＃１のマップ情報は、ＬＵＮ＃１の論理アドレス情報２１０ａを有するメタ情報２１０に対応する。
【０１０３】
図１５（Ａ）は、コピー前の状態を示している。コピー元領域であるＬＵＮ＃０の論理アドレスｌｇＡｄｄ＃００、＃０１、＃０２には、それぞれストレージプール２０６の物理アドレスｐｈＡｄｄ＃０、＃１、＃２が対応付けられている。一方、コピー先領域であるＬＵＮ＃１の論理アドレスｌｇＡｄｄ＃１０、＃１１、＃１２と、ストレージプール２０６の物理アドレスとの対応関係が初期化されている。
【０１０４】
図１５（Ａ）の例では、論理アドレスと物理アドレスとの対応関係がない状態（初期化された状態）を示すために、マップ情報にある物理アドレスの欄を空白にしている。但し、コピーの状態（未了／完了）はコピービットマップ２１３を利用して管理されるため、物理アドレスの欄に以前の対応関係を示す物理アドレスが記述されていてもよい。なお、コピービットマップ２１３はメモリ１１１ａに格納されている。
【０１０５】
例えば、コピービットマップ２１３の値が「０」の場合にコピー完了、「１」の場合にコピー未了を表す場合、スナップショット系コピーの開始指示に応じて、コピー先領域の各論理アドレスに対応するコピービットマップ２１３が「１」に設定される。
【０１０６】
図１３に例示した通常のスナップショット系コピーの場合、コピー先の論理アドレスに対応する物理アドレスにデータが書き込まれると、その論理アドレスに対応するコピービットマップ２１３の値が「１」から「０」に書き換えられる。また、図１４の（Ａ）及び（Ｂ）のようにコピーが未了の状態で書き込み要求があると、上位の物理アドレスに対するデータの書き込みが完了してから書き込み要求に応じた処理が実行される。
【０１０７】
一方、図１５の例では、（Ａ）のように、コピーが未了の状態で論理アドレスｌｇＡｄｄ＃００に新たなデータの書き込み要求（新データＷＲＩＴＥ）が生じたとき（ａ）、（Ｂ）のようにＬＵＮ＃１のマップ情報及びコピービットマップ２１３が更新される。
【０１０８】
例えば、重複排除部２０３は、ＬＵＮ＃０のマップ情報からコピー元の論理アドレスｌｇＡｄｄ＃００に対応する物理アドレスｐｈＡｄｄ＃０を読み出す。また、重複排除部２０３は、ＬＵＮ＃１のマップ情報において、読み出した物理アドレスｐｈＡｄｄ＃０をコピー先の論理アドレスｌｇＡｄｄ＃１０に対応付ける。そして、重複排除部２０３は、論理アドレスｌｇＡｄｄ＃１０に対応するコピービットマップ２１３の値を「０」に書き換える。
【０１０９】
その後、データ管理部２０４は、ＬＵＮ＃０に対する新データＷＲＩＴＥの処理を実行する。データ管理部２０４は、ＬＵＮ＃０のマップ情報において、新データＷＲＩＴＥにより書き込まれる新たなデータの物理アドレスｐｈＡｄｄ＃１０を論理アドレスｌｇＡｄｄ＃００に対応付ける。つまり、データ管理部２０４は、物理アドレスｐｈＡｄｄ＃０をｐｈＡｄｄ＃１０に書き換える。また、データ管理部２０４は、デバイス管理部２０５を介して、新たなデータをストレージプール２０６に書き込む。
【０１１０】
上記のように、ＬＵＮ＃０のマップ情報からＬＵＮ＃１のマップ情報への物理アドレスをコピーすることで１つの物理アドレスにあるデータを複数の論理アドレスから参照する形になり、重複排除の状態が実現される。また、マップ情報の更新だけでコピーが完了するため、コピーの処理にかかる時間を短縮することができる。そして、コピー未了の領域に対する書き込み要求が生じても、素早く書き込み要求に応じた処理を実行可能になる。
【０１１１】
図１６を参照する。図１６は、第２実施形態に係るスナップショット系重複排除コピー中のＩ／Ｏ処理（コピー先ＷＲＩＴＥの場合）について説明するための図である。
図１６（Ａ）のように、ＬＵＮ＃０からＬＵＮ＃１へのコピーが未了の状態で、コピー先領域であるＬＵＮ＃１の論理アドレスｌｇＡｄｄ＃１１に対する書き込み要求が生じた場合、（Ｂ）に示すような方法でマップ情報が更新される。まず、重複排除部２０３により、ＬＵＮ＃０のマップ情報にある物理アドレスｐｈＡｄｄ＃１がＬＵＮ＃１のマップ情報にコピーされ、（ｂ１）のように、対応するコピービットマップ２１３の値が「０」に書き換えられる。
【０１１２】
その後、データ管理部２０４は、ＬＵＮ＃１に対する新データＷＲＩＴＥの処理を実行する。データ管理部２０４は、ＬＵＮ＃１のマップ情報において、新データＷＲＩＴＥにより書き込まれる新たなデータの物理アドレスｐｈＡｄｄ＃１１を論理アドレスｌｇＡｄｄ＃１１に対応付ける。つまり、データ管理部２０４は、物理アドレスｐｈＡｄｄ＃１をｐｈＡｄｄ＃１１に書き換える。また、データ管理部２０４は、デバイス管理部２０５を介して、新たなデータをストレージプール２０６に書き込む。
【０１１３】
書き込み要求に応じた処理としては、例えば、該当する物理アドレスにあるデータを全て書き換える処理の他に、そのデータの一部を書き換える処理（更新処理）などがある。更新処理の場合、元のデータが参照されることがある。そのため、図１６（Ｂ）のように、一旦、ＬＵＮ＃０のマップ情報からＬＵＮ＃１のマップ情報へ物理アドレスをコピーした後で、書き込み要求に応じた処理が実行される。
【０１１４】
上記のように、ＬＵＮ＃０のマップ情報からＬＵＮ＃１のマップ情報への物理アドレスをコピーすることで１つの物理アドレスにあるデータを複数の論理アドレスから参照する形になり、重複排除の状態が実現される。また、マップ情報の更新だけでコピーが完了するため、コピーの処理にかかる時間を短縮することができる。そして、コピー未了の領域に対する書き込み要求が生じても、素早く書き込み要求に応じた処理を実行可能になる。
【０１１５】
（バックアップ系重複排除コピー）
上述した重複排除コピーの仕組みは、スナップショット系コピーだけではなく、バックアップ系コピーに対しても適用可能である。バックアップ系コピーとしては、例えば、図１７のような仕組みがある。図１７は、バックアップ系コピーの例（ＱｕｉｃｋＯＰＣ）について説明するための図である。
【０１１６】
図１７の横軸は時間軸である。「コピー元領域」という表記の横に並ぶ各ブロックは、各ブロックに対応する時点のコピー元領域及びそのコピー元領域にあるデータを示している。「コピー先領域」という表記の横に並ぶ各ブロックは、各ブロックに対応する時点のコピー先領域及びそのコピー先領域にあるデータを示している。
【０１１７】
図１７に示すように、バックアップ系コピーの開始指示があると、その開始指示の時点におけるコピー元領域のデータがコピー先領域へコピーされる。開始指示の後でコピー元領域のデータが更新されても次の開始指示があるまで更新内容がコピー先領域に反映されない。新たな開始指示があると、その開始指示の時点におけるコピー元領域と、前の開始指示の時点におけるコピー元領域との差分がコピー先領域へ反映される。
【０１１８】
バックアップ系コピーの開始指示に応じて上記の処理が順次実行される。なお、開始指示の間に更新された内容（差分）だけをコピー先領域にコピーする方法の他に、開始指示の時点におけるコピー元領域のデータを全てコピー先領域へコピーする方法もある。いずれの方法を採用する場合でもコピー元領域からコピー先領域へのデータコピー中にＩ／Ｏが生じうる。つまり、スナップショット系コピーと同様に改善の余地がある。
【０１１９】
バックアップ系コピーの場合、異なるストレージプールの間でデータのコピーが実施されることが多い。一例として、図１８には、業務処理に利用される業務プール２０６ａから、業務プール２０６ａのバックアップに利用されるバックアッププール２０６ｂへデータコピーする例を示した。図１８は、第２実施形態に係るバックアップ系重複排除コピー中のＩ／Ｏ処理（初期コピー＃１）について説明するための図である。
【０１２０】
図１８（Ａ）に示すように、業務プール２０６ａの物理アドレスｐｈＡｄｄ＃０ａ、＃１ａ、＃２ａにそれぞれＲＡＩＤユニット＃０、＃１、＃２が格納されている。これらのＲＡＩＤユニット＃０、＃１、＃２をバックアッププール２０６ｂへコピーする場合、重複排除部２０３は、（Ｂ）のように、ＬＵＮ＃０のマップ情報にある物理アドレスｐｈＡｄｄ＃０ａ、＃１ａ、＃２ａをＬＵＮ＃１のマップ情報にコピーする。
【０１２１】
また、重複排除部２０３は、コピー先の論理アドレスｌｇＡｄｄ＃１０、＃１１、＃１２に対応するコピービットマップ２１３の値を「０」に書き換える。これらの処理により、バックアップ系コピーが完了する。この状態で重複排除後の状態が実現される。
【０１２２】
その後、データ管理部２０４は、図１９（Ａ）に示すように、業務プール２０６ａからバックアッププール２０６ｂへとデータをコピーする。図１９は、第２実施形態に係るバックアップ系重複排除コピー中のＩ／Ｏ処理（初期コピー＃２）について説明するための図である。また、データ管理部２０４は、コピー先の物理アドレスｐｈＡｄｄ＃０ｂ（バックアッププール２０６ｂの物理アドレス）をＬＵＮ＃１のマップ情報に反映させる。
【０１２３】
業務プール２０６ａからバックアッププール２０６ｂへデータをコピーするタイミングは、例えば、ノード１１１の負荷、業務プール２０６ａ及びバックアッププール２０６ｂへのアクセス状況に応じて設定されてもよい。また、このタイミングは、ユーザや管理者により設定できるようにしてもよい。
【０１２４】
上記のように、ＬＵＮ＃０のマップ情報からＬＵＮ＃１のマップ情報への物理アドレスをコピーすることで１つの物理アドレスにあるデータを複数の論理アドレスから参照する形になり、重複排除の状態が実現される。また、マップ情報の更新だけでコピーが完了するため、コピーの処理にかかる時間を短縮することができる。
【０１２５】
また、マップ情報間で物理アドレスをコピーするタイミングと、業務プール２０６ａからバックアッププール２０６ｂへと実際にデータをコピーするタイミングとを非同期に設定することが可能になる。そのため、バックアップ系コピーを実施しながらも、業務プール２０６ａへのアクセス負荷が高い時間帯を避けてバックアッププール２０６ｂにデータを退避することができる。
【０１２６】
また、バックアッププール２０６ｂへの退避が完了すると、業務処理の状況にほとんど影響を与えることなく、磁気テープなどの可搬性記録媒体などへのバックアップが可能になる。つまり、バックアップ系コピーに上記の仕組みを適用することで、ストレージシステム５０全体の性能向上及び利便性向上に寄与する。
【０１２７】
（処理フロー：初期コピー）
ここで、図２０及び図２１を参照しながら、重複排除コピー中のＩ／Ｏ処理の流れについて説明する。図２０は、第２実施形態に係る重複排除コピー中のＩ／Ｏ処理（初期コピー）の流れを示した第１のフロー図である。図２１は、第２実施形態に係る重複排除コピー中のＩ／Ｏ処理（初期コピー）の流れを示した第２のフロー図である。
【０１２８】
これまで、主にノード１１１の機能について説明してきたが、ノード１１１、１１３、１２１、１２３のそれぞれは、状況に応じて所定の役割を担う。
例えば、セッション管理を担当するセッション管理ノード、コピー元となるコピー元担当ノード、コピー先となるコピー先担当ノード、自身が管理するディスクグループにデータが格納されるデータ格納ノードがある。なお、セッション管理ノードをＳＭ−Ｎｏｄｅ、コピー元担当ノードをＣＰ−Ｓ−Ｎｏｄｅ、コピー先担当ノードをＣＰ−Ｄ−Ｎｏｄｅ、データ格納ノードをＤＳ−Ｎｏｄｅと表記する場合がある。
【０１２９】
セッション管理ノードは、コピーセッションのコピービットマップ２１３を管理するノードである。セッション管理ノードの役割はコピーセッション毎に割り振られる。
コピー元担当ノードは、コピー１回分のデータ（実データ／ユーザデータ２０８）範囲に対応するコピー元領域及びそのコピー元領域のマップ情報（メタ情報２１０に対応）を管理するノードである。コピー先担当ノードは、コピー１回分のデータ（実データ／ユーザデータ２０８）範囲に対応するコピー先領域及びそのコピー先領域のマップ情報（メタ情報２１０に対応）を管理するノードである。
【０１３０】
以下では、説明の都合上、ノード１１１、１１３、１２１、１２３がそれぞれセッション管理ノード、コピー元担当ノード、コピー先担当ノード、データ格納ノードであるとして説明する。また、ノード１１３、１２１、１２３は、いずれもノード１１１と同じハードウェア及びソフトウェアスタックを有するとして説明を進める。ノード１１１、１１３、１２１、１２３による以下の処理は、主にプロセッサ１１１ｂにより実行される。
【０１３１】
（Ｓ２０１）ノード１１１は、コピーの開始指示に応じてコピービットマップ２１３を参照し、コピー範囲の中でコピーが未了の部分を検索する。そして、ノード１１１は、コピーの開始位置を決定する。また、ノード１１１は、コピービットマップ２１３を参照し、コピーの開始位置から連続して未了の値「１」が記述されている範囲を特定する。特定された範囲が今回のコピー範囲となる。
【０１３２】
（Ｓ２０２）ノード１１１は、コピー範囲の排他設定を実施する。排他設定されたコピー範囲への新規Ｉ／Ｏはコピーの処理が完了するまで待たされる。
（Ｓ２０３）ノード１１１は、コピー範囲の開始位置及びそのコピー範囲に基づいてコピー元担当ノード（ノード１１３）を特定する。そして、ノード１１１は、ノード１１３との間で通信を開始する。この通信で、ノード１１１からノード１１３へとコピー処理の実行要求（Ｒｅｑ．１）が通知される。
【０１３３】
（Ｓ２０４）ノード１１３は、マップ情報を利用したコピーができるか否かを判定する。例えば、ノード１１３は、コピー元領域のコピー範囲に対応するマップ情報のバウンダリと、コピー先領域のコピー範囲に対応するマップ情報のバウンダリとが合っている場合、マップ情報を利用したコピーができると判定する。
【０１３４】
図１８の例では、ＬＵＮ＃０のマップ情報内の論理アドレスｌｇＡｄｄ＃００、＃０１、＃０２の範囲がコピー元領域のコピー範囲になる。また、ＬＵＮ＃１のマップ情報内の論理アドレスｌｇＡｄｄ＃１０、＃１１、＃１２の範囲がコピー先領域のコピー範囲になる。ＬＵＮ＃０側のバウンダリはｌｇＡｄｄ＃００、＃０２であり、ＬＵＮ＃１側のバウンダリはｌｇＡｄｄ＃１０、＃１２である。いずれのコピー範囲も連続する３つの論理アドレスを含むサイズであり、バウンダリの対応関係が認められる。
【０１３５】
マップ情報を利用したコピーができる場合、処理はＳ２０５へと進む。一方、マップ情報を利用したコピーができない場合、処理はＳ２１５へと進む。
（Ｓ２０５）コピー元担当ノードであるノード１１３は、コピー元領域のコピー範囲に対応するマップ情報を読み出す。このマップ情報を参照することで、ノード１１３は、コピー範囲のデータが格納されている場所を特定することが可能になる。
【０１３６】
（Ｓ２０６）ノード１１３は、マップ情報を参照してデータ格納ノードを特定する。この例では、データ格納ノードとしてノード１２３が特定される。ノード１２３は、データ格納ノードとして特定されたノード１２３との通信を開始する。この通信で、ノード１１３からノード１２３へとコピー対象のユーザデータ２０８に対する処理の実行要求（Ｒｅｑ．２）が通知される。
【０１３７】
（Ｓ２０７、Ｓ２０８）データ格納ノードであるノード１２３は、ユーザデータ２０８の参照情報２０７にコピー先領域の情報（例えば、コピー先領域のＬＵＮ、ＬＢＡ）を記録する。そして、ノード１２３は、コピー元担当ノードであるノード１１３へ実行要求（Ｒｅｑ．２）に対する応答（Ｒｓｐ．２）を返す。
【０１３８】
（Ｓ２０９）コピー元担当ノードであるノード１１３は、コピーの開始位置とコピー範囲とに基づいてコピー先担当ノードを特定する。この例では、コピー先担当ノードとしてノード１２１が特定される。この場合、ノード１１３は、コピー先担当ノードとして特定されたノード１２１との通信を開始する。この通信で、ノード１１３からノード１２１へとコピー元領域のマップ情報が送られ、マップ情報の更新要求（Ｒｅｑ．３）が通知される。
【０１３９】
（Ｓ２１０、Ｓ２１１）コピー先担当ノードであるノード１２１は、ノード１１３から受信したマップ情報に基づいて、コピー先領域のコピー範囲に対応するマップ情報を更新する。そして、ノード１２１は、コピー元担当ノードであるノード１１３へ更新要求（Ｒｅｑ．３）に対する応答（Ｒｓｐ．３）を返す。
【０１４０】
（Ｓ２１２）コピー先担当ノードであるノード１２１から応答（Ｒｓｐ．３）を受けたノード１１３は、セッション管理ノードであるノード１１１へ実行要求（Ｒｅｑ．１）に対する応答（Ｒｓｐ．１）を返す。
【０１４１】
（Ｓ２１３、Ｓ２１４）セッション管理ノードであるノード１１１は、コピー範囲に対応するコピービットマップ２１３をＯＦＦに設定（コピー範囲の論理アドレスに対応する値を０に設定）する。そして、ノード１１１は、コピー範囲の排他設定を解除する。この時点でコピー範囲のコピーが完了したとみなされる。Ｓ２１４の処理が完了すると、図２０及び図２１に示した一連の処理は終了する。
【０１４２】
（Ｓ２１５）コピー元担当ノードであるノード１１３又はコピー先担当ノードであるノード１２１は、図１８や図１９などに示したマップ情報を利用する重複排除コピーではなく、コピー範囲のデータを物理領域（例えば、業務プール２０６ａ、バックアッププール２０６ｂ）間で実際に読み書きする通常コピー（非重複排除コピー）を実施する。Ｓ２１５の処理が完了すると、図２０及び図２１に示した一連の処理は終了する。
【０１４３】
（処理フロー：コピー中ＷＲＩＴＥ）
次に、図２２及び図２３を参照しながら、重複排除コピー中のＩ／Ｏ処理の流れについて、さらに説明する。ここでは、コピー中の書き込み処理について説明する。図２２は、第２実施形態に係る重複排除コピー中の書き込みＩ／Ｏ処理（コピー中ＷＲＩＴＥ）の流れを示した第１のフロー図である。図２３は、第２実施形態に係る重複排除コピー中の書き込みＩ／Ｏ処理（コピー中ＷＲＩＴＥ）の流れを示した第２のフロー図である。
【０１４４】
以下では、ノード１１１、１１３、１２１、１２３の役割がさらに追加される。追加される役割は、ライトＩ／Ｏ受信ノード、担当ノードである。ライトＩ／Ｏ受信ノードは、サーバ５１からＷＲＩＴＥ  Ｉ／ＯのＩ／Ｏ要求を受け付けたノードである。担当ノードは、サーバ５１からＩ／Ｏ要求を処理するノードである。
【０１４５】
なお、ライトＩ／Ｏ受信ノードをＩ／Ｏ−Ｒ−Ｎｏｄｅ、担当ノードをＲＳＰ−Ｎｏｄｅと表記する場合がある。ここでは一例として、ノード１１３がライトＩ／Ｏ受信ノードの役割を担当するものとする。
【０１４６】
（Ｓ３０１、Ｓ３０２）ライトＩ／Ｏ受信ノードであるノード１１３は、ＷＲＩＴＥ範囲に基づいて担当ノードを決定する。この例では、担当ノードがノード１２１に決定されたとする。この場合、ノード１１３は、担当ノードであるノード１２１との通信を開始する。この通信では、ノード１１３からノード１２１へコピー中ＷＲＩＴＥの実行要求（Ｒｅｑ．２０）が通知される。
【０１４７】
（Ｓ３０３）担当ノードであるノード１２１は、ＷＲＩＴＥ範囲にコピーセッションがあるか否かを判定する。例えば、ノード１２１は、コピービットマップ２１３を参照し、ＷＲＩＴＥ範囲の論理アドレスに対応する値が「１」（コピー未了）の部分がある場合にＷＲＩＴＥ範囲にコピーセッションがあると判定する。ＷＲＩＴＥ範囲にコピーセッションがある場合、処理はＳ３０４へと進む。一方、ＷＲＩＴＥ範囲にコピーセッションがない場合、処理はＳ３１６へと進む。
【０１４８】
（Ｓ３０４）ノード１２１は、セッション管理ノードであるノード１１１との通信を開始する。この通信では、ノード１２１からノード１１１へとＷＲＩＴＥ  Ｉ／Ｏ処理の実行要求（Ｒｅｑ．２１）が通知される。
【０１４９】
（Ｓ３０５）セッション管理ノードであるノード１１１は、ＷＲＩＴＥ範囲と重なるコピー範囲の排他設定を実施する。排他設定されたコピー範囲への新規Ｉ／Ｏはコピーの処理が完了するまで待たされる。なお、コピー開始位置及びコピー範囲は、例えば、ＷＲＩＴＥ範囲及びコピービットマップ２１３の値に基づいて決定可能である。
【０１５０】
（Ｓ３０６）ノード１１１は、コピービットマップ２１３を参照し、ＷＲＩＴＥ範囲と重なるコピー範囲がコピー済みであるか否かを判定する。コピー範囲がコピー済みである場合、処理はＳ３０９へと進む。一方、コピー範囲がコピー済みでない場合、処理はＳ３０７へと進む。
【０１５１】
（Ｓ３０７、Ｓ３０８）図２０、図２１のＳ２０４からＳ２１２までの処理が実行される。その後、ノード１１１は、コピー範囲に対応するコピービットマップ２１３をＯＦＦに設定（値を「０」に設定）する。
【０１５２】
（Ｓ３０９）ノード１１１は、担当ノードであるノード１２１へ実行要求（Ｒｅｑ．２１）に対する応答（Ｒｓｐ．２１）を返す。
（Ｓ３１０、Ｓ３１１）ノード１２１は、ＷＲＩＴＥ  Ｉ／Ｏ処理を実行する。なお、ＷＲＩＴＥ  Ｉ／Ｏ処理の実行は、ノード１２１以外のノードが実行してもよい。また、ノード１２１は、セッション管理ノードであるノード１１１との通信を開始する。この通信では、ノード１２１からノード１１１へＷＲＩＴＥ範囲の差分ビットマップ（後述）の更新要求（Ｒｅｑ．２２）が通知される。
【０１５３】
（Ｓ３１２）セッション管理ノードであるノード１１１は、ＷＲＩＴＥ範囲の差分ビットマップをＯＮに設定（値を「１」に設定）する。差分ビットマップは、マップ情報を利用してコピー完了とされ、物理領域間（例えば、業務プール２０６ａ、バックアッププール２０６ｂ）のコピーが未了の状態にあるデータが更新された場合に、その更新部分を指し示すためのフラグである。例えば、値「１」で「更新あり」を示す場合、差分ビットマップの値を参照することで、コピー中ＷＲＩＴＥの該当範囲が特定されうる。
【０１５４】
（Ｓ３１３、Ｓ３１４、Ｓ３１５）ノード１１１は、担当ノードであるノード１２１へ更新要求（Ｒｅｑ．２２）に対する応答（Ｒｓｐ．２２）を返す。この応答を受けたノード１２１は、ライトＩ／Ｏ受信ノードであるノード１１３へ実行要求（Ｒｅｑ．２０）に対する応答（Ｒｓｐ．２０）を返す。この応答を受けたノード１１３は、サーバ５１に対してＷＲＩＴＥ  Ｉ／ＯのＩ／Ｏ要求に対する応答を返す。Ｓ３１５の処理が完了すると、図２２及び図２３に示した一連の処理は完了する。
【０１５５】
（Ｓ３１６）担当ノードであるノード１２１は、コピーセッションがないため、通常通りＷＲＩＴＥ  Ｉ／Ｏ処理を実行する。なお、ノード１２１以外のノードがＷＲＩＴＥ  Ｉ／Ｏを実行してもよい。Ｓ３１６の処理が完了すると、図２２及び図２３に示した一連の処理は終了する。
【０１５６】
以上、第２実施形態に係る重複排除コピーについて説明した。上記の処理フローの説明では、１つの実施例として複数のノードにそれぞれ役割を割り振り、ノード間の通信を交えて重複排除コピー及びコピー中ＷＲＩＴＥの処理などを実行する仕組みを紹介した。但し、各ノードが担当する役割の内容や、役割の振り分け方などは様々に変形可能である。
【０１５７】
つまり、図１５、図１６、図１８、図１９に示した重複排除コピーの処理のうち、どの部分をどのノードに担当させるかは実施の態様に応じて適宜変形することが可能である。また、上記のマップ情報はメタ情報２１０に対応する情報であり、メタ情報２１０を利用する場合も上記の処理フローに沿って処理を進めることができる。このような変形についても当然に第２実施形態の技術的範囲に属する。
【０１５８】
以上、第２実施形態について説明した。
＜３．付記＞
以上説明した実施形態に関し、さらに以下の付記を開示する。
【０１５９】
（付記１）  論理領域と物理領域のアドレスとを対応付けるためのメタ情報を記憶する記憶部と、
第１の論理領域にあるデータを第２の論理領域にコピーするとき、前記メタ情報のうち前記第１の論理領域と前記物理領域のアドレスとを対応付けるための第１のメタ情報を用いて取得した、前記第１の論理領域における前記データのアドレスに対応する前記物理領域の第１のアドレスを、
前記メタ情報のうち前記第２の論理領域と前記物理領域のアドレスとを対応付けるための第２のメタ情報における物理アドレスとして、前記第２の論理領域における前記データのコピー先アドレスに対応付けることで前記コピーを完了する制御部と
を有する、ストレージ制御装置。
【０１６０】
（付記２）  前記制御部は、前記データが前記第１の論理領域に書き込まれるとき、前記第１の論理領域に関する情報を前記データに付与し、前記データを前記第１の論理領域から前記第２の論理領域にコピーするとき、前記データに前記第２の論理領域に関する情報をさらに付与する
付記１に記載のストレージ制御装置。
【０１６１】
（付記３）  前記制御部は、前記メタ情報のデータサイズが所定サイズに到達したとき、前記メタ情報を前記物理領域に書き込むと共に、前記メタ情報の書き込み先となる前記物理領域内の位置を示す位置情報を生成する
付記２に記載のストレージ制御装置。
【０１６２】
（付記４）  前記制御部は、前記コピーの完了前に、前記第２の論理領域における前記データのコピー先アドレスに新たなデータが書き込まれるとき、前記第１のアドレスを前記データのコピー先アドレスに対応付けた後で、前記第２のメタ情報を用いて、前記新たなデータの書き込み先となる前記物理領域の第２のアドレスと、前記新たなデータが書き込まれる前記第２の論理領域のアドレスとを対応付ける
付記１に記載のストレージ制御装置。
【０１６３】
（付記５）  前記制御部は、前記第１の論理領域における前記データのアドレスに新たなデータが書き込まれるとき、前記新たなデータが前記第１のアドレスとは異なる前記物理領域の第３のアドレスに書き込まれるように制御すると共に、前記第１のメタ情報を用いて、前記第１の論理領域における前記データのアドレスと前記第３のアドレスとを対応付ける
付記１に記載のストレージ制御装置。
【０１６４】
（付記６）  論理領域と物理領域のアドレスとを対応付けるためのメタ情報を記憶部に記憶させ、
第１の論理領域にあるデータを第２の論理領域にコピーするとき、前記メタ情報のうち前記第１の論理領域と前記物理領域のアドレスとを対応付けるための第１のメタ情報を用いて取得した、前記第１の論理領域における前記データのアドレスに対応する前記物理領域の第１のアドレスを、
前記メタ情報のうち前記第２の論理領域と前記物理領域のアドレスとを対応付けるための第２のメタ情報における物理アドレスとして、前記第２の論理領域における前記データのコピー先アドレスに対応付けることで前記コピーを完了する
処理をコンピュータに実行させる、ストレージ制御プログラム。
【０１６５】
（付記７）  前記データが前記第１の論理領域に書き込まれるとき、前記第１の論理領域に関する情報を前記データに付与し、前記データを前記第１の論理領域から前記第２の論理領域にコピーするとき、前記データに前記第２の論理領域に関する情報をさらに付与する
処理を前記コンピュータに実行させる、付記６に記載のストレージ制御プログラム。
【０１６６】
（付記８）  前記メタ情報のデータサイズが所定サイズに到達したとき、前記メタ情報を前記物理領域に書き込むと共に、前記メタ情報の書き込み先となる前記物理領域内の位置を示す位置情報を生成する
処理を前記コンピュータに実行させる、付記７に記載のストレージ制御プログラム。
【０１６７】
（付記９）  前記コピーの完了前に、前記第２の論理領域における前記データのコピー先アドレスに新たなデータが書き込まれるとき、前記第１のアドレスを前記データのコピー先アドレスに対応付けた後で、前記第２のメタ情報を用いて、前記新たなデータの書き込み先となる前記物理領域の第２のアドレスと、前記新たなデータが書き込まれる前記第２の論理領域のアドレスとを対応付ける
処理を前記コンピュータに実行させる、付記６に記載のストレージ制御プログラム。
【０１６８】
（付記１０）  前記第１の論理領域における前記データのアドレスに新たなデータが書き込まれるとき、前記新たなデータが前記第１のアドレスとは異なる前記物理領域の第３のアドレスに書き込まれるように制御すると共に、前記第１のメタ情報を用いて、前記第１の論理領域における前記データのアドレスと前記第３のアドレスとを対応付ける
処理を前記コンピュータに実行させる、付記６に記載のストレージ制御プログラム。
【符号の説明】
【０１６９】
１０  ストレージ制御装置
１１  記憶部
１１ａ  メタ情報
１１ｂ  完了情報
１２  制御部
２０  物理領域
２１  第１の論理領域
２２  第２の論理領域
３１  第１の論理領域の対応情報
３２  第２の論理領域の対応情報
【図１】
2018181173.tif 000003
【図２】
2018181173.tif 000004
【図３】
2018181173.tif 000005
【図４】
2018181173.tif 000006
【図５】
2018181173.tif 000007
【図６】
2018181173.tif 000008
【図７】
2018181173.tif 000009
【図８】
2018181173.tif 000010
【図９】
2018181173.tif 000011
【図１０】
2018181173.tif 000012
【図１１】
2018181173.tif 000013
【図１２】
2018181173.tif 000014
【図１３】
2018181173.tif 000015
【図１４】
2018181173.tif 000016
【図１５】
2018181173.tif 000017
【図１６】
2018181173.tif 000018
【図１７】
2018181173.tif 000019
【図１８】
2018181173.tif 000020
【図１９】
2018181173.tif 000021
【図２０】
2018181173.tif 000022
【図２１】
2018181173.tif 000023
【図２２】
2018181173.tif 000024
【図２３】
2018181173.tif 000025