(57)【要約】【課題】ストレージ装置で無駄な資源を使用せずに高速にボリューム間のデータ交換を行う。【解決手段】データ交換のためのキャッシュ領域１１１、１１２をメモリ上に確保し、交換するデータの位置を決定し、ボリューム１２１とボリューム１２２の前記決定した位置からデータをそれぞれ読み出してキャッシュ領域１１１、１１２に格納し、これらキャッシュ領域１１１、１１２のデータを、前記読み出したボリュームとは異なるボリューム１２２、１２１の前記決定した位置へ書き込む。【選択図】図１
2007108981.tif 000002
【特許請求の範囲】
【請求項１】
ディスクドライブに設定された第１のボリュームと第２のボリュームにそれぞれ格納されたデータを相互に交換する方法であって、
データ交換のための一時領域をメモリ上に確保する処理と、
前記交換するデータの第１のボリューム上の位置を決定する処理と、
前記第１のボリュームまたは第２のボリュームの前記決定した位置からデータを読み出して前記一時領域に格納する処理と、
前記一時領域のデータを、前記読み出したボリュームとは異なるボリュームの前記決定した位置へそれぞれ書き込む処理と、
を含むことを特徴とするボリューム間のデータ交換方法。
【請求項２】
前回データ交換を行ったボリューム内の位置情報を有し、
前記交換するデータの位置を決定する処理は、
前記位置情報が存在する場合には、当該位置情報に前記一時領域のサイズを合計した位置を前記交換するデータの位置として設定する処理と、
前記位置情報が存在しない場合には、交換するデータの位置を前記第１のボリュームの先頭とする処理と、
を含むことを特徴とする請求項１に記載のボリューム間のデータ交換方法。
【請求項３】
前記一時領域は、第１の一時領域と第２の一時領域を含み、
前記ボリュームのデータを読み出して一時領域に格納する処理は、
前記第１のボリュームのデータを前記第１の一時領域へコピーする処理と、
前記第２のボリュームのデータを前記第２の一時領域へコピーする処理と、
を含み、
前記ボリュームへ書き込む処理は、
前記第２の一時領域のデータを前記第１のボリュームの前記決定した位置へコピーする処理と、
前記第１の一時領域のデータを前記第２のボリュームの前記決定した位置へコピーする処理と、
を含むことを特徴とする請求項１に記載のボリューム間のデータ交換方法。
【請求項４】
前記ボリューム間のデータ交換の処理中に、前記第１のボリュームに対するアクセス要求を受け付ける処理と、
前記アクセス要求に対応するデータの位置が、前記位置情報より後方である場合は前記第１のボリュームへアクセスを行う処理と、
前記アクセス要求に対応するデータの位置が、前記位置情報より前方である場合は前記第２のボリュームへアクセスを行う処理と、
前記アクセス要求に対応するデータの位置が、前記位置情報に含まれる場合は前記第１の一時領域へアクセスを行う処理と、
をさらに含むことを特徴とする請求項２に記載のボリューム間のデータ交換方法。
【請求項５】
前記データ交換処理の中断要求または再開要求を受け付ける処理と、
前記中断要求があったときには前記位置情報の内容を保持してデータ交換を中断する処理と、
前記再開要求があったときには前記位置情報の内容を現在のデータ交換位置としてデータ交換を再開する処理と、
をさらに含むこと特徴とする請求項２または請求項４に記載のボリューム間のデータ交換方法。
【請求項６】
前記データ交換を中断する処理は、
前記位置情報を中断位置として記憶する処理と、
前記データ交換の中断後にデータ交換の取消要求を受け付ける処理を含み、
交換するデータの位置を決定する処理は、
前記取消要求があったときに、前記位置情報が存在する場合には、当該位置情報から一時領域のサイズを減算した位置情報を交換するデータの位置として設定する処理と、
前記取消要求があったときに、前記位置情報が存在しない際には、前記中断位置から一時領域のサイズを減算した位置を交換するデータの位置として設定する処理と、
を含むことを特徴とする請求項５に記載のボリューム間のデータ交換方法。
【請求項７】
前記第１のボリューム内を複数の領域に分割して、各領域のデータ交換状態を設定する管理表を、さらに有し、
前記一時領域は、第１の一時領域と第２の一時領域を含み、
前記ボリュームのデータを読み出して一時領域に格納する処理は、
前記第１のボリュームの前記領域からデータを読み出して前記第１の一時領域へコピーする処理と、
前記第１のボリュームと同一の領域について前記第２のボリュームからデータを読み出して前記第２の一時領域へコピーする処理と、
を含み、
前記ボリュームへ書き込む処理は、
前記第１の一時領域へコピーしたデータを前記第２のボリュームの前記領域へコピーする処理と、
前記第２の一時領域へコピーしたデータを前記第１のボリュームの前記領域へコピーする処理と、
を含み、
前記管理表の前記領域のデータ交換状態を更新する処理と、
を含むことを特徴とする請求項１に記載のボリューム間のデータ交換方法。
【請求項８】
前記ボリューム間のデータ交換の処理中に、前記第１のボリュームに対するアクセス要求を受け付ける処理と、
前記アクセス要求があったときには、前記アクセス要求に対応する前記第１のボリュームに対するアクセスを実行する処理と、をさらに含み、
前記交換するデータの位置を決定する処理は、
前記アクセスを行った位置を優先してデータ交換位置として設定することを特徴とする請求項１または請求項７に記載のボリューム間のデータ交換方法。
【請求項９】
前記一時領域のサイズを動的に変更する処理と、
前記一時領域のサイズに応じて前記第１のボリュームと第２のボリュームに読み書きする前記データのサイズを決定する処理と、をさらに含み、
前記交換するデータの位置を決定する処理は、
前記決定したサイズに応じて次に交換するデータの位置を決定する処理と、
を含むことを特徴とする請求項１に記載のボリューム間のデータ交換方法。
【請求項１０】
前記第２のボリュームが使用中であるか否かを判定する処理と、
前記第２のボリュームが使用中でなければ、前記第１のボリュームから第２のボリュームにデータをコピーする処理と、
をさらに含むことを特徴とする請求項１に記載のボリューム間のデータ交換方法。
【請求項１１】
ディスクドライブに設定された第１のボリュームと第２のボリュームにそれぞれ格納されたデータを移動する方法であって、
データ交換のための一時領域をメモリ上に確保する処理と、
前記交換するデータの位置を決定する処理と、
前記第１のボリュームと第２のボリュームの前記決定した位置からデータを読み出して前記一時領域に格納する処理と、
前記一時領域のデータのうち前記第１のボリュームのデータを前記第２のボリュームの前記決定した位置へ書き込み、前記一時領域のデータのうち前記第２のボリュームのデータを第３のボリュームの前記決定した位置へ書き込む処理と、
を含むことを特徴とするボリューム間のデータ移動方法。
【請求項１２】
前記一時領域をメモリ上に確保する処理は、
データ移動のための第１の一時領域と第２の一時領域を確保する処理を含み、
前記交換するデータの位置を決定する処理は、
第１のボリュームにおけるデータ移動位置を決定する処理と、
第２のボリュームにおけるデータ移動位置を決定する処理と、を含み、
前記書き込む処理は、
前記第２の一時領域のデータを第３のボリュームの前記データ移動位置へコピーする処理と、
前記第２のボリュームのデータが第３のボリュームの前記データ移動位置へコピーされているか否かを判定する処理と、
前記第３のボリュームの前記データ移動位置へのコピーがまだ行われていない場合は、
一定時間待機した後に再度前記判定を行う処理と、
前記第３のボリュームの前記データ移動位置へのコピーが完了した場合は、前記第１のボリュームの当該データ移動位置のデータを前記第１の一時領域へコピーする処理と、
前記第１の一時領域のデータを第２のボリュームの前記データ移動位置へコピーする処理と、
を含むことを特徴とする請求項１１に記載のボリューム間のデータ移動方法。
【請求項１３】
前記ボリューム間のデータ移動の処理中に、第１のボリュームに対するアクセス要求を受け付ける処理と、
前記アクセス要求に対応するデータの位置が前記移動するデータの位置より後方である場合は第１のボリュームへアクセスを行う処理と、
前記アクセス要求に対応するデータの位置が前記移動するデータの位置より前方である場合は第２のボリュームへアクセスを行う処理と、
前記アクセス要求に対応するデータの位置が前記移動するデータの位置に含まれる場合は第１の一時領域へアクセスを行う処理と、
前記ボリューム間のデータ移動の処理中に、第２のボリュームに対するアクセス要求を受け付ける処理と、
前記アクセス要求に対応するデータの位置が前記移動するデータの位置より後方である場合は第２のボリュームへアクセスを行う処理と、
前記アクセス要求に対応するデータの位置が前記移動するデータの位置より前方である場合は第３のボリュームへアクセスを行う処理と、
前記アクセス要求に対応するデータの位置が前記移動するデータの位置に含まれる場合は第２の一時領域へアクセスを行う処理と、
を含むことを特徴とする請求項１１に記載のボリューム間のデータ移動方法。
【請求項１４】
複数のディスクドライブと、
前記ディスクドライブにボリュームを設定し、前記ボリュームに対するアクセスを制御するディスク制御部と、
前記ボリュームのデータを一時的に保持するキャッシュ領域を含むメモリと、を備えたストレージ装置において、
前記ディスク制御部は、
管理計算機から前記ボリューム間のデータ交換要求を受け付けて、前記ボリューム上のデータ交換位置を決定するマイグレーション制御部と、
前記キャッシュ領域にデータ交換用の一時領域を設定し、当該キャッシュ領域への読み書きを制御するキャッシュ管理部と、
前記マイグレーション制御部からデータ交換位置を取得し、当該取得したデータ交換位置に基づいて前記キャッシュ管理部を介してデータ交換中のボリュームにアクセスするデータアクセス部と、
を備えたことを特徴とするストレージ装置。
【請求項１５】
前記マイグレーション制御部は、
データ交換を行うボリューム内のデータ交換位置を決定するデータ交換位置決定部と、
前記データ交換位置を保持するデータ交換位置情報格納部と、
を有し、
前記データ交換位置決定部は、
前記位置情報が存在する場合には、当該位置情報に前記一時領域のサイズを合計した位置を前記交換するデータの位置として設定し、前記位置情報が存在しない場合には、交換するデータの位置を前記ボリュームの先頭として設定することを特徴とする請求項１４に記載のストレージ装置。
【請求項１６】
前記マイグレーション制御部は、
前記データ交換を行うボリューム内を複数の領域に分割して、各領域のデータ交換状態を設定するデータ交換管理表と、
前記データ交換が完了した前記領域に対応するデータ交換管理表を更新し、データ交換が完了していない前記領域を検索して次のデータ交換位置を決定するデータ交換位置決定部と、
を有することを特徴とする請求項１４に記載のストレージ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置のボリューム管理方法の改良に関する。
【背景技術】
【０００２】
現在では企業で扱うデータが増大し、それに応じてストレージ装置の大規模化が進んでいる。ストレージ装置の大規模化に伴い、ストレージ装置内の個々のボリュームは均一な性能を持つものではなく、様々な性能のボリュームが混在することとなる。その際、扱うデータの重要度等に応じて格納するボリュームを最適配置することが必要になる。更に、データの重要度は常に一定ではなく、そのため性能の異なるボリューム間でデータを移動することが求められる。
【０００３】
ボリューム間のデータ移動は、一般に移動元ボリュームから移動先ボリュームへデータコピーを行うことで実現されるが、その場合、移動先ボリュームのデータは上書きされてしまうため、移動先ボリュームとしては未使用なボリューム（不要なデータの格納されたボリューム）を選択しなければならない。そのため、データ移動を想定したストレージ管理を行うためには、データ移動先として常に空きボリュームを用意しておくことが必要になる。空きボリュームを多く抱えるのは資源の無駄になり、特に高速ボリュームを未使用とするのはコスト上望ましくない。
【０００４】
これに対して、特許文献１では、ボリューム間のデータ移動において、移動元ボリュームと移動先ボリュームのデータを交換する方法を提案している。これにより、移動先ボリュームのデータを上書きすることなしにデータの移動が可能となる。この従来例では、データ交換を行う２つボリュームの他にデータの一時退避用の２つのボリュームを用意し、データ交換を行う２つのボリュームのデータをそれぞれ一時退避用のボリュームにコピーし、その後一時退避用のボリュームから交換先のボリュームにコピーを行うことでデータ交換を可能とする。本方式では、一時退避用のボリュームを２つ用意すれば移動先ボリュームが空いていなくても自由にデータ移動が可能となる。
【特許文献１】特開２００２−３２１９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来例では、一時退避用のボリュームを常に用意しておく必要があり、通常利用はできない無駄な領域が生じてしまう。特に、多数のボリュームを同時に移動する必要がある場合には、多数の空きボリュームを用意するか、少数の空きボリュームしかなければ長時間かかるという問題がある。また、交換を行うボリュームに一度データを退避するため、通常のデータ移動の倍の時間がかかるという問題がある。
【０００６】
また、一時退避用のボリュームを用いる場合、交換したいボリュームのサイズより大きなボリュームが必要となるため、ストレージ装置内の最大のボリュームサイズにあわせて退避用ボリュームを用意する必要があり、柔軟な運用が難しい。特に、ボリューム間データコピーをハードウェアで実施する場合、コピーを行う２つのボリュームの間に制約条件を持つ場合があり、退避用ボリュームが多数必要になる場合がある。例えば、コピーを行う２つのボリュームのサイズが等しくなければならないという制約条件があるならば、ストレージ装置内のサイズの異なるボリューム数だけ退避用ボリュームを用意しなければならない。
【０００７】
そこで本発明は、上記問題点に鑑みてなされたもので、ストレージ装置で無駄な資源を使用せずに高速にボリューム間のデータ交換を行うことを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、データ交換のための一時領域をメモリ上に確保し、交換するデータの位置を決定し、第１のボリュームまたは第２のボリュームの前記決定した位置からデータを読み出して前記一時領域に格納し、前記一時領域のデータを、前記読み出したボリュームとは異なるボリュームの前記決定した位置へ書き込む。
【０００９】
そして、マイグレーション（データ交換処理またはデータ移動処理）時に第２のボリューム（移動先ボリューム）に有効なデータが保存されている場合には、メモリ上の一時領域を使用して２つのボリューム間のデータを交換する。一方、移動先ボリュームに有効なデータが保存されていない場合には、第１のボリュームから第２のボリュームにデータをコピーする通常のマイグレーションを行う。
【発明の効果】
【００１０】
したがって、本発明は、ディスクキャッシュやＲＡＩＤキャッシュなどの一時領域を使用してボリューム間のデータを交換し、空きボリュームを必要とせずにデータの移動を可能とする。これにより、ストレージ装置内に無駄なボリュームを用意する必要が無く、効率の良い運用が可能となる。
【００１１】
加えて、第１のボリューム（移動元ボリューム）からデータをキャッシュ（一時領域）に読み込んで交換先のボリュームに書き込んでデータ交換を行うことにより、ボリューム間コピーと同等の性能でボリューム間のデータ交換が可能となり、マイグレーションの処理速度を向上させることができる。
【発明を実施するための最良の形態】
【００１２】
＜第１実施形態＞
以下、本発明の第１の実施形態を添付図面に基づいて説明する。
【００１３】
図１は、本発明によるストレージ装置の全体構成図を示している。ストレージ装置１００は、後述する図２のように、ＣＰＵ１１、メモリ（キャッシュメモリ）１２、Ｉ／Ｏインターフェース１４〜１６及び複数のディスクドライブ３〜５を備えている。そして、ストレージ装置１００は内部にマイグレーション制御部１０１、データアクセス制御部１０４、キャッシュ管理部１０６、複数のキャッシュ領域１１１〜１１６、及び複数のボリューム１２１〜１２４を備えている。なお、キャッシュ領域１１１〜１１６は、上記メモリ１２上の所定の領域に設定され、また、ボリューム１２１〜１２４は、データアクセス制御部１０４によって所定のディスクドライブ３〜５に設定される。
【００１４】
上記マイグレーション制御部１０１、データアクセス制御部１０４、キャッシュ管理部１０６はメモリ上にロードされたソフトウェアによって実現される例を示す。これら各制御部、管理部の総称はディスク制御部１１００とする。
【００１５】
図２は、ストレージ装置１００を中心とするハードウェアの構成図である。
【００１６】
ＩＰネットワーク６には、ストレージ装置１００を管理する管理サーバ１３１とホスト１３２が接続される。また、ホスト１３２はＳＡＮ（Storage Area Network）７を介してストレージ装置１００に接続され、ホスト１３２はＳＡＮ７を介してストレージ装置１００にＩ／Ｏアクセスを行う。
【００１７】
ストレージ装置１００は、ＣＰＵ１１、キャッシュ領域を含むメモリ１２、データ転送コントローラ１３、ＩＰネットワークインターフェース１４、ストレージ用のインターフェース１５及びＳＡＮ７とのインターフェース１６が設けられている。インターフェース１６には複数のディスクドライブ３〜５が接続され、各ディスクドライブには、上述のようにボリュームが設定される。
【００１８】
そして、ネットワークインターフェース１４を介してストレージ装置１００はＩＰネットワーク６に接続され、管理サーバ１３１からデータ交換要求やデータ移動要求を受ける。
【００１９】
また、ストレージ装置１００は、インターフェース１５を介してＣＰＵ１１がデータを格納するディスクドライブ３〜５にアクセスを行うことができる。なお、メモリ１２にはボリュームにアクセスしたデータを一時的に保持するキャッシュ（ディスクキャッシュ）領域（図１の１１１〜１１６）が設定される。
【００２０】
データ転送コントローラ１３は、ＣＰＵ１１、ネットワークインターフェース１４、ストレージインターフェース１５、ＳＡＮインターフェース１６及びメモリ１２の間でデータを転送する。
【００２１】
メモリ１２にはディスク制御部１１００を実現する制御プログラムがロードされており、ＣＰＵ１１が制御プログラムをメモリ１２へ呼び出して実行することによって上記各制御部や管理部の機能を実現する。なお、キャッシュ領域はＣＰＵ１１が制御プログラム等を格納するメモリ１２だけではなく、ＣＰＵ１１がアクセスする主記憶とは物理的に異なる図示しないメモリだけに設定してもよい。
【００２２】
次に、図１において、マイグレーション制御部１０１は、内部にデータ交換位置決定部１０２とデータ交換位置情報１０３を持ち、ＩＰネットワーク６を介して管理サーバ１３１と接続されている。管理サーバ１３１がマイグレーション制御部１０１に対してボリューム間のマイグレーション要求（データ交換要求やデータ移動要求）を行うことにより、データ交換処理やデータ移動処理が開始される。なお、管理サーバ１３１は、図示しないＣＰＵ、メモリ及び入出力装置を備え、管理者などにより操作される。また、本実施形態では、移動先のボリュームに有効なデータが格納されている場合、後述するデータ交換処理を選択し、移動先のボリュームが書き込み可能な状態、換言すれば有効なデータがない状態であれば、後述するデータ移動処理を選択する。
【００２３】
マイグレーション制御部１０１は、データ交換位置決定部１０２によって対象となるボリューム上のデータ交換位置（またはデータ移動位置）を決定し、決定したデータ交換位置をデータ交換位置情報１０３に記憶する。なお、データ交換位置としては、例えば、論理ブロックアドレス（ＬＢＡ）等を用いることができる。
【００２４】
また、マイグレーション制御部１０１はキャッシュ管理部１０６とも接続されており、データ交換処理やデータ移動処理において使用するキャッシュ領域１１１〜１１６の予約や、キャッシュ領域１１１〜１１６とボリューム１２１〜１２４の間のデータコピーを制御する。
【００２５】
データアクセス制御部１０４は、ＳＡＮ７を介してホスト１３２と接続されており、ホスト１３２からのデータ読み出し要求やデータ書き込み要求を受け付ける。なお、ホスト１３２はユーザ等が利用する計算機であり、図示しないＣＰＵ、メモリ及び入出力装置を備えている。
【００２６】
データアクセス制御部１０４は、内部にデータアクセス部１０５を持ち、データアクセス部１０５はデータ交換位置情報１０３と接続されている。データアクセス制御部１０４はホスト１３２からのデータ読み出し要求やデータ書き込み要求の処理を行う際に、データアクセス部１０５に指令して要求の処理を行う。
【００２７】
データアクセス部１０５はデータ交換位置情報１０３やキャッシュ管理部１０６と接続されており、ホスト１３２からのデータ読み出し要求やデータ書き込み要求のデータ位置に従ってデータ交換位置情報１０３を参照しつつキャッシュ管理部にデータの読み出しや書き込みの要求を行うことにより処理を行う。
【００２８】
キャッシュ管理部１０６はキャッシュ領域１１１〜１１６、ボリューム１２１〜１２４と接続されており、マイグレーション制御部１０１の要求によりキャッシュ領域予約部１０７を用いてキャッシュ領域１１１〜１１６の予約処理を行う。この予約処理は、ディスクキャッシュまたはＲＡＩＤキャッシュとして機能するキャッシュ領域に、データ交換処理の際に交換するデータのバッファとして利用する領域を予約する処理である。また、マイグレーション制御部１０１やデータアクセス制御部１０４の要求によりデータコピー部１０８を用いて、キャッシュ領域１１１〜１１６とボリューム１２１〜１２４の間のデータコピーを行う。また、キャッシュ領域１１１〜１１６の間でのデータコピーも可能である。
【００２９】
後述するように、ストレージ装置１００は管理サーバ１３１からのデータ交換要求やデータ移動要求に応じて、マイグレーション制御部１０１及びデータアクセス部１０５を機能させて、ボリューム間でのデータの交換または移動を実行する。このデータ交換要求は、ストレージ装置１００の管理者が、移動元のボリュームと移動先のボリュームを指定して、ストレージ装置１００に指令する。データ交換要求は、例えば、更新頻度の高いデータあるいは重要なデータを高性能なボリュームに移動させ、更新頻度の低いデータや重要度の低いデータを性能が低いボリュームに移動させる。ここで、ボリュームの性能とは、ホスト１３２から見たボリューム毎の転送速度及び応答速度であり、ボリュームを設定したディスクドライブに依存する。一般に、高性能なディスクドライブでは、記憶容量は少ないが転送速度及び応答速度は速く、高価である。一方、低性能なディスクドライブでは、記憶容量は大きいものの転送速度及び応答速度が低い傾向があり、価格は安価である。したがって、管理者は計算機システムの運用コストに見合うように、データの再配置を行うためデータ交換（またはデータ移動）を必要に応じて実行する。
【００３０】
次に、図３、図４、図５を参照しながら２つのボリューム間でデータ交換処理を行う際の動作を説明する。
【００３１】
図３は、管理サーバ１３１の要求により行われるボリューム間のデータ交換処理の概略を示している。
【００３２】
管理サーバ１３１は、マイグレーション制御部１０１に対してボリューム１２１とボリューム１２２を指定してデータ交換要求を要求する（Ｓ２０１）。なお、データ交換を行うボリューム１２１と１２２の容量は同一である。
【００３３】
マイグレーション制御部１０１はデータ交換要求を受け取ると、キャッシュ領域予約部１０７に指令してキャッシュ領域１１１とキャッシュ領域１１２をデータ交換処理の作業用領域として予約する（Ｓ２０２）。キャッシュ領域予約部１０７は、例えば、予め設定した容量のキャッシュ領域をキャッシュ領域１１１とキャッシュ領域１１２として確保する。なお、キャッシュ領域予約部１０７が確保するキャッシュ領域１１１とキャッシュ領域１１２の容量は、等しい値に設定される。
【００３４】
マイグレーション制御部１０１は、データ交換位置決定部１０２にデータ交換処理の開始を指令し、データ交換位置決定部１０２はデータ交換位置を決定し（Ｓ２０３）、データ交換位置情報１０３へデータ交換位置を記憶する（Ｓ２０４）。データ交換位置決定部１０２は、予め設定した初期値をデータ交換位置の初期値として設定する。この初期値は、例えば、ＬＢＡ＝０等に設定される。本実施形態では、２つのボリューム１２１、１２２のデータ交換が同時に行われるので、ひとつのデータ交換位置情報１０３で２つのボリューム１２１、１２２の同一の位置を指示する。
【００３５】
次に、マイグレーション制御部１０１は、ボリューム１２１のデータ交換位置に存在する予め設定したデータ長のデータ４２１を、データコピー部１０８に指令してキャッシュ領域１１１へコピーする（Ｓ２０５）。同様に、ボリューム１２２のデータ交換位置に存在するデータ４２２は、データコピー部１０８により、キャッシュ領域１１２へコピーされる（Ｓ２０６）。このとき、データコピー部１０８がボリューム１２１、１２２からキャッシュ領域１１１、１１２へコピーするデータ４２１、４２２のデータ長（容量）は等しい値に設定される。
【００３６】
次に、マイグレーション制御部１０１は、キャッシュ領域１１１に存在するデータを、データコピー部１０８に指令してボリューム１２２のデータ交換位置４２２へコピーする（Ｓ２０７）。同様に、データコピー部１０８は、キャッシュ領域１１２に存在するデータを、ボリューム１２１のデータ交換位置４２１へコピーする（Ｓ２０８）。このコピーが完了すると、マイグレーション制御部１０１は、データ交換位置情報１０３に所定値（コピーするデータ４２１、４２２の長さ）を加算して更新する。
【００３７】
以上のＳ２０３からＳ２０８を繰り返すことにより、データ交換位置情報１０３が現在のデータ交換位置を指し示しながらボリューム１２１とボリューム１２２に格納されているデータが順次入れ替わる。
【００３８】
以上の処理により、マイグレーション時に移動先ボリュームに有効なデータが保存されている場合、退避用のボリュームを用意することなく、移動先のボリュームのデータを移動元のボリュームに退避しつつ目的のボリュームにマイグレーションすることができる。
【００３９】
図４は、ストレージ装置１００の各制御部で行われるデータ交換処理のフローチャートを示している。
【００４０】
マイグレーション制御部１０１は、管理サーバ１３１からデータ交換要求を受け取り、以下のデータ交換処理を開始する。
【００４１】
まず、ステップ３０１では、データ交換処理の作業用に、キャッシュ領域の予約を行う。これは、上記キャッシュ領域予約部１０７がキャッシュ領域１１１〜１１６の中から、使用可能な２つの領域、例えば、キャッシュ領域１１１とキャッシュ領域１１２をデータ交換処理用として予約する。残りのキャッシュ領域１１３〜１１６はＩ／Ｏアクセス用となる。
【００４２】
ステップ３０２では、データ交換を行う位置を決定する。データ交換位置決定部１０２が、予め設定した初期値をデータ交換位置の初期値としてメモリ上のデータ交換位置情報１０３に設定する。
【００４３】
ステップ３０３では、マイグレーション制御部１０１が管理サーバ１３１からデータ交換処理の中断要求が行われているかどうかを判定し、中断要求が行われているならばデータ交換処理を中断して終了し、中断要求が行われていないならばステップ３０４へ進む。
【００４４】
ステップ３０４では、データコピー部１０８がボリューム１２１からデータ交換位置の所定の長さのデータをキャッシュ領域１１１へコピーする。
【００４５】
ステップ３０５では、データコピー部１０８がボリューム１２２からデータ交換位置の所定の長さのデータをキャッシュ領域１１２へコピーする。この時点で、キャッシュ領域１１１とキャッシュ領域１１２には、同じ長さ（容量）のデータ４２１、４２２が格納される。
【００４６】
ステップ３０６では、キャッシュ領域１１１からボリューム１２２のデータ交換位置へデータをコピーする。
【００４７】
ステップ３０７では、キャッシュ領域１１２からボリューム１２１のデータ交換位置へデータをコピーする。したがって、ボリューム１２２のデータ交換位置には、ボリューム１２１のデータ４２１が格納され、ボリューム１２１のデータ交換位置には、ボリューム１２２のデータ４２２が格納され、データ交換処理の１単位のデータ交換が完了することになる。
【００４８】
ステップ３０８では、マイグレーション制御部１０１がボリューム１２１とボリューム１２２の全データのコピーが完了したかを判定し、まだコピーしていないデータが存在する場合はステップ３０２へ戻る。またコピーしていないデータが存在しない場合は、データ交換処理を終了する。つまり、マイグレーション制御部１０１は、データ交換位置情報１０３がボリューム１２１（１２２）の所定の終端に達したか否かを判定する。この所定の終端は、例えば、ボリューム１２１（１２２）のＬＢＡの最大値（終端）に設定される。
【００４９】
上記のデータ交換処理中に、ステップ３０３において中断要求が行われていたために、データ交換処理が中断状態で終了した状態で、中断したデータ交換処理の再開要求が行われた場合、ステップ３０４から処理を再開する。
【００５０】
なお、中断要求は管理者等が管理サーバ１３１を介してストレージ装置１００に指令するものであり、例えば、管理者が管理サーバ１３１からストレージ装置１００の運用状況を監視して、データ交換中にストレージ装置１００の負荷が高くなったときには、データ交換の中断要求をストレージ装置１００に指令する。
【００５１】
以上の処理により、前記従来例のようにデータ交換用のボリュームを用いることなく、２つのボリューム１２１、１２２の内容を交換することができる。
【００５２】
つまり、データ交換元のボリューム１２１とデータ交換先のボリューム１２２の内容を、データ交換位置情報１０３で指示される位置のデータを２つのキャッシュ領域１１１と１１２に等しい容量ずつコピーした後に、キャッシュ領域１１１と１１２からボリューム１２１、１２２へそれぞれ書き込むことで、移動先のボリュームに使用中のデータがあっても他のボリュームを使用する必要がなくなり、且つ、高速にデータ交換を実現することが可能となる。
【００５３】
図５は、上記図４のＳ３０２に示したデータ交換位置決定処理のサブルーチンのフローチャートを示している。
【００５４】
図１のデータ交換位置決定部１０２はマイグレーション制御部１０１の要求により、次にデータ交換を行うボリューム内のデータの位置を算出する。
【００５５】
ステップ４０１では、データ交換位置が既にデータ交換位置情報１０３に存在するかどうかを判定し、存在する場合はステップ４０２へ進み、存在しない場合はステップ４０３に進む。なお、データ交換位置情報１０３は、例えばメモリ１２上に設定されたレジスタあるいはポインタとして実現される。
【００５６】
ステップ４０２では、現在のデータ交換位置情報１０３に対して位置をキャッシュ領域１１１のサイズ分増加させる。つまり、前回コピーしたデータの容量（キャッシュ領域の容量）に等しい値を前回のデータ交換位置に加算し、この合計値を次のデータ交換位置として決定する。この処理により、データ移動処理の開始後には、ボリュームの先頭からキャッシュ領域の容量ずつデータ交換位置が移動し、ボリュームの終端までデータ交換処理を行うことができる。
【００５７】
ステップ４０３では、初期値としてボリューム１２１（または１２２）の先頭位置をデータ交換位置として設定する。なお、ボリューム１２１とボリューム１２２は同一の容量で構成されるので、どちらか一方のデータ交換位置を決定すれば、２つのボリューム１２１、１２２は、同一の位置でデータのコピーと書き込みが行われる。そして、データ交換位置決定部１０２により、ボリューム間のデータ交換がキャッシュ領域１１１、１１２のサイズを単位として順次データ交換が可能になる。
【００５８】
なお、ボリューム１２１とボリューム１２２のデータ移動処理が完了した後には、データアクセス制御部１０４は、ホスト１３２からボリューム１２１、１２２のパス設定を切り換える。これにより、ホスト１３２はデータ交換処理やデータ移動処理によるボリューム間の変更を意識することなく目的のデータにアクセスすることができる。
【００５９】
また、マイグレーション制御部１０１は、データ交換処理の中断要求があったときには、データ交換位置情報１０３を保持しておく。そして、マイグレーション制御部１０１は、データ交換処理の再開要求があったときには、データ交換位置情報１０３に保持されたデータ交換位置からデータ交換処理を再開することができる。
【００６０】
図６は、図４のステップ３０３において中断要求が行われていたために、データ交換処理が中断状態で終了した後に、ボリュームの状態をボリューム交換処理の開始前に戻す取消処理における、データ交換位置決定処理のフローチャートを示している。この処理は、管理サーバ１３１からのデータ交換取消要求に基づいて実行される。
【００６１】
ステップ５０１では、データ交換位置決定部１０２が現在のデータ交換位置情報１０３に対して位置をキャッシュ領域１１１のサイズ分だけ減少させる。
【００６２】
ボリューム状態を交換処理の開始前に戻す処理は、図４のデータ交換処理のフローチャートにおけるデータ交換位置決定処理（ステップ３０２）において、図５の代わりに図６のデータ交換位置決定処理を実施することで実現できる。
【００６３】
つまり、マイグレーション制御部１０１は、データ交換処理の中断要求があったときには、データ交換位置情報１０３を保持しておき、データ交換処理の取消要求があったときには、データ交換位置情報１０３に保持されたデータ交換位置からキャッシュ領域１１１のサイズ分だけ減少させながら逆方向にデータ交換処理を行うことで、ボリューム１２１とボリューム１２２の内容をデータ交換処理の開始前に復帰させることができる。
【００６４】
なお、データ交換処理の中断時には、データ交換位置（中断位置）をメモリ１２の所定の位置に記憶しておいても良い。
【００６５】
そして、データ交換処理の取消要求があったときには、データ交換位置情報１０３にデータ交換位置が存在する場合には、このデータ交換位置から上記キャッシュ領域のサイズを減算した位置情報を、逆方向に交換するデータの位置として決定する。一方、データ交換位置情報１０３にデータ交換位置が存在しない場合には、上記メモリ１２に記憶しておいた中断位置からキャッシュ領域のサイズを減算した位置を、逆方向に交換するデータの位置として決定すればよい。
【００６６】
なお、取消要求に基づく逆方向のデータ交換処理は、図３の交換用データ４２１、４２２の矢印を反対にした状態となって、ボリューム１２２へ移動したデータをボリューム１２１へ書き戻し、ボリューム１２１へ移動したデータをボリューム１２２へ書き戻す処理となる。
【００６７】
次に、図７、図８を参照しながらボリューム間のデータ交換処理の実行中に、ホスト１３２からのＩ／Ｏアクセス（読み出し要求または書き込み要求）が行われた場合の処理を説明する。
【００６８】
図７は、データ交換処理実行中にホスト１３２からボリューム１２１に対して読み出しアクセス要求が行われた場合に、データアクセス制御部１０４で行われる処理のフローチャートを示している。
【００６９】
ホスト１３２はデータアクセス制御部１０４に対して、ボリューム１２１と読み出しアクセス要求位置を指定して、読み出しアクセス要求を行う（Ｓ７０１）。データアクセス制御部１０４は、データアクセス部１０５にホスト１３２からの読み出しアクセス要求を指令する。
【００７０】
データアクセス部１０５は、データ交換位置情報１０３に対して現在データ交換が行われているデータ交換位置を問い合わせ（Ｓ７０２）、読み出しアクセス要求位置がデータ交換位置と等しい場合は、キャッシュ管理部１０６を介してキャッシュ領域１１１からデータを読み出し、ホスト１３２へ転送する（Ｓ７０３）。この場合、読み出しアクセス要求位置のデータは、既にキャッシュ領域１１１にあるので、ボリューム１２１へのアクセスを行うことなく、応答速度を高くすることができる。
【００７１】
読み出しアクセス要求位置がデータ交換位置より大きい（後方）場合には、要求されたデータは未だデータ交換が行われていない状態であるので、データアクセス部１０５はキャッシュ管理部１０６に指令してボリューム１２１の読み出しアクセス要求位置からデータを読み出し、ホスト１３２へ転送する（Ｓ７０４）。
【００７２】
読み出しアクセス要求位置がデータ交換位置より小さい（前方）場合には、要求されたデータは既にデータ交換済みであるので、データアクセス部１０５はキャッシュ管理部１０６に指令してボリューム１２２の読み出しアクセス要求位置からデータを読み出し、ホスト１３２へ転送する（Ｓ７０５）。
【００７３】
ホスト１３２からのアクセスはデータに対して行われるものであり、データ交換後に元のボリュームのデータにアクセスすると間違ったデータにアクセスすることになる。このため、ボリューム間でデータ交換が完了した後にホストから見えるボリュームの識別番号をボリューム間で入れ替えると、ホストからは同一の識別番号を用いてデータにアクセスすることが可能となり、ホストはボリューム間でデータが交換されたことを意識する必要は無い。
【００７４】
図７の処理では、データ交換中であっても、どちらのボリュームに該当するデータが格納されているかを判別して、アクセス要求に対応した正しいデータをホスト１３２に返すことができ、ホスト１３２からのアクセスを停止することなくボリューム間のデータ交換を実現することができる。
【００７５】
図８は、データ交換処理実行中にホスト１３２からボリューム１２１に対して読み出しまたは書き込みのアクセス要求が行われた場合のフローチャートを示している。
【００７６】
ステップ７０１では、データアクセス制御部１０４がホスト１３２からアクセスを要求されたデータ位置が、データ交換位置と等しいかを判定する。等しい場合はステップ７０２へ進み、等しくない場合はステップ７０３へ進む。
【００７７】
ステップ７０２では、データアクセス制御部１０４がキャッシュ領域１１１のデータに対してホスト１３２から要求されたアクセスを行い、その結果をホスト１３２へ転送する。
【００７８】
ステップ７０３では、ホスト１３２からアクセスを要求されたデータ位置が、データ交換位置より大きい（後方）かを判定する。大きい場合はステップ７０４へ進み、そうでない場合（前方）はステップ７０５へ進む。
【００７９】
ステップ７０４では、まだデータ交換が完了していないので、データアクセス制御部１０４がボリューム１２１のアクセス要求位置のデータに対してホスト１３２から要求されたアクセスを行い、その結果をホスト１３２へ転送する。
【００８０】
ステップ７０５では、既にデータ交換が完了しているので、ボリューム１２２のアクセス要求位置のデータに対してホスト１３２から要求されたアクセスを行い、その結果をホスト１３２へ転送する。
【００８１】
なお、データ交換処理が中断しているときに、アクセス要求があった場合も上記と同様であり、データ交換処理の中断中にはデータ交換位置情報１０３に中断時のデータ交換位置を保持しているので、アクセス要求のあったデータの位置と、データ交換位置情報１０３のデータ交換位置とを比較して上記ステップ７０１、７０３の判定に基づいて、ボリューム１２１またはボリューム１２２へアクセスすることができる。
【００８２】
＜第２実施形態＞
図９は第２の実施形態を示し、ボリュームのデータ交換要求（マイグレーション要求）が行われた際に、データコピー先のボリューム状態によって、ボリューム間のデータ交換処理とデータ移動処理を切り替える処理のフローチャートを示す。なお、この処理は、管理サーバ１３１からデータ交換要求があったときにマイグレーション制御部１０１で実行されるものである。
【００８３】
ホスト１３２はマイグレーション制御部１０１に対して、マイグレーションの移動元ボリュームとしてボリューム１２１を、移動先ボリュームとしてボリューム１２２を指定してマイグレーション要求を行う。
【００８４】
ステップ８０１では、マイグレーションの移動先として指定されたボリューム１２２の状態を見て、ボリューム１２２が使用中であるかどうかを判定する。ボリューム１２２が使用中である場合は、ステップ８０２に進む。ボリューム１２２が使用中でない場合は、ステップ８０３に進む。
【００８５】
ボリューム１２２が使用中であるかどうかを判定する方法は、例えばボリューム１２２がホスト１３２からアクセス可能な状態（アクセスパスの設定の有無等）に設定されているかどうかなどの方法を用いる。
【００８６】
ステップ８０２では、前述の方法によりボリューム１２１とボリューム１２２のボリューム間のデータ交換を行う。
【００８７】
ステップ８０３では、ボリューム１２１からボリューム１２２に対して単純にデータをコピーする方法により、データ移動を行う。
【００８８】
上記ステップ８０１から８０３は、移動先ボリュームが使用されていない場合には移動先ボリュームの内容を破棄してもよいという前提のもと、移動先ボリュームのデータを読み出して移動元ボリュームに書き込まないことによりボリュームに対するアクセスを減らし、マイグレーションにかかる時間を短縮するものである。
【００８９】
以上の処理により、ホスト１３２からデータ交換要求があっても、データ交換が不要な場合には、データ移動処理を実行する。つまり、データ交換先のボリュームのデータがホスト１３２で利用可能でない場合には、データ交換先のボリューム上のデータは不要なデータと判定し、交換元のデータをそのままデータ交換先のボリュームへ書き込むことにより、処理を高速に行うことが可能となる。
【００９０】
＜第３実施形態＞
図１０は第３の実施形態を示し、前記第１実施形態のマイグレーション制御部１０１にデータ交換処理の進捗状況を示す交換済み位置管理表９５０を付加したもので、その他の構成は前記第１実施形態と同様である。
【００９１】
交換済み位置管理表９５０は、ストレージ装置１００のメモリ１２上に設定された表であり、各行にはデータ交換処理を行うボリュームの領域毎に位置番号０〜ｎを設定し、各位置番号毎にデータ交換の完了（図中、「済」）、または未了（図中、「未」）の何れかを示す処理状態欄（図中、「交換済／未済」）を備える。
【００９２】
この交換済み位置管理表９５０は、データ交換を行うボリュームを、複数の領域に分割し、各領域毎に位置番号を付してデータ交換の状態（進捗状況）を管理する。ボリュームを分割する領域の大きさは、例えば、データ交換単位が望ましく、本実施形態ではデータ交換に使用するキャッシュ領域のサイズを、領域のサイズとする。つまり、データ交換を行うボリュームの先頭から、使用するキャッシュ領域のサイズで複数の領域に分割し、この分割数を位置番号とすればよい。
【００９３】
データ交換位置決定部１０２は、データ交換を行うボリュームのデータ領域を、所定のデータ交換単位（例えば、キャッシュ領域の容量）で区分けして、これら区分けした領域連続的な位置番号を設定し、データ交換処理の進行状況に応じて交換済み位置管理表９５０の位置番号として書き込む。そして、データ交換位置決定部１０２は、ひとつのデータ交換位置でデータ交換が完了すると、現在のデータ交換位置に対応する位置番号の処理状態欄に「済」を書き込む。データ交換位置決定部１０２は、交換済み位置管理表９５０で処理状態欄が「未」となっている位置番号を検索して、次のデータ交換位置を決定する。
【００９４】
次に、図１０を参照しながら、ボリューム内でデータ交換が完了している部分と未だ完了していない部分（領域）を交換済み位置管理表９５０で管理することにより、ボリューム内の位置を任意の順序でデータ交換するボリューム間のデータ交換の例を示す。
【００９５】
管理サーバ１３１からデータ交換要求（マイグレーション要求）が行われると（Ｓ９０１）、マイグレーション制御部１０１はキャッシュ管理部１０９にデータ交換用にキャッシュ領域を割り当てるよう指令する（Ｓ９０２）。
【００９６】
マイグレーション制御部１０１は、交換済み位置管理表９５０によりボリューム内の位置に対して、その位置のデータが既にデータ交換されているかどうかを管理しており、未交換位置の中から１つを選択して（Ｓ９０３）、選択した位置をデータ交換位置として決定し（Ｓ９０４）、位置情報をデータ交換位置情報１０３に記憶する（Ｓ９０５）。
【００９７】
その後、データ交換位置のデータをデータ交換用に割り当てたキャッシュ領域１１１、１１２を用いて図３で説明した処理で交換する（Ｓ９０６〜Ｓ９０９）。
【００９８】
最後に、データ交換を行った位置について、交換済み位置管理表９５０の該当位置をデータ交換完了済み状態に変更する。
【００９９】
このように、交換済み位置管理表９５０を用いることで、ボリューム内の任意の位置からデータ交換することが可能となり、ホスト１３２からのアクセス頻度の高い領域を優先してデータ交換する等の柔軟なデータ交換処理が可能となる。性能が異なるボリューム間でデータ交換処理を行う場合には、低性能なボリュームにおけるアクセス頻度が高い領域を優先してデータ交換を行うことが考えられる。この場合、アクセス頻度が高いデータが早期に高性能なボリュームへ移動するため、ホスト１３２からのＩ／Ｏアクセスが高性能なボリュームに対して行われる確率が高まり、Ｉ／Ｏアクセス性能が早期に改善される。
【０１００】
ボリューム上の任意の位置からデータ交換する場合に、データ交換位置を決定する手法として、以下に説明するように、ホスト１３２からのアクセスが行われた領域を優先してデータ交換することが考えられる。この手法では、ホスト１３２からのアクセスによりキャッシュ領域へ読み出されたデータを、そのままデータ交換に使用できるため、データ交換処理の処理速度の向上が期待できる。
【０１０１】
次に、図１１を参照しながら、ホスト１３２からのアクセスが行われた領域を優先してデータ交換する処理について説明を行う。
【０１０２】
図１１は、ボリューム１２１とボリューム１２２との間でデータ交換処理を実行している最中に、ホスト１３２からのボリューム１２２に対して読み出しアクセスが行われたときに、データ交換がどのように行われるかの概略を示している。
【０１０３】
ホスト１３２がデータアクセス制御部１０４へ読み出しアクセス要求を行うと（Ｓ１００１）、データアクセス制御部１０４は、データアクセス部１０５に指令してホスト１３２からの読み出しアクセス要求を処理する。
【０１０４】
データアクセス部１０５は、データ交換位置情報１０３に対して現在データ交換が行われているデータ交換位置を問い合わせる（Ｓ１００２）。
【０１０５】
読み出しアクセス要求位置がデータ交換位置と異なっていた場合、交換済み位置管理表９５０により、読み出しアクセス要求位置のデータ交換が既に完了しているかどうかを判定する（Ｓ１００３）。
【０１０６】
まだ読み出しアクセス要求位置のデータ交換が行われていない場合、データアクセス部１０５はデータコピー部１０８に、ボリューム１２２の読み出しアクセス要求位置のデータ４２２をキャッシュ領域１１３へ転送し（Ｓ１００４）、続けてキャッシュ領域１１３のデータをホスト１３２へ読み出しアクセスの結果として転送する（Ｓ１００５）。なお、キャッシュ領域１１３は、ホスト１３２からアクセス要求があったときに、キャッシュ領域予約部１０７が確保すればよい。
【０１０７】
データアクセス制御部１０４は、マイグレーション制御部１０１にアクセス位置を通知する（Ｓ１００６）。
【０１０８】
データ交換位置決定部１０２は、読み出しアクセス要求が行われた位置をデータ交換位置として決定し（Ｓ１００７）、データ交換位置情報１０３へ記憶する（Ｓ１００８）。
【０１０９】
次に、マイグレーション制御部１０１はボリューム１２１のデータ交換位置に存在するデータ４２１を、データコピー部１０８に指令してキャッシュ領域１１１へコピーする（Ｓ１００９）。
【０１１０】
次に、マイグレーション制御部１０１はキャッシュ領域１１１に存在するデータを、データコピー部１０８に指令してボリューム１２２のデータ交換位置４２２へコピーする（Ｓ１０１０）。同様に、キャッシュ領域１１３に存在するデータを、ボリューム１２１のデータ交換位置４２１へコピーする（Ｓ１０１２）。
【０１１１】
最後に、データ交換を行った位置について、交換済み位置管理表９５０の該当位置をデータ交換完了済み状態「済」に変更する。
【０１１２】
＜第４実施形態＞
図１２ａ〜図１６は。第４の実施形態を示し、３つのボリューム間でデータ移動処理を並列的に実行するものである。
【０１１３】
以下、図１２ａ、図１２ｂ、図１３、図１４、図１５を参照しながら、ボリューム１２１からボリューム１２２へのマイグレーションと、ボリューム１２２からボリューム１２３へマイグレーションという、２つのマイグレーション処理が並行して行われる動作を説明する。
【０１１４】
図１２ａは、ボリューム１２１からボリューム１２２へのマイグレーションと、ボリューム１２２からボリューム１２３へマイグレーションが平行して行われる処理の概略を示している。
【０１１５】
管理サーバ１３１はマイグレーション制御部１０１に対して、ボリューム１２１とボリューム１２２とボリューム１２３を指定してデータ移動要求（マイグレーション要求）を行う（Ｓ１１０１）。
【０１１６】
マイグレーション制御部１０１はマイグレーション要求を受け取ると、キャッシュ管理部１０６に指令して利用可能なキャッシュ領域１１１とキャッシュ領域１１２をデータ移動処理の作業用領域として予約する（Ｓ１１０２）。
【０１１７】
マイグレーション制御部１０１はデータ交換位置決定部１０２によりボリューム１２２からボリューム１２３へのデータ移動に関するデータ移動位置を決定し（Ｓ１１０３）、データ交換位置情報１０３へ記憶する（Ｓ１１０４）。ここで、データ交換位置情報１０３は、図１２ｂで示すように、データ移動の数に応じて複数のデータ交換位置を格納する。図１２ａのように、ボリューム１２１からボリューム１２２へのデータ移動位置（図１２ａの４２１、４２２）は、データ交換位置情報１０３の第１移動位置１０３１に格納され、ボリューム１２２からボリューム１２３へのデータ移動位置（図１２ａの４２３、４２４）は、データ交換位置情報１０３の第２移動位置１０３１に格納される。
【０１１８】
ここで、第１移動位置１０３１と第２移動位置１０３２は、互いに重ならないように設定され、例えば、第２移動位置＞第１移動位置のように設定される。
【０１１９】
次に、マイグレーション制御部１０１はボリューム１２２のデータ交換位置に存在するデータ４２３を、データコピー部１０８に指令してキャッシュ領域１１２へコピーする（Ｓ１１０５）。
【０１２０】
次に、マイグレーション制御部１０１はキャッシュ領域１１２に存在するデータを、データコピー部１０８に指令してボリューム１２３のデータ交換位置４２４へコピーする（Ｓ１１０６）。
【０１２１】
以上のＳ１１０３からＳ１１０６を繰り返すことにより、ボリューム１２２に格納されているデータがボリューム１２３へコピーされる。
【０１２２】
上記Ｓ１１０３からＳ１１０６を行うと同時に、以下のＳ１１０７からＳ１１１０を並行して実行する。
【０１２３】
マイグレーション制御部１０１はデータ交換位置決定部１０２によりボリューム１２１からボリューム１２２へのデータ移動に関するデータ移動位置を決定し（Ｓ１１０７）、データ交換位置情報１０３へ記憶する（Ｓ１１０８）。
【０１２４】
データ交換位置情報１０３では、Ｓ１１０４にて記憶されるデータ移動位置情報と、Ｓ１１０８にて記憶されるデータ交換位置情報は、互いに独立して記憶される。
【０１２５】
次に、ボリューム１２２のＳ１１０８にて記憶されたデータ移動位置のデータ４２２が既にボリューム１２３へ書き込まれているかどうかをチェックし、未だ書き込まれていない場合は一定時間待機する。
【０１２６】
これにより、ボリューム１２２のデータがボリューム１２３へ移動する前に上書きされてしまうことを防ぐ。
【０１２７】
次に、マイグレーション制御部１０１はボリューム１２１のデータ移動位置に存在するデータ４２１を、データコピー部１０８に指令してキャッシュ領域１１１へコピーする（Ｓ１１０９）。
【０１２８】
次に、マイグレーション制御部１０１はキャッシュ領域１１１に存在するデータを、データコピー部１０８に指令してボリューム１２２のデータ移動位置４２２へコピーする（Ｓ１１１０）。
【０１２９】
以上のＳ１１０７からＳ１１１０を繰り返すことにより、ボリューム１２１に格納されているデータがボリューム１２２へコピーされる。
【０１３０】
以上のＳ１１０３からＳ１１０６の繰り返しと、Ｓ１１０７からＳ１１１０の繰り返しが完了すると、ボリューム１２１に格納されていたデータがボリューム１２２に、ボリューム１２２に格納されていたデータがボリューム１２３へ移動が完了した状態となる。
【０１３１】
図１３は、ストレージ装置１００の各制御部で２つのマイグレーション処理を並行して行う処理におけるフローチャートを示している。
【０１３２】
ステップ１２０１では、マイグレーション制御部１０１がキャッシュ領域予約部１０７に指令して、データ移動処理の作業用に、キャッシュ領域の予約を行う。
【０１３３】
ステップ１２０２では、後述の通り、マイグレーション制御部１０１がボリューム１２１からボリューム１２２へのマイグレーションを行う。
【０１３４】
ステップ１２０３では、後述の通り、ボリューム１２２からボリューム１２３へのマイグレーションを行う。
【０１３５】
上記ステップ１２０２とステップ１２０３は同時に開始され、上記図１２ａで説明したように、ステップ１２０２とステップ１２０３が共に終了した時点で２つのマイグレーション処理も終了となる。
【０１３６】
以上により、図１２ａで示した２つのデータ移動処理を並列的に実行し、３つのボリューム間でデータの移動を並列的に行うことができ、データ移動処理を高速に実行することができる。
【０１３７】
図１４は、上記図１３のステップ１２０２で行われるボリューム１２１からボリューム１２２へのマイグレーション処理のフローチャートを示している。
【０１３８】
ステップ１３０１では、データ交換位置決定部１０２がデータ移動を行う位置を決定する。
【０１３９】
ステップ１３０２では、データコピー部１０８が、上記ステップ１３０１で決定したボリューム１２２におけるデータ移動位置のデータが、ボリューム１２３へ既に書き込まれているかを判定する。この判定は、前記第１実施形態で示したように、データ交換位置情報１０３を読み込んで、現在のデータ移動位置と比較する。ボリューム１２２のデータ移動位置のデータが既に書き込まれている場合はステップ１３０３へ進む。未だ書き込まれていない場合はステップ１３０６へ進む。
【０１４０】
ステップ１３０３では、データコピー部１０８がボリューム１２１からデータ移動位置のデータをキャッシュ領域１１１へコピーする。
【０１４１】
ステップ１３０４では、データコピー部１０８がキャッシュ領域１１１からボリューム１２２のデータ移動位置４２２へデータをコピーする。
【０１４２】
ステップ１３０５では、マイグレーション制御部１０１が、ボリューム１２１の全データのコピーが完了したかを判定し、まだコピーしていないデータが存在する場合はステップ１３０１へ戻る。また、コピーしていないデータが存在しない場合は、ボリューム１２１からボリューム１２２へのマイグレーション処理を終了する。
【０１４３】
ステップ１３０６では、マイグレーション制御部１０１が一定時間待った後にステップ１３０２へ戻る。
【０１４４】
上記ステップ１３０１〜１３０６を繰り返して実行することにより、ボリューム１２２からボリューム１２３へのデータ移動処理を待ってからボリューム１２１からボリューム１２２へのデータ移動処理が行われる。
【０１４５】
図１５は、上記図１３のステップ１２０３で行われるボリューム１２２からボリューム１２３へのマイグレーション処理のフローチャートを示している。
【０１４６】
ステップ１４０１では、データ交換位置決定部１０２がデータ移動を行う位置を決定する。
ステップ１４０２では、データコピー部１０８が、上記ボリューム１２２からデータ移動位置のデータをキャッシュ領域１１２へコピーする。
【０１４７】
ステップ１４０３では、データコピー部１０８が、キャッシュ領域１１２からボリューム１２３のデータ移動位置へデータをコピーする。
【０１４８】
ステップ１４０４では、マイグレーション制御部１０１がボリューム１２２の全データのコピーが完了したかを判定し、まだコピーしていないデータが存在する場合はステップ１４０１へ戻る。また、コピーしていないデータが存在しない場合は、ボリューム１２２からボリューム１２３へのマイグレーション処理を終了する。
【０１４９】
次に、図１６、図１７を参照しながら、２つのマイグレーション処理が並行して行われる場合にホスト１３２からボリューム１２１へＩ／Ｏアクセスが行われた場合の動作を説明する。
【０１５０】
図１６は、ボリューム１２１からボリューム１２２へのマイグレーションと、ボリューム１２２からボリューム１２３へマイグレーションという、２つのマイグレーション処理が並行して行われている場合において、ホスト１３２からボリューム１２１に対して読み出しアクセス要求が行われた場合の処理の概略を示している。
【０１５１】
ホスト１３２はデータアクセス制御部１０４に対して、ボリューム１２１と読み出しアクセス要求位置を指定して、読み出しアクセス要求を行う（Ｓ１５０１）。データアクセス制御部１０４は、データアクセス部１０５に指令してホスト１３２からの読み出しアクセス要求を処理する。
【０１５２】
データアクセス部１０５は、データ交換位置情報１０３に対してボリューム１２１からボリューム１２２へのマイグレーションについて、現在データ移動が行われているデータ移動位置を問い合わせる（Ｓ１５０２）。読み出しアクセス要求位置がデータ交換位置情報１０３のデータ移動位置と等しい場合は、データアクセス部１０５はキャッシュ管理部１０６に指令してキャッシュ領域１１１からデータを読み出し、ホスト１３２へ転送する（Ｓ１５０３）。
【０１５３】
読み出しアクセス要求位置がデータ移動位置より大きい場合には、要求されたデータは未だデータ移動が行われていない状態であるので、データアクセス部１０５はキャッシュ管理部１０６に指令してボリューム１２１の読み出しアクセス要求位置からデータを読み出し、ホスト１３２へ転送する（Ｓ１５０４）。
【０１５４】
読み出しアクセス要求位置がデータ移動位置より小さい場合には、要求されたデータは既にデータ移動済みであるので、データアクセス部１０５はキャッシュ管理部１０６に指令してボリューム１２２の読み出しアクセス要求位置からデータを読み出し、ホスト１３２へ転送する（Ｓ１５０５）。
【０１５５】
図１７は、ボリューム１２１からボリューム１２２へのマイグレーションと、ボリューム１２２からボリューム１２３へマイグレーションという、２つのマイグレーション処理が並行して行われている場合において、ホスト１３２からボリューム１２１に対して読み出しまたは書き込みのアクセス要求が行われたとき、データアクセス部１０５を主体にして行われる処理のフローチャートを示している。
【０１５６】
ステップ１６０１では、データアクセス部１０５は、ホスト１３２からアクセスを要求されたデータ位置が、ボリューム１２１からボリューム１２２へのマイグレーションについてのデータ移動位置と等しいかを判定する。等しい場合はステップ１６０２へ進み、等しくない場合はステップ１６０３へ進む。
【０１５７】
ステップ１６０２では、データコピー部１０８が、キャッシュ領域１１１のデータに対してホスト１３２から要求されたアクセスを行い、その結果をホスト１３２へ転送する。
【０１５８】
ステップ１６０３では、データアクセス部１０５は、ホスト１３２からアクセスを要求されたデータ位置が、データ交換位置より大きいかを判定する。大きい場合はステップ１６０４へ進み、そうでない場合はステップ１６０５へ進む。
【０１５９】
ステップ１６０４では、データコピー部１０８がボリューム１２１のアクセス要求位置のデータに対してホスト１３２から要求されたアクセスを行い、その結果をホスト１３２へ転送する。
【０１６０】
ステップ１６０５では、データコピー部１０８がボリューム１２２のアクセス要求位置のデータに対してホスト１３２から要求されたアクセスを行い、その結果をホスト１３２へ転送する。
【０１６１】
上記の処理は、ボリューム１２１からボリューム１２２へのマイグレーションと、ボリューム１２２からボリューム１２３へマイグレーションという、２つのマイグレーション処理が並行して行われている場合において、ホスト１３２からボリューム１２２に対して読み出しまたは書き込みのアクセス要求が行われた場合にも当てはめることができる。
【０１６２】
すなわち、アクセス要求位置がデータ交換位置と等しい場合には、キャッシュ領域１１２にアクセスし、アクセス要求位置がデータ交換位置より大きい場合には、ボリューム１２２にアクセスし、アクセス要求位置がデータ交換位置より小さい場合には、ボリューム１２３にアクセスする。
【０１６３】
なお、上記第４実施形態において、ボリューム１２３のデータをボリューム１２１に移動する場合では、３つのキャッシュ領域１１１と１１２、１１３を用いて、前記第１実施形態と同様にデータ交換処理を行うことができる。すなわち、ボリューム１２１からボリューム１２２へのデータ移動処理と、ボリューム１２２からボリューム１２３へのデータ移動処理と、ボリューム１２３からボリューム１２１へのデータ移動処理を、同一のデータ交換位置について同時に行うことで、３つのボリューム間でのデータ交換処理をキャッシュ領域を用いて高速に実現できる。
【０１６４】
＜第５実施形態＞
図１８は第５の実施形態を示し、前記第１実施形態のキャッシュ領域のサイズを動的に変更可能としたものである。
【０１６５】
図１に示したキャッシュ管理部１０９は、データ交換処理またはデータ移動位置の開始時に、データアクセス制御部１０４よりホスト１３２からのＩ／Ｏアクセスの量を取得し、Ｉ／Ｏアクセスの量が多いときには、ひとつのキャッシュ領域１１１をボリューム１２１のデータ交換用の一時領域に割り当てる。一方、キャッシュ管理部１０９は、Ｉ／Ｏアクセスの量が少ないときには、キャッシュ領域１１１、１１３をボリューム１２１のデータ交換用の一時領域に割り当てる。なお、キャッシュ管理部１０６は、データ交換用に割り当てたキャッシュ領域のサイズをマイグレーション制御部１０１に通知する。
【０１６６】
これにより、Ｉ／Ｏアクセスの量が多いときには、必要最低限のキャッシュ領域によりストレージ装置１００のＩ／Ｏアクセス性能の低下を抑制してデータ交換を行う。一方、Ｉ／Ｏアクセスの量が少ないときには、より多くのキャッシュ領域をデータ交換処理に割り当てることで、一回に読み書きする交換用データ４２１のサイズを大きくすることができ、データ交換処理の処理速度を向上できる。
【０１６７】
なお、図１８においては、キャッシュ領域に設定した複数のキャッシュ領域１１１〜１１６からデータ交換処理に割り当てるキャッシュ領域の数を変更する例を示したが、キャッシュ領域１１１のサイズを変更するようにしても良い。
【０１６８】
＜まとめ＞
以上のように、本発明に係るマイグレーションでは、移動先ボリュームに利用中のデータが格納されている場合に、ディスクキャッシュやＲＡＩＤキャッシュにデータを一旦コピーし、移動元と移動先のデータをボリュームにそれぞれ書き込むことで、退避用ボリュームを用意することなくデータ交換処理を高速に実現できる。
【０１６９】
なお、上記実施形態では、ストレージ装置１００のメモリ上に設定したキャッシュ領域を用いて、複数のボリューム間でデータ交換処理やデータ移動処理を行う例を示したが、サーバ計算機内のＲＡＩＤキャッシュを用いて上述のようなマイグレーションを行うようにしても良い。つまり、ＲＡＩＤコントローラとＲＡＩＤキャッシュを備えたサーバ計算機では、ＲＡＩＤコントローラを本発明の制御部１１００として機能させ、ＲＡＩＤキャッシュをキャッシュ領域１１１〜１１６として機能させればよい。
【０１７０】
なお、上記第１の実施形態では、一つのメモリ１２にキャッシュ領域とＣＰＵ１１が実行する制御プログラムを格納したが、キャッシュ領域を物理的に異なるメモリに設定してもよい。この場合、キャッシュ領域を含むメモリをデータ転送コントローラ１３に接続することができる。
【産業上の利用可能性】
【０１７１】
本発明によればディスクキャッシュやＲＡＩＤキャッシュを備えたストレージ装置のデータマイグレーションに適用することができる。
【図面の簡単な説明】
【０１７２】
【図１】本発明の第１の実施形態を示すシステム構成図。
【図２】ストレージ装置を中心とするハードウェアの構成図。
【図３】キャッシュ領域を用いたボリューム間のデータ交換の様子を示す説明図。
【図４】キャッシュ領域を用いたボリューム間のデータ交換のフローチャート。
【図５】データ交換位置を決定する処理のフローチャート。
【図６】データ交換中断後にデータ交換開始前の状態に戻す処理における、データ交換位置を決定する処理のフローチャート。
【図７】データ交換処理中にデータアクセスが行われた際の処理の様子を示す説明図。
【図８】データ交換処理中のデータアクセス処理のフローチャート。
【図９】第２の実施形態を示し、移動先ボリュームの状態によりデータ移動方法を切り替えるフローチャート。
【図１０】第３の実施形態を示し、交換済み位置管理表を用いて任意の順序でデータ交換を行う様子を示す説明図。
【図１１】データアクセスを契機としてデータ交換を行う様子を示した説明図。
【図１２ａ】第４の実施形態を示し、キャッシュ領域を利用して複数のボリューム間でデータ移動処理を行う様子を示す説明図。
【図１２ｂ】複数のデータ移動位置を管理するデータ交換位置情報の一例を示す説明図。
【図１３】キャッシュ領域を利用して複数のボリューム間でデータ移動を行う処理のフローチャート。
【図１４】第１の移動先へのデータ移動処理のフローチャート。
【図１５】第２の移動先へのデータ移動処理のフローチャート。
【図１６】複数のデータ移動処理中に、移動元ボリュームへデータアクセスが行われた際の処理の様子を示す説明図。
【図１７】複数のデータ移動処理中に、移動元ボリュームへのデータアクセス処理のフローチャート。
【図１８】第５の実施形態を示し、キャッシュ領域のサイズを動的に変更する様子を示す説明図。
【符号の説明】
【０１７３】
１００  ストレージ装置
１０１  マイグレーション制御部
１０２  データ交換位置決定部
１０３  データ交換位置情報
１０４  データアクセス制御部
１０６  キャッシュ管理部
１１１〜１１６  キャッシュ領域
１３１  管理サーバ
１３２  ホスト
【図１】
2007108981.tif 000003
【図２】
2007108981.tif 000004
【図３】
2007108981.tif 000005
【図４】
2007108981.tif 000006
【図５】
2007108981.tif 000007
【図６】
2007108981.tif 000008
【図７】
2007108981.tif 000009
【図８】
2007108981.tif 000010
【図９】
2007108981.tif 000011
【図１０】
2007108981.tif 000012
【図１１】
2007108981.tif 000013
【図１２ａ】
2007108981.tif 000014
【図１２ｂ】
2007108981.tif 000015
【図１３】
2007108981.tif 000016
【図１４】
2007108981.tif 000017
【図１５】
2007108981.tif 000018
【図１６】
2007108981.tif 000019
【図１７】
2007108981.tif 000020
【図１８】
2007108981.tif 000021