本発明の実施形態を以下に説明する。尚、これにより本発明が限定されるものではない。
[第一の実施形態]本発明の第一の実施形態を、図1〜12を用いて説明する。
図1は、本発明が適用される計算機システムの一例を示す図である。計算機システムは、複数台のホストコンピュータ1と、複数台の記憶装置3と、ホストコンピュータ1と記憶装置3とに接続される仮想化制御装置2と、仮想化制御装置2に接続される管理装置4とを有する。尚、ホストコンピュータ1および記憶装置3はネットワーク5を介して仮想化制御装置2と接続され、管理装置4はネットワーク6を介して仮想化制御装置2と接続される。ネットワーク5及びネットワーク6において使用されるプロトコルは同一のネットワークプロトコルでも異なるネットワークプロトコルでも良い。また、ネットワーク5において使用されるプロトコルも同一のプロトコルに限定されるものではなく、記憶装置と仮想化制御装置間のネットワークで使用されるプロトコルと、ホストコンピュータと仮想化制御装置間のネットワークで使用されるプロトコルは異なるネットワークプロトコルであっても良い。また記憶装置毎、ホストコンピュータ毎に異なるネットワークプロトコルを用いて仮想化制御装置に接続しても良い。
ホストコンピュータ1は、アプリケーションプログラムを実行するCPU10、アプリケーションプログラムが格納されるメモリ11、記録媒体12、ネットワーク5に接続してデータを送受信するポート13を有する。
管理装置4は、仮想化制御装置2を管理するための管理プログラムを実行するCPU40、管理プログラムが格納されるメモリ41、ネットワーク6に接続しデータを送受信するポート43、記録媒体42を有する。
記憶装置3は、ネットワーク5に接続してデータを送受信するポート33と、複数のディスク装置35から構成されるディスク装置群34と、個々のディスク装置35との間でデータの転送処理を行うディスクインタフェース制御部(図1ではHDD I/Fとして示す。)32と、ホストコンピュータ1からのアクセス要求に基づきディスク装置35への個々のアクセスを制御するCPU30と、ホストコンピュータ1とディスク装置35との間で転送されるデータを格納するバッファ部31を有する。
仮想化制御装置2はホストコンピュータ1と記憶装置3との間で送受信されるフレームを転送するスイッチである。仮想化制御装置2は、ホストコンピュータ1或いは記憶装置3との間でデータの転送処理を行う複数のポート23と、複数のポート23間のパス選択を制御するパス制御部22と、管理装置4との間でデータの転送処理を行う管理ポート25と、パス選択制御部22を制御し、又管理装置4との間で送受信されたデータに基づき仮想化制御装置を制御するメイン制御部20を有する。尚、メイン制御部20は、後述するプログラムや情報が格納されるメモリ51や記録媒体52と、これらの情報を用いてプログラムを実行するCPU50を有する。又、図1においてはパス制御部22とメイン制御部20が有するCPU50、メモリ51、記憶媒体52とは直接バスで接続されている例を示したが、パス制御部22とメイン制御部20がブリッジを介して接続される構成であっても良い。
図1には、ホストコンピュータ1、記憶装置3、管理装置4はそれぞれ1つのポートを持つ例を示したが、これに限定されるものではなく、複数のポートを持つことも可能である。更に仮想化制御装置のポート23は、異なるネットワークプロトコルに対応可能であることから、ポート23を管理用ポートとして使用することも可能である。
また記憶装置3は少なくともネットワーク5に接続してデータを送受信するポート33と、ホストコンピュータ1からアクセスされるデータを格納する記憶部を有すれば良く、例えば単体のディスク装置等であっても良い。
図2は、管理装置4の記録媒体42に格納されており、メモリ41に読み込まれてCPU40によって実行されるプログラム、及び管理装置4の記録媒体42に格納される管理情報の一例を示す。
ボリューム管理プログラム414は、仮想化制御装置2から後述するボリュームマッピング情報515を読み出して出力装置に出力し、ボリュームマッピング情報を管理者に通知し、又ボリュームマッピング情報515に新たに登録する情報やボリュームマッピング情報の更新情報を入力装置を介して管理者から受け付けて仮想化制御装置2に送信し、管理者から受け付けた情報をボリュームマッピング情報515に設定する処理を実行するためのプログラムである。また、ボリュームマッピング管理情報411は、仮想化制御装置2から読み出したボリュームマッピング情報515や、管理者から受け付けた登録情報、更新情報を有する。尚、管理装置4のCPU40がボリュームマッピング管理情報411を用いてボリューム管理プログラム414を実行することによってボリューム管理部401が実現される。
ここでボリュームとは、個々の記憶装置(仮想化された記憶装置も含む)で管理される記憶領域のことであり、一台の記憶装置が複数のボリュームを管理することも可能である。更に、記憶装置3で管理されるボリュームを実ボリューム、仮想化制御装置2で管理されるボリュームを仮想ボリュームとして、以後区別するものとする。
記憶装置管理プログラム415は、仮想化制御装置2から後述する記憶装置状態管理情報512を読み出して出力装置に出力し、記憶装置の状態を管理者に通知し、又管理者から記憶装置状態管理情報512への登録情報や更新情報を受け付けて、これらの情報を仮想化制御装置2に設定するために実行されるプログラムである。また記憶装置管理情報412は、仮想化制御装置2から受信した記憶装置状態管理情報512や、管理者から受け付けた登録情報、更新情報を有する。尚、管理装置4のCPU40が記憶装置管理情報412を利用して記憶装置管理プログラム415を実行することによって、記憶装置管理部402が実現される。
データ移行管理プログラム416は、仮想化制御装置2が管理する複数のボリューム間でデータ移行を実行するためにデータ移行制御情報413を生成し、データ移行制御情報413を有するデータ移行要求を仮想化制御装置2に対して発行し、仮想化制御装置2からデータ移行処理の結果を受信して、これを管理者に通知するために実行されるプログラムである。尚、管理装置4のCPU40がデータ移行管理プログラム416を実行することによって、データ移行管理部403が実現される。
図3は、仮想化制御装置2の記録媒体52に格納されており、メモリ51に読み込まれてCPU50によって実行されるプログラムと、仮想化制御装置2の記録媒体52に格納されている管理情報の一例を示す図である。
ルーティング処理部501は,ホストコンピュータ1と記憶装置3との間で送受信されるフレームデータのルーティング処理として,以下の二通りのルーティング処理を実行する。
尚ここでいうフレームデータとは、ホストコンピュータ1から記憶装置3に対して送信されるアクセス要求情報、記憶装置3からホストコンピュータ1に対して送信されるステータス情報、及びアクセス要求情報に基づきホストコンピュータ1と記憶装置3との間で送受信されるデータ等の全ての情報を含むものとする。
まず実ルーティング処理部504は、ネットワーク5に接続された装置の結線情報であるルーティング情報514に基づき、ホストコンピュータ1と記憶装置3との間で直接送受信されるフレームデータのルーティング処理を制御する。即ち、実ルーティング処理部504は、パス制御部22にフレームデータの転送に使用するパスを指示する。パス制御部22は、実ルーティング処理部504の指示に基づいて、フレームデータを転送する。尚実ルーティング処理部504は、仮想化制御装置2のCPU50が、ルーティング情報514に基づいてメモリ51に読み込まれたルーティングプログラム516を実行することによって実現される。
次に仮想化ルーティング処理部(以下、仮想化処理部と称する。)505は、後述のボリュームマッピング情報515に基づき、ホストコンピュータ1から受信したフレームデータに対し後述の加工を施して記憶装置3に対して転送し、又、記憶装置3から受信したフレームデータに対し後述の加工を実施して、ホストコンピュータ1に転送する処理を実行する。尚、仮想化処理部505は、仮想化制御装置2のCPU50が、ボリュームマッピング情報515に基づいて、メモリ51に読み込まれた仮想化ルーティングプログラム517を実行することによって実現される。
尚、図1及び図2においては、仮想化制御装置2がメイン制御部20を1つ有し、このメイン制御部20において仮想化処理を含むルーティング処理を実施する場合を示している。しかし本発明はこれに限られるものではなく、例えば各ポート23毎にプロセッサを設け、このプロセッサがルーティング処理を実行することとしても良い。これによって、ルーティング処理をポート毎に並列に実施することができるので、仮想化制御装置2の性能を向上することができる。また、ルーティング処理部は、ハードウェアのみで構成されるものとすることもできる。
記憶装置監視部502は、仮想化制御装置2が仮想化制御の対象とする個々の記憶装置3の状態を監視し、監視結果を記憶装置状態管理情報512として保持し、記憶装置3の状態の変更を検出したことを契機に管理装置4に対して状態の変更通知し、又管理装置4から受信した記憶装置管理情報412に基づき自身が保持する記憶装置状態管理情報512を更新する処理を実行する。尚、記憶装置監視部502は、仮想化制御装置2のCPU50が、記憶装置監視プログラム518を実行することにより実現される。
データ移行処理部503は、管理装置4から受信したデータ移行要求に含まれるデータ移行制御情報413を、仮想化制御装置2のメモリ51若しくは記憶媒体52にデータ移行制御情報513として格納し、データ移行制御情報513に基づき、仮想化制御装置2が管理する複数のボリューム間でのデータ移行処理を実行する。データ移行処理部503は、仮想化制御装置2のCPU50が、データ移行処理プログラム519を実行することにより実現される。尚、データ移行処理の手順の詳細は、後述する。
図4は、仮想化制御装置2で管理されるボリュームマッピング情報515の一例を示す図である。ボリュームマッピング情報515は、仮想ボリュームと実ボリュームとのマッピングを示す制御情報である。仮想ボリューム管理情報520としては、仮想ボリュームを識別するための情報と、仮想ボリュームの状態を表す情報とが含まれる。仮想ボリュームを識別するための情報としては、ネットワークで固有の値を有するPort ID、ポート毎に固有の値を有するPort Name、装置内で固有の情報であるLUN (Logical Unit Number)等が含まれる。仮想ボリュームの状態を表す情報には、仮想ボリュームの容量を表すSize、仮想ボリュームのステータス情報等が含まれる。実ボリューム管理情報521には、仮想ボリュームに対応する実ボリュームを識別するための情報と、実ボリュームの状態を表す情報とが含まれる。実ボリュームを識別するための情報には、ネットワークで固有の値を有するPort ID、ポート毎に異なる値を有するPort Name、装置内で固有の値を有するLUN 等の情報が含まれる。また、実ボリュームの状態を表す情報には、実ボリュームの容量を表すSize、実ボリュームのステータス情報等が含まれる。
ここで仮想ボリュームを識別するための情報のであるPort ID、Port Nameは、仮想化制御装置2がホストコンピュータ1に対して仮想的に見せる記憶装置(以下、仮想記憶装置)の仮想的なポート(以下、仮想ポート)に割当てられた識別子情報である。例えば、ホストコンピュータが仮想ポートのPort IDと仮想ボリュームのLUNを指定してフレームデータを送信した場合、実際には仮想化制御装置2の仮想化処理部505がボリュームマッピング情報515に基づいて、Port IDとLUNが示す仮想ボリュームに対応する実ボリュームを有する記憶装置にフレームデータを転送するよう制御する。しかしホストコンピュータには、自身が指定したPort IDが示すポートを有する記憶装置にアクセスしているように認識される。
尚図4においては、Port ID=V#Pid#1、Port Name=V#Pname#1で識別される仮想ポートからアクセスされるLUN=0で識別される仮想ボリュームが、Port ID=P#Pid#1、Port Name=P#Pname#1で識別される実ポートからアクセスされるLUN=0で識別される実ボリュームにマッピングされている(対応付けられている)例を示している。
仮想ポートが複数の仮想ボリュームを持つことも可能である。図4においては、Port ID=V#Pid#2、Port Name=V#Pname#2で識別される仮想ポートは、LUN=0(5GB)、LUN=1(5GB)の2つの仮想ボリュームを持ち、それぞれ,Port ID=P#Pid#2、Port Name=P#Pname#2、LUN=0(5GB)及びPort ID=P#Pid#1、Port Name=P#Pname#1、LUN=1(5GB)で識別される実ボリュームにマッピングされている例を示している。
尚、ステータス情報を用いた制御例については後述する。
図5は、仮想化制御装置2で管理される記憶装置状態管理情報512の一例を示す図である。記憶装置状態管理情報512は、記憶装置監視部502によって検出された記憶装置及びこの記憶装置が管理する実ボリュームの、識別情報等を有する。具体的には、記憶装置のポートに対して割当てられるネットワークで固有のPort ID、各ポート毎に固有の値を有するPort Name、記憶装置毎に固有の値を有するNode Name、記憶装置内の各実ボリュームに割り当てられる記憶装置内で固有のLUN 等の識別情報と、実ボリュームのSize等の実ボリュームの状態情報が、記憶装置状態管理情報512に含まれる。尚図5では、記憶装置状態管理情報512として、Port ID、Port Name、Node Name、LUN 、Size情報を例示しているが、記憶装置状態管理情報512は、これに限定されるものではない。例えば実ボリュームに接続される仮想化制御装置2のポート情報を、記憶装置状態管理情報512として登録することも可能である。
図5においては、Port ID=P#Pid#1、Port Name=P#Pname#1、Node Name=P#Nname#1で識別されるポートが、LUN=0(10GB)、LUN=1(5GB)で識別される実ボリュームを、Port ID=P#Pid#2、Port Name=P#Pname#2、Node Name=P#Nname#2で識別されるポートが、LUN=0(5GB)で識別される実ボリュームを、更にPort ID=P#Pid#3、Port Name=P#Pname#3、Node Name=P#Nname#3で識別されるポートが、LUN=1(10GB)で識別される実ボリュームを持つことを示している。
ここで、実ボリュームの識別情報(LUN)や、実ボリュームを持つ各ポートの識別情報(Port ID、Port Name、Node Name)は、ボリュームマッピング情報515の実ボリューム管理情報521のエントリ、或いはルーティング情報514のエントリとして使用することができる。更に、記憶装置状態管理情報512は管理装置4から設定できるようにしておくことが望ましい。本発明においては上述のように、管理装置4のCPU40が記憶装置管理プログラム415を実行することによって、管理装置4が記憶装置状態管理情報512を設定することができる。
また、新たな記憶装置が仮想化制御装置2に接続された場合、仮想化制御装置2のCPU50は、記憶装置監視プログラム518を実行することにより、新たに接続された記憶装置からPort ID、Port Name、Node Name、LUN、Size情報等を取得し記憶装置状態管理情報512に登録すると共に、管理装置4に新たな装置の検出を通知する。尚、管理装置4においてボリューム管理プログラム414が実行され、管理装置4がボリュームマッピング情報515の仮想ボリューム管理情報520のステータス情報を設定するまでは、仮想化制御装置2は新たに接続された装置へのルーティング処理を実施しない(ルーティング情報514のエントリに登録しない)ことが望ましい。
また既に仮想化制御装置2に接続されている記憶装置との接続が遮断された場合、或いは記憶装置からの応答がないなどの障害を仮想化制御装置2が検出した場合には、仮想化制御装置2は記憶装置状態管理情報512に登録されている情報を更新すると共に、管理装置4に記憶装置の状態の変化を通知する。この際、仮想化制御装置2は、ボリュームマッピング情報515の仮想ボリューム管理情報520を参照し、ステータス情報がある条件を満たす場合にのみ(例えば、ステータス情報がActiveに設定された装置の状態が変化した場合のみ等)状態の変化を通知することが望ましい。
尚、図5においては省略しているが、一台の記憶装置が複数のポートを持つ場合もある。
図6は、ホストコンピュータ1が仮想化制御装置2において仮想化された記憶装置(仮想記憶装置)にアクセスする場合の、アクセス要求の処理の概要を示す。図6では、ホストコンピュータ1は、仮想化制御装置2において仮想化された複数の仮想ボリュームから構成される仮想ボリューム群60のうち、Port ID=V#Pid#1、Port Name=V#Pname#1で識別される仮想ポートの仮想ボリュームLUN=0(10GB)に対するアクセス要求を発行する。
ホストコンピュータ1から発行される仮想ボリュームに対するアクセス要求は、ルーティング処理部501によって、仮想記憶装置に対するアクセス要求であることが検出される。具体的には、ルーティング処理部が、アクセス要求に含まれるPort IDがボリュームマッピング情報515の仮想ボリューム管理情報に含まれることを検出することによって、仮想記憶装置に対するアクセス要求であることが分かる。すると、仮想化処理部505によってアクセス要求に含まれるPort ID、LUNが参照され、このPort ID、LUNと対応付けられてボリュームマッピング情報515に登録されている実ボリュームに対するアクセス要求にアクセス要求が変換された後、変換後のアクセス要求が記憶装置3に対して発行される。尚、アクセス要求の変換は、ホストコンピュータ1が発行したアクセス要求に含まれるPort ID、LUNを、このPort ID、LUNと対応付けられてボリュームマッピング情報515に登録されている実ボリュームのPort ID、LUNに、仮想化処理部505が変換することによって行われる。
以降ホストコンピュータ1から受信したアクセス要求に基づく、ホストコンピュータ1と記憶装置3間のデータの送受信、並びにステータス情報の送信等、一連の処理は、仮想化制御装置2を介して実行される。尚、データの送受信処理、或いはステータス情報の送信処理等において、ホストコンピュータ1と記憶装置3との間で送受信されるデータも、仮想化処理部505によってフレームデータの変換処理が実施される。但し、ここで言う変換処理とは、データそのものの変換ではなく、データに付加された情報である送信先識別子情報(D#ID)、送信元識別子情報(S#ID)、エラー検出コードであるCRC(Cyclic Redundancy Check)等の変換処理である。例えばホストコンピュータ1からD#ID=V#Pid#1が設定されたアクセス要求を仮想化制御装置2が受信した場合には、ルーティング処理部501がボリュームマッピング情報を用いてD#IDをP#Pid#1に変換し、新たにCRCを生成してフレームデータに付与して、記憶装置3に変換後のフレームデータを送信する。逆に記憶装置3からS#ID=P#Pid#1が設定されたフレームデータを仮想化制御装置2が受信した場合には、ルーティング処理部501がS#IDをV#Pid#1に変換し、フレームデータ中のCRCを新たに生成したCRCに置換えて、ホストコンピュータにフレームデータを送信する。
図7は、仮想化制御装置2がホストコンピュータに提供している仮想ボリュームに対応付けられる記憶装置3の実ボリュームを、他の異なる記憶装置の実ボリュームに変更し、仮想ボリュームと実ボリュームのマッピングを変更する際の処理の概要を示す図である。この際、今まで仮想ボリュームに対応付けられてきた旧実ボリュームから、新たにこの仮想ボリュームに対応付けられることになった新実ボリュームへ、データの移行処理が実行される。
図7は、Port ID=P#Pid#1、Port Name=P#Pname#1、LUN=0で識別される実ボリュームに格納されていたデータを、Port ID=P#Pid#3、Port Name=P#Pname#3、LUN=1で識別される実ボリュームに格納する(移行する)要求が何らかの条件を契機として発生し、管理者が管理装置4を介して仮想化制御装置2にデータ移行要求を発行した場合の処理を示している。管理装置から発行されるデータ移行要求は、データ移行元及びデータ移行先の実ボリュームを識別するための情報(Port ID、Port Name、LUN等)を含むデータ移行制御情報413を有する。
データ移行要求を受信した仮想化制御装置2では、メイン制御部20のデータ移行処理部503がデータ移行制御情報を解析し、解析結果に基づいてデータ移行処理を実行する。即ち、図7に示す例においては、データ移行処理部503の制御によって、仮想化制御装置2からPort ID=P#Pid#1、Port Name=P#Pname#1、LUN=0で識別される実ボリュームを持つ記憶装置3に対し、データ移行(copy)要求が発行される。このデータ移行要求には、データ移行先の実ボリュームを識別する情報(図7に示す例においては、Port ID=P#Pid#3、Port Name=P#Pname#3、LUN=1)が含まれる。データ移行要求を受信したP#Pid#1で識別されるポートを持つ記憶装置は、LUN=0で識別される実ボリュームに格納されているデータを、P#Pid#3、Port Name=P#Pname#3、LUN=1で識別される実ボリュームに宛てて送信する。P#Pid#3で識別されるポートを持つ記憶装置はP#Pid#1で識別されるポートを持つ記憶装置から受信したフレームデータをLUN=1で識別される実ボリュームに格納する。このように、P#Pid#1で識別されるポートを持つ記憶装置とP#Pid#3で識別されるポートを持つ記憶装置との間でデータのコピーを行うことによって、データ移行処理が実現される。
データ移行処理の完了後、データ移行処理部503はボリュームマッピング情報515にデータ移行先の実ボリュームを登録するとともに、仮想ボリューム管理情報520の仮想ボリュームのステータス情報を更新、登録する。係る情報の更新、登録がされた後のボリュームマッピング情報515の一例を図8に示す。
図8は、図7に示すデータ移行に伴い、Port ID=V#Pid#1、Port Name=V#Pname#1、LUN=0で識別される仮想ボリュームにマッピングされる(対応付けられている)実ボリュームが、Port ID=P#Pid#1、Port Name=P#Pname#1、LUN=0で識別される実ボリューム(データ移行元の実ボリューム)から、Port ID=P#Pid#3、Port Name=P#Pname#3、LUN=1で識別される実ボリューム(データ移行先の実ボリューム)に変更された場合の、変更後のボリュームマッピング情報515の一例を示す図である。
図8では、Port ID=V#Pid#1、Port Name=V#Pname#1、LUN=0で識別される仮想ボリュームにマッピングされる(対応する)実ボリュームとして、Port ID=P#Pid#1、Port Name=P#Pname#1、LUN=0で識別される実ボリューム(データ移行元の実ボリューム)と、Port ID=P#Pid#3、Port Name=P#Pname#3、LUN=1で識別される実ボリューム(データ移行先の実ボリューム)が登録されている。更に仮想ボリューム管理情報520のステータス情報は、Port ID=P#Pid#3、Port Name=P#Pname#3、LUN=1で識別される実ボリュームがActiveであり、Port ID=P#Pid#1、Port Name=P#Pname#1、LUN=0で識別される実ボリュームがInactiveであることを示している。仮想ボリュームに対するアクセス要求は、ステータス情報がactiveである実ボリュームに対して実行される。例えば図8に示すボリュームマッピング情報515に従ってルーティング処理部がアクセス要求やフレームデータを転送する場合、Port ID=V#Pid#1、Port Name=V#Pname#1、LUN=0で識別される仮想ボリュームに対するアクセス要求、或いはこのアクセス要求に基づくデータの転送処理は、仮想ボリューム管理情報520のステータス情報に基づき、Port ID=P#Pid#3、Port Name=P#Pname#3、LUN=1で認識される実ボリュームに対して実行される。
このように、ある記憶装置が有する実ボリューム内のデータが、他の記憶装置が有する実ボリュームに移行された場合、本実施形態においては仮想ボリュームと実ボリュームとの間のマッピング(対応関係)がデータ移行処理部503によって変更される。しかし、ホストコンピュータがボリュームにアクセスするために使用する識別情報は、仮想ボリュームの識別情報(仮想ポートのPort ID、Port Name、及び仮想ボリュームのLUN)であり、この識別情報はデータ移行が実行されても変化しない。例えば図7に示すデータ移行が実行される場合について考える。ホストコンピュータがPort ID=V#Pid#1、Port Name=V#Pname#1、LUN=0で識別される仮想ボリュームに対するアクセス要求を発行した場合、データ移行前は、仮想化処理部505は図4に示すボリュームマッピング情報515に基づいて、このアクセス要求をPort ID=P#Pid#1、Port Name=P#Pname#1、LUN=0で識別される実ボリュームに宛てて送信する。データ移行後は、仮想化処理部505は図8に示すボリュームマッピング情報515に基づいて、このアクセス要求をPort ID=P#Pid#3、Port Name=P#Pname#3、LUN=1で認識される実ボリュームに宛てて送信する。したがって、本実施例によれば、ホストコンピュータがアクセス対象として認識するボリュームの識別情報を変更することなく、複数の記憶装置間でのデータ移行を実行することができる。
図8に示すボリュームマッピング情報515には、実ボリュームに対して発行された未完了のコマンドを識別する情報も登録される。図8では、P#Pid#1、P#Pname#1、LUN=0で識別されるデータ移行元の実ボリュームには、未完了のコマンドとしてC#id#0、C#id#1、C#id#2が、P#Pid#3、P#Pname#3、LUN=1で識別されるデータ移行先の実ボリュームには、未完了のコマンド(データ移行処理部503がデータ移行元の実ボリュームにデータ移行要求を送信した後に、仮想化制御装置2がホストコンピュータから受信したデータ移行対象となっている仮想ボリュームへのコマンド)としてC#id#3、C#id#4が登録されている。コマンドは、仮想化制御装置2がホストコンピュータからコマンドを受信したのを契機に仮想化制御装置2によってボリュームマッピング情報に登録され、仮想化制御装置2が記憶装置からコマンドに応じた処理の終了を通知する終了ステータス等を受信した場合に削除される。但し仮想化制御装置2は、データ移行要求をデータ移行元の実ボリュームに送信したことを契機に、ホストコンピュータ1から受信したデータ移行対象の仮想ボリュームに対するコマンドを、データ移行先の実ボリュームのエントリに登録する。また仮想化制御装置2は、データ移行元の実ボリュームにデータ移行要求を送信した後に、データ移行元の記憶装置3からデータライト系コマンドの終了ステータスを受信した場合には、未完了コマンドの登録を削除せずコマンドが完了したことのみをボリュームマッピング情報515に設定する。尚、図8では省略しているが、ボリュームマッピング情報515は、未完了のコマンドを識別するための情報以外に、コマンド情報を保持することも可能である。
尚、図7及び図8では、データ移行の単位としてボリュームを用い、ボリューム単位でデータ移行を実行する例を示したが、本発明はこれに限られるものではない。ボリュームマッピング情報515が、データ移行元の記憶装置の開始/終了アドレス情報とデータ移行先の記憶装置の開始/終了アドレス情報を保持すれば、ブロックアドレス単位でデータ移行を実行することも可能である。
また図7及び図8では、データ移行処理部503が一台の記憶装置に対してデータ移行要求を発行することにより、データ移行が実行される例を示したが、これに限られるものではない。例えばデータ移行処理部503がデータ移行元の記憶装置にはリード要求を、データ移行先の記憶装置にはライト要求をそれぞれ発行することによって、データ移行を実行することも可能である。
尚、仮想ボリューム管理情報520のステータス情報は、管理装置4のボリューム管理部401によって設定・更新が可能であることが望ましい。
図9は、仮想化制御装置2のルーティング処理部501によって実行される、フレームデータの転送処理の一例を示す図である。本処理は、ホストコンピュータ1或いは記憶装置3から仮想化記憶装置2がフレームデータを受信したことを契機として開始される(100)。フレームデータを受信したルーティング処理部501は、フレームデータに含まれるフレームデータの送信元/送信先の識別情報(送信元のPort ID、送信先のPort ID等)、及び必要な場合はフレームデータに含まれるフレームデータの種別情報、及びフレームのペイロードに含まれる各種情報(送信先のLUN等)を用いて、仮想化処理が必要か否かを判別する(101)。具体的には、送信先のPort IDやLUNが、ボリュームマッピング情報515の仮想ボリューム管理情報520に登録されている場合には、そのフレームデータは仮想化処理が必要なフレームデータであると判定される。
仮想化処理が必要な場合、以下に示す仮想化処理(102)を仮想化処理部505が実行する。
1.受信したフレームデータが、ホストコンピュータから仮想記憶装置へのフレームデータである場合
仮想化処理部505は、ボリュームマッピング情報515に基づきフレームデータ中の送信先識別情報が示す仮想記憶装置に対応する記憶装置を検出する。そしてホストコンピュータから受信したフレームデータをこの記憶装置宛てのフレームデータに変換する為、フレームデータに含まれるフレームデータの送信先識別情報(D#ID)をこの記憶装置のPort IDに変換する。また受信したフレームデータ中のCRCを新たな送信先識別情報に基づくCRCに変換する。そして変換後のフレームデータは、ポート23を介して記憶装置3に向けて送信される。
2.受信したフレームデータが、仮想記憶装置にマッピングされた(対応づけられた)記憶装置からホストコンピュータに対するフレームデータである場合
仮想化処理部505は、ボリュームマッピング情報515に基づきフレームデータ送信元の記憶装置に対応する仮想記憶装置を検出する。そして記憶装置から受信したフレームデータを、この仮想記憶装置からのフレームデータに変換する為、フレームデータ内の送信元識別情報(S#ID)を仮想記憶装置のPort IDに置き換える。又、フレームデータ内のCRCを、新たな送信元識別情報に基づくCRCに置換える。そして、送信元識別情報とCRCが置き換えられたフレームデータは、ポート23を介してホストコンピュータ1に対して送信される。
図9に示す仮想化処理要否の判別において(101)、ルーティング処理部501が仮想化処理は不要と判別した場合、実ルーティング処理部504がルーティング情報514に基づいて、受信したフレームデータのルーティング処理を実行する(103)。
図10は、仮想化制御装置2のデータ移行処理部503が実行する、データ移行処理の一例を示す図である。
データ移行処理は、管理装置4から仮想化制御装置2がデータ移行要求を受信した場合に開始される(110)。データ移行要求を受信したデータ移行処理部503は、データ移行要求が有するデータ移行元及びデータ移行先の実ボリュームを示す情報に基づいて、データ移行制御情報513を生成する。尚、データ移行制御情報は、少なくともデータ移行元及びデータ移行先の実ボリュームを識別するための情報(Port ID、 LUN等)を有する。そしてデータ移行処理部503は、データ移行制御情報513に基づき、データ移行元の実ボリュームを有する記憶装置3に対して、アクセス要求(データ移行要求)を発行する(111)。
データ移行要求の発行後データ移行処理部503は、アクセス要求を発行した個々の記憶装置3から終了報告を受信するのを待つ(112)。そして、データ移行処理部503は、データ移行要求を発行した記憶装置3からの終了報告が、全て正常終了を通知する終了報告であるかを確認する(113)。尚、データ移行処理部503が異常終了を通知する終了報告を受信した場合には、データ移行処理部503が、この終了報告の発行元の記憶装置に対して、個別にアクセス要求(データ移行要求)の発行処理(111)から終了報告の確認処理(113)までの処理を再実行することが望ましい。
データ移行処理部503が、データ移行要求の発行先記憶装置3全てから正常終了を示す終了報告を受信した場合は、データ移行処理部503は仮想ボリューム管理情報520に、データ移行先の実ボリュームを登録すると共に、仮想ボリューム管理情報のステータス情報を更新し(114)、データ移行処理の終了を管理装置4に対して報告する(115)。
尚、図10に示すデータ移行処理においては、仮想化制御装置2からデータ移行要求を受信するデータ移行元の記憶装置3が以下の様な機能を有することによって、仮想ボリューム管理情報520のステータス情報が更新される時点で、移行元の実ボリュームに対するアクセス要求は全て完了していることが保証される。
データ移行元の記憶装置3は、データ移行処理中にホストコンピュータ1からライトコマンドを受信した場合、ライトコマンドに従って記憶媒体35にデータを書き込むと共に、ライトデータを一時的に保持するための記憶領域(退避ボリューム)に、書き込まれたライトデータを格納する。尚退避ボリュームは、記憶装置3が有する記憶媒体中の記憶領域である。そして、データ移行処理の一環としてデータ移行元の記憶装置3は、退避ボリュームに格納されたデータを、データ移行先の記憶装置3に送信する。従って、データ移行元の記憶装置3が仮想化制御装置2のデータ移行処理部503に終了報告を送信する際には、データ移行元の実ボリュームに対する未完了のコマンドは存在せず、かつデータ移行処理中に実行されたライト処理によって変更されたデータは、データ移行先の記憶装置にも既に送信されていることとなる。このため、データ移行処理部503が仮想ボリューム管理情報520を更新する時点で、データ移行元の実ボリュームに対するアクセス要求は全て処理済みであることが保証される。従って、実ボリューム間でデータを移行し、仮想ボリュームにマッピングされる実ボリュームをデータ移行元の実ボリュームからデータ移行先の実ボリュームに変更する際に、データの整合性を保証することができる。
以上に説明したデータ移行処理により、複数の記憶装置間におけるデータ移行処理を制御する仮想化制御装置は、個々の記憶装置の持つ機能を活用することによって、データ移行処理に要する処理負荷を軽減することができる。
尚、データの整合性を保証するための他の方法として、以下の方法を用いることもできる。仮想化制御装置2のボリュームマッピング情報515に、実ボリューム毎に受信したコマンドを登録するためのエントリを持たせる。仮想化制御装置2のルーティング処理部501は、ホストコンピュータから記憶装置3宛てのコマンドを受信する度に、このコマンドの転送先の実ボリュームに対応するエントリにコマンドの内容を登録する。また、仮想化制御装置2が記憶装置からコマンドに応じた処理の終了報告を受信した際には、ルーティング処理部501は、ボリュームマッピング情報515に登録したコマンドを削除する。この様に、仮想化制御装置2が未完了なコマンドの存在を把握できるよう、ボリュームマッピング情報515を構成した上で、仮想化制御装置2のデータ移行処理部503が記憶装置3にデータ移行要求を送信した後は、ホストコンピュータ1からデータ移行対象の仮想ボリュームに対するコマンドを受信した仮想化制御装置2のルーティング処理部501は、このコマンドを仮想化制御装置2が有する記憶媒体52に一時的に格納する。そして、仮想化制御装置2がデータ移行元の記憶装置3からデータ移行完了報告を受信した場合には、仮想化制御装置2のルーティング処理部は、記憶媒体52に格納していたコマンドを、データ移行先の実ボリュームに対して転送する。係る方法を用いることによって、仮想化制御装置2がデータ移行元の記憶装置3にデータ移行要求を送信してから、この記憶装置3から終了報告を受信するまでの時間を短縮することができる。
尚、前述の通り、データ移行処理部503が仮想ボリューム管理情報520のステータス情報を更新した後は、仮想ボリュームに対するアクセス要求或いはアクセス要求に基づくデータの転送等は、仮想ボリューム管理情報520のステータス情報に基づき、Activeな実ボリュームに対して実行される。
以上に説明したように、仮想化制御対象の記憶装置間でデータ移行を実行する場合、仮想化制御装置2がボリュームマッピング情報515を更新することによって、ホストコンピュータ1がアクセス対象として認識する仮想ボリュームの識別情報を変更することなく、仮想ボリュームにマッピングされる実ボリュームをダイナミックに変更することができる。従って、ホストコンピュータ1は、記憶装置(実ボリューム)間でデータ移行が実行されたことを意識することなく、仮想ボリュームに対するアクセス処理を継続することができる。
ところで、上述の実施形態では、仮想化制御装置2からデータ移行要求を受信した記憶装置3(データ移行元)の機能を用いてデータの整合性(仮想ボリューム管理情報520の更新時に、変更前の実ボリュームに対する全てのアクセス要求が完了していること)を保証している。しかし、本発明はこれに限定されるものではない。
以下に、データ移行処理の他のバリエーションとして、仮想化制御装置2が有する機能のみを用いて、変更前の実ボリュームに対するアクセス要求が全て完了したことを検出する方法を説明する。
この方法においては、仮想化制御装置2のボリュームマッピング情報515に、実ボリューム毎に受信したコマンドを登録するためのエントリを持たせる。仮想化制御装置2は、ホストコンピュータから仮想ボリューム若しくは実ボリューム宛てのコマンドを受信する度に、このコマンドの転送先の実ボリュームに対応するエントリにコマンドの内容を登録する。また、仮想化制御装置2が記憶装置からコマンドに応じた処理の終了ステータスを受信した際には、ボリュームマッピング情報515に登録したコマンドを削除する。尚、エントリに登録されているコマンド自体は、仮想化制御装置2が記憶媒体52内に保持する。
仮想化制御装置2は、データ移行要求を記憶装置3に送信したことを契機に、ホストコンピュータ1から受信したデータ移行対象の仮想ボリュームに対するコマンドを、データ移行先の実ボリュームに対応するエントリに登録する。更に仮想化制御装置2は、データ移行要求を送信した後に,データ移行元の記憶装置3からデータライト系コマンドの終了ステータスの報告を検出した場合は、ボリュームマッピング情報に登録されているコマンドを削除せず、コマンドに対する処理が完了したことのみをボリュームマッピング情報に登録する。
仮想化制御装置2は、データ移行元の実ボリュームに対する未完了のコマンドが無くなったことを条件として(データ移行元の実ボリュームに対応付けられてボリュームマッピング情報515に登録されているコマンド全てについて、処理済みを示す情報が登録されていることを条件として)、仮想化制御装置2が一時的に保持しているデータライト系コマンド(ボリュームマッピング情報515に完了を示す情報が登録され、未削除のコマンド)に基づき、データ移行元の実ボリュームとデータ移行先の実ボリュームとの間でのデータの更新処理を実行する。
即ち、データ移行要求送信後にライト系コマンドに基づいてデータ移行元の実ボリュームで実行されたデータの更新を、データ移行先の実ボリュームにも反映するため、仮想化制御装置2は、データ移行元の実ボリュームで更新されたデータをデータ移行先の実ボリュームに書き込むようデータ移行元及びデータ移行先の記憶装置を制御する。
更に仮想化制御装置2は、データ移行元の実ボリュームとデータ移行先の実ボリューム間でデータ更新処理が完了したのを契機に、ボリュームマッピング情報515に登録されている、データ移行要求送信後に受信した仮想ボリュームに対するコマンドを、データ移行先の実ボリュームに対して送信する。
尚、データ移行処理において、仮想化制御装置2がデータライト系コマンドの処理状態を監視することとしても良い。例えば仮想化制御装置2は、データ移行要求発行前にデータ移行元の実ボリュームに対して発行されたライト系コマンドに基づくライト処理が、データ移行処理開始後にも未だ実行されていない場合(データ移行元の記憶装置と仮想化制御装置2との間でのライトコマンドに基づくライトデータ転送が開始されていない場合)は、データ移行元に対してライト処理のアボート処理を実行する。即ち、仮想化制御装置2は、データ移行元の実ボリュームに対して発行されたライトコマンドをキャンセルする要求をこの実ボリュームに対して発行し、キャンセルされたライトコマンドと同一のライトコマンドをデータ移行処理完了後にデータ移行先の実ボリュームに対して発行する。係る処理により、オーバヘッドの少ないデータ移行処理を実現することができる。
以上の処理により、仮想ボリュームにマッピングされる実ボリュームを変更した場合にも、変更前の実ボリュームと変更後の実ボリュームとの間でデータの整合性を保証することができる。
図11は、仮想化制御装置2の記憶装置監視処理部502によって実行される記憶装置の接続状態監視処理の一例を示す図である。仮想化制御装置2の記憶装置監視処理部502は、ポート23に接続される記憶装置の接続状態を監視し、接続状態の変化を検出した際に図11に示す処理を開始する(120)。
尚、仮想化制御装置2に接続される記憶装置3は各々自己の状態を仮想化制御装置に通知するためのソフトウェアを記憶装置3が有するメモリに格納している。このソフトウェアが記憶装置のCPU30によって実行されることによって、記憶装置は仮想化制御装置の記憶装置監視処理部502に記憶装置のNode Name、Port Name、Port ID、記憶装置が有する実ボリュームのLUN、サイズ等の管理情報を送信する。従って、記憶装置監視処理部502は、記憶装置から受信する管理情報から接続状態を検出することができる。また、仮想化制御装置2は、ポート23に記憶装置が接続されている場合にはその旨を検出することができ、又ポート23から記憶装置が切り離された場合にもその旨を検出することができる。従って、記憶装置監視処理部502は、ポートと記憶装置との接続状態を自身で検出することによっても、接続状態の変化を検出することができる。
接続状態の変化を検出した記憶装置監視部502は、先ず接続状態の変化が、新たな記憶装置の追加によるものなのか、それ以外の変化、例えばポート23と記憶装置との間の接続が切断されることによるものなのかを判別する(121)。
新たな記憶装置が追加された場合には、記憶装置監視部502はこの記憶装置から記憶装置のポートの識別情報としてNode Name(装置毎に固有)情報、Port ID(ネットワークで固有)情報、Port Name(ポート毎に固有)情報を、また更に記憶装置が管理する実ボリュームの管理情報としてLUN (Logical Unit Number:装置内で固有)情報等の情報を取得する。そして記憶装置監視部502は、記憶装置ごとに固有の情報であるNode Nameや、記憶装置のポートに固有の識別子情報であるPort Nameが既に記憶装置状態管理情報512に登録済みであるか否かを判別し(122)、判別結果に基づき以下の処理を実行する。
取得したNode NameやPort Nameが既に記憶装置状態管理情報512に登録されている場合は、記憶装置監視部502が登録済みの記憶装置が接続されたことを管理装置4に対して報告し(123)、一連の記憶装置監視処理を終了する。尚、記憶装置から取得したNode NameやPort Nameに対応付けられたPort ID(ネットワークで固有)情報が既に管理装置4によって記憶装置状態管理情報512に登録されている場合には、仮想化制御装置2が記憶装置にこの登録済みのPort IDを設定することが望ましい。またPort IDが登録されていない場合は、仮想化制御装置がPort IDを記憶装置に割当ててこの記憶装置に設定し、記憶装置状態管理情報512に記憶装置に設定したPort IDを登録すると共に、管理装置4にこのPort IDを報告することが望ましい。更に、記憶装置から記憶装置監視処理部502が取得した実ボリュームの管理情報と、記憶装置状態管理情報512に登録済みの管理情報とが異なる場合は、記憶装置監視部502が記憶装置状態管理情報512を取得した管理情報を用いて更新し,管理装置4に報告することが望ましい。
記憶装置から記憶装置監視処理部502が取得したNode NameやPort Name情報が、記憶装置状態管理情報512に登録されていない場合、記憶装置監視処理部502は取得した情報を記憶装置状態管理情報512に登録し(124)、管理装置4に報告し(123)、一連の記憶装置監視処理を終了する。
ステップ121において、新たな記憶装置の追加以外(例えば,記憶装置の削除等)による接続状態の変化であると記憶装置監視部502が判断した場合には、記憶装置監視部502が、接続状態が変化した記憶装置が仮想化制御の対象であるか否かを判別し(125)、判別結果に基づき以下の処理を実行する。
仮想化制御の対象となる記憶装置である場合は、記憶装置監視部502は検出した接続状態の変化を管理装置4に対して報告し(123)、一連の記憶装置監視処理を終了する。仮想化制御の対象外の記憶装置である場合には、記憶装置監視部502は,ネットワークプロトコルの規定に基づいた処理(例えば,Fibre ChannelにおけるRSCN (Registered State Change Notification)の通知)を実施し(126)、一連の記憶装置監視処理を終了する。
以上の処理によって、仮想化制御装置2に接続される記憶装置3各々について、仮想化制御装置2が接続状態を監視し、接続状態が変化した場合には変化を管理装置に通知するよう制御することができる。また、仮想化制御装置2に接続される各記憶装置3について、記憶装置3が仮想化制御対象であるか否かに基づき、接続状態の変更通知を制御することができる。
[第二の実施形態](パーソナル情報を用いた記憶装置の識別)
第一の実施形態においては、記憶装置3のポート33を識別する情報として、Port ID、Port Nameが用いられる。しかし、本発明はこれに限られるものでは無く、記憶装置3のポート33を識別することができる情報であれば他の情報であっても良い。第一の実施形態においては、記憶装置3を識別する情報としてNode Nameが用いられたが、これも記憶装置3を識別することができる情報であれば他の情報でも良い。例えば記憶装置3を識別するための情報として、SCSI (Small Computer System Interface)で規定するVital product dataのDevice Identification page (83h)で用いられる識別子情報を用いることもできる。また、任意のボリュームを識別するための情報として、ベンダ独自の識別子情報(以下,パーソナル情報)を用いることもできる。
以下、パーソナル情報によって、記憶装置3が有する実ボリュームや、仮想化制御装置がホストコンピュータに提供する仮想ボリュームが識別される場合における、データ移行方法について、図12〜14を用いて説明する。
図12は、パーソナル情報を登録するためのエントリを有するボリュームマッピング情報515の一例を示す図である。図12は、P#Pid#1 (LUN=0/1)、P#Pid#2 (LUN=0)、P#Pid#3 (LUN=0)で識別される各実ボリューム各々がパーソナル情報を保持する例であり、仮想ボリュームも実ボリュームと同様に、パーソナル情報を保持している。
ここで仮想ボリュームにつけられたパーソナル情報は、V#Pid#2 (LUN=0)で識別される仮想ボリュームに付けられているパーソナル情報“DDD#01”のように、対応する実ボリュームのパーソナル情報“BBB#01”と一致する必要は無い。仮想ボリュームに割り当てられるパーソナル情報は、仮想化制御装置2が生成し、仮想ボリュームを識別するための情報としてボリュームマッピング情報515に登録されることとしてもよい。又、実ボリュームがパーソナル情報を持たない場合にも、仮想化制御装置2が仮想ボリュームに対するパーソナル情報を生成してボリュームマッピング情報515に登録することができる。尚、V#Pid#2 (LUN=1)で識別される仮想ボリュームに付けられているパーソナル情報“AAA#00”のように、対応する実ボリュームのパーソナル情報“AAA#00”と同じパーソナル情報を仮想ボリュームに割り当てることもできる。
更に、仮想ボリュームにつけられるパーソナル情報は、仮想ボリュームに対応付けられている実ボリュームが変更され、データ移行が実行されても、変更する必要はない。従って、例えばV#Pid#1 (LUN=0、 Active)に付けられているパーソナル情報“AAA#01”は、対応する実ボリュームのパーソナル情報“CCC#01”には一致しないが、データ移行前の実ボリュームのパーソナル情報“AAA#01”とは一致している。これは、V#Pid#1 (LUN=0、 Active)で識別される仮想ボリュームが、データ移行前は対応する実ボリュームと同じパーソナル情報を有していおり、データ移行後もパーソナル情報を変更することなくデータ移行元の実ボリュームと同一のパーソナル情報を引き継いでいるからである。
図13は、パーソナル情報を用いてボリュームを識別するホストコンピュータ1が、仮想化制御装置2を介してボリュームにアクセスする際に実行される処理の一例を示す。
尚、第二の実施形態におけるホストコンピュータ1は、第一の実施形態における構成に加え更に記憶装置識別処理部15を有する。記憶装置識別処理部15は、ホストコンピュータのメモリ11に格納されているプログラムがCPU10に実行されることによって実現され、パーソナル情報を用いてホストコンピュータがアクセスするボリューム及び記憶装置を識別する。即ち、記憶装置識別処理部15は、記憶装置にアクセスする際にまず、ホストコンピュータとネットワークを介して接続される記憶装置各々に対して、記憶装置内の実ボリュームを識別するためのパーソナル情報を送信するよう要求し、各記憶装置からパーソナル情報を受信する。そして記憶装置識別処理部15は、ホストコンピュータのメモリ11に格納されているアクセス対象の実ボリュームのパーソナル情報と、各記憶装置から受信したパーソナル情報を照合する。記憶装置識別処理部15は、アクセス対象の実ボリュームのパーソナル情報と同一のパーソナル情報を送信した記憶装置を、アクセス対象の記憶装置であると判別する。以上の記憶装置識別処理によって、アクセス対象の記憶装置が特定されると、ホストコンピュータは特定された記憶装置に対してアクセス要求を発行する。
図13では、ホストコンピュータ1がパーソナル情報“AAA#01”で識別される実ボリュームにアクセスする例を示す。
まず、ホストコンピュータ1が記憶装置3と仮想化制御装置2を介さずに接続している場合を考える。図13においては、Port ID=P#Pid#1、Port Name=P#Pname#1で識別される記憶装置3のポートから、パーソナル情報“AAA#01”を有する実ボリュームにアクセスすることができる。従って記憶装置識別処理部14は、このポートを有する記憶装置3からパーソナル情報“AAA#01”を受信することとなり、この記憶装置3をアクセス対象として特定する。すると、ホストコンピュータは、パーソナル情報“AAA#01”を受信した際受信フレームに含まれている送信元のアドレス情報(Port ID=P#Pid#1)や実ボリュームの識別情報(LUN=0)を用いて、アクセス対象の記憶装置3にアクセス要求を発行する。以降、このアクセス要求に基づくホストコンピュータから記憶装置とへのデータの送信は、Port ID=P#Pid#1、LUN=0の識別情報を有するフレームによって行われる。
次に図13に示すように、ホストコンピュータ1と記憶装置3とが仮想化制御装置2を介して接続され、且、記憶装置3が仮想化制御対象である場合を考える。仮想化制御装置2の仮想化処理部505は、記憶装置3が有する実ボリュームに仮想ボリュームを割り当て、(ボリュームマッピング情報515に実ボリュームと対応付けて仮想ボリュームの識別情報を登録し)、実ボリュームのパーソナル情報“AAA#01”と同一のパーソナル情報を仮想ボリュームのパーソナル情報としてボリュームマッピング情報515に設定する。
仮想化処理部505が係る処理を実行することによって、ホストコンピュータ1の記憶装置識別処理部15が、ネットワークを介して接続する装置に対してパーソナル情報を送信するよう要求すると、仮想化制御装置2がパーソナル情報“AAA#01”をホストコンピュータ1に送信することになる。従って、ホストコンピュータの記憶装置識別処理部15は、仮想化制御装置2からパーソナル情報“AAA#01”を受信した際、受信フレームに含まれている送信元のアドレス情報(Port ID=V#Pid#1)及び仮想ボリュームの識別情報(LUN=0)で識別される仮想記憶装置の仮想ボリュームをアクセス対象のボリュームと判別する。そして、ホストコンピュータは、Port ID=V#Pid#1、LUN=0の識別情報を有するフレームを送信することによって、アクセス対象の仮想ボリュームへアクセス要求やデータを送信する。Port ID=V#Pid#1、LUN=0の識別情報を有するフレームは、仮想化制御装置2の仮想化ルーティング処理部505によって、Port ID=P#Pid#1、LUN=0で識別される実ボリューム宛のフレームに変換された後、Port ID=P#Pid#1で識別されるポートを有する記憶装置3に向けて送信される。尚、ホストコンピュータがアクセス対象の記憶装置を検出(判別)した後の処理については、第一の実施形態と同一であるので詳細な説明は省略する。
以上に示したように、ホストコンピュータ1の記憶装置識別処理部15は、記憶装置3が仮想化制御装置2の仮想化制御対象下に置かれた場合でも、Port ID=V#Pid#1、Port Name=V#Pname#1で識別される仮想ポートが持つ仮想ボリュームに設定されたパーソナル情報“AAA#01”を用いて、アクセス対象の記憶装置やボリュームを検出することができる。
尚、図13において、ホストコンピュータ1と記憶装置3との間にルーティング処理のみを行うスィッチ(仮想化ルーティング処理部505を備えていないスイッチ)が介在しても上述の処理と同様の処理によって、ホストコンピュータは仮想ボリュームをアクセス対象のボリュームであると認識することができ、仮想化制御装置2はホストコンピュータからのフレームデータを仮想ボリュームに対応付けられている実ボリュームに転送することができる。
また、図13においては、実ボリュームに対応するPort ID (P#Pid#1)と仮想ボリュームに対応するPort ID (V#Pid#1)とは異なる値を有する。しかし本発明はこれに限定されるものではなく、仮想ポートのPort IDは仮想化制御装置2が割り当てることができる情報であるから、例えば仮想ボリュームに対応するPort IDをこの仮想ボリュームに対応する実ボリュームにアクセスするために用いられる実ポートのPort IDと同じ値(即ちPort ID=P#Pid#1)となるよう設定することもできる。
図14は、仮想化制御対象である記憶装置間でデータ移行が実施される時の、パーソナル情報の制御例を示す図である。
図14は、Port ID=P#Pid#1、パーソナル情報“AAA#01”で識別される実ボリュームに格納されているデータを、Port ID=P#Pid#3、パーソナル情報“CCC#01”で識別される実ボリュームに移行する場合を示している。図14においては、仮想ボリュームのパーソナル情報として、この仮想ボリュームに対応づけられている実ボリュームのパーソナル情報と同一の情報(AAA#01)を用いている。そして、データ移行が実行された場合には、仮想化制御装置2の仮想化処理部505はデータ移行によって仮想ボリュームに対応づけられている実ボリュームが変更されても仮想ボリュームのパーソナル情報は変更することなく、仮想ボリュームのパーソナル情報としてデータ移行元の実ボリュームのパーソナル情報“AAA#01”を引き継ぐ。
以上の処理、即ちデータ移行処理前に仮想ボリュームに設定したパーソナル情報をデータ移行処理後も引き継ぐことによって,ホストコンピュータ1がパーソナル情報を用いてボリュームを識別する場合でも、記憶装置間でのデータ移行処理をホストコンピュータに対して隠蔽することができ、ホストコンピュータは、データ移行前にホストコンピュータが使用していたアクセス先ボリュームの識別情報を用いてデータ移行後のアクセス先ボリュームを識別することができる。この結果、ホストコンピュータは記憶装置間でデータ移行処理が実行されても、ホストコンピュータで実行されている処理を中断することなく、処理を継続することができる。尚、仮想ボリュームに設定したパーソナル情報の引継ぎ処理以外については、第一の実施形態と同一であるので説明は省略する。
更に、仮想ボリュームに設定したパーソナル情報を、複数の仮想化制御装置間で引き継ぐことができるようにすれば、ホストコンピュータ1がパーソナル情報を用いてボリュームの識別を行う場合、仮想化制御装置の交換をホストコンピュータに対して隠蔽することができる。この結果、ホストコンピュータは自身が実行する処理を中断することなく継続することが可能となる。仮想ボリュームのパーソナル情報は、ボリュームマッピング情報515の一部として仮想化制御装置2のルーティング処理部501が管理装置4のボリューム管理部401に通知し、管理装置4にボリュームマッピング管理情報411として保存されている。従って、仮想化制御装置が交換される場合には、管理装置4のボリューム管理部401が新たな仮想化制御装置2に対して、旧仮想化制御装置2のボリュームマッピング管理情報411を通知し、これを新たな仮想化制御装置2のボリュームマッピング情報515に設定すれば、複数の仮想化制御装置間でパーソナル情報を引き継ぐことができる。
尚仮想化制御装置を交換する場合には、仮想化制御装置が管理する仮想ポートの識別子情報も交換後の仮想化制御装置に引継げるように構成することが望ましい。また、仮想化制御装置2が、仮想ボリュームに設定されたパーソナル情報をデータ移行処理後も変更せず、従前のパーソナル情報を引継ぐか否か(データ移行元のパーソナル情報を用いる)、或いは新たなパーソナル情報を設定するか否か等について、管理者が管理装置4を介して仮想化制御装置2に設定できるよう構成することが望ましい。
尚第二の実施形態では、記憶装置3や仮想化制御装置2がボリューム毎にパーソナル情報を保持する(即ち、ボリュームごとにパーソナル情報が割り当てられる)ものとしているが、これに限定されるものではない。例えば記憶装置3や仮想化制御装置2がパーソナル情報を記憶装置単位で保持することも可能である。更に第二の実施形態では、Port ID、Port Nameと、パーソナル情報とからポートを識別するものとしているが、これに限られるものではない。ポートを一意に識別できる方法であればどのような情報を用いても良く、更に各識別情報のうち任意の情報の組合せでポートを識別するものとしても良い。
図17に、ホストコンピュータと記憶装置が各々複数のポートを有する場合の計算機システムの構成を示す。図17に示すホストコンピュータ1は、図13に示すホストコンピュータ1に、更に複数のポート13(Hid#1、Hid#2)を備えた構成を有している。また、図17に示す記憶装置3は、図13に示す記憶装置3に更に複数のポート33(P#Pid1、P#Pid2)を備えた構成を有している。
記憶装置が複数のポートを有するので、ホストコンピュータ1の記憶装置識別処理部15が記憶装置3にパーソナル情報を送信するよう要求すると、複数のポートから同じ値のパーソナル情報が送信されることとなる。そこで記憶装置識別情報処理部15は同じパーソナル情報を送信した複数のポートをボリューム管理情報としてメモリ11に格納して管理する。
図18は、ホストコンピュータ1のメモリ11に格納されるボリューム管理情報の一例を示す図である。ボリューム管理情報はホストコンピュータが各記憶装置からパーソナル情報を受信した際に記憶装置識別処理部15によって作成される。ボリューム管理情報は、記憶装置毎に作成され、記憶装置が有する実ボリュームのボリューム番号、実ボリュームのパーソナル情報、ホストコンピュータ1から実ボリュームをアクセスする際に使用されるパス、及び実ボリュームのステータス情報が登録される。ここで、パス情報としては、プライマリパスとセカンダリパスの2つの情報が登録される。ホストコンピュータは通常はプライマリパスを用いて実ボリュームにアクセスするが、プライマリパスに障害が生じたり、プライマリパスが切断された場合には、ホストコンピュータはパスを切り替え、セカンダリパスを用いて実ボリュームにアクセスすることができる。
図17を用いて、ホストコンピュータと記憶装置とが仮想化制御装置を介さずに接続している計算機システムにおいて、ホストコンピュータが実行している処理を中断することなくホストコンピュータと記憶装置の間に仮想化制御装置を接続し、記憶装置の実ボリュームを仮想化制御装置が仮想化してホストコンピュータに提供するよう計算機システムを変更するために実行される処理を説明する。
まず、ホストコンピュータ1のポートHid#1と記憶装置3のポートP#Pid#1とがパス5-aで接続されており、ホストコンピュータのポートHid#2と記憶装置1のポートP#Pid#2がパス5-bで接続されている場合を考える。ホストコンピュータ1のメモリ11には図18に示すボリューム管理情報が記憶されており、このボリューム管理情報に従って、ホストコンピュータはパーソナル情報AAA#01で識別される実ボリュームをアクセスする場合にはポートHid#1とポートP#Pid#1を経由するプライマリパス5-aを使用し、パーソナル情報AAA#02で識別される実ボリュームをアクセスする場合にはポートHid#2とポートP#Pid#2を経由するプライマリパス5-bを使用する。
次に上述の様な計算機システムにおいて、パス5-bを切断して、仮想化制御装置2を導入する場合に実行される処理を説明する。
1.パス5-bは切断されるので、ホストコンピュータはAAA#02で識別される実ボリュームをアクセスするために用いるパスをパス5-bからパス5-aに変更する必要がある。そこで記憶装置識別処理部15は、一時的にAAA#02で識別される実ボリュームへのアクセスを中止するため、ボリューム管理情報中のこの実ボリュームのステータス情報にInactiveを登録する。そして、ホストコンピュータのCPU10の制御により、ボリューム管理情報にセカンダリパスとして登録されているパス5-aを用いてAAA#02で識別される実ボリュームにアクセスするようパスを変更する。パスの変更後、記憶装置識別処理部15はボリューム管理情報中のAAA#02で識別される実ボリュームのステータス情報をactiveに戻す。尚、以上の処理は、ホストコンピュータが、キーボード等の入力装置を介してホストコンピュータのユーザからの指示を受け付け、この指示に基づいてCPU10が実行する。また、記憶装置識別処理部15が自動的に係る処理を実行することとしても良い。即ち、記憶装置処理部15が、ボリューム管理情報を参照して、自動的にプライマリパスからセカンダリパスへの変更を実行しても良い。
2.次に、パス5-bを切断し、ホストコンピュータ1と記憶装置3との間に仮想化制御装置2を接続する。具体的にはホストコンピュータのポートHid#2と仮想化制御装置2のポート23をパス5-cで接続し、記憶装置3のポートP#Pid#2と仮想化制御装置2のポート23をパス5-dで接続する。
3.仮想化制御装置2が計算機システムに接続されたら、仮想化制御装置のボュームマッピング情報515を設定する。具体的には、仮想化制御装置2の仮想化処理部505が、記憶装置3が有するAAA#02で識別される実ボリュームに対応する仮想ボリュームを設定するため、この実ボリュームに対応付けて仮想Port ID(Port ID=V#Pid#1)、仮想Port Name(Pname=V#Pname#1)をボリュームマッピング情報515に登録する。また、この仮想ボリュームには、対応する実ボリュームのパーソナル情報AAA#02と同一のパーソナル情報が仮想化処理部505によって割り当てられ、ボリュームマッピング情報515に登録される。尚、ボリュームマッピング情報の設定は、管理装置4がユーザから受け付けた入力情報に従って行われる。即ち、管理情報4がユーザから受け付けた情報は、ボリューム管理部401の制御により仮想化制御装置2の仮想化処理部505に送信され、この入力情報に基づいて仮想化処理部505がボリュームマッピング情報を設定する。
4.ボリュームマッピング情報515が設定された後、ホストコンピュータ1はユーザからの指示を受け付けて、自装置が接続する他の装置に対してパーソナル情報を送信するよう要求する。すると、この要求を受信した仮想化制御装置2は、パーソナル情報AAA#02をホストコンピュータに送信する。
5.パーソナル情報AAA#02を仮想化制御装置2から受信したホストコンピュータ1は、受信フレームに含まれている送信元アドレス(Port ID=V#Pid#1等)から、新しい装置からパーソナル情報を受信したことを検出する。すると、記憶装置識別処理部15は、再度AAA#02で識別される実ボリュームのステータス情報をInactiveに変更する。そして、記憶装置識別処理部15は、ボリューム管理情報に登録されているAAA#02で識別される実ボリュームにアクセスするためのプライマリパスを、受信フレームに含まれる送信元アドレスに基づいて、ポートHid#2及びポートP#Pid#2経由のパスから、ポートHid#2及びポートV#Pid#1(仮想ポート)経由のパスに変更する。そして、ホストコンピュータのCPU10の制御により、プライマリパスを用いてAAA#02で識別される実ボリュームにアクセスするよう、アクセス用パスを変更する。パスの変更後、記憶装置識別処理部15は、AAA#02で識別される実ボリュームのステータス情報をActiveに戻す。
上記ボリューム管理情報の一例として,ボリューム毎のステータス情報を保持する場合を例に説明したがこれに限定されるものではない。例えば,プライマリパス・セカンダリパス等のアクセスパス毎に,実ボリュームへのアクセス可否を示すステータス情報を保持し,ホストコンピュータの記憶装置識別処理部がどのアクセスパスを用いて実ボリュームへのアクセスを行うかの制御を実行することも可能である。尚,上記実ボリュームへのアクセス可否を示すステータス情報は,ホストコンピュータが前述の管理装置における記憶装置管理部と同等の機能を持つことによって実現可能である。
以上の処理が実行されることによって、ホストコンピュータ1は仮想化制御装置2が接続された後も、記憶装置3の実ボリュームを、仮想化制御装置2が接続される前と同じパーソナル情報(AAA#02)を用いて識別することができる。従って、新たに仮想化制御装置2が計算機システムに導入され、ホストコンピュータが仮想ボリュームに対しアクセス要求を発行する場合にも、パーソナル情報をホストコンピュータに設定しなおす必要がない。このため、ホストコンピュータが実行している処理を中断する必要がない。
[第三の実施形態](複数の記憶装置から一つの仮想ボリュームを構成)
第一の実施形態及び第二の実施形態では、一つの実ボリュームから一つの仮想ボリュームを構成する例を説明したが、本発明はこれに限られるものでは無く、複数の実ボリュームから一つの仮想ボリュームが構成される場合にも適用することができる。
複数の実ボリュームから一つの仮想ボリュームが構成される場合について、図15、図16を用いて説明する。
図15は、Port ID=P#Pid#1、Port Name=P#Pname#1、LUN=3(5GB)で識別される実ボリュームと、Port ID=P#Pid#2、Port Name=P#Pname#2、LUN=1(5GB)で識別される実ボリュームから、Port ID=V#Pid#3、Port Name=V#Pname#3、LUN=0(10GB)で識別される一つの仮想ボリュームを構成する場合の、ボリュームマッピング情報515の一構成例を示す図である。図15に示すボリューム管理テーブルは、図12に示すボリューム管理テーブルと比べて、一つの仮想ボリュームに対して二つの実ボリュームが割当てられていること、仮想ボリューム管理情報520のエントリとして実ボリュームに対応するアドレス情報が追加されていることが異なるのみで、他は同一である。また図15においては、Port ID=V#Pid#3、Port Name=V#Pname#3、LUN=0で識別される仮想ボリュームのパーソナル情報としてPort ID=P#Pid#1、Port Name=P#Pname#1、LUN=3で識別される実ボリュームのパーソナル情報を用いている。
図16は、二つの実ボリュームから一つの仮想ボリュームが構成される計算機システムの一例を示す図である。図16に示す計算機システムにおいても、仮想化制御装置2において実行される、データ移行処理、並びに記憶装置監視処理については、実施形態1及び実施形態2に記載した処理と同一の処理によって実行できるので、以下ルーティング処理について説明する。
(ルーティング処理)
ルーティング処理は、仮想化制御装置2がホストコンピュータ1或いは記憶装置3からのフレームデータを受信した場合に開始される。フレームデータを受信したルーティング処理部501は、フレームデータを構成する送信元/送信先の識別情報、更に必要な場合はフレームデータの種別情報及びフレーム中のペイロードを構成する各種情報(LUN等)を用いて、仮想化処理が必要か否かの判別を行う。具体的には、送信元/送信先の識別情報(Port ID等)やフレームのペイロードに含まれる情報(LUN)がボリュームマッピング情報515の仮想ボリューム管理情報520に登録されている場合には、ルーティング処理部501は仮想化処理が必要であると判断する。
ルーティング処理部501が仮想化処理が必要であると判別した場合、以下の仮想化処理を仮想化処理部505が実行する。
1.受信したフレームデータが、ホストコンピュータから仮想記憶装置に対するフレームデータである場合
先ず受信したフレームデータがリード/ライト系のアクセス要求情報か否かを仮想化処理部505が判断する。フレームデータがリード/ライト系のアクセス要求情報である場合、ボリュームマッピング情報515と、アクセス要求情報(特に受信フレームのペイロード)に含まれるアドレス情報及びデータ転送長情報に基づき、仮想化処理部505は、フレームデータ送信先の仮想記憶装置に対応する記憶装置を特定する。そして受信したフレームを特定された記憶装置に対するフレームに変換する為、フレームデータを構成する送信先識別情報(D#ID)と、CRC情報を、特定された記憶装置のポートを示す送信先識別情報と、新しい送信先識別情報に基づくCRCとに置き換える。更に必要な場合、アクセス要求情報を構成する新たなアドレス情報及びデータ転送長情報を生成する。そして変換後のフレームは、仮想化制御装置のポート23を介して記憶装置3に送信される。尚、アクセス要求が二台の記憶装置に対して送信されるもの(アドレス989680hを跨いでのアクセス要求)である場合には、仮想化処理部505が、個々の記憶装置に対するアクセス要求を生成し個々の記憶装置にこのアクセス要求を送信する。
仮想化制御装置2が受信したフレームデータが、リード/ライト系のアクセス要求情報以外のデータである(ライトデータである)場合、ボリュームマッピング情報515と、必要な場合にはライトデータ受信前に仮想化制御装置が受信したライトアクセス要求情報を構成するアドレス情報及びデータ転送長情報と、ライトデータのオフセット情報とに基づき、仮想化処理部505がフレームデータ送信先の仮想記憶装置に対応する記憶装置を検出する。そして受信したフレームを、検出された記憶装置に対するフレームに変換する為、仮想化処理505は、フレームデータを構成する送信先識別情報(D#ID)とCRCを、検出された記憶装置を特定するための識別情報とこの識別情報に基づく新たなCRCとに置き換える。そして仮想化制御装置2は、ポート23を介して検出された記憶装置3に対してフレームを送信する。
2.受信したフレームが、仮想記憶装置にマッピングされた記憶装置からホストコンピュータに対するフレームである場合
先ず受信したフレームデータがリードデータか否かを判別し、フレームデータの種類に応じた処理を仮想化処理部505が実行する。例えばフレームデータがリードデータである場合、仮想化処理部505は、フレームデータ送信元の記憶装置に対応する仮想記憶装置を特定する。そして、受信したフレームを特定された仮想記憶装置からのフレームに変換する為、仮想化処理部505は、フレームデータの送信元識別情報(S#ID)とCRCを、仮想記憶装置の識別情報と、新たな送信先識別情報に基づくCRCに置き換える。そして、仮想化制御装置2はポート23を介してフレームデータをホストコンピュータ1に送信する。
一つのリード系アクセス要求に基づくリードデータの送信処理が、二台の記憶装置で同時に実行される場合には、仮想化制御装置2は、一方の記憶装置から受信するリードデータをホストコンピュータに転送する処理が完了するまで、他方の記憶装置から受信したリードデータの転送処理を保留させることが望ましい。例えば、P#Pid#1,P#Pname#1,LUN=3(5GB)で識別される実ボリュームを持つ記憶装置と、P#Pid#2,P#Pname#2,LUN=1(5GB)で識別される実ボリュームを持つ記憶装置からリードデータを受信した場合には、仮想化制御装置2がP#Pid#2,P#Pname#2,LUN=1(5GB)で識別される実ボリュームを持つ記憶装置からのリードデータを一時的に保存することで、リードデータの転送処理を保留できる。
また,一つのリード系アクセス要求に基づくレスポンスデータの送信処理が、二台の記憶装置で並列に実行される場合には、仮想化制御装置2は、二台の記憶装置から受信したレスポンスデータを用いてホストコンピュータに対する一つのレスポンスデータを生成し送信するものである。
尚、上述のような、複数の実ボリュームから一つの仮想ボリュームが構成される計算機システムにおいても、第一の実施形態及び第二の実施形態と同様、ホストコンピュータがアクセス対象として認識するボリュームの識別情報を変更することなく、仮想化制御対象の記憶装置間でデータ移行処理を実行することができる。即ち、記憶装置間でデータ移行処理が実行された場合には、第一の実施形態若しくは第二の実施形態と同様、仮想化制御装置2がボリュームマッピング情報515を更新し、仮想ボリュームに対応付けられている実ボリュームをデータ移行元の実ボリュームからデータ移行先の実ボリュームに変更することによって、ホストコンピュータ1がアクセス対象として認識するボリュームの識別情報を変更することなく、仮想ボリュームにマッピングされる実ボリュームをダイナミックに変更することができる。従ってホストコンピュータ1は、記憶装置(実ボリューム)間で実行されるデータ移行を意識することなく処理を継続することができる。
[第四の実施形態](Intelligent Portでの仮想化制御、Storage機能提供)
上述の各実施形態では、スイッチとしての機能を提供する仮想化制御装置2のメイン制御部20において,本発明に係る各処理を一括して実施する例を説明したが、本発明はこれに限られるものではなく、ポート23毎にプロセッサを設け、このプロセッサがルーティング処理を実施することが可能である。
更に仮想化制御装置2は、ポート23とパス制御部22とメイン制御部20とからのみ構成されるものに限られるものではない。例えばディスクアレイ装置が有するディスクアレイ制御装置のように、複数の物理的なディスク装置を例えば一つの論理的な記憶装置としてホストコンピュータに見せる制御や、ホストコンピュータがアクセスするデータに対して冗長データとしてパリティデータを付加してディスクに格納し、任意の一台のディスク装置に障害が発生してもパリティデータを用いてホストコンピュータとの間のデータ転送処理を可能とする一連のパリティ制御等を実行するストレージ制御部を仮想化制御装置2が有し、仮想化制御装置2がストレージ制御機能を一機能として有していても良い。更には、ストレージ制御部と、ディスク装置等の複数の記憶装置から構成される記憶装置群とを仮想化制御装置2が有することによって、仮想化制御装置2がストレージ装置自体の機能(ストレージ機能)を一機能として有していても良い。
以下、ストレージ制御部と記憶装置群とを有し、ストレージ機能も提供する仮想化制御装置が、各処理を夫々の構成部位で分担して処理する場合について、図19〜図22を用いて説明する。
図19は、本発明が適用される計算機システムの一例を示す図である。尚、同図において,仮想化制御装置2以外は図1と同様の構成を有する。
仮想化制御装置2においては、一つ以上のポート部8と、一つ以上のストレージ制御部7−1/2と、メイン制御部20とが、バックプレーン9を介して接続され,更にストレージ制御部7−1は、複数のディスク装置35と接続される。
ポート部8は、ホストコンピュータ1或いは記憶装置3と接続されるネットワーク5を制御するインタフェース制御部81(図中,SN I/F)と、仮想化制御装置2内の他の部位とを接続するバックプレーン9を制御するインタフェース制御部82(図中,BP I/F)と、後述するプログラムや情報を格納するメモリ85と、これらの情報を用いてプログラムを実行するCPU84とを有する。
ストレージ制御部7−1は、バックプレーン9を制御するインタフェース制御部73(以下、BP I/Fと呼ぶ。)と,複数のディスク装置35との間でのデータ転送処理を行うインタフェース制御部72(以下、HDD I/Fと呼ぶ)と、ディスク装置35或いは記憶装置3との間で転送されるデータを格納するキャッシュ71と、各処理及び後述のプログラムを実行するCPU70とを有する。
ストレージ制御部7−2は、ディスク装置35との間でのデータ転送処理を行うインタフェース制御部72を有さないことを除いて,上記ストレージ制御部7−1と同様の構成を有する。
メイン制御部20は、管理用ポート25を含み、バックプレーン9を制御するインタフェース制御部53を有すること以外は、図1のメイン制御部20と同様の構成を有する。尚、CPU50で実行されるプログラムについては後述する。
図19では、ホストコンピュータ1、記憶装置3、管理装置4,仮想化制御装置2のポート部8は、それぞれ1つのポートを持つ例を示したが、これに限定されるものではなく、複数のポートを持つことも可能である。
同様に仮想化制御装置2を構成する各部位は,バックプレーン9を制御するインタフェース制御部82(図中,BP I/F)を複数持つことが可能であり、各構成部位は複数のバックプレーンを介して相互に接続されることが望ましい。
更に,仮想化制御装置2のポート部8は、異なる複数のネットワークプロトコルに対応可能であることから、ポート部8を管理用ポートとして使用することも可能である。
図20は、仮想化制御装置2が有する何れかの部位のCPUによって実行されるプログラムと、管理情報の一例を示す図であり、仮想化処理部505が仮想化ルーティング制御情報530を新たに有すること、仮想化ルーティング処理プログラム517がコマンドフレームの転送処理を実行するプログラム(図中,コマンド転送処理プログラム)531、レスポンスフレームの転送処理を実行するプログラム(図中,レスポンス転送処理プログラム)532、及び上記以外のフレームデータの転送処理を実行するプログラム(その他の転送処理プログラム)533とを有すること、更に装置内記憶装置アクセス処理部506を仮想化制御装置2が新たに有し、装置内記憶装置アクセス処理部506として、仮想化制御装置2が有する記憶装置35の構成情報を保持する装置内記憶装置構成管理情報508と実際にフレームデータの転送処理を実行するための装置内記憶装置アクセス制御処理プログラム507とを有すること以外は、プログラム及び管理情報は図3と同様である。
尚、装置内記憶装置アクセス処理部506では,複数の物理的なディスク装置を例えば一つの論理的な記憶装置としてホストコンピュータに見せる制御、更にホストコンピュータがアクセスするデータに冗長データとしてパリティデータを付加してディスク装置に格納し、任意の一台のディスク装置に障害が発生してもパリティデータを用いてホストコンピュータとの間でのデータ転送処理を可能とする一連のパリティ制御等を実行することが望ましい。但し本発明とは直接関係が無いことからその詳細な説明は省略する。
尚、仮想化ルーティング制御情報530、コマンド転送処理プログラム531、レスポンス転送処理プログラム532、その他の転送処理プログラム533の詳細については後述する。
更に図3及び図20においては、仮想化制御装置2の初期化処理に係るプログラム等の記載を省略しているが、少なくとも電源投入を条件に各種管理情報の初期化処理を実行する初期化処理プログラム、或いは管理装置4等からの指示を契機に初期化処理あるいは診断処理等を実行するプログラム群を、仮想化制御装置が有していても良い。
図21は、本実施形態におけるホストコンピュータと記憶装置との間のアクセス経路の主な三つのバリエーションを示す図である。
尚、図21において仮想化制御装置2を構成する記憶装置群34を内部記憶装置、仮想化制御装置2とネットワーク5を介して接続される記憶装置3を外部記憶装置と呼ぶこととし、更にホストコンピュータ1と接続されるポート部8をIn Port、外部ストレージ3と接続されるポート部8をOut Portと呼ぶこととする。
第一のアクセス経路のタイプは、ホストコンピュータ1と内部記憶装置34がポート部8(In Port)とストレージ制御部7−1とを介して接続される経路である。
第二のアクセス経路のタイプは、ホストコンピュータ1と外部記憶装置3がポート部8(In Port)とストレージ制御部7−2とポート部8(Out Port)とを介して接続される経路である。
第三のアクセス経路のタイプは、ホストコンピュータ1と外部記憶装置3がポート部8(In Port)とポート部8(Out Port)とを介して接続される経路である。
図22は、本実施形態で用いられるボリュームマッピング情報515の一例を示す図である。前述の図4の構成に対し、後述の仮想化処理を実行する部位の識別子情報を管理する仮想化処理モジュール管理情報523と、実ボリュームが外部記憶装置3内に存在する場合に当該外部記憶装置3と接続するためのポートの識別子を管理する外部ボリューム接続モジュール管理情報254を新たに有する構成としている。尚、図22中Storage Control part #1は図19におけるストレージ制御部7-1の識別情報であり、Storage Control Part #2は図19におけるストレージ制御部7-2の識別情報である。
同22においては、ボリュームの状態を示すSizeやステータスの情報は省略しているが、これらの情報も管理することが望ましく、更に内部記憶装置34に関する実ボリューム管理情報は装置内記憶装置構成管理情報507にその詳細が登録されているものとして,ここでの説明は省略するものとする。
尚本実施形態においては、ボリュームマッピング情報515を構成する各情報を仮想化制御装置2を構成する全ての部位各々で保持管理する必要は無く、各部位毎に当該部位が実行する処理において必要となる情報のみを保持管理することが望ましい。
図23は、仮想化制御装置2を構成する部位毎に管理される仮想化ルーティング制御情報530の一例を示す図である。仮想化ルーティング制御情報530は、仮想化制御装置2を構成する各部位が後述のフレームデータの転送処理を実行する際に、生成、参照、又は更新される情報であり、送信元管理情報534として送信元の識別情報と送信元指定のコマンド識別情報、送信先管理情報535として送信先識別情報と自身が指定したコマンド識別情報とを有する。
尚コマンド識別情報とは、送信元と送信先との間で送受信されるフレームデータがどのコマンドに関連するものかを識別する為、個々のフレームデータに付加される情報である。またフレームデータの構成についての詳細な説明は省略しているが、少なくともフレームデータの送信元/送信先を識別する情報(送信元/送信先識別情報)と、フレームデータの種別を示す種別情報と、コマンド識別情報とを有するヘッダ情報と、アクセス要求情報或いはステータス情報或いはデータ等を有するペイロード情報とを、フレームデータは有するものとする。
尚図23においては、ホストコンピュータ1と接続されるポート部8(In Port)が保持管理する仮想化ルーティング制御情報530の一例として、Host#Pid#1で識別されるホストコンピュータからポート部8がHost#Tag#1、Host#Tag#2、及びHost#Tag#3で識別される3つのコマンドを受信し、夫々について自身が指定したコマンド識別子情報InPort#Tag#1、InPort#Tag#2、InPort#Tag#3を付加し、これら各々を夫夫ストレージ制御部7−1(図23ではSC#1と記載。)、ストレージ制御部7−2(図23ではSC#2と記載。)、ポート部8(図23ではOut Portと記載)に転送した状態であることを示している。
図24は、仮想化制御装置2を構成する任意の構成部位によって実行されるフレームデータの転送処理の一例を示す図である。従って本処理は、ポート部8、ストレージ制御部7-1、ストレージ制御部7-2のいずれにおいても実行され得る。尚本処理は、ホストコンピュータ1或いは内部記憶装置34或いは外部記憶装置3からのフレームデータの受信、又は、仮想化制御装置2を構成する各部位間においてのフレームデータの受信を契機として開始される。以下、図24を用いて本実施形態におけるフレームデータの転送処理の一例を説明する。
フレームデータを受信した仮想化制御装置2の部位は先ず、後述の仮想化処理が必要か否かの判別を実施する(130)。以下に、仮想化処理が必要なフレームデータであると判定される具体的な条件の一例を示す。
(1)フレームデータに含まれる送信先識別情報が、ボリュームマッピング情報515の仮想ボリューム管理情報520に登録されている。
(2)フレームデータに含まれる送信元識別情報が、ボリュームマッピング情報515の実ボリューム管理情報521に登録されている。
(3)フレームデータに含まれるコマンド識別情報が、仮想化ルーティング制御情報530の送信元管理情報534或いは送信先管理情報535に登録されている。
尚、上記仮想化処理要否の判定条件は一例でありこれに限定されるものではない。また、仮想化処理が不要と判別した場合の実ルーティング処理(131)については図9に示す処理と同様であることから説明を省略する。
次に、仮想化処理が必要と判別された場合には、当該部位は受信したフレームデータに含まれるフレームデータの種別情報を用いてフレームデータの種別を検出する。
[コマンドフレームの場合]
受信したフレームデータがコマンドフレームであることを検出した場合(132)、コマンド転送処理プログラム531が以下のコマンドフレームの転送処理を実行する。
1.コマンド変換処理要否の判定(133)
受信したフレームデータに含まれるフレームデータの送信先識別情報、及び必要な場合は受信したフレームデータのペイロードに含まれる各種情報(送信先のLUN等)とボリュームマッピング情報515とを用いて、コマンド転送処理プログラム531は後述のコマンド変換処理を自身で実施するか否かを判別する。判別方法の一例としては、例えば送信先のPort IDやLUNが、ボリュームマッピング情報515の仮想ボリューム管理情報520に登録され、且つ仮想化処理モジュール管理情報523に自身の識別情報が登録されている場合には、そのコマンドは自身でのコマンド変換処理が必要なフレームデータであると判定される。
2.コマンド変換処理(134)
自身でのコマンド変換処理が必要と判別された場合、コマンド転送処理プログラム531は、ボリュームマッピング情報515の仮想ボリューム管理情報520と実ボリューム管理情報521とを用いて、受信したコマンドフレームに含まれる送信先識別情報を実ボリュームに対応した識別情報に、送信元識別情報を自身の識別情報に、LUN等のアクセス要求(コマンド)情報を実ボリュームに対応したLUN等のアクセス要求情報に置き換える処理をコマンド変換処理として実施する。
尚、ステップ133において自身でコマンド変換処理を実行する必要がないと判別された場合には、コマンド変換処理(134)は実行されることなく、ステップ135に進む。
3.コマンドフレーム転送先検出(135)
自身でのコマンド変換処理が不要と判別された場合、或いは上記コマンド処理を実行した後、コマンド転送処理プログラム531は、ボリュームマッピング情報515の仮想化処理モジュール管理情報523(In Portの場合)或いは外部ボリューム接続モジュール管理情報524(ストレージ制御装置の場合)或いは実ボリューム管理情報521(Out Portの場合)を用いてコマンドフレームの転送先を検出する。
4.仮想化ルーティング制御情報登録(136)
次にコマンド転送処理プログラム531は、受信したコマンドフレームに含まれる送信元識別情報とコマンド識別情報と、コマンドフレームの転送先を識別する送信先識別情報と、自身が生成したコマンド識別情報とを仮想化ルーティング制御情報530の送信元管理情報534、送信先管理情報535として登録する。
5.コマンド転送(137)
更にコマンド転送処理プログラム531は、受信したコマンドフレームに含まれるコマンド識別情報を自身が生成したコマンド識別情報に置き換え、上記検出したコマンドフレームの転送先に送信することで一連のコマンドフレーム転送処理を終了する(137)。
[レスポンスフレームの場合]
ステップ132において受信したフレームデータがコマンドフレームでないことを検出し,更に受信したフレームデータがレスポンスフレームであることを検出した場合(138)、レスポンス転送処理プログラム532が以下のレスポンス転送処理を実行する。
1.レスポンス生成処理要否の判定(139)
レスポンス転送処理プログラム532は、受信したレスポンスフレームに含まれるコマンド識別情報とボリュームマッピング情報515とを用いて、自身でのレスポンス生成処理が必要か否かを判別する。判別の方法の一例としては、例えば受信したレスポンスフレームに含まれる送信元の識別情報が、ボリュームマッピング情報515の実ボリューム管理情報521に登録され、且つ仮想化処理モジュール管理情報523に自身の識別情報が登録されている場合には、そのレスポンスフレームは自身でのレスポンス生成処理が必要なフレームデータであると判定される。
2.レスポンス生成処理(140)
自身でのレスポンス生成処理が必要と判別された場合、レスポンス転送処理プログラム532は、ボリュームマッピング情報515の仮想ボリューム管理情報520を用いて、受信したレスポンスフレームに含まれる送信元識別情報を仮想ボリュームに対応した識別情報に、送信先識別情報を対応するホストコンピュータの識別情報に置き換える処理と、受信したレスポンスフレームに含まれるステータス情報に基づき必要な場合には新たなステータス情報を生成し置き換える処理とをレスポンス生成処理として実施する。
3.レスポンスフレーム転送先検出(141)
更に、レスポンス転送処理プログラム532は、受信したフレームデータに含まれるコマンド識別情報と仮想化ルーティング制御情報530を用いて、レスポンスフレームの転送先を検出する。検出方法の一例としては、受信したフレームデータに含まれるコマンド識別情報と一致する仮想化ルーティング制御情報530の送信先管理情報535のコマンド管理情報を検出し,当該コマンド管理情報に対応する送信元管理情報534の送信元識別情報をレスポンスフレームの転送先として検出する。
4.レスポンス転送(142)
次にレスポンス転送処理プログラム532は、受信したレスポンスフレームに含まれるコマンド識別情報を、仮想化ルーティング制御情報530の送信元管理情報534の対応する送信元コマンド識別情報とに置き換え、ステップ141において検出したレスポンスフレームの転送先に送信する。
5.仮想化ルーティング制御情報更新(143)
更にレスポンス転送処理プログラム532は、受信したレスポンスフレームに含まれるコマンド識別情報に基づき、仮想化ルーティング制御情報530の対応するエントリ(送信先/送信元管理情報)を削除して一連のレスポンスフレーム転送処理を終了する。
[上記以外のフレームの場合]
受信したフレームデータが上記(コマンド、スポンス)以外のフレームデータ(例えば,データ)である場合、その他の転送処理プログラム533が以下のフレームデータ転送処理を実行する。
1.自身での仮想化処理要否の判定(144)
受信したフレームデータに含まれるフレームデータの送信先/送信元識別情報及びコマンド識別情報と、ボリュームマッピング情報515及び仮想化ルーティング制御情報530とを用いて、その他の転送処理プログラム533は自身での仮想化処理の要否を判別する。判別の一例としては、例えば送信先識別情報或いは送信元識別情報が、ボリュームマッピング情報515の実ボリューム管理情報521或いは仮想ボリューム管理情報520に登録され、且つ仮想化処理モジュール管理情報523に自身の識別情報が登録されている場合に、その他の転送処理プログラム533は自身での仮想化処理が必要なフレームデータであると判定する。
2.仮想化(送信元/送信先識別情報変換)処理(145)
自身での仮想化(送信元/送信先識別情報変換)処理が必要と判別した場合,ボリュームマッピング情報515の仮想ボリューム管理情報520と実ボリューム管理情報521を用いて、その他の転送処理プログラム533は受信したフレームデータに含まれる送信元の識別情報或いは送信先の識別情報を仮想ボリュームの識別情報或いは実ボリュームの識別情報に置き換える処理を仮想化処理として実施する。処理の一例としては、受信したフレームデータに含まれる送信先の識別情報が仮想ボリュームの識別情報と一致する場合(ホストコンピュータから仮想化制御装置)、送信先の識別情報を実ボリュームの識別情報に、受信したフレームデータに含まれる送信元の識別情報が実ボリュームの識別情報と一致する場合(仮想化制御装置からホストコンピュータ)、送信元の識別情報を仮想ボリュームの識別情報に置き換える処理を、その他の転送処理プログラム533は実施する。
3.その他のフレームデータ転送先検出(146)
更にその他の転送処理プログラム533は、受信したフレームデータに含まれるコマンド識別情報と、仮想化ルーティング制御情報530を用いてフレームデータの転送先を検出する。
検出処理の一例としては、受信したフレームデータに含まれるコマンド識別情報と一致する仮想化ルーティング制御情報530の送信元管理情報534のコマンド管理情報をその他の転送処理プログラム533が検出し、当該コマンド管理情報に対応する送信先管理情報535の送信先識別情報をフレームデータの転送先とすることが考えられる。
4.フレームデータ転送(147)
次にその他の転送処理プログラム533は、受信したフレームデータに含まれるコマンド識別情報を仮想化ルーティング制御情報530の送信元管理情報534の対応する送信元コマンド識別情報に置き換え、ステップ156で検出したフレームデータの転送先に送信することで一連の処理を終了する。
尚上記説明においては説明を簡略にする為、ポート部の識別情報を外部(ホストコンピュータ或いは記憶装置との間で用いる識別情報)と内部(仮想化制御装置内の他の部位との間で用いる識別情報)とを同一であるものとして説明したが、本発明はこれに限定されるものではない。ポートの識別情報が外部と内部とで異なる場合には、それらを関連付ける情報を仮想化制御装置2が持てば良いことは言うまでも無い。
次に,ホストコンピュータと実ボリュームを提供する記憶装置とのアクセス経路として複数のバリエーションを持つ本実施形態におけるデータ移行処理について説明する。本実施形態においては、ポート部8、ストレージ制御部7-1、ストレージ制御部7-2のいずれかがデータ移行処理を実行し、データ移行に伴いボリュームマッピング情報の更新を実行する。いずれの部位がこれらの処理を実行するかは、ボリュームマッピング情報515の仮想化処理モジュール管理情報に基づいて決定される。即ち、仮想化処理モジュールとして仮想化処理モジュール管理情報523に登録されている部位が、対応する仮想ボリュームに関するデータ移行処理を実行し、ボリュームマッピング情報を更新する。例えば図22に示すボリュームマッピング情報515であれば、Port ID = V#Pid#2、 Port Name = V#Pname#2、LUN=0で識別される仮想ボリュームに関するデータ移行処理及びボリュームマッピングテーブルの更新は、ストレージ制御部7-2によって実行される。尚、本実施形態におけるデータ移行処理やボリュームマッピングテーブルの更新方法は、前述の第一の実施形態と同様の方法である。
本実施形態では、更に、仮想化処理モジュールが変更される場合がある。そこで仮想化処理モジュールの変更を伴うデータ移行処理について以下に説明する。
尚仮想化処理モジュールの変更を伴うデータ移行としては、アクセス経路(第一/第二/第三のアクセス経路)のタイプが変更される場合と、アクセス経路のタイプは同一であっても仮想化処理モジュールが変更される場合とが有る。以下アクセス経路のタイプが第二のアクセス経路のタイプから第三のアクセス経路のタイプに変更される場合を例に説明する。
図25はデータ移行処理が実行される前に、仮想化制御装置2のポート部8(In Port)とが有する実ボリュームマッピング情報515の一例、図26はデータ移行処理が実行される前にストレージ制御装置7−2が有する実ボリュームマッピング情報515の一例、図27はデータ移行処理が実行される前にポート部8 (Out Port)が有する実ボリュームマッピング情報515の一例を示す図である。
図25にはポート部8(In port)が管理する仮想化ボリューム管理情報として、V#Pid#1、V#Pid#2、及びV#Pid#3が登録されている。これは、ポート部8(In Port)が、仮想化制御装置2がホストコンピュータに対して提供する三つの仮想ボリューム(V#Pid#1、V#Pid#2、及びV#Pid#3)のアクセス経路を構成していることを示している。同様に図26によれば、ストレージ制御部7−2は、仮想ボリュームV#Pid#2に対するアクセス経路を構成し、図27によればポート部8(Out Port)は二つの仮想ボリューム(V#Pid#2及びV#Pid#3)に対するアクセス経路を構成していることを示している。
更に図25、図26及び図27の仮想化処理モジュール管理情報によれば、V#Pid#1で識別される仮想ボリュームの仮想化処理はストレージ制御部7-1、仮想ボリュームV#Pid#2に対する仮想化処理はストレージ制御部7−2(SC #2)、仮想ボリュームV#Pid#3に対する仮想化処理はOut Portで実施されることが分る。
従って、仮想ボリュームV#Pid#1とホスト間のアクセスパスは、In Portからバックプレーン9を経由してストレージ制御部7-1に到達し、ストレージ制御部7-1にて仮想化処理が実行される第一のタイプであり、仮想ボリュームV#Pid#2とホスト間のアクセスパスはIn Portからバックプレーン9を経由してストレージ制御部7-2に到達し、ストレージ制御部7-2にて仮想化処理が実行された後更にOut Portを通って外部記憶装置に到達する第二のタイプであり、仮想ボリュームV#Pid#3とホスト間のアクセスパスはIn Portからバックプレーンを経由してストレージ制御部を経由することなくOut Portに到達し、Out Portにて仮想化処理が実行された後外部記憶装置に到達する第三のタイプであることが分る。
図28から図30は図25から図27で示した仮想ボリューム(V#Pid#2)へのアクセス経路を、第二のタイプのアクセス経路から第三のタイプのアクセス経路に変更し、更に外部記憶装置3間でのデータ移行処理(P#Pid#2 及び LUN0で識別される実ボリュームからP#Pid#3 及び LUN1で識別される実ボリュームへデータを移行する処理)を実施した後に、仮想化制御装置2のポート部8(In Port)、ストレージ制御装置7−2、ポート部8(Out Port)各々が有するボリュームマッピング情報515の一例を示す図である。
図28はポート部8(In Port)、図30はポート部8(Out Port)が有するボリュームマッピング情報である。図28及び図30では、V#Pid#2で識別される仮想ボリュームに対応する実ボリュームの識別情報がデータ移行先の実ボリュームの識別情報であるP#Pid#3、P#Pname#3、LUN1に書き換えられ、更に仮想化処理モジュール管理情報が、新たなアクセス経路(第三のタイプのアクセス経路)において仮想化処理を実行するOut Portに書き換えられている。また図29はストレージ制御部7−2が有するボリュームマッピング情報であるが、第三のタイプのアクセス経路においては、ストレージ制御部はホストコンピュータに仮想ボリュームを提供する際のアクセス経路を構成しないことから、V#Pid#2で識別される仮想ボリュームに関するエントリーが削除される。
尚本実施形態におけるデータ移行処理は、仮想化制御装置2の適当な部位(例えば本実施形態においてデータ移行処理前に仮想化処理を実施している部位)で前述の実施形態におけるデータ移行処理を実施することによって実現可能であることからその詳細説明は省略する。
ここで、ボリュームマッピング情報515の更新に関しては、仮想化制御装置2を構成する部位間で同期して実施されることが望ましいことから、前述の実施形態と同様に記憶装置間でのデータ移行処理の完了を契機として仮想化制御装置2のメイン制御部20を介して実施されることが望ましい。
即ち記憶装置間でのデータ移行処理を実施する部位は、データ移行処理の完了をメイン制御部20に通知し、該通知を受けたメイン制御部20によって関連する部位のボリュームマッピング情報515が更新されることが望ましい。
尚アクセス経路のみが変更され、記憶装置間でのデータ移行処理を伴わない場合のボリュームマッピング情報515の更新に関しても同様である。
尚、上述の説明においては、ホストコンピュータ1と接続されるポート部(In Port)と外部ストレージ3と接続されるポート部(Out Port)を、異なるポート部で実現する場合を例に説明を行ってきたが、本発明はこれに限定されるものではなく、例えば同一のポート部8においてホストコンピュータ1と外部ストレージ3との接続を同時に実現することも可能である。
更に上述の説明において仮想ボリュームを識別するための情報であるPort ID、Port Nameは、仮想化制御装置2がホストコンピュータ1に対して提供する仮想的なポートに割当てた識別子情報として説明してきたが,これに限定されるものではなく、特に本実施形態においては、仮想化制御装置2のポート部8に割当てられた実際の識別子情報を仮想ボリュームの管理情報として用いることが可能である。