(57)【要約】【課題】移行元ボリュームグループがＰＶＯＬ及びＳＶＯＬ１を有し、移行先ボリュームグループが当該ＰＶＯＬ及びＳＶＯＬ２を有する場合、ライト対象のデータをＰＶＯＬ、ＳＶＯＬ１及びＳＶＯＬ２に並列に書き込むと、いわゆるデータ化けが起こり得る。【解決手段】第１乃至３のストレージ装置が、それぞれ、ＳＶＯＬ１、ＳＶＯＬ２及びＰＶＯＬを有する。ライトコマンドがＰＶＯＬ、ＳＶＯＬ１及びＳＶＯＬ２のいずれを指定していても、第１乃至第３のストレージ装置の少なくとも一つが、当該ライトコマンドに従うライト対象のデータをＰＶＯＬに書き込み、その後に、当該ライト対象のデータを並列にＳＶＯＬ１及びＳＶＯＬ２に書き込む。リードコマンドがＰＶＯＬ、ＳＶＯＬ１及びＳＶＯＬ２のいずれを指定していても、第１乃至第３のストレージ装置の少なくとも一つが、当該リードコマンドに従うリード対象のデータをＰＶＯＬから読み出す。【選択図】図１
2020013227.tif 000002
【特許請求の範囲】
【請求項１】
仮想ボリュームの基になる複数の物理ボリュームを含んだ第１のボリュームグループを第２のボリュームグループに移行する複数のストレージ装置を備え、
前記第１のボリュームグループは、いずれもＩ／Ｏ（Input/Output）コマンドで指定され得る物理ボリュームであるプライマリ物理ボリュームと第１のセカンダリ物理ボリュームとを含んだグループであって、当該グループにおける物理ボリューム間でデータが同期するグループであり、
前記第２のボリュームグループは、いずれもＩ／Ｏコマンドで指定され得る物理ボリュームである前記プライマリ物理ボリュームと第２のセカンダリ物理ボリュームとを含んだグループであって、当該グループにおける物理ボリューム間でデータが同期するグループであり、
前記複数のストレージ装置は、前記第１のセカンダリ物理ボリュームを有するストレージ装置である第１のストレージ装置と、前記第２のセカンダリ物理ボリュームを有するストレージ装置である第２のストレージ装置と、前記プライマリ物理ボリュームを有するストレージ装置である第３のストレージ装置とを含み、
Ｉ／Ｏコマンドとしてライトコマンドが受け付けられ、且つ、当該受け付けられたライトコマンドが前記プライマリ物理ボリューム、前記第１のセカンダリ物理ボリューム及び前記第２のセカンダリ物理ボリュームのいずれを指定していても、前記第１乃至第３のストレージ装置の少なくとも一つが、当該ライトコマンドに従うライト対象のデータを前記プライマリ物理ボリュームに書き込み、その後に、当該ライト対象のデータを前記第１のセカンダリ物理ボリューム及び前記第２のセカンダリ物理ボリュームに書き込み、
Ｉ／Ｏコマンドとしてリードコマンドが受け付けられ、且つ、当該受け付けられたリードコマンドが前記プライマリ物理ボリューム、前記第１のセカンダリ物理ボリューム及び前記第２のセカンダリ物理ボリュームのいずれを指定していても、前記第１乃至第３のストレージ装置の少なくとも一つが、当該リードコマンドに従うリード対象のデータを前記プライマリ物理ボリュームから読み出す、
ストレージシステム。
【請求項２】
Ｉ／Ｏコマンドとしてライトコマンドが受け付けられ、且つ、当該受け付けられたライトコマンドが、前記第１のセカンダリ物理ボリュームを指定している場合、
前記第１のストレージ装置が、当該ライトコマンドに従うライト対象のデータを前記第１のセカンダリ物理ボリュームに書き込むこと無しに、当該ライト対象のデータを前記プライマリ物理ボリュームに書き込むために前記プライマリ物理ボリュームを指定したライトコマンドを前記第３のストレージ装置に送信し、
前記第３のストレージ装置が、当該ライトコマンドに応答して、前記ライト対象のデータを前記プライマリ物理ボリュームに書き込み、その後に、当該ライト対象のデータを前記第２のセカンダリ物理ボリュームに書き込むために前記第２のセカンダリ物理ボリュームを指定したライトコマンドを前記第２のストレージ装置に送信し、
前記第２のストレージ装置が、前記第３のストレージ装置からのライトコマンドに応答して、前記ライト対象のデータを前記第２のセカンダリ物理ボリュームに書き込み、完了応答を前記第３のストレージ装置に返し、
前記第３のストレージ装置が、当該完了応答を受けた場合、前記第１のストレージ装置からのライトコマンドに対する完了応答を前記第１のストレージ装置に返し、
前記第１のストレージ装置が、当該完了応答を受けた場合、前記ライト対象のデータを前記第１のセカンダリ物理ボリュームに書き込み、前記受け付けられたライトコマンドに対する完了応答を返し、
Ｉ／Ｏコマンドとしてライトコマンドが受け付けられ、且つ、当該受け付けられたライトコマンドが、前記第２のセカンダリ物理ボリュームを指定している場合、
前記第２のストレージ装置が、当該ライトコマンドに従うライト対象のデータを前記第２のセカンダリ物理ボリュームに書き込むこと無しに、当該ライト対象のデータを前記プライマリ物理ボリュームに書き込むために前記プライマリ物理ボリュームを指定したライトコマンドを前記第３のストレージ装置に送信し、
前記第３のストレージ装置が、当該ライトコマンドに応答して、前記ライト対象のデータを前記プライマリ物理ボリュームに書き込み、その後に、当該ライト対象のデータを前記第１のセカンダリ物理ボリュームに書き込むために前記第１のセカンダリ物理ボリュームを指定したライトコマンドを前記第１のストレージ装置に送信し、
前記第１のストレージ装置が、前記第３のストレージ装置からのライトコマンドに応答して、前記ライト対象のデータを前記第１のセカンダリ物理ボリュームに書き込み、完了応答を前記第３のストレージ装置に返し、
前記第３のストレージ装置が、当該完了応答を受けた場合、前記第２のストレージ装置からのライトコマンドに対する完了応答を前記第２のストレージ装置に返し、
前記第２のストレージ装置が、当該完了応答を受けた場合、前記ライト対象のデータを前記第２のセカンダリ物理ボリュームに書き込み、前記受け付けられたライトコマンドに対する完了応答を返す、
請求項１に記載のストレージシステム。
【請求項３】
Ｉ／Ｏコマンドとしてライトコマンドが受け付けられ、且つ、当該受け付けられたライトコマンドが、前記プライマリ物理ボリュームを指定している場合、
前記第３のストレージ装置が、当該ライトコマンドに応答して、前記ライト対象のデータを前記プライマリ物理ボリュームに書き込み、その後に、当該ライト対象のデータを前記第１のセカンダリ物理ボリュームに書き込むために前記第１のセカンダリ物理ボリュームを指定したライトコマンドを前記第１のストレージ装置に送信することと、当該ライト対象のデータを前記第２のセカンダリ物理ボリュームに書き込むために前記第２のセカンダリ物理ボリュームを指定したライトコマンドを前記第２のストレージ装置に送信することとを並列に行い、
前記第１のストレージ装置が、前記第３のストレージ装置からのライトコマンドに応答して、前記ライト対象のデータを前記第１のセカンダリ物理ボリュームに書き込み、完了応答を前記第３のストレージ装置に返し、
前記第２のストレージ装置が、前記第３のストレージ装置からのライトコマンドに応答して、前記ライト対象のデータを前記第２のセカンダリ物理ボリュームに書き込み、完了応答を前記第３のストレージ装置に返し、
前記第３のストレージ装置が、前記第１及び第２のストレージ装置の各々から完了応答を受けた場合、前記受け付けられたライトコマンドに対する完了応答を返す、
請求項１に記載のストレージシステム。
【請求項４】
Ｉ／Ｏコマンドとしてライトコマンドが受け付けられ、且つ、当該受け付けられたライトコマンドが前記プライマリ物理ボリューム、前記第１のセカンダリ物理ボリューム及び前記第２のセカンダリ物理ボリュームのいずれを指定していても、
前記第３のストレージ装置は、
前記プライマリ物理ボリュームについて、ライト不可且つリード不可の排他ロックをし、
前記ライト対象のデータを、前記プライマリ物理ボリュームに書き込み、
当該排他ロックを解除し、
前記第１のストレージ装置は、
前記第１のセカンダリ物理ボリュームについて、ライト不可且つリード可の排他ロックをし、
前記ライト対象のデータを、前記第１のセカンダリ物理ボリュームに書き込み、
当該排他ロックを解除し、
前記第２のストレージ装置は、
前記第２のセカンダリ物理ボリュームについて、ライト不可且つリード可の排他ロックをし、
前記ライト対象のデータを、前記第２のセカンダリ物理ボリュームに書き込み、
当該排他ロックを解除する、
請求項１に記載のストレージシステム。
【請求項５】
Ｉ／Ｏコマンドとしてリードコマンドが受け付けられ、且つ、当該受け付けられたリードコマンドが前記第１のセカンダリ物理ボリュームを指定している場合、
前記第１のストレージ装置が、当該リードコマンドに従うリード対象のデータを前記第１のセカンダリ物理ボリュームから読み出すこと無しに、当該リード対象のデータを前記プライマリ物理ボリュームから読み出すために前記プライマリ物理ボリュームを指定したリードコマンドを前記第３のストレージ装置に送信し、
前記第３のストレージ装置が、当該リードコマンドに応答して前記リード対象のデータを前記プライマリ物理ボリュームから読み出し、当該リード対象のデータを前記第１のストレージ装置に返し、
前記第１のストレージ装置が、前記第３のストレージ装置からの前記リード対象のデータを、前記受け付けられたリードコマンドの応答として返し、
Ｉ／Ｏコマンドとしてリードコマンドが受け付けられ、且つ、当該受け付けられたリードコマンドが前記第２のセカンダリ物理ボリュームを指定している場合、
前記第２のストレージ装置が、当該リードコマンドに従うリード対象のデータを前記第２のセカンダリ物理ボリュームから読み出すこと無しに、当該リード対象のデータを前記プライマリ物理ボリュームから読み出すために前記プライマリ物理ボリュームを指定したリードコマンドを前記第３のストレージ装置に送信し、
前記第３のストレージ装置が、当該リードコマンドに応答して前記リード対象のデータを前記プライマリ物理ボリュームから読み出し、当該リード対象のデータを前記第２のストレージ装置に返し、
前記第２のストレージ装置が、前記第３のストレージ装置からの前記リード対象のデータを、前記受け付けられたリードコマンドの応答として返し、
請求項１に記載のストレージシステム。
【請求項６】
前記第１のストレージ装置は、前記リード対象のデータを前記第３のストレージ装置から受信できない場合、前記受け付けられたリードコマンドに応答して前記第１のセカンダリ物理ボリュームからの読出しを行うこと無しに、前記受け付けられたリードコマンドの応答としてエラーを返し、
前記第２のストレージ装置は、前記リード対象のデータを前記第３のストレージ装置から受信できない場合、前記受け付けられたリードコマンドに応答して前記第２のセカンダリ物理ボリュームからの読出しを行うこと無しに、前記受け付けられたリードコマンドの応答としてエラーを返す、
請求項５に記載のストレージシステム。
【請求項７】
仮想ボリュームの基になる複数の物理ボリュームを含んだ第１のボリュームグループを第２のボリュームグループに移行する複数のストレージ装置を備えたストレージシステムが行う記憶制御方法であって、
前記第１のボリュームグループは、いずれもＩ／Ｏ（Input/Output）コマンドで指定され得る物理ボリュームであるプライマリ物理ボリュームと第１のセカンダリ物理ボリュームとを含んだグループであって、当該グループにおける物理ボリューム間でデータが同期するグループであり、
前記第２のボリュームグループは、いずれもＩ／Ｏコマンドで指定され得る物理ボリュームである前記プライマリ物理ボリュームと第２のセカンダリ物理ボリュームとを含んだグループであって、当該グループにおける物理ボリューム間でデータが同期するグループであり、
前記複数のストレージ装置は、前記第１のセカンダリ物理ボリュームを有するストレージ装置である第１のストレージ装置と、前記第２のセカンダリ物理ボリュームを有するストレージ装置である第２のストレージ装置と、前記プライマリ物理ボリュームを有するストレージ装置である第３のストレージ装置とを含み、
前記記憶制御方法は、
Ｉ／Ｏコマンドとしてライトコマンドが受け付けられ、且つ、当該受け付けられたライトコマンドが前記プライマリ物理ボリューム、前記第１のセカンダリ物理ボリューム及び前記第２のセカンダリ物理ボリュームのいずれを指定していても、当該ライトコマンドに従うライト対象のデータを前記プライマリ物理ボリュームに書き込み、その後に、当該ライト対象のデータを前記第１のセカンダリ物理ボリューム及び前記第２のセカンダリ物理ボリュームに書き込み、
Ｉ／Ｏコマンドとしてリードコマンドが受け付けられ、且つ、当該受け付けられたリードコマンドが前記プライマリ物理ボリューム、前記第１のセカンダリ物理ボリューム及び前記第２のセカンダリ物理ボリュームのいずれを指定していても、当該リードコマンドに従うリード対象のデータを前記プライマリ物理ボリュームから読み出す、
記憶制御方法。
【請求項８】
仮想ボリュームの基になる複数の物理ボリュームを含んだ第１のボリュームグループを第２のボリュームグループに移行する複数のストレージ装置のうちのいずれのストレージ装置で実行されても、当該ストレージ装置である対象ストレージ装置に、
Ｉ／Ｏ（Input/Output）コマンドとしてライトコマンドが受け付けられ、且つ、前記対象ストレージ装置が有する物理ボリュームと当該ライトコマンドで指定されている物理ボリュームが、プライマリ物理ボリューム、第１のセカンダリ物理ボリューム及び第２のセカンダリ物理ボリュームのいずれであっても、当該ライトコマンドに従うライト対象のデータを前記プライマリ物理ボリュームに書き込み、その後に、当該ライト対象のデータを前記第１のセカンダリ物理ボリューム及び前記第２のセカンダリ物理ボリュームの少なくとも一つに書き込み、
Ｉ／Ｏコマンドとしてリードコマンドが受け付けられ、且つ、前記対象ストレージ装置が有する物理ボリュームと当該リードコマンドで指定されている物理ボリュームが、前記プライマリ物理ボリューム、前記第１のセカンダリ物理ボリューム及び前記第２のセカンダリ物理ボリュームのいずれであっても、当該リードコマンドに従うリード対象のデータを前記プライマリ物理ボリュームから読み出す、
ことを実行させ、
前記第１のボリュームグループは、いずれもＩ／Ｏコマンドで指定され得る物理ボリュームであるプライマリ物理ボリュームと第１のセカンダリ物理ボリュームとを含んだグループであって、当該グループにおける物理ボリューム間でデータが同期するグループであり、
前記第２のボリュームグループは、いずれもＩ／Ｏコマンドで指定され得る物理ボリュームである前記プライマリ物理ボリュームと第２のセカンダリ物理ボリュームとを含んだグループであって、当該グループにおける物理ボリューム間でデータが同期するグループであり、
前記複数のストレージ装置は、前記第１のセカンダリ物理ボリュームを有するストレージ装置である第１のストレージ装置と、前記第２のセカンダリ物理ボリュームを有するストレージ装置である第２のストレージ装置と、前記プライマリ物理ボリュームを有するストレージ装置である第３のストレージ装置とを含む、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、ストレージシステムに関し、特に、ストレージシステムにおけるボリュームグループの移行に関する。
【背景技術】
【０００２】
背景技術として、特許文献１がある。特許文献１は、「移行前ボリュームグループから移行後ボリュームグループへの移行を行う複数ストレージ装置、を含むストレージシステムであって、前記複数ストレージ装置は、前記移行中において、前記移行前ボリュームグループ及び前記移行後ボリュームグループの複数ボリューム内の任意ボリュームへのホストからのライトコマンドを受け付け、前記複数ストレージ装置は、前記複数ボリュームのそれぞれに、予め定められた順番で、前記ライトコマンドのライトデータを書き込み、前記複数ストレージ装置における第１ストレージ装置は、前記複数ボリュームにおける最後において、最後ボリュームに前記ライトデータを書き込み、前記複数ストレージ装置において前記最後ボリュームと異なるボリュームを提供するストレージ装置は、前記異なるボリュームそれぞれにおいて、排他ロックを行ってから前記ライトデータを書き込み、前記最後ボリュームへの前記ライトデータの書き込み完了後に前記排他ロックを解除する。」を開示する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第6234557号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
エンタプライズクラスのストレージシステムでは、ストレージ装置のクラスタ構成によるHigh Availability（ＨＡ）機能が求められている。ＨＡ機能は、ストレージシステムの高可用性を実現する。ＨＡ構成は、二重化された系を有し、障害発生時には自動的に故障した系を切り離し、正常な系のみを用いて動作を継続する。
【０００５】
さらに、Active-Active型ＨＡ構成は、全ての系を稼動系として運用する。Active-Active型ＨＡ構成において、ストレージシステムは、ボリュームペアのいずれのＩ／Ｏ（Input/Output）アクセスも受け付ける。
【０００６】
Active-Active型ＨＡ構成のストレージシステムにおけるデータ移行では、ホストＩ／Ｏ無停止かつActive-Active型ＨＡ構成を維持したまま、データを移行することが求められる。つまり、Active-Active型ＨＡ構成の高可用性を維持しながらのデータ移行が求められる。
【０００７】
Active-Active型ＨＡ構成に従うボリュームグループとして、仮想ボリュームの基になる複数の物理ボリュームを含んだ第１及び第２のボリュームグループがあるとする。第１のボリュームグループは、いずれもＩ／Ｏコマンドで指定され得るＰＶＯＬ（プライマリ物理ボリューム）とＳＶＯＬ１（第１のセカンダリ物理ボリューム）とを含んだグループであって、当該グループにおける物理ボリューム間でデータが同期するグループである。第２のボリュームグループは、いずれもＩ／Ｏコマンドで指定され得る上記ＰＶＯＬとＳＶＯＬ２（第２のセカンダリ物理ボリューム）とを含んだグループであって、当該グループにおける物理ボリューム間でデータが同期するグループである。第１のボリュームグループは移行元であり、第２のボリュームグループは移行先である。
【０００８】
受け付けられたライトコマンドに従うライト先がＰＶＯＬ、ＳＶＯＬ１及びＳＶＯＬ２のいずれかの場合、ライト対象のデータをＰＶＯＬ、ＳＶＯＬ１及びＳＶＯＬ２に並列に書き込むことで、高速に当該ライトコマンドを処理することが期待できる。しかし、ライト対象のデータが同時にＰＶＯＬ、ＳＶＯＬ１及びＳＶＯＬ２の全てに必ずしも書き込まれるわけではない。このため、例えば、上述の仮想ボリュームの或るアドレス（例えばＬＢＡ（Logical Block Address））についてＰＶＯＬ、ＳＶＯＬ１及びＳＶＯＬ２のうちのいずれか一つから読み出されたデータが、その後に同一のアドレスについてＰＶＯＬ、ＳＶＯＬ１及びＳＶＯＬ２のうちの別のいずれか一つから読み出されたデータが異なっていること、つまり、いわゆるデータ化けが起こることがあり得る。
【課題を解決するための手段】
【０００９】
ストレージシステムにおいて、第１のストレージ装置がＳＶＯＬ１を有し、第２のストレージ装置がＳＶＯＬ２を有し、第３のストレージ装置がＰＶＯＬを有する。ライトコマンドがＰＶＯＬ、ＳＶＯＬ１及びＳＶＯＬ２のいずれを指定していても、第１乃至第３のストレージ装置の少なくとも一つが、当該ライトコマンドに従うライト対象のデータをＰＶＯＬに書き込み、その後に、当該ライト対象のデータを並列にＳＶＯＬ１及びＳＶＯＬ２に書き込む。リードコマンドがＰＶＯＬ、ＳＶＯＬ１及びＳＶＯＬ２のいずれを指定していても、第１乃至第３のストレージ装置の少なくとも一つが、当該リードコマンドに従うリード対象のデータをＰＶＯＬから読み出す。
【発明の効果】
【００１０】
ＰＶＯＬ、ＳＶＯＬ１及びＳＶＯＬ２に並列に書き込むことが行われても、いわゆるデータ化けが起こり得ることを防ぐことができる。
【図面の簡単な説明】
【００１１】
【図１】ＨＡマルチターゲット構成におけるボリュームペア移行の概要を説明する図である。
【図２】計算機システムの構成例を示す図である。
【図３】ホスト計算機の構成例を示す図である。
【図４】物理ストレージ装置のハードウェア構成例を示す図である。
【図５】物理ストレージ装置のソフトウェア構成例を示す図である。
【図６Ａ】リソース管理テーブルの構成例を示す図である。
【図６Ｂ】ホストグループ管理テーブルの構成例を示す図である。
【図７】仮想ストレージボックス管理テーブルの構成例を示す図である。
【図８】仮想ストレージ管理テーブルの構成例を示す図である。
【図９Ａ】ボリュームコピーペア管理テーブルの構成例を示す図である。
【図９Ｂ】排他ロック管理テーブルの構成例を示す図である。
【図１０】ＨＡボリューム移行ステップを示す図である。
【図１１】ホスト計算機からのＷＲＩＴＥコマンドでＰＶＯＬが指定されているケースについてのライト処理の流れを示す図である。
【図１２】ホスト計算機からのＷＲＩＴＥコマンドでＳＶＯＬ１が指定されているケースについてのライト処理の流れを示す図である。
【図１３】ホスト計算機からのＷＲＩＴＥコマンドでＳＶＯＬ２が指定されているケースについてのライト処理の流れを示す図である。
【図１４】ホスト計算機からのＲＥＡＤコマンドでＰＶＯＬが指定されているケースについてのライト処理の流れを示す図である。
【図１５】ホスト計算機からのＲＥＡＤコマンドでＳＶＯＬ１が指定されているケースについてのライト処理の流れを示す図である。
【図１６】ホスト計算機からのＲＥＡＤコマンドでＳＶＯＬ２が指定されているケースについてのライト処理の流れを示す図である。
【発明を実施するための形態】
【００１２】
以下の説明では、「インタフェース部」は、一つ以上のインタフェースでよい。当該一つ以上のインタフェースは、一つ以上の同種の通信インタフェースデバイス（例えば一つ以上のＮＩＣ（Network Interface Card））であってもよいし二つ以上の異種の通信インタフェースデバイス（例えばＮＩＣとＨＢＡ（Host Bus Adapter））であってもよい。
【００１３】
また、以下の説明では、「メモリ部」は、一つ以上のメモリであり、典型的には主記憶デバイスでよい。
【００１４】
また、以下の説明では、「記憶デバイス部」は、一つ以上の記憶デバイスであり、典型的には補助記憶デバイスでよい。「記憶デバイス」は、特に、物理的な記憶デバイス（Physical storage DEVice）を意味し、典型的には、不揮発性の記憶デバイスである。
【００１５】
また、以下の説明では、「記憶部」は、メモリ部と記憶デバイス部の少なくとも一部とのうちの少なくとも一つ（典型的には少なくともメモリ部）である。
【００１６】
また、以下の説明では、「プロセッサ部」は、一つ以上のプロセッサである。少なくとも一つのプロセッサは、典型的には、ＣＰＵ（Central Processing Unit）のようなマイクロプロセッサであるが、ＧＰＵ（Graphics Processing Unit）のような他種のプロセッサでもよい。少なくとも一つのプロセッサは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサは、処理の一部又は全部を行うハードウェア回路（例えばＦＰＧＡ（Field-Programmable Gate Array）又はＡＳＩＣ（Application Specific Integrated Circuit））といった広義のプロセッサでもよい。
【００１７】
また、以下の説明では、「ｘｘｘテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、この種の情報は、どのような構造のデータでもよいし、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「ｘｘｘテーブル」を「ｘｘｘ情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、一つのテーブルは、二つ以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
【００１８】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部及び／又はインタフェース部等を用いながら行うため、処理の主語が、プロセッサ部（或いは、そのプロセッサ部を有するコントローラのようなデバイス）とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な（例えば非一時的な）記録媒体であってもよい。また、以下の説明において、二つ以上のプログラムが一つのプログラムとして実現されてもよいし、一つのプログラムが二つ以上のプログラムとして実現されてもよい。
【００１９】
また、以下の説明では、「ストレージシステム」は、複数の物理ストレージ装置で構成されるが、それら複数の物理ストレージ装置のうちの少なくとも一つが汎用計算機でもよい。当該少なくとも一つの汎用計算機が所定のソフトウェアを実行することにより、当該汎用計算機、又は、当該物理的な計算機を含んだシステムに、ＳＤｘ（Software-Defined anything）が構築されてもよい。ＳＤｘとしては、例えば、ＳＤＳ（Software Defined Storage）又はＳＤＤＣ（Software-defined Datacenter）を採用することができる。例えば、ストレージ機能を有するソフトウェアが汎用計算機で実行されることにより、ＳＤＳとしてのストレージ装置が構築されてもよい。
【００２０】
また、以下の説明では、「物理ＶＯＬ」は、ＨＡペアを構成するボリュームであり、論理的な記憶デバイス（例えばアドレス空間）でよい。物理ボリュームは、ストレージシステムが有する物理的な記憶資源（例えば、一つ以上の記憶デバイス）に基づく実体的なボリュームでもよいし、仮想化技術（例えば、Thin Provisioning）に従う仮想的なボリュームでもよい。
【００２１】
以下、添付図面を参照して本発明の一実施例を説明する。本実施例は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。各図において共通の構成については同一の参照符号が付されている。
【００２２】
以下に説明するストレージシステムは、Active-Active型ＨＡ構成を有する。ＨＡ構成は、二重化された系を有し、障害発生時には自動的に故障した系を切り離し、正常な系のみを用いて動作を継続するための自動障害回復機能を備える。Active-Active型ＨＡ構成は、全ての系を稼動系として運用することで、リソースの有効活用及び負荷分散を実現する。以下の説明において、ＨＡ構成及びＨＡペアは、Active-Active型のＨＡ構成及びＨＡペアを意味する。ストレージシステムは、ＨＡペアのいずれに対するＩ／Ｏアクセスも受け付ける。
【００２３】
以下においては、ＨＡペアの移行を説明する。具体的には、ＨＡペアの移行は、移行前ＨＡペアの一つを別のボリュームに移行し、移行前ＨＡペアの他方と新たなボリュームとで、移行後ＨＡペアを構成する。ストレージシステムは、移行中において、全てのボリュームへのＩ／Ｏアクセスを受け付ける。ストレージシステムは、移行完了後に、ＨＡペアを切り替える。なお、ＨＡペアが、Active-Active型ＨＡ構成のボリュームグループの一例である。移行前ＨＡペアが、移行元である第１のボリュームグループの一例である。移行後ＨＡペアが、移行先である第２のボリュームグループの一例である。なお、「Active-Active型ＨＡ構成のボリュームグループ」とは、いずれもＩ／Ｏ（Input/Output）コマンドで指定され得る二つ以上の物理ボリュームを含んだグループであって、当該グループにおける物理ボリューム間でデータが同期するグループである。
【００２４】
ＨＡペアは、Primary Volume（ＰＶＯＬ）とSecondary Volume（ＳＶＯＬ）とで構成される。一例において、ストレージシステムは、ペア作成時に、ＰＶＯＬのデータをＳＶＯＬにコピーする。
【００２５】
非移行時において、ストレージシステムは、ＳＶＯＬへのＷＲＩＴＥコマンドを受信すると、ＰＶＯＬへのライトデータの書き込み（ライトキャッシュへの書き込み又は記憶ドライブへの書き込みのいずれか）終了後に、ＳＶＯＬへのライトデータの書き込みを行う。一例において、ＰＶＯＬへのＩ／Ｏアクセスは、ＰＶＯＬの排他ロックを伴い、ＳＶＯＬへのＩ／Ｏアクセスにおいて排他ロックは使用されない。ＳＶＯＬへのアクセスにおいて排他ロックが使用されてもよい。
【００２６】
移行時において、ライト処理に関し、ＰＶＯＬについての排他ロックは、他のライト処理及びリード処理を禁止するが、ＳＶＯＬについての排他ロックは、他のライト処理を禁止するものの、リード処理を禁止しない。リード処理における排他ロックは、他のライト処理を禁止し、他のリード処理を禁止しても禁止しなくともよい。リード処理における排他ロックは、他のリード処理を許可することでホストへの応答遅延を抑制できる。
【００２７】
図１は、ボリューム移行における、ＨＡマルチターゲット構成の概要を示す図である。図１の例によれば、ＨＡマルチターゲット構成は、一つのボリュームを二つのＨＡペアの共通のＰＶＯＬとし、それらの三つのボリュームで二つのＨＡペアを構成する。
【００２８】
図１のシステムは、ホスト計算機１０００と、物理ストレージ装置（単にストレージ装置とも呼ぶ）２０００と、仮想ストレージ装置３０００とを含む。仮想ストレージ装置３０００は、ストレージシステムを構成する複数の物理ストレージ装置２０００に基づく。
【００２９】
本システムは、複数物理ストレージ装置２０００によるActive-Active型ＨＡ構成（以下、ＨＡボリューム構成とも呼ぶ）を有する。複数物理ストレージ装置２０００は、単一の仮想ストレージ装置３０００として、ホスト計算機１０００に提供される。各物理ストレージ装置２０００は、ホスト計算機１０００からの要求に対して、同一のストレージ装置構成情報、すなわち仮想ストレージ装置１（３０００）の構成情報を提供する。
【００３０】
図１の例において、物理ストレージ装置１（２０００）の物理ＶＯＬ１（２９００）と、物理ストレージ装置２（２０００）の物理ＶＯＬ２（２９００）とは、ＨＡペア７１００を構成している。物理ＶＯＬ１（２９００）はＰＶＯＬであり、物理ＶＯＬ２（２９００）はＳＶＯＬである。
【００３１】
物理ＶＯＬ１（２９００）及び物理ＶＯＬ２（２９００）について、ホスト計算機１０００に対して、同一のＶＯＬ情報、すなわち仮想ＶＯＬ１１（３９００）の情報が提供される。ホスト計算機１０００は、ＯＳ（Operating System）１３１０及び交替パスプログラム１３２０を実行し、仮想ＶＯＬ１１（３９００）にアクセスする。このため、ホスト計算機１０００は、交替パスプログラム１３２０により、物理ＶＯＬ１（２９００）へのパス８１００と物理ＶＯＬ２（２９００）へのパス８２００のいずれも使用することができる。
【００３２】
一方の物理ＶＯＬ２９００に対するライトデータは、他方の物理ＶＯＬ２９００に転送される。これにより、物理ＶＯＬ１（２９００）及び物理ＶＯＬ２（２９００）の間のデータ同一性が維持される。
【００３３】
このように、物理ＶＯＬ１（２９００）及び物理ＶＯＬ２（２９００）は、ホスト計算機１０００から一つのボリュームとしてＩ／Ｏアクセス可能であり、また、いずれかの物理ボリュームにおいて障害が発生しても、他の物理ボリュームへのＩ／Ｏアクセスが可能である。
【００３４】
本実施例は、ホストＩ／Ｏ無停止かつActive-Active型ＨＡ構成を維持したボリュームペアの移行を説明する。一例として、物理ＶＯＬ２（２９００）を物理ＶＯＬ３へ移行する例を説明する。物理ＶＯＬ１及び物理ＶＯＬ２は移行前ボリュームペアを構成し、物理ＶＯＬ１（２９００）及び物理ＶＯＬ３（２９００）は移行後ボリュームペアを構成する。
【００３５】
まず、物理ＶＯＬ１（２９００）と物理ＶＯＬ３（２９００）で、ＨＡペア７２００が形成される。ここでは、物理ＶＯＬ１（２９００）はＰＶＯＬ、物理ＶＯＬ３（２９００）はＳＶＯＬとする。移行において、ＰＶＯＬである物理ＶＯＬ１（２９００）からＳＶＯＬである物理ＶＯＬ３（２９００）にデータがコピーされる。
【００３６】
ホスト計算機１０００及び物理ストレージ装置３（２０００）において、ホスト計算機１０００から物理ＶＯＬ３（２９００）へのパス８３００が定義される。物理ストレージ装置３（２０００）は、物理ＶＯＬ３（２９００）について、ホスト計算機１０００からの要求に対して、物理ＶＯＬ１（２９００）及び物理ＶＯＬ２（２９００）と同様に、仮想ＶＯＬ１１（３９００）の情報を返す。
【００３７】
次に、ホスト計算機１０００及び物理ストレージ装置２（２０００）において、ホスト計算機１０００から物理ＶＯＬ２（２９００）へのパス８２００が削除される。さらに、物理ストレージ装置１（２０００）及び物理ストレージ装置２（２０００）は、ＨＡペア７１００を削除する。これにより、物理ストレージ装置２（２０００）の物理ＶＯＬ２（２９００）から物理ストレージ装置３（２０００）の物理ＶＯＬ３（２９００）への移行が完了する。
【００３８】
図２は、本実施例における計算機システムの構成例を示す。図２の計算機システムは、ホスト計算機１０００と、物理ストレージ装置２０００と、管理計算機４０００と、を含む。
【００３９】
計算機システムに含まれる各種装置（システム）の数は、設計に依存する。物理ストレージ装置１〜３（２０００）は、一台の仮想的なストレージ装置である仮想ストレージ装置を構成する。本例の仮想ストレージ環境において、二台または三台の物理ストレージ装置が一台の仮想ストレージを構成するが、その仮想ストレージを構成する物理ストレージの数は設計に依存する。
【００４０】
物理ストレージ装置Ａ（２０００）は、Quorum Diskを持つ。Quorum Diskは、ＨＡ構成における物理ストレージ装置２０００間で通信不可となった場合に、ＨＡ構成が組まれた物理ストレージ装置２０００のうち、継続稼動させるものと停止させるものを決定する機能を提供する。Quorum Diskにより、スプリットブレイン問題を防ぐことができる。
【００４１】
ホスト計算機１０００、管理計算機４０００及び物理ストレージ装置２０００は、ＬＡＮ６０００で構成された管理ネットワークにより、通信可能に接続されている。例えば、管理ネットワーク６０００は、ＩＰネットワークである。管理ネットワーク６０００は、管理データ通信用のネットワークであればどのタイプのネットワークでもよい。
【００４２】
ホスト計算機１０００及び物理ストレージ装置２０００は、ＳＡＮ（Storage Area Network）５０００で構成されたデータネットワークにより接続されている。ホスト計算機１０００は、ＳＡＮ５０００を介して、物理ストレージ装置２０００のボリュームにアクセスする。データネットワーク５０００はデータ通信用のネットワークであれば、どのようなタイプのネットワークでもよい。データネットワーク５０００と管理ネットワーク６０００は同一のネットワークでもよい。
【００４３】
図３は、ホスト計算機１０００の構成例を模式的に示す。ホスト計算機１０００は、プロセッサであるＣＰＵ（Central Processing Unit）１１００、不揮発性の二次記憶デバイス１２００、主記憶デバイスであるメモリ１３００、入出力デバイス１４００、Ｉ／Ｏ要求発行側インタフェースであるイニシエータポート１６００、管理インタフェース（管理Ｉ／Ｆ）１７００を含む。各構成要素は、バス１５００により通信可能に接続されている。
【００４４】
ＣＰＵ１１００は、メモリ１３００に格納されたプログラムに従って動作する。典型的には、二次記憶デバイス１２００に格納されているプログラム及びデータが、メモリ１３００にロードされる。本例において、メモリ１３００は、ＯＳ（Operating System）１３１０、交替パスプログラム１３２０及びアプリケーションプログラム１３３０を保持する。アプリケーションプログラム１３３０は、物理ストレージ装置２０００が提供するボリュームへデータの読み書きを行う。
【００４５】
イニシエータポート１６００は、ＳＡＮ４０００に接続するネットワークインタフェースである。イニシエータポート１６００は、ＳＡＮ５０００を介して物理ストレージ装置２０００とデータ及び要求を送受信する。
【００４６】
管理インタフェース１７００は、ＬＡＮ６０００に接続するネットワークインタフェースである。管理インタフェース１７００は、ＬＡＮ６０００を介して物理ストレージ装置２０００と管理データ及び制御命令を送受信する。管理インタフェース１７００は、さらに、ＬＡＮ６０００を介して管理計算機４０００と、管理データ及び制御命令を送受信する。
【００４７】
図４は、物理ストレージ装置２０００の構成例を模式的に示す図である。本例において、全物理ストレージ装置２０００の基本構成は同じであるが、構成要素の数や記憶容量等は各物理ストレージ装置２０００に依存する。これらは異なる基本構成を有していてもよい。
【００４８】
物理ストレージ装置２０００は、複数の記憶デバイス（例えば、ハードディスクドライブ及び／又はＳＳＤ（Solid State Drive））２２００と、物理ストレージ装置２０００を制御し、ボリューム管理や、ホスト計算機１０００又は他の物理ストレージ装置２０００とのデータ通信等を行うストレージコントローラとを含む。
【００４９】
ストレージコントローラは、プロセッサであるＣＰＵ２１００、メモリ２３００、Ｉ／Ｏ要求発行側インタフェースであるイニシエータポート２６００、Ｉ／Ｏ要求受信側インタフェースであるターゲットポート２７００、管理インタフェース（管理Ｉ／Ｆ）２８００、データ転送のためのキャッシュメモリ２４００、を含む。ストレージ装置２０００の構成要素は、バス２５００で通信可能に接続されている。
【００５０】
物理ストレージ装置２０００は、イニシエータポート２６００を介して、外部（他）の物理ストレージ装置２０００に接続し、外部の物理ストレージ装置２０００にＩ／Ｏ要求及びライトデータを送信し、外部の物理ストレージ装置２０００からリードデータを受信することができる。イニシエータポート２６００は、ＳＡＮ５０００に接続する。
【００５１】
イニシエータポート２６００は、外部の物理ストレージ装置２０００との通信に用いられるＦＣ、Fibre Channel Over Ethernet（ＦＣｏＥ）、ｉＳＣＳＩ等のプロトコルを、ストレージコントローラ内部で用いられるプロトコル、例えば、ＰＣＩｅに変換する機能を有する。
【００５２】
物理ストレージ装置２０００は、ターゲットポート２７００において、ホスト計算機１０００又は外部の物理ストレージ装置２０００に接続する。物理ストレージ装置２０００は、ターゲットポート２７００を介して、ホスト計算機１０００又は外部の物理ストレージ装置２０００からＩ／Ｏ要求及びライトデータを受信し、また、ホスト計算機１０００又は外部の物理ストレージ装置２０００にリードデータを送信する。ターゲットポート２７００は、ＳＡＮ５０００に接続する。
【００５３】
ターゲットポート２７００は、ホスト計算機１０００又は外部の物理ストレージ装置２０００との通信に用いられるＦＣ、Fibre Channel Over Ethernet（ＦＣｏＥ）、ｉＳＣＳＩ等のプロトコルを、ストレージコントローラ内部で用いられるプロトコル、例えば、ＰＣＩｅに変換する機能を有する。
【００５４】
管理インタフェース２８００は、ＬＡＮ６０００に接続するためのデバイスである。管理インタフェース２８００は、ＬＡＮ６０００で使用されるプロトコルを、ストレージコントローラ内部で用いられるプロトコル、例えば、ＰＣＩｅに変換する機能を有する。
【００５５】
ＣＰＵ２１００は、物理ストレージ装置２０００の制御のためのプログラムを実行し、ホスト計算機１０００からのＩ／Ｏの制御及び物理ストレージ装置２０００ボリュームの管理、制御を含む所定の機能を実現する。本実施例で説明するＣＰＵ２１００により実現される機能の少なくとも一部は、ＣＰＵ２１００と異なるロジック回路によって実現されてもよい。
【００５６】
プログラムはプロセッサ（ＣＰＵ）によって実行されることで、定められた処理をメモリ及びインタフェースを用いながら行う。従って、本開示においてプログラムを主語とする説明は、プロセッサを主語とした説明でもよい。若しくは、プログラムが実行する処理は、そのプログラムが動作する装置（例えば物理ストレージ装置２０００又はホスト計算機１０００）及びシステムが行う処理である。
【００５７】
メモリ２３００は、ＣＰＵ２１００が扱うデータやプログラムを格納する。メモリ２３００のデータは、例えば、物理ストレージ装置２０００内のいずれかの記憶デバイス２２００、フラッシュメモリ（不図示）、又はＬＡＮ５０００を介して接続された他の装置等、非一時的記憶媒体を備える記憶デバイスからメモリ２３００にロードされる。
【００５８】
図５は、物理ストレージ装置２０００それぞれのメモリ２３００におけるソフトウェア構成例を示す。メモリ２３００は、データ入出力処理プログラム２３５０、リソース管理プログラム２３６０及びボリュームコピー制御プログラム２３７０を保持する。さらに、メモリ２３００は、リソース管理テーブル２３１０、仮想ストレージボックス管理テーブル２３２０、仮想ストレージ管理テーブル２３３０、ボリュームコピーペア管理テーブル２３４０、ホストグループ管理テーブル２３８０、排他ロック管理テーブル２３９０を保持する。
【００５９】
データ入出力処理プログラム２３５０は、ホスト計算機１０００からのＩ／Ｏ要求に従って、ユーザデータのリード及びライトを行い、ホスト計算機１０００及び他の物理ストレージ装置２０００との間の必要なデータ通信を行う。
【００６０】
リソース管理プログラム２３６０は、物理ストレージ装置２０００のリソースを管理する。リソース管理プログラム２３６０は、ボリュームの作成や削除の他、以下に説明するテーブル（情報）の作成及び更新を行う。リソース管理プログラム２３６０は、リソース管理のために必要な情報を、管理計算機４０００との間で送受信する。
【００６１】
ボリュームコピー制御プログラム２３７０は、ＨＡペアにおける物理ボリューム間のコピーを制御する。
【００６２】
以下において、物理ストレージ装置２０００がそれぞれ保持し、本実施例の説明において参照されるテーブル（情報）について説明する。同一名称のテーブルは、各物理ストレージ装置２０００において、同一の構成（欄）を有する。以下において図を参照して説明するテーブルは、物理ストレージ装置１（２０００）が保持するテーブルである。なお、各装置が保持する情報は、テーブル以外の構造体に格納されていてもよい。
【００６３】
図６Ａは、リソース管理テーブル２３１０の構成例を示す。リソース管理テーブル２３１０は、当該物理ストレージ装置１（２０００）のリソースを管理するためのテーブルである。
【００６４】
リソース管理テーブル２３１０は、物理ストレージ装置１（２０００）のリソースの種類を格納するリソース種別欄２３１１、リソースＩＤを格納するリソースＩＤ欄２３１２、当該リソースが属するリソースグループＩＤを格納するリソースグループＩＤ欄２３１３、当該リソースに付与された仮想リソースＩＤを格納する仮想リソースＩＤ欄２３１４を有する。
【００６５】
図６Ｂは、ホストグループ管理テーブル２３８０の構成例を示す。ホストグループは、ポートに接続されたホスト計算機１０００のＷＷＮ（World Wide Name）を、ホスト計算機１０００のＯＳ種別毎にグループ化したものである。ホストグループ管理テーブル２３８０は、ポートＩＤを格納するポートＩＤ欄２３８１、当該ポートに関連するホストグループＩＤを格納するホストグループＩＤ欄２３８２、ホスト計算機１０００のＯＳ種別を示すホストモード欄２３８３、当該ホストグループに登録されたホストＷＷＮを格納するホストＷＷＮ欄２３８４、ホストグループＩＤ２３８２に属するホスト計算機１０００がアクセス可能なボリュームＩＤを格納するボリュームＩＤ欄２３８５を有する。
【００６６】
図７は、仮想ストレージボックス管理テーブル２３２０の構成例を示す。仮想ストレージボックスは、一物理ストレージ装置内で一仮想ストレージ装置が持つリソースグループの集合である。仮想ストレージボックス管理テーブル２３２０は、仮想ストレージ装置３０００の仮想ストレージボックスを管理するためのテーブルである。
【００６７】
仮想ストレージボックス管理テーブル２３２０は、仮想ストレージボックスＩＤを格納する仮想ストレージボックスＩＤ欄２３２１、当該仮想ストレージボックスに属するリソースグループＩＤを格納するリソースグループＩＤ欄２３２２を有する。
【００６８】
図８は、仮想ストレージ管理テーブル２３３０の構成例を示す。仮想ストレージ管理テーブル２３３０は、仮想ストレージ装置３０００を管理するためのテーブルである。仮想ストレージ管理テーブル２３３０は、仮想ストレージＩＤを格納する仮想ストレージＩＤ欄２３３１、当該仮想ストレージ装置に属する仮想ストレージボックスＩＤを格納する仮想ストレージボックスＩＤ欄２３３２を有する。
【００６９】
図９Ａは、ボリュームコピーペア管理テーブル２３４０の構成例を示す。ボリュームコピーペア管理テーブル２３４０は、当該物理ストレージ装置２０００が提供するボリュームを含むボリュームコピーペアを管理するためのテーブルである。
【００７０】
ボリュームコピーペア管理テーブル２３４０は、ボリュームコピーペアのペアＩＤを格納するペアＩＤ欄２３４１、当該ペアの種別を格納するペア種別欄２３４２、当該ペアの状態を格納するペア状態欄２３４３を有する。
【００７１】
ボリュームコピーペア管理テーブル２３４０は、さらに、ＰＶＯＬＩＤを格納するＰＶＯＬＩＤ欄２３４４、ＳＶＯＬＩＤを格納するＳＶＯＬＩＤ欄２３４５を有する。本例において、ＰＶＯＬＩＤ及びＳＶＯＬＩＤは、物理ストレージ装置２０００の識別情報及び当該物理ストレージ装置における物理ボリュームの識別情報により構成されている。
【００７２】
ボリュームコピーペア管理テーブル２３４０は、さらに、当該ペアに関連するペアのＩＤを格納する関連ペアＩＤ欄２３４６、当該ペアと関連ペアの優先度を格納する優先度欄２３４７を有する。本例では、優先度の数値が小さい程、優先度が高い。
【００７３】
ペア種別欄２３４２に格納するペア種別は、ＨＡであれば“ＨＡ”、物理ストレージ内のボリュームローカルコピーであれば“ＬＣ”、物理ストレージ間のボリュームリモートコピーであれば“ＲＣ”、ＨＡマルチターゲット構成であれば“ＨＡ‐ＭＬＴ”など、ボリュームコピーペアの種類を示す。
【００７４】
ペア状態欄２３４３に格納するペア状態は、データコピー中であれば“ＣＯＰＹ”、データコピー完了後の同期状態であれば“ＰＡＩＲ”、データコピー中断中であれば“ＳＵＳＰＥＮＤ”など、ボリュームコピーペア間のデータコピーの状態を示す文字列や数字を格納する。
【００７５】
優先度欄２３４７に格納する優先度は、ＨＡマルチターゲット構成におけるデータ書き込み順序を決定する情報を示す。ＨＡマルチターゲット構成に関し、本実施例では、第１ペア及び第２ペアの優先度は同じであり、故に、まず、第１ペア及び第２ペアのＰＶＯＬに書き込みが行われ、その後、並列に、第１ペアのＳＶＯＬと第２ペアのＳＶＯＬに書き込みが行われる。
【００７６】
図９Ｂは、排他ロック管理テーブル２３９０の構成例を示す。排他ロック管理テーブル２３９０は、物理ボリュームの排他ロックを管理するための情報を保持する。排他ロック管理テーブル２３９０は、排他ロックのＩＤを格納する排他ロックＩＤ欄２３９１、物理ボリュームのＩＤを格納するボリュームＩＤ欄２３９２、及び、排他ロックがかかっているＬＢＡ（Logical Block Address）を格納するＬＢＡ欄２３９３を有する。
【００７７】
排他ロック管理テーブル２３９０は、排他ロックされているデータ記憶領域を管理している。各エントリは、排他ロックされているボリューム内の領域を示し、ボリュームＩＤと当該ボリューム内のアドレス（ＬＢＡ）を使用して、例えば、開始ＬＢＡとデータ長で指定される。本例において、ボリューム内の部分領域が排他ロックされるが、ボリューム単位で排他ロックされてもよい。また、排他ロックの種別を格納する欄が設けられてもよいし、排他ロックＩＤが排他ロックの種別を示す情報を含んでもよい。例えば、或る符号で始まる排他ロックＩＤに対応した排他ロックは、ライト不可且つリード不可の排他ロックでよく、別の符号で始まる排他ロックＩＤに対応した排他ロックは、ライト不可且つリード可の排他ロックでよい。
【００７８】
図１０は、物理ストレージ装置２（ＳＴ２）（２０００）の物理ＶＯＬ２（ＳＶＯＬ）２９００を、物理ストレージ装置３（ＳＴ３）（２０００）の物理ＶＯＬ３（ＳＶＯＬ）２９００に移行するステップを示す。物理ＶＯＬ１、ＶＯＬ２、ＶＯＬ３（２９００）は、仮想ＶＯＬ１１（３０００）の構成要素である。なお、一部の符号を省略している。
【００７９】
物理ＶＯＬ２（ＳＶＯＬ）２９００と物理ストレージ装置２（２０００）の物理ＶＯＬ１（ＰＶＯＬ）２９００は、移行前ボリュームペア（第１ボリュームペア）である。
【００８０】
物理ＶＯＬ３（２９００）と物理ＶＯＬ１（ＰＶＯＬ）２９００は、移行後ボリュームペア（第２ボリュームペア）である。移行において、物理ＶＯＬ１（ＰＶＯＬ）２９００のデータが、物理ＶＯＬ３（２９００）にコピーされる。本例では、ホスト管理及びストレージ管理の両方を実施可能なシステム管理者が、パス及びボリュームの設定を行う。
【００８１】
図１０において、ステップＡ‐０は、初期状態を示す。ホスト計算機１０００と、物理ＶＯＬ１、ＶＯＬ２との間にパスが定義されている。物理ＶＯＬ１、ＶＯＬ２は、ボリュームペアを構成している。物理ＶＯＬ１、ＶＯ２は、仮想ＶＯＬ１１の構成要素であり、ホスト計算機１０００は、仮想ＶＯＬ１１のアクセスのために、いずれの物理ＶＯＬ１、ＶＯＬにもアクセスすることができる。
【００８２】
ステップＡ‐１において、システム管理者からの指示に従って、物理ストレージ装置３は、物理ＶＯＬ３を作成する。システム管理者からの指示に従って、物理ストレージ装置１（ＳＴ１）及び物理ストレージ装置３は、物理ＶＯＬ１と物理ＶＯＬ３のＨＡペアを作成する。ＶＯＬ３への仮想ＩＤを付与する。このとき、ＶＯＬ１、ＶＯＬ２及びＶＯＬ３はＨＡマルチターゲット構成である。
【００８３】
ステップＡ‐２において、システム管理者からの指示に従って、ホスト計算機１０００及び物理ストレージ装置３は、ホスト計算機１０００から物理ＶＯＬ３へのパスを定義する。物理ストレージ装置３は、ホストグループ管理テーブル２３８０に、ホストのＷＷＮ、ポートＩＤ、ＶＯＬ３のボリュームＩＤの情報を追加する。
【００８４】
次に、ステップＡ‐３において、システム管理者からの指示に従って、ホスト計算機１０００及び物理ストレージ装置２は、ホスト計算機１０００から物理ＶＯＬ２へのパスを削除する。物理ストレージ装置２は、ホストグループ管理テーブル２３８０から、ホストのＷＷＮ、ポートＩＤ、ＶＯＬ２のボリュームＩＤの情報を削除する。
【００８５】
次に、ステップＡ‐４において、システム管理者からの指示に従って、物理ストレージ装置１、２は、物理ＶＯＬ１と物理ＶＯＬ２のＨＡペアを削除し、さらに、物理ストレージ装置２は物理ＶＯＬ２の仮想ＩＤを削除する。
【００８６】
ＨＡマルチターゲット構成に関し本実施例でのライト処理及びリード処理を説明する。なお、以下、説明を簡単にするために、仮想ＶＯＬ１１（仮想ボリュームの一例）の基になる複数の物理ボリュームが、ＨＡペア１（移行元である第１のボリュームグループの一例）を構成するＰＶＯＬ（プライマリ物理ボリュームの一例であり、例えば物理ＶＯＬ１）とＳＶＯＬ１（第一のセカンダリ物理ボリュームの一例であり、例えば物理ＶＯＬ２）であるとする。ＨＡペア２（移行先である第２のボリュームグループの一例）が、移行先として新たに作成されたＨＡペアの一例であり、同ＰＶＯＬとＳＶＯＬ３（第二のセカンダリ物理ボリュームの一例であり、例えば物理ＶＯＬ３）で構成されるとする。また、ＳＶＯＬ１を有する物理ストレージ装置（第１のストレージ装置の一例）が、ストレージ装置１であり、ＳＶＯＬ２を有する物理ストレージ装置（第２のストレージ装置の一例）が、ストレージ装置２であり、ＰＶＯＬを有する物理ストレージ装置（第３のストレージ装置の一例）が、ストレージ装置３であるとする。
【００８７】
本実施例では、ＨＡペア１からＨＡペア２への移行中において、ストレージシステムがＩ／ＯコマンドとしてＷＲＩＴＥコマンドを受け付け、且つ、当該受け付けられたＷＲＩＴＥコマンドがＰＶＯＬ、ＳＶＯＬ１及びＳＶＯＬ２のいずれを指定していても、ストレージ装置１乃至３の少なくとも一つが、当該ＷＲＩＴＥコマンドに従うライト対象のデータをＰＶＯＬに書き込み、その後に、当該ライト対象のデータを並列にＳＶＯＬ１及びＳＶＯＬ２に書き込む。また、本実施例では、ＨＡペア１からＨＡペア２への移行中において、ストレージシステムがＩ／ＯコマンドとしてＲＥＡＤコマンドを受け付け、且つ、当該受け付けられたＲＥＡＤコマンドがＰＶＯＬ、ＳＶＯＬ１及びＳＶＯＬ２のいずれを指定していても、ストレージ装置１乃至３の少なくとも一つが、当該ＲＥＡＤコマンドに従うリード対象のデータをＰＶＯＬから読み出す、言い換えれば、ＳＶＯＬ１及びＳＶＯＬ２からの読出しを行わない。このように、ライト対象のデータは、まずＰＶＯＬに格納され、その後に、ＳＶＯＬ１及び２に格納される。リード対象のデータは、必ずＰＶＯＬから読み出される。つまり、順序性及び整合性が保証される。結果として、ＳＶＯＬ１及びＳＶＯＬ２に並列にデータを書き込むことが行われても、読出しに関し、いわゆるデータ化けが起こり得ることを防ぐことができる。
【００８８】
具体的には、本実施例では、ストレージ装置１乃至３のいずれがＷＲＩＴＥコマンド又はＲＥＡＤコマンドを受信しても、当該コマンドを受信したストレージ装置で実行されるデータ入出力処理プログラム２３５０及びボリュームコピー制御プログラム２３７０の少なくとも一つ（以下、便宜上、「プログラムユニット」）が、下記（ｗ）及び（ｒ）を行う。
（ｗ）受信したコマンドがＷＲＩＴＥコマンドの場合、当該ＷＲＩＴＥコマンドがＰＶＯＬ、ＳＶＯＬ１及びＳＶＯＬ２のいずれを指定していても、当該ＷＲＩＴＥコマンドに従うライト対象のデータをＰＶＯＬに書き込み、その後に、当該ライト対象のデータをＳＶＯＬ１及びＳＶＯＬ２の少なくとも一つに書き込む。
（ｒ）受信したコマンドがＲＥＡＤコマンドの場合、当該ＲＥＡＤコマンドがＰＶＯＬ、ＳＶＯＬ１及びＳＶＯＬ２のいずれを指定していても、当該ＲＥＡＤコマンドに従うリード対象のデータをＰＶＯＬから読み出す。
【００８９】
（ｗ）の詳細は、下記の通りである。
・ＷＲＩＴＥコマンドがストレージ装置３で受け付けられた場合、プログラムユニットは、ライト対象のデータをＰＶＯＬに書き込み、その後に、当該ライト対象のデータをＳＶＯＬ１に書き込むためにＳＶＯＬ１を指定したＷＲＩＴＥコマンドをストレージ装置１に送信することと、当該ライト対象のデータをＳＶＯＬ２に書き込むためにＳＶＯＬ２を指定したＷＲＩＴＥコマンドをストレージ装置２に送信することとを並列に行う。ストレージ装置１及び２の各々から完了応答を受けた場合、プログラムユニットは、完了応答をホスト計算機１０００に返す。
・ＷＲＩＴＥコマンドがストレージ装置１で受け付けられた場合、プログラムユニットは、当該ＷＲＩＴＥコマンドに従うライト対象のデータをＳＶＯＬ１に書き込むこと無しに、当該ライト対象のデータをＰＶＯＬに書き込むためにＰＶＯＬを指定したＷＲＩＴＥコマンドをストレージ装置３に送信する。ストレージ装置３は、ライト対象のデータをＰＶＯＬに書き込み、その後に、ＳＶＯＬ２に当該ライト対象のデータを書き込み、完了応答をストレージ装置１に返す。ストレージ装置１において、プログラムユニットは、ＳＶＯＬ１に上記ライト対象のデータを書き込み、完了応答をホスト計算機１０００に返す。
・ＷＲＩＴＥコマンドがストレージ装置２で受け付けられた場合、プログラムユニットは、当該ＷＲＩＴＥコマンドに従うライト対象のデータをＳＶＯＬ２に書き込むこと無しに、当該ライト対象のデータをＰＶＯＬに書き込むためにＰＶＯＬを指定したＷＲＩＴＥコマンドをストレージ装置３に送信する。ストレージ装置３は、ライト対象のデータをＰＶＯＬに書き込み、その後に、ＳＶＯＬ１に当該ライト対象のデータを書き込み、完了応答をストレージ装置２に返す。ストレージ装置２において、プログラムユニットは、ＳＶＯＬ２に上記ライト対象のデータを書き込み、完了応答をホスト計算機１０００に返す。
【００９０】
以下、ＨＡマルチターゲット構成に関するライト処理及びリード処理の各々の詳細を説明する。なお、ストレージシステム（仮想ストレージ装置３０００）に発行されたＷＲＩＴＥコマンド及びＲＥＡＤコマンドについて、図６Ａ〜図８に示したテーブルを基に所定の処理が行われ、ＰＶＯＬ、ＳＶＯＬ１及びＳＶＯＬ２のいずれかを指定したＷＲＩＴＥコマンド及びＲＥＡＤコマンドが受け付けられるが、以下の説明では、図６Ａ〜図８に示したテーブルを参照した処理については説明を割愛する。
【００９１】
まず、ＨＡマルチターゲット構成に関するライト処理の詳細を説明する。なお、図１１〜図１３では、下記の表記ルールが採用されている。
・「WRITE CMD」＝ＷＲＩＴＥコマンド
・「WRITE RSP」＝ＷＲＩＴＥコマンドに対する完了応答又はエラー応答
・「WRITE RSP (OK)」＝ＷＲＩＴＥコマンドに対する完了応答
・「WRITE RSP (NG)」＝ＷＲＩＴＥコマンドに対するエラー応答
・「ロックW/R)」＝ライト不可且つリード不可の排他ロック
・「ロックW)」＝ライト不可且つリード可の排他ロック
【００９２】
図１１は、ホスト計算機１０００からのＷＲＩＴＥコマンドでＰＶＯＬが指定されているケース（図１のパス８１００がＷＲＩＴＥコマンドの送信に使用されたケース）についてのライト処理の流れを示す図である。
【００９３】
ストレージ装置３のデータ入出力処理プログラム２３５０が、ホスト計算機１０００からＷＲＩＴＥコマンドを受信する（Ｓ１１０１）。
【００９４】
ストレージ装置３のデータ入出力処理プログラム２３５０又はボリュームコピー制御プログラム２３７０が、ＰＶＯＬについて、ライト不可且つリード不可の排他ロックをする、具体的には、例えば、当該排他ロックのＩＤ、ＰＶＯＬのＩＤ、及び、当該排他ロックがされたＬＢＡを含んだエントリを、排他ロック管理テーブル２３９０に追加する（Ｓ１１０２）。ストレージ装置３のデータ入出力処理プログラム２３５０が、ＰＶＯＬにライト対象のデータを書き込む（Ｓ１１０４）。なお、ここでは、ライト対象のデータは、ＰＶＯＬに実際に書き込まれてもよいし、ストレージ装置３のキャッシュメモリ２４００に書き込まれＰＶＯＬには後に非同期に書き込まれてもよい。ライト不可且つリード不可の排他ロックがかかっている領域については、データを書き込むこともデータを読み出すこともできない。
【００９５】
ストレージ装置３のボリュームコピー制御プログラム２３７０が、ＳＶＯＬ１を指定したＷＲＩＴＥコマンドをストレージ装置１に送信すること（Ｓ１１０４Ａ）と、ＳＶＯＬ２を指定したＷＲＩＴＥコマンドをストレージ装置２に送信すること（Ｓ１１０４Ｂ）とを並列に行う。ＰＶＯＬの相手がＳＶＯＬ１及びＳＶＯＬ２であることは、ボリュームコピーペア管理テーブル２３４０から特定される。また、ＨＡペア１とＨＡペア２の優先度が同じであるため、Ｓ１１０４ＡとＳ１１０４Ｂが並列に行われる。
【００９６】
ストレージ装置１のデータ入出力処理プログラム２３５０又はボリュームコピー制御プログラム２３７０が、ストレージ装置３からのＷＲＩＴＥコマンドに応答して、ＳＶＯＬ１について、ライト不可且つリード可の排他ロックをする（Ｓ１１０５Ａ）。ストレージ装置１のデータ入出力処理プログラム２３５０又はボリュームコピー制御プログラム２３７０が、ＳＶＯＬ１に、ライト対象のデータを書き込み（Ｓ１１０６Ａ）、ストレージ装置３からのＷＲＩＴＥコマンドに対する応答を返す（Ｓ１１０７Ａ）。なお、Ｓ１１０５Ａ〜Ｓ１１０７Ａと同様の処理が、ＳＶＯＬ２に関し、ストレージ装置２のデータ入出力処理プログラム２３５０又はボリュームコピー制御プログラム２３７０により行われる（Ｓ１１０５Ｂ〜Ｓ１１０７Ｂ）。
【００９７】
ストレージ装置３のボリュームコピー制御プログラム２３７０が、ストレージ装置１及び２の両方から完了応答を受信したか否かを判断する（Ｓ１１０８）。Ｓ１１０８の判断結果が偽の場合、ストレージ装置３のデータ入出力処理プログラム２３５０が、ホスト計算機１０００にエラー応答を返す（Ｓ１１０９）。エラー応答は、例えば、リトライを促す応答（例えばＣｈｅｃｋ応答）でよい。これにより、ホスト計算機１０００は、同じＷＲＩＴＥコマンドを再送することができる。
【００９８】
Ｓ１１０８の判断結果が真の場合、ストレージ装置３のデータ入出力処理プログラム２３５０が、ホスト計算機１０００に完了応答を返す（Ｓ１１１０）。
【００９９】
ストレージ装置１乃至３の各々について、排他ロックが解除される（Ｓ１１１１Ａ、Ｓ１１１１Ｂ、Ｓ１１１１Ｃ）。例えば、Ｓ１１１０の後、ストレージ装置３のデータ入出力処理プログラム２３５０又はボリュームコピー制御プログラム２３７０が、ホスト計算機１０００に完了応答を返したことを、ストレージ装置１及び２の各々に報告し、ＰＶＯＬについて、ライト不可且つリード不可の排他ロックを解除する、具体的には、例えば、当該排他ロックのＩＤ、ＰＶＯＬのＩＤ、及び、当該排他ロックがされたＬＢＡを含んだエントリを、排他ロック管理テーブル２３９０から削除する（Ｓ１１１１Ａ）。ストレージ装置１のデータ入出力処理プログラム２３５０又はボリュームコピー制御プログラム２３７０が、ストレージ装置３からの報告を受けて、ＳＶＯＬ１について、ライト不可且つリード可の排他ロックを解除する（Ｓ１１１１Ｂ）。同様に、ストレージ装置２のデータ入出力処理プログラム２３５０又はボリュームコピー制御プログラム２３７０が、ストレージ装置３からの報告を受けて、ＳＶＯＬ２について、ライト不可且つリード可の排他ロックを解除する（Ｓ１１１１Ｃ）。
【０１００】
図１１によれば、ＳＶＯＬ１及びＳＶＯＬ２に並列にデータが書き込まれるようになっていても、ＰＶＯＬに先にデータを書き込むという順序性が維持されており、且つ、リード処理では、ＲＥＡＤコマンドでＰＶＯＬ、ＳＶＯＬ１及びＳＶＯＬ２のいずれが指定されていても、データの読出し元はＰＶＯＬに制限されるため、整合性も維持される。また、ＰＶＯＬについてのライト不可且つリード不可の排他ロック、及び、ＳＶＯＬ１及びＳＶＯＬ２の各々についてのライト不可且つリード可の排他ロックは、整合性の維持に貢献する。
【０１０１】
図１２は、ホスト計算機１０００からのＷＲＩＴＥコマンドでＳＶＯＬ１が指定されているケース（図１のパス８２００がＷＲＩＴＥコマンドの送信に使用されたケース）についてのライト処理の流れを示す図である。
【０１０２】
ストレージ装置１のデータ入出力処理プログラム２３５０が、ホスト計算機１０００からＷＲＩＴＥコマンドを受信する（Ｓ１２０１）。
【０１０３】
ストレージ装置１のデータ入出力処理プログラム２３５０又はボリュームコピー制御プログラム２３７０が、ＳＶＯＬ１について、ライト不可且つリード可の排他ロックをする（Ｓ１２０２）。そして、ストレージ装置１のボリュームコピー制御プログラム２３７０が、ＰＶＯＬを指定したＷＲＩＴＥコマンドをストレージ装置３に送信する（Ｓ１２０３）。ＳＶＯＬ１の相手がＰＶＯＬであることは、ボリュームコピーペア管理テーブル２３４０から特定される。
【０１０４】
ストレージ装置３のデータ入出力処理プログラム２３５０又はボリュームコピー制御プログラム２３７０が、ストレージ装置１からのＷＲＩＴＥコマンドに応答して、ＰＶＯＬ１について、ライト不可且つリード不可の排他ロックをし（Ｓ１２０４）、ＰＶＯＬにライト対象のデータを書き込む（Ｓ１２０５）。そして、ストレージ装置３のボリュームコピー制御プログラム２３７０が、ＳＶＯＬ２を指定したＷＲＩＴＥコマンドをストレージ装置２に送信する（Ｓ１２０６）。ＰＶＯＬの相手がＳＶＯＬ２であることは、ボリュームコピーペア管理テーブル２３４０から特定され、且つ、ＷＲＩＴＥコマンドをＳＶＯＬ１側から受けたため、ＷＲＩＴＥコマンドをＳＶＯＬ１側に送信する必要が無いことが特定される。
【０１０５】
ストレージ装置２のデータ入出力処理プログラム２３５０又はボリュームコピー制御プログラム２３７０が、ストレージ装置３からのＷＲＩＴＥコマンドに応答して、ＳＶＯＬ２について、ライト不可且つリード可の排他ロックをし（Ｓ１２０７）、ＳＶＯＬ２にライト対象のデータを書き込む（Ｓ１２０８）。そして、ストレージ装置２のボリュームコピー制御プログラム２３７０が、ストレージ装置３からのＷＲＩＴＥコマンドに対する応答を返す（Ｓ１２０９）。
【０１０６】
ストレージ装置３のボリュームコピー制御プログラム２３７０が、ストレージ装置２から応答を受けた場合、ストレージ装置１からのＷＲＩＴＥコマンドに対する応答を返す（Ｓ１２１０）。
【０１０７】
ストレージ装置１のデータ入出力処理プログラム２３５０又はボリュームコピー制御プログラム２３７０が、ストレージ装置３から応答を受けた場合、ＳＶＯＬ１にライト対象のデータを書き込み（Ｓ１２１１）、Ｓ１２０１で受信したＷＲＩＴＥコマンドに対する応答をホスト計算機１０００に返す（Ｓ１２１２）。
【０１０８】
ストレージ装置１乃至３の各々について、排他ロックが解除される（Ｓ１２１３Ａ、Ｓ１２１３Ｂ、Ｓ１２１３Ｃ）。例えば、Ｓ１２１２の後、ストレージ装置１のデータ入出力処理プログラム２３５０又はボリュームコピー制御プログラム２３７０が、ホスト計算機１０００に完了応答を返したことを、ストレージ装置３に報告し、当該報告が、ストレージ装置３からストレージ装置２にも送信される。その後、Ｓ１２１３Ａ〜Ｓ１２１３Ｃのようなロック解除が行われる。
【０１０９】
図１２によれば、ホスト計算機１０００からのＷＲＩＴＥコマンドでＳＶＯＬ１が書込み先として指定されていても、ＳＶＯＬ１にデータが書き込まれる前に、ＰＶＯＬにデータが書き込まれる。つまり、ＰＶＯＬに先にデータを書き込むという順序性が維持されている。リード処理では、ＲＥＡＤコマンドでＰＶＯＬ、ＳＶＯＬ１及びＳＶＯＬ２のいずれが指定されていても、データの読出し元はＰＶＯＬに制限される。このため、整合性も維持される。
【０１１０】
なお、図１２の例によれば、ＰＶＯＬ→ＳＶＯＬ２→ＳＶＯＬ１という順でデータが書き込まれるが、ＰＶＯＬにＷＲＩＴＥコマンドが送信された場合、ＳＶＯＬ２とＳＶＯＬ１に並列にデータが書き込まれてよい。すなわち、Ｓ１２０５の後、Ｓ１２０６と並列に、ＳＶＯＬ１を指定したＷＲＩＴＥコマンドがストレージ装置３からストレージ装置１に送信されてよい。そして、ストレージ装置１及び２の各々から完了応答を受けた場合に、ストレージ装置３が、ストレージ装置１に、完了を報告してよい。ストレージ装置１が、その報告を受けた場合に、完了応答をホスト計算機１０００に返してもよい。
【０１１１】
図１３は、ホスト計算機１０００からのＷＲＩＴＥコマンドでＳＶＯＬ２が指定されているケース（図１のパス８３００がＷＲＩＴＥコマンドの送信に使用されたケース）についてのライト処理の流れを示す図である。
【０１１２】
図１３によれば、図１２のＳＶＯＬ１がＳＶＯＬ２であり、図１２のＳＶＯＬ２がＳＶＯＬ１である点を除き、Ｓ１２０１〜Ｓ１２１３Ｃと同様の処理がそれぞれ行われる（Ｓ１３０１〜Ｓ１３１３Ｃ）。
【０１１３】
以上が、ＨＡマルチターゲット構成に関するライト処理の詳細の説明である。次に、ＨＡマルチターゲット構成に関するリード処理の詳細を説明する。なお、図１４〜図１６では、下記の表記ルールが採用されている。
・「READ CMD」＝ＲＥＡＤコマンド
・「READ RSP」＝ＲＥＡＤコマンドに対する完了応答（リード対象のデータを含む応答）又はエラー応答
・「READ RSP (OK)」＝ＲＥＡＤコマンドに対する完了応答
・「READ RSP (NG)」＝ＲＥＡＤコマンドに対するエラー応答
・「ロックW/R)」＝ライト不可且つリード不可の排他ロック
・「ロックW)」＝ライト不可且つリード可の排他ロック
【０１１４】
図１４は、ホスト計算機１０００からのＲＥＡＤコマンドでＰＶＯＬが指定されているケース（図１のパス８１００がＲＥＡＤコマンドの送信に使用されたケース）についてのリード処理の流れを示す図である。
【０１１５】
ストレージ装置３のデータ入出力処理プログラム２３５０が、ホスト計算機１０００からＲＥＡＤコマンドを受信する（Ｓ１４０１）。
【０１１６】
ストレージ装置３のデータ入出力処理プログラム２３５０が、当該ＲＥＡＤコマンドに従うリード対象のデータを、ＰＶＯＬから読み出す（Ｓ１４０２）。
【０１１７】
ストレージ装置３のデータ入出力処理プログラム２３５０が、当該リード対象のデータを含んだ応答を、ホスト計算機１０００に返す（Ｓ１４０３）。
【０１１８】
図１５は、ホスト計算機１０００からのＲＥＡＤコマンドでＳＶＯＬ１が指定されているケース（図１のパス８２００がＲＥＡＤコマンドの送信に使用されたケース）についてのリード処理の流れを示す図である。
【０１１９】
ストレージ装置１のデータ入出力処理プログラム２３５０が、ホスト計算機１０００からＲＥＡＤコマンドを受信する（Ｓ１５０１）。
【０１２０】
ストレージ装置１のデータ入出力処理プログラム２３５０又はボリュームコピー制御プログラム２３７０が、ＳＶＯＬ１からリード対象のデータを読み出すこと無しに、ＰＶＯＬを指定したＲＥＡＤコマンドをストレージ装置３に送信する（Ｓ１５０２）。
【０１２１】
ストレージ装置３のデータ入出力処理プログラム２３５０又はボリュームコピー制御プログラム２３７０が、ストレージ装置１からのＲＥＡＤコマンドに応答して、ＰＶＯＬからリード対象のデータを読み出し（Ｓ１５０３）、当該リード対象のデータを含んだ応答を返す（Ｓ１５０４）。
【０１２２】
ストレージ装置１のデータ入出力処理プログラム２３５０が、Ｓ１５０２で送信したＲＥＡＤコマンドに従う読出しに成功したか否か（リード対象のデータを含んだ応答を受信できたか否か）を判断する（Ｓ１５０５）。
【０１２３】
Ｓ１５０５の判断結果が真の場合、ストレージ装置１のデータ入出力処理プログラム２３５０が、リード対象のデータを含んだ応答を、Ｓ１５０１で受信したＲＥＡＤコマンドに対する応答として返す（Ｓ１５０６）。
【０１２４】
Ｓ１５０５の判断結果が偽の場合、ストレージ装置１のデータ入出力処理プログラム２３５０が、ホスト計算機１０００にエラー応答を返す（Ｓ１５０７）。エラー応答は、例えば、リトライを促す応答（例えばＣｈｅｃｋ応答）でよい。これにより、ホスト計算機１０００は、同じＲＥＡＤコマンドを再送することができる。
【０１２５】
図１５によれば、ホスト計算機１０００からのＲＥＡＤコマンドでＳＶＯＬ１が読出し元として指定されていても、最先にデータが書き込まれるＰＶＯＬからデータが読み出される。このため、整合性が維持される。
【０１２６】
図１６は、ホスト計算機１０００からのＲＥＡＤコマンドでＳＶＯＬ２が指定されているケース（図１のパス８３００がＲＥＡＤコマンドの送信に使用されたケース）についてのライト処理の流れを示す図である。
【０１２７】
図１６によれば、図１５のＳＶＯＬ１がＳＶＯＬ２であり、図１５のＳＶＯＬ２がＳＶＯＬ１である点を除き、Ｓ１５０１〜Ｓ１５０７と同様の処理がそれぞれ行われる（Ｓ１６０１〜Ｓ１６０７）。
【０１２８】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１２９】
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Solid State Drive）等の記録装置、または、ＩＣカード、ＳＤカード等の記録媒体に置くことができる。
【符号の説明】
【０１３０】
２０００：物理ストレージ装置
【図１】
2020013227.tif 000003
【図２】
2020013227.tif 000004
【図３】
2020013227.tif 000005
【図４】
2020013227.tif 000006
【図５】
2020013227.tif 000007
【図６Ａ】
2020013227.tif 000008
【図６Ｂ】
2020013227.tif 000009
【図７】
2020013227.tif 000010
【図８】
2020013227.tif 000011
【図９Ａ】
2020013227.tif 000012
【図９Ｂ】
2020013227.tif 000013
【図１０】
2020013227.tif 000014
【図１１】
2020013227.tif 000015
【図１２】
2020013227.tif 000016
【図１３】
2020013227.tif 000017
【図１４】
2020013227.tif 000018
【図１５】
2020013227.tif 000019
【図１６】
2020013227.tif 000020