(57)【要約】【課題】オフロードデータ転送機能に対応して、領域解放時の資源消費の効率を改善する。【解決手段】情報処理装置１は、制御部３を備え、ホストコンピュータ１３からオフロードデータ転送指示を受け付けて、転送元情報生成処理４で転送元情報４ａを生成する。制御部３は、予約状態生成処理５で、解放領域１１の領域解放の指示を受け付けた場合に、解放指示に対する完了応答をおこなってから重複領域１２の解放を予約する予約状態５ａを生成する。制御部３は、留保状態判定処理６で、転送元情報４ａを用いたデータ転送の実行可能性がある留保状態を判定する。制御部３は、領域解放処理７で、留保状態が解除された場合に、予約状態５ａによって解放が予約された重複領域１２を解放する。【選択図】図１
2014048835.tif 000002
【特許請求の範囲】
【請求項１】
オフロードデータ転送指示を受信する受信部と、
前記オフロードデータ転送指示にもとづいて、転送元領域に関する転送元情報を生成し、
前記転送元領域と重複する領域の解放指示を受け付けた場合に、前記解放指示に対する完了応答をおこなってから前記領域の解放を予約する予約状態を生成し、
前記転送元情報を用いたデータ転送が留保された留保状態を判定し、
前記留保状態が解除された場合に、前記予約状態の前記領域を解放する、
処理をおこなう制御部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記制御部は、前記予約状態の前記領域の情報を更新する場合に、前記留保状態を解除する処理をおこなうことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記制御部は、前記予約状態の前記領域に対してライトＩ／Ｏが発行された場合に、前記留保状態を解除する処理をおこなうことを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記制御部は、前記転送元情報が無効になった場合に、前記留保状態を解除する処理をおこなうことを特徴とする請求項１記載の情報処理装置。
【請求項５】
前記制御部は、前記転送元情報に設定した有効期限が切れた場合に、前記転送元情報を無効とすることを特徴とする請求項４記載の情報処理装置。
【請求項６】
前記制御部は、前記解放指示が前記転送元情報の生成より後の場合に、前記転送元情報にもとづく転送指示について、前記転送元領域に記録されているデータを転送対象とする処理をおこなうことを特徴とする請求項１乃至請求項５のいずれか１項記載の情報処理装置。
【請求項７】
前記制御部は、前記解放指示が前記転送元情報の生成より前の場合に、前記転送元情報にもとづく転送指示について、クリアデータを転送対象とする処理をおこなうことを特徴とする請求項６記載の情報処理装置。
【請求項８】
前記制御部は、前記解放指示と、前記転送元情報の生成の先後関係を特定可能な先後関係特定情報を、記憶部に保持することを特徴とする請求項７記載の情報処理装置。
【請求項９】
前記制御部は、前記転送元領域を有する転送元ボリュームごとに先後関係特定情報を保持することを特徴とする請求項８記載の情報処理装置。
【請求項１０】
コンピュータに、
オフロードデータ転送指示を受け付けて、転送元領域に関する転送元情報を生成し、
前記転送元領域と重複する領域の解放指示を受け付けた場合に、前記解放指示に対する完了応答をおこなってから前記領域の解放を予約する予約状態を生成し、
前記転送元情報を用いたデータ転送が留保された留保状態を判定し、
前記留保状態が解除された場合に、前記予約状態の前記領域を解放する、
処理を実行させることを特徴とする領域解放制御プログラム。
【請求項１１】
コンピュータが、
オフロードデータ転送指示を受け付けて、転送元領域に関する転送元情報を生成し、
前記転送元領域と重複する領域の解放指示を受け付けた場合に、前記解放指示に対する完了応答をおこなってから前記領域の解放を予約する予約状態を生成し、
前記転送元情報を用いたデータ転送が留保された留保状態を判定し、
前記留保状態が解除された場合に、前記予約状態の前記領域を解放する、
ことを特徴とする領域解放制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、領域解放制御プログラム、および領域解放制御方法に関する。
【背景技術】
【０００２】
ストレージ装置は、ホストコンピュータに対して仮想的なボリューム（論理ボリューム）を認識させることにより、必要に応じてストレージプールからストレージ資源を論理ボリュームに割り当てる。また、ストレージ装置は、不要となった領域を解放して、ストレージプールにストレージ資源を返却する。
【０００３】
このようにして、ストレージ装置は、ストレージ装置内の資源利用の効率化を図っている。
また、ホストコンピュータがおこなうファイルのコピーや移動に伴う負荷をストレージ装置にオフロードさせることで、ホストコンピュータのＣＰＵ（Central Processing Unit）負荷や、ホストコンピュータとストレージ装置間の通信負荷を軽減するオフロードデータ転送機能がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１３００８０号公報
【特許文献２】特開２０１１−７６５７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
オフロードデータ転送機能の実行中に、論理ボリュームの領域解放を受け付けると、ストレージ装置は、オフロードデータ転送の対象となるデータを喪失するおそれがある。そのため、ストレージ装置は、領域解放の対象となるデータを退避用ボリュームに退避させることが求められる。
【０００６】
しかしながら、退避用ボリュームへの退避は、退避処理にかかる処理時間や、メモリの大量消費など非効率的な対処である。
１つの側面では、本発明は、オフロードデータ転送機能に対応して、領域解放時の資源消費の効率を改善する情報処理装置、領域解放制御プログラム、および領域解放制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、以下に示すような、情報処理装置が提供される。情報処理装置は、受信部と、制御部を備える。受信部は、オフロードデータ転送指示を受信する。制御部は、オフロードデータ転送指示にもとづいて、転送元領域に関する転送元情報を生成し、転送元領域と重複する領域の解放指示を受け付けた場合に、解放指示に対する完了応答をおこなってから領域の解放を予約する予約状態を生成し、転送元情報を用いたデータ転送が留保された留保状態を判定し、留保状態が解除された場合に、予約状態の領域を解放する、処理をおこなう。
【０００８】
また、上記目的を達成するために、以下に示すような、領域解放制御プログラム、および領域解放制御方法が提供される。領域解放制御プログラム、および領域解放制御方法は、以下に示すような処理をコンピュータに実行させる。コンピュータは、オフロードデータ転送指示を受け付けて、転送元領域に関する転送元情報を生成し、転送元領域と重複する領域の解放指示を受け付けた場合に、解放指示に対する完了応答をおこなってから領域の解放を予約する予約状態を生成し、転送元情報を用いたデータ転送が留保された留保状態を判定し、留保状態が解除された場合に、予約状態の領域を解放する。
【発明の効果】
【０００９】
１態様によれば、情報処理装置、領域解放制御プログラム、および領域解放制御方法において、オフロードデータ転送機能に対応して、領域解放時の資源消費の効率を改善する。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態の情報処理装置の構成例を示す図である。
【図２】第２の実施形態のストレージ装置の接続例を示す図である。
【図３】第２の実施形態のストレージ装置の構成例を示す図である。
【図４】第２の実施形態の論理ボリュームへの物理資源割当を示す図である。
【図５】第２の実施形態の論理ボリュームからの物理資源解放を示す図である。
【図６】第２の実施形態のオフロードデータ転送のコピー動作の一例を示す図である。
【図７】第２の実施形態のオフロードデータ転送時のオフロードリード処理のシーケンス図である。
【図８】第２の実施形態のコマンド発行順リストの一例を示す図である。
【図９】第２の実施形態のオフロードデータ転送時のオフロードライト処理のシーケンス図である。
【図１０】第２の実施形態のセッション管理テーブルの一例を示す図である。
【図１１】第２の実施形態の転送元領域の領域解放動作の一例を示す図である。
【図１２】第２の実施形態の転送元領域の領域解放予約状態の一例を示す図である。
【図１３】第２の実施形態の転送元領域のデータ退避の一例を示す図である。
【図１４】第２の実施形態のデータが退避されている場合のコピー動作の一例を示す図である。
【図１５】第２の実施形態の期限管理処理のフローチャートを示す図である。
【図１６】第２の実施形態のＵＮＭＡＰコマンド応答処理のフローチャートを示す図である。
【図１７】「ＰＴ」コマンドの発行の後に、「ＵＮＭＡＰ」コマンドの発行があった転送元ボリュームの一例を示す図である。
【図１８】「ＵＮＭＡＰ」コマンドの発行の後に、「ＰＴ」コマンドの発行があった転送元ボリュームの一例を示す図である。
【図１９】「ＵＮＭＡＰ」コマンドに前後する「ＰＴ」コマンドの発行があった場合の、データコピーの一例を示す図である。
【図２０】第２の実施形態のＷＵＴコマンド応答処理のフローチャートを示す図である。
【発明を実施するための形態】
【００１１】
以下、実施の形態を図面を参照して詳細に説明する。
［第１の実施形態］
まず、第１の実施形態の情報処理装置について図１を用いて説明する。図１は、第１の実施形態の情報処理装置の構成例を示す図である。
【００１２】
情報処理装置１は、ストレージデバイス（記憶デバイス）９のアクセス制御をおこなう制御装置であり、ストレージデバイス９とともにストレージ装置を構成する。ストレージデバイス９は、所要の情報を記録可能であり、たとえば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive:フラッシュメモリドライブ）などである。
【００１３】
情報処理装置１は、ホストコンピュータ１３と通信可能に接続する。ホストコンピュータ１３は、たとえば、図示しない操作端末装置に対してサーバ機能を提供する。情報処理装置１は、ホストコンピュータ１３から指示（オフロードデータ転送指示や、解放指示、その他Ｉ／Ｏコマンドなど）を受け付ける。オフロードデータ転送指示は、トークンを介することにより、ホストコンピュータ１３が転送対象となるデータをリード／ライトすることなしに、ストレージ装置内部、あるいはストレージ装置間でデータ転送をおこなうコマンドである。なお、トークンは、データ転送に関する制御情報である。データ転送は、データのコピー、データの移動を含み、転送するデータは、たとえば、ファイル単位、ボリューム単位など任意の単位とすることができる。また、解放指示は、ストレージデバイス９の論理ボリューム１４への割当を解放するコマンドである。
【００１４】
情報処理装置１は、受信部２と、制御部３を備える。受信部２は、ホストコンピュータ１３からオフロードデータ転送指示や解放指示などのコマンドを受信する。制御部３は、転送元情報生成処理４と、予約状態生成処理５と、留保状態判定処理６と、領域解放処理７とをおこなう。
【００１５】
転送元情報生成処理４は、ホストコンピュータ１３から受信したオフロードデータ転送指示にもとづいて、ストレージデバイス９の転送元領域１０に関する転送元情報４ａを生成する処理である。ホストコンピュータ１３は、オフロードデータ転送指示とともに論理ボリューム１４の転送元領域１５を通知する。情報処理装置１は、転送元情報生成処理４において、転送元領域１５に対応する転送元領域１０を特定して、転送元情報４ａを生成する。転送元情報４ａは、オフロードデータ転送指示が指示する転送元を特定可能な情報を含む。転送元情報４ａは、たとえば、トークンと呼ばれる情報である。
【００１６】
予約状態生成処理５は、転送元領域１０と重複する重複領域１２を含む、解放領域１１の領域解放の指示（解放指示）を受け付けた場合に、解放指示に対する完了応答をおこなってから重複領域１２の解放を予約する予約状態５ａを生成する処理である。なお、解放を予約する領域は、重複領域１２を含む解放領域１１であってもよい。ホストコンピュータ１３は、解放指示とともに論理ボリューム１４の解放領域１６を通知する。情報処理装置１は、予約状態生成処理５において、解放領域１６に対応する解放領域１１を特定して、転送元領域１０と重複する重複領域１２を特定することができる。
【００１７】
留保状態判定処理６は、留保状態を判定する処理である。留保状態は、転送元情報４ａを用いたデータ転送が留保された状態である。データ転送が留保された状態とは、転送元情報４ａを用いたデータ転送の実行可能性がある状態である。すなわち、情報処理装置１は、留保状態においては、転送元情報４ａを用いたデータ転送に備え、転送元領域１０のデータの保持が求められる。
【００１８】
領域解放処理７は、留保状態が解除された場合に、予約状態５ａによって解放が予約された重複領域１２（予約状態の領域）を解放する処理である。
これにより、情報処理装置１は、重複領域１２の解放を、解放指示と非同期におこなうことができる。また、情報処理装置１は、留保状態が解除されるまで、重複領域１２の領域解放をおこなわないので、転送元情報４ａを用いたデータ転送に備えて重複領域１２のデータを保持することができる。このように、情報処理装置１は、重複領域１２のデータを退避領域に退避することなく、転送元情報４ａを用いたデータ転送に備えることができるので、データ退避に要する処理時間やメモリ領域などの資源消費を要しない。したがって、情報処理装置１は、オフロードデータ転送機能に対応して、領域解放時の資源消費の効率を改善することができる。
【００１９】
［第２の実施形態］
次に、第２の実施形態のストレージ装置の接続例について図２を用いて説明する。図２は、第２の実施形態のストレージ装置の接続例を示す図である。
【００２０】
ストレージ装置２０は、ネットワーク３３を介してホストコンピュータ３０と通信可能に接続する。ネットワーク３３は、１または複数のストレージ装置２０と、１または複数のホストコンピュータ３０が接続するＳＡＮ（Storage Area Network）である。
【００２１】
ストレージ装置２０ａは、ネットワーク３３ａを介してホストコンピュータ３０ａと通信可能に接続し、ストレージ装置２０ｂ，２０ｃ，２０ｄ，２０ｅは、ネットワーク３３ｂを介してホストコンピュータ３０ｂと通信可能に接続する。また、ストレージ装置２０ａ，２０ｂ，２０ｃ，２０ｄ，２０ｅは、ネットワーク３４を介して通信可能に接続する。ネットワーク３４は、たとえば、ストレージ装置専用のネットワークである。
【００２２】
ホストコンピュータ３０ａは、ネットワーク３２を介して操作端末装置３１と通信可能に接続する。ネットワーク３２は、１または複数のホストコンピュータ３０と、１または複数の操作端末装置３１が接続するＬＡＮ（Local Area Network）、またはＷＡＮ（Wide Area Network）である。
【００２３】
ストレージ装置２０は、各ストレージ装置２０が制御対象とするストレージデバイス内でローカルコピーをおこなうことができる他、任意のストレージ装置２０との間でリモートコピーをおこなうことができる。ホストコンピュータ３０は、任意のストレージ装置２０に対してローカルコピーあるいはリモートコピーを指示できる。ホストコンピュータ３０は、任意のストレージ装置２０に対してローカルコピーあるいはリモートコピーを指示する場合に、オフロードデータ転送を指示することができる。
【００２４】
次に、第２の実施形態のストレージ装置について図３を用いて説明する。図３は、第２の実施形態のストレージ装置の構成例を示す図である。
ストレージ装置２０は、チャネルアダプタ２６と、リモートアダプタ２７と、コントローラモジュール２１と、ストレージデバイス２５を備える。ストレージデバイス２５は、複数備えられることで、ＲＡＩＤ（Redundant Array of Inexpensive Disks）を構成する。ストレージデバイス２５は、ユーザデータや制御情報（後述するセッション管理テーブルなど）を格納する。
【００２５】
コントローラモジュール２１は、ストレージデバイス２５のアクセス制御をおこなう情報処理装置の１つである。コントローラモジュール２１がおこなうストレージデバイス２５のアクセス制御は、ストレージデバイス２５をデータ転送元あるいはデータ転送先とするデータ転送制御を含む。
【００２６】
ストレージ装置２０は、コントローラモジュール２１ａとコントローラモジュール２１ｂの２つのコントローラモジュール２１を備える。コントローラモジュール２１ａとコントローラモジュール２１ｂは、ディスクアダプタ２４を介して、それぞれが制御対象とするストレージデバイス２５と接続する。コントローラモジュール２１ａとコントローラモジュール２１ｂは、相互に接続する。
【００２７】
なお、ストレージ装置２０は、２つのコントローラモジュール２１を備えるが、これに限らず、コントローラモジュール２１ａとコントローラモジュール２１ｂのいずれか一方を備えるものであってもよい。また、ストレージ装置２０ａは、３つ以上のコントローラモジュール２１を備えるものであってもよく、たとえば、４つあるいは８つのコントローラモジュール２１を備えるものであってもよい。
【００２８】
ストレージ装置２０は、チャネルアダプタ２６を介してホストコンピュータ３０と接続する。チャネルアダプタ２６は、コントローラモジュール２１毎に備えられる。コントローラモジュール２１は、チャネルアダプタ２６を複数（たとえば、２つ）備えるものであってもよく、複数のチャネルアダプタ２６により複数系統でホストコンピュータ３０と接続することができる。
【００２９】
ストレージ装置２０は、リモートアダプタ２７を介して他のストレージ装置２０と接続する。リモートアダプタ２７は、コントローラモジュール２１毎に備えられる。
コントローラモジュール２１は、ＣＰＵ２２、メモリ２３、ディスクアダプタ２４を備える。ＣＰＵ２２は、転送制御、領域割当制御や領域解放制御などをおこなう。
【００３０】
メモリ２３は、ストレージデバイス２５からデータを読み出したときにデータを保持するほか、ストレージデバイス２５にデータを書き込むときのバッファとなる。また、メモリ２３は、ユーザデータや制御情報を格納する。ディスクアダプタ２４は、ストレージデバイス２５とのインタフェース制御（アクセス制御）をおこなう。
【００３１】
このようなストレージ装置２０は、コントローラモジュール２１が制御対象とするストレージデバイス２５におけるデータの転送制御をおこなうことができる。
なお、コントローラモジュール２１は、ＣＰＵ２２によって装置全体が制御されている。ＣＰＵ２２には、図示しないバスを介してメモリ２３が接続されている。また、ＣＰＵ２２には、図示しないバスを介して図示しない周辺機器が接続あるいは、接続可能になっている。ＣＰＵ２２は、プロセッサの一例であって、たとえばＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）であってもよい。また、ＣＰＵ２２は、シングルプロセッサに限らず、マルチプロセッサであってもよい。またＣＰＵ２２は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００３２】
メモリ２３は、ＲＡＭ（Random Access Memory）や不揮発性メモリによって構成される。ＲＡＭは、コントローラモジュール２１の主記憶装置として使用される。ＲＡＭには、ＣＰＵ２２に実行させるＯＳ（Operating System）のプログラムやファームウェア、アプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭには、ＣＰＵ２２による処理に必要な各種データが格納される。
【００３３】
不揮発性メモリは、ストレージ装置２０の電源遮断時において記憶内容を保持する。不揮発性メモリは、たとえば、ＥＥＰＲＯＭやフラッシュメモリなどの半導体記憶装置や、ＨＤＤなどである。また、不揮発性メモリは、コントローラモジュール２１の補助記憶装置として使用される。不揮発性メモリには、ＯＳのプログラムやファームウェア、アプリケーションプログラム、および各種データが格納される。
【００３４】
バスに接続される周辺機器としては、入出力インタフェース、および通信インタフェースがある。
入出力インタフェースは、ＨＤＤなどの入出力装置と接続して入出力をおこなう。入出力インタフェースは、ＨＤＤなどの記憶装置から送られてくる信号やデータをＣＰＵ２２やキャッシュメモリ（メモリ２３）に送信する。また、入出力インタフェースは、たとえば、ＣＰＵ２２から受信した信号を、他の制御部や、コントローラモジュール２１と接続する出力装置に出力する。
【００３５】
通信インタフェースは、ストレージ装置２０内の他のコントローラモジュール２１との間でデータの送受信をおこなう。
以上のようなハードウェア構成によって、第２の実施形態のコントローラモジュール２１の処理機能を実現することができる。なお、ホストコンピュータ３０の他、第１の実施形態に示した情報処理装置１も、コントローラモジュール２１と同様のハードウェアにより実現することができる。
【００３６】
次に、第２の実施形態の領域割当（物理資源割当）と領域解放（物理資源解放）について図４および図５を用いて説明する。図４は、第２の実施形態の論理ボリュームへの物理資源割当を示す図である。
【００３７】
ストレージ装置２０は、ストレージデバイス２５の物理容量にかかわらず、仮想的に利用可能な容量を設定可能なシン・プロビジョニング機能を有する。ストレージ装置２０は、ホストコンピュータ３０に対して仮想的なボリュームである論理ボリューム５０を認識させる。ストレージ装置２０は、ホストコンピュータ３０からＷｒｉｔｅ Ｉ／Ｏが発行されると、ストレージプール５１からのストレージ資源を論理ボリューム５０に割り当てる物理資源割当（領域割当）を実行する。ストレージプール５１は、ストレージ装置２０が複数のストレージデバイス２５を管理する単位である。たとえば、図４に示す論理ボリューム５０は、領域５２，５３に対するＷｒｉｔｅ Ｉ／Ｏを受け付けて、ストレージプール５１から物理資源の割当を受けている。
【００３８】
図５は、第２の実施形態の論理ボリュームからの物理資源解放を示す図である。ストレージ装置２０は、物理資源割当後に未使用となった領域に対して、「ＵＮＭＡＰ」（領域解放）コマンドを発行して、物理資源の解放をおこなうことができる。「ＵＮＭＡＰ」コマンドは、ファイルシステムで不必要となった領域の物理資源解放をおこなうコマンドである。たとえば、図５に示す論理ボリューム５０は、未使用となった領域５２に対して「ＵＮＭＡＰ」コマンドを発行して、物理資源を解放し、ストレージプール５１に物理資源を返却する。
【００３９】
次に、第２の実施形態のＣＰＵ２２が実行するオフロードデータ転送のコピー動作について図６を用いて説明する。図６は、第２の実施形態のオフロードデータ転送のコピー動作の一例を示す図である。
【００４０】
ホストコンピュータ３０は、操作端末装置３１のファイルコピーを指示する操作を契機にオフロードデータ転送を実行する。ホストコンピュータ３０は、たとえば、操作端末装置３１に対して図４または図５に示すようなＴＰＶ（Thin Provisioning Volume：論理ボリューム）４１，４４を含む論理イメージ４０を提供する。たとえば、操作端末装置３１がＴＰＶ４１のファイル４２をＴＰＶ４４にファイル４５としてコピーするファイルコピー指示４３をおこなう。
【００４１】
ファイルコピー指示４３を受け付けたホストコンピュータ３０は、ストレージ装置２０に対して「Ｏｆｆｌｏａｄ Ｒｅａｄ（オフロードリード）」を指示する。「Ｏｆｆｌｏａｄ Ｒｅａｄ」は、転送元データを特定可能な情報を含む。
【００４２】
ストレージ装置２０は、「Ｏｆｆｌｏａｄ Ｒｅａｄ」を受けて、転送元データを特定可能な情報を含むトークン６０を生成する。たとえば、転送元データを特定可能な情報は、転送元ＬＵＮ（Logical Unit Number）４６、転送元領域４７、転送データサイズなどを含む。ストレージ装置２０は、生成したトークン６０をホストコンピュータ３０に通知する。
【００４３】
ホストコンピュータ３０は、ストレージ装置２０に対して「Ｏｆｆｌｏａｄ Ｗｒｉｔｅ（オフロードライト）」を指示する。「Ｏｆｆｌｏａｄ Ｗｒｉｔｅ」は、転送先領域を特定可能な情報と、ストレージ装置２０から受け取ったトークン６０とを含む。
【００４４】
ストレージ装置２０は、「Ｏｆｆｌｏａｄ Ｗｒｉｔｅ」を受けて、転送対象となるデータと、転送先領域を特定可能な情報とを取得する。これにより、ストレージ装置２０は、転送元ＬＵＮ４６、転送元領域４７、転送データサイズ、転送先ＬＵＮ４８および転送先領域４９を特定することができる。ストレージ装置２０は、特定した情報にもとづきコピーセッション６１を生成する。
【００４５】
ストレージ装置２０は、コピーセッション６１にしたがい、転送元ＬＵＮ４６の転送元領域４７から転送先ＬＵＮ４８の転送先領域４９に、転送データ６２をデータ転送する。
ストレージ装置２０は、転送データ６２のデータ転送が完了すると、ホストコンピュータ３０に対して「Ｓｔａｔｕｓ」を通知する。「Ｓｔａｔｕｓ」は、オフロードデータ転送の完了応答を意味する。
【００４６】
このようにして、ホストコンピュータ３０は、オフロードリード時に、ストレージ装置２０の転送対象となるデータを特定可能な情報としてトークン６０を取得する。また、ホストコンピュータ３０は、オフロードライト時に、ストレージ装置２０の転送対象となるデータを特定可能な情報としてトークン６０を通知する。
【００４７】
これにより、ホストコンピュータ３０は、トークン６０を介することで、転送データ６２のリード／ライトを必要としなくなる。また、ホストコンピュータ３０のＣＰＵ負荷や、ホストコンピュータ３０とストレージ装置２０を接続するネットワーク３３にかかる負荷が軽減される。
【００４８】
次に、図６で説明したホストコンピュータ３０からストレージ装置２０への「Ｏｆｆｌｏａｄ Ｒｅａｄ」の通知、およびストレージ装置２０からホストコンピュータ３０へのトークン６０の通知の詳細なコマンドシーケンスについて図７を用いて説明する。図７は、第２の実施形態のオフロードデータ転送時のオフロードリード処理のシーケンス図である。
【００４９】
オフロードリード処理は、操作端末装置３１のファイルコピーを指示する操作受付を契機として、ホストコンピュータ３０により開始される。「Ｏｆｆｌｏａｄ Ｒｅａｄ」の指示は、ＳＣＳＩ（Small Computer System Interface）標準の「ＥＸＴＥＮＤＥＤ  ＣＯＰＹ」コマンド、および「ＲＥＣＥＩＶＥ ＣＯＰＹ  ＲＥＳＵＬＴＳ」コマンドを用いて実現することができる。この場合の「ＥＸＴＥＮＤＥＤ  ＣＯＰＹ」コマンドを「ＰＴ（Populate Token）」コマンド、「ＲＥＣＥＩＶＥ ＣＯＰＹ  ＲＥＳＵＬＴＳ」コマンドを「ＲＲＴＩ（Receive Rod Token Information）」コマンドと呼ぶ。
【００５０】
［ステップＳ１１］ホストコンピュータ３０は、コピー（転送）元のストレージ装置２０に対して、「ＰＴ」コマンドを送信する。ストレージ装置２０は、ホストコンピュータ３０から「ＰＴ」コマンドを受信する。
【００５１】
［ステップＳ１２］ホストコンピュータ３０は、ストレージ装置２０に対して、コピー元領域情報を送信する。ストレージ装置２０は、ホストコンピュータ３０からコピー元領域情報を受信する。コピー元領域情報（転送元データを特定可能な情報）は、転送元ＬＵＮ４６、転送元領域４７を含む情報を１要素とするリスト形式の情報である。
【００５２】
［ステップＳ１３］ストレージ装置２０は、「ＰＴ」コマンドの受信にもとづいてコマンド発行順リストを更新する。
ここで、図８を用いてコマンド順発行リストについて説明する。図８は、第２の実施形態のコマンド発行順リストの一例を示す図である。
【００５３】
コマンド発行順リスト７０は、識別情報と、コマンド名を含む。識別情報は、受信したコマンドを一意に識別可能な情報であり、たとえば、コマンドの受信順に付与される、たとえば、シーケンシャルな番号である。コマンド名は、コマンドの種別を特定可能な情報である。また、コマンド発行順リスト７０は、コマンドを受信順にリストに追加する。これにより、コマンド発行順リスト７０は、ストレージ装置２０が受信したコマンドの順序関係を特定可能にしている。なお、コマンド発行順リスト７０に追加するコマンドは、「ＰＴ」コマンドと、「ＵＮＭＡＰ」コマンドとを含む。
【００５４】
たとえば、コマンド発行順リスト７０は、識別情報「１」の「ＰＴ」コマンド、識別情報「２」の「ＵＮＭＡＰ」コマンド、識別情報「３」の「ＰＴ」コマンドの順に、コマンドを受信していることを記録している。
【００５５】
なお、コマンド発行順リスト７０が保持する「ＰＴ」コマンドは、「ＰＴ」コマンドにもとづくデータ転送が留保されている状態（留保状態）にあることを示す。また、ストレージ装置２０は、コマンド発行順リスト７０を転送元ボリュームごとに保持する。
【００５６】
再び、図７に示すオフロードデータ転送時のオフロードリード処理の説明に戻る。
［ステップＳ１４］ストレージ装置２０は、トークン（ＲＯＤ（Representation of Data）トークン）６０を生成する。ストレージ装置２０は、生成したトークン６０を後で検索可能にして保持する。
【００５７】
［ステップＳ１５］ストレージ装置２０は、ホストコンピュータ３０に対して、「ＰＴ」コマンド応答を送信する。ホストコンピュータ３０は、ストレージ装置２０から「ＰＴ」コマンド応答を受信する。
【００５８】
［ステップＳ１６］ホストコンピュータ３０は、ストレージ装置２０に対して、「ＲＲＴＩ」コマンドを送信する。ストレージ装置２０は、ホストコンピュータ３０から「ＲＲＴＩ」コマンドを受信する。
【００５９】
［ステップＳ１７］ストレージ装置２０は、ホストコンピュータ３０に対して、トークン６０を送信する。ホストコンピュータ３０は、ストレージ装置２０からトークン６０を受信する。
【００６０】
［ステップＳ１８］ストレージ装置２０は、ホストコンピュータ３０に対して、「ＲＲＴＩ」コマンド応答を送信する。ホストコンピュータ３０は、ストレージ装置２０から「ＲＲＴＩ」コマンド応答を受信する。
【００６１】
「ＰＴ」コマンド、コピー元領域情報、および「ＰＴ」コマンド応答は、図６に示した「Ｏｆｆｌｏａｄ Ｒｅａｄ」の通信に相当する。また、「ＲＲＴＩ」コマンド、トークン６０、および「ＲＲＴＩ」コマンド応答は、図６に示したトークン６０の通信に相当する。
【００６２】
なお、説明を容易にするために、ストレージ装置２０が「Ｏｆｆｌｏａｄ Ｒｅａｄ」の通信、およびトークン６０の通信をおこなうとしたが、ストレージ装置２０の対応するコントローラモジュール２１が担当する。
【００６３】
次に、図６で説明したホストコンピュータ３０からストレージ装置２０への「Ｏｆｆｌｏａｄ Ｗｒｉｔｅ」の通知、およびストレージ装置２０からホストコンピュータ３０への「Ｓｔａｔｕｓ」の通知の詳細なコマンドシーケンスについて図９を用いて説明する。図９は、第２の実施形態のオフロードデータ転送時のオフロードライト処理のシーケンス図である。
【００６４】
オフロードライト処理は、ホストコンピュータ３０により開始される。「Ｏｆｆｌｏａｄ Ｗｒｉｔｅ」の指示は、ＳＣＳＩ標準の「ＥＸＴＥＮＤＥＤ  ＣＯＰＹ」コマンド、および「ＲＥＣＥＩＶＥ ＣＯＰＹ  ＲＥＳＵＬＴＳ」コマンドを用いて実現することができる。この場合の「ＥＸＴＥＮＤＥＤ  ＣＯＰＹ」コマンドを「ＷＵＴ（Write Using Token）」コマンド、「ＲＥＣＥＩＶＥ ＣＯＰＹ  ＲＥＳＵＬＴＳ」コマンドを「ＲＲＴＩ」コマンドと呼ぶ。
【００６５】
［ステップＳ２１］ホストコンピュータ３０は、コピー（転送）先のストレージ装置２０に対して、「ＷＵＴ」コマンドを送信する。ストレージ装置２０は、ホストコンピュータ３０から「ＷＵＴ」コマンドを受信する。
【００６６】
［ステップＳ２２］ホストコンピュータ３０は、ストレージ装置２０に対して、コピー先領域情報と、トークン（ＲＯＤトークン）６０とを送信する。ストレージ装置２０は、ホストコンピュータ３０からコピー先領域情報と、トークン６０とを受信する。コピー先領域情報（転送先データを特定可能な情報）は、転送先ＬＵＮ４８、転送先領域４９を含む情報を１要素とするリスト形式の情報である。
【００６７】
［ステップＳ２３］ストレージ装置２０は、受信したトークン６０を、ストレージ装置２０が保持するトークン６０から検索する。ストレージ装置２０は、受信したトークン６０と、検索したトークン６０とを比較照合し、一致した場合にコピー先領域情報と、トークン６０とにもとづいてコピーセッション６１を設定する。
【００６８】
［ステップＳ２４］ストレージ装置２０は、ホストコンピュータ３０に対して、「ＷＵＴ」コマンド応答を送信する。ホストコンピュータ３０は、ストレージ装置２０から「ＷＵＴ」コマンド応答を受信する。
【００６９】
［ステップＳ２５］ホストコンピュータ３０は、ストレージ装置２０に対して、「ＲＲＴＩ」コマンドを送信する。ストレージ装置２０は、ホストコンピュータ３０から「ＲＲＴＩ」コマンドを受信する。
【００７０】
［ステップＳ２６］ストレージ装置２０は、ホストコンピュータ３０に対して、「Ｓｔａｔｕｓ」を送信する。ホストコンピュータ３０は、ストレージ装置２０から「Ｓｔａｔｕｓ」を受信する。
【００７１】
なお、オフロードデータ転送の非同期動作である場合、ストレージ装置２０は、直ちに、ホストコンピュータ３０に対して、「Ｓｔａｔｕｓ」を送信するが、同期動作の場合、コピー完了を待って「Ｓｔａｔｕｓ」を送信する。
【００７２】
［ステップＳ２７］ストレージ装置２０は、ホストコンピュータ３０に対して、「ＲＲＴＩ」コマンド応答を送信する。ホストコンピュータ３０は、ストレージ装置２０から「ＲＲＴＩ」コマンド応答を受信する。
【００７３】
「ＷＵＴ」コマンド、コピー先領域情報とトークン６０、および「ＷＵＴ」コマンド応答は、図６に示した「Ｏｆｆｌｏａｄ Ｗｒｉｔｅ」の通信に相当する。また、「ＲＲＴＩ」コマンド、「Ｓｔａｔｕｓ」、および「ＲＲＴＩ」コマンド応答は、図６に示した「Ｓｔａｔｕｓ」の通信に相当する。
【００７４】
なお、説明を容易にするために、ストレージ装置２０が「Ｏｆｆｌｏａｄ Ｗｒｉｔｅ」の通信、および「Ｓｔａｔｕｓ」の通信をおこなうとしたが、ストレージ装置２０の対応するコントローラモジュール２１が担当する。
【００７５】
ここで、セッション管理テーブルについて図１０を用いて説明する。図１０は、第２の実施形態のセッション管理テーブルの一例を示す図である。
セッション管理テーブル７１は、セッションＩＤ（IDentification）、コピー元ＬＵＮ、コピー先ＬＵＮ、セッションステータス、およびセッションフェーズを含む。さらに、セッション管理テーブル７１は、コピー元開始ＬＢＡ（Logical Block Address）（転送元領域）、コピー先開始ＬＢＡ（転送先領域）、およびコピーサイズ（転送サイズ）を含む。
【００７６】
セッションＩＤは、コピーセッションを一意に特定可能な識別情報である。セッションＩＤは、コピーセッションの設定順に付与され、たとえば、シーケンシャルな番号である。ＬＵＮは、ＲＡＩＤグループを論理的に区分けしたボリュームを意に特定可能な識別情報であり、たとえば、シーケンシャルな番号である。コピー元ＬＵＮは、コピー元となるボリュームを特定する番号である。コピー先ＬＵＮは、コピー先となるボリュームを特定する番号である。
【００７７】
なお、ＬＵＮで特定されるボリューム（ロジカルユニット）は、１つのＲＡＩＤグループに対して１以上が設定される。したがって、ＲＡＩＤが、複数のストレージデバイス２５によって構成されている場合、ボリュームは、複数のストレージデバイス２５に跨って設定されている場合がある。
【００７８】
セッションステータスは、コピーセッションの状態、言い換えれば、コピーの進行状態を表す情報である。セッションステータスには、「Ａｃｔｉｖｅ」、「Ｓｕｓｐｅｎｄ」、「ＥｒｒｏｒＳｕｓｐｅｎｄ」、「Ｒｅｓｅｒｖｅ」などがある。「Ａｃｔｉｖｅ」は、コピーの実行状態であり、「Ｓｕｓｐｅｎｄ」は、コピーが一時停止されている状態である。また、「ＥｒｒｏｒＳｕｓｐｅｎｄ」は、コピーが失敗した状態であり、たとえば、コピーの実行を停止した状態であり、「Ｒｅｓｅｒｖｅ」は、コピー開始前の過渡状態である。
【００７９】
セッションフェーズは、コピーの進行状態を表す情報である。セッションフェーズには、「Ｃｏｐｙｉｎｇ」と「Ｅｑｕｉｖａｌｅｎｔ」がある。「Ｃｏｐｙｉｎｇ」は、コピーがおこなわれている状態であり、「Ｅｑｕｉｖａｌｅｎｔ」は、コピーが完了した状態であり、コピー元とコピー先のデータが等価になった状態である。
【００８０】
コピー元開始ＬＢＡは、コピー元となるボリュームの論理ブロックアドレス（ＬＢＡ）を特定する情報である。コピー先開始ＬＢＡは、コピー先となるボリュームの論理ブロックアドレスを特定する情報である。コピーサイズは、コピー対象となるデータのサイズを特定可能な情報である。
【００８１】
次に、ストレージ装置２０が「ＰＴ」コマンドを受信してトークンを生成した後に、トークンから特定可能な転送元領域の領域解放がおこなわれる場合のデータ退避について図１１および図１２を用いて説明する。図１１は、第２の実施形態の転送元領域の領域解放動作の一例を示す図である。図１２は、第２の実施形態の転送元領域の領域解放予約状態の一例を示す図である。
【００８２】
まず、データの退避について図１１を用いて説明する。図７を用いて説明したように、ストレージ装置２０は、「ＰＴ」コマンドを受信してトークン６０を生成する。生成されたトークン６０は、転送元領域を特定可能な情報を含む。たとえば、トークン６０は、リストによって転送元ボリューム８１に転送元領域８４，８５，８６を有する。
【００８３】
このとき、ストレージ装置２０は、ホストコンピュータ３０から「ＵＮＭＡＰ」コマンドを受け付けると、「ＵＮＭＡＰ」コマンドで指定された解放領域８３の領域解放の実行と非同期に、「ＵＮＭＡＰ」コマンドに対する完了応答をおこなう。この「ＵＮＭＡＰ」コマンドに対する完了応答をおこなったが、解放領域８３の解放をおこなっていない状態を領域解放予約状態（ＵＮＭＡＰ予約状態）と呼ぶ。
【００８４】
なお、ストレージ装置２０は、転送元領域８４，８５，８６の領域について領域解放を実行する。また、ストレージ装置２０は、「Ｗｒｉｔｅ Ｉ／Ｏ」によりデータが更新済みの転送元領域８６について更新前のデータを退避先ボリューム８２の退避領域８７にデータを退避しているため、領域解放を実行する。
【００８５】
なお、ストレージ装置２０は、ＯＤＸ（Offload Data Transfer） ＳＡＶＥセッション（オフロードデータ転送セーブセッション）８０を設定することにより、更新前のデータを退避領域８７に退避する。ＯＤＸ ＳＡＶＥセッション８０については、図１３および図１４を用いて後で説明する。
【００８６】
次に、領域解放予約状態について図１２を用いて説明する。図１２は、第２の実施形態の転送元領域の領域解放予約状態の一例を示す図である。
ストレージ装置２０は、転送元ボリューム８１について解放領域８９，９１，９２を有し、解放予約領域８８，９０を有する。ここで、ストレージ装置２０は、転送元領域８５について「Ｗｒｉｔｅ Ｉ／Ｏ」を受け付けると、ＯＤＸ ＳＡＶＥセッション８０を設定して、転送元領域８５のデータを退避領域９３に退避する。
【００８７】
また、ストレージ装置２０は、トークン６０の有効期限が切れた場合に、領域解放を指示されて領域解放予約状態とした転送元領域について領域解放予約状態を解除して領域解放を実行する。
【００８８】
このように、ストレージ装置２０は、領域解放を指示されて領域解放予約状態とした転送元領域について、所定の条件成立時に領域解放予約状態を解除して領域解放を実行する。これにより、ストレージ装置２０は、転送元領域のデータの退避にかかる処理時間、およびメモリ資源を低減可能にしている。
【００８９】
次に、ＯＤＸ ＳＡＶＥセッションの生成について図１３および図１４を用いて説明する。図１３は、第２の実施形態の転送元領域のデータ退避の一例を示す図である。
まず、データの退避について図１３を用いて説明する。図７を用いて説明したように、ストレージ装置２０は、「ＰＴ」コマンドを受信してトークン６０を生成する。生成されたトークン６０は、転送元領域を特定可能な情報を含む。トークン６０は、ストレージ装置２０によって有効期限が設定され、有効期限内において有効に存在し得る。
【００９０】
ここで、ホストコンピュータ３０からストレージ装置２０に更新領域７６のデータを更新する「Ｗｒｉｔｅ Ｉ／Ｏ」を受け付けると、転送元ボリューム７２の転送元領域７７のデータは、トークン６０の生成時のデータと異なることとなる。このまま、ストレージ装置２０が「ＷＵＴ」コマンドを受け付けると、ストレージ装置２０は、転送先ボリューム７４にトークン６０の生成時と異なるデータをコピーしてしまう。
【００９１】
トークン６０の生成時のデータと、「ＷＵＴ」コマンドの受付時のデータの齟齬を防止するため、ストレージ装置２０は、「ＰＴ」コマンドを受け付けた後の転送元領域の一部または全部のデータの更新をおこなう場合、更新領域７６のデータを退避する。ストレージ装置２０は、更新領域７６のデータを、予め用意する退避先ボリューム（退避専用ボリューム）７３の退避領域７８に退避する。なお、図１１は、更新領域７６が転送元領域７７の一部の場合を図示するが、更新領域７６が転送元領域７７と一部重複するものであってもよい。その場合、ストレージ装置２０は、更新領域７６と転送元領域７７とが重複する重複領域を、退避領域７８に退避する。
【００９２】
このとき、ストレージ装置２０は、更新領域７６から退避領域７８に更新前のデータのコピーをおこなうためのコピーセッションであるＯＤＸ ＳＡＶＥセッション８０を設定する。ストレージ装置２０は、「ＰＴ」コマンドを受け付けた後に、転送元領域７７と重複する「Ｗｒｉｔｅ Ｉ／Ｏ」を受け付けたとき、「Ｗｒｉｔｅ Ｉ／Ｏ」と同期してＯＤＸ ＳＡＶＥセッション７９を設定する。また、ストレージ装置２０は、転送元領域７７と重複する「Ｗｒｉｔｅ Ｉ／Ｏ」を受け付けたときに限り、ＯＤＸ ＳＡＶＥセッション８０のコピー動作をおこなう。
【００９３】
ストレージ装置２０は、ＯＤＸ ＳＡＶＥセッション８０のコピー実行後に、「Ｗｒｉｔｅ Ｉ／Ｏ」にもとづくデータ更新をおこなう。ストレージ装置２０は、「Ｗｒｉｔｅ Ｉ／Ｏ」にもとづくデータ更新後に、「Ｗｒｉｔｅ Ｉ／Ｏ」の完了応答をおこなう。
【００９４】
なお、ストレージ装置２０は、トークン６０の有効期限が切れたタイミングでＯＤＸ ＳＡＶＥセッション８０を削除する。
次に、退避先ボリューム７３からのデータのコピーについて図１４を用いて説明する。図１４は、第２の実施形態のデータが退避されている場合のコピー動作の一例を示す図である。
【００９５】
ストレージ装置２０は、ホストコンピュータ３０から「ＷＵＴ」コマンドを受け付けると、コピーセッション６１を設定して、ホストコンピュータ３０に「ＷＵＴ」コマンド応答を返す。このとき、ホストコンピュータ３０は、トークン６０にもとづいてコピーセッション６１を設定するため、トークン６０生成時のデータが保証されていない。
【００９６】
ストレージ装置２０は、コピーセッション６１にもとづいて転送元領域７７から転送先領域７５にデータを転送してコピーをおこなう。ストレージ装置２０は、退避領域７８から転送先ボリューム７４の転送先領域７５にデータを上書きしてコピーする。これにより、ストレージ装置２０は、「ＰＴ」コマンドを受け付けた時点でのデータコピーを保証することができる。
【００９７】
次に、第２の実施形態のストレージ装置２０が実行する期限管理処理について図１５を用いて説明する。図１５は、第２の実施形態の期限管理処理のフローチャートを示す図である。期限管理処理は、トークン６０の生成後に実行される。期限管理処理は、トークン６０の有効期限が切れた場合に、領域解放を指示されて領域解放予約状態とした転送元領域について領域解放予約状態を解除して領域解放を実行する処理である。
【００９８】
［ステップＳ３１］ストレージ装置２０は、トークン６０の有効期限を監視する。
［ステップＳ３２］ストレージ装置２０は、トークン６０の有効期限が有効である場合にステップＳ３１にすすみ、有効でない場合にステップＳ３３にすすむ。
【００９９】
［ステップＳ３３］ストレージ装置２０は、ＵＮＭＡＰ予約された領域の有無、すなわち、領域解放予約状態の転送元領域の有無を判定する。ストレージ装置２０は、トークン６０が有する転送元領域に関する情報と、ＵＮＭＡＰ予約された領域との比較照合により、ＵＮＭＡＰ予約された領域の有無を判定することができる。ストレージ装置２０は、ＵＮＭＡＰ予約された領域がある場合にステップＳ３４にすすみ、ＵＮＭＡＰ予約された領域がない場合にステップＳ３６にすすむ。
【０１００】
［ステップＳ３４］ストレージ装置２０は、ＵＮＭＡＰ予約された領域の物理割当を解放する。すなわち、ストレージ装置２０は、領域解放予約状態の転送元領域の領域解放をおこなう。これにより、ストレージ装置２０は、領域解放予約状態の転送元領域について退避先ボリューム８２へのデータの退避処理を実行せずに済み、転送元領域のデータの退避にかかる処理時間、およびメモリ資源を低減可能にしている。
【０１０１】
［ステップＳ３５］ストレージ装置２０は、コマンド発行順リスト７０から「ＵＮＭＡＰ」コマンドを削除する。
［ステップＳ３６］ストレージ装置２０は、コマンド発行順リスト７０から「ＰＴ」コマンドを削除する。
【０１０２】
［ステップＳ３７］ストレージ装置２０は、トークン６０を削除して、期限管理処理を終了する。
なお、説明を容易にするために、ストレージ装置２０が期限管理処理をおこなうとしたが、ストレージ装置２０の対応するコントローラモジュール２１が担当する。
【０１０３】
次に、第２の実施形態のストレージ装置２０が実行するＵＮＭＡＰコマンド応答処理について図１６を用いて説明する。図１６は、第２の実施形態のＵＮＭＡＰコマンド応答処理のフローチャートを示す図である。ＵＮＭＡＰコマンド応答処理は、「ＵＮＭＡＰ」コマンドの受付により実行される。ＵＮＭＡＰコマンド応答処理は、「ＵＮＭＡＰ」コマンドの受付を受け付けたストレージ装置２０が領域解放を指示された領域について、領域解放または領域解放予約状態を設定する処理である。
【０１０４】
［ステップＳ４１］ストレージ装置２０は、「ＵＮＭＡＰ」コマンドを受け付けて、コマンド発行順リスト７０を更新する。具体的には、ストレージ装置２０は、コマンド発行順リスト７０に、受け付けた「ＵＮＭＡＰ」コマンドを追加する。
【０１０５】
［ステップＳ４２］ストレージ装置２０は、「ＵＮＭＡＰ」コマンドによって領域解放を指示された領域（ＵＮＭＡＰ領域）と転送元領域とが重複するトークン６０の有無を判定する。なお、ＵＮＭＡＰ領域と転送元領域とが重複するトークン６０があっても有効期限が切れている場合には、ストレージ装置２０は、ＵＮＭＡＰ領域と転送元領域とが重複するトークン６０がないものとして取り扱う。
【０１０６】
ストレージ装置２０は、ＵＮＭＡＰ領域と転送元領域とが重複するトークン６０がある場合にステップＳ４４にすすみ、重複するトークン６０がない場合にステップＳ４３にすすむ。
【０１０７】
［ステップＳ４３］ストレージ装置２０は、ＵＮＭＡＰ領域の領域解放（ＵＮＭＡＰ処理）を実行する。
［ステップＳ４４］ストレージ装置２０は、トークン６０の転送元領域と重複するＵＮＭＡＰ領域のうち選択した１つの領域についてデータ更新の有無を判定する。ストレージ装置２０は、選択した１つの領域についてデータ更新があればステップＳ４５にすすみ、データ更新がなければステップＳ４６にすすむ。
【０１０８】
［ステップＳ４５］ストレージ装置２０は、選択した１つの領域、すなわち更新領域（データ更新があった転送元領域）についてＵＮＭＡＰ処理を実行する。
［ステップＳ４６］ストレージ装置２０は、選択した１つの領域、すなわち未更新領域の領域解放を予約して領域解放予約状態を設定するＵＮＭＡＰ予約処理を実行する。
【０１０９】
［ステップＳ４７］ストレージ装置２０は、トークン６０の転送元領域と重複するＵＮＭＡＰ領域のすべてについてデータ更新の有無を判定（ステップＳ４４の判定）をおこなったか否かを判定する。ストレージ装置２０は、トークン６０の転送元領域と重複するＵＮＭＡＰ領域のすべてについてデータ更新の有無を判定している場合にステップＳ４８にすすみ、未だ判定していない場合にステップＳ４４にすすむ。
【０１１０】
［ステップＳ４８］ストレージ装置２０は、転送元領域の全範囲についてデータ更新があるか否かを判定する。ストレージ装置２０は、転送元領域の全範囲についてデータ更新がある場合にステップＳ４９にすすみ、転送元領域の少なくとも一部範囲についてデータ更新がない場合にステップＳ５０にすすむ。
【０１１１】
［ステップＳ４９］ストレージ装置２０は、コマンド発行順リスト７０から対応する「ＵＮＭＡＰ」コマンドを削除する。
［ステップＳ５０］ストレージ装置２０は、「ＵＮＭＡＰ」応答コマンドをホストコンピュータ３０に応答して、ＵＮＭＡＰコマンド応答処理を終了する。
【０１１２】
なお、説明を容易にするために、ストレージ装置２０がＵＮＭＡＰコマンド応答処理をおこなうとしたが、ストレージ装置２０の対応するコントローラモジュール２１が担当する。
【０１１３】
次に、「ＵＮＭＡＰ」コマンドの発行に前後する「ＰＴ」コマンドがある場合のデータコピーについて、図１７から図１９を用いて説明する。
まず、「ＵＮＭＡＰ」コマンドの発行前の「ＰＴ」コマンドについて図１７を用いて説明する。図１７は、「ＰＴ」コマンドの発行の後に、「ＵＮＭＡＰ」コマンドの発行があった転送元ボリュームの一例を示す図である。
【０１１４】
ストレージ装置２０は、「ＰＴ」コマンドを受け付けて、すなわち、「ＰＴ」コマンドの発行を受けて転送元ボリューム１００の転送元領域１０１，１０２，１０３を含むトークン１１０を生成する。
【０１１５】
ストレージ装置２０は、「ＰＴ」コマンドの後に、「ＵＮＭＡＰ」コマンドを受け付けると、「ＵＮＭＡＰ」コマンドで指定された解放領域１０４の領域解放の実行と非同期に、「ＵＮＭＡＰ」コマンドに対する完了応答をおこなう。なお、解放領域１０４と、転送元領域１０１，１０２，１０３は、重複するものとする。
【０１１６】
なお、「ＰＴ」コマンドと「ＵＮＭＡＰ」コマンドの発行順序は、コマンド発行順リスト７０に登録されるため、ストレージ装置２０は、コマンド発行順リスト７０を参照することで「ＰＴ」コマンドと「ＵＮＭＡＰ」コマンドの発行順序を把握できる。
【０１１７】
次に、「ＵＮＭＡＰ」コマンドの発行後の「ＰＴ」コマンドについて図１８を用いて説明する。図１８は、「ＵＮＭＡＰ」コマンドの発行の後に、「ＰＴ」コマンドの発行があった転送元ボリュームの一例を示す図である。
【０１１８】
転送元ボリューム１００は、「ＰＴ」コマンドの後に「ＵＮＭＡＰ」コマンドを受け付けたことで、転送元領域１０１，１０２，１０３を領域解放予約状態とする。すなわち、ストレージ装置２０は、転送元ボリューム１００について解放予約領域１１３，１１４，１１５を有する。
【０１１９】
ストレージ装置２０は、「ＵＮＭＡＰ」コマンドの後の「ＰＴ」コマンドを受け付けて、転送元ボリューム１００の転送元領域１０１，１０２，１０３を含むトークン１１１を生成する。
【０１２０】
なお、「ＰＴ」コマンドは、コマンド発行順リスト７０に登録されるため、ストレージ装置２０は、コマンド発行順リスト７０を参照することで「ＵＮＭＡＰ」コマンドと「ＰＴ」コマンドの発行順序を把握できる。
【０１２１】
次に、「ＰＴ」コマンドにもとづいて生成したトークン１１０，１１１にもとづく「ＷＵＴ」コマンドを受け付けた場合のコピー動作について、図１９を用いて説明する。図１９は、「ＵＮＭＡＰ」コマンドに前後する「ＰＴ」コマンドの発行があった場合の、データコピーの一例を示す図である。
【０１２２】
トークン１１０にもとづく「ＷＵＴ」コマンドを受け付けた場合、ストレージ装置２０は、トークン１１０の転送元領域１０１，１０２，１０３と、解放予約領域１１３，１１４，１１５の重複を確認する。ストレージ装置２０は、重複していることから、トークン１１０を生成した「ＰＴ」コマンドと、解放予約領域１１３，１１４，１１５を設定した「ＵＮＭＡＰ」コマンドの発行順序を確認する。ストレージ装置２０は、トークン１１０を生成した「ＰＴ」コマンドが「ＵＮＭＡＰ」コマンドより前に発行されていることから、領域解放前のデータとして、転送元領域１０１，１０２，１０３の実データを転送先ボリューム１１７に転送してコピーを実行する。
【０１２３】
一方、トークン１１１にもとづく「ＷＵＴ」コマンドを受け付けた場合、ストレージ装置２０は、トークン１１１の転送元領域１０１，１０２，１０３と、解放予約領域１１３，１１４，１１５の重複を確認する。ストレージ装置２０は、重複していることから、トークン１１１を生成した「ＰＴ」コマンドと、解放予約領域１１３，１１４，１１５を設定した「ＵＮＭＡＰ」コマンドの発行順序を確認する。ストレージ装置２０は、トークン１１１を生成した「ＰＴ」コマンドが「ＵＮＭＡＰ」コマンドより後に発行されていることから、領域解放後のデータとして、クリアデータを転送先ボリューム１１７に転送してコピーを実行する。クリアデータは、たとえば、「０」データを用いることができるが、任意のデータを用いることができる。
【０１２４】
このように、ストレージ装置２０は、「ＰＴ」コマンドが「ＵＮＭＡＰ」コマンドに前後しても、データロストすることなくデータ転送をおこなうことができる。また、ストレージ装置２０は、データを退避する機会を低減可能であり、転送元領域のデータの退避にかかる処理時間、およびメモリ資源を低減可能にしている。
【０１２５】
次に、第２の実施形態のストレージ装置２０が実行するＷＵＴコマンド応答処理について図２０を用いて説明する。図２０は、第２の実施形態のＷＵＴコマンド応答処理のフローチャートを示す図である。ＷＵＴコマンド応答処理は、「ＷＵＴ」コマンドの受付により実行される。ＷＵＴコマンド応答処理は、転送元領域に領域解放予約状態が設定されている場合に、「ＰＴ」コマンドと「ＵＮＭＡＰ」コマンドの先後関係に応じたコピーを実行する処理である。
【０１２６】
［ステップＳ５１］ストレージ装置２０は、転送元ボリュームに設定されている領域解放予約状態を取得する。
［ステップＳ５２］ストレージ装置２０は、転送元ボリュームに設定されている領域解放予約状態の有無を判定する。ストレージ装置２０は、転送元ボリュームに領域解放予約状態の設定がない場合にステップＳ５６にすすみ、設定がある場合にステップＳ５３にすすむ。
【０１２７】
［ステップＳ５３］ストレージ装置２０は、コマンド発行順リスト７０を参照する。
［ステップＳ５４］ストレージ装置２０は、「ＷＵＴ」コマンドを受け付けた場合、「ＷＵＴ」コマンドとともに受け付けたトークン６０を生成した「ＰＴ」コマンドが「ＵＮＭＡＰ」コマンドに先行しているか否かを判定する。ストレージ装置２０は、「ＰＴ」コマンドが「ＵＮＭＡＰ」コマンドに先行している場合にステップＳ５５にすすみ、「ＵＮＭＡＰ」コマンドが「ＰＴ」コマンドに先行している場合にステップＳ５６にすすむ。
【０１２８】
［ステップＳ５５］ストレージ装置２０は、領域解放予約状態の転送元領域からの転送データをクリアデータとして、転送先領域にコピーする。
［ステップＳ５６］ストレージ装置２０は、領域解放予約状態の転送元領域からの転送データを実データとして、転送先領域にコピーする。
【０１２９】
［ステップＳ５７］ストレージ装置２０は、「ＷＵＴ」応答コマンドをホストコンピュータ３０に応答して、ＷＵＴコマンド応答処理を終了する。
このようにして、ストレージ装置２０は、図１９に示したデータ転送をおこなうことができる。なお、説明を容易にするために、ストレージ装置２０がＷＵＴコマンド応答処理をおこなうとしたが、ストレージ装置２０の対応するコントローラモジュール２１が担当する。
【０１３０】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、情報処理装置１（制御部３を含む）、ストレージ装置２０、コントローラモジュール２１等が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１３１】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１３２】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１３３】
また、上記の処理機能の少なくとも一部を、ＤＳＰ、ＡＳＩＣ、ＰＬＤなどの電子回路で実現することもできる。
【符号の説明】
【０１３４】
１  情報処理装置
２  受信部
３  制御部
４  転送元情報生成処理
４ａ  転送元情報
５  予約状態生成処理
５ａ  予約状態
６  留保状態判定処理
７  領域解放処理
９，２５  ストレージデバイス
１０，１５  転送元領域
１１，１６  解放領域
１２  重複領域
１３，３０  ホストコンピュータ
１４  論理ボリューム
２０  ストレージ装置
２１  コントローラモジュール
２２  ＣＰＵ
２３  メモリ
２４  ディスクアダプタ
２６  チャネルアダプタ
２７  リモートアダプタ
３１  操作端末装置
３２，３３，３４  ネットワーク
【図１】
2014048835.tif 000003
【図２】
2014048835.tif 000004
【図３】
2014048835.tif 000005
【図４】
2014048835.tif 000006
【図５】
2014048835.tif 000007
【図６】
2014048835.tif 000008
【図７】
2014048835.tif 000009
【図８】
2014048835.tif 000010
【図９】
2014048835.tif 000011
【図１０】
2014048835.tif 000012
【図１１】
2014048835.tif 000013
【図１２】
2014048835.tif 000014
【図１３】
2014048835.tif 000015
【図１４】
2014048835.tif 000016
【図１５】
2014048835.tif 000017
【図１６】
2014048835.tif 000018
【図１７】
2014048835.tif 000019
【図１８】
2014048835.tif 000020
【図１９】
2014048835.tif 000021
【図２０】
2014048835.tif 000022