(57)【特許請求の範囲】
【請求項１】
ホスト計算機に接続される複数のストレージ装置を有し、
前記複数のストレージ装置のいずれかが、ペアを構成するプライマリボリューム及びセカンダリボリュームのうちのプライマリボリュームを有する第１ストレージ装置であり、
前記複数のストレージ装置のいずれかが、前記セカンダリボリュームを有している第２ストレージ装置であり、
前記プライマリボリューム及び前記セカンダリボリュームのいずれも更新され得るボリュームであり、
前記第１ストレージ装置及び前記第２ストレージ装置の各々は、ライト命令を受信した場合、そのライト命令で指定されているアドレスに割り当てられているデータ領域のデータ属性を、そのデータ属性が第１属性以外の属性であれば、第１属性に変更するようになっており、
前記第１ストレージ装置又は前記第２ストレージ装置が前記ホスト計算機からオフロードデータコピー命令を受信した場合に行われるオフロードデータコピー処理において、前記第１ストレージ装置及び前記第２ストレージ装置の各々が、
（Ａ）前記オフロードデータコピー命令に従うコピー元アドレスに割り当てられているデータ領域のデータ属性を、そのデータ属性が第２属性以外の属性であれば、第２属性に変更し、
（Ｂ）前記データ領域を前記オフロードデータコピー命令に従うコピー先アドレスに割り当てることであるアロケーション情報コピーを行うときに、
そのデータ領域のデータ属性が第２属性であれば、前記アロケーション情報コピーを行い、
そのデータ領域のデータ属性が第１属性であれば、前記オフロードデータコピー処理を中止する、
ストレージシステム。
【請求項２】
前記第１ストレージ装置及び前記第２ストレージ装置の各々は、ライト命令を受信し、そのライト命令で指定されているアドレスについて排他が解除されている場合、そのアドレスに割り当てられているデータ領域のデータ属性を、そのデータ属性が第１属性以外の属性であれば、第１属性に変更するようになっており、
（Ａ）では、
（ａ１）前記第１ストレージ装置は、前記プライマリボリュームに関し、前記オフロードデータコピー命令に従うコピー元アドレスについて排他を確保し、
（ａ２）（ａ１）の後、前記第１ストレージ装置は、前記プライマリボリュームに関し、排他が確保されたコピー元アドレスに割り当てられているデータ領域のデータ属性を、そのデータ属性が第２属性以外の属性であれば、第２属性に変更する、
請求項１記載のストレージシステム。
【請求項３】
（Ａ）では、
（ａ３）（ａ２）の後、前記第１ストレージ装置は、コピー元アドレスのデータ属性変更要求を前記第２ストレージ装置に送信し、
（ａ４）前記データ属性変更要求を受けた前記第２ストレージ装置が、前記セカンダリボリュームに関し、コピー元アドレスに割り当てられているデータ領域のデータ属性を、そのデータ属性が第２属性以外の属性であれば、第２属性に変更する、
請求項２記載のストレージシステム。
【請求項４】
（Ａ）では、
（ａ５）（ａ４）の後、前記第２ストレージ装置が、データ属性の変更の完了応答を前記第１ストレージ装置に返し、
（ａ６）前記完了応答を受信した前記第１ストレージ装置が、前記プライマリボリュームに関し、前記オフロードデータコピー命令に従うコピー先アドレスについて排他を確保し、
（ａ６）の後、前記第１ストレージ装置が（Ｂ）を行う、
請求項３記載のストレージシステム。
【請求項５】
（ａ６）では、前記第１ストレージ装置が、前記プライマリボリュームに関し、前記コピー元アドレスの排他を解除した後に、前記オフロードデータコピー命令に従うコピー先アドレスについて排他を確保する、
請求項４記載のストレージシステム。
【請求項６】
前記第１ストレージ装置が、前記第１ストレージ装置及び前記第２ストレージ装置の各々についての（Ｂ）の後に、前記プライマリボリュームに関し、前記コピー先アドレスについての排他を解除する、
請求項５記載のストレージシステム。
【請求項７】
（ａ１）では、前記第１ストレージ装置は、前記プライマリボリュームに関し、前記オフロードデータコピー命令に従うコピー元アドレス及びコピー先アドレスの両方について排他を確保する、
請求項２記載のストレージシステム。
【請求項８】
前記第１ストレージ装置が、前記第１ストレージ装置及び前記第２ストレージ装置の各々についての（Ｂ）の後に、前記プライマリボリュームに関し、前記コピー元アドレス及び前記コピー先アドレスの両方についての排他を解除する、
請求項７記載のストレージシステム。
【請求項９】
ホスト計算機に接続される複数のストレージ装置を有するストレージシステムの記憶制御方法であって、
前記複数のストレージ装置のいずれかが、ペアを構成するプライマリボリューム及びセカンダリボリュームのうちのプライマリボリュームを有する第１ストレージ装置であり、
前記複数のストレージ装置のいずれかが、前記セカンダリボリュームを有している第２ストレージ装置であり、
前記プライマリボリューム及び前記セカンダリボリュームのいずれも更新され得るボリュームであり、
前記第１ストレージ装置及び前記第２ストレージ装置の各々は、ライト命令を受信した場合、そのライト命令で指定されているアドレスに割り当てられているデータ領域のデータ属性を、そのデータ属性が第１属性以外の属性であれば、第１属性に変更するようになっており、
前記記憶制御方法は、
前記第１ストレージ装置又は前記第２ストレージ装置が前記ホスト計算機からオフロードデータコピー命令を受信した場合に行われるオフロードデータコピー処理において、前記第１ストレージ装置及び前記第２ストレージ装置の各々が、
（Ａ）前記オフロードデータコピー命令に従うコピー元アドレスに割り当てられているデータ領域のデータ属性を、そのデータ属性が第２属性以外の属性であれば、第２属性に変更し、
（Ｂ）前記データ領域を前記オフロードデータコピー命令に従うコピー先アドレスに割り当てることであるアロケーション情報コピーを行うときに、
そのデータ領域のデータ属性が第２属性であれば、前記アロケーション情報コピーを行い、
そのデータ領域のデータ属性が第１属性であれば、前記オフロードデータコピー処理を中止する、
記憶制御方法。
【請求項１０】
ペアを構成するプライマリボリューム及びセカンダリボリュームのうちのプライマリボリュームを有するストレージ装置である第１ストレージ装置であって、
前記プライマリボリュームの基になる１以上の記憶デバイスを含む記憶デバイス部と、
前記セカンダリボリュームを有している第２ストレージ装置に接続されるインターフェースデバイスを含む１以上のインターフェースデバイスを含むインターフェース部と、
データ領域のデータ属性を示す情報を記憶する１以上のメモリを含むメモリ部と、
前記記憶デバイス部、前記インターフェース部及び前記メモリ部に接続された１以上のプロセッサを含むプロセッサ部と
を有し、
前記プロセッサ部は、ライト命令を受信した場合、そのライト命令で指定されているアドレスに割り当てられているデータ領域のデータ属性を、そのデータ属性が第１属性以外の属性であれば、第１属性に変更するようになっており、
前記第１ストレージ装置又は前記第２ストレージ装置がホスト計算機からオフロードデータコピー命令を受信した場合に行われるオフロードデータコピー処理において、前記プロセッサ部が、
前記オフロードデータコピー命令に従うコピー元アドレスに割り当てられているデータ領域のデータ属性を、そのデータ属性が第２属性以外の属性であれば、第２属性に変更し、
前記コピー元アドレスのデータ属性変更要求を前記第２ストレージ装置に送信し、
データ属性の変更の完了応答を前記第２ストレージ装置から受信し、
前記データ領域を前記オフロードデータコピー命令に従うコピー先アドレスに割り当てることであるアロケーション情報コピーを行うときに、
そのデータ領域のデータ属性が第２属性であれば、前記アロケーション情報コピーを行い、
そのデータ領域のデータ属性が第１属性であれば、前記オフロードデータコピー処理を中止する、
第１ストレージ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はストレージシステムに関する。
【背景技術】
【０００２】
ストレージシステムは、一般的に、１以上のストレージ装置を備える。１以上のストレージ装置の各々は、一般的に、記憶デバイスとして、例えば、HDD（Hard Disk Drive）やSSD（Solid State Drive）を備える。ストレージシステムが、SAN（Storage Area Network）やLAN（Local Area Network）といったネットワーク経由で、１又は複数の上位装置（例えば、ホスト計算機）からアクセスされる。一般的に、ストレージ装置は、RAID（Redundant Array of Independent （or Inexpensive） Disks）技術に従う高信頼化方法を用いることで信頼性を向上している。【０００３】
特許文献１には、可用性を向上させることができる情報システムが開示されている。特許文献１によれば、第１ストレージ装置の第１ボリュームと、第２ストレージの第２ボリュームとを同一のボリュームとしてホスト計算機に提供する。ホスト計算機からは第１のボリュームと第２のボリュームはパスが異なる同一のボリュームとして認識される。【０００４】
特許文献２には、第１ストレージ装置の第１ボリュームと第２ストレージ装置の第２ボリュームとがそれぞれ同じ仮想IDをホスト計算機に応答するHA（High Availability）ペア構成が開示されている。特許文献２によれば、第１ストレージ装置又は第２ストレージ装置が、仮想IDをコピー先として指定したオフロードデータコピー指示をホスト計算機から受信すると、コピー先ボリュームが存在するストレージ装置に応じて、第１ボリューム又は第２ボリュームのいずれかをコピー元ボリュームとして選択し、当該選択したコピー元ボリュームからコピー先ボリュームにデータをコピーする。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第２００９／０２７１５８２号明細書
【特許文献２】国際公開第２０１５／１８９９２５号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【０００６】
オフロードデータコピーのために、ボリューム間又はストレージ装置間でデータ転送が発生する。このような場合、オフロードデータコピーの処理速度は、データ転送の帯域幅によって制限される。【０００７】
処理速度を向上する方法として、コピー対象のデータそれ自体に代えて、ストレージ装置内でのデータ格納場所を示す情報（アロケーション情報）を転送する方法が考えられる。しかし、HAペア構成を組むボリュームへアロケーション情報を転送する場合、ホスト計算機からのデータ更新とのすれ違いに気づくことができずにHAペア間でデータの不一致（不整合）が生じるおそれがある。【０００８】
このような課題は、HAペア構成を有するストレージシステムに限らず、異なる２以上のストレージ装置における異なる２以上のボリュームを同一のボリュームとしてホスト計算機に提供する他のストレージシステムについてもあり得る。
【課題を解決するための手段】
【０００９】
ストレージシステムが、ホスト計算機に接続される複数のストレージ装置を有する。複数のストレージ装置のいずれかが、ペアを構成するプライマリボリューム及びセカンダリボリュームのうちのプライマリボリュームを有する第１ストレージ装置である。複数のストレージ装置のいずれかが、前記セカンダリボリュームを有している第２ストレージ装置である。プライマリボリューム及びセカンダリボリュームのいずれも更新され得るボリュームである。第１ストレージ装置及び第２ストレージ装置の各々は、ライト命令を受信した場合、そのライト命令で指定されているアドレスに割り当てられているデータ領域のデータ属性を、そのデータ属性が第１属性以外の属性であれば、第１属性に変更するようになっている。第１ストレージ装置又は第２ストレージ装置が前記ホスト計算機からオフロードデータコピー命令を受信した場合に行われるオフロードデータコピー処理において、第１ストレージ装置及び第２ストレージ装置の各々が、
（Ａ）オフロードデータコピー命令に従うコピー元アドレスに割り当てられているデータ領域のデータ属性を、そのデータ属性が第２属性以外の属性であれば、第２属性に変更し、
（Ｂ）データ領域を前記オブロードデータコピー命令に従うコピー先アドレスに割り当てることであるアロケーション情報コピーを行うときに、
そのデータ領域のデータ属性が第２属性であれば、アロケーション情報コピーを行い、
そのデータ領域のデータ属性が第１属性であれば、オフロードデータコピー処理を中止する（例えば後述のようにやり直す）。
【発明の効果】
【００１０】
コピー対象のデータそれ自体のデータ転送が不要のため、オフロードデータコピーのコピー処理時間を削減することができる。また、データ領域についてデータ属性が管理されており、アロケーション情報コピー前にデータ更新がされていればその更新が生じたことを検知できるので、コピー対象のデータそれ自体のデータ転送が不要なオフロードデータコピー処理において、データの整合性を維持することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、HAペア構成のストレージシステムにおけるオフロードデータコピーの手順を示す図である。
【図２】図２は、ストレージ装置の構成を示す図である。
【図３】図３は、FMD（フラッシュモジュールデバイス）の構成を示す図である。
【図４】図４は、VOL（ボリューム）管理テーブルの構成例を示す図である。
【図５】図５は、プール構成管理テーブルの構成例を示す図である。
【図６】図６は、RAID構成管理テーブルの構成例を示す図である。
【図７】図７は、プール割当管理テーブルの構成例を示す図である。
【図８】図８は、ドライブ割当管理テーブルの構成例を示す図である。
【図９】図９は、実ドライブ割当管理テーブルの構成例を示す図である。
【図１０】図１０は、論理記憶階層の構成例を示す図である。
【図１１】図１１は、HAペア構成の管理テーブルの構成例を示す図である。
【図１２】図１２は、リード処理を示すフローチャートである。
【図１３】図１３は、ライト処理を示すフローチャートである。
【図１４】図１４は、XCOPY処理を示すフローチャートである。
【図１５】図１５は、アロケーション情報コピー処理を示すフローチャートである。
【図１６】図１６は、データ属性変更処理を示すフローチャートである。
【図１７】図１７は、VOLコピー処理を示すフローチャートである。
【図１８】図１８は、カスケード状の２以上のHAペアの一例を示す。
【発明を実施するための形態】
【００１２】
以下の説明では、「インターフェース部」は、ユーザインターフェース部と、通信インターフェース部とのうちの少なくとも１つを含んでよい。ユーザインターフェース部は、１以上のＩ／Ｏデバイス（例えば入力デバイス（例えばキーボード及びポインティングデバイス）と出力デバイス（例えば表示デバイス））と表示用計算機とのうちの少なくとも１つのＩ／Ｏデバイスを含んでよい。通信インターフェース部は、１以上の通信インターフェースデバイスを含んでよい。１以上の通信インターフェースデバイスは、１以上の同種の通信インターフェースデバイス（例えば１以上のNIC（Network Interface Card））であってもよいし２以上の異種の通信インターフェースデバイス（例えばNICとHBA（Host Bus Adapter））であってもよい。
【００１３】
また、以下の説明では、「メモリ部」は、１以上のメモリを含む。少なくとも１つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。メモリ部は、主に、プロセッサ部による処理の際に使用される。
【００１４】
また、以下の説明では、「プロセッサ部」は、１以上のプロセッサを含む。少なくとも１つのプロセッサは、典型的には、CPU（Central Processing Unit）である。プロセッサは、処理の一部又は全部を行うハードウェア回路を含んでもよい。
【００１５】
また、以下の説明では、「ｘｘｘテーブル」といった表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「ｘｘｘテーブル」を「ｘｘｘ情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、１つのテーブルは、２以上のテーブルに分割されてもよいし、２以上のテーブルの全部又は一部が１つのテーブルであってもよい。
【００１６】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別する場合は、参照符号（又は要素のID（例えば識別番号）を使用することがある。例えば、ストレージ装置を区別しない場合には、「ストレージ装置１１」と言い、ストレージ装置を区別する場合には、「ストレージ装置１１Ａ」、「ストレージ装置１１Ｂ」、又は、「ストレージ装置１」、「ストレージ装置２」のように言う。
【００１７】
また、以下の説明では、「ストレージシステム」は、１以上のストレージ装置を含む。少なくとも１つのストレージ装置は、汎用的な物理計算機であってもよい。また、少なくとも１つのストレージ装置が、仮想的なストレージ装置であってもよいし、ＳＤｘ（Software-Defined anything）を実行してもよい。ＳＤｘとしては、例えば、ＳＤＳ（Software Defined Storage）（仮想的なストレージ装置の一例）又はＳＤＤＣ（Software-defined Datacenter）を採用することができる。
【００１８】
以下、幾つかの実施例を図面に基づいて説明する。
【実施例１】
【００１９】
以下、実施例１を説明する。【００２０】
＜HAペア構成＞【００２１】
図１は、HAペア構成のストレージシステムにおけるオフロードデータコピーの手順を示す図である。【００２２】
HAペア構成を有するストレージシステム１００は、ホスト計算機１３がネットワーク１４を介してアクセスする２以上のストレージ装置１１を有する。図１Ａの例によれば、ストレージシステム１００は、ストレージ装置１及び２を有する。ストレージシステム１００は、管理計算機（図示せず）により管理される。各ストレージ装置１１は、１以上のボリューム（論理的な記憶領域）を有する。ホスト計算機１３は、物理的な計算機でもよいし、物理的な計算機で実行される仮想的な計算機でもよい。ホスト計算機１３は、ストレージシステムにおいて実行される仮想的な計算機でもよい。【００２３】
ストレージシステム１００は、異なる２以上のストレージ装置１１における異なる２以上のボリュームを同一のボリュームとしてホスト計算機１３に提供する。具体的には、例えば、HA構成によれば、PVOL（Primary Volume）１１１ＰとSVOL（Secondary Volume）１１１Ｓが、ホスト計算機１３へ１つの仮想VOL１５（仮想VOL-A）として提供される。【００２４】
また、HAペア構成のストレージシステム１００では、２つのボリューム（PVOL１１１Ａ及びSVOL１１１Ｂ）でデータを同期的に複製する。PVOL１１１ＡとSVOL１１１Ｂとの双方にホスト計算機１３がアクセス可能である。すなわち、両方のボリューム（VOL）（両方のストレージ装置１及び２）が同時にI/O処理を担当するActive−Active構成が実現される。PVOL１１１Ａ及びSVOL１１１Ｂのいずれについても、ホスト計算機１３からのInquiryコマンドに対して、ストレージ装置１及び２の各々は、同じ仮想ID（例えば、仮想装置ID及び仮想VOL ID）を応答する。そのため、ホスト計算機１３は、１組のHAペア構成のVOLに割り当てられた仮想IDを指定することで、ストレージ装置１のPVOL１１１Ａとストレージ装置２のSVOL１１１Ｂとのどちらにもアクセスできる。【００２５】
ホスト計算機１３からは、PVOL１１１ＡもSVOL１１１Ｂも同じVOL ID“VOL-A”でアクセスされる。【００２６】
＜HAペア構成におけるオフロードデータコピー＞【００２７】
オフロードデータコピーとは、本来はホスト計算機１３が行うコピーを、ホスト計算機１３ではなくストレージ装置１及びストレージ装置２が実行することである。オフロードデータコピーの機能により、ホスト計算機１３がコピー対象データの入出力をすることなく、コピーが実行される。このため、ホスト計算機１３が使用するリソース（例えばCPUやメモリ）の量を削減すること、及び、ホスト計算機１３とストレージ装置１１間の通信量を削減することが見込める。【００２８】
図１Ａは、ホスト計算機１３がiSCSIコマンドの一つであるXCOPY命令をストレージ装置１に対して送信する例を示している。なお、図１Ａでは、オフロードデータコピー命令の一例として、XCOPY命令が採用されているが、オフロードデータコピー命令は、XCOPY命令に限られない（例えば、コピー処理をオフロードするODX命令でもよい）。【００２９】
次に、このHAペア構成のストレージシステム１００において、ホスト計算機１３からデータのコピー処理をストレージ装置１及びストレージ装置２にオフロードするオフロードデータコピー処理について説明する。【００３０】
本実施例では、ストレージ装置１及び２の各々が、ホスト計算機１３からのライト命令に応答してデータの更新が発生したことを検知するため、データ領域ごとに属性を管理する。データ領域の属性として、更新が発生していないことを示す属性「共通」と、更新が発生したことを示す属性「単独」とがある（「共通」及び「単独」以外の属性があってもよい）。【００３１】
ストレージ装置１は、ホスト計算機１３から、データＡを格納したデータ領域の割当て先のアドレス１を指定したXCOPY命令を受けると、データＡを格納しているデータ領域１１３Ａの属性を、更新が発生していないことを示す「共通」とする。次に、アロケーション情報をコピーして、XCOPY処理（オフロードデータコピー処理の一例）が完了する。【００３２】
具体例は、下記に示す通りである。【００３３】
（Ｓ１）ストレージ装置１は、ホスト計算機１３からネットワーク１４を介してXCOPY命令を受信する。XCOPY命令は、データＡのデータ領域１１３Ａの割当て先のアドレス１（コピー元アドレス１）とコピー先アドレス２とを含んでいる。XCOPY命令を受信した場合に、Ｓ２以降のXCOPY処理が開始する。【００３４】
（Ｓ２）ストレージ装置１は、XCOPY命令に応答して、PVOL１１１のコピー元アドレス１が示すスロットの排他を確保する。これにより、そのスロット内のデータＡがホスト計算機１３から更新されることを防ぐ。「スロット」とは、VOLにおける領域である。「スロットの排他を確保」とは、ホスト計算機１３からのリード命令及びライト命令で指定されたアドレスが示すスロットに対するリード及びライトを防ぐ操作で、排他を確保したことをホスト計算機１３が認識するための情報を管理する。なお、この情報はビットマップや時間情報など識別できるものであれば種別は問わない。また、本実施例において、「スロット」が、VOL（例えば、シンプロビジョニングに従うVOLであるTP-VOL）における領域であるのに対し、「データ領域」は、スロットに割り当てられる領域（例えば、プール内の領域であるプール領域）である。【００３５】
（Ｓ３）ストレージ装置１は、コピー元アドレス１に割り当てられているデータ領域（データＡを格納しているデータ領域）１１３のデータ属性を、そのデータ属性が「共通」以外であれば（例えば「単独」であれば）、「共通」に変更する。（Ｓ２）の排他確保の後に、ストレージ装置１でのデータ属性変更に加えて、後述のようにストレージ装置２でのデータ属性変更が行われるので、ストレージ装置１及び２の両方においてデータ属性「共通」に統一できる。【００３６】
（Ｓ４）ストレージ装置１は、ストレージ装置２に対して、SVOL１１１Ｂのコピー元アドレス１のデータ属性変更要求を送信する。なお、PVOL１１１Ａのアドレスｎ（ｎは自然数）とSVOL１１１Ｂのアドレスｎは、同じアドレスでよい。【００３７】
（Ｓ５）データ属性変更要求を受けたストレージ装置２は、SVOL１１１Ｂのコピー元アドレス１に割り当てられているデータ領域（データＡを格納しているデータ領域）１１３Ｂのデータ属性を、そのデータ属性が「共通」以外であれば（例えば「単独」であれば）、「共通」に変更する。【００３８】
（Ｓ６）ストレージ装置２は、属性変更の完了応答をストレージ装置１に返す。【００３９】
（Ｓ７）属性変更の完了応答を受けたストレージ装置１は、PVOL１１１Ａのコピー元アドレス１が示すスロットの排他を解除する。この段階でコピー元アドレス１について排他が解除されるため、ホスト計算機１３に対して、アドレス１についての更新を禁止する期間を短くすることができる。【００４０】
（Ｓ８）ストレージ装置１は、PVOL１１１のコピー先アドレス２が示すスロットの排他を確保する。【００４１】
（Ｓ９）ストレージ装置１は、データ領域１１３Ａのデータ属性が「共通」であるか否かを判定する。判定結果が偽の場合（データ属性が「単独」の場合）、ストレージ装置１は、オフロードデータコピー処理を中止する。具体的には、例えば、ストレージ装置１は、（Ｓ２）からやり直す（エラーをホスト計算機１３に返して（Ｓ１）からやり直してもよい）。例えば、（Ｓ５）の後に、ストレージ装置１は、PVOLのコピー元アドレス１を指定したライト命令を受信していた場合、データ領域１１３Ａのデータ属性を、そのデータ属性が「単独」以外であれば（例えば「共通」であれば）、「単独」に変更する。このような場合、（Ｓ９）の判定結果が偽となる。【００４２】
（Ｓ１０）Ｓ９の判定結果が真の場合、ストレージ装置１は、コピー元アドレス１からコピー先アドレス２へアロケーション情報をコピーする（すなわち、データ領域１１３Ａの割当て先として、コピー先アドレス２を追加する）。これにより、コピー先アドレス２経由でもデータＡを読み出す又は更新することができるようになる。コピー先アドレス２について排他が確保されている間にアロケーション情報コピーが行われるので、コピー先アドレス２を指定したライト命令をアロケーション情報コピー中に受けてもコピー対象データＡが更新されてしまうことを防ぐことができる。【００４３】
（Ｓ１１）ストレージ装置１は、ストレージ装置２に対し、SVOL１１１Ｂのコピー元アドレス１からコピー先アドレス２へのアロケーション情報のコピーの要求であるアロケーションコピー要求を送信する。【００４４】
（Ｓ１２）アロケーションコピー要求を受けたストレージ装置２は、 データ領域１１３Ｂのデータ属性が「共通」であるか否かを判定する。判定結果が偽の場合（データ属性が「単独」の場合）、ストレージ装置２は、ストレージ装置１にエラーを返し、ストレージ装置１が、（Ｓ２）からやり直す（エラーをホスト計算機１３に返して（Ｓ１）からやり直してもよい）。例えば、（Ｓ５）の後に、ストレージ装置２は、SVOLのコピー元アドレス１を指定したライト命令を受信していた場合、データ領域１１３Ｂのデータ属性を、そのデータ属性が「単独」以外であれば（例えば「共通」であれば）、「単独」に変更する。このような場合、（Ｓ１２）の判定結果が偽となる。【００４５】
（Ｓ１３）Ｓ１２の判定結果が真の場合、ストレージ装置２は、SVOL１１１Ｂのコピー元アドレス１からコピー先アドレス２へアロケーション情報をコピーする（すなわち、データ領域１１３Ｂの割当て先として、コピー先アドレス２を追加する）。これにより、コピー先アドレス２経由でもデータＡを読み出すことができるようになる。【００４６】
（Ｓ１４）ストレージ装置２は、アロケーション情報コピーの完了応答をストレージ装置１に返す。【００４７】
（Ｓ１５）アロケーション情報コピーの完了応答を受けたストレージ装置１は、PVOL１１１Ａのコピー先アドレス２が示すスロットの排他を解除する。これにより、アドレス１に加えてアドレス２についても、ホスト計算機１３に対して、更新可能なアドレスとすることができる。【００４８】
（Ｓ１６）ストレージ装置１は、ホスト計算機１３へ、ネットワーク１４を介して、XCOPY命令の完了応答を返す。【００４９】
以上が、XCOPY処理の一例である。【００５０】
＜ストレージ装置＞【００５１】
図２は、ストレージ装置１１の構成を示す図である。【００５２】
ストレージ装置１１は、１以上のストレージコントローラ２２と、１以上のストレージコントローラ２２に接続された複数のドライブ２８とを有する。【００５３】
ストレージコントローラ２２は、ホスト計算機１３との通信を行うFE I/F（フロントエンドインターフェースデバイス）２３、ストレージ装置間での通信を行うためのストレージI/F（ストレージインターフェースデバイス）２９、装置全体を制御するプロセッサ２４、プロセッサ２４で使用されるプログラムや情報を格納するメモリ２５、ドライブ２８との通信を行うBE I/F（バックエンドインターフェースデバイス）２７、及びそれらをつなぐ内部ネットワーク２６を備える。また、メモリ２５は、プログラムを管理するプログラム領域２０１、データの転送やコピーの時の一時的な保存領域であるバッファ領域２０２、ホスト計算機１３からのライトデータ（ライト命令に応答して書き込まれるデータ）及びドライブ２８からのリードデータ（リード命令に応答して読み出されたデータ）を一時的に格納するキャッシュ領域２０３、種々のテーブルを格納するテーブル管理領域２０４を有する。テーブル管理領域２０４は、VOLに関する情報を保持するVOL管理テーブル２０５、プールに関する情報を保持するプール構成管理テーブル２０６、RAID構成に関する情報を保持するRAID構成管理テーブル２０７、プール割当てに関する情報を保持するプール割当管理テーブル２０８、ドライブ割当てに関する情報を保持するドライブ割当管理テーブル２０９、実ドライブ割当に関する情報を保持する実ドライブ割当管理テーブル２１０、及び、HAペアに関する情報を保持するHAペア管理テーブル２１１を格納する。【００５４】
ドライブ２８は、SSD（Solid State Drive）でもHDD（Hard Disk Drive）でもよいが、後述のFMD（フラッシュモジュールデバイス）３１（図３参照）でもよい。複数のドライブ２８が、複数のRAIDグループ（パリティグループとも呼ばれる）を構成してよい。各RAIDグループは、１以上のドライブ２８から構成される。【００５５】
HAペア構成では、ストレージ装置１のストレージI/F２９を介して、別のストレージ装置（例えばストレージ装置２）と接続される。ストレージI/F２９には、FC（Fibre Channel）ネットワーク（例えばSAN）やIP（Internet Protocol）ネットワーク（例えばLAN）が接続されてよい。【００５６】
FE I/F２３、BE I/F27及びストレージI/F２９が、インターフェース部の一例である。メモリ２５が、メモリ部の一例である。プロセッサ２４が、プロセッサ部の一例である。【００５７】
＜フラッシュモジュール＞【００５８】
図３には、FMD３１の構成を示す図である。【００５９】
FMD３１は、１以上のFMDコントローラ３２と、１以上のFMDコントローラ３２に接続された１以上のFM（フラッシュメモリ）３９とを有する。【００６０】
FMDコントローラ３２は、ストレージコントローラ２２と通信を行うFE I/F３３、FMへのデータの入出力を制御するプロセッサ３４、圧縮及び伸張を行う圧縮／伸長回路３５、データ管理情報を格納するメモリ３６、及び、FM３９と通信を行うBE I/F３８を有する。【００６１】
FM３９は、１以上のFMチップで構成されている。FMチップは、複数の物理領域で構成されている。具体的には、例えば、FMチップは、NANDフラッシュであり、複数の物理ブロックで構成されている。【００６２】
FMDコントローラ３２は、仮想的なアドレス空間であるドライブアドレス空間３０１を上位システム（ストレージコントローラ２２）に提供する。FMDコントローラ３２は、ドライブアドレス空間３０１の割当管理情報３０３と物理領域を管理する実ドライブアドレス空間３０２の割当管理情報３０４との対応関係を管理する（例えば、圧縮／伸長回路３５によりデータサイズが変化した割当情報の管理）。FMDコントローラ３２は、上位システム（ストレージコントローラ２２）からのI/O（リードもしくはライト）命令で指定されているドライブアドレス空間３０１の割当管理情報３０３に対応した実ドライブアドレス空間３０２の割当管理情報３０４が示す物理領域を特定し、特定した物理領域に対してI/Oを行う。割当管理情報３０３は、例えば、LBA（Logical Block Address）であり、割当管理情報３０４は、例えば、PBA（Physical Block Address）である。つまり、FMDコントローラ３２は、論理アドレス（LBA）と物理アドレス（PBA）のアドレス変換を行う。【００６３】
＜VOL管理テーブル＞【００６４】
図４は、VOL管理テーブル２０５の構成例を示す図である。【００６５】
VOL管理テーブル２０５は、VOL毎にエントリを有する。各エントリは、VOL ID４１、VOL属性４２、アロケーションコピーフラグ４３、VOL容量４４及びプールID４５といった情報を格納する。以下、１つのVOL（図４の説明において「対象VOL」）を例に取る。【００６６】
VOL ID４１は、対象VOLのIDである。VOL属性４２は、対象VOLの属性を示す。アロケーションコピーフラグ４３は、アロケーションコピー機能があるか否か（アロケーション情報のコピーが行われ得るか否か）を示す。VOL容量４４は、対象VOLの容量を示す。プールID４５は、対象VOLに関連付けられているプールのIDである。【００６７】
プロセッサ２４は、XCOPY処理において、VOL管理テーブル４０のアロケーションコピーフラグ４３を参照することで、データ転送を必要としないアロケーション情報コピーが実行可能か否かを判定できる。例えば、アロケーションコピーフラグ４３“有り”ならばアロケーション情報コピーを選択する。ただし、データのコピー元VOL及びコピー先VOLの両方でアロケーションコピー機能が必要なため、コピー元VOL及びコピー先VOLのそれぞれについての判定が必要となる。【００６８】
＜構成管理テーブル＞【００６９】
図５は、プール構成管理テーブル２０６の構成例を示す図である。【００７０】
プールは、１以上のRAIDグループを基に構成された論理記憶領域である。プール構成管理テーブル２０６は、プール毎にエントリを有する。各エントリは、プールID５１、RAIDグループID５２、プール容量５３及びプール使用容量５４といった情報を格納する。以下、１つのプール（図５の説明において「対象プール」）を例に取る。【００７１】
プールID５１は、対象プールのIDである。RAIDグループID５２は、対象プールの基になっている１以上のRAIDグループの各々のIDである。プール容量５３は、対象プールの容量を示す。プール使用容量５４は、対象プールのプール容量のうちVOLに割り当てられている領域の総量を示す。【００７２】
図６は、RAID構成管理テーブル２０７の構成例を示す図である。【００７３】
RAID構成管理テーブル２０７は、RAIDグループ毎にエントリを有する。各エントリは、RAIDグループID６１、ドライブID６２、ドライブ種別６３、容量６４及び使用容量６５といった情報を格納する。以下、１つのRAIDグループ（図６の説明において「対象RAIDグループ」）を例に取る。【００７４】
RAIDグループID６１は、対象RAIDグループのIDである。ドライブID６２は、対象RAIDグループを構成する１以上のドライブの各々のIDである。ドライブ種別６３は、対象RAIDグループを構成するドライブの種別を示す。容量６４は、対象RAIDグループの容量を示す。使用容量６５は、対象RAIDグループの容量のうちの使用されている容量を示す。【００７５】
＜割当管理テーブル＞【００７６】
図７は、プール割当管理テーブル２０８の構成例を示す図である。【００７７】
プール割当管理テーブル２０８は、VOLアドレス（スロットを示すアドレス）毎にエントリを有する。各エントリは、VOL ID７１、VOLアドレス７２、プールID７３、プールアドレス７４及びデータ属性７５といった情報を格納する。以下、１つのVOLアドレス（図７の説明において「対象VOLアドレス」）を例に取る。【００７８】
VOL ID７１は、対象VOLアドレスが属するVOLのIDである。VOLアドレス７２は、対象VOLアドレスである。プールID７３は、対象VOLアドレスに割り当てられているデータ領域を含むプールのIDである。プールアドレス７４は、対象VOLアドレスに割り当てられているデータ領域のアドレス（プールに属するアドレス）である。データ属性７５は、対象VOLアドレスに割り当てられているデータ領域のデータ属性を示す。【００７９】
図８は、ドライブ割当管理テーブル２０９の構成例を示す図である。【００８０】
ドライブ割当管理テーブル２０９は、プールアドレス毎にエントリを有する。各エントリは、プールID８１、プールアドレス８２、RAIDグループID８３、ドライブID８４及びドライブアドレス８５といった情報を格納する。以下、１つのプールアドレス（図８の説明において「対象プールアドレス」）を例に取る。【００８１】
プールID８１は、対象プールアドレスが属するプールのIDである。プールアドレス８２は、対象プールアドレスである。RAIDグループID８３は、対象プールアドレスが示すデータ領域の基になっているRAIDグループのIDである。ドライブID８４は、対象プールアドレスが示すデータ領域の基になっているドライブのIDである。ドライブアドレス８５は、対象プールアドレスに対応したドライブアドレス（例えば、ドライブアドレス空間３０１に属するアドレス（例えばLBA））である。【００８２】
図９は、実ドライブ割当管理テーブル２１０の構成例を示す図である。【００８３】
実ドライブ割当管理テーブル２１０は、ドライブアドレス毎にエントリを有する。各エントリは、ドライブID９１、ドライブアドレス９２、圧縮前サイズ９３、実ドライブID９４、実ドライブアドレス９５、圧縮後サイズ９６及び圧縮率９７といった情報を格納する。以下、１つのドライブアドレス（図９の説明において「対象ドライブアドレス」）を例に取る。【００８４】
ドライブID９１は、対象ドライブアドレスが属するドライブ２８のIDである。ドライブアドレス９２は、対象ドライブアドレスである。圧縮前サイズ９３は、対象ドライブアドレスを指定したライト命令に従うデータの圧縮前のサイズを示す。実ドライブID９４は、対象ドライブアドレスが属するドライブ２８内の記憶媒体（例えばFM）のIDである。実ドライブアドレス９５は、対象ドライブアドレスに割り当てられた実ドライブアドレス（例えば、実ドライブアドレス空間３０２に属するアドレス）である。圧縮後サイズ９６は、対象ドライブアドレスを指定したライト命令に従うデータの圧縮後のサイズを示す。圧縮率９７は、圧縮後サイズ９６／圧縮前サイズ９３の値である。【００８５】
＜論理記憶階層＞【００８６】
図１０は、論理記憶階層の構成例を示す図である。【００８７】
VOL１１１は、ホスト計算機１３に提供される。また、VOL１１１は、コピー処理や重複排除処理によって、VOL内の複数のスロット（又は、複数のVOL）から１つのプールアドレスを指すことがある。図１０の例では、異なる２つのスロット（VOLアドレス）１００６及び１００７が、同一のプールアドレスを指している。なお、VOL１１１からプール１００２の割当は、プール割当管理テーブル２０８を基に管理される。また、プール１００２からドライブアドレス空間１００４（RAIDグループ１００３を構成する複数のドライブが提供する複数のドライブアドレス空間）への割当は、ドライブ割当管理テーブル２０９を基に管理される。【００８８】
圧縮機能を有しないドライブが採用された場合、ドライブアドレス空間１００４がデータの格納先となるが、図３に示したようなFMDが採用された場合、ドライブアドレス空間１００４の下位に実ドライブアドレス空間１００５が存在する。実ドライブアドレス空間１００５に、例えばデータＡの圧縮後のデータａが格納される。【００８９】
＜HAペア管理＞【００９０】
図１１は、HAペア管理テーブル２１１の構成例を示す図である。【００９１】
HAペア管理テーブル２１１は、VOL毎にエントリを有する。各エントリは、ストレージコントローラID１１０１、VOL ID１１０２、HAペア属性１１０３、相手ID１１０４及び仮想ID１１０５といった情報を格納する。以下、１つのVOL（図１１の説明において「対象VOL」）を例に取る。【００９２】
ストレージコントローラID１１０１は、対象VOLを有するストレージ装置内のストレージコントローラ２２のIDである。VOL ID１１０２は、対象VOLのIDである。HAペア属性１１０３は、対象VOLの属性を示す。対象VOLが、HAペアを構成していれば、HAペア属性１１０３は「PVOL」又は「SVOL」である。対象VOLが、HAペアを構成していなければ、HAペア属性１１０３は「なし」である。相手ID１１０４は、対象VOLとHAペアを構成するVOLを有するストレージ装置内のストレージコントローラ２２のIDである。相手ID１１０４は、HAペアの相手のVOLのIDを含んでもよい。仮想ID１１０５は、対象VOLが属する仮想IDである。【００９３】
以下、本実施例で行われる処理の例を説明する。【００９４】
＜リード処理＞【００９５】
図１２は、リード処理を示すフローチャートである。リード処理は、ホスト計算機１３からネットワーク１４を介してストレージ装置１１がリード命令を受けた場合に開始する。リード命令では、例えば、仮想ID（例えば、仮想VOL ID）、アドレス、及びデータサイズが指定される。ストレージ装置１にとっては、仮想IDはPVOLのIDである（ストレージ装置２にとっては、仮想IDはSVOLのIDである）。 【００９６】
S1201で、プロセッサ２４は、リード命令から特定されるスロットの排他を確保する。なお、スロット排他確保時に他の処理がスロットの排他を確保している場合、プロセッサ２４は、一定の時間待ってから、S1201を行う。【００９７】
S1202で、プロセッサ２４は、リードデータがキャッシュ領域２０３に存在するか否かを判定する。S1202の判定結果が真の場合、S1204に進む。S1202の判定結果が偽の場合、プロセッサ２４は、S1203で、RAIDグループからリードデータをキャッシュ領域２０３に転送する。なお、この際、プロセッサ２４は、ホスト計算機１３が指定したVOL IDとVOLアドレスから、プール割当管理テーブル２０８のプールID７３とプールアドレス７４を特定し、ドライブ割当管理テーブル２０９からドライブID８４とドライブアドレス８５を参照する。最後に、プロセッサ２４は、実ドライブ割当管理テーブル２１０から実ドライブID９４と実ドライブアドレス９５を参照し、データの格納場所を特定する。実ドライブアドレスから転送されたデータは、ドライブに再び書き出されるまでキャッシュ領域２０３に存在し、再度リードされた場合にはS1203をスキップする。【００９８】
S1204で、プロセッサ２４は、キャッシュ領域２０３上のリードデータをホスト計算機１３に転送する。ホスト計算機１３は、S1204のデータ転送が完了した時点でリード処理が終了したと認識する。【００９９】
その後、プロセッサ２４は、S1205で、確保していたスロット排他を解除する。【０１００】
＜ライト処理＞【０１０１】
図１３は、ライト処理を示すフローチャートである。ライト処理は、ホスト計算機１３からストレージ装置１１がライト命令を受信した場合に開始する。受信するライト命令として、以下のケースが存在し得る。以下の説明では、ストレージ装置１がライト命令を受信したとする。また、以下の説明では、ストレージ装置１の要素の参照番号に「Ａ」を付す（例えば、プロセッサ２４を「プロセッサ２４Ａ」と言う）。ストレージ装置２の要素の参照番号に「Ｂ」を付す（例えば、プロセッサ２４を「プロセッサ２４Ｂ」と言う）。
・ケース１：  HAペア構成以外のVOLに対するライト命令
・ケース２：  HAペア構成のPVOL１１１Ａに対するライト命令（PVOL１１１Ａが属する仮想IDを指定したライト命令であってストレージ装置１に対するライト命令）
・ケース３：  HAペア構成のSVOL１１１Ｂに対するライト命令（SVOL１１１Ｂが属する仮想IDを指定したライト命令であってストレージ装置２に対するライト命令）【０１０２】
＜ケース１＞【０１０３】
受信したライト命令では、ストレージ装置１のHAペア管理テーブル２１１ＡにおいてHAペア属性１１０３Ａが「なし」のVOLが指定されている。S1301で、プロセッサ２４Ａは、HAペア管理テーブル２１１Ａを参照し、ライト先VOLがHAペアを構成するか否か（HAペア属性１１０３Ａが「PVOL」及び「SVOL」のいずれかであるか否か）を判定する。ケース１では、S1301の判定結果は偽である。このため、S1314で、プロセッサ２４Ａは、ホスト計算機１３から指定されたアドレスが示すスロットの排他を確保する。なお、スロット排他確保と同時に、プロセッサ２４Ａは、データのライト先とするCMスロット（ＣＭ領域２０３Ａの一部の領域）を割り当てる。S1315で、プロセッサ２４Ａは、ホスト計算機１３に対してライト処理の準備ができたことを示す「Ready」を応答する。プロセッサ２４Ａは、「Ready」を受け取ったホスト計算機１３から、ライトデータを受ける。その後、S1316で、プロセッサ２４Ａは、ホスト計算機１３に対してライト完了応答を返す。この時点で、ＣＭ領域２０３Ａへデータライトが完了したとして、ホスト計算機１３はライト処理が完了したとみなす。その後、プロセッサ２４Ａは、S1317で、確保していたスロット排他を解除する。また、S1318で、プロセッサ２４Ａは、ＣＭ領域２０３Ａに格納されたデータをドライブ２８Ａに書き出す（デステージ）。ドライブ２８Ａへの書き出しに対して、プロセッサ２４Ａは、プール、ドライブ、実ドライブをアロケーションし、プール割当管理テーブル２０８Ａ、ドライブ割当管理テーブル２０９Ａ、実ドライブ割当管理テーブル２１０Ａの各テーブルにアロケーション情報を登録する。なお、このデータの書き出しはライト処理と同期しないため必ずしも実行される必要はない。【０１０４】
＜ケース２＞【０１０５】
受信したライト命令を基に、HAペア属性１１０３Ａが「PVOL」のVOL、つまりPVOL１１１Ａが特定される。S1301の判定結果が真である。S1302で、プロセッサ２４Ａは、ライト先のVOLがPVOLか否かを判定する。S1302の判定結果は真である。S1303で、プロセッサ２４Ａは、ホスト計算機１３から指定されたアドレスが示すスロットの排他を確保する。1304で、プロセッサ２４Ａは、「Ready」を応答する。プロセッサ２４Ａは、「Ready」を受けたホスト計算機１３からライトデータを受信する。その後、S1305で、プロセッサ２４Ａは、PVOL１１１ＡとHAペアを構成するSVOL１１１Ｂ（SVOL１１１Ｂを有するストレージ装置２）に対してライト命令とライトデータを転送する。S1306で、ストレージ装置２のプロセッサ２４Ｂは、受信したバッファ領域２０２Ｂにライトデータを一時格納し、ＣＭ領域２０３ＢからＣＭスロットを確保した後、ライトデータをＣＭスロット（ＣＭ領域２０３Ｂ）に転送する。データ転送が完了するとプロセッサ２４Ｂがストレージ装置１に完了応答を返す。ストレージ装置１のプロセッサ２４Ａは、完了応答を受けると、ホスト計算機１３に対してライト処理の完了応答を返す。その後、S1317で、プロセッサ２４Ａが、確保していたスロット排他を解除する。また、S1318で、プロセッサ２４Ａ（及び２４Ｂ）が、ＣＭ領域２０３Ａ（及び２０３Ｂ）上のデータをドライブ２８Ａ（及び２８Ｂ）に書き出す。なお、ケース１同様、ドライブ２８Ａへの書き出しに対して、プロセッサ２４Ａ（及び２８Ｂ）は、プール、ドライブ、実ドライブをアロケーションし、プール割当管理テーブル２０８Ａ（２０８Ｂ）、ドライブ割当管理テーブル２０９Ａ（２０９Ｂ）、実ドライブ割当管理テーブル２１０Ａ（２１０Ｂ）の各テーブルにアロケーション情報を登録する。HAペア構成の場合、上述のように、PVOL１１１Ａ及びSVOL１１１Ｂのそれぞれでドライブへのデータ書き出しが行われる。なお、このデータの書き出しはライト処理と同期しないため必ずしも実行される必要はない。【０１０６】
＜ケース３＞【０１０７】
受信したライト命令を基に、HAペア属性１１０３Ｂが「SVOL」のVOL、つまりSVOL１１１Ｂが特定される。S1301の判定結果が真である。S1302の判定結果が偽である。S1308で、ストレージ装置２のプロセッサ２４Ｂが、「Ready」を応答する。「Ready」を受けたホスト計算機１３から、プロセッサ２４Ｂが、ライトデータを受信する。プロセッサ２４は、受信したデータをバッファ領域２０２Ｂに一時的に格納する。S1309で、プロセッサ２４Ｂが、SVOL１１１ＢとHAペアを構成するPVOL１１１Ａ（PVOL１１１Ａを有するストレージ装置１）に対してライト命令及びライトデータを転送する。ストレージ装置１のプロセッサ２４Ａは、転送されたライトデータをバッファ領域２０２Ａに格納する。S1310で、プロセッサ２４Ａは、ライト命令において指定されたVOLアドレスが示すスロットの排他を確保する。また、スロット排他と同時に、プロセッサ２４Ａは、ＣＭスロット（ＣＭ領域２０３Ａの一部領域）を確保する。S1311で、プロセッサ２４Ａは、バッファ領域２０２ＡからＣＭスロットにデータを転送する。データ転送完了後、プロセッサ２４Ａは、ストレージ装置２に完了応答を返す。S1312で、プロセッサ２４Ｂは、ＣＭスロット（ＣＭ領域２０３Ｂの一部領域）を確保し、バッファ領域２０２ＢからデータをそのＣＭスロットに転送する。データ転送完了後、プロセッサ２４Ｂは、ホスト計算機１３に対してライト処理の完了応答を返す。この時点でホスト計算機は、ライト処理が完了したとみなす。その後、S1313で、プロセッサ２４Ｂは、ストレージ装置１に対してライト先スロットの排他の解除を要求する。S1317で、プロセッサ２４Ａが、その要求に応答して、確保していたスロット排他を解除する。また、S1318で、プロセッサ２４Ｂ（及び２４Ａ）が、ＣＭ領域２０３Ｂ（及び２０３Ａ）上のデータをドライブ２８Ｂ（及び２８Ａ）に書き出す。なお、ケース１、ケース２と同様、ドライブ２８Ｂ（及び２８Ａ）への書き出しに対して、プロセッサ２４Ｂ（及び２４Ａ）が、プール、ドライブ、実ドライブをアロケーションし、プール割当管理テーブル２０８Ｂ（２０８Ａ）、ドライブ割当管理テーブル２０９Ｂ（２０９Ａ）、実ドライブ割当管理テーブル２１０Ｂ（２１０Ａ）の各テーブルにアロケーション情報を登録する。また、ケース２と同様にHAペア構成の場合、上述のように、PVOL１１１Ａ及びSVOL１１１Ｂのそれぞれでドライブへのデータ書き出しが行われる。なお、このデータの書き出しはライト処理と同期しないため必ずしも実行される必要はない。【０１０８】
＜オフロードデータコピー処理＞【０１０９】
図１４は、XCOPY処理を示すフローチャートである。受信するXCOPY命令として、以下のケースが存在し得る。
・ケース１：  PVOLから同一のPVOLへのコピーを指定したXCOPY命令
・ケース２：  PVOLから別のPVOLへのコピーを指定したXCOPY命令
・ケース３：  SVOLから同一のSVOLへのコピーを指定したXCOPY命令
・ケース４：  SVOLから別のSVOLへのコピーを指定したXCOPY命令
・ケース５：  アロケーションコピー機能がないVOLのコピーを指定したXCOPY命令
・ケース６：  PVOLからSVOLへのコピーを指定したXCOPY命令
・ケース７：  SVOLからPVOLへのコピーを指定したXCOPY命令
・ケース８：  PVOLからHAペア構成以外のVOLへのコピーを指定したXCOPY命令
・ケース９：  SVOLからHAペア構成以外のVOLへのコピーを指定したXCOPY命令
・ケース１０：  HAペア構成以外のVOLからPVOLへのコピーを指定したXCOPY命令
・ケース１１：  HAペア構成以外のVOLからSVOLへのコピーを指定したXCOPY命令【０１１０】
＜ケース１及びケース２＞【０１１１】
ホスト計算機１３からストレージ装置１がXCOPY命令を受信する。XCOPY命令では、コピー元VOL情報（VOL ID及びVOLアドレス）及びコピー先VOL情報（VOL ID及びVOLアドレス）が指定されている。【０１１２】
S1401で、プロセッサ２４Ａが、VOL管理テーブル２０５Ａ（及びHAペア管理テーブル２１１Ａ）を参照し、コピー元VOLを探す。コピー元VOLが見つからなければ（S1402:NO）、S1403で、プロセッサ２４Ａは、エラーをホスト計算機１３に返す。【０１１３】
コピー元VOLが見つかれば（S1402:YES）、S1404で、プロセッサ２４Ａは、VOL管理テーブル２０５Ａ（及びHAペア管理テーブル２１１Ａ）を参照し、コピー先VOLを探す。コピー先VOLが見つからなければ（S1405:NO）、プロセッサ２４Ａが、エラーをホスト計算機１３に返す。【０１１４】
コピー元VOLが見つかれば（S1405:YES）、S1407で、プロセッサ２４Ａが、コピー元VOL及びコピー先VOL共にアロケーションコピーフラグ４３Ａが「有り」か否かを判定する。ケース１及びケース２において、S1407の判定結果が真とする。S1408で、プロセッサ２４Ａは、コピー元VOLからコピー先VOLへのアロケーション情報コピー処理（図１５）を行う。【０１１５】
すなわち、図１５に示すように、S1501で、プロセッサ２４Ａは、PVOL間もしくはSVOL間のコピー処理であるか否かを判定する。S1501の判定には、プロセッサ２４Ａは、HAペア管理テーブル２１１Ａを参照し、VOL ID１１０２からHAペア属性１１０３を特定する。コピー元VOL及びコピー先VOL共にPVOLの場合（S1501:YES及びS1502：YES）、S1504で、プロセッサ２４Ａが、コピー元PVOL内のスロット（ホスト計算機１３が指定したVOLアドレスが示すスロット）の排他を確保する。S1505で、プロセッサ２４０Ａが、VOLアドレスに対応したコピー元データ（VOLアドレスに割り当てられるデータ領域）のデータ属性を変更するデータ属性変更（図１６）を行う。すなわち、図１６に示すように、S1601で、プロセッサ２４Ａは、プール割当管理テーブル２０８Ａから、コピー元VOLアドレスに対応するデータ属性７５Ａを参照する。参照したデータ属性７５Ａが「単独」であれば（1602:NO）、S1603で、そのデータ属性７５Ａを「共通」に変更する。その後、図１５のS1506で、プロセッサ２４Ａは、コピー元PVOLとHAペアを構成するSVOLを有するストレージ装置２に対して、コピー元データのデータ属性変更を要求する。その要求に応答して、ストレージ装置２のプロセッサ２４Ｂは、SVOLについてコピー元VOLアドレスに対応したコピー元データのデータ属性を変更するデータ属性変更を行う。すなわち、図１６に示すように、S1601で、プロセッサ２４Ｂが、コピー元VOLアドレスに対応するデータ属性７５Ｂを参照する。そのデータ属性７５Ｂが「単独」であれば（S1602:NO）、プロセッサ２４Ｂは、そのデータ属性７５Ｂを「共通」に変更する。データ属性変更が終了すると、プロセッサ２４Ｂはストレージ装置１に完了応答を返す。完了応答を受けたストレージ装置１のプロセッサ２４Ａは、図１５のS1507で、確保していたスロット排他を解除する。S1508で、プロセッサ２４Ａが、コピー先VOLアドレスが示すスロットの排他を確保する。S1509で、プロセッサ２４Ａが、PVOLに関するアロケーション情報のコピー処理であるVOLコピー処理を行う。【０１１６】
VOLコピー処理は図１７に示す通りである。すなわち、S1701で、プロセッサ２４Ａは、コピー元VOLアドレスに対応したデータ属性７５Ａを再度参照する。参照したデータ属性７５Ａがホスト計算機１３からの更新処理により「単独」に変更されていた場合(S1702:NO)、いわゆるすれ違いを検知したとして、プロセッサ２４Ａは、S1705で、XCOPY処理のやり直し応答を返す。データ属性７５Ａが「共通」のままの場合（S1702:YES）、プロセッサ２４Ａが、S1703で、コピー元VOLアドレスに割り当てられているアロケーション情報をコピー先VOLアドレスにコピーする。具体的には、プロセッサ２４Ａは、プール割当管理テーブル２０８Ａのエントリに、コピー先VOLのVOL ID７１及びVOLアドレス７２を登録し、そのエントリに、コピー元VOLアドレスに対応するプールID７３、プールアドレス７４及びデータ属性７５をコピーする。アロケーション情報コピーが完了すると、S1704で、プロセッサ２４Ａが、Good応答を返す。【０１１７】
図１５に示すように、S1509についてGood応答が返った場合（S1510:YES）、プロセッサ２４Ａが、S1511で、ストレージ装置２に対して、SVOLについてのアロケーション情報のコピー処理であるVOLコピー処理を要求する。プロセッサ２４Ｂは、その要求に応答して、PVOLと同様のVOLコピー処理（図１７を参照して説明したVOLコピー処理）を、SVOLについて行う。プロセッサ２４Ｂは、VOLコピー処理の結果を示す応答をストレージ装置１に返す。【０１１８】
図１５に示すように、S1511についてGood応答が返った場合（S1510:YES）、アロケーション情報コピー処理が終了し、プロセッサ２４Ａが、XCOPY処理の完了をホスト計算機１３に返し、XCOPY処理が終了する（図１４参照）。【０１１９】
S1509又はS1511について、やり直し応答が返った場合（S1510:NO又はS1512:NO）、プロセッサ２４Ａは、S1513で、コピー先スロットの排他を解除する。その後、例えば、プロセッサ２４Ａが、XCOPY処理のエラー（例えばXCOPY命令の再送要求）をホスト計算機１３に返す。【０１２０】
以上が、ケース１及びケース２に該当するXCOPY命令のXCOPY処理である。以下、ケース３以降については、ケース１及びケース２のXCOPY処理との相違点を主に説明する。【０１２１】
＜ケース３及びケース４＞【０１２２】
ケース３及びケース４は、ケース１及びケース２と、例えば、以下の点で相違する。
・ホスト計算機１３からストレージ装置２がXCOPY命令を受信する。
・S1502:NOとなり、プロセッサ２４Ｂが、S1503で、SVOLとHAペアを構成するPVOL（PVOLを有するストレージ装置１）に対して、コピー元VOLアドレスについてデータ属性変更を要求する。その要求に応答して、プロセッサ２４Ａが、S1504以降を行う。【０１２３】
＜ケース５＞【０１２４】
ホスト計算機１３からストレージ装置１もしくはストレージ装置２がXCOPY命令を受信する。以下、ストレージ装置１がXCOPY命令を受信したとする。S1407の判定結果が偽である。S1409で、プロセッサ２４Ａが、コピー元ＶＯＬアドレスからコピー対象のデータをバッファ領域２０２Ａに読み出す。S1410で、プロセッサ２４Ａが、バッファ領域２０２Ａからコピー先VOLアドレスへコピー対象データを書き込む。【０１２５】
＜ケース６−ケース１１＞【０１２６】
ホスト計算機１３からストレージ装置１もしくはストレージ装置２がXCOPY命令を受信する。以下、ストレージ装置１がXCOPY命令を受信したとする。また、S1407の判定結果が真の場合を例に取る。S1501の判定結果が偽である（S1501:NO）。そこで、プロセッサ２４Ａは、S1514で、コピー元VOLアドレスが示すスロットの排他を確保する。S1515で、プロセッサ２４Ａが、コピー元VOLアドレスが指すコピー元データのデータ属性変更を行う。S1515のデータ属性変更の詳細は、図１６に示す通りである。すなわち、プロセッサ２４Ａが、コピー元データのデータ属性７５Ａが「単独」であれば、そのデータ属性７５Ａを「共通」に変更する。プロセッサ２４Ａは、S1516で、確保していたコピー元データのスロット排他を解除する。プロセッサ２４Ａは、S1517で、コピー先VOLアドレスについてスロットの排他を確保する。プロセッサ２４Ａは、S1518で、アロケーション情報のVOLコピー処理を行う。このVOLコピー処理の詳細は、図１７に示す通りである。すなわち、プロセッサ２４Ａが、データ属性７５Ａが「共通」のままの場合、コピー元VOLアドレスについてのアロケーション情報をコピー先VOLアドレスにコピーする。プロセッサ２４Ａは、S1519で、コピー先VOLアドレスについてのスロット排他を解除する。プロセッサ２４Ａは、S1520で、VOLコピー処理が正常に完了したか否か（Good応答が返されたか否か）を判定する。S1520の判定結果が偽の場合（S1520:NO）、処理がS1514に戻る。S1520の判定結果が真の場合（S1520:YES）、XCOPY処理が終了する。【０１２７】
以上説明したように、本実施例に係るストレージシステム１００では、ストレージ装置１１全体がダウンしてもシステムを稼動させることのできるHAペア構成による高い信頼性を実現しながら、データ処理時間の削減およびホスト計算機１３の負荷の減少といった高性能化及びリソース効率化を実現したオフロードデータコピーを可能とすることができる。
【実施例２】
【０１２８】
実施例２を説明する。その際、実施例１との相違点を主に説明し、実施例１との共通点については説明を省略又は簡略する。【０１２９】
実施例２では、プロセッサ２４Ａは、HAペア構成の更新処理にはPVOL１１１Ａのスロットの排他が必要なことを利用し、PVOL１１１Ａのコピー元アドレス１及びコピー先アドレス２の排他の確保を同時に行う（つまり、図１の（Ｓ２）で、コピー元アドレス１とコピー先アドレス２の両方の排他を確保する）。また、プロセッサ２４Ａは、アロケーション情報のコピー後にスロットの排他を解除する。このような機能は、ストレージ装置１に加えてストレージ装置１以外の各ストレージ装置が有する。【０１３０】
なお、プロセッサ２４Ａは、図１の（Ｓ７）の前に、コピー先アドレス２の排他を確保し、排他の解除を、コピー元アドレス１とコピー先アドレス２の両方について同時に行ってもよい。【０１３１】
以上、本発明は上記した実施例に限定されるものではなく、さまざまな変形例が含まれる。また、上記した実施礼は本発明をわかりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることも可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段などは、それらの一部又は全部を、例えば集積回路で設計するなどによりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。【０１３２】
各機能を実現するプログラム、テーブル、ファイルなどの情報は、メモリ、HDD、SSD、ICカード、SDカード又はDVDのような記憶デバイスに置いてもよい。また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。【０１３３】
また、各要素、例えば、コントローラは番号等で識別可能であるが、各要素を識別可能な情報であれば、名前など各種の識別情報が用いられてもよい。上記実施例の図及び説明において同一部分には同一符号を付与しているが、本発明が上記実施例に制限されることは無く、本発明の思想に合致するあらゆる応用例が本発明の技術的範囲に含まれる。また、特に限定しない限り、各構成要素は複数でも単数でも構わない。【０１３４】
また、本発明は、図１８に示すように２以上のHAペア構成がカスケード状になっている構成にも適用可能である（SVOL/PVOLは、或るHAペアではSVOLであり、別のHAペアではPVOLであることを意味する）。また、本発明は、HAペアに限らず、SVOLに対してライトが発生し得る他種のVOLペア（PVOLとSVOLとのペア）にも適用されてもよい。
【符号の説明】
【０１３５】
１００…ストレージシステム
【図１】
0006643524.tif 000002
【図２】
0006643524.tif 000003
【図３】
0006643524.tif 000004
【図４】
0006643524.tif 000005
【図５】
0006643524.tif 000006
【図６】
0006643524.tif 000007
【図７】
0006643524.tif 000008
【図８】
0006643524.tif 000009
【図９】
0006643524.tif 000010
【図１０】
0006643524.tif 000011
【図１１】
0006643524.tif 000012
【図１２】
0006643524.tif 000013
【図１３】
0006643524.tif 000014
【図１４】
0006643524.tif 000015
【図１５】
0006643524.tif 000016
【図１６】
0006643524.tif 000017
【図１７】
0006643524.tif 000018
【図１８】
0006643524.tif 000019