(57)【要約】【課題】データ移行の進捗状況の管理に用いられるデータのサイズの増大化を抑制すること。【解決手段】ストレージ制御装置１００は、移行元の論理ボリューム１１１の先頭または末尾からデータを順次読み出して移行先の論理ボリューム１２１に移行する。ストレージ制御装置１００は、データを移行先の論理ボリューム１２１に移行する都度、移行されたデータの位置を示す第１の情報ｄ１を更新する。ストレージ制御装置１００は、第１の情報ｄ１と、移行元の論理ボリューム１１１の容量を示す第２の情報ｄ２とに基づいて、移行元の論理ボリューム１１１から移行済みの容量が、移行元の論理ボリューム１１１の容量以上であるか否かを判定する。ストレージ制御装置１００は、移行済みの容量が移行元の論理ボリューム１１１の容量以上であると判定した場合に、移行元の論理ボリューム１１１からのデータの読み出しを終了する。【選択図】図１
2017162355.tif 000002
【特許請求の範囲】
【請求項１】
移行元の論理ボリュームの先頭または末尾から単位長のデータを順次読み出して移行先の論理ボリュームに移行するストレージ装置であって、
前記移行元の論理ボリュームにおける前記単位長のデータの位置を示す第１の情報と前記移行元の論理ボリュームの容量を示す第２の情報とを含む移行管理情報を記憶する記憶部と、
前記単位長のデータを前記移行先の論理ボリュームに移行する都度、前記第１の情報を更新し、
前記第１の情報と、前記第２の情報とに基づいて前記データの移行の進捗を管理し、前記移行元の論理ボリュームから移行済みの容量が前記移行元の論理ボリュームの容量以上であると判定した場合に、前記データの移行を終了する、
制御部を有することを特徴とするストレージ制御装置。
【請求項２】
前記第１の情報は、前記単位長のデータを移行した数を示し、
前記制御部は、
前記第１の情報が示す数に前記単位長を乗算して前記移行元の論理ボリュームから移行済みの容量を算出し、算出した前記移行元の論理ボリュームから移行済みの容量が前記移行元の論理ボリュームの容量以上であるか否かを判定する、ことを特徴とする請求項１に記載のストレージ制御装置。
【請求項３】
前記移行管理情報は、前記移行先の論理ボリュームがシンプロビジョニングの論理ボリュームであるか否かを示す移行先ボリュームタイプ情報を含み、
前記移行先ボリュームタイプ情報がシンプロビジョニングの論理ボリュームであることを示す場合において、
前記制御部は、
前記シンプロビジョニングの管理単位に対応する前記移行元の論理ボリュームの記憶領域が、空き領域であるか否かを判定し、
空き領域ではないと判定した場合、前記移行元の論理ボリュームの記憶領域に対応する前記移行先の論理ボリュームの記憶領域に物理領域を割り当てて、前記移行元の論理ボリュームの記憶領域から読み出した前記データを移行し、
空き領域であると判定した場合、前記移行元の論理ボリュームの記憶領域に対応する前記移行先の論理ボリュームの記憶領域に物理領域を割り当てず、前記第１の情報を更新する、ことを特徴とする請求項１または２に記載のストレージ制御装置。
【請求項４】
前記制御部は、
前記移行元の論理ボリュームからのデータの読出要求を受け付けた場合、前記第１の情報に基づいて、前記読出要求されたデータが、前記移行先の論理ボリュームに移行済みであるか否かを判定し、
移行済みではないと判定した場合、前記移行元の論理ボリュームから前記読出要求されたデータを読み出し、
移行済みであると判定した場合、前記移行先の論理ボリュームから前記読出要求されたデータを読み出す、ことを特徴とする請求項１〜３のいずれか一つに記載のストレージ制御装置。
【請求項５】
前記制御部は、
前記移行元の論理ボリュームへのデータの書込要求を受け付けた場合、前記移行元の論理ボリュームおよび前記移行先の論理ボリュームに、前記書込要求されたデータを書き込む、ことを特徴とする請求項１〜４のいずれか一つに記載のストレージ制御装置。
【請求項６】
移行元の論理ボリュームの先頭または末尾から単位長のデータを順次読み出して移行先の論理ボリュームに移行するコンピュータが、
前記単位長のデータを前記移行先の論理ボリュームに移行する都度、前記移行元の論理ボリュームにおける前記単位長のデータの位置を示す第１の情報と前記移行元の論理ボリュームの容量を示す第２の情報とを含む移行管理情報を記憶する記憶部に記憶された前記第１の情報を更新し、
前記第１の情報と、前記第２の情報とに基づいて前記データの移行の進捗を管理し、前記移行元の論理ボリュームから移行済みの容量が前記移行元の論理ボリュームの容量以上であると判定した場合に、前記データの移行を終了する、
処理を実行することを特徴とするストレージ制御方法。
【請求項７】
移行元の論理ボリュームの先頭または末尾から単位長のデータを順次読み出して移行先の論理ボリュームに移行するコンピュータに、
前記単位長のデータを前記移行先の論理ボリュームに移行する都度、前記移行元の論理ボリュームにおける前記単位長のデータの位置を示す第１の情報と前記移行元の論理ボリュームの容量を示す第２の情報とを含む移行管理情報を記憶する記憶部に記憶された前記第１の情報を更新し、
前記第１の情報と、前記第２の情報とに基づいて前記データの移行の進捗を管理し、前記移行元の論理ボリュームから移行済みの容量が前記移行元の論理ボリュームの容量以上であると判定した場合に、前記データの移行を終了する、
処理を実行させることを特徴とするストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラムに関する。
【背景技術】
【０００２】
従来、使用中のストレージ装置が経年劣化した場合などに、使用中のストレージ装置を新しいストレージ装置に交換するリプレイス作業が行われる。リプレイス作業の際、業務を停止させることなく、使用中のストレージ装置から新しいストレージ装置にデータを移行する技術がある。
【０００３】
先行技術としては、例えば、書き込み要求に対応して第１プールから記憶領域を割り当て、第１プールから割り当てられるべき複数の関連データの記憶領域を第１プール内の異なる特定のＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）グループから割り当てるよう制御するものがある。また、例えば、仮想論理ボリュームを実論理ボリュームにマイグレーションする技術がある。また、例えば、保守員の再配置指示があると、指示された２つの論理ディスク装置の間で物理ディスク装置を配置替えし、全データを連続的に格納し直す技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１０９７４９号公報
【特許文献２】特開２０１１−１３８００号公報
【特許文献３】特開平９−２７４５４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術では、移行元のストレージ装置から移行先のストレージ装置へのデータ移行の進捗状況の管理に用いられる管理データのサイズが増大化してしまう場合がある。例えば、移行元のストレージ装置の単位容量のデータごとに移行済みか否かを示すビットマップを管理データとして用いる場合、移行元のストレージ装置の容量が大きくなるほど、管理データのサイズが増大化してしまう。
【０００６】
１つの側面では、本発明は、データ移行の進捗状況の管理に用いられるデータのサイズの増大化を抑制することができるストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一側面によれば、移行元の論理ボリュームの先頭または末尾から単位長のデータを順次読み出して移行先の論理ボリュームに移行するストレージ装置であって、前記移行元の論理ボリュームにおける前記単位長のデータの位置を示す第１の情報と前記移行元の論理ボリュームの容量を示す第２の情報とを含む移行管理情報を記憶する記憶部と、前記単位長のデータを前記移行先の論理ボリュームに移行する都度、前記第１の情報を更新し、前記第１の情報と、前記第２の情報とに基づいて前記データの移行の進捗を管理し、前記移行元の論理ボリュームから移行済みの容量が前記移行元の論理ボリュームの容量以上であると判定した場合に、前記データの移行を終了するストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラムが提案される。
【発明の効果】
【０００８】
本発明の一態様によれば、データ移行の進捗状況の管理のための記憶領域の使用量の増大化を抑制することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態にかかるストレージ制御方法の一実施例を示す説明図である。
【図２】図２は、ストレージシステム２００の一例を示す説明図である。
【図３】図３は、ストレージ装置２０１，２０２のハードウェア構成例を示す説明図である。
【図４】図４は、ホスト装置２０３のハードウェア構成例を示すブロック図である。
【図５】図５は、移行管理テーブル５００の記憶内容の一例を示す説明図である。
【図６】図６は、ストレージ制御装置１００の機能的構成例を示すブロック図である。
【図７】図７は、動作例１によるデータの移行例を示す説明図（その１）である。
【図８】図８は、動作例１によるデータの移行例を示す説明図（その２）である。
【図９】図９は、動作例１によるデータの移行中における読出処理を示す説明図（その１）である。
【図１０】図１０は、動作例１によるデータの移行中における読出処理を示す説明図（その２）である。
【図１１】図１１は、動作例１によるデータの移行中における書込処理を示す説明図（その１）である。
【図１２】図１２は、動作例１によるデータの移行中における書込処理を示す説明図（その２）である。
【図１３】図１３は、動作例１による移行終了の判定例を示す説明図である。
【図１４】図１４は、動作例２によるデータの移行例を示す説明図（その１）である。
【図１５】図１５は、動作例２によるデータの移行例を示す説明図（その２）である。
【図１６】図１６は、動作例２によるデータの移行例を示す説明図（その３）である。
【図１７】図１７は、動作例２によるデータの移行中における読出処理を示す説明図である。
【図１８】図１８は、動作例２によるデータの移行中における書込処理を示す説明図である。
【図１９】図１９は、動作例２による移行終了の判定例を示す説明図である。
【図２０】図２０は、移行処理手順の一例を示すフローチャートである。
【図２１】図２１は、通常処理手順の一例を示すフローチャートである。
【図２２】図２２は、シンプロビジョニング用処理手順の一例を示すフローチャート（その１）である。
【図２３】図２３は、シンプロビジョニング用処理手順の一例を示すフローチャート（その２）である。
【図２４】図２４は、読出処理手順の一例を示すフローチャートである。
【図２５】図２５は、書込処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に、図面を参照して、本発明にかかるストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラムの実施の形態を詳細に説明する。
【００１１】
（実施の形態にかかるストレージ制御方法の一実施例）
図１は、実施の形態にかかるストレージ制御方法の一実施例を示す説明図である。図１において、ストレージ制御装置１００は、移行元の論理ボリューム１１１のデータを、移行先の論理ボリューム１２１に移行するコンピュータである。
【００１２】
ここで、業務を停止させることなく、移行元の論理ボリューム１１１のデータを、移行先の論理ボリューム１２１に移行する場合が考えられる。例えば、移行元の論理ボリューム１１１の単位容量のデータごとの移行状況を管理するビットマップを用いる場合が考えられる。ビットマップは、移行元の論理ボリューム１１１の単位容量のデータごとに、当該データが移行済みか否かを示す１ｂｉｔの情報を割り当てておくことにより、当該データが移行済みか否かを表現するデータである。単位容量は、例えば、５１２ＫＢ（ＫｉｌｏＢｙｔｅ）である。
【００１３】
具体的には、ビットマップを用いて、移行済みではない単位容量のデータを特定可能にして移行状況を管理することができ、移行元の論理ボリューム１１１のデータを移行先の論理ボリューム１２１に移行することができる。また、ホスト装置から読出要求や書込要求を受け付けたときに、移行元の論理ボリューム１１１または移行先の論理ボリューム１２１のいずれかに対して読出処理や書込処理を行って、移行が中断されても、ビットマップを用いて移行状況を保持することができる。
【００１４】
このように、ビットマップを用いて、ホスト装置からの読出要求や書込要求に応答可能にすることにより業務を停止させないようにすることができる。このとき、読出処理や書込処理は、移行元の論理ボリューム１１１と移行先の論理ボリューム１２１との整合性を保ち、ビットマップによって保持された移行状況が変わらないように、単位容量のデータごとに行われることになる。
【００１５】
ところが、この場合、移行元の論理ボリューム１１１の容量が大きくなるほど、ビットマップのサイズが増大化してしまう傾向がある。このため、移行元の論理ボリューム１１１の容量が大きくなるほど、ビットマップを格納可能なサイズの記憶領域を有するメモリを用意することになってしまう。
【００１６】
これに対し、単位容量を比較的大きい値に設定することにより、ビットマップのサイズの増大化を抑制する場合が考えられる。しかしながら、この場合、ホスト装置から読出要求や書込要求を受け付けたときに、読出処理や書込処理が単位容量のデータごとに行われるため、読出処理や書込処理にかかる処理量の増大化を招いてしまう。そして、ホスト装置への応答時間の増大化を招き、規定時間以内にホスト装置に応答することができない可能性があり、応答性能の悪化を招いてしまうことがある。
【００１７】
そこで、本実施の形態では、ホスト装置への応答時間の増大化を抑制するとともに、データ移行の進捗状況の管理に用いられる管理データのサイズの増大化を抑制することができるストレージ制御方法について説明する。
【００１８】
図１の例では、移行元の論理ボリューム１１１は、移行元の記憶装置１１０によって実現される。移行元の記憶装置１１０は、例えば、１または複数のディスクである。移行先の論理ボリューム１２１は、移行先の記憶装置１２０によって実現される。移行先の記憶装置１２０は、例えば、１または複数のディスクである。
【００１９】
ストレージ制御装置１００は、例えば、移行先の記憶装置１２０を有する移行先のコンピュータである。また、ストレージ制御装置１００は、例えば、移行元の記憶装置１１０を有する移行元のコンピュータであってもよい。また、ストレージ制御装置１００は、例えば、移行先の記憶装置１２０を有する移行先のコンピュータや移行元の記憶装置１１０を有する移行元のコンピュータとは異なる他のコンピュータであってもよい。
【００２０】
ストレージ制御装置１００は、データ移行の進捗状況の管理に用いられる管理データとして、第１の情報ｄ１と第２の情報ｄ２とを含む移行管理情報を記憶する。第１の情報ｄ１とは、移行元の論理ボリューム１１１から最後に移行されたデータの、移行元の論理ボリューム１１１における位置を示す。第１の情報ｄ１は、例えば、移行元の論理ボリューム１１１のＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓｉｎｇ）の値である。第１の情報ｄ１は、具体的には、最後に移行されたデータの位置として、最後に移行されたデータの次のデータが格納されたセクタの先頭を示す、当該セクタのＬＢＡで表現されてもよい。セクタは、例えば、５１２ＫＢの領域である。第２の情報ｄ２とは、移行元の論理ボリューム１１１の容量を示す情報である。
【００２１】
（１−１）ストレージ制御装置１００は、移行元の論理ボリューム１１１の先頭または末尾からデータを順次読み出して移行先の論理ボリューム１２１に移行する。ストレージ制御装置１００は、例えば、移行元の論理ボリューム１１１の先頭から、５１２ＫＢ単位のデータを順次読み出して移行先の論理ボリューム１２１に移行する。
【００２２】
（１−２）ストレージ制御装置１００は、データを移行先の論理ボリューム１２１に移行する都度、第１の情報ｄ１を更新する。ストレージ制御装置１００は、例えば、移行元の論理ボリューム１１１から、５１２ＫＢのデータを読み出して移行先の論理ボリューム１２１に移行した場合、第１の情報ｄ１が示すＬＢＡの値に５１２ＫＢ分の値「１」を加算して更新する。
【００２３】
（１−３）ストレージ制御装置１００は、データを移行する都度、第１の情報ｄ１と、第２の情報ｄ２とに基づいて、移行元の論理ボリューム１１１から移行済みの容量が、移行元の論理ボリューム１１１の容量以上であるか否かを判定する。そして、ストレージ制御装置１００は、移行済みの容量が移行元の論理ボリューム１１１の容量以上であると判定した場合に、移行元の論理ボリューム１１１からのデータの読み出しを終了する。
【００２４】
ストレージ制御装置１００は、具体的には、第１の情報ｄ１が示すＬＢＡの値にセクタのサイズ５１２ＫＢを乗算して移行済みの容量を算出し、移行済みの容量が移行元の論理ボリューム１１１の容量以上であるか否かを判定する。そして、ストレージ制御装置１００は、移行済みの容量が移行元の論理ボリューム１１１の容量以上であれば、移行元の論理ボリューム１１１からのデータの読み出しを終了する。
【００２５】
なお、ストレージ制御装置１００は、複数のセクタ分のデータごとに、順次読み出して移行する場合には、移行元の論理ボリューム１１１の最終ＬＢＡよりも大きいＬＢＡの値が示すセクタからデータの読み出しを試みてしまうことが考えられる。このとき、第１の情報ｄ１が示すＬＢＡの値は、最終ＬＢＡよりも大きい値になってしまう。また、移行済みの容量として算出される値は、実際に移行されている容量より大きくなってしまう。
【００２６】
この場合であっても、ストレージ制御装置１００は、移行元の論理ボリューム１１１の最終ＬＢＡよりも大きいＬＢＡの値が示すセクタからの読み出しに失敗するため、当該セクタの分のデータとして不適切なデータを移行しなくてよい。そして、ストレージ制御装置１００は、移行済みの容量が移行元の論理ボリューム１１１の容量以上であるため、読み出しに失敗したセクタについては、読み出さなくてよいセクタであると判定し、正常に移行が終了したと判定することができる。
【００２７】
これによれば、ストレージ制御装置１００は、データ移行の進捗状況を管理する管理データとしてビットマップを用いずに、移行元の論理ボリューム１１１から移行先の論理ボリューム１２１へのデータ移行の進捗状況を管理することができる。
【００２８】
これにより、ストレージ制御装置１００は、移行元の論理ボリューム１１１の容量が大きくなっても、データ移行の進捗状況を管理する管理データのサイズの増大化を抑制することができる。また、ストレージ制御装置１００は、ビットマップを用いないため、ホスト装置から読出要求や書込要求を受け付けたときに、比較的小さい容量のデータごとに読出処理や書込処理を行ってもよくなり、ホスト装置への応答時間の増大化を抑制することができる。
【００２９】
また、ストレージ制御装置１００は、読出要求や書込要求に対して、移行元の論理ボリューム１１１と移行先の論理ボリューム１２１とに、どのように読出処理や書込処理を行えば、読出処理や書込処理が成功するか特定可能になる。また、ストレージ制御装置１００は、読出処理や書込処理によって、データの移行を中断しても、データ移行の進捗状況を管理することができるため、データの移行を再開することができる。
【００３０】
ここでは、第１の情報ｄ１が、移行元の論理ボリューム１１１のＬＢＡの値である場合について説明したが、これに限らない。例えば、第１の情報ｄ１は、移行元の論理ボリューム１１１から移行済みの容量を示す情報であってもよい。ストレージ制御装置１００は、移行元の論理ボリューム１１１の先頭の位置と、移行元の論理ボリューム１１１から移行済みの容量とに基づいて、移行元の論理ボリューム１１１から最後に移行されたデータの位置を特定可能である。
【００３１】
ここでは、第２の情報ｄ２が、移行元の論理ボリューム１１１の容量である場合について説明したが、これに限らない。例えば、第２の情報ｄ２は、移行元の論理ボリューム１１１の末尾のセクタのＬＢＡの値であってもよい。ストレージ制御装置１００は、移行元の論理ボリューム１１１の末尾のセクタのＬＢＡの値に基づいて、移行元の論理ボリューム１１１の容量を特定可能である。
【００３２】
また、ストレージ制御装置１００は、最後に移行されたデータの位置を示すＬＢＡの値が、移行元の論理ボリューム１１１の末尾のセクタのＬＢＡの値以上である場合に、移行済みの容量が移行元の論理ボリューム１１１の容量以上であると判定してもよい。
【００３３】
（ストレージシステム２００の一例）
次に、図２を用いて、図１に示したストレージ制御装置１００を適用した、ストレージシステム２００の一例について説明する。
【００３４】
図２は、ストレージシステム２００の一例を示す説明図である。図２において、ストレージシステム２００は、移行元のストレージ装置２０１と、移行先のストレージ装置２０２と、ホスト装置２０３とを含む。ストレージシステム２００において、移行元のストレージ装置２０１と、移行先のストレージ装置２０２とは、例えば、有線または無線の専用回線によって接続される。
【００３５】
移行元のストレージ装置２０１と、移行先のストレージ装置２０２とは、例えば、複数のパスによって接続されてもよい。移行元のストレージ装置２０１と、移行先のストレージ装置２０２とは、いずれかのパスを用いた通信に失敗した場合に、異なるパスを用いて通信を試行してもよい。また、ストレージシステム２００において、移行先のストレージ装置２０２と、ホスト装置２０３とは、例えば、有線または無線のネットワークなどによって接続される。
【００３６】
移行元のストレージ装置２０１は、１または複数の記憶装置を有し、自装置が有する１または複数の記憶装置によって実現される論理ボリュームに、データを記憶するコンピュータである。記憶装置は、例えば、ディスクである。移行元のストレージ装置２０１は、例えば、Ｔａｒｇｅｔによって、移行先のストレージ装置２０２に対するデータの入出力を制御する。
【００３７】
移行先のストレージ装置２０２は、実施の形態にかかるストレージ制御プログラムを記憶し、実施の形態にかかるストレージ制御プログラムを実行するコンピュータである。移行先のストレージ装置２０２は、１または複数の記憶装置を有し、移行元のストレージ装置２０１のデータを、自装置の１または複数の記憶装置によって実現される論理ボリュームに移行する。移行先のストレージ装置２０２は、例えば、ＴａｒｇｅｔやＩｎｉｔｉａｔｏｒによって、移行元のストレージ装置２０１やホスト装置２０３に対するデータの入出力を制御する。
【００３８】
ホスト装置２０３は、例えば、移行先のストレージ装置２０２に、読出要求や書込要求などを送信するコンピュータである。ホスト装置２０３は、例えば、ＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）によって、移行先のストレージ装置２０２に対するデータの入出力を制御する。ホスト装置２０３は、具体的には、サーバ、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、ノートＰＣ、携帯電話、スマートフォン、タブレット端末、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）などである。
【００３９】
以下では、移行先のストレージ装置２０２が、実施の形態にかかるストレージ制御プログラムを実行し、図１のストレージ制御装置１００として動作する場合について説明するが、これに限らない。例えば、移行元のストレージ装置２０１が、実施の形態にかかるストレージ制御プログラムを実行し、図１のストレージ制御装置１００として動作してもよい。また、ホスト装置２０３が、実施の形態にかかるストレージ制御プログラムを実行し、図１のストレージ制御装置１００として動作してもよい。
【００４０】
（ストレージ装置２０１，２０２のハードウェア構成例）
次に、図３を用いて、移行元と移行先のそれぞれのストレージ装置２０１，２０２のハードウェア構成例について説明する。
【００４１】
図３は、ストレージ装置２０１，２０２のハードウェア構成例を示す説明図である。図３において、ストレージ装置２０１，２０２は、ＣＭ（Ｃｏｎｔｒｏｌ  Ｍｏｄｕｌｅ）３１０と、デバイス３２０とを有する。ＣＭ３１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３１１と、メモリ３１２と、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）３１３と、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）３１４と、Ｔａｒｇｅｔ３１５と、Ｉｎｉｔｉａｔｏｒ３１６とを有する。
【００４２】
ＣＰＵ３１１は、ＣＭ３１０の全体の制御を司る。ＣＰＵ３１１は、例えば、メモリ３１２に記憶された、実施の形態にかかるストレージ制御プログラムなどを含む各種プログラムを実行してＣＭ３１０を動作させる。メモリ３１２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが、実施の形態にかかるストレージ制御プログラムなどを含む各種プログラムを記憶し、ＲＡＭがＣＰＵ３１１のワークエリアとして使用される。メモリ３１２に記憶されるプログラムは、ＣＰＵ３１１にロードされることで、コーディングされている処理をＣＰＵ３１１に実行させる。
【００４３】
デバイス３２０は、例えば、ディスクである。デバイス３２０は、例えば、ＤＥ（Ｄｉｓｋ  Ｅｎｃｌｏｓｕｒｅ）に搭載されている。１または複数のデバイス３２０を用いて、ＲＡＩＤ  Ｇｒｏｕｐが実現されてもよい。ＳＡＳ３１３は、デバイス３２０とのインターフェースを制御する。デバイス３２０は、論理ボリュームの実現に使用される。ＮＩＣ３１４は、ＣＭ間のインターフェースを制御する。Ｔａｒｇｅｔ３１５は、クライアントとしてホスト装置２０３などの外部装置から読出要求や書込要求を受け付ける場合におけるインターフェースを制御する。Ｉｎｉｔｉａｔｏｒ３１６は、ホスト装置２０３などの外部装置に読出要求や書込要求を出力する場合におけるインターフェースを制御する。
【００４４】
（ホスト装置２０３のハードウェア構成例）
次に、図４を用いて、ホスト装置２０３のハードウェア構成例について説明する。
【００４５】
図４は、ホスト装置２０３のハードウェア構成例を示すブロック図である。図４において、ホスト装置２０３は、ＣＰＵ４０１と、メモリ４０２と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）４０３と、ディスクドライブ４０４と、ディスク４０５とを有する。また、各構成部は、バス４００によってそれぞれ接続される。
【００４６】
ここで、ＣＰＵ４０１は、ホスト装置２０３の全体の制御を司る。メモリ４０２は、例えば、ＲＯＭ、ＲＡＭおよびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ４０１のワークエリアとして使用される。メモリ４０２に記憶されるプログラムは、ＣＰＵ４０１にロードされることで、コーディングされている処理をＣＰＵ４０１に実行させる。
【００４７】
Ｉ／Ｆ４０３は、通信回線を通じてネットワーク４１０に接続され、ネットワーク４１０を介して他のコンピュータ（例えば、図２に示した移行先のストレージ装置２０２）に接続される。そして、Ｉ／Ｆ４０３は、ネットワーク４１０と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。Ｉ／Ｆ４０３には、例えば、ＨＢＡなどを採用することができる。
【００４８】
ディスクドライブ４０４は、ＣＰＵ４０１の制御に従ってディスク４０５に対するデータのリード／ライトを制御する。ディスクドライブ４０４は、例えば、磁気ディスクドライブである。ディスク４０５は、ディスクドライブ４０４の制御で書き込まれたデータを記憶する不揮発メモリである。ディスク４０５は、例えば、磁気ディスク、光ディスクなどである。
【００４９】
ホスト装置２０３は、上述した構成部のほか、例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、半導体メモリ、キーボード、マウス、ディスプレイなどを有することにしてもよい。また、ホスト装置２０３は、ディスクドライブ４０４およびディスク４０５の代わりに、ＳＳＤおよび半導体メモリなどを有していてもよい。
【００５０】
（移行管理テーブル５００の記憶内容の一例）
次に、図５を用いて、移行管理テーブル５００の記憶内容の一例について説明する。移行管理テーブル５００は、例えば、図３に示したメモリ３１２などの記憶領域によって実現される。
【００５１】
図５は、移行管理テーブル５００の記憶内容の一例を示す説明図である。図５に示すように、移行管理テーブル５００は、テーブル番号と、移行元ボリューム番号と、移行元ボリューム容量と、移行済みＬＢＡと、移行状況と、移行先ボリュームタイプとのフィールドを有する。移行管理テーブル５００は、移行元の論理ボリューム１１１ごとに各フィールドに情報を設定することにより、管理データとなる移行管理情報がレコードとして記憶される。
【００５２】
テーブル番号とは、移行管理テーブル５００に含まれる子テーブルに割り振られた番号である。テーブル番号に対応付けて、移行元ボリューム番号と、移行元ボリューム容量と、移行済みＬＢＡと、移行状況と、移行先ボリュームタイプとのフィールドを有する子テーブルが記憶される。
【００５３】
移行元ボリューム番号とは、移行元の論理ボリューム１１１を識別する番号である。移行元ボリューム容量とは、移行元の論理ボリューム１１１の容量である。移行済みＬＢＡとは、移行元の論理ボリューム１１１におけるＬＢＡの値であって、移行元の論理ボリューム１１１から移行済みのデータの末尾を示す情報である。移行状況とは、現在の状況が移行中か、移行終了か、エラーかを示す情報である。移行先ボリュームタイプとは、移行先の論理ボリューム１２１がシンプロビジョニング（Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇ）の論理ボリュームであるか否かを示す情報である。
【００５４】
（ストレージ制御装置１００の機能的構成例）
次に、図６を用いて、ストレージ制御装置１００の機能的構成例について説明する。
【００５５】
図６は、ストレージ制御装置１００の機能的構成例を示すブロック図である。ストレージ制御装置１００は、読出部６０１と、判定部６０２と、移行部６０３と、更新部６０４と、受付部６０５と、処理部６０６とを含む。
【００５６】
読出部６０１〜処理部６０６は、制御部となる機能である。読出部６０１〜処理部６０６は、例えば、図３に示したメモリ３１２に記憶されたプログラムをＣＰＵ３１１に実行させることにより、または、ＳＡＳ３１３、ＮＩＣ３１４、Ｔａｒｇｅｔ３１５、Ｉｎｉｔｉａｔｏｒ３１６により、その機能を実現する。各機能部の処理結果は、例えば、メモリ３１２などの記憶領域に記憶される。
【００５７】
読出部６０１は、移行元の論理ボリューム１１１の先頭または末尾から単位長のデータを順次読み出す。読出部６０１は、例えば、移行元のストレージ装置２０１に読出要求を発行することにより、移行元のストレージ装置２０１が有する移行元の論理ボリューム１１１の先頭から所定量のデータごとに順次受信する。
【００５８】
読出部６０１は、具体的には、記憶部に記憶された移行管理情報に含まれる第１の情報ｄ１に基づいて、移行元のストレージ装置２０１に読出要求を発行する。記憶部は、例えば、移行管理テーブル５００である。第１の情報ｄ１とは、移行元の論理ボリューム１１１におけるデータの位置を示す情報である。第１の情報ｄ１は、例えば、移行管理テーブル５００の移行済みＬＢＡのフィールドのＬＢＡの値である。読出部６０１は、より具体的には、移行管理テーブル５００の移行済みＬＢＡのフィールドのＬＢＡの値が示すセクタの先頭から１または複数のセクタ分のデータについて、移行元のストレージ装置２０１に読出要求を発行する。これにより、読出部６０１は、移行先の論理ボリューム１２１に移行するデータを取得し、移行部６０３に出力することができる。
【００５９】
判定部６０２は、移行先の論理ボリューム１２１がシンプロビジョニングの論理ボリュームである場合、シンプロビジョニングの管理単位に対応する移行元の論理ボリューム１１１の記憶領域が、空き領域であるか否かを判定する。判定部６０２は、例えば、移行管理テーブル５００の移行先ボリュームタイプがシンプロビジョニングの論理ボリュームを示すか否かを判定する。判定部６０２は、シンプロビジョニングの論理ボリュームを示す場合、シンプロビジョニングの論理ボリュームのチャンクに対応する移行元の論理ボリューム１１１の記憶領域が、ゼロデータであるか否かを判定する。
【００６０】
ゼロデータとは、初期化または論理的に削除された状態のデータである。ゼロデータは、例えば、ビット値「０」が並んだデータである。ゼロデータは、初期化または論理的に削除された状態のデータであれば、ビット値「０」が並んだデータに限らない。これにより、判定部６０２は、データを移行するチャンクが、物理領域を割り当てなくてもよいチャンクであるか否かを判定することができる。
【００６１】
移行部６０３は、読出部６０１が読み出したデータを、移行先の論理ボリューム１２１に移行する。移行部６０３は、例えば、読出部６０１が移行元のストレージ装置２０１から受信した所定量のデータを、自装置が有する移行先の論理ボリューム１２１に移行する。これにより、移行部６０３は、データを移行先の論理ボリューム１２１に移行することができる。
【００６２】
移行部６０３は、例えば、判定部６０２が空き領域ではないと判定した場合、移行元の論理ボリューム１１１の記憶領域に対応する移行先の論理ボリューム１２１の記憶領域に物理領域を割り当ててもよい。そして、移行部６０３は、例えば、読出部６０１が移行元の論理ボリューム１１１の記憶領域から読み出したデータを移行してもよい。移行部６０３は、具体的には、移行元の論理ボリューム１１１の記憶領域に対応する移行先の論理ボリューム１２１のチャンクに物理領域を割り当てる。これにより、移行部６０３は、データを移行先の論理ボリューム１２１に移行することができる。
【００６３】
移行部６０３は、例えば、判定部６０２が空き領域であると判定した場合、移行元の論理ボリューム１１１の記憶領域に対応する移行先の論理ボリューム１２１の記憶領域に物理領域を割り当てなくてもよい。移行部６０３は、具体的には、移行元の論理ボリューム１１１の記憶領域に対応する移行先の論理ボリューム１２１のチャンクに物理領域を割り当てない。これにより、移行部６０３は、ゼロデータを移行先の論理ボリューム１２１に見かけ上移行することができ、移行先の論理ボリューム１２１に割り当てる物理領域の増大化を抑制することができる。
【００６４】
更新部６０４は、データを移行先の論理ボリューム１２１に移行する都度、第１の情報ｄ１を更新する。更新部６０４は、例えば、所定量のデータを移行先の論理ボリューム１２１に移行した際、移行管理テーブル５００の移行済みＬＢＡのフィールドのＬＢＡの値に、所定量分のセクタの値を加算して更新する。これにより、更新部６０４は、次回に移行するデータの位置を特定可能にし、かつ、移行済みの容量を特定可能にすることができ、データの移行の進捗状況を更新することができる。
【００６５】
更新部６０４は、判定部６０２が空き領域であると判定した場合、第１の情報ｄ１を更新する。更新部６０４は、例えば、判定部６０２が空き領域であると判定した場合、移行管理テーブル５００の移行済みＬＢＡのフィールドのＬＢＡの値に、空き領域分のセクタの値を加算して更新する。これにより、更新部６０４は、次回に移行するデータの位置を特定可能にし、かつ、移行済みの容量を特定可能にすることができ、データの移行の進捗状況を更新することができる。
【００６６】
判定部６０２は、記憶部に記憶された移行管理情報に含まれる第１の情報ｄ１と第２の情報ｄ２とに基づいて、データの移行の進捗状況を管理し、移行元の論理ボリューム１１１から移行済みの容量が移行元の論理ボリューム１１１の容量以上であるか否かを判定する。第２の情報ｄ２とは、移行元の論理ボリューム１１１の容量を示す情報である。第２の情報ｄ２は、例えば、移行管理テーブル５００の移行元ボリューム容量のフィールドの移行元の論理ボリューム１１１の容量である。
【００６７】
判定部６０２は、例えば、第１の情報が示す数に単位長を乗算して移行元の論理ボリュームから移行済みの容量を算出し、算出した移行元の論理ボリュームから移行済みの容量が移行元の論理ボリュームの容量以上であるか否かを判定する。判定部６０２は、具体的には、移行管理テーブル５００の移行済みＬＢＡのフィールドからＬＢＡの値を取得し、取得したＬＢＡの値にセクタのサイズを乗算して、移行済みの容量を算出する。そして、判定部６０２は、具体的には、移行管理テーブル５００の移行元ボリューム容量のフィールドから移行元の論理ボリューム１１１の容量を取得し、移行済みの容量が、移行元の論理ボリューム１１１の容量以上であるか否かを判定する。これにより、判定部６０２は、データの移行が完了したか否かを判定することができ、データの移行の進捗状況を管理することができる。
【００６８】
読出部６０１は、判定部６０２が、移行元の論理ボリューム１１１から移行済みの容量が移行元の論理ボリューム１１１の容量以上であると判定した場合に、データの読み出しを終了する。読出部６０１は、判定部６０２が、移行済みの容量が移行元の論理ボリューム１１１の容量以上であると判定した場合に、移行元の論理ボリューム１１１からのデータの移行が完了したとしてデータの読み出しを終了する。これにより、読出部６０１は、データの移行が完了した場合に、データの読み出しを終了してデータの移行を終了することができる。
【００６９】
また、読出部６０１は、いずれかのＬＢＡの値が示すセクタの先頭から１または複数のセクタ分のデータについて移行元のストレージ装置２０１に読出要求を発行した場合に、いずれかのセクタ分のデータが存在しないことを示すエラーを検出してもよい。そして、読出部６０１は、エラーを検出したときに、データの読み出しを終了してもよい。読出部６０１は、例えば、読出要求によって指定された読み出し先の領域が、移行元の論理ボリューム１１１外であることを示すエラーを検出した場合にデータの読み出しを終了する。
【００７０】
移行元のストレージ装置２０１は、例えば、いずれかのＬＢＡの値が示すセクタの先頭から１または複数のセクタ分のデータについての読出要求を受け付けると、１または複数のセクタ分のデータのうち読み出しに成功したデータを応答する。また、移行元のストレージ装置２０１は、１または複数のセクタ分のデータのうち、移行元の論理ボリューム１１１に存在せず、読み出しに失敗したデータがあれば、データが存在しないことを示すエラーを応答する。データが移行元の論理ボリューム１１１に存在しない場合とは、例えば、移行元の論理ボリューム１１１の最終ＬＢＡよりも大きいＬＢＡの値が示すセクタからの読出要求を受け付けた場合である。
【００７１】
読出部６０１は、具体的には、移行元のストレージ装置２０１から出力された、読出要求によって指定された読み出し先の領域が、移行元の論理ボリューム１１１外であることを示すエラーを検出すると、データの読み出しを終了する。これにより、読出部６０１は、判定部６０２の判定処理がなくても、データの移行が完了した場合に、データの読み出しを終了することができる。
【００７２】
更新部６０４は、判定部６０２が、移行元の論理ボリューム１１１から移行済みの容量が移行元の論理ボリューム１１１の容量以上であると判定した場合に、第１の情報ｄ１と、第２の情報ｄ２とを削除する。更新部６０４は、判定部６０２が、移行済みの容量が移行元の論理ボリューム１１１の容量以上であると判定した場合に、移行管理テーブル５００のうち当該移行元の論理ボリューム１１１に対応する子テーブルを削除する。これにより、更新部６０４は、記憶領域を有効に活用可能にすることができる。
【００７３】
受付部６０５は、移行元の論理ボリューム１１１からのデータの読出要求を受け付ける。受付部６０５は、例えば、ホスト装置２０３から、移行元の論理ボリューム１１１のいずれかのＬＢＡのセクタのデータの読出要求を受け付ける。これにより、受付部６０５は、読み出すデータがあるセクタを特定可能にすることができる。
【００７４】
受付部６０５は、移行元の論理ボリューム１１１へのデータの書込要求を受け付ける。受付部６０５は、例えば、ホスト装置２０３から、移行元の論理ボリューム１１１のいずれかのＬＢＡのセクタへのデータの書込要求を受け付ける。これにより、受付部６０５は、データを書き込むセクタを特定可能にすることができる。
【００７５】
処理部６０６は、受付部６０５が移行元の論理ボリューム１１１からのデータの読出要求を受け付けた場合、第１の情報ｄ１に基づいて、読出要求されたデータが、移行先の論理ボリューム１２１に移行済みであるか否かを判定する。処理部６０６は、例えば、読出要求されたデータがあるセクタのＬＢＡの値が、移行管理テーブル５００の移行済みＬＢＡのフィールドのＬＢＡの値より小さければ、移行済みであると判定する。
【００７６】
処理部６０６は、移行済みではないと判定した場合、移行元の論理ボリューム１１１から読出要求されたデータを読み出す。処理部６０６は、例えば、移行元のストレージ装置２０１に読出要求を発行することにより、移行元のストレージ装置２０１が有する移行元の論理ボリューム１１１にある読出要求されたデータを受信する。これにより、処理部６０６は、読出要求されたデータを、読出要求の送信元のコンピュータに応答することができる。
【００７７】
処理部６０６は、移行済みであると判定した場合、移行先の論理ボリューム１２１から読出要求されたデータを読み出す。処理部６０６は、例えば、自装置が有する移行先の論理ボリューム１２１から、読出要求されたデータを読み出す。これにより、処理部６０６は、読出要求されたデータが移行先の論理ボリューム１２１にあれば、移行先の論理ボリューム１２１から読み出して送信元のコンピュータに応答することができ、応答にかかる時間の低減化を図ることができる。
【００７８】
処理部６０６は、受付部６０５が移行元の論理ボリューム１１１へのデータの書込要求を受け付けた場合、移行元の論理ボリューム１１１および移行先の論理ボリューム１２１に、書込要求されたデータを書き込む。処理部６０６は、例えば、移行元のストレージ装置２０１に書込要求を発行することにより、移行元のストレージ装置２０１が有する移行元の論理ボリューム１１１に書込要求されたデータを書き込ませる。
【００７９】
また、処理部６０６は、例えば、自装置が有する移行先の論理ボリューム１２１に、書込要求されたデータを書き込む。これにより、処理部６０６は、移行元の論理ボリューム１１１と、移行先の論理ボリューム１２１との整合性が保たれるように、書込要求されたデータを書き込むことができる。
【００８０】
（移行先のストレージ装置２０２の動作例１）
次に、図７〜図１３を用いて、移行先のストレージ装置２０２の動作例１について説明する。動作例１は、移行先の論理ボリューム１２１が、シンプロビジョニングの論理ボリュームではない場合の一例である。以下の説明では、移行先のストレージ装置２０２を単に「ストレージ装置２０２」と表記する場合がある。
【００８１】
図７は、動作例１によるデータの移行例を示す説明図（その１）である。図７の例では、移行元の論理ボリューム１１１は、移行元のストレージ装置２０１が有する移行元の記憶装置１１０によって実現される。移行元の記憶装置１１０は、例えば、図３に示した１または複数のデバイス３２０である。移行元の記憶装置１１０は、具体的には、１または複数のディスクである。
【００８２】
移行先の論理ボリューム１２１は、ストレージ制御装置１００として動作するストレージ装置２０２が有する移行先の記憶装置１２０によって実現される。移行先の記憶装置１２０は、例えば、図３に示した１または複数のデバイス３２０である。移行先の記憶装置１２０は、具体的には、１または複数のディスクである。
【００８３】
（７−１）ストレージ装置２０２は、移行管理テーブル５００を作成し、移行管理テーブル５００を初期化する。ここでは、説明の簡略化のため、移行元の論理ボリューム１１１が１つである場合について説明する。
【００８４】
ストレージ装置２０２は、例えば、移行元のストレージ装置２０１と通信することにより、移行元のストレージ装置２０１が有する移行元の論理ボリューム１１１を識別する番号と、移行元の論理ボリューム１１１の容量「１０２４０ＫＢ」とを取得する。ストレージ装置２０２は、取得した移行元の論理ボリューム１１１を識別する番号と、移行元の論理ボリューム１１１の容量「１０２４０ＫＢ」とを、移行管理テーブル５００の移行元ボリューム番号と移行元ボリューム容量とのフィールドに設定する。
【００８５】
このとき、ストレージ装置２０２は、取得した移行元の論理ボリューム１１１の容量「１０２４０ＫＢ」と同じ容量になる移行先の論理ボリューム１２１を生成し、移行先の論理ボリューム１２１全体に物理領域を割り当てておいてよい。
【００８６】
ストレージ装置２０２は、例えば、移行管理テーブル５００の移行済みＬＢＡのフィールドに「０」を設定する。また、ストレージ装置２０２は、例えば、移行管理テーブル５００の移行状況のフィールドに「移行中」を設定する。また、ストレージ装置２０２は、例えば、移行管理テーブル５００の移行先ボリュームタイプのフィールドに、自装置が有する移行先の論理ボリューム１２１がシンプロビジョニングの論理ボリュームではないことを示す情報を設定する。そして、ストレージ装置２０２は、移行元ボリュームからのデータの移行を開始する。
【００８７】
（７−２）ストレージ装置２０２は、移行管理テーブル５００の移行済みＬＢＡのフィールドから、ＬＢＡ「０」を取得する。ストレージ装置２０２は、移行元の論理ボリューム１１１のＬＢＡ「０」のセクタの先頭から所定量のデータを読み出して、移行先の論理ボリューム１２１に移行する。ストレージ装置２０２は、例えば、移行元の論理ボリューム１１１のＬＢＡ「０」のセクタの先頭から５１２ＫＢのデータを読み出して、移行先の論理ボリューム１２１のＬＢＡ「０」のセクタの先頭から書き込む。
【００８８】
ストレージ装置２０２は、具体的には、移行元の論理ボリューム１１１のＬＢＡ「０」のセクタの先頭から５１２ＫＢのデータについて読出要求を移行元のストレージ装置２０１に送信する。結果として、ストレージ装置２０２は、移行元のストレージ装置２０１から当該データを受信し、受信したデータを移行先の論理ボリューム１２１のＬＢＡ「０」のセクタの先頭から書き込む。
【００８９】
（７−３）ストレージ装置２０２は、データを移行先の論理ボリューム１２１に移行すると、取得したＬＢＡ「０」に、移行したデータのサイズ分になるセクタの数を加算して、移行管理テーブル５００の移行済みＬＢＡのフィールドに設定する。ストレージ装置２０２は、例えば、５１２ＫＢのデータを移行すると、ＬＢＡ「０」に５１２ＫＢ分のセクタの数「１」を加算して、移行管理テーブル５００の移行済みＬＢＡのフィールドに設定する。ここで、図８の説明に移行する。
【００９０】
図８は、動作例１によるデータの移行例を示す説明図（その２）である。図８の例では、（８−１）ストレージ装置２０２は、移行管理テーブル５００の移行済みＬＢＡのフィールドから、ＬＢＡ「１」を取得する。ストレージ装置２０２は、移行元の論理ボリューム１１１のＬＢＡ「１」のセクタの先頭から所定量のデータを読み出して、移行先の論理ボリューム１２１に移行する。ストレージ装置２０２は、例えば、移行元の論理ボリューム１１１のＬＢＡ「１」のセクタの先頭から５１２ＫＢのデータを読み出して、移行先の論理ボリューム１２１のＬＢＡ「１」のセクタの先頭から書き込む。ストレージ装置２０２は、具体的には、移行元の論理ボリューム１１１のＬＢＡ「１」のセクタの先頭から５１２ＫＢのデータの読出要求を移行元のストレージ装置２０１に送信することにより、移行元のストレージ装置２０１から当該データを受信して書き込む。
【００９１】
（８−２）ストレージ装置２０２は、データを移行先の論理ボリューム１２１に移行すると、取得したＬＢＡ「１」に、移行したデータのサイズ分になるセクタの数を加算して、移行管理テーブル５００の移行済みＬＢＡのフィールドに設定する。ストレージ装置２０２は、例えば、５１２ＫＢのデータを移行すると、ＬＢＡ「１」に５１２ＫＢ分のセクタの数「１」を加算して、移行管理テーブル５００の移行済みＬＢＡのフィールドに設定する。以降、ストレージ装置２０２は、同様にして、移行元のボリュームのデータを移行する。ここで、図９〜図１２の説明に移行し、データの移行中にデータの読出要求や書込要求を受け付けた場合について説明する。
【００９２】
図９は、動作例１によるデータの移行中における読出処理を示す説明図（その１）である。図９の例では、移行元の論理ボリューム１１１の先頭からＬＢＡ「１０」のセクタの先頭までのデータが移行先の論理ボリューム１２１に移行済みであり、ストレージ装置２０２がＬＢＡ「１０」のセクタより前にあるデータについて読出要求を受け付けたとする。
【００９３】
（９−１）ストレージ装置２０２は、読出要求を受け付けると、移行管理テーブル５００の移行済みＬＢＡのフィールドから、ＬＢＡ「１０」を取得する。ストレージ装置２０２は、取得したＬＢＡ「１０」に基づいて、読出要求されたデータが移行済みの範囲にあるか否かを判定する。ストレージ装置２０２は、例えば、読出要求されたデータがあるセクタのＬＢＡが、取得したＬＢＡ「１０」未満であれば、読出要求されたデータが移行済みの範囲にあると判定する。
【００９４】
（９−２）ストレージ装置２０２は、読出要求されたデータが、ＬＢＡ「１０」のセクタより前にあるため、移行済みの範囲にあると判定する。そして、ストレージ装置２０２は、移行済みの範囲にあると判定すると、読出要求されたデータを自装置が有する移行先の論理ボリューム１２１から読み出して、ホスト装置２０３に送信する。ここで、図１０の説明に移行する。
【００９５】
図１０は、動作例１によるデータの移行中における読出処理を示す説明図（その２）である。図１０の例では、移行元の論理ボリューム１１１の先頭からＬＢＡ「１０」のセクタの先頭までのデータが移行先の論理ボリューム１２１に移行済みであり、ストレージ装置２０２がＬＢＡ「１０」のセクタ以後にあるデータについて読出要求を受け付けたとする。
【００９６】
（１０−１）ストレージ装置２０２は、読出要求を受け付けると、移行管理テーブル５００の移行済みＬＢＡのフィールドから、ＬＢＡ「１０」を取得する。ストレージ装置２０２は、取得したＬＢＡ「１０」に基づいて、読出要求されたデータが移行済みの範囲にあるか否かを判定する。ストレージ装置２０２は、例えば、読出要求されたデータがあるセクタのＬＢＡが、取得したＬＢＡ「１０」以上であれば、読出要求されたデータが移行済みの範囲にはないと判定する。
【００９７】
（１０−２）ストレージ装置２０２は、読出要求されたデータが、ＬＢＡ「１０」のセクタ以後にあるため、移行済みの範囲にはないと判定する。そして、ストレージ装置２０２は、移行済みの範囲にはないと判定すると、読出要求されたデータの読出要求を移行元のストレージ装置２０１に送信することにより、移行元のストレージ装置２０１から当該データを受信して、ホスト装置２０３に送信する。ここで、図１１の説明に移行する。
【００９８】
図１１は、動作例１によるデータの移行中における書込処理を示す説明図（その１）である。図１１の例では、移行元の論理ボリューム１１１の先頭からＬＢＡ「１０」のセクタの先頭までのデータが移行先の論理ボリューム１２１に移行済みであるとする。そして、ストレージ装置２０２がＬＢＡ「１０」のセクタより前にある位置にデータを書き込む書込要求を受け付けたとする。
【００９９】
（１１−１）ストレージ装置２０２は、書込要求を受け付けると、移行管理テーブル５００の移行済みＬＢＡのフィールドから、ＬＢＡ「１０」を取得する。ストレージ装置２０２は、取得したＬＢＡ「１０」に基づいて、データを書き込む位置が移行済みの範囲にあるか否かを判定する。ストレージ装置２０２は、例えば、書込要求されたデータを書き込むセクタのＬＢＡが、取得したＬＢＡ「１０」未満であれば、データを書き込む位置が移行済みの範囲にあると判定する。
【０１００】
（１１−２）ストレージ装置２０２は、データを書き込む位置が、ＬＢＡ「１０」のセクタより前にあるため、移行済みの範囲にあると判定する。そして、ストレージ装置２０２は、移行済みの範囲にあると判定すると、書込要求されたデータを自装置が有する移行先の論理ボリューム１２１に書き込む。
【０１０１】
また、ストレージ装置２０２は、書込要求を移行元のストレージ装置２０１に送信することにより、書込要求されたデータを移行元の論理ボリューム１１１にも書き込ませる。ストレージ装置２０２は、書込要求されたデータの、自装置が有する移行先の論理ボリューム１２１と、移行元の論理ボリューム１１１とへの書込が終了すると、ホスト装置２０３に書込成功の応答を返信する。ここで、図１２の説明に移行する。
【０１０２】
図１２は、動作例１によるデータの移行中における書込処理を示す説明図（その２）である。図１２の例では、移行元の論理ボリューム１１１の先頭からＬＢＡ「１０」のセクタの先頭までのデータが移行先の論理ボリューム１２１に移行済みであるとする。そして、ストレージ装置２０２がＬＢＡ「１０」のセクタ以後にある位置にデータを書き込む書込要求を受け付けたとする。
【０１０３】
（１２−１）ストレージ装置２０２は、書込要求を受け付けると、移行管理テーブル５００の移行済みＬＢＡのフィールドから、ＬＢＡ「１０」を取得する。ストレージ装置２０２は、取得したＬＢＡ「１０」に基づいて、データを書き込む位置が移行済みの範囲にあるか否かを判定する。ストレージ装置２０２は、例えば、書込要求されたデータを書き込むセクタのＬＢＡが、取得したＬＢＡ「１０」以上であれば、データを書き込む位置が移行済みの範囲にはないと判定する。
【０１０４】
（１２−２）ストレージ装置２０２は、データを書き込む位置が、ＬＢＡ「１０」のセクタ以後にあるため、移行済みの範囲にはないと判定する。そして、ストレージ装置２０２は、移行済みの範囲にはないと判定すると、書込要求を移行元のストレージ装置２０１に送信することにより、書込要求されたデータを移行元の論理ボリューム１１１に書き込ませる。
【０１０５】
ストレージ装置２０２は、書込要求されたデータを、自装置が有する移行先の論理ボリューム１２１にも書き込んでもよい。ストレージ装置２０２は、書込要求されたデータの、移行元の論理ボリューム１１１への書込が終了すると、ホスト装置２０３に書込成功の応答を返信する。ここで、図１３の説明に移行する。
【０１０６】
図１３は、動作例１による移行終了の判定例を示す説明図である。図１３の例では、（１３−１）ストレージ装置２０２は、移行管理テーブル５００の移行済みＬＢＡのフィールドから、ＬＢＡ「１９」を取得する。ストレージ装置２０２は、移行元の論理ボリューム１１１のＬＢＡ「１９」のセクタの先頭から所定量のデータを読み出して、移行先の論理ボリューム１２１に移行する。ストレージ装置２０２は、例えば、移行元の論理ボリューム１１１のＬＢＡ「１９」のセクタの先頭から５１２ＫＢのデータを読み出して、移行先の論理ボリューム１２１のＬＢＡ「１９」のセクタの先頭から書き込む。ストレージ装置２０２は、具体的には、移行元の論理ボリューム１１１のＬＢＡ「１９」のセクタの先頭から５１２ＫＢのデータの読出要求を移行元のストレージ装置２０１に送信することにより、移行元のストレージ装置２０１から当該データを受信して書き込む。
【０１０７】
（１３−２）ストレージ装置２０２は、データを移行先の論理ボリューム１２１に移行すると、取得したＬＢＡ「１９」に、移行したデータのサイズ分になるセクタの数を加算して、移行管理テーブル５００の移行済みＬＢＡのフィールドに設定する。ストレージ装置２０２は、例えば、５１２ＫＢのデータを移行すると、ＬＢＡ「１９」に５１２ＫＢ分のセクタの数「１」を加算して、移行管理テーブル５００の移行済みＬＢＡのフィールドに設定する。
【０１０８】
（１３−３）ストレージ装置２０２は、移行管理テーブル５００の移行済みＬＢＡのフィールドからＬＢＡ「２０」を取得する。また、ストレージ装置２０２は、移行管理テーブル５００の移行元ボリューム容量のフィールドから移行元の論理ボリューム１１１の容量「１０２４０ＫＢ」を取得する。ストレージ装置２０２は、ＬＢＡ「２０」にセクタのサイズ５１２ＫＢを乗算して移行済みの容量「１０２４０ＫＢ」を算出し、移行元の論理ボリューム１１１の容量「１０２４０ＫＢ」以上であるか否かを判定する。
【０１０９】
ストレージ装置２０２は、移行済みの容量「１０２４０ＫＢ」が、移行元の論理ボリューム１１１の容量「１０２４０ＫＢ」以上であるため、移行元の論理ボリューム１１１からのデータの読み出しを終了する。
【０１１０】
これにより、ストレージ装置２０２は、移行元の論理ボリューム１１１の容量が大きくなっても、データ移行の進捗状況を管理する管理データのサイズの増大化を抑制することができる。また、ストレージ装置２０２は、ビットマップを用いないため、ホスト装置から読出要求や書込要求を受け付けたときに、比較的小さい容量のデータごとに読出処理や書込処理を行ってもよく、ホスト装置への応答時間の増大化を抑制することができる。
【０１１１】
ここでは、移行元の論理ボリューム１１１が１つである場合について説明したが、これに限らない。例えば、移行元の論理ボリューム１１１は、複数あってもよい。ストレージ装置２０２は、移行元の論理ボリューム１１１が複数あれば、移行元の論理ボリューム１１１それぞれに移行管理テーブル５００の子テーブルを生成し、上記動作例１と同様にデータの移行を行う。
【０１１２】
（移行先のストレージ装置２０２の動作例２）
次に、図１４〜図１９を用いて、移行先のストレージ装置２０２の動作例２について説明する。動作例２は、移行先の論理ボリューム１２１が、シンプロビジョニングの論理ボリュームである場合の一例である。以下の説明では、移行先のストレージ装置２０２を単に「ストレージ装置２０２」と表記する場合がある。
【０１１３】
ここで、シンプロビジョニングとは、論理ボリュームを所定容量のチャンク単位で分割し、当初は論理ボリューム全体には物理領域を割り当てず、チャンク単位で使用する際に物理領域を割り当てる技術である。チャンクは、例えば、２０４８ＫＢである。シンプロビジョニングによれば、論理ボリュームの見かけ上の容量を、論理ボリュームに割り当てられた物理領域の容量よりも大きくすることができ、論理ボリュームに割り当てられる物理領域の容量を抑制することができる。
【０１１４】
しかしながら、従来、移行元の論理ボリューム１１１のデータを、シンプロビジョニングの論理ボリュームである移行先の論理ボリューム１２１に移行すると、移行先の論理ボリューム１２１全体に物理領域が割り当てられてしまうことがある。例えば、移行先の論理ボリューム１２１のいずれかのチャンクに対応する移行元の論理ボリューム１１１の記憶領域が未使用であっても、当該記憶領域にあるゼロデータが移行されることになってしまう。
【０１１５】
このため、移行先の論理ボリューム１２１のいずれかのチャンクに対応する移行元の論理ボリューム１１１の記憶領域が未使用であり、当該チャンクに物理領域を割り当てなくてよい場合も、ゼロデータを書き込むために物理領域が割り当てられる。そして、移行先の論理ボリューム１２１全体に物理領域が割り当てられ、移行先の論理ボリューム１２１に割り当てられる物理領域のサイズが増大してしまう。
【０１１６】
そこで、動作例２では、ストレージ装置２０２は、移行先の論理ボリューム１２１に割り当てられる物理領域のサイズの増大化を抑制することができるように、移行元の論理ボリューム１１１のデータを移行先の論理ボリューム１２１に移行する。ここで、図１４の説明に移行する。
【０１１７】
図１４は、動作例２によるデータの移行例を示す説明図（その１）である。図１４の例では、移行元の論理ボリューム１１１は、移行元のストレージ装置２０１が有する移行元の記憶装置１１０によって実現される。移行元の記憶装置１１０は、例えば、図３に示した１または複数のデバイス３２０である。移行元の記憶装置１１０は、具体的には、１または複数のディスクである。
【０１１８】
移行先の論理ボリューム１２１は、ストレージ制御装置１００として動作するストレージ装置２０２が有する移行先の記憶装置１２０によって実現される。移行先の記憶装置１２０は、例えば、図３に示した１または複数のデバイス３２０である。移行先の記憶装置１２０は、具体的には、１または複数のディスクである。
【０１１９】
（１４−１）ストレージ装置２０２は、移行管理テーブル５００を作成し、移行管理テーブル５００を初期化する。ここでは、説明の簡略化のため、移行元の論理ボリューム１１１が１つである場合について説明する。
【０１２０】
ストレージ装置２０２は、例えば、移行元のストレージ装置２０１と通信することにより、移行元のストレージ装置２０１が有する移行元の論理ボリューム１１１を識別する番号と、移行元の論理ボリューム１１１の容量「１２２８８ＫＢ」とを取得する。ストレージ装置２０２は、取得した移行元の論理ボリューム１１１を識別する番号と、移行元の論理ボリューム１１１の容量「１２２８８ＫＢ」とを、移行管理テーブル５００の移行元ボリューム番号と移行元ボリューム容量とのフィールドに設定する。
【０１２１】
このとき、ストレージ装置２０２は、取得した移行元の論理ボリューム１１１の容量「１０２４０ＫＢ」と同じ容量になる移行先の論理ボリューム１２１を生成する。一方で、ここでは、ストレージ装置２０２は、生成した移行先の論理ボリューム１２１に物理領域を割り当てておかない。
【０１２２】
また、ストレージ装置２０２は、例えば、移行管理テーブル５００の移行済みＬＢＡのフィールドに「０」を設定する。また、ストレージ装置２０２は、例えば、移行管理テーブル５００の移行状況のフィールドに「移行中」を設定する。また、ストレージ装置２０２は、例えば、移行管理テーブル５００の移行先ボリュームタイプのフィールドに、自装置が有する移行先の論理ボリューム１２１がシンプロビジョニングの論理ボリュームであることを示す情報を設定する。そして、ストレージ装置２０２は、移行元ボリュームからのデータの移行を開始する。
【０１２３】
（１４−２）ストレージ装置２０２は、移行管理テーブル５００の移行済みＬＢＡのフィールドから、ＬＢＡ「０」を取得する。ストレージ装置２０２は、移行元の論理ボリューム１１１のＬＢＡ「０」のセクタの先頭から所定量のデータを読み出す。ストレージ装置２０２は、例えば、移行元の論理ボリューム１１１のＬＢＡ「０」のセクタの先頭から５１２ＫＢのデータについて読出要求を移行元のストレージ装置２０１に送信することにより、移行元のストレージ装置２０１から当該データを受信する。
【０１２４】
ストレージ装置２０２は、読み出した所定量のデータが移行される、移行先の論理ボリューム１２１のＬＢＡ「０」のセクタの先頭が、チャンクの先頭であるか否かを判定する。ここでは、ストレージ装置２０２は、チャンクの先頭であると判定する。ストレージ装置２０２は、チャンクの先頭であると判定すると、読み出した所定量のデータが、ゼロデータであるか否かを判定する。ここでは、ストレージ装置２０２は、ゼロデータではないと判定する。
【０１２５】
ストレージ装置２０２は、ゼロデータではないと判定すると、ＬＢＡ「０」のセクタの先頭から始まるチャンクに物理領域を割り当てる。ストレージ装置２０２は、読み出した所定量のデータを、移行先の論理ボリューム１２１のうち、物理領域を割り当てた、ＬＢＡ「０」のセクタの先頭から始まるチャンクに移行する。
【０１２６】
（１４−３）ストレージ装置２０２は、データを移行先の論理ボリューム１２１に移行すると、取得したＬＢＡ「０」に、移行したデータのサイズ分になるセクタの数を加算して、移行管理テーブル５００の移行済みＬＢＡのフィールドに設定する。ストレージ装置２０２は、例えば、５１２ＫＢのデータを移行すると、ＬＢＡ「０」に５１２ＫＢ分のセクタの数「１」を加算して、移行管理テーブル５００の移行済みＬＢＡのフィールドに設定する。
【０１２７】
以降、ストレージ装置２０２は、同様にして、ＬＢＡ「０」のセクタの先頭から始まるチャンクに対応する、移行元の論理ボリューム１１１のＬＢＡ「４」のセクタの先頭までのデータを、移行先の論理ボリューム１２１に移行したとする。ここで、図１５の説明に移行する。
【０１２８】
図１５は、動作例２によるデータの移行例を示す説明図（その２）である。図１５の例では、（１５−１）ストレージ装置２０２は、移行管理テーブル５００の移行済みＬＢＡのフィールドから、ＬＢＡ「４」を取得する。ストレージ装置２０２は、移行元の論理ボリューム１１１のＬＢＡ「４」のセクタの先頭から所定量のデータを読み出す。ストレージ装置２０２は、例えば、移行元の論理ボリューム１１１のＬＢＡ「４」のセクタの先頭から５１２ＫＢのデータについて読出要求を移行元のストレージ装置２０１に送信することにより、移行元のストレージ装置２０１から当該データを受信する。
【０１２９】
ストレージ装置２０２は、読み出した所定量のデータが移行される、移行先の論理ボリューム１２１のＬＢＡ「４」のセクタの先頭が、チャンクの先頭であるか否かを判定する。ここでは、ストレージ装置２０２は、チャンクの先頭であると判定する。ストレージ装置２０２は、チャンクの先頭であると判定すると、読み出した所定量のデータが、ゼロデータであるか否かを判定する。ここでは、ストレージ装置２０２は、ゼロデータであると判定する。
【０１３０】
ストレージ装置２０２は、ゼロデータであると判定すると、ＬＢＡ「４」のセクタの先頭から始まるチャンクに対応する、移行元の論理ボリューム１１１の記憶領域から所定量ごとにデータを読み出し、同様に、ゼロデータであるか否かを判定する。
【０１３１】
ここでは、ストレージ装置２０２は、ＬＢＡ「４」のセクタの先頭から始まるチャンクに対応する、移行元の論理ボリューム１１１の記憶領域から読み出したデータが、ゼロデータであると判定する。そして、ストレージ装置２０２は、ＬＢＡ「４」のセクタの先頭から始まるチャンクには、物理領域を割り当てない。
【０１３２】
（１５−２）ストレージ装置２０２は、取得したＬＢＡ「４」に、ＬＢＡ「４」のセクタの先頭から始まるチャンクのサイズ分になるセクタの数を加算して、移行管理テーブル５００の移行済みＬＢＡのフィールドに設定する。ストレージ装置２０２は、例えば、ＬＢＡ「４」に２０４８ＫＢ分のセクタの数「４」を加算して、移行管理テーブル５００の移行済みＬＢＡのフィールドに設定する。ここで、図１６の説明に移行する。
【０１３３】
図１６は、動作例２によるデータの移行例を示す説明図（その３）である。図１６の例では、（１６−１）ストレージ装置２０２は、移行管理テーブル５００の移行済みＬＢＡのフィールドから、ＬＢＡ「８」を取得する。ストレージ装置２０２は、移行元の論理ボリューム１１１のＬＢＡ「８」のセクタの先頭から所定量のデータを読み出す。ストレージ装置２０２は、例えば、移行元の論理ボリューム１１１のＬＢＡ「８」のセクタの先頭から５１２ＫＢのデータについて読出要求を移行元のストレージ装置２０１に送信することにより、移行元のストレージ装置２０１から当該データを受信する。
【０１３４】
ストレージ装置２０２は、読み出した所定量のデータが移行される、移行先の論理ボリューム１２１のＬＢＡ「８」のセクタの先頭が、チャンクの先頭であるか否かを判定する。ここでは、ストレージ装置２０２は、チャンクの先頭であると判定する。ストレージ装置２０２は、チャンクの先頭であると判定すると、読み出した所定量のデータが、ゼロデータであるか否かを判定する。ここでは、ストレージ装置２０２は、ゼロデータであると判定する。
【０１３５】
ストレージ装置２０２は、ゼロデータであると判定すると、ＬＢＡ「８」のセクタの先頭から始まるチャンクに対応する、移行元の論理ボリューム１１１の記憶領域から所定量ごとにデータを読み出し、同様に、ゼロデータであるか否かを判定する。
【０１３６】
ここでは、ストレージ装置２０２は、ＬＢＡ「９」のセクタの先頭から５１２ＫＢのデータが、ゼロデータではないと判定する。このため、ストレージ装置２０２は、ＬＢＡ「８」のセクタの先頭から始まるチャンクに対応する、移行元の論理ボリューム１１１の記憶領域から読み出したデータが、ゼロデータ以外を含むと判定する。
【０１３７】
ストレージ装置２０２は、ゼロデータ以外を含むと判定すると、ＬＢＡ「８」のセクタの先頭から始まるチャンクに物理領域を割り当てる。ストレージ装置２０２は、読み出したゼロデータ、および、ゼロデータではないデータを、移行先の論理ボリューム１２１のうち、物理領域を割り当てた、ＬＢＡ「８」のセクタの先頭から始まるチャンクに移行する。
【０１３８】
（１６−２）ストレージ装置２０２は、データを移行先の論理ボリューム１２１に移行すると、取得したＬＢＡ「８」に、移行したデータのサイズ分になるセクタの数を加算して、移行管理テーブル５００の移行済みＬＢＡのフィールドに設定する。ストレージ装置２０２は、例えば、５１２ＫＢのデータを移行すると、ＬＢＡ「８」に５１２ＫＢ分のセクタの数「１」を加算して、移行管理テーブル５００の移行済みＬＢＡのフィールドに設定する。
【０１３９】
このようにして、ストレージ装置２０２は、ＬＢＡ「８」のセクタの先頭から始まるチャンクに対応する、移行元の論理ボリューム１１１のＬＢＡ「１２」のセクタの先頭までのデータを、移行先の論理ボリューム１２１に移行したとする。ここで、図１７および図１８の説明に移行し、データの移行中にデータの読出要求や書込要求を受け付けた場合について説明する。
【０１４０】
図１７は、動作例２によるデータの移行中における読出処理を示す説明図である。図１７の例では、移行元の論理ボリューム１１１の先頭からＬＢＡ「１２」のセクタの先頭までのデータが移行先の論理ボリューム１２１に移行済みであり、ストレージ装置２０２がＬＢＡ「１２」のセクタより前にあるデータについて読出要求を受け付けたとする。また、読出要求されたデータは、物理領域を割り当てられていないチャンクにあるとする。
【０１４１】
（１７−１）ストレージ装置２０２は、読出要求を受け付けると、移行管理テーブル５００の移行済みＬＢＡのフィールドから、ＬＢＡ「１２」を取得する。ストレージ装置２０２は、取得したＬＢＡ「１２」に基づいて、読出要求されたデータが移行済みの範囲にあるか否かを判定する。ストレージ装置２０２は、例えば、読出要求されたデータがあるセクタのＬＢＡが、取得したＬＢＡ「１２」未満であれば、読出要求されたデータが移行済みの範囲にあると判定する。
【０１４２】
（１７−２）ストレージ装置２０２は、読出要求されたデータが、ＬＢＡ「１２」のセクタより前にあるため、移行済みの範囲にあると判定する。そして、ストレージ装置２０２は、移行済みの範囲にあると判定すると、読出要求されたデータがあるチャンクが、物理領域を割り当てられたチャンクであるか否かを判定する。ここでは、ストレージ装置２０２は、物理領域を割り当てられていないチャンクであると判定する。ストレージ装置２０２は、物理領域を割り当てられていないチャンクであると判定すると、ゼロデータをホスト装置２０３に送信する。ここで、図１８の説明に移行する。
【０１４３】
図１８は、動作例２によるデータの移行中における書込処理を示す説明図である。図１８の例では、移行元の論理ボリューム１１１の先頭からＬＢＡ「１２」のセクタの先頭までのデータが移行先の論理ボリューム１２１に移行済みであるとする。そして、ストレージ装置２０２がＬＢＡ「１２」のセクタより前にある位置にデータを書き込む書込要求を受け付けたとする。また、書込要求されたデータを書き込む位置は、物理領域を割り当てられていないチャンクにあるとする。
【０１４４】
（１８−１）ストレージ装置２０２は、書込要求を受け付けると、移行管理テーブル５００の移行済みＬＢＡのフィールドから、ＬＢＡ「１２」を取得する。ストレージ装置２０２は、取得したＬＢＡ「１２」に基づいて、データを書き込む位置が移行済みの範囲にあるか否かを判定する。ストレージ装置２０２は、例えば、書込要求されたデータを書き込むセクタのＬＢＡが、取得したＬＢＡ「１２」未満であれば、データを書き込む位置が移行済みの範囲にあると判定する。
【０１４５】
（１８−２）ストレージ装置２０２は、データを書き込む位置が、ＬＢＡ「１２」のセクタより前にあるため、移行済みの範囲にあると判定する。そして、ストレージ装置２０２は、移行済みの範囲にあると判定すると、読出要求されたデータがあるチャンクが、物理領域を割り当てられたチャンクであるか否かを判定する。ここでは、ストレージ装置２０２は、物理領域を割り当てられていないチャンクであると判定する。
【０１４６】
ストレージ装置２０２は、物理領域を割り当てられていないチャンクであると判定すると、自装置が有する移行先の論理ボリューム１２１のうち当該チャンクに物理領域を割り当てる。ストレージ装置２０２は、書込要求されたデータを、自装置が有する移行先の論理ボリューム１２１のうち物理領域を割り当てた当該チャンクに書き込む。
【０１４７】
また、ストレージ装置２０２は、書込要求を移行元のストレージ装置２０１に送信することにより、書込要求されたデータを移行元の論理ボリューム１１１にも書き込ませる。ストレージ装置２０２は、書込要求されたデータの、自装置が有する移行先の論理ボリューム１２１と、移行元の論理ボリューム１１１とへの書込が終了すると、ホスト装置２０３に書込成功の応答を返信する。
【０１４８】
読出要求されたデータが、物理領域が割り当てられたチャンクにある場合、または、書込要求されたデータを書き込む位置が、物理領域が割り当てられたチャンクにある場合については、図９〜図１２と同様であるため、説明を省略する。また、読出要求されたデータが、移行済みではない範囲にある場合、または、書込要求されたデータを書き込む位置が、移行済みではない範囲にある場合についても、図９〜図１２と同様であるため、説明を省略する。ここで、図１９の説明に移行する。
【０１４９】
図１９は、動作例２による移行終了の判定例を示す説明図である。図１９の例では、（１９−１）ストレージ装置２０２は、移行管理テーブル５００の移行済みＬＢＡのフィールドから、ＬＢＡ「２０」を取得する。ストレージ装置２０２は、移行元の論理ボリューム１１１のＬＢＡ「２０」のセクタの先頭から所定量のデータを読み出す。ストレージ装置２０２は、例えば、移行元の論理ボリューム１１１のＬＢＡ「２０」のセクタの先頭から５１２ＫＢのデータについて読出要求を移行元のストレージ装置２０１に送信することにより、移行元のストレージ装置２０１から当該データを受信する。
【０１５０】
ストレージ装置２０２は、読み出した所定量のデータが移行される、移行先の論理ボリューム１２１のＬＢＡ「２０」のセクタの先頭が、チャンクの先頭であるか否かを判定する。ここでは、ストレージ装置２０２は、チャンクの先頭であると判定する。ストレージ装置２０２は、チャンクの先頭であると判定すると、読み出した所定量のデータが、ゼロデータであるか否かを判定する。ここでは、ストレージ装置２０２は、ゼロデータであると判定する。
【０１５１】
ストレージ装置２０２は、ゼロデータであると判定すると、ＬＢＡ「２０」のセクタの先頭から始まるチャンクに対応する、移行元の論理ボリューム１１１の記憶領域から所定量ごとにデータを読み出し、同様に、ゼロデータであるか否かを判定する。
【０１５２】
ここでは、ストレージ装置２０２は、ＬＢＡ「２０」のセクタの先頭から始まるチャンクに対応する、移行元の論理ボリューム１１１の記憶領域から読み出したデータが、ゼロデータであると判定する。そして、ストレージ装置２０２は、ＬＢＡ「２０」のセクタの先頭から始まるチャンクには、物理領域を割り当てない。
【０１５３】
（１９−２）ストレージ装置２０２は、取得したＬＢＡ「２０」に、ＬＢＡ「２０」のセクタの先頭から始まるチャンクのサイズ分になるセクタの数を加算して、移行管理テーブル５００の移行済みＬＢＡのフィールドに設定する。ストレージ装置２０２は、例えば、ＬＢＡ「２０」に２０４８ＫＢ分のセクタの数「４」を加算して、移行管理テーブル５００の移行済みＬＢＡのフィールドに設定する。
【０１５４】
（１９−３）ストレージ装置２０２は、移行管理テーブル５００の移行済みＬＢＡのフィールドからＬＢＡ「２４」を取得する。また、ストレージ装置２０２は、移行管理テーブル５００の移行元ボリューム容量のフィールドから移行元の論理ボリューム１１１の容量「１２２８８ＫＢ」を取得する。ストレージ装置２０２は、ＬＢＡ「２４」にセクタのサイズ５１２ＫＢを乗算して移行済みの容量「１２２８８ＫＢ」を算出し、移行元の論理ボリューム１１１の容量「１２２８８ＫＢ」以上であるか否かを判定する。ストレージ装置２０２は、移行済みの容量「１０２４０ＫＢ」が、移行元の論理ボリューム１１１の容量「１２２８８ＫＢ」以上であるため、移行元の論理ボリューム１１１からのデータの読み出しを終了する。
【０１５５】
これにより、ストレージ装置２０２は、移行元の論理ボリューム１１１の容量が大きくなっても、データ移行の進捗状況を管理する管理データのサイズの増大化を抑制することができる。また、ストレージ装置２０２は、ビットマップを用いないため、ホスト装置から読出要求や書込要求を受け付けたときに、比較的小さい容量のデータごとに読出処理や書込処理を行ってもよく、ホスト装置への応答時間の増大化を抑制することができる。
【０１５６】
また、ストレージ装置２０２は、移行先の論理ボリューム１２１のいずれかのチャンクに移行されるデータが、ゼロデータであれば、当該チャンクに物理領域を割り当てないことにより、見かけ上ゼロデータを移行することができる。このため、ストレージ装置２０２は、移行先の論理ボリューム１２１に割り当てる物理領域の増大化を抑制することができる。
【０１５７】
ここでは、移行元の論理ボリューム１１１が１つである場合について説明したが、これに限らない。例えば、移行元の論理ボリューム１１１は、複数あってもよい。ストレージ装置２０２は、移行元の論理ボリューム１１１が複数あれば、移行元の論理ボリューム１１１それぞれに移行管理テーブル５００の子テーブルを生成し、上記動作例２と同様にデータの移行を行う。
【０１５８】
また、移行元の論理ボリューム１１１は、シンプロビジョニングの論理ボリュームであっても、シンプロビジョニングの論理ボリュームでなくてもよい。ストレージ装置２０２は、移行元の論理ボリューム１１１がシンプロビジョニングの論理ボリュームでなくても、データの移行によって移行先の論理ボリューム１２１においてはシンプロビジョニングの論理ボリュームにすることができる。
【０１５９】
（移行処理手順の一例）
次に、図２０を用いて、移行処理手順の一例について説明する。ここでは、移行先のストレージ装置２０２が、移行処理を実行する場合について説明する。以下の説明では、移行先のストレージ装置２０２を単に「ストレージ装置２０２」と表記する場合がある。
【０１６０】
図２０は、移行処理手順の一例を示すフローチャートである。図２０において、ストレージ装置２０２は、移行先の論理ボリューム１２１が、シンプロビジョニングの論理ボリュームであるか否かを判定する（ステップＳ２００１）。ここで、シンプロビジョニングの論理ボリュームではない場合（ステップＳ２００１：Ｎｏ）、ストレージ装置２０２は、図２１に後述する通常処理を実行する（ステップＳ２００２）。そして、ストレージ装置２０２は、移行処理を終了する。
【０１６１】
一方で、シンプロビジョニングの論理ボリュームである場合（ステップＳ２００１：Ｙｅｓ）、ストレージ装置２０２は、図２２に後述するシンプロビジョニング用処理を実行する（ステップＳ２００３）。そして、ストレージ装置２０２は、移行処理を終了する。これにより、ストレージ装置２０２は、データを移行することができる。
【０１６２】
（通常処理手順の一例）
次に、図２１を用いて、通常処理手順の一例について説明する。
【０１６３】
図２１は、通常処理手順の一例を示すフローチャートである。図２１において、ストレージ装置２０２は、移行管理テーブル５００の移行済みＬＢＡのフィールドから読み出したＬＢＡの値を、データの読出位置に設定する（ステップＳ２１０１）。次に、ストレージ装置２０２は、移行元のストレージ装置２０１に対して、読出位置からの所定量のデータの読出要求を送信する（ステップＳ２１０２）。
【０１６４】
そして、ストレージ装置２０２は、正常に読み出されたか否かを判定する（ステップＳ２１０３）。ここで、正常に読み出されていない場合（ステップＳ２１０３：Ｎｏ）、ストレージ装置２０２は、異なるパスがあるか否かを判定する（ステップＳ２１０４）。ここで、異なるパスがある場合（ステップＳ２１０４：Ｙｅｓ）、ストレージ装置２０２は、読み出しに用いるパスを切り替えて（ステップＳ２１０５）、ステップＳ２１０２の処理に戻る。
【０１６５】
一方で、異なるパスがない場合（ステップＳ２１０４：Ｎｏ）、ストレージ装置２０２は、移行管理テーブル５００の移行状況のフィールドに、エラーを示す情報を設定する（ステップＳ２１０６）。そして、ストレージ装置２０２は、通常処理を終了する。
【０１６６】
また、ステップＳ２１０３において、正常に読み出された場合（ステップＳ２１０３：Ｙｅｓ）、ストレージ装置２０２は、読み出されたデータによって移行先の論理ボリューム１２１のデータを更新する（ステップＳ２１０７）。次に、ストレージ装置２０２は、移行管理テーブル５００の移行済みＬＢＡのフィールドを更新する（ステップＳ２１０８）。
【０１６７】
そして、ストレージ装置２０２は、移行管理テーブル５００の移行済みＬＢＡのフィールドと移行元ボリューム容量のフィールドとからＬＢＡの値と移行元の論理ボリューム１１１の容量とを読み出す。さらに、ストレージ装置２０２は、移行済み容量が移行元の論理ボリューム１１１の容量以上であるか否かを判定する（ステップＳ２１０９）。ここで、移行元の論理ボリューム１１１の容量未満である場合（ステップＳ２１０９：Ｎｏ）、ストレージ装置２０２は、ステップＳ２１０１の処理に戻る。
【０１６８】
一方で、移行元の論理ボリューム１１１の容量以上である場合（ステップＳ２１０９：Ｙｅｓ）、ストレージ装置２０２は、移行管理テーブル５００の移行状況のフィールドに移行終了を示す情報を設定し、通常処理を終了する。これにより、ストレージ装置２０２は、移行元の論理ボリューム１１１のデータを、移行先の論理ボリューム１２１に移行することができる。
【０１６９】
（シンプロビジョニング用処理手順の一例）
次に、図２２および図２３を用いて、シンプロビジョニング用処理手順の一例について説明する。
【０１７０】
図２２および図２３は、シンプロビジョニング用処理手順の一例を示すフローチャートである。図２２において、ストレージ装置２０２は、移行管理テーブル５００の移行済みＬＢＡのフィールドから読み出したＬＢＡの値を、データの読出位置に設定する（ステップＳ２２０１）。次に、ストレージ装置２０２は、移行元のストレージ装置２０１に対して、読出位置からの所定量のデータの読出要求を送信する（ステップＳ２２０２）。
【０１７１】
そして、ストレージ装置２０２は、正常に読み出されたか否かを判定する（ステップＳ２２０３）。ここで、正常に読み出されていない場合（ステップＳ２２０３：Ｎｏ）、ストレージ装置２０２は、異なるパスがあるか否かを判定する（ステップＳ２２０４）。ここで、異なるパスがある場合（ステップＳ２２０４：Ｙｅｓ）、ストレージ装置２０２は、読み出しに用いるパスを切り替えて（ステップＳ２２０５）、ステップＳ２２０２の処理に戻る。
【０１７２】
一方で、異なるパスがない場合（ステップＳ２２０４：Ｎｏ）、ストレージ装置２０２は、移行管理テーブル５００の移行状況のフィールドに、エラーを示す情報を設定する（ステップＳ２２０６）。そして、ストレージ装置２０２は、シンプロビジョニング用処理を終了する。
【０１７３】
また、ステップＳ２２０３において、正常に読み出された場合（ステップＳ２２０３：Ｙｅｓ）、ストレージ装置２０２は、読み出されたデータがチャンクの境界から始まるデータであるか否かを判定する（ステップＳ２２０７）。ここで、チャンクの境界から始まるデータである場合（ステップＳ２２０７：Ｙｅｓ）、ストレージ装置２０２は、図２３のステップＳ２３０１の処理に移行する。
【０１７４】
一方で、チャンクの境界から始まるデータではない場合（ステップＳ２２０７：Ｎｏ）、ストレージ装置２０２は、チャンクに物理領域を割り当てて、読み出されたデータによって移行先の論理ボリューム１２１のデータを更新する（ステップＳ２２０８）。次に、ストレージ装置２０２は、移行管理テーブル５００の移行済みＬＢＡのフィールドを更新する（ステップＳ２２０９）。
【０１７５】
そして、ストレージ装置２０２は、移行管理テーブル５００の移行済みＬＢＡのフィールドと移行元ボリューム容量のフィールドとからＬＢＡの値と移行元の論理ボリューム１１１の容量とを読み出す。さらに、ストレージ装置２０２は、移行済み容量が移行元の論理ボリューム１１１の容量以上であるか否かを判定する（ステップＳ２２１０）。ここで、移行元の論理ボリューム１１１の容量未満である場合（ステップＳ２２１０：Ｎｏ）、ストレージ装置２０２は、ステップＳ２２０１の処理に戻る。
【０１７６】
一方で、移行元の論理ボリューム１１１の容量以上である場合（ステップＳ２２１０：Ｙｅｓ）、ストレージ装置２０２は、移行管理テーブル５００の移行状況のフィールドに移行終了を示す情報を設定し、シンプロビジョニング用処理を終了する。次に、図２３の説明に移行する。
【０１７７】
図２３において、ストレージ装置２０２は、読み出されたデータが、ゼロデータであるか否かを判定する（ステップＳ２３０１）。ここで、ゼロデータではない場合（ステップＳ２３０１：Ｎｏ）、ストレージ装置２０２は、図２２のステップＳ２２０８の処理に移行する。
【０１７８】
一方で、ゼロデータである場合（ステップＳ２３０１：Ｙｅｓ）、ストレージ装置２０２は、移行管理テーブル５００の移行済みＬＢＡのフィールドから読み出したＬＢＡの値を、データの読出位置に設定する（ステップＳ２３０２）。次に、ストレージ装置２０２は、移行元のストレージ装置２０１に対して、読出位置からの所定量のデータの読出要求を送信する（ステップＳ２３０３）。
【０１７９】
そして、ストレージ装置２０２は、正常に読み出されたか否かを判定する（ステップＳ２３０４）。ここで、正常に読み出されていない場合（ステップＳ２３０４：Ｎｏ）、ストレージ装置２０２は、異なるパスがあるか否かを判定する（ステップＳ２３０５）。ここで、異なるパスがある場合（ステップＳ２３０５：Ｙｅｓ）、ストレージ装置２０２は、読み出しに用いるパスを切り替えて（ステップＳ２３０６）、ステップＳ２３０３の処理に戻る。
【０１８０】
一方で、異なるパスがない場合（ステップＳ２３０５：Ｎｏ）、ストレージ装置２０２は、移行管理テーブル５００の移行状況のフィールドに、エラーを示す情報を設定する（ステップＳ２３０７）。そして、ストレージ装置２０２は、シンプロビジョニング用処理を終了する。
【０１８１】
また、ステップＳ２３０４において、正常に読み出された場合（ステップＳ２３０４：Ｙｅｓ）、ストレージ装置２０２は、移行管理テーブル５００の移行済みＬＢＡのフィールドを更新する（ステップＳ２３０８）。
【０１８２】
そして、ストレージ装置２０２は、移行管理テーブル５００の移行済みＬＢＡのフィールドと移行元ボリューム容量のフィールドとからＬＢＡの値と移行元の論理ボリューム１１１の容量とを読み出す。さらに、ストレージ装置２０２は、移行済み容量が移行元の論理ボリューム１１１の容量以上であるか否かを判定する（ステップＳ２３０９）。
【０１８３】
ここで、移行元の論理ボリューム１１１の容量未満である場合（ステップＳ２３０９：Ｎｏ）、ストレージ装置２０２は、読み出されたデータがチャンクの境界から始まるデータであるか否かを判定する（ステップＳ２３１０）。ここで、チャンクの境界から始まるデータである場合（ステップＳ２３１０：Ｙｅｓ）、ストレージ装置２０２は、図２２のステップＳ２２０１の処理に移行する。一方で、チャンクの境界から始まるデータではない場合（ステップＳ２３１０：Ｎｏ）、ストレージ装置２０２は、ステップＳ２３０２の処理に戻る。
【０１８４】
また、ステップＳ２３０９において、移行元の論理ボリューム１１１の容量以上である場合（ステップＳ２３０９：Ｙｅｓ）、ストレージ装置２０２は、移行管理テーブル５００の移行状況のフィールドに移行終了を示す情報を設定し、シンプロビジョニング用処理を終了する。これにより、ストレージ装置２０２は、移行先の論理ボリューム１２１に割り当てる物理領域の増大化を抑制することができる。
【０１８５】
（読出処理手順の一例）
次に、図２４を用いて、読出処理手順の一例について説明する。ここでは、移行先のストレージ装置２０２が、読出処理を実行する場合について説明する。以下の説明では、移行先のストレージ装置２０２を単に「ストレージ装置２０２」と表記する場合がある。
【０１８６】
図２４は、読出処理手順の一例を示すフローチャートである。図２４において、ストレージ装置２０２は、読出要求を受け付けると、移行管理テーブル５００があるか否かを判定する（ステップＳ２４０１）。ここで、移行管理テーブル５００がある場合（ステップＳ２４０１：Ｙｅｓ）、ストレージ装置２０２は、読出要求されたデータが、移行済みのデータであるか否かを判定する（ステップＳ２４０２）。
【０１８７】
ここで、移行済みのデータではない場合（ステップＳ２４０２：Ｎｏ）、ストレージ装置２０２は、移行元のストレージ装置２０１に対して読出要求を送信して、読出要求されたデータを移行元の論理ボリューム１１１から取得する（ステップＳ２４０３）。そして、ストレージ装置２０２は、読出処理を終了する。
【０１８８】
一方で、移行管理テーブル５００がない場合（ステップＳ２４０１：Ｎｏ）、ストレージ装置２０２は、読出要求されたデータを、自装置が有する移行先の論理ボリューム１２１から読み出す（ステップＳ２４０４）。同様に、移行済みのデータである場合（ステップＳ２４０２：Ｙｅｓ）、ストレージ装置２０２は、読出要求されたデータを、自装置が有する移行先の論理ボリューム１２１から読み出す（ステップＳ２４０４）。
【０１８９】
そして、ストレージ装置２０２は、読出処理を終了する。これにより、ストレージ装置２０２は、読出要求されたデータを、読出要求の送信元のコンピュータに応答することができる。また、ストレージ装置２０２は、読出要求されたデータが移行先の論理ボリューム１２１にあれば、移行先の論理ボリューム１２１から読み出して送信元のコンピュータに応答することができ、応答にかかる時間の低減化を図ることができる。
【０１９０】
（書込処理手順の一例）
次に、図２５を用いて、書込処理手順の一例について説明する。ここでは、移行先のストレージ装置２０２が、書込処理を実行する場合について説明する。以下の説明では、移行先のストレージ装置２０２を単に「ストレージ装置２０２」と表記する場合がある。
【０１９１】
図２５は、書込処理手順の一例を示すフローチャートである。図２５において、ストレージ装置２０２は、書込要求を受け付けると、移行管理テーブル５００があるか否かを判定する（ステップＳ２５０１）。ここで、移行管理テーブル５００がある場合（ステップＳ２５０１：Ｙｅｓ）、ストレージ装置２０２は、移行元のストレージ装置２０１に対して書込要求を送信して、書込要求されたデータを移行元の論理ボリューム１１１に書き込ませる（ステップＳ２５０２）。次に、ストレージ装置２０２は、書込要求されたデータを、自装置が有する移行先の論理ボリューム１２１に書き込む（ステップＳ２５０３）。そして、ストレージ装置２０２は、書込処理を終了する。
【０１９２】
一方で、移行管理テーブル５００がない場合（ステップＳ２５０１：Ｎｏ）、ストレージ装置２０２は、書込要求されたデータを、自装置が有する移行先の論理ボリューム１２１に書き込む（ステップＳ２５０４）。そして、ストレージ装置２０２は、書込処理を終了する。これにより、ストレージ装置２０２は、移行元の論理ボリューム１１１と、移行先の論理ボリューム１２１との整合性が保たれるように、書込要求されたデータを書き込むことができる。
【０１９３】
以上説明したように、ストレージ制御装置１００によれば、移行されたデータの移行元の論理ボリューム１１１における位置を示す第１の情報ｄ１と、移行元の論理ボリューム１１１の容量を示す第２の情報ｄ２とを記憶することができる。そして、ストレージ制御装置１００によれば、移行元の論理ボリューム１１１の先頭または末尾からデータを順次読み出して移行先の論理ボリューム１２１に移行することができる。また、ストレージ制御装置１００によれば、データを移行先の論理ボリューム１２１に移行する都度、第１の情報ｄ１を更新することができる。また、ストレージ制御装置１００によれば、第１の情報ｄ１と、第２の情報ｄ２とに基づいて、移行元の論理ボリューム１１１から移行済みの容量が移行元の論理ボリューム１１１の容量以上であると判定した場合に、データの読み出しを終了することができる。
【０１９４】
これにより、ストレージ制御装置１００は、移行元の論理ボリューム１１１の容量が大きくなっても、データ移行の進捗状況を管理する管理データのサイズの増大化を抑制することができる。また、ストレージ制御装置１００は、ビットマップを用いないため、ホスト装置から読出要求や書込要求を受け付けたときに、比較的小さい容量のデータごとに読出処理や書込処理を行ってもよく、ホスト装置への応答時間の増大化を抑制することができる。
【０１９５】
また、ストレージ制御装置１００によれば、移行先の論理ボリューム１２１がシンプロビジョニングの論理ボリュームであれば、シンプロビジョニングの管理単位に対応する移行元の論理ボリューム１１１の記憶領域が空き領域であるか否かを判定することができる。そして、ストレージ制御装置１００によれば、空き領域ではないと判定した場合、移行元の論理ボリューム１１１の記憶領域に対応する移行先の論理ボリューム１２１の記憶領域に物理領域を割り当てることができる。さらに、ストレージ制御装置１００によれば、物理領域を割り当てた記憶領域に、移行元の論理ボリューム１１１の記憶領域から読み出したデータを移行することができる。これにより、ストレージ制御装置１００は、物理領域を割り当てて、データを移行先の論理ボリューム１２１に移行することができる。
【０１９６】
また、ストレージ制御装置１００によれば、空き領域であると判定した場合、移行元の論理ボリューム１１１の記憶領域に対応する移行先の論理ボリューム１２１の記憶領域に物理領域を割り当てず、第１の情報ｄ１を更新することができる。これにより、ストレージ制御装置１００は、移行先の論理ボリューム１２１のいずれかのチャンクに移行されるデータが、ゼロデータであれば、当該チャンクに物理領域を割り当てないことにより、見かけ上ゼロデータを移行することができる。このため、ストレージ制御装置１００は、移行先の論理ボリューム１２１に割り当てる物理領域の増大化を抑制することができる。
【０１９７】
また、ストレージ制御装置１００によれば、移行元の論理ボリューム１１１からのデータの読出要求を受け付けた場合、読出要求されたデータが、移行先の論理ボリューム１２１に移行済みであるか否かを判定することができる。そして、ストレージ制御装置１００によれば、移行済みではないと判定した場合、移行元の論理ボリューム１１１から読出要求されたデータを読み出すことができる。これにより、ストレージ制御装置１００は、読出要求されたデータを、読出要求の送信元のコンピュータに応答することができる。
【０１９８】
また、ストレージ制御装置１００によれば、移行済みであると判定した場合、移行先の論理ボリューム１２１から読出要求されたデータを読み出すことができる。これにより、ストレージ制御装置１００は、読出要求されたデータが移行先の論理ボリューム１２１にあれば、移行先の論理ボリューム１２１から読み出して送信元のコンピュータに応答することができ、応答にかかる時間の低減化を図ることができる。
【０１９９】
また、ストレージ制御装置１００によれば、移行元の論理ボリューム１１１へのデータの書込要求を受け付けた場合、移行元の論理ボリューム１１１および移行先の論理ボリューム１２１に、書込要求されたデータを書き込むことができる。これにより、ストレージ制御装置１００は、移行元の論理ボリューム１１１と、移行先の論理ボリューム１２１との整合性が保たれるように、書込要求されたデータを書き込むことができる。
【０２００】
また、ストレージ制御装置１００によれば、移行元の論理ボリューム１１１から移行済みの容量が移行元の論理ボリューム１１１の容量以上であると判定した場合に、第１の情報ｄ１と、第２の情報ｄ２とを削除することができる。これにより、ストレージ制御装置１００は、記憶領域を有効に活用可能にすることができる。
【０２０１】
なお、本実施の形態で説明したストレージ制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本ストレージ制御プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本ストレージ制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２０２】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０２０３】
（付記１）移行元の論理ボリュームの先頭または末尾から単位長のデータを順次読み出して移行先の論理ボリュームに移行するストレージ装置であって、
前記移行元の論理ボリュームにおける前記単位長のデータの位置を示す第１の情報と前記移行元の論理ボリュームの容量を示す第２の情報とを含む移行管理情報を記憶する記憶部と、
前記単位長のデータを前記移行先の論理ボリュームに移行する都度、前記第１の情報を更新し、
前記第１の情報と、前記第２の情報とに基づいて前記データの移行の進捗を管理し、前記移行元の論理ボリュームから移行済みの容量が前記移行元の論理ボリュームの容量以上であると判定した場合に、前記データの移行を終了する、
制御部を有することを特徴とするストレージ制御装置。
【０２０４】
（付記２）前記第１の情報は、前記単位長のデータを移行した数を示し、
前記制御部は、
前記第１の情報が示す数に前記単位長を乗算して前記移行元の論理ボリュームから移行済みの容量を算出し、算出した前記移行元の論理ボリュームから移行済みの容量が前記移行元の論理ボリュームの容量以上であるか否かを判定する、ことを特徴とする付記１に記載のストレージ制御装置。
【０２０５】
（付記３）前記移行管理情報は、前記移行先の論理ボリュームがシンプロビジョニングの論理ボリュームであるか否かを示す移行先ボリュームタイプ情報を含み、
前記移行先ボリュームタイプ情報がシンプロビジョニングの論理ボリュームであることを示す場合において、
前記制御部は、
前記シンプロビジョニングの管理単位に対応する前記移行元の論理ボリュームの記憶領域が、空き領域であるか否かを判定し、
空き領域ではないと判定した場合、前記移行元の論理ボリュームの記憶領域に対応する前記移行先の論理ボリュームの記憶領域に物理領域を割り当てて、前記移行元の論理ボリュームの記憶領域から読み出した前記データを移行し、
空き領域であると判定した場合、前記移行元の論理ボリュームの記憶領域に対応する前記移行先の論理ボリュームの記憶領域に物理領域を割り当てず、前記第１の情報を更新する、ことを特徴とする付記１または２に記載のストレージ制御装置。
【０２０６】
（付記４）前記制御部は、
前記移行元の論理ボリュームからのデータの読出要求を受け付けた場合、前記第１の情報に基づいて、前記読出要求されたデータが、前記移行先の論理ボリュームに移行済みであるか否かを判定し、
移行済みではないと判定した場合、前記移行元の論理ボリュームから前記読出要求されたデータを読み出し、
移行済みであると判定した場合、前記移行先の論理ボリュームから前記読出要求されたデータを読み出す、ことを特徴とする付記１〜３のいずれか一つに記載のストレージ制御装置。
【０２０７】
（付記５）前記制御部は、
前記移行元の論理ボリュームへのデータの書込要求を受け付けた場合、前記移行元の論理ボリュームおよび前記移行先の論理ボリュームに、前記書込要求されたデータを書き込む、ことを特徴とする付記１〜４のいずれか一つに記載のストレージ制御装置。
【０２０８】
（付記６）前記制御部は、
前記第１の情報と、前記第２の情報とに基づいて、前記移行元の論理ボリュームから移行済みの容量が前記移行元の論理ボリュームの容量以上であると判定した場合に、前記第１の情報と、前記第２の情報とを削除する、ことを特徴とする付記１〜５のいずれか一つに記載のストレージ制御装置。
【０２０９】
（付記７）移行元の論理ボリュームの先頭または末尾から単位長のデータを順次読み出して移行先の論理ボリュームに移行するコンピュータが、
前記単位長のデータを前記移行先の論理ボリュームに移行する都度、前記移行元の論理ボリュームにおける前記単位長のデータの位置を示す第１の情報と前記移行元の論理ボリュームの容量を示す第２の情報とを含む移行管理情報を記憶する記憶部に記憶された前記第１の情報を更新し、
前記第１の情報と、前記第２の情報とに基づいて前記データの移行の進捗を管理し、前記移行元の論理ボリュームから移行済みの容量が前記移行元の論理ボリュームの容量以上であると判定した場合に、前記データの移行を終了する、
処理を実行することを特徴とするストレージ制御方法。
【０２１０】
（付記８）前記第１の情報は、前記単位長のデータを移行した数を示し、
前記コンピュータが、
前記第１の情報が示す数に前記単位長を乗算して前記移行元の論理ボリュームから移行済みの容量を算出し、算出した前記移行元の論理ボリュームから移行済みの容量が前記移行元の論理ボリュームの容量以上であるか否かを判定する、処理を実行することを特徴とする付記７に記載のストレージ制御方法。
【０２１１】
（付記９）前記移行管理情報は、前記移行先の論理ボリュームがシンプロビジョニングの論理ボリュームであるか否かを示す移行先ボリュームタイプ情報を含み、
前記移行先ボリュームタイプ情報がシンプロビジョニングの論理ボリュームであることを示す場合において、
前記コンピュータが、
前記シンプロビジョニングの管理単位に対応する前記移行元の論理ボリュームの記憶領域が、空き領域であるか否かを判定する処理を実行し、
前記移行する処理は、
空き領域ではないと判定した場合、前記移行元の論理ボリュームの記憶領域に対応する前記移行先の論理ボリュームの記憶領域に物理領域を割り当てて、前記移行元の論理ボリュームの記憶領域から読み出した前記データを移行し、
前記更新する処理は、
空き領域であると判定した場合、前記移行元の論理ボリュームの記憶領域に対応する前記移行先の論理ボリュームの記憶領域に物理領域を割り当てず、前記第１の情報を更新する、ことを特徴とする付記７または８に記載のストレージ制御方法。
【０２１２】
（付記１０）前記コンピュータが、
前記移行元の論理ボリュームからのデータの読出要求を受け付けた場合、前記第１の情報に基づいて、前記読出要求されたデータが、前記移行先の論理ボリュームに移行済みであるか否かを判定し、
移行済みではないと判定した場合、前記移行元の論理ボリュームから前記読出要求されたデータを読み出し、
移行済みであると判定した場合、前記移行先の論理ボリュームから前記読出要求されたデータを読み出す、処理を実行することを特徴とする付記７〜９のいずれか一つに記載のストレージ制御方法。
【０２１３】
（付記１１）前記コンピュータが、
前記移行元の論理ボリュームへのデータの書込要求を受け付けた場合、前記移行元の論理ボリュームおよび前記移行先の論理ボリュームに、前記書込要求されたデータを書き込む、処理を実行することを特徴とする付記７〜１０のいずれか一つに記載のストレージ制御方法。
【０２１４】
（付記１２）前記コンピュータが、
前記第１の情報と、前記第２の情報とに基づいて、前記移行元の論理ボリュームから移行済みの容量が前記移行元の論理ボリュームの容量以上であると判定した場合に、前記第１の情報と、前記第２の情報とを削除する、処理を実行することを特徴とする付記７〜１１のいずれか一つに記載のストレージ制御方法。
【０２１５】
（付記１３）移行元の論理ボリュームの先頭または末尾から単位長のデータを順次読み出して移行先の論理ボリュームに移行するコンピュータに、
前記単位長のデータを前記移行先の論理ボリュームに移行する都度、前記移行元の論理ボリュームにおける前記単位長のデータの位置を示す第１の情報と前記移行元の論理ボリュームの容量を示す第２の情報とを含む移行管理情報を記憶する記憶部に記憶された前記第１の情報を更新し、
前記第１の情報と、前記第２の情報とに基づいて前記データの移行の進捗を管理し、前記移行元の論理ボリュームから移行済みの容量が前記移行元の論理ボリュームの容量以上であると判定した場合に、前記データの移行を終了する、
処理を実行させることを特徴とするストレージ制御プログラム。
【０２１６】
（付記１４）前記第１の情報は、前記単位長のデータを移行した数を示し、
前記コンピュータに、
前記第１の情報が示す数に前記単位長を乗算して前記移行元の論理ボリュームから移行済みの容量を算出し、算出した前記移行元の論理ボリュームから移行済みの容量が前記移行元の論理ボリュームの容量以上であるか否かを判定する、処理を実行させることを特徴とする付記１３に記載のストレージ制御プログラム。
【０２１７】
（付記１５）前記移行管理情報は、前記移行先の論理ボリュームがシンプロビジョニングの論理ボリュームであるか否かを示す移行先ボリュームタイプ情報を含み、
前記移行先ボリュームタイプ情報がシンプロビジョニングの論理ボリュームであることを示す場合において、
前記コンピュータに、
前記シンプロビジョニングの管理単位に対応する前記移行元の論理ボリュームの記憶領域が、空き領域であるか否かを判定する処理を実行させ、
前記移行する処理は、
空き領域ではないと判定した場合、前記移行元の論理ボリュームの記憶領域に対応する前記移行先の論理ボリュームの記憶領域に物理領域を割り当てて、前記移行元の論理ボリュームの記憶領域から読み出した前記データを移行し、
前記更新する処理は、
空き領域であると判定した場合、前記移行元の論理ボリュームの記憶領域に対応する前記移行先の論理ボリュームの記憶領域に物理領域を割り当てず、前記第１の情報を更新する、ことを特徴とする付記１３または１４に記載のストレージ制御プログラム。
【０２１８】
（付記１６）前記コンピュータに、
前記移行元の論理ボリュームからのデータの読出要求を受け付けた場合、前記第１の情報に基づいて、前記読出要求されたデータが、前記移行先の論理ボリュームに移行済みであるか否かを判定し、
移行済みではないと判定した場合、前記移行元の論理ボリュームから前記読出要求されたデータを読み出し、
移行済みであると判定した場合、前記移行先の論理ボリュームから前記読出要求されたデータを読み出す、処理を実行させることを特徴とする付記１３〜１５のいずれか一つに記載のストレージ制御プログラム。
【０２１９】
（付記１７）前記コンピュータに、
前記移行元の論理ボリュームへのデータの書込要求を受け付けた場合、前記移行元の論理ボリュームおよび前記移行先の論理ボリュームに、前記書込要求されたデータを書き込む、処理を実行させることを特徴とする付記１３〜１６のいずれか一つに記載のストレージ制御プログラム。
【０２２０】
（付記１８）前記コンピュータに、
前記第１の情報と、前記第２の情報とに基づいて、前記移行元の論理ボリュームから移行済みの容量が前記移行元の論理ボリュームの容量以上であると判定した場合に、前記第１の情報と、前記第２の情報とを削除する、処理を実行させることを特徴とする付記１３〜１７のいずれか一つに記載のストレージ制御プログラム。
【符号の説明】
【０２２１】
１００  ストレージ制御装置
１１０，１２０  記憶装置
１１１，１２１  論理ボリューム
２００  ストレージシステム
２０１，２０２  ストレージ装置
２０３  ホスト装置
３１０  ＣＭ
３１１，４０１  ＣＰＵ
３１２，４０２  メモリ
３１３  ＳＡＳ
３１４  ＮＩＣ
３１５  Ｔａｒｇｅｔ
３１６  Ｉｎｉｔｉａｔｏｒ
３２０  デバイス
４００  バス
４０３  Ｉ／Ｆ
４０４  ディスクドライブ
４０５  ディスク
４１０  ネットワーク
５００  移行管理テーブル
６０１  読出部
６０２  判定部
６０３  移行部
６０４  更新部
６０５  受付部
６０６  処理部
【図１】
2017162355.tif 000003
【図２】
2017162355.tif 000004
【図３】
2017162355.tif 000005
【図４】
2017162355.tif 000006
【図５】
2017162355.tif 000007
【図６】
2017162355.tif 000008
【図７】
2017162355.tif 000009
【図８】
2017162355.tif 000010
【図９】
2017162355.tif 000011
【図１０】
2017162355.tif 000012
【図１１】
2017162355.tif 000013
【図１２】
2017162355.tif 000014
【図１３】
2017162355.tif 000015
【図１４】
2017162355.tif 000016
【図１５】
2017162355.tif 000017
【図１６】
2017162355.tif 000018
【図１７】
2017162355.tif 000019
【図１８】
2017162355.tif 000020
【図１９】
2017162355.tif 000021
【図２０】
2017162355.tif 000022
【図２１】
2017162355.tif 000023
【図２２】
2017162355.tif 000024
【図２３】
2017162355.tif 000025
【図２４】
2017162355.tif 000026
【図２５】
2017162355.tif 000027