本発明を適用したストレージシステムには、三つの形態が考えられる。そこで、最初に、これらの三つの形態のストレージシステムの構成を、図1から図3を参照して説明する。
図1は、本発明の実施の形態において、記憶装置内部でデータのマイグレーション(移動)を行うストレージシステムの構成のブロック図である。
図1のストレージシステムは、記憶装置101a、ホスト102a及び管理端末103によって構成される。
記憶装置101aとホスト102aとは、SAN(Storage Area Network)104を介して通信可能に接続される。記憶装置101aとホスト102aとの間では、例えば、FC(Fibre Channel)プロトコルによって通信される。
ホスト102aは、CPU、メモリ、入出力装置等からなるコンピュータであり、SAN104を介して記憶装置101aにデータI/Oコマンドを発行する。
記憶装置101aと管理端末103とは、LAN(Local Area Network)を介して通信可能に接続される。
管理端末103は、CPU、メモリ、入出力装置等からなるコンピュータであり、LAN105を介して記憶装置101aに種々の設定をする。これらの設定については、後で詳細に説明する。
記憶装置101aは、コントローラ106a及びドライブ装置107aによって構成される。
コントローラ106aは、ホスト102aからのI/Oコマンドを処理して、ドライブ装置107aにデータを書き込み、又は、ドライブ装置107aからデータを読み出す。コントローラ106aは、プロセッサ108a、メモリ109a、キャッシュメモリ110a、外部インターフェース(I/F)111a及びドライブインターフェース116aからなる。
プロセッサ108aは、メモリ109aに格納されたプログラムを実行するCPUである。
メモリ109aは、例えば、半導体メモリであり、プロセッサ108aによって実行されるプログラムを格納する。メモリ109aには、少なくとも、入出力処理プログラム112a、パス管理プログラム113a、マイグレーションプログラム114a及び構成管理プログラム115aが格納される。
入出力処理プログラム112aは、ホスト102aからのデータの書き込み又は読み出しコマンドを処理し、ドライブ装置107aへのデータの書き込み又はドライブ装置107aからのデータの読み出しを制御する。ここで、データの「書き込み」には、新規データの書き込み及び既に書き込まれているデータの更新が含まれる。また、「更新」には、データの消去が含まれる。
パス管理プログラム113aは、アクセスパスの切り替えを制御する。ここで、アクセスパスとは、ホスト102aからいずれかの論理ボリューム(後述)へのデータアクセスの経路である。
マイグレーションプログラム114aは、データのマイグレーションを実行する。すなわち、マイグレーションプログラム114aは、移動元の論理ボリュームのデータを移動先の論理ボリュームに複写する。
構成管理プログラム115aは、ホスト102a又は管理端末103と通信し、ホスト102a又は管理端末103からの指示を受けて、記憶装置101aの構成を管理する。具体的には、例えば、ドライブ装置107aの論理ボリュームを設定し、各論理ボリュームのWORM属性を設定し、マイグレーションを実行するときの移動元及び移動先の論理ボリュームを指定し、アクセスパスの切り替え方法を設定する。
WORM属性とは、更新禁止属性である。WORM属性が付された領域では、データの更新が禁止される。
これらのプログラムの動作については、後で詳細に説明する。
キャッシュメモリ110aは、例えば、半導体メモリである。キャッシュメモリ110aには、ホスト102aによってドライブ装置107aに書き込まれるデータ又はホスト102aによってドライブ装置107aから読み出されるデータが一時的に格納される。キャッシュメモリ110aは、ホスト102aに対するデータI/O処理を高速にするために設けられる。従って、データI/O処理を高速化する必要がない場合は、キャッシュメモリ110aを設けなくてもよい。
外部I/F111aは、記憶装置101aと他の装置との間の通信を行うインターフェースであり、コントローラ106aに一つ又は複数設けられる。図1においては、三つの外部I/F111aが設けられ、それらのうちの一つは、SAN104を介してホスト102aと接続され、別の一つは、LAN105を介して管理端末103と接続される。ホスト102aと接続される外部I/Fは、例えば、FCインターフェースであり、管理端末103と接続される外部I/Fは、例えば、いわゆるLANアダプタである。
ドライブ装置107aは、複数のディスクドライブによって構成される。ドライブ装置107aは、ディスクアレイ装置でもよい。ドライブ装置107aは、複数の論理ボリューム(LU)を含む。論理ボリュームとは、論理的に一つのディスクドライブとして扱われる領域であり、物理的には、複数のディスクドライブの各々の一部の領域の集合体であってもよい。
ドライブ装置107a内の論理ボリュームの少なくとも一つには、ボリューム管理情報117a及びパス管理情報118aが格納される。本実施の形態では、このボリューム管理情報117a及びパス管理情報118aが格納される論理ボリュームを管理ボリューム121aとする。また、ドライブ装置107a内の別の論理ボリュームは、移動元ボリューム119であり、さらに別の論理ボリュームは、移動先ボリューム120である。
移動元ボリューム119及び移動先ボリューム120は、本発明のマイグレーションが実行される論理ボリュームである。すなわち、移動元ボリューム119のデータが移動先ボリューム120に複写される。これらのように、マイグレーションにおいて対になる論理ボリュームを、マイグレーションペアとする。
例えば、移動元ボリューム119は、品質保証期限が近い、古いディスクドライブによって構成され、移動先ボリューム120は、新しいディスクドライブによって構成される。移動元ボリューム119のデータを移動先ボリューム120に複写すれば、データを、ディスクドライブの品質保証期限を超えて保管することができる。
また、例えば、移動元ボリューム119は、高性能でコストも高いディスクドライブによって構成され、移動先ボリューム120は、コストが低く、性能も低いディスクドライブによって構成される。移動元ボリューム119のデータを移動先ボリューム120に複写すれば、価値が低下したデータを、その価値に見合った低コストのディスクドライブに保管することができる。また、この複写によって空いた移動元ボリューム119の領域には、価値の高い別のデータを保管することができる。
ボリューム管理情報117aは、ドライブ装置107a内の全ての論理ボリュームについての管理情報である。ボリューム管理情報117aには、例えば、各論理ボリュームの容量及びWORM属性の有無の情報が含まれる。また、ボリューム管理情報117aには、各論理ボリュームがマイグレーションの対象になっているか否かの情報が含まれる。さらに、ボリューム管理情報117aには、マイグレーションの対象になっている論理ボリュームと対になる論理ボリュームの識別子の情報が含まれる。
パス管理情報118aは、ホスト102aから要求されたデータの書き込み又は読み出しを実行するパスを管理する情報である。すなわち、ホスト102aからデータの書き込み又は読み出し要求があったときに、その書き込み又は読み出しを実行する対象の論理ボリュームが、パス管理情報118aに従って選択される。
ボリューム管理情報117a及びパス管理情報118aの内容については、後で詳細に説明する。
図2は、本発明の実施の形態において、ネットワークを介して接続された記憶装置の間でマイグレーションを行うストレージシステムの構成のブロック図である。
図2のストレージシステムは、図1の構成に記憶装置101bを追加した構成である。記憶装置101bは、SAN104及びLAN105に接続され、ホスト102b、管理端末103及び記憶装置101aと通信することができる。
記憶装置101aの構成は、図1において説明した通りである。記憶装置101bの構成は、記憶装置101aと同じである。ただし、移動元ボリューム201は、記憶装置101aのドライブ装置107aに格納され、移動元ボリューム201と対になる移動先ボリューム202は、記憶装置101bのドライブ装置107bに格納される。
図2のホスト102bは、図1のホスト102aと同様に、CPU、メモリ、入出力装置等からなるコンピュータであり、SAN104を介して記憶装置101aにデータI/Oコマンドを発行する。さらに、ホスト102bのメモリには、ホストパス管理プログラム203及びホストパス管理情報204が格納される。
ホストパス管理プログラム203は、CPUによって実行されるプログラムであり、パス管理プログラム113と同様の機能を備える。
ホストパス管理情報204は、パス管理情報118と同様の情報を含む。
ホストパス管理プログラム203及びホストパス管理情報204については、後で詳細に説明する。
図3は、本発明の実施の形態において、直接接続された記憶装置の間でマイグレーションを行うストレージシステムの構成のブロック図である。
図3のストレージシステムは、図1の構成に記憶装置101cを追加した構成である。記憶装置101cは、記憶装置101a及びLAN105に接続される。その結果、記憶装置101cは、記憶装置101aと直接通信することができ、また、管理端末103とLAN105を経由して通信することができる。
記憶装置101aと記憶装置101cとの間の接続303の上では、例えば、FCプロトコルによってデータが通信される。
記憶装置101aの構成は、図1において説明した通りである。記憶装置101cの構成は、記憶装置101aと同じである。ただし、移動元ボリューム301は、記憶装置101aのドライブ装置107aに格納され、移動元ボリューム301と対になる移動先ボリューム302は、記憶装置101cのドライブ装置107cに格納される。
なお、移動元ボリューム301が記憶装置101cのドライブ装置107cに格納され、移動先ボリューム302が記憶装置101aのドライブ装置107aに格納される構成にも本発明を適用することができる。
図1から図3に示すストレージシステムは、一つのストレージシステムとして構成することもできる(図示省略)。すなわち、図1に示すストレージシステムに、記憶装置101bを、図2に示すように接続し、さらに、記憶装置101cを、図3に示すように接続する。
このとき、SAN104には、ホスト102a、102b及び102cが接続される。記憶装置101aのドライブ装置107aには、移動元ボリューム119、201及び301が格納される。ドライブ装置107aには、さらに、移動元ボリューム119と対になる移動先ボリューム120が格納される。記憶装置101bのドライブ装置107bには、移動元ボリューム201と対になる移動先ボリューム202が格納される。記憶装置101cのドライブ装置107cには、移動元ボリューム301と対になる移動先ボリューム302が格納される。
次に、本発明によるWORM属性が反映されたマイグレーションの動作の概要を、図4及び図5を参照して説明する。この動作は、図1から図3のストレージシステムにおいて共通である。
本発明において、移動元の論理ボリュームのデータのうち、WORM属性が付された(すなわち、更新が禁止された)データには、移動先の論理ボリュームに複写された後、移動先の論理ボリュームにおいても、WORM属性が付される。さらに、複写の実行中にホスト102からのアクセスがあった場合も、WORM属性が付されたデータは、更新されない。このとき、ホスト102からのアクセスパスを移動先の論理ボリュームに対して設定する場合(図4)と、移動元の論理ボリュームに対して設定する場合(図5)とで、制御の方法が異なる。
図4は、本発明の実施の形態において、マイグレーションの際のデータの複写前にアクセスパス(アクセス経路)を切り替える方式(複写前切替方式)の説明図である。
マイグレーションが実行される前は、ホスト102からのアクセスパスは、移動元ボリューム401に設定されている。すなわち、ホスト102からのアクセスは、移動元ボリューム401に対して行われる。移動元ボリューム401は、WORM属性が付されている領域(更新禁止領域4012)及びWORM属性が付されていない領域(更新可能領域4011及び4013)からなる。なお、図4において、斜線部は、WORM属性が付された領域である。
ホスト102は、移動元ボリューム401の全ての領域のデータを読み出すことができる。さらに、ホスト102は、更新可能領域4011及び4013のデータを更新することができる。しかし、ホスト102は、更新禁止領域4012のデータを更新することができない。更新禁止領域4012のデータは、WORM機能によって保護されているためである。
マイグレーションが開始すると、マイグレーションプログラム(MP)114がデータを複写する前に、パス管理プログラム113が、ホスト102からのアクセスパスを移動先ボリューム402に切り替える。すなわち、以後のホスト102は、移動先ボリューム402に対してアクセスする。
図4の移動先ボリューム402は、マイグレーションプログラム114によるデータの複写が完了していない状態を示す。移動先ボリューム402は、複写完了更新可能領域4021、複写完了更新禁止領域4022、複写未了更新禁止領域4023及び複写未了更新可能領域4024からなる。
複写完了更新可能領域4021には、WORM属性が付されていないため、ホスト102は、データを更新することができる。しかし、データの複写は完了しているため、マイグレーションプログラム114は、複写完了更新可能領域4021のデータを更新することができない。
複写完了更新禁止領域4022には、WORM属性が付されており、データの複写も完了している。このため、ホスト102及びマイグレーションプログラム114のいずれも、複写完了更新禁止領域4022のデータを更新することができない。
複写未了更新禁止領域4023には、WORM属性が付されているため、ホスト102は、データを更新することができない。一方、データの複写が完了していないため、マイグレーションプログラム114は、データの複写を完了するために、複写未了更新禁止領域4023にデータを書き込むことができる。
複写未了更新可能領域4024には、WORM属性が付されておらず、データの複写が完了していない。このため、ホスト102及びマイグレーションプログラム114のいずれも、複写未了更新可能領域4024にデータを書き込むことができる。
移動先ボリューム402全体についてデータの複写が完了すると、移動元ボリューム401のWORM属性が解除される。その結果、移動元ボリューム401のデータを消去できるようになる。
図5は、本発明の実施の形態において、マイグレーションの際のデータの複写後にアクセスパスを切り替える方式(複写後切替方式)の説明図である。
移動元ボリューム501を構成する更新可能領域5011、5013及び更新禁止領域5012は、それぞれ、図4の移動元ボリューム401を構成する更新可能領域4011、4013及び更新禁止領域4012と同等である。また、マイグレーション実行前の移動元ボリューム501へのホスト102からのアクセスの制御も、図4と同等である。
図5において、マイグレーションが開始すると、マイグレーションプログラム114が移動元ボリューム501のデータを移動先ボリューム502に複写する。この複写が完了するまで、パス管理プログラム113は、ホスト102からのアクセスパスを切り替えない。従って、複写が完了する前は、ホスト102は、移動元ボリューム501にアクセスする。
図5の移動先ボリューム502は、マイグレーションプログラム(MP)114によるデータの複写が完了していない状態を示す。すなわち、移動先ボリューム502は、複写完了更新可能領域5021、複写完了更新禁止領域5022、複写未了更新禁止領域5023及び複写未了更新可能領域5024からなる。
データの複写が完了するまでは、ホスト102からのアクセスパスが切り替えられないため、ホスト102は、移動先ボリューム502にアクセスすることがない。しかし、アクセスパスが不正に切り替えられた場合や、ホストからの不正なアクセスがあった場合にも、移動先ボリュームのデータを保護する必要がある。このため、アクセスパスが切り替えられるまでは、移動先ボリューム502全体へのホスト102からのデータの書き込みが禁止される。
複写完了更新可能領域5021には、データの複写が完了している。しかし、WORM属性が付されていないため、アクセスパスが切り替えられる前に、更新可能領域5011のデータがホスト102によって更新される場合がある。この場合、更新されたデータを再度複写完了更新可能領域5021に複写する必要がある。このため、マイグレーションプログラム114は、複写完了更新可能領域5021のデータを更新することができる。
複写完了更新禁止領域5022には、データの複写が完了している。また、WORM属性が付されているため、更新禁止領域5012のデータが更新されることはない。このため、マイグレーションプログラム114は、複写完了更新禁止領域5022のデータを更新することができない。
複写未了更新禁止領域5023には、データの複写が完了していないため、マイグレーションプログラム114は、データの複写を完了するために、複写未了更新禁止領域5023にデータを書き込むことができる。
複写未了更新可能領域5024には、データの複写が完了していない。このため、マイグレーションプログラム114は、データの複写を完了するために、複写未了更新可能領域5024にデータを書き込むことができる。
次に、図4及び図5に示した動作を実現する本発明の実施の形態のストレージシステムの詳細な構成を説明する。
図6は、本発明の実施の形態の一つの記憶装置のボリューム管理情報の説明図である。
図6は、記憶装置101aのボリューム管理情報117aの内容を示す。
図6において、内部LUN601は、ドライブ装置107aに存在する論理ボリュームを一意に識別する識別子である。図6の例では、ドライブ装置107aには5個の論理ボリュームが存在し、それぞれ、「0」から「4」までの内部LUN601が付されている。以下、内部LUN601が「0」である論理ボリュームを「論理ボリューム0」と記載する。他の内部LUN601の論理ボリュームについても、同様に記載する。
図6の例では、論理ボリューム0、1、2、3及び4は、それぞれ、マイグレーションの対象外のボリューム(図示省略)、移動元ボリューム119、移動先ボリューム120、移動元ボリューム201及び移動元ボリューム301に対応する。
容量602は、各論理ボリュームのデータ容量を表す。
I/O制御種別603は、各論理ボリュームの全部又は一部にWORM属性が付されているか否かを示す。図6の例において、論理ボリューム0のI/O制御種別603は、「通常」である。このことは、論理ボリューム0にWORM属性が付されていないことを示す。一方、論理ボリューム1のI/O制御種別603は、「WORM」である。このことは、論理ボリューム1の全部又は一部にWORM属性が付されていることを示す。論理ボリューム2から4も、論理ボリューム1と同様にWORM属性が付されている。
WORM単位604は、WORM属性が付される単位を示す。図6の例において、論理ボリューム1のWORM単位604は、「セクタ」である。このことは、論理ボリューム1のWORM属性がセクタごとに付されていることを示す。すなわち、論理ボリューム1の一部のセクタにWORM属性が付されており、残りのセクタにはWORM属性が付されていなくてもよい。また、論理ボリューム1の全てのセクタにWORM属性が付されていてもよい。論理ボリューム2及び3も、論理ボリューム1と同様に、セクタごとにWORM属性が付されている。
一方、図6の例において、論理ボリューム4のWORM単位604は、「ボリューム」である。このことは、論理ボリューム4の全部にWORM属性が付されていることを示す。
なお、論理ボリューム0にはWORM属性が付されていないため、論理ボリューム0のWORM単位604は、空欄である。
マイグレーション状態605は、各論理ボリュームについてマイグレーションが実行されているか否か、及び、データの移動元であるか移動先であるかを示す。図6の例において、論理ボリューム0のマイグレーション状態605が「無」であることは、論理ボリューム0について、マイグレーションが実行されていないことを示す。一方、論理ボリューム1のマイグレーション状態605が「移動元」であることは、論理ボリューム1についてマイグレーションが実行されており、かつ、論理ボリューム1がデータの移動元であることを示す。論理ボリューム3及び4も、論理ボリューム1と同様である。
一方、論理ボリューム2のマイグレーション状態605が「移動先」であることは、論理ボリューム2についてマイグレーションが実行されており、かつ、論理ボリューム2がデータの移動先であることを示す。
なお、移動先ボリューム302が記憶装置101aに論理ボリューム4として格納され、移動元ボリューム301が記憶装置101cに格納される構成の場合、論理ボリューム4のマイグレーション状態605は、「移動先」となる。
マイグレーションペアLUN606は、マイグレーションにおいて各論理ボリュームと対になる論理ボリュームを示す。図6の例において、論理ボリューム0ではマイグレーションが実行されていないため、論理ボリューム0のマイグレーションペアLUN606は、空欄である。
一方、論理ボリューム1のマイグレーションペアLUN606は、「内部LU(LUN=2)」である。これは、マイグレーションにおいて論理ボリューム1と対になる論理ボリュームが、ドライブ装置107aの内部にあり、その内部LUNが「2」であることを示す。すなわち、論理ボリューム2が論理ボリューム1と対になることを示す。従って、論理ボリューム2のマイグレーションペアLUN606は、「内部LU(LUN=1)」である。
論理ボリューム1のマイグレーション状態605が「移動元」であり、論理ボリューム2のマイグレーション状態605が「移動先」であるため、論理ボリューム1のデータが論理ボリューム2に複写される。
論理ボリューム3のマイグレーションペアLUN606は、「記憶装置101b(LUN=1)」である。これは、マイグレーションにおいて、論理ボリューム3が、記憶装置101aとSAN104及びLAN105を介して接続された記憶装置101b内の論理ボリューム1と対になることを示す(図2参照)。論理ボリューム3のマイグレーション状態605が「移動元」であるため、論理ボリューム3のデータが記憶装置101bの論理ボリューム1に複写される。
論理ボリューム4のマイグレーションペアLUN606は、「記憶装置101c(LUN=3)」である。これは、マイグレーションにおいて、論理ボリューム4が、記憶装置101aと直接接続された記憶装置101c内の論理ボリューム3と対になることを示す(図3参照)。論理ボリューム4のマイグレーション状態605が「移動元」であるため、論理ボリューム4のデータが記憶装置101cの論理ボリューム3に複写される。
なお、論理ボリューム4のマイグレーション状態605が「移動先」である場合、記憶装置101cの論理ボリューム3のデータが記憶装置101aの論理ボリューム4に複写される。
パス切替607は、ホストからのアクセスパスの設定の状態を示す。図6の例において、論理ボリューム0ではマイグレーションが実行されていないため、論理ボリューム0のパス切替607は空欄である。
論理ボリューム1及びこれと対になる論理ボリューム2のパス切替607は、「未」である。これは、ホストからのアクセスパスが、まだ移動先の論理ボリューム(すなわち、論理ボリューム2)に切り替えられていないことを示す。すなわち、ホストからのアクセスパスは、移動元の論理ボリューム(すなわち、論理ボリューム1)に設定されている。従って、現時点でホスト102からアクセス要求(データ書き込み又は読み出し要求)があった場合、論理ボリューム1に対してアクセスされる。
論理ボリューム3のパス切替607は、「未」である。これは、ホストからのアクセスパスが、まだ移動先の論理ボリューム(すなわち、記憶装置101bの論理ボリューム1)に切り替えられていないことを示す。すなわち、ホストからのアクセスパスは、移動元の論理ボリューム(すなわち、論理ボリューム3)に設定されている。従って、現時点でホスト102からアクセス要求があった場合、論理ボリューム3に対してアクセスされる。
論理ボリューム4のパス切替607は、「済」である。これは、ホストからのアクセスパスが、既に移動先の論理ボリューム(すなわち、記憶装置101cの論理ボリューム3)に切り替えられたことを示す。すなわち、ホストからのアクセスパスは、移動先の論理ボリュームに設定されている。従って、現時点でホスト102からアクセス要求があった場合、記憶装置101cの論理ボリューム3に対してアクセスされる。
WORM属性608は、各論理ボリュームに付されたWORM属性を示す。具体的には、WORM属性608は、各論理ボリュームに付されたWORM属性を示す情報(WORM属性情報6091〜6093)のポインタである。
WORM属性情報6091〜6093は、ボリューム管理情報117aに含まれる情報であり、各論理ボリュームに付されたWORM属性に関する情報を含む。WORM属性情報については、図7で詳細に説明する。
上述のように、論理ボリューム0にはWORM属性が付されていないため、論理ボリューム0のWORM属性608は、空欄である。
論理ボリューム1のWORM属性608は、WORM属性情報(1)6091を指す。すなわち、WORM属性情報(1)6091は、論理ボリューム1に付されたWORM属性の情報を含む。
論理ボリューム2は、論理ボリューム1のデータの移動先であるため、論理ボリューム2には、論理ボリューム1と同一のWORM属性が付される。従って、論理ボリューム2のWORM属性608は、WORM属性情報(1)6091を指す。
同様にして、論理ボリューム3のWORM属性608は、WORM属性情報(2)6092を指し、論理ボリューム4のWORM属性608は、WORM属性情報(3)6093を指す。
以上のボリューム管理情報117aの内容は、管理端末103がLAN105を経由して設定してもよいし、ホスト102がSAN104を経由して設定してもよい。
図7は、本発明の実施の形態のWORM属性情報の説明図である。
図7は、WORM属性情報の例として、WORM属性情報(1)6091の内容を示す。WORM属性情報(1)6091は、WORMセクタ範囲情報701及び履歴情報704を含む。
WORMセクタ範囲情報701は、論理ボリューム1のWORM属性が付されたセクタを示す。WORMセクタ範囲情報701に示すWORM領域とは、WORM属性が付された更新禁止領域である。すなわち、ホスト102は、WORM領域内のセクタのデータを更新することができない。開始番地702は、各WORM領域の先頭のセクタの番地である。終了番地703は、各WORM領域の末尾のセクタの番地である。例えば、WORM領域1は、50番目の番地のセクタから100番目の番地のセクタまでの範囲である。従って、ホスト102は、この範囲内の番地のセクタのデータを更新することができない。
なお、WORMセクタ範囲情報701は、各セクタごとのWORM属性の有無を示すフラグからなるビットマップであってもよい。
履歴情報704は、論理ボリューム1の過去のマイグレーションの履歴を示す。
図7において、日付705及び時刻706は、それぞれ、論理ボリュームの新規作成等が実行された日付及び時刻を示す。装置707及びLUN708は、それぞれ、論理ボリュームの新規作成等が実行された装置の識別子及び論理ボリュームの識別子を示す。状態709は、論理ボリュームの状態(例えば、新規作成、マイグレーション開始等)を示す。
図7の例では、論理ボリューム1は、2004年4月26日の0時11分22秒に、装置ZZZに、論理ボリューム0として新規作成された。続いて、2004年5月28日の11時33分22秒に、この論理ボリュームから装置ZZZの論理ボリューム3へのマイグレーションが開始し、2004年5月28日の13時33分12秒に、そのマイグレーションが終了した。さらに、2004年6月25日の4時22分32秒に、この論理ボリュームから装置AAAの論理ボリューム1へのマイグレーションが開始し、2004年6月25日の6時2分30秒に、そのマイグレーションが終了した。
ホスト102は、履歴情報704を参照することによって、取得しようとするデータが現在どの論理ボリュームに存在するかを知ることができる。
さらに、ある装置に格納されたデータが別の装置にマイグレーションされて確実に保存されていることが、履歴情報704によって証明される。
論理ボリューム3に関するWORM属性情報(2)6092及び論理ボリューム4に関するWORM属性情報(3)6093も、WORM属性情報(1)6091と同様に、WORMセクタ範囲情報及び履歴情報を含む(図示省略)。これらの内容は、それぞれ、WORMセクタ範囲情報701及び履歴情報704と同様に設定されるため、説明を省略する。
WORM属性情報は、マイグレーションの移動先の論理ボリュームが他の記憶装置にあるときは、その記憶装置のボリューム管理情報117に複写される。例えば、論理ボリューム3の移動先は、記憶装置101bである。このため、WORM属性情報(2)6092は、記憶装置101bのボリューム管理情報117bに複写される。一方、論理ボリューム4の移動先は、記憶装置101cである。このため、WORM属性情報(3)6093は、記憶装置101cのボリューム管理情報117cに複写される。
このようにWORM属性情報が複写されることによって、マイグレーションの実行中にも、WORM属性が付されたデータを保護することができる。
図8は、本発明の実施の形態の別の記憶装置のボリューム管理情報の説明図である。
図8は、記憶装置101bのボリューム管理情報117bの内容を示す。
図8において、図6のボリューム管理情報117aと共通する部分については、詳細な説明を省略する。
図8の論理ボリューム1は、図6の論理ボリューム3の移動先である。すなわち、論理ボリューム1は、図2の移動先ボリューム202に対応する。このため、容量602、I/O制御種別603、WORM単位604及びパス切替607は、図6の論理ボリューム3と同じである。また、マイグレーション状態605は「移動先」、マイグレーションペアLUN606は「記憶装置101a(LUN=3)」である。さらに、WORM属性608は、WORM属性情報(2)809を指す。このWORM属性情報(2)809は、図6のWORM属性情報(2)6092の複写である。
図9は、本発明の実施の形態のさらに別の記憶装置のボリューム管理情報の説明図である。
図9は、記憶装置101cのボリューム管理情報117cの内容を示す。
図9において、図6のボリューム管理情報117aと共通する部分については、詳細な説明を省略する。
図9の論理ボリューム3は、図6の論理ボリューム4の移動先である。すなわち、論理ボリューム3は、図3の移動先ボリューム302に対応する。このため、容量602、I/O制御種別603、WORM単位604及びパス切替607は、図6の論理ボリューム4と同じである。また、マイグレーション状態605は「移動先」、マイグレーションペアLUN606は「記憶装置101a(LUN=4)」である。さらに、WORM属性608は、WORM属性情報(3)909を指す。このWORM属性情報(3)909は、図6のWORM属性情報(3)6093の複写である。
なお、図9の論理ボリューム3が図6の論理ボリューム4の移動元である場合、マイグレーション状態605は「移動元」となる。
図10は、本発明の実施の形態のパス管理情報の説明図である。
マイグレーション実行中の論理ボリュームは、移動元の論理ボリュームと移動先の論理ボリュームとで一つのマイグレーションペアを構成する。ホスト102は、一つのマイグレーションペアを一つの論理ボリュームと認識する。従って、マイグレーション実行中の論理ボリュームにホスト102からのアクセスがあった場合に、どちらの論理ボリュームにアクセスパスを設定するか選択する必要がある。
パス管理プログラム112は、ホスト102からのアクセスがあったときに、パス管理情報118を参照して、アクセスパスを選択し、選択されたアクセスパスに切り替える。パス管理情報118には、パス管理プログラム112がアクセスパスを選択するために必要な情報が格納される。
ただし、図2に示すように、移動元ボリューム201と移動先ボリューム202が異なる記憶装置101に含まれ、それぞれの記憶装置101がホスト102と接続されている場合、記憶装置101内のパス管理プログラム113は、ホスト102からのアクセスパスを切り替えることができない。このため、ホスト102bは、パス管理プログラム113と同等の機能を備えるホストパス管理プログラム203と、パス管理情報118と同等の情報を含むホストパス管理情報204とを有する。
図10は、記憶装置101aのパス管理情報118aの内容を示す。パス管理情報118b、118c及びホストパス管理情報204も図10と同様の内容を含む。
図10において、一つの行は、一つのマイグレーションペアに対応する。ただし、マイグレーションが実行されていない論理ボリュームに関しては、一つの行が一つの論理ボリュームに対応する。
図10の例において、行1010は、記憶装置101aの論理ボリューム0(図示省略)に対応する。行1011は、記憶装置101aの論理ボリューム1と論理ボリューム2とからなるマイグレーションペア(すなわち、移動元ボリューム119及び移動先ボリューム120)に対応する。行1012は、記憶装置101aの論理ボリューム3と記憶装置101bの論理ボリューム1とからなるマイグレーションペア(すなわち、移動元ボリューム201及び移動先ボリューム202)に対応する。行1013は、記憶装置101aの論理ボリューム4と記憶装置101cの論理ボリューム3とからなるマイグレーションペア(すなわち、移動元ボリューム301及び移動先ボリューム302)に対応する。
図10において、ポート番号1001は、ホスト102からのアクセスを受けるI/F111を識別する番号である。
ホストID1002は、各行に対応する論理ボリューム(又はマイグレーションペア)にアクセスするホスト102の識別子である。図10の例において、識別子「AAA」、「BBB」及び「CCC」は、それぞれ、ホスト102a、102b及び102cの識別子である。
ホストLUN1003は、ホスト102が認識する各論理ボリュームの識別子である。ただし、マイグレーションペアを構成する二つの論理ボリュームは、ホストからは一つの論理ボリュームとして認識される。このため、一つのマイグレーションペアに一つのホストLUNが付される。また、ホスト102は、そのホスト102がアクセスする論理ボリューム(又はマイグレーションペア)のみを一意に識別すればよい。このため、別のホスト102からアクセスされる論理ボリューム(又はマイグレーションペア)には、同じホストLUN1003が付されてもよい。
内部LUN1004は、各論理ボリューム(又はマイグレーションペア)を記憶装置101a内で一意に識別する識別子である。
マイグレーション状態1005は、各論理ボリューム(又はマイグレーションペア)がマイグレーション実行中であるか否かを示す。マイグレーション状態1005が「○」である論理ボリューム(又はマイグレーションペア)は、マイグレーション実行中である。
移動元1006は、マイグレーションペアのうち、移動元の論理ボリュームの所在及び識別子を示す。
移動先1007は、マイグレーションペアのうち、移動先の論理ボリュームの所在及び識別子を示す。
パス切替1008は、各マイグレーションペアについて、ホスト102からのアクセスパスが切り替えられたか否かを示す。パス切替1008が「未」であるマイグレーションペアのアクセスパスは、移動元の論理ボリュームに設定され、パス切替1008が「済」であるマイグレーションペアのアクセスパスは、移動先の論理ボリュームに設定されている。
進捗度1009は、マイグレーションの進捗の程度を示す。具体的には、進捗度1009は、複写済みビットマップのポインタである。
複写済みビットマップ1014〜1016は、論理ボリュームのセクタの複写が終了したか否かを示す複写済みフラグからなる。このフラグは、セクタごとに設けられてもよいが、その場合、複写済みビットマップ1014〜1016自体のデータ量が多くなる。このため、複数セクタごとに一つの複写済みフラグを設けてもよい。以下、一つの複写済みフラグに対応する複数セクタを、マイグレーションブロックと記載する。例えば、128個のセクタが一つのマイグレーションブロックを構成してもよい。このとき、1セクタの容量が0.5KB(キロバイト)であれば、一つのマイグレーショングループのデータ量は、64KBである。
移動元ボリュームのデータは、順次、移動先ボリュームに複写される。この複写が開始する前は、複写済みビットマップ1014〜1016の全ての複写済みフラグの値は、「複写未済」を示す。一つのマイグレーションブロックのデータの複写が終了すると、そのマイグレーションブロックに対応する複写済みフラグが「複写済み」を示す値に変更される。
複写済みビットマップ1014〜1016の全ての複写済みフラグが「複写済み」を示す値となったときに、移動元ボリュームから移動先ボリュームへの全てのデータの複写が終了する。
なお、移動先ボリューム302が記憶装置101aに論理ボリューム4として格納され、移動元ボリューム301が記憶装置101cに論理ボリューム3として格納される構成の場合、行1013の移動元1006は、「記憶装置101c(LUN=3)」となり、移動先1007は、「内部LU(LUN=4)」となる。
次に、図1から図3に示す本発明の実施の形態のストレージシステムの各部の動作を説明する。図1から図3に示すストレージシステムの動作は、基本的には共通であるが、一部に特有の動作がある。以下、共通の動作について説明し、特有の動作について説明する場合は、その旨を明示する。
図11は、本発明の実施の形態のストレージシステムのマイグレーション開始処理のフローチャートである。
図11は、記憶装置101a内の論理ボリュームを記憶装置101a内の別の論理ボリューム又は別の記憶装置内の論理ボリュームに移動(マイグレーション)するときに実行される処理を示す。
マイグレーション開始処理が開始すると(1101)、ホスト102又は管理端末103が、移動元の論理ボリューム(LU)を含む記憶装置101aの構成管理プログラム115aに対して、移動元論理ボリュームの所在と識別子、移動先論理ボリュームの所在と識別子、及びパス切替方式を設定する(1102)。ここで、パス切替方式とは、図4で説明した複写前切替方式又は図5で説明した複写後切替方式のいずれかである。
次に、構成管理プログラム115aは、設定された移動先ボリュームにWORM属性が付されているセクタが含まれるか否かを調査する(1103)。移動先ボリュームにWORM属性が付されているセクタが含まれる場合、当該セクタのデータを更新することができない。従って、当該移動先ボリュームに対してマイグレーションを実行することができない。このため、構成管理プログラム115aは、ホスト102又は管理端末103に、マイグレーションを実行することができない旨を通知する(1104)。そして、マイグレーション開始処理が異常終了する(1105)。
一方、移動先ボリュームにWORM属性が付されているセクタが含まれていない場合は、移動先ボリュームのデータを更新することができる。このため、当該移動先ボリュームに対してマイグレーションを実行することができる。このため、構成管理プログラム115aは、次に、移動先論理ボリュームが同一の記憶装置101a内の論理ボリュームであるか否かを判定する(1106)。
移動先論理ボリュームが同一の記憶装置101a内の論理ボリュームである場合、構成管理プログラム115aは、ボリューム管理情報117aの移動先ボリュームのWORM属性608の設定を移動元ボリュームと同一にする(1107)。これは、図1の場合に相当する。図6の例では、論理ボリューム2のWORM属性608をWORM属性情報(1)6091のポインタとする。その結果、論理ボリューム2のWORM属性情報は、論理ボリューム1のWORM属性情報と同一になる。
一方、移動先論理ボリュームが同一の記憶装置101a内の論理ボリュームでない場合、構成管理プログラム115aは、移動先ボリュームを含む記憶装置101の設定をする(1108)。これは、図2又は図3の場合に相当する。この設定は、図12で詳細に説明する。
次に、構成管理プログラム115aは、ボリューム管理情報117a及びパス管理情報118aに、ステップ1102の設定を反映させる(1109)。
そして、マイグレーション開始処理が正常終了する(1110)。
図12は、本発明の実施の形態のストレージシステムの移動先装置の設定処理のフローチャートである。
移動先装置の設定処理は、図11のステップ1108から呼び出される。移動先装置の設定処理が開始すると(1201)、構成管理プログラム115aは、移動先ボリュームのWORM属性を移動元ボリュームと同一にするため、移動元ボリュームのWORM属性情報を移動先ボリュームを含む記憶装置101に送信する(1202)。
次に、ステップ1202の実行中に移動元ボリュームのWORM属性情報が更新されたか否かを判定する(1203)。ステップ1202の実行中に移動元ボリュームのWORM属性情報が更新された場合は、移動元ボリュームのWORM属性情報と移動先ボリュームのWORM属性とが同一になっていないため、更新されたWORM属性情報を移動先の記憶装置101に送信する(1204)。
ステップ1202の実行中に移動元ボリュームのWORM属性情報が更新されない場合、移動元ボリュームのWORM属性情報と移動先ボリュームのWORM属性とが同一になったため、構成管理プログラム115aは、ステップ1102の設定をボリューム管理情報117及びパス管理情報118に反映させるために、この設定を移動先の記憶装置101に送信する(1205)。
次に、実行しようとするマイグレーションのパス切替方式が、複写前切替方式であり、かつ、ホストパス管理プログラム203がアクセスパスの切替を実行するか否かを判定する(1206)。その結果、パス切替方式が複写後切替方式であるか、又は、パス管理プログラム113がアクセスパスの切替を実行する場合は、移動先装置の設定処理が正常終了する(1208)。これは、図3の場合、又は、図2において複写後切替方式が適用された場合に相当する。
一方、パス切替方式が複写前切替方式であり、かつ、ホストパス管理プログラム203がアクセスパスの切替を実行する場合、構成管理プログラム115aは、ホストパス管理プログラム203にマイグレーションの開始を通知し、パス切替を実行する(1207)。これは、図2において複写前切替方式が適用された場合に相当する。
そして、移動先装置の設定処理が正常終了する(1208)。
図13は、本発明の実施の形態のストレージシステムのマイグレーション完了処理のフローチャートである。
マイグレーション完了処理は、移動元ボリュームから移動先ボリュームへの全てのデータの複写が終了したときに実行される。
図13は、例として、記憶装置101a内の論理ボリュームから記憶装置101a内の別の論理ボリューム又は別の記憶装置内の論理ボリュームへのデータの複写が終了したときの処理を示す。
マイグレーション完了処理が開始すると(1301)、構成管理プログラム115aは、ボリューム管理情報117a及びパス管理情報118aを更新する(1302)。具体的には、複写が終了した論理ボリュームのマイグレーション状態605を「無」に変更し、マイグレーションペアLUN606及びパス切替607を空欄にする。さらに、複写が終了したマイグレーションペアのマイグレーション状態1005を「×」に変更し、移動元1006、移動先1007及びパス切替1008を空欄にする。
次に、構成管理プログラム115aは、移動先ボリュームが同一の記憶装置101a内の論理ボリュームであるか否かを判定する(1303)。
移動先ボリュームが同一の記憶装置101a内の論理ボリュームである場合は、ステップ1307に進む。これは、図1の場合に相当する。
一方、移動先ボリュームが同一の記憶装置101a内の論理ボリュームでない場合は、移動先ボリュームを含む記憶装置101の構成管理プログラム115が、ボリューム管理情報117及びパス管理情報118を、ステップ1302と同様に更新する。
さらに、構成管理プログラム115aは、パス切替方式が複写後切替方式であり、かつ、ホストパス管理プログラム203がパス切替を実行するか否かを判定する(1305)。パス切替方式が複写前切替方式であるか、又は、パス管理プログラム113がパス切替を実行する場合は、ステップ1307に進む。これは、図3の場合、又は、図2において複写前切替方式が適用された場合に相当する。
一方、パス切替方式が複写後切替方式であり、かつ、ホストパス管理プログラム203がパス切替を実行する場合、構成管理プログラム115aは、ホストパス管理プログラム203に、マイグレーション完了を通知する。これは、図2において複写後切替方式が適用された場合に相当する。ホストパス管理プログラム203は、パス切替を実行する(1306)。
次に、構成管理プログラム115aは、移動元ボリュームに対応するボリューム管理情報117aのI/O制御種別603を「通常」に変更する(1307)。その結果、移動元ボリュームのWORM属性は解除される。その後、ホスト102は、その移動元ボリュームのデータを更新することができる。ホスト102は、その移動元ボリュームを消去してもよいし、新しい論理ボリュームとして再利用してもよい。
図14は、本発明の実施の形態のストレージシステムにおいて、同一の記憶装置内でマイグレーションを実行する際にホストと各プログラムとの間でやり取りされるコマンドのシーケンス図である。
図14は、例として、ホスト102aが記憶装置101a内の移動元ボリューム119から移動先ボリューム120へのマイグレーションを指示する場合を示す(図1参照)。
最初に、ホスト102aは、マイグレーションペアを設定するコマンドを構成管理プログラム115aに送信する(1401)。構成管理プログラム115aは、受信したコマンドに従って、ボリューム管理情報117a及びパス管理情報118aを設定する(1402)。具体的には、構成管理プログラム115aは、マイグレーション開始処理(図11参照)を実行する。構成管理プログラム115aは、マイグレーション開始処理が正常終了すると、マイグレーションペアの設定を受理したことを示す通知をホスト102aに送信する(1403)。
次に、ホスト102aは、構成管理プログラム115aに、マイグレーション開始のコマンドを送信する(1404)。構成管理プログラム115aは、受信したコマンドをマイグレーションプログラム114aに送信する(1405)。マイグレーションプログラム114aは、マイグレーションの実行(1406)を開始すると共に、マイグレーション開始の指示を受理したことを示す通知を構成管理プログラム115aに送信する(1407)。構成管理プログラム115aは、受信した通知をホスト102aに送信する(1408)。
マイグレーションプログラム114aは、複写済みビットマップ1014を参照する。複写が開始した時点では、複写済みビットマップ1014に含まれる全ての複写済みフラグは、「複写未済」である。マイグレーションプログラム114aは、複写済みフラグが「複写未済」であるマイグレーションブロック(すなわち、複写が終了していないマイグレーションブロック)のデータを移動元ボリューム119から移動先ボリューム120に複写する。複写が終了したマイグレーションブロックの複写済みフラグは、「複写済み」に更新される。マイグレーションプログラム114aは、複写済みフラグが「複写済み」であるマイグレーションブロックのデータを更新することができない。
複写済みビットマップ1014の全ての複写済みフラグが「複写済み」となったときに、マイグレーションプログラム114aは、マイグレーションの実行を終了する。
マイグレーションプログラム114aがマイグレーションを実行しているときにホスト102aが読み出し又は書き込みコマンドを送信した場合(1409)、パス管理プログラム113aがそのコマンドを受信する。パス管理プログラム113aは、パス管理情報118aを参照して、アクセスパスを設定し、受信したコマンドを入出力処理プログラム112aに送信する(1410)。具体的には、パス管理プログラム113aは、パス管理情報118aのパス切替1008(図10参照)が「未」である場合は、アクセスパスを移動元ボリュームに設定し、パス切替1008が「済」である場合は、アクセスパスを移動先ボリュームに設定する。
入出力処理プログラム112aは、設定されたアクセスパスに従って、ホスト102aからの読み出し又は書き込みコマンドを処理する。すなわち、入出力処理プログラム112aは、アクセスパスが設定された論理ボリュームに対してデータの読み出し又は書き込みを実行する。ただし、入出力処理プログラム112aは、WORM属性情報6091(図6参照)を参照して、データが書き込まれる領域にWORM属性が付されていれば、当該領域のデータを更新しない。
マイグレーションプログラム114aがマイグレーションを実行しているときに、ホスト102aがWORM属性情報6091を更新(例えば、新しいWORM領域を追加)するコマンドを送信した場合(1411)、構成管理プログラム115aがそのコマンドを受信する。構成管理プログラム115aは、受信したコマンドに従って、WORM属性情報6091を更新する(1412)。構成管理プログラム115aは、更新が終了すると、WORM属性情報6091の更新を受理したことを示す通知をホスト102aに送信する(1413)。
マイグレーションプログラム114aは、マイグレーションの実行を終了すると、構成管理プログラム115aにマイグレーション完了通知を送信する(1414)。構成管理プログラム115aは、マイグレーション完了通知を受信すると、管理情報を更新する(1415)。具体的には、構成管理プログラム115aは、マイグレーション完了処理(図13参照)を実行する。構成管理プログラム115aは、マイグレーション完了処理が正常終了すると、マイグレーション完了通知をホスト102aに送信する(1416)。
図15は、本発明の実施の形態のストレージシステムにおいて、SANを介して接続された記憶装置間で、複写前切替方式(図4)を適用したマイグレーションを実行する際に、ホストと各記憶装置との間でやり取りされるコマンドのシーケンス図である。
図15は、例として、ホスト102bが記憶装置101a内の移動元ボリューム201から記憶装置101b内の移動先ボリューム202へのマイグレーションを指示する場合を示す(図2参照)。
マイグレーションが開始する前に、ホスト102bがデータの読み出し又は書き込みをしようとする場合、ホスト102bは、ホスト102b内のホストパス管理プログラム203に読み出し又は書き込みコマンドを送信する(1501)。
ホストパス管理プログラム203は、ホストパス管理情報204を参照して、アクセスパスを設定する。具体的には、この時点でマイグレーションが開始していないため、ホストパス管理プログラム203は、アクセスパスを移動元の記憶装置101aに設定する。そして、ホストパス管理プログラム203は、読み出し又は書き込みコマンドを移動元の記憶装置101aに送信する(1502)。記憶装置101aは、受信したコマンドに従って、データの読み出し又は書き込み(入出力)を実行する(1503)。ただし、記憶装置101aは、データが書き込まれる領域にWORM属性が付されていれば、当該領域のデータを更新しない。
ホスト102bは、マイグレーションを開始するとき、最初に、マイグレーションペアを設定するコマンドを移動元の記憶装置101aに送信する(1504)。記憶装置101aは、受信したコマンドに従ってボリューム管理情報117a及びパス管理情報118aを更新する(1505)。さらに、記憶装置101aは、受信したコマンドと、ボリューム管理情報117aに含まれるWORM属性情報とを移動先の記憶装置101bに送信する(1506)。
具体的には、記憶装置101aの構成管理プログラム115aが、マイグレーション開始処理(図11参照)を実行し、ステップ1108において、移動先装置の設定処理(図12参照)を実行する。
記憶装置101bは、受信したコマンド及びWORM属性情報に従って、ボリューム管理情報117b及びパス管理情報118bを更新する(1507)。この更新が終了すると、記憶装置101bは、記憶装置101aに、マイグレーションペアを設定するコマンドを受理したことを通知する(1508)。
記憶装置101aは、ホスト102bに、マイグレーションペアを設定するコマンドを受理したことを通知する(1509)。
さらに、ホスト102bは、ホストパス管理情報204を、パス管理情報118a及び118bと同様に設定する。
次に、ホスト102bは、記憶装置101aに、マイグレーション開始のコマンドを送信する(1510)。記憶装置101aは、受信したコマンドを記憶装置101bに送信する(1511)。さらに、記憶装置101aは、ホストパス管理プログラム203にパス切替のコマンドを送信する(1512)。このパス切替のコマンドは、ホスト102bと記憶装置101aとの間に設定されていたアクセスパスを、ホスト102bと記憶装置101bとの間に設定しなおすことを指示するコマンドである。そして、記憶装置101aは、ホスト102bに、マイグレーション開始のコマンドを受理したことを通知する(1513)。
記憶装置101a及び101bは、マイグレーション開始のコマンドを受信すると、マイグレーションの実行を開始する(1514、1515)。具体的には、マイグレーションプログラム114a及び114bが、移動元ボリューム201のデータを、移動先ボリューム202に複写する。このとき、図14で説明したように、マイグレーションプログラム114a及び114bは、複写済みビットマップ1015を参照する。
記憶装置101a及び101bがマイグレーションを実行しているときに、ホスト102bが読み出し又は書き込みコマンドを送信した場合(1516)、ホストパス管理プログラム203がそのコマンドを受信する。ホストパス管理プログラム203は、既にパス切替のコマンドを受信しているため(1512)、ホスト102bからのアクセスパスを移動先の記憶装置101bに設定している。このため、ホストパス管理プログラム203は、受信した読み出し又は書き込みコマンドを記憶装置101bに送信する(1517)。
記憶装置101bは、受信した読み出し又は書き込みコマンドに従って、データの読み出し又は書き込み(入出力)を実行する(1518)。ただし、記憶装置101bは、データが書き込まれる領域にWORM属性が付されていれば、当該領域のデータを更新しない。
記憶装置101a及び101bがマイグレーションを実行しているときに、ホスト102bが新しいWORM領域を追加するコマンドを送信した場合(1519)、ホストパス管理プログラム203がそのコマンドを受信する。ホストパス管理プログラム203は、受信したコマンドを、記憶装置101bに送信する(1520)。記憶装置101bは、受信したコマンドに従って、WORM属性情報6092を更新する(1521)。記憶装置101bは、更新が終了すると、WORM領域を追加したことを示す通知をホスト102bに送信する(1522)。
記憶装置101aは、マイグレーションの実行(1514、1515)が終了すると、マイグレーション完了処理(図13)を実行する(1523)。その結果、ボリューム管理情報117a、117b、パス管理情報118a及び118bが更新される。
記憶装置101aは、マイグレーション完了処理1523が正常終了すると、マイグレーション完了通知をホスト102bに送信する(1524)。
図16は、本発明の実施の形態のストレージシステムにおいて、SANを介して接続された記憶装置間で、複写後切替方式(図5)を適用したマイグレーションを実行する際に、ホストと各記憶装置との間でやり取りされるコマンドのシーケンス図である。
図16は、図15と同様に、ホスト102bが記憶装置101a内の移動元ボリューム201から記憶装置101b内の移動先ボリューム202へのマイグレーションを指示する場合を示す(図2参照)。なお、図16において、図15と共通する部分については、詳細な説明を省略する。
ホスト102bは、マイグレーションを開始するとき、最初に、マイグレーションペアを設定するコマンドを移動元の記憶装置101aに送信する(1601)。記憶装置101aは、受信したコマンドに従ってボリューム管理情報117a及びパス管理情報118aを更新する(1602)。さらに、記憶装置101aは、受信したコマンドと、ボリューム管理情報117aに含まれるWORM属性情報とを移動先の記憶装置101bに送信する(1603)。
具体的には、記憶装置101aの構成管理プログラム115aが、マイグレーション開始処理(図11参照)を実行し、ステップ1108において、移動先装置の設定処理(図12参照)を実行する。
記憶装置101bは、受信したコマンド及びWORM属性情報に従って、ボリューム管理情報117b及びパス管理情報118bを更新する(1604)。この更新が終了すると、記憶装置101bは、記憶装置101aに、マイグレーションペアを設定するコマンドを受理したことを通知する(1605)。
記憶装置101aは、ホスト102bに、マイグレーションペアを設定するコマンドを受理したことを通知する(1606)。
さらに、ホスト102bは、ホストパス管理情報204を、パス管理情報118a及び118bと同様に設定する。
次に、ホスト102bは、記憶装置101aに、マイグレーション開始のコマンドを送信する(1607)。記憶装置101aは、受信したコマンドを記憶装置101bに送信する(1608)。そして、記憶装置101aは、ホスト102bに、マイグレーション開始のコマンドを受理したことを通知する(1609)。
記憶装置101a及び101bは、マイグレーション開始のコマンドを受信すると、マイグレーションの実行を開始する(1610、1611)。
記憶装置101a及び101bがマイグレーションを実行しているときに、ホスト102bが読み出し又は書き込みコマンドを送信した場合(1612)、ホストパス管理プログラム203がそのコマンドを受信する。ホストパス管理プログラム203は、まだパス切替のコマンドを受信していないため、ホスト102bからのアクセスパスを移動元の記憶装置101aに設定している。このため、ホストパス管理プログラム203は、受信した読み出し又は書き込みコマンドを記憶装置101aに送信する(1613)。
記憶装置101aは、受信した読み出し又は書き込みコマンドに従って、データの読み出し又は書き込み(入出力)を実行する(1614)。ただし、記憶装置101bは、データが書き込まれる領域にWORM属性が付されていれば、当該領域のデータを更新しない。
記憶装置101a及び101bがマイグレーションを実行しているときに、ホスト102bが新しいWORM領域を追加するコマンドを送信した場合(1615)、ホストパス管理プログラム203がそのコマンドを受信する。ホストパス管理プログラム203は、受信したコマンドを、記憶装置101aに送信する(1616)。記憶装置101aは、受信したコマンドに従って、WORM属性情報6092を更新する(1617)。さらに、記憶装置101aは、受信したコマンドを、記憶装置101bに送信する(1618)。記憶装置101bは、受信したコマンドに従って、WORM属性情報6092を更新する(1619)。更新が終了すると、記憶装置101bは、WORM領域を追加したことを示す通知を記憶装置101aに送信する(1620)。記憶装置101aは、WORM領域を追加したことを示す通知をホスト102bに送信する(1621)。
記憶装置101aは、マイグレーションの実行(1610、1611)が終了すると、マイグレーション完了処理(図13)を実行する(1622)。その結果、ボリューム管理情報117a、117b、パス管理情報118a及び118bが更新される。このとき、パス切替のコマンド(図13のステップ1306)がホストパス管理プログラム203に送信される(1623)。
記憶装置101aは、マイグレーション完了処理1622が正常終了すると、マイグレーション完了通知をホスト102bに送信する(1624)。
マイグレーション完了後に、ホスト102bが読み出し又は書き込みコマンドを送信した場合(1625)、ホストパス管理プログラム203がそのコマンドを受信する。ホストパス管理プログラム203は、既にパス切替のコマンドを受信しているため(1623)、ホスト102bからのアクセスパスを移動先の記憶装置101bに設定している。このため、ホストパス管理プログラム203は、受信した読み出し又は書き込みコマンドを記憶装置101bに送信する(1626)。
記憶装置101bは、受信した読み出し又は書き込みコマンドに従って、データの読み出し又は書き込み(入出力)を実行する(1627)。ただし、記憶装置101bは、データが書き込まれる領域にWORM属性が付されていれば、当該領域のデータを更新しない。
図17は、本発明の実施の形態のストレージシステムにおいて、直接接続された記憶装置間で、複写前切替方式(図4)を適用したマイグレーションを実行する際に、ホストと各記憶装置との間でやり取りされるコマンドのシーケンス図である。
図17は、例として、ホスト102cが記憶装置101a内の移動元ボリューム301から記憶装置101c内の移動先ボリューム302へのマイグレーションを指示する場合を示す(図3参照)。
マイグレーションが開始する前に、ホスト102cがデータの読み出し又は書き込みをしようとする場合、ホスト102cは、移動元の記憶装置101aに読み出し又は書き込みコマンドを送信する(1701)。
記憶装置101aのパス管理プログラム113aは、パス管理情報118aを参照して、アクセスパスを設定する。具体的には、この時点でマイグレーションが開始していないため、パス管理プログラム113aは、アクセスパスを移動元の記憶装置101aに設定する。記憶装置101aは、受信したコマンドに従って、データの読み出し又は書き込み(入出力)を実行する(1702)。ただし、記憶装置101aは、データが書き込まれる領域にWORM属性が付されていれば、当該領域のデータを更新しない。
ホスト102cは、マイグレーションを開始するとき、最初に、マイグレーションペアを設定するコマンドを移動元の記憶装置101aに送信する(1703)。記憶装置101aは、受信したコマンドに従ってボリューム管理情報117a及びパス管理情報118aを更新する(1704)。図17の例では、複写前切替方式が適用されるため、ボリューム管理情報117aのパス切替607及びパス管理情報118aのパス切替1008は、「済」に設定される。その結果、アクセスパスは、ホスト102cから、記憶装置101aを経由して、記憶装置101cに設定される。さらに、記憶装置101aは、受信したコマンドと、ボリューム管理情報117aに含まれるWORM属性情報とを移動先の記憶装置101cに送信する(1705)。
具体的には、記憶装置101aの構成管理プログラム115aが、マイグレーション開始処理(図11参照)を実行し、ステップ1108において、移動先装置の設定処理(図12参照)を実行する。
記憶装置101cは、受信したコマンド及びWORM属性情報に従って、ボリューム管理情報117c及びパス管理情報118cを更新する(1706)。図17の例には、複写前切替方式が適用されるため、ボリューム管理情報117cのパス切替607及びパス管理情報118cのパス切替1008は、「済」に設定される。その結果、アクセスパスは、ホスト102cから、記憶装置101aを経由して、記憶装置101cに設定される。この更新が終了すると、記憶装置101cは、記憶装置101aに、マイグレーションペアを設定するコマンドを受理したことを通知する(1707)。
記憶装置101aは、ホスト102cに、マイグレーションペアを設定するコマンドを受理したことを通知する(1708)。
次に、ホスト102cは、記憶装置101aに、マイグレーション開始のコマンドを送信する(1709)。記憶装置101aは、受信したコマンドを記憶装置101cに送信する(1710)。そして、記憶装置101aは、ホスト102cに、マイグレーション開始のコマンドを受理したことを通知する(1711)。
記憶装置101a及び101cは、マイグレーション開始のコマンドを受信すると、マイグレーションの実行を開始する(1712、1713)。具体的には、マイグレーションプログラム114a及び114cが、移動元ボリューム301のデータを、移動先ボリューム302に複写する。このとき、図14で説明したように、マイグレーションプログラム114a及び114cは、複写済みビットマップ1016を参照する。
記憶装置101a及び101cがマイグレーションを実行しているときに、ホスト102cが読み出し又は書き込みコマンドを送信した場合(1714)、記憶装置101aがそのコマンドを受信する。ホスト101cからのアクセスパスは、記憶装置101aを経由して、記憶装置101cに設定されている(1704、1706)。このため、記憶装置101aは、受信した読み出し又は書き込みコマンドを記憶装置101cに送信する(1715)。
記憶装置101cは、受信した読み出し又は書き込みコマンドに従って、データの読み出し又は書き込み(入出力)を実行する(1716)。ただし、記憶装置101cは、データが書き込まれる領域にWORM属性が付されていれば、当該領域のデータを更新しない。
記憶装置101a及び101cがマイグレーションを実行しているときに、ホスト102cが新しいWORM領域を追加するコマンドを送信した場合(1717)、記憶装置101aがそのコマンドを受信する。記憶装置101aは、受信したコマンドに従って、WORM属性情報6093を更新する(1718)。さらに、記憶装置101aは、受信したコマンドを、記憶装置101cに送信する(1719)。記憶装置101cは、受信したコマンドに従って、WORM属性情報6093を更新する(1720)。
更新が終了すると、記憶装置101cは、WORM領域を追加したことを示す通知を記憶装置101aに送信する(1721)。記憶装置101aは、WORM領域を追加したことを示す通知をホスト102cに送信する(1722)。
記憶装置101aは、マイグレーションの実行(1712、1713)が終了すると、マイグレーション完了処理(図13)を実行する(1723)。その結果、ボリューム管理情報117a、117c、パス管理情報118a及び118cが更新される。
記憶装置101aは、マイグレーション完了処理が正常終了すると、ホスト102cにマイグレーション完了通知を送信する(1724)。
図18は、本発明の実施の形態のストレージシステムにおいて、直接接続された記憶装置間で、複写後切替方式(図5)を適用したマイグレーションを実行する際に、ホストと各記憶装置との間でやり取りされるコマンドのシーケンス図である。
図18は、図17と同様に、ホスト102cが記憶装置101a内の移動元ボリューム301から記憶装置101c内の移動先ボリューム302へのマイグレーションを指示する場合を示す(図3参照)。なお、図18において、図17と共通する部分については、詳細な説明を省略する。
マイグレーションが開始する前に、ホスト102cがデータの読み出し又は書き込みをしようとする場合、ホスト102cは、移動元の記憶装置101aに読み出し又は書き込みコマンドを送信する(1801)。
記憶装置101aは、受信したコマンドに従って、データの読み出し又は書き込み(入出力)を実行する(1802)。ただし、記憶装置101aは、データが書き込まれる領域にWORM属性が付されていれば、当該領域のデータを更新しない。
ホスト102cは、マイグレーションを開始するとき、最初に、マイグレーションペアを設定するコマンドを移動元の記憶装置101aに送信する(1803)。記憶装置101aは、受信したコマンドに従ってボリューム管理情報117a及びパス管理情報118aを更新する(1804)。図18の例では、複写後切替方式が適用されるため、ボリューム管理情報117aのパス切替607及びパス管理情報118aのパス切替1008は、「未」に設定される。その結果、アクセスパスは、ホスト102cから、記憶装置101aに設定される。さらに、記憶装置101aは、受信したコマンドと、ボリューム管理情報117aに含まれるWORM属性情報とを移動先の記憶装置101cに送信する(1805)。
記憶装置101cは、受信したコマンド及びWORM属性情報に従って、ボリューム管理情報117c及びパス管理情報118cを更新する(1806)。図18の例には、複写後切替方式が適用されるため、ボリューム管理情報117cのパス切替607及びパス管理情報118cのパス切替1008は、「未」に設定される。その結果、アクセスパスは、ホスト102cから、記憶装置101aに設定される。この更新が終了すると、記憶装置101cは、記憶装置101aに、マイグレーションペアを設定するコマンドを受理したことを通知する(1807)。
記憶装置101aは、ホスト102cに、マイグレーションペアを設定するコマンドを受理したことを通知する(1808)。
次に、ホスト102cは、記憶装置101aに、マイグレーション開始のコマンドを送信する(1809)。記憶装置101aは、受信したコマンドを記憶装置101cに送信する(1810)。そして、記憶装置101aは、ホスト102cに、マイグレーション開始のコマンドを受理したことを通知する(1811)。
記憶装置101a及び101cは、マイグレーション開始のコマンドを受信すると、マイグレーションの実行を開始する(1812、1813)。
記憶装置101a及び101cがマイグレーションを実行しているときに、ホスト102cが読み出し又は書き込みコマンドを送信した場合(1814)、記憶装置101aがそのコマンドを受信する。ホスト101cからのアクセスパスは、記憶装置101aに設定されている(1804、1806)。このため、記憶装置101aは、受信した読み出し又は書き込みコマンドに従って、データの読み出し又は書き込み(入出力)を実行する(1815)。ただし、記憶装置101aは、データが書き込まれる領域にWORM属性が付されていれば、当該領域のデータを更新しない。
記憶装置101a及び101cがマイグレーションを実行しているときに、ホスト102cが新しいWORM領域を追加するコマンドを送信した場合(1816)、記憶装置101aがそのコマンドを受信する。記憶装置101aは、受信したコマンドに従って、WORM属性情報6093を更新する(1817)。さらに、記憶装置101aは、受信したコマンドを、記憶装置101cに送信する(1818)。記憶装置101cは、受信したコマンドに従って、WORM属性情報6093を更新する(1819)。
更新が終了すると、記憶装置101cは、WORM領域を追加したことを示す通知を記憶装置101aに送信する(1820)。記憶装置101aは、WORM領域を追加したことを示す通知をホスト102cに送信する(1821)。
記憶装置101aは、マイグレーションの実行(1812、1813)が終了すると、マイグレーション完了処理(図13)を実行する(1822)。その結果、ボリューム管理情報117a、117c、パス管理情報118a及び118cが更新される。このとき、ボリューム管理情報117aのパス切替607及びパス管理情報118aのパス切替1008は、「済」に設定される。同様にして、ボリューム管理情報117cのパス切替607及びパス管理情報118cのパス切替1008も、「済」に設定される。すなわち、アクセスパスは、ホスト102cから、記憶装置101aを経由して、記憶装置101cに設定される。
記憶装置101aは、マイグレーション完了処理が正常終了すると、ホスト102cにマイグレーション完了通知を送信する(1823)。
マイグレーション完了後にホスト102cが読み出し又は書き込みコマンドを送信した場合(1824)、記憶装置101aがそのコマンドを受信する。ホスト101cからのアクセスパスは、記憶装置101aを経由して、記憶装置101cに設定されている(1822)。このため、記憶装置101aは、受信した読み出し又は書き込みコマンドを記憶装置101cに送信する(1825)。
記憶装置101cは、受信した読み出し又は書き込みコマンドに従って、データの読み出し又は書き込み(入出力)を実行する(1826)。ただし、記憶装置101cは、データが書き込まれる領域にWORM属性が付されていれば、当該領域のデータを更新しない。
図19は、本発明の実施の形態のストレージシステムにおいて、複写前切替方式が適用されたマイグレーションを実行中に、ホストからデータを更新するための書き込み要求があったときに、入出力処理プログラム112によって実行される、更新処理のフローチャートである。
ホスト102からデータの書き込み要求を受信して、更新処理が開始すると(1901)、入出力処理プログラム112は、ホストから受信したコマンドを解釈する(1902)。
次に、入出力処理プログラム112は、ボリューム管理情報117に含まれるWORM属性情報6091等を参照して、データが更新されるセクタ(更新対象セクタ)とWORM領域が重複するか否かを判定する。すなわち、更新対象セクタにWORM属性が付されているか否かを判定する(1903)。
更新対象セクタにWORM属性が付されている場合、当該セクタのデータを更新することができないため、入出力処理プログラム112は、ホスト102にコマンドのエラーステータスを返送して(1904)、更新処理を異常終了する(1905)。
一方、更新対象セクタにWORM属性が付されていない場合、入出力処理プログラム112は、パス管理情報118に含まれる複写済みビットマップ1014等を参照して、その更新対象セクタが複写済みであるか否かを判定する(1906)。
更新対象セクタが複写済みである場合、ステップ1909に進む。
一方、更新対象セクタが複写済みでない場合、入出力処理プログラム112は、更新対象セクタを含むマイグレーションブロックのデータを、移動元ボリュームから移動先ボリュームに複写する(1907)。さらに、入出力処理プログラム112は、当該マイグレーションブロックの複写済みフラグを「複写済み」とするように、複写済みビットマップ1014等を更新する(1908)。
ステップ1907及び1908を実行することによって、マイグレーションプログラム114が、移動先ボリュームで更新された新しいデータの上に、移動元ボリュームの古いデータを上書きすることを防ぐことができる。
ただし、一つのマイグレーションブロックに含まれる全てのセクタが更新対象セクタである場合、入出力処理プログラム112は、ステップ1907を実行しなくてもよい。
次に、入出力処理プログラム112は、移動先ボリュームの更新対象セクタのデータを更新する(1909)。
次に、入出力処理プログラム112は、ホスト102にコマンドの正常終了ステータスを返送して(1910)、更新処理を正常終了する(1911)。
図20は、本発明の実施の形態のストレージシステムにおいて、複写前切替方式が適用されたマイグレーションを実行中に、ホストからデータの読み出し要求があったときに、入出力処理プログラム112によって実行される、読み出し処理のフローチャートである。
ホスト102からデータの読み出し要求を受信して、読み出し処理が開始すると(2001)、入出力処理プログラム112は、ホストから受信したコマンドを解釈する(2002)。
次に、入出力処理プログラム112は、パス管理情報118に含まれる複写済みビットマップ1014等を参照して、データが読み出されるセクタ(読み出し対象セクタ)が複写済みであるか否かを判定する(2003)。
読み出し対象セクタが複写済みである場合、入出力処理プログラム112は、移動先ボリュームから読み出し対象セクタのデータを読み出してキャッシュメモリ110に書き込む(2004)。
一方、読み出し対象セクタが複写済みでない場合、入出力処理プログラム112は、読み出し対象セクタを含むマイグレーションブロックのデータを、移動元ボリュームから移動先ボリュームに複写する(2005)。このとき、複写されたデータは、キャッシュメモリ110に残しておく。
次に、入出力処理プログラム112は、当該マイグレーションブロックの複写済みフラグを「複写済み」とするように、複写済みビットマップ1014等を更新する(2006)。
次に、入出力処理プログラム112は、キャッシュメモリ110から読み出し対象セクタのデータを読み出してホスト102に送信する(2007)。
次に、入出力処理プログラム112は、ホスト102にコマンドの正常終了ステータスを返送して(2008)、読み出し処理を正常終了する(2009)。
図21は、本発明の実施の形態のストレージシステムにおいて、複写後切替方式が適用されたマイグレーションを実行中に、ホストからデータを更新するための書き込み要求があったときに、入出力処理プログラム112によって実行される、更新処理のフローチャートである。
ホスト102からデータの書き込み要求を受信して、更新処理が開始すると(2101)、入出力処理プログラム112は、ホストから受信したコマンドを解釈する(2102)。
次に、入出力処理プログラム112は、ボリューム管理情報117に含まれるWORM属性情報6091等を参照して、データが更新されるセクタとWORM領域が重複するか否かを判定する。すなわち、更新対象セクタにWORM属性が付されているか否かを判定する(2103)。
更新対象セクタにWORM属性が付されている場合、当該セクタのデータを更新することができないため、入出力処理プログラム112は、ホスト102にコマンドのエラーステータスを返送して(2104)、更新処理を異常終了する(2105)。
一方、更新対象セクタにWORM属性が付されていない場合、入出力処理プログラム112は、パス管理情報118に含まれる複写済みビットマップ1014等を参照して、その更新対象セクタが複写済みであるか否かを判定する(2106)。
更新対象セクタが複写済みでない場合、ステップ2108に進む。
一方、更新対象セクタが複写済みである場合、入出力処理プログラム112は、当該セクタを含むマイグレーションブロックの複写済みフラグを「複写未済」とするように、複写済みビットマップ1014等を更新する(2107)。
次に、入出力処理プログラム112は、移動元ボリュームの更新対象セクタのデータを更新し、更新されたデータを、キャッシュメモリ110に書き込む(2108)。
次に、入出力処理プログラム112は、ホスト102にコマンドの正常終了ステータスを返送する(2109)。
次に、入出力処理プログラム112は、キャッシュメモリ110に書き込まれた更新対象セクタのデータを移動先ボリュームに複写する。そして、入出力処理プログラム112は、当該セクタを含むマイグレーションブロックの複写済みフラグを「複写済み」とするように、複写済みビットマップ1014等を更新する(2110)。
以上で、更新処理を正常終了する(2111)。
図22は、本発明の実施の形態のストレージシステムにおいて、複写後切替方式が適用されたマイグレーションを実行中に、ホストからデータの読み出し要求があったときに、入出力処理プログラム112によって実行される、読み出し処理のフローチャートである。
ホスト102からデータの読み出し要求を受信して、読み出し処理が開始すると(2201)、入出力処理プログラム112は、ホストから受信したコマンドを解釈する(2202)。
次に、入出力処理プログラム112は、移動元ボリュームから読み出し対象セクタのデータを読み出してキャッシュメモリ110に書き込む(2203)。
次に、入出力処理プログラム112は、キャッシュメモリ110から読み出し対象セクタのデータを読み出してホスト102に送信する(2204)。
次に、入出力処理プログラム112は、ホスト102にコマンドの正常終了ステータスを返送して(2205)、読み出し処理を正常終了する(2206)。
以上の本発明によれば、マイグレーションが行われる際に、データのWORM属性がデータと共に複写される。このため、複写の実行中も、WORM属性が付されたデータが更新されないように保護される。さらに、複写前にWORM属性が付されていたデータは、複写の終了後にあらためてWORM属性を付さなくても、複写前と同様に保護される。
また、本発明によれば、データの複写が終了した後、WORM属性を解除することによって、移動元のWORM属性が付されていた領域を再利用することができる。