以下、本発明の実施形態について図面を用いて説明する。
本発明の実施形態では、2つの拠点間で仮想計算機の移行させる場合について説明する。具体的には、任意の拠点に配置されたサーバ上で稼動する仮想計算機を別の拠点に配置されたサーバに移行させ、その後、元のサーバに仮想計算機を移行させる場合を説明する。なお、以下では、仮想計算機をVMと記載する。
図1は、本発明の実施形態におけるネットワークシステムの構成例を示す説明図である。
ネットワークシステムは、複数の拠点から構成される。図1に示す例では、ネットワークシステムは、2つの拠点500−1、500−2を含む。拠点500−1と拠点500−2とは、WAN600を介して接続される。以下、拠点500−1及び拠点500−2を区別しない場合、拠点500と記載する。
拠点500−1は、サーバ200−1、サーバ200−2、ネットワーク装置100−1、ストレージ300−1及びストレージ300−2から構成される。サーバ200−1上ではVM1(400−1)及びVM3(400−3)が稼動しており、サーバ200−2上ではVM2(400−2)が稼動している。
また、拠点500−2は、サーバ200−3、ネットワーク装置100−2、及びストレージ300−3から構成される。サーバ200−3上ではVM4(400−4)が稼動している。
以下、サーバ200−1、サーバ200−2,及びサーバ200−3を区別しない場合、サーバ200と記載する。ネットワーク装置100−1及びネットワーク装置100−2を区別しない場合、ネットワーク装置100と記載する。ストレージ300−1、ストレージ300−2及びストレージ300−3を区別しない場合、ストレージ300と記載する。また、VM400−1、VM400−2、VM400−3及びVM400−4を区別しない場合、VM400と記載する。
ネットワーク装置100は、拠点500内の通信を管理する。また、ネットワーク装置100は、各拠点500を接続する。なお、ネットワーク装置100の構成については、図2を用いて後述する。
サーバ200は、VM400を生成し、また、VM400を管理するハイパバイザ250(図3参照)を備える。ハイパバイザ250は、NPIV(N Port ID Virtualization)を用いて、VM400ごとにファブリックログインを実行する。これによって、各VM400がストレージ300にアクセスすることができる。なお、サーバ200の構成については、図3を用いて後述する。
ストレージ300は、サーバ200が使用する記憶領域を提供する記憶媒体である。ストレージ300は、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)などから構成される。ストレージ300は論理的に複数の記憶領域に分割されており、それぞれの記憶領域を論理ユニットとして管理する。なお、論理ユニットには識別子として論理ユニット番号が付与される。
図1に示す例では、サーバ200−1及びサーバ200−2は、LAN700−1を介して互いに接続される。また、ネットワーク装置100−1は、LAN700−1に接続され、各拠点500のサーバ200間の通信を中継する。
サーバ200−1及びサーバ200−2は、ネットワーク装置100−1と直接接続され、当該ネットワーク装置100−1を経由して、ストレージ300−1及びストレージ300−2にアクセスする。
ストレージ300−1及びストレージ300−2は、SAN(Storage Area Network)800−1を介して、ネットワーク装置100−1に接続される。なお、SAN800−1には、1以上のファイバチャネルスイッチ(図示省略)が含まれる。
また、サーバ200−1、サーバ200−2、及びネットワーク装置100−1にはそれぞれ、グローバルなIPアドレスが割り当てられる。具体的には、サーバ200−1にはIPアドレス「200.1.1.2」が割り当てられ、サーバ200−2にはIPアドレス「200.1.1.3」が割り当てられ、ネットワーク装置100−1にはIPアドレス「200.1.2.1」が割り当てられる。
また、サーバ200上のハイパバイザ250は、NPIV(N Port ID Virtualization)を用いて、VM400毎にログイン処理を実行し(ファブリックログイン)、VM400毎のポートアドレスを取得する。
なお、拠点500−2についても同様の構成であるため説明を省略する。
本実施形態では、拠点500−1のサーバ200−1上で稼動するVM3(400−3)を拠点500−2のサーバ200−3に移行させ、その後、元のサーバ200−1にVM3(400−3)を移行させる処理について説明する。
なお、本実施形態では、サーバ200とネットワーク装置100とはIP(Internet Protocol)を用いて通信し、各ストレージ300は、FCP(Fiber Channel Protocol)を用いて通信する。
また、各ネットワーク装置100の間でストレージデータを送受信する場合には、FCIP(Fiber Channel over Internet Protocol)を用いて通信する。
なお、ネットワークシステムにおける通信方法は一例であって、各装置間で通信できれば、どのようなプロトコルを用いてもよい。
図2は、本発明の実施形態におけるネットワーク装置100のハードウェア構成及びソフトウェア構成の一例を示すブロック図である。
ネットワーク装置100は、プロセッサ110、メモリ120、LAN_IF130、サーバ_IF140−1〜140−n、SAN_IF150、及びWAN_IF160を備える。
プロセッサ110は、メモリ120に格納されるプログラムを実行する。プロセッサ110がプログラムを実行することによってネットワーク装置100が備える機能を実現することができる。
メモリ120は、プロセッサ110によって実行されるプログラム及び当該プログラムの実行に必要な情報を格納する。
本実施形態のメモリ120は、アクセス処理部900、接続管理テーブル910、拠点接続管理テーブル920、サーバ管理テーブル930、監視テーブル940、及び変換テーブル950を備える。なお、メモリ120は、その他のプログラム及びテーブルを含んでいてもよい。
アクセス処理部900は、ライブマイグレーション処理におけるVM400とストレージ300とのアクセスを管理する。ライブマイグレーション処理では、VM400のレジスタ情報及びメモリ120上に格納されるVM400の情報が移行対象となる。
接続管理テーブル910は、サーバ200とストレージ300との接続を管理するための情報を格納する。なお、接続管理テーブル910の詳細については図5A及び図5Bを用いて後述する。
拠点接続管理テーブル920は、他の拠点500におけるネットワーク装置100及びサーバ200の接続先を管理するための情報を格納する。なお、拠点接続管理テーブル920の詳細については図6A及び図6Bを用いて後述する。
サーバ管理テーブル930は、ネットワーク装置100とサーバ200との接続を管理するための情報を格納する。なお、サーバ管理テーブル930の詳細については図7A及び図7Bを用いて後述する。
監視テーブル940は、フレーム及びパケットをフィルタリングするための情報を格納する。なお、監視テーブル940の詳細については図8A及び図8Bを用いて後述する。
変換テーブル950は、フィルタリングされたフレーム及びパケットを転送するための情報を格納する。なお、変換テーブル950の詳細については図9を用いて後述する。
メモリ120は、前述したテーブル以外に、論理ユニットへのアクセスを管理するために、当該論理ユニットのブロックに対応するビットマップを格納する。当該ビットマップは一時的に作成されるものであり、各ビットマップを一意に識別するための識別子が付与される。
なお、メモリ120には、フレーム及びIPパケットの転送処理、及びフレーム及びIPパケットの変換処理などを実行するスイッチ処理部を備えるが、本発明には直接関係しないため省略している。
LAN_IF130は、LAN700に接続するためのインタフェースである。サーバ_IF140−1〜140−nは、サーバ200と接続するためのインタフェースである。
SAN_IF150は、SAN800に接続するためのインタフェースである。WAN_IF160は、WAN600と接続するためのインタフェースである。
なお、ネットワーク装置100は、拠点500間を管理する管理ネットワークに接続するための制御インタフェースなどの他のハードウェアを備えていてもよい。
なお、本実施形態では、プログラムを実行することによってアクセス処理部900を実現しているが、アクセス処理部900が備える機能をASIC及びFPGAのようなハードウェアを用いて実現してもよい。
図3は、本発明の実施形態おけるサーバ200のハードウェア構成及びソフトウェア構成の一例を示すブロック図である。
サーバ200は、プロセッサ210、メモリ220、LAN_IF230、及びI/O_IF240−1〜240−nを備える。
プロセッサ210は、メモリ220に格納されるプログラムを実行する。プロセッサ210がプログラムを実行することによってサーバ200が備える機能を実現することができる。
メモリ220は、プロセッサ210によって実行されるプログラム及び当該プログラムの実行に必要な情報を格納する。本実施形態のメモリ220は、ハイパバイザ250を格納する。
ハイパバイザ250は、サーバ200が備える物理リソースを割り当てることによってVM400を生成し、生成されたVM400を管理する。VM400は、各種業務を実行する。VM400上では、OS(図示省略)及びアプリケーション(図示省略)が実行される。また、ハイパバイザ250は、ライブマイグレーション処理を実行するライブマイグレーション機能を有する。
LAN_IF230は、LAN700に接続するためのインタフェースである。I/O_IF240−1〜240−nは、ネットワーク装置100又はその他の外部装置に接続するためのインタフェースである。
図4は、本発明の実施形態におけるFCフレームの構造の一例を示す説明図である。
FCフレーム1000は、Header1100、Payload1200及びCRC1300から構成される。
Header1100は、主に転送制御に用いられる情報を格納する。具体的には、Header1100は、R_CTL1110、D_ID1120、S_ID1130、及びTYPE1140を格納する。
R_CTL1110はフレーム種別を格納する。D_ID1120は、宛先のポートアドレスを格納する。S_ID1130は、送信元のポートアドレスを格納する。TYPE1140は、Payload1200に格納されるデータの種別を示す情報を格納する。
Payload1200は、データ本体の内容を格納する。CRC1300は、フレーム単位の誤り検出用の冗長情報を格納する。
FCフレーム1000がポート情報の送受信に用いられるExtended_link_servicesの場合、R_CTL1110には「0x22」、TYPE1140には「0x01」が格納される。
また、Payload1200に格納されるLS_command_code1210には、FLOGI(Fabric Login)フレームであれば「0x04」、PLOGI(Port Login)フレームであれば「0x03」、PLOGO(Port Logout)フレームであれば「0x05」、ACC(Accept)フレームであれば「0x02」、RJT(Reject)フレームであれば「0x01」が格納される。
FCフレーム1000がFC−4のSCSIコマンドフレームの場合、R_CTL1110には、FCP_CMNDであれば「0x06」、FCP_XFER_RDYフレームであれば「0x05」、FCP_DATAフレームであれば「0x01」、FCP_RSPフレームであれば「0x07」が格納される。なお、TYPE1140にはすべて「0x08」が格納される。
FCP_CMNDフレームには、論理ユニット番号を示すLUN1220及びCDB1230が格納される。
ここで、CDB1230は、命令を示すOperation1231、論理ブロックアドレスを示すLBA1232、転送するブロック長を示すTransfer_length1233から構成される。例えば、Operation1231に「0x28」、「0xA8」、「0x88」、又は「0x7F」が格納される場合にはリード系コマンドを表し、また、Operation1231に「0x0A」、「0x2A」、「0xAA」、又は「0x8A」が格納される場合にはライト系コマンドを表す。
図5A及び図5Bは、本発明の実施形態における接続管理テーブル910の一例を示す説明図である。
図5Aは、ネットワーク装置100−1が保持する接続管理テーブル910を示す。また、図5Bは、ネットワーク装置100−2が保持する接続管理テーブル910を示す。
接続管理テーブル910は、サーバ200とストレージ300との接続状態を管理するためのテーブルである。接続管理テーブル910は、サーバ_IF_ID911、サーバポート912、ストレージポート913、LUN914、状態915及びビットマップ_ID916を含む。
サーバ_IF_ID911は、サーバ_IF140の識別子を格納する。
サーバポート912は、VM400に割り当てられたサーバポートの識別番号を格納する。なお、VM400は、サーバ_IF_ID911に対応するサーバ_IF140に接続されるサーバ200上で稼動するVM400である。本実施形態では、サーバポート912がVM400の識別子となる。
ストレージポート913は、VM400に割り当てられたストレージポートの識別番号を格納する。なお、VM400は、サーバ_IF_ID911に対応するサーバ_IF140に接続されるサーバ200上で稼動するVM400である。VM400は、割り当てられたストレージポートを使用してLUにアクセスする。
LUN914は、VM400がアクセスする論理ユニットの識別番号を格納する。VM400は、サーバ_IF_ID911に対応するサーバ_IF140に接続されるサーバ200上で稼動するVM400である。
状態915は、ライブマイグレーション処理の状態を示す情報を格納する。具体的には、「no」、「実行中」、「移行元」、又は「移行先」のいずれかが格納される。なお、エントリ作成時には「no」が格納される。
「no」は、ライブマイグレーション処理が実行されていない状態を示す。「実行中」は、ライブマイグレーション処理が実行中である状態を示す。
「移行元」は、移行元のVM400としてライブマイグレーション処理が完了した状態を示す。「移行先」は、移行先のVM400としてライブマイグレーション処理が完了した状態を示す。
ビットマップ_ID916は、VM400がアクセスする論理ユニットのアクセス状態を管理するビットマップの識別子を格納する。なお、ライブマイグレーション処理が実行されていない場合、ビットマップ_ID916には何も格納されない。
図6A及び図6Bは、本発明の実施形態における拠点接続管理テーブル920の一例を示す説明図である。
図6Aは、ネットワーク装置100−1が保持する拠点接続管理テーブル920を示す。また、図6Bは、ネットワーク装置100−2が保持する拠点接続管理テーブル920を示す。
拠点接続管理テーブル920は、移行先の候補となるサーバ200を管理するためのテーブルである。拠点接続管理テーブル920に設定される情報は、予め管理者によって設定される。なお、ネットワーク装置100がネットワークから必要な情報を取得し、取得された情報に基づいて拠点接続管理テーブル920を生成してもよい。
拠点接続管理テーブル920は、サーバ_IP921及びネットワーク装置_IP922を含む。
サーバ_IP921は、移行先の拠点のネットワーク装置100に接続されるサーバ200のIPアドレスを格納する。ネットワーク装置_IP922は、移行先のネットワーク装置100のIPアドレスを格納する。
本実施形態では、サーバ200−1上で稼動するVM400の移行先として、ネットワーク装置100−2に接続されるサーバ200−3が指定されている。また、ネットワーク装置100−2に接続される200−3上で稼動するVM400の移行先として、ネットワーク装置100−1に接続されるサーバ200−1及びサーバ200−2が指定されている。
したがって、図6Aに示す拠点接続管理テーブル920には、ネットワーク装置100−2及びサーバ200−3のIPアドレスが格納される。また、図6Bに示す拠点接続管理テーブル920には、ネットワーク装置100−1、サーバ200−1及びサーバ200−2のIPアドレスが格納される。
図7A及び図7Bは、本発明の実施形態におけるサーバ管理テーブル930の一例を示す説明図である。
図7Aは、ネットワーク装置100−1が保持するサーバ管理テーブル930を示す。また、図7Bは、ネットワーク装置100−2が保持するサーバ管理テーブル930を示す。
サーバ管理テーブル930は、サーバ_IF140とサーバ200との接続関係を管理するためのテーブルである。サーバ管理テーブル930は、サーバ_IF_ID931及びサーバ_IP932を含む。
サーバ_IF_ID931は、サーバ_IF140の識別子を格納する。
サーバ_IP932は、サーバ_IF_ID931に対応するサーバ_IF140に接続されるサーバ200のIPアドレスを格納する。
図8A及び図8Bは、本発明の実施形態における監視テーブル940の一例を示す説明図である。
図8Aは、ネットワーク装置100−1が保持する監視テーブル940を示す。また、図8Bは、ネットワーク装置100−2が保持する監視テーブル940を示す。
監視テーブル940は、ライブマイグレーション処理の対象となるサーバ200を把握するためのテーブルである。監視テーブル940は、ソース_IP941、宛先_IP942及び属性943を含む。
ソース_IP941は、移行元のサーバ200のIPアドレスを格納する。宛先_IP942は、移行先のサーバ200のIPアドレスを格納する。
属性943は、監視テーブル940を保持するネットワーク装置100の属性を示す情報を格納する。属性は、監視テーブル940を管理するネットワーク装置100が移行元の拠点500又は移行先の拠点500の何れに属するかを示す情報である。具体的には、移行元の拠点500を示す「Source」、又は、移行先の拠点500を示す「Destination」のいずれかが格納される。
図9は、本発明の実施形態における変換テーブル950の一例を示す説明図である。
転送元951は、自拠点500から送信されるフレーム及びIPパケットを特定するための情報を格納する。
変換テーブル950は、転送元951及び転送先952を含む。
転送元951は、転送元のVM400を特定するための情報を格納する。具体的には、転送元951は、サーバポート953、ストレージポート954及びLUN955を含む。
サーバポート953はサーバポート912と同一のものであり、ストレージポート954はストレージポート913と同一のものであり、また、LUN955はLUN914と同一のものであるため説明を省略する。
転送先952は、IPパケットを転送する他の拠点500の情報を格納する。転送先952は、サーバポート956、ストレージポート957、LUN958、及び転送先_IP959を含む。
サーバポート956はサーバポート912と同一のものであり、ストレージポート957はストレージポート913と同一のものであり、また、LUN958はLUN914と同一のものであるため説明を省略する。
転送先_IP959は、他の拠点500に含まれるネットワーク装置100のIPアドレスを格納する。
[ライブマイグレーション処理の実行前]
まず、ライブマイグレーション処理の実行前のネットワークシステムの動作について説明する。
図10は、本発明の実施形態におけるライブマイグレーション処理の実行前の処理の流れを説明するシーケンス図である。
図10では、拠点500−1のサーバ200−1における処理を例に説明する。以下、サーバ200−1を主語にしている場合、サーバ200−1のハイパバイザ250が処理を実行することを示す。
ステップS100〜ステップS105までの処理はログイン処理である。ステップS106〜ステップS108までの処理は、読み出し処理である。ステップS109〜ステップS112までの処理は、書き込み処理である。ステップS113〜ステップS115までの処理は、ログアウト処理である。
まず、サーバ200−1は、サーバ200−1上で稼動するVM1(400−1)がストレージ300へアクセスするためのログイン処理を実行する。
サーバ200−1は、SAN800−1に接続されるストレージ300にログインするために、SAN800−1に対してFLOGIフレームを送信する(ステップS100)。当該処理によってサーバポートのアドレスが取得される。
ネットワーク装置100−1は、SAN800−1に含まれるスイッチに、受信したFLOGIフレームを転送する。
SAN800−1に含まれるスイッチは、FLOGIフレームを受信すると、サーバ200−1に対してACCフレームを送信する(ステップS101)。ACCフレームはログインを受け付けた旨を示すフレームである。
ネットワーク装置100−1は、サーバ200−1に、受信したACCフレームを転送する。このとき、ネットワーク装置100−1は、接続管理テーブル910を更新する(ステップS102)。具体的な更新処理については図11を用いて後述する。
次に、サーバ200−1は、アクセス先のストレージポートのアドレスを取得するために、PLOGIフレームをストレージ300に対して送信する(ステップS103)。
ネットワーク装置100−1は、SAN800−1に含まれるスイッチに受信したPLOGIフレームを転送する。さらに、SAN800−1に含まれるスイッチは、ストレージ300に受信したPLOGIフレームを転送する。
ストレージ300は、PLOGIフレームを受信すると、サーバ200−1に対してACCフレームを送信する(ステップS104)。ACCフレームはログインを受け付けた旨を示すフレームである。
SAN800−1に含まれるスイッチは、ACCフレームを受信すると、当該フレームをネットワーク装置100−1に転送する。
さらに、ネットワーク装置100−1は、ACCフレームを受信すると、当該フレームをサーバ200−1に転送する。このとき、PLOGIフレームを受信したネットワーク装置100−1は、接続管理テーブル910を更新する(ステップS105)。具体的な更新処理については図12を用いて後述する。
以上の処理によって、接続管理テーブル910に必要な情報が格納される。したがって、ネットワーク装置100−1は、接続管理テーブル910を参照することによって、VM400がどのストレージ300にアクセスするかを把握できる。
次に、読み出し処理について説明する。
サーバ200−1は、データの読み出しを示すFCP_CMNDフレームをストレージ300に対して送信する(ステップS106)。
ネットワーク装置100−1は、FCP_CMNDフレームを受信すると、当該フレームをSAN800−1に含まれるスイッチに転送する。このとき、ネットワーク装置100−1は、接続管理テーブル910を更新する(ステップS107)。具体的な更新処理については図13を用いて後述する。
また、SAN800−1に含まれるスイッチは、FCP_CMNDフレームを受信すると、当該フレームをストレージ300に転送する。
ストレージ300は、FCP_CMNDフレームを受信すると、所定のデータを読み出し、読み出されたデータを含むFCP_DATAフレームをサーバ200−1に対して送信する(ステップS108)。
SAN800−1に含まれるスイッチは、FCP_DATAフレームを受信すると、当該フレームをネットワーク装置100−1に転送する。また、ネットワーク装置100−1は、FCP_DATAフレームを受信すると、当該フレームをサーバ200−1に転送する。
次に、書き込み処理について説明する。
サーバ200−1は、データの書き込みを示すFCP_CMNDフレームをストレージ300に対して送信する(ステップS109)。
ネットワーク装置100−1は、FCP_CMNDフレームを受信すると、当該フレームをSAN800−1に含まれるスイッチに転送する。また、SAN800−1に含まれるスイッチは、FCP_CMNDフレームを受信すると、当該フレームをストレージ300に対して転送する。
ストレージ300は、FCP_CMNDフレームを受信すると、データの書き込みを受け付け可能である旨を知らせるFCP_XFER_RDYフレームをサーバ200−1に対して送信する(ステップS110)。
SAN800−1に含まれるスイッチは、FCP_XFER_RDYフレームを受信すると、当該フレームをネットワーク装置100−1に転送する。また、ネットワーク装置100−1は、FCP_XFER_RDYフレームを受信すると、当該フレームをサーバ200−1に転送する。
サーバ200−1は、FCP_XFER_RDYフレームを受信すると、書き込むデータを含むFCP_DATAフレームをストレージ300に対して送信する(ステップS111)。
ネットワーク装置100−1は、FCP_DATAフレームを受信すると、当該フレームをSAN800−1に含まれるスイッチに転送する。また、SAN800−1に含まれるスイッチは、FCP_DATAフレームを受信すると、当該フレームをストレージ300に転送する。
ストレージ300は、サーバ200−1から送信されるFCP_DATAフレームを全て受信すると、正常にデータが書き込まれた旨を示すFCP_RSPフレームをサーバ200−1に対して送信する(ステップS112)。
SAN800−1に含まれるスイッチは、FCP_RSPフレームを受信すると、当該フレームをネットワーク装置100−1に転送する。また、ネットワーク装置100−1は、FCP_RSPフレームを受信すると、当該フレームをサーバ200−1に転送する。
次に、ログアウト処理について説明する。
サーバ200−1は、ポートログアウトを示すPLOGOフレームをストレージ300に対して送信する(ステップS113)。
ネットワーク装置100−1は、FLPGOフレームを受信すると、当該フレームをSAN800−1に含まれるスイッチに転送する。また、SAN800−1に含まれるスイッチは、FLPGOフレームを受信すると、当該フレームをストレージ300に転送する。
ストレージ300は、PLOGOフレームを受信すると、ログアウトが完了した旨を示すACCフレームをサーバ200−1に対して送信する(ステップS114)。
SAN800−1に含まれるスイッチは、ACCフレームを受信すると、当該フレームをネットワーク装置100−1に転送する。また、ネットワーク装置100−1は、ACCフレームを受信すると、当該フレームをサーバ200−1に転送する。
このとき、ネットワーク装置100−1は、接続管理テーブル910を更新する(ステップS115)。なお、具体的な更新処理については、図14を用いて後述する。
次に、ネットワーク装置100の処理について説明する。
図11は、本発明の実施形態のネットワーク装置100−1が実行する処理を説明するフローチャートである。図11では、FLOGIフレームを受信したネットワーク装置100−1の処理を示している。
ネットワーク装置100−1は、サーバ200−1からFLOGIフレームを受信すると(ステップS200)、当該フレームをSAN800−1に含まれるスイッチに転送する(ステップS201)。ネットワーク装置100−1は、フレームのR_CTL1110、TYPE1140及びPayload1200を参照することによってFLOGIフレームであるか否かを判定できる。
以下、同様の方法を用いて処理が実行されるためフレームの判定処理の説明は省略する。
FLOGIフレームの転送後、ネットワーク装置100−1は、SAN800−1に含まれるスイッチから送信される応答フレームを待つ。
ネットワーク装置100−1は、SAN800−1に含まれるスイッチから応答フレームを受信すると(ステップS202)、当該応答フレームの種別を判定する(ステップS203)。具体的には、ネットワーク装置100−1は、受信した応答フレームがACCフレーム又はRJTフレームの何れであるかを判定する。ここで、RJTフレームは、要求を拒絶する旨を示すフレームである。
応答フレームがRJTフレームであると判定された場合、ネットワーク装置100−1は、ステップS205に進む。
応答フレームがACCフレームであると判定された場合、ネットワーク装置100−1は、サーバポートの識別子を接続管理テーブル910に登録し(ステップS204)、ステップS205に進む。具体的には、以下のような処理が実行される。
ネットワーク装置100−1は、FLOGIフレームを送信したサーバ200−1が接続されるサーバ_IF140を特定する。次に、ネットワーク装置100は、接続管理テーブル910にエントリを生成し、生成されたエントリのサーバ_IF_ID911に特定されたサーバ_IF140の識別子を格納する。
ネットワーク装置100−1は、ACCフレームのD_ID1120を取得し、生成されたエントリのサーバポート912に取得されたD_ID1120を格納する。さらに、ネットワーク装置100−1は、生成されたエントリの状態915に「no」を格納する。
以上がステップS204の処理である。
次に、ネットワーク装置100−1は、受信した応答フレームをサーバ200に送信し(ステップS205)、処理を終了する。
なお、一定期間内に応答フレームが受信されない場合、ネットワーク装置100−1は、サーバ200−1にエラーを通知して処理を終了する。
図12は、本発明の実施形態のネットワーク装置100−1が実行する処理を説明するフローチャートである。図12では、PLOGIフレームを受信したネットワーク装置100−1の処理を示している。
ネットワーク装置100−1は、サーバ200−1からPLOGIフレームを受信すると(ステップS210)、当該フレームをSAN800−1に含まれるスイッチに転送する(ステップS211)。なお、受信したフレームの判定方法はステップS200と同一である説明を省略する。
PLOGIフレームの転送後、ネットワーク装置100−1は、SAN800−1に含まれるスイッチから送信される応答フレームを待つ。
ネットワーク装置100−1は、SAN800−1に含まれるスイッチから応答フレームを受信すると(ステップS212)、当該応答フレームの種別を判定する(ステップS213)。具体的には、ネットワーク装置100−1は、受信したフレームがACCフレーム又はRJTフレームの何れであるかが判定される。
応答フレームがRJTフレームであると判定された場合、ネットワーク装置100−1は、ステップS215に進む。
応答フレームがACCフレームであると判定された場合、ネットワーク装置100−1は、接続管理テーブル910にストレージポートを登録し(ステップS214)、ステップS215に進む。具体的には以下のような処理が実行される。
ネットワーク装置100−1は、ACCフレームを解析して、D_ID1120及びS_ID1130を取得する。
さらに、ネットワーク装置100−1は、サーバ_IF140の識別子及びD_ID1120に基づいて、接続管理テーブル910から対応するエントリを検索する。なお、サーバ_IF140の識別子は、PLOGIフレームを受信したサーバ_IF140の識別子である。
ネットワーク装置100は、検索されたエントリのストレージポート913に取得されたS_ID1130を格納する。
以上がステップS214の処理である。
次に、ネットワーク装置100−1は、受信した応答フレームをサーバ200−1に送信し(ステップS215)、処理を終了する。
なお、一定期間内に応答フレームが受信されない場合、ネットワーク装置100−1は、サーバ200−1にエラーを通知して処理を終了する。
図13は、本発明の実施形態のネットワーク装置100−1が実行する処理を説明するフローチャートである。図13では、FCP_CMNDフレームを受信したネットワーク装置100−1の処理を示している。
ネットワーク装置100−1は、サーバ200−1からFCP_CMNDフレームを受信すると、当該フレームを解析する。具体的には、以下のような処理を実行する。
ネットワーク装置100−1は、FCP_CMNDフレームを受信したサーバ_IF140を特定し、特定されたサーバ_IF140の識別子を取得する。また、ネットワーク装置100−1は、FCP_CMNDフレームから、D_ID1120、S_ID1130及びLUN1220を取得する。
ネットワーク装置100−1は、接続管理テーブル910から、取得されたサーバ_IF140の識別子、D_ID1120、及びS_ID1130と一致するエントリを検索する。ネットワーク装置100−1は、検索されたエントリの状態915が「no」であるか否かを判定する。
これは、状態915が「no」でない場合には、FCP_CMNDフレームを他の拠点に転送するために変換テーブル950を参照する必要があるためである。ここでは、ライブマイグレーション処理が実行されていないため検索されたエントリの状態915が「no」であると判定される。
エントリの状態915が「no」であると判定された場合、ネットワーク装置100−1は、通常の転送処理を実行することとなる。
ネットワーク装置100−1は、FCP_CMNDフレームをSAN800−1に含まれるスイッチに転送する(ステップS221)。
ネットワーク装置100−1は、接続管理テーブル910を参照して、対応するエントリにLUNが登録されているか否かを判定する(ステップS222)。具体的には、ネットワーク装置100−1は、ステップS220において検索されたエントリのLUN914にLUNが格納されているか否かを判定する。LUNが登録させていると判定された場合、ネットワーク装置100は、処理を終了する。
LUNが登録されていないと判定された場合、ネットワーク装置100−1は、LUN1220を登録して(ステップS223)、処理を終了する。具体的には、ネットワーク装置100−1は、対応するエントリのLUN914に取得されたLUN1220を格納する。
図14は、本発明の実施形態のネットワーク装置100−1が実行する処理を説明するフローチャートである。図14では、PLOGOフレームを受信したネットワーク装置100−1の処理を示している。
ネットワーク装置100−1は、サーバ200−1からPLOGOフレームを受信すると(ステップS230)、当該フレームをSAN800−1に含まれるスイッチに転送する(ステップS231)。その後、ネットワーク装置100−1は、SAN800−1に含まれるスイッチから送信される応答フレームを待つ。
ネットワーク装置100−1は、SAN800−1に含まれるスイッチから応答フレームを受信すると(ステップS232)、当該応答フレームの種別を判定する(ステップS233)。具体的には、ネットワーク装置100−1は、受信したフレームがACCフレーム又はRJTフレームの何れであるかが判定される。
応答フレームがRJTフレームであると判定された場合、ネットワーク装置100−1は、ステップS235に進む。
応答フレームがACCフレームであると判定された場合、ネットワーク装置100−1は、接続管理テーブル910から対応するエントリを削除し(ステップS234)、ステップS235に進む。なお、対応するエントリの検索方法は、ステップS214と同一の方法であるため説明を省略する。
ネットワーク装置100−1は、受信した応答フレームをサーバ200−1に転送し(ステップS235)、処理を終了する。
なお、一定期間内に応答フレームが受信されない場合、ネットワーク装置100−1は、サーバ200−1にエラーを通知して処理を終了する。
なお、ネットワーク装置100−1は、前述した以外のフレームを受信した場合には、フレームの転送処理を実行する。フレームの転送処理は公知の技術を用いればよいため説明を省略する。
図10に示す処理が終了すると、図5A及び図5Bに示すような接続管理テーブル910が生成される。
[ライブマイグレーション処理実行時]
サーバ200−1上で稼動するVM3(400−3)をサーバ200−3へ移行するライブマイグレーション処理を説明する。
図15A及び図15Bは、本発明の実施形態におけるライブマイグレーション処理の流れを説明するシーケンス図である。
サーバ200−1は、VM3(400−3)のライブマイグレーションの開始メッセージを含むIPパケットをサーバ200−3に対して送信する(ステップS300)。当該IPパケットには、移行元としてサーバ200−1のIPアドレスが格納され、また移行先としてサーバ200−3のIPアドレスが格納される。
なお、サーバ200−1は、管理者からライブマイグレーション処理の実行命令を受け付けた場合、又は、所定の実行条件に該当した場合に、前述したIPパケットを送信する。例えば、予め設定された時刻になることを実行条件とすることが考えられる。
ネットワーク装置100−1は、WAN600を介してIPパケットをネットワーク装置100−2に転送する。このとき、ネットワーク装置100−1は、監視テーブル940及び接続管理テーブル910を更新する(ステップS301、ステップS302)。具体的な更新処理については図16を用いて後述する。
なお、ネットワーク装置100−1は、LAN_IF130からIPパケットを受信しているため、ネットワーク装置100−1が属する拠点が移行元であることを認識できる。
ネットワーク装置100−1は、監視テーブル940を参照することによって、ライブマイグレーションの対象となるサーバ200間で送受信されるフレーム及びIPパケットを判別することができる。
ネットワーク装置100−2は、IPパケットを受信すると、移行先のサーバ200−3に当該IPパケットを転送する。このとき、ネットワーク装置100−2は、監視テーブル940を更新する(ステップS303)。具体的な更新処理については図21を用いて後述する。
ネットワーク装置100−2は、監視テーブル940を参照することによって、ライブマイグレーションの対象となるサーバ200間で送受信されるフレーム及びIPパケットを判別することができる。
なお、ネットワーク装置100−2は、WAN_IF160からIPパケットを受信しているため、ネットワーク装置100−2が属する拠点が移行先であることを認識できる。
サーバ200−3は、IPパケットを受信すると、VM3(400−3)に割り当てる記憶領域を確保するためにログイン処理を実行する(ステップS304〜ステップS308)。なお、ステップS304〜ステップS308の処理は、ステップS100〜ステップS104と同一の処理であるため説明を省略する。
ネットワーク装置100−2は、ログイン処理の完了後、接続管理テーブル910、及び変換テーブル950を更新する(ステップS309、ステップS310)。具体的な更新処理については図21を用いて後述する。
また、ネットワーク装置100−2は、新たに割り当てられた記録領域のブロックに対応するビットマップを生成する(ステップS311)。その後、ネットワーク装置100−2は、WAN600を介してDestination情報を含むIPパケットをネットワーク装置100−1に対して送信する(ステップS312)。
ネットワーク装置100−1は、Destination情報を含むIPパケットを受信すると、監視テーブル940及び接続管理テーブル910を更新する(ステップS313、ステップS314)。具体的な更新処理については図16を用いて後述する。
なお、Destination情報には、ステップS304〜ステップS308の処理によって取得されたサーバポート及びストレージポートが含まれる。
ライブマイグレーション処理では、ハイパバイザ250がメモリ220上で管理するVM3(400−3)の情報を、移行先のサーバ200−3に転送する(ステップS315)。なお、ライブマイグレーション処理は、公知の技術であるため説明を省略する。
なお、移行対象となるデータは、VM400のレジスタ情報及びメモリ120上に格納されるVM400の情報である。したがって、ストレージ300−1に格納される情報より容量が小さいため短時間で移行できる。
このとき、ストレージ300−1に格納される情報は、ストレージ300−3には移行されていない。
サーバ200−1は、ライブマイグレーション処理の完了後、PLOGOフレームをストレージ300−1に対して送信する(ステップS316)。これは、VM3(400−3)に割り当てられた記憶領域を開放するための処理である。
ネットワーク装置100−1は、PLOGOフレームを受信すると、接続管理テーブル910及び変換テーブル950を更新する(ステップS317、ステップS318)。具体的な更新処理については図16を用いて後述する。
ストレージ300−1には、VM3(400−3)が使用していたデータが格納されている。そこで、本実施形態では、当該ストレージ300−1に格納されるデータは、移行元の拠点500−1にそのまま残す。すなわち、移行元のストレージ300−1に格納されるデータは、移行先のストレージ300−3には移行されない。
ネットワーク装置100−1は、SAN800−1に含まれるスイッチにPLOGOフレームを転送せず、ストレージ300−1の代わりにACCフレームをサーバ200−1に対して送信する(ステップS319)。
これによって、サーバ200−1は、処理が正常に終了したものと認識する。一方、ストレージ300−1には、VM3(400−3)が使用していたデータがそのまま残ることとなる。
次に、ネットワーク装置100の処理について説明する。
図16は、本発明の実施形態のネットワーク装置100−1が実行する処理を説明するフローチャートである。
ネットワーク装置100−1は、ライブマイグレーション処理の開始メッセージを含むIPパケットを受信すると(ステップS400)、当該IPパケットを解析する。具体的には、以下のような処理が実行される。
ネットワーク装置100−1は、受信したIPパケットがFCIPパケットであるか否かを判定する。これは、IPパケットがFCIPパケットである場合には、フレームの転送処理が必要であるためである。ここでは、IPパケットがFCIPパケットではないと判定される。
ネットワーク装置100−1は、IPパケットから送信元のサーバ200−1のIPアドレス及び送信先のサーバ200−3のIPアドレスを取得する。
ここで、ネットワーク装置100−1は、LAN_IF130を介して当該IPパケットを受信しているため、ネットワーク装置100−1が属する拠点500−1が移行元であることが分かる。
以上がステップS400の処理である。
次に、ネットワーク装置100−1は、WAN600を介して受信したIPパケットをネットワーク装置100−2に転送する(ステップS401)。
ネットワーク装置100−1は、監視テーブル940に新たなエントリを追加する(ステップS402)。具体的には、以下のような処理が実行される。
ネットワーク装置100−1は、監視テーブル940にエントリを生成し、当該エントリのソース_IP941に取得されたサーバ200−1のIPアドレスを格納し、また、宛先_IP942に取得されたサーバ200−3のIPアドレスを格納する。
また、ネットワーク装置100−1は、生成されたエントリの属性943に「Source」を格納する。
ステップS402の処理が完了すると、監視テーブル940は図8Aに示すような状態になる。
以上がステップS402における更新処理である。
次に、ネットワーク装置100−1は、接続管理テーブル910を更新する(ステップS403)。具体的には、以下のような処理が実行される。
ネットワーク装置100−1は、監視テーブル940を参照し、サーバ管理テーブル930からサーバ_IP932がソース_IP941と一致するエントリを検索する。ネットワーク装置100−1は、検索されたエントリからサーバ_IF_ID931を取得する。
ネットワーク装置100−1は、接続管理テーブル910からサーバ_IF_ID911が取得されたサーバ_IF_ID931と一致するエントリを検索する。
ネットワーク装置100−1は、検索されたエントリの状態915が「no」であるか否かを判定する。
検索されたエントリの状態915が「no」であると判定された場合、ネットワーク装置100−1は、状態915を「実行中」に変更する。検索されたエントリの状態915が「no」でないと判定された場合、ネットワーク装置100−1は、状態915の変更を行わない。
図17は、ステップS403の処理が完了した後の接続管理テーブル910の状態を示す。
以上がステップS403の更新処理である。
ネットワーク装置100−1は、IPパケットを転送した後、ネットワーク装置100−2装置からの応答を待つ。
ネットワーク装置100−1は、Destination情報を含むIPパケットを受信すると(ステップS404)、変換テーブル950を更新する(ステップS405)。具体的には、以下のような処理が実行される。
ネットワーク装置100−1は、IPパケットがFCIPパケットであるか否かを判定する。ここでは、IPパケットはFCIPパケットではないと判定される。ネットワーク装置100−1は、Destination情報からサーバポート及びストレージポートの識別子を取得し、また、IPパケットから送信元のサーバ200−3のIPアドレスを取得する。
ネットワーク装置100−1は、変換テーブル950にエントリを生成し、生成されたエントリのサーバポート956、ストレージポート957に取得されたサーバポート及びストレージポートの識別子を格納する。また、ネットワーク装置100−1は、生成されたエントリの転送先_IP959に取得されたサーバ200−3のIPアドレスを格納する。
図18は、ステップS405の処理が完了した後の変換テーブル950の状態を示す。これによって、ネットワーク装置100−1は、データの転送先を特定できる。
以上がステップS405の更新処理である。
次に、ネットワーク装置100−1は、監視テーブル940から対応するエントリを削除する(ステップS406)。
具体的には、ネットワーク装置100−1は、監視テーブル940から宛先_IP942が取得されたサーバ200−3のIPアドレスと一致するエントリを検索する。ネットワーク装置100−1は、検索されたエントリを監視テーブル940から削除する。
ネットワーク装置100−1は、PLOGOフレームを受信すると(ステップS407)、接続管理テーブル910を更新する(ステップS408)。具体的には、以下のような処理が実行される。
ネットワーク装置100−1は、PLOGOフレームを受信したサーバ_IF140の識別子を特定する。さらに、ネットワーク装置100−1は、受信したPLOGOフレームを解析して、ストレージポートに対応するD_ID1120、及びサーバポートに対応するS_ID1130を取得する。
ネットワーク装置100−1は、接続管理テーブル910からサーバ_IF140の識別子、D_ID1120及びS_ID1130に一致するエントリを検索する。
ネットワーク装置100−1は、検索されたエントリの状態915を「実行中」から「Source」に変更する。
さらに、ネットワーク装置100−1は、接続管理テーブル910からサーバ_IF140の識別子に一致するエントリを検索する。なお、状態915が「Source」に変更されたエントリは検索処理からは除かれる。
ネットワーク装置100−1は、検索されたエントリの状態915を「実行中」から「no」に変更する。
図19は、ステップS408の処理が完了した後の接続管理テーブル910の状態を示す。
以上がステップS408の更新処理である。
次に、ネットワーク装置100−1は、変換テーブル950を更新する(ステップS409)。具体的には、以下のような処理が実行される。
ネットワーク装置100−1は、PLOGOフレームを解析し、D_ID1120、S_ID1130及びLUN1220を取得する。
次に、ネットワーク装置100−1は、ステップS405において生成したエントリのサーバポート953、ストレージポート954及びLUN955に取得されたS_ID1130、D_ID1120、及びLUN1220を格納する。
図20は、ステップS409の処理が完了した後の変換テーブル950の状態を示す。
以上がステップS409の更新処理である。
次に、ネットワーク装置100−1は、サーバ200−1にACCフレームを送信し(ステップS410)、処理を終了する。
図21は、本発明の実施形態のネットワーク装置100−2が実行する処理を説明するフローチャートである。
ネットワーク装置100−2は、ライブマイグレーションの開始メッセージを含むIPパケットを受信すると(ステップS420)、当該IPパケットを解析する。具体的には、以下のような処理が実行される。
ネットワーク装置100−2は、IPパケットがFCIPパケットであるか否かを判定する。ここでは、IPパケットはFCIPパケットではないと判定される。ネットワーク装置100−2は、IPパケットから送信元のサーバ200−1のIPアドレス及び送信先のサーバ200−3のIPアドレスを取得する。
ここで、ネットワーク装置100−2は、WAN_IF160を介して当該IPパケットを受信しているため、ネットワーク装置100−2が属する拠点500−2が移行先であることが分かる。
以上がステップS420の処理である。
次に、ネットワーク装置100−2は、LAN700−2を介して受信したIPパケットをサーバ200−3に転送する(ステップS421)。また、ネットワーク装置100−2は、監視テーブル940に新たなエントリを追加する(ステップS422)。具体的には、以下のような処理が実行される。
ネットワーク装置100−2は、監視テーブル940にエントリを生成し、当該エントリのソース_IP941にサーバ200−1のIPアドレスを格納し、また、宛先_IP942にサーバ200−3のIPアドレスを格納する。
また、ネットワーク装置100−2は、生成されたエントリの属性943に「Destination」を格納する。
ステップS422の処理が完了すると、監視テーブル940は図8Bに示すような状態になる。
以上がステップS422における更新処理である。
次に、ネットワーク装置100−2は、接続管理テーブル910を更新する(ステップS423)。具体的には、ネットワーク装置100−2は、図11及び図12に示す処理を実行する。
図22は、ステップS423の処理が完了した後の接続管理テーブル910の状態を示す。
ネットワーク装置100−2は、ビットマップを生成する(ステップS424)。このとき、当該ビットマップには一意な識別子が付与される。
ネットワーク装置100−2は、接続管理テーブル910及び変換テーブル950を更新する(ステップS425、ステップS426)。具体的には、以下のような処理が実行される。
ネットワーク装置100−2は、ステップS423において生成されたエントリのビットマップ_ID916にビットマップの識別子を格納し、当該エントリの状態915を「no」から「Destination」に変更する。
また、ネットワーク装置100−2は、接続管理テーブル910を参照して、ステップS423において生成されたエントリのサーバポート912及びストレージポート913を取得する。
ネットワーク装置100−2は、拠点接続管理テーブル920から、ネットワーク装置_IP922が監視テーブル940のソース_IP941と一致するエントリを検索する。ネットワーク装置100−2は、検索されたエントリのネットワーク装置_IP922を取得する。
ネットワーク装置100−2は、変換テーブル950に新たにエントリを生成し、生成されたエントリのサーバポート953及びストレージポート954に取得されたサーバポート912及びストレージポート913を格納する。
また、ネットワーク装置100−2は、生成されたエントリの転送先_IP959に、取得されたネットワーク装置_IP922を格納する。
図23は、ステップS425の処理が完了した後の接続管理テーブル910の状態を示す。図24は、ステップS426の処理が完了した後の変換テーブル950の状態を示す。
以上がステップS425、及びステップS426の更新処理である。
次に、ネットワーク装置100−2は、Destination情報を含むIPパケットをネットワーク装置100−1に送信し(ステップS427)、監視テーブル940から対応するエントリを削除して処理を終了する(ステップS428)。
具体的には、ネットワーク装置100−2は、監視テーブル940からIPパケットの送信先及び送信元のIPアドレスと一致するエントリを検索する。ネットワーク装置100−2は、検索されたエントリを監視テーブル940から削除する。
なお、ステップS426において、ネットワーク装置100−2は、ネットワーク装置100−1に問い合わせることによって、VM3(400−3)についての情報を取得してもよい。具体的には、ネットワーク装置100−2は、拠点500−1におけるサーバポート、ストレージポート及びLUNを取得する。
[ライブマイグレーション処理の完了後]
ライブマイグレーション処理が完了した後のネットワークシステムの処理について説明する。
図25A及び図25Bは、本発明の実施形態におけるライブマイグレーション処理後の処理の流れを説明するシーケンス図である。
まず、図25Aを用いてデータの書き込み処理について説明する。
サーバ200−3は、データの書き込みを示すFCP_CMNDフレームをストレージ300−3に対して送信する(ステップS500)。
ネットワーク装置100−2は、FCP_CMNDフレームを受信すると接続管理テーブル910を更新する(ステップS501)。
ネットワーク装置100−2は、受信したFCP_CMNDフレームをSAN800−2に含まれるスイッチに転送する。さらに、ネットワーク装置100−2は、同一のFCP_CMNDフレームをカプセル化してFCIPパケットに変換し、変換テーブル950を参照して、ネットワーク装置100−1に対して転送する(ステップS502)。
これは、移行される前に使用されていたストレージ300−1にも同一のデータを反映させるためである。
SAN800−2に含まれるスイッチは、FCP_CMNDフレームを受信すると、当該フレームをストレージ300−3に転送する。
ストレージ300−3は、FCP_CMNDフレームを受信すると、応答としてFCP_XFER_RDYフレームをサーバ200−3に対して送信する(ステップS503)。
SAN800−2に含まれるスイッチは、FCP_XFER_RDYフレームを受信すると、当該フレームをネットワーク装置100−2に転送する。ネットワーク装置100−2は、FCP_XFER_RDYフレームを受信すると、当該フレームを転送することなく移行元の拠点から送信されるFCP_XFER_RDYフレームを待つ。
これは、移行元のストレージ300−1にもデータを反映させるために、当該ストレージ300−1の書き込み許可を待つ必要があるためである。
一方、ネットワーク装置100−1は、FCIPパケットを受信すると、当該FCIPパケットをデカプセル化してFCP_CMNDフレームに変換し、当該フレームを解析して変換テーブル950を更新する(ステップS504)。
また、ネットワーク装置100−1は、変換されたFCP_CMNDフレームをストレージ300−1に対して転送する(ステップS505)。
SAN800−1に含まれるスイッチは、FCP_CMNDフレームを受信すると、当該フレームをストレージ300−1に転送する。
ストレージ300−1は、FCP_CMNDフレームを受信すると、ネットワーク装置100−1に対してFCP_XFER_RDYフレームを送信する(ステップS506)。
SAN800−1に含まれるスイッチは、FCP_XFER_RDYフレームを受信すると、当該フレームをネットワーク装置100−1に転送する。
ネットワーク装置100−1は、FCP_XFER_RDYフレームを受信すると、当該フレームをカプセル化してFCIPパケットに変換し、変換テーブル950を参照して当該FCIPパケットをネットワーク装置100−2に対して転送する(ステップS507)。
ネットワーク装置100−2は、FCIPパケットを受信すると、当該パケットをデカプセル化してフレームに変換する。ここで、ネットワーク装置100−2は、2つめのFCP_XFER_RDYフレームを受信したことを契機に、当該FCP_XFER_RDYフレームをサーバ200−3に転送する。
サーバ200−3は、FCP_XFER_RDYフレームを受信すると、書き込むデータを含むFCP_DATAフレームをストレージ300−3に対して送信する(ステップS508)。
ネットワーク装置100−2は、FCP_DATAフレームを受信すると、当該フレームをストレージ300−3に転送する。さらに、ネットワーク装置100−2は、同一のFCP_DATAフレームをカプセル化してFCIPパケットに変換し、変換テーブル950を参照して、ネットワーク装置100−1に対して転送する(ステップS509)。
SAN800−2に含まれるスイッチは、FCP_DATAフレームを受信すると、当該フレームをストレージ300−3に転送する。
ストレージ300−3は、FCP_DATAフレームを受信すると、応答としてFCP_RSPフレームをネットワーク装置100−2に対して送信する(ステップS510)。
SAN800−2に含まれるスイッチは、FCP_RSPフレームを受信すると、当該フレームをネットワーク装置100−2に転送する。ネットワーク装置100−2は、FCP_RSPフレームを受信すると、当該フレームを転送することなく移行元の拠点500から送信されるFCP_RSPフレームを待つ。
これは、移行元のストレージ300−1にもデータが反映されたことを確かめるためである。
一方、ネットワーク装置100−1は、FCIPパケットを受信すると、当該FCIPパケットをデカプセル化してFCP_DATAフレームに変換し、当該フレームをストレージ300−1に対して転送する(ステップS511)。
SAN800−1に含まれるスイッチは、FCP_DATAフレームを受信すると、当該フレームをストレージ300−1に転送する。
ストレージ300−1は、FCP_DATAフレームを受信すると、応答としてFCP_RSPフレームをネットワーク装置100−1に対して送信する(ステップS512)。
SAN800−1に含まれるスイッチは、FCP_RSPフレームを受信すると、当該フレームをネットワーク装置100−1に転送する。
ネットワーク装置100−1は、FCP_RSPフレームを受信すると、当該フレームをカプセル化してFCIPパケットに変換し、変換テーブル950を参照して当該FCIPパケットをネットワーク装置100−2に対して転送する(ステップS513)。
ネットワーク装置100−2は、FCIPパケットを受信すると、当該パケットをデカプセル化してフレームに変換する。ここで、ネットワーク装置100−2は、2つめのFCP_RSPフレームを受信したことを契機に、当該FCP_RSPフレームをサーバ200−3に転送する。
このとき、ネットワーク装置100−2は、ビットマップを更新し、データの書き込みを終了する(ステップS514)。具体的には、データが書き込まれたブロックに対応するビットが更新される。
次に、図25Bを用いてデータの読み出し処理について説明する。
まず、サーバ200−3は、データの読み出しを示すFCP_CMNDフレームをストレージ300−3に対して送信する(ステップS515)。
ネットワーク装置100−2は、FCP_CMNDフレームを受信すると、ビットマップを参照して対象となるデータがストレージ300−3に格納されるか否かを判定する。これは、ライブマイグレーション処理の実行直後では、ストレージ300−3にデータが格納されておらず、ストレージ300−1にデータが格納されているためである。
ここでは、ストレージ300−3に要求されたデータが格納されていない場合を想定する。したがって、ネットワーク装置100−2は、移行元の拠点からデータを取得するための処理を実行する。
ネットワーク装置100−2は、受信したFCP_CMNDフレームをカプセル化してFCIPパケットに変換し、変換テーブル950を参照して、変換されたFCIPパケットをネットワーク装置100−1に対して転送する。
ネットワーク装置100−1は、FCIPパケットを受信すると、当該パケットをデカプセル化してフレームに変換し、変換されたFCP_CMNDフレームをストレージ300−1に対して転送する(ステップS516)。
SAN800−1に含まれるスイッチは、FCP_CMNDフレームを受信すると、当該フレームをストレージ300−1に転送する。
ストレージ300−1は、FCP_CMNDフレームを受信すると、所定のデータを読み出し、読み出されたデータを含むFCP_DATAフレームをネットワーク装置100−1に対して送信する(ステップS517)。
SAN800−1に含まれるスイッチは、FCP_DATAフレームを受信すると、当該フレームをネットワーク装置100−1に転送する。
ネットワーク装置100−1は、FCP_DATAフレームを受信すると、当該フレームをカプセル化してFCIPパケットに変換し、変換テーブル950を参照して、変換されたFCIPパケットをネットワーク装置100−2に対して転送する(ステップS518)。
ネットワーク装置100−2は、FCIPパケットを受信すると、当該パケットをデカプセル化してフレームに変換し、変換テーブル950を参照して、FCP_DATAフレームをサーバ200−3に転送する。これによって、サーバ200−3から要求されたデータが読み出されたことになる。
また、このとき、ネットワーク装置100−2は、受信したFCP_RSPフレームを一時的にバッファリングする(ステップS519)。これは、移行元のストレージ300−1から読み出されたデータを移行先のストレージ300−3に反映させるためである。
一方、ストレージ300−1は、全てのデータが読み出されるとFCP_RSPフレームをネットワーク装置100−1に対して送信する(ステップS520)。
SAN800−1に含まれるスイッチは、FCP_RSPフレームを受信すると、当該フレームをネットワーク装置100−1に転送する。
ネットワーク装置100−1は、FCP_RSPフレームを受信すると、当該フレームをカプセル化してFCIPパケットに変換し、変換テーブル950を参照して、変換されたパケットをネットワーク装置100−2に対して転送する(ステップS521)。
ネットワーク装置100−2は、FCIPパケットを受信すると、当該パケットをデカプセル化してフレームに変換し、変換テーブル950を参照して、変換されたFCP_RSPフレームをサーバ200−3に転送する。
また、ネットワーク装置100−2は、FCP_RSPフレームの受信を契機に、バッファリングされたデータをストレージ300−3に書き込む。まず、ネットワーク装置100−2は、FCP_CMNDフレームをストレージ300−3に対して送信する(ステップS522)。
SAN800−2に含まれるスイッチは、FCP_CMNDフレームを受信すると、当該フレームをストレージ300−3に転送する。
ストレージ300−3は、FCP_CMNDフレームを受信すると、応答としてFCP_XFER_RDYフレームをネットワーク装置100−2に対して送信する(ステップS523)。
SAN800−2に含まれるスイッチは、FCP_XFER_RDYフレームを受信すると、当該フレームをネットワーク装置100−2に転送する。
ネットワーク装置100−2は、FCP_XFER_RDYフレームを受信すると、バッファリングされたデータを含むFCP_DATAフレームをサーバ200−3に対して送信する(ステップS524)。
SAN800−2に含まれるスイッチは、FCP_DATAフレームを受信すると、当該フレームをストレージ300−3に転送する。
ストレージ300−3は、FCP_CMNDフレームを受信し、全てのデータが書き込まれると、応答としてFCP_RSPフレームをネットワーク装置100−2に対して送信する(ステップS525)。
SAN800−2に含まれるスイッチは、FCP_RSPフレームを受信すると、当該フレームをネットワーク装置100−2に転送する。
ネットワーク装置100−2は、FCP_RSPフレームを受信すると、ビットマップを更新する(ステップS526)。
以上の処理によって、移行元のストレージ300−1から読み出されたデータは、移行先のストレージ300−3に反映されるため、以後同一のデータは、ストレージ300−3から読み出されこととなる。具体的には以下のような処理になる。
サーバ200−3は、データの読み出しを示すFCP_CMNDフレームをストレージ300−3に対して送信する(ステップS527)。
ネットワーク装置100−2は、FCP_CMNDフレームを受信すると、ビットマップを参照して対象となるデータがストレージ300−3に格納されるか否かを判定する。ここでは、ストレージ300−3に対象となるデータが格納されるものと想定する。
ネットワーク装置100−2は、受信したFCP_CMNDフレームをストレージ300−3に対して転送する。
SAN800−2に含まれるスイッチは、FCP_CMNDフレームを受信すると、当該フレームをストレージ300−3に転送する。
ストレージ300−3は、FCP_CMNDフレームを受信すると、所定のデータを読み出し、読み出されたデータを含むFCP_DATAフレームをサーバ200−3に対して送信する(ステップS528)。
SAN800−2に含まれるスイッチは、FCP_DATAフレームを受信すると、当該フレームをネットワーク装置100−2に転送する。
ネットワーク装置100−2は、FCP_DATAフレームを受信すると、当該フレームをサーバ200−3に転送する。
ストレージ300−2は、全てのデータが読み出されるとFCP_RSPフレームをサーバ200−3に対して送信する(ステップS529)。
SAN800−2に含まれるスイッチは、FCP_RSPフレームを受信すると、当該フレームをネットワーク装置100−2に転送する。
ネットワーク装置100−2は、FCP_RSPフレームを受信すると、当該FCP_RSPフレームをサーバ200−3に転送して処理を終了する。
前述のような処理によってVM400は、移行先と移行元のストレージの共有が可能となる。
すなわち、ライブマイグレーション処理後において、ネットワーク装置100は、読み出し要求を受けると、移行先の拠点500、すなわち自拠点500のストレージ300に存在するデータについては自拠点500のストレージ300から読み出し、自拠点500のストレージ300に存在しないデータについては移行元の拠点500のストレージ300から読み出すように制御する。これによって、移行元のストレージ300に格納されたデータを移行先でも共有することが可能となる。
また、ネットワーク装置100は、一度読み出されたデータを自拠点500のストレージ300に書き込みことによって、同一データを高速に読み出せるようにする。
一方、ネットワーク装置100は、書き込み要求を受けると、自拠点500のストレージ300及び他の拠点のストレージ300の両方にデータを書き込むように制御する。これによって、移行先のストレージ300における更新データが、移行元のストレージ300にも反映されるため、データの整合性を保つことができる。
次に、ネットワーク装置100の処理について説明する。
図26及び図27は、本発明の実施形態のネットワーク装置100−2が実行する処理を説明するフローチャートである。
図26は、図25Aに示すシーケンス図におけるネットワーク装置100−2の処理の流れを示す。図27は、図25Bに示すシーケンス図におけるネットワーク装置100−2の処理の流れを示す。
まず、図26を用いて書き込み処理について説明する。
ネットワーク装置100−2は、サーバ200−3からデータの書き込みを示すFCP_CMNDフレームを受信すると、FCP_CMNDフレームを解析する。具体的には以下のような処理が実行される。
まず、ネットワーク装置100−2は、FCP_CMNDフレームを受信したサーバ_IF140を特定し、特定されたサーバ_IF140の識別子を取得する。また、ネットワーク装置100−2は、FCP_CMNDフレームを解析して、D_ID1120、及びS_ID1130を取得する。
ネットワーク装置100−2は、接続管理テーブル910から、取得されたサーバ_IF140の識別子、D_ID1120、及びS_ID1130に一致するエントリを検索する。
ネットワーク装置100−2は、検索されたエントリの状態915が「no」であるか否かを判定する。ここでは、エントリの状態915が「Destination」であるため、検索されたエントリの状態915が「no」でないと判定される。
また、エントリの状態915が「Destination」であるため、ネットワーク装置100−2は、移行元及び移行先のストレージ300にフレームを転送する必要があると判定する。
なお、ネットワーク装置100−2は、解析結果として、CDB1230の情報も合わせて取得する。
次に、ネットワーク装置100−2は、当該FCP_CMNDフレームをSAN800−2に含まれるスイッチに転送する(ステップS601)。また、ネットワーク装置100−2は、接続管理テーブル910を参照してLUNが登録されているか否かを判定する(ステップS602)。ステップS602の処理はステップ222と同一であるため説明を省略する。
LUNが登録させていると判定された場合、ネットワーク装置100は、ステップS604に進む。
LUNが登録されていないと判定された場合、ネットワーク装置100は、対応するエントリのLUN914にLUNを格納する(ステップS603)。なお、ステップS603の処理は、ステップS223と同一であるため説明を省略する。
ネットワーク装置100−2は、FCP_CMNDフレームをカプセル化してFCIPパケットに変換し、当該FCIPパケットをネットワーク装置100−1に対して転送する(ステップS604)。具体的には、以下のような処理が実行される。
ネットワーク装置100−2は、変換テーブル950から、サーバポート953及びストレージポート954が、取得されたS_ID1130及びD_ID1120と一致するエントリを検索する。ネットワーク装置100−2は、検索されたエントリの転送先_IP959を取得する。
ネットワーク装置100−2は、取得された転送先_IP959のIPアドレスを宛先としてIPヘッダに含め、当該IPヘッダを付与することによってFCP_CMNDフレームをFCIPパケットに変換する。
ネットワーク装置100−2は、変換されたFCIPパケットをネットワーク装置100−1に転送する。ここでは、ネットワーク装置100−1のIPアドレス「200.1.2.1」宛にFCIPパケットが転送される。
以上がステップS604の処理である。
次に、ネットワーク装置100−2は、ストレージ300−3及びストレージ300−1から送信されるFCP_XFER_RDYフレームを待つ(ステップS605)。
ネットワーク装置100−2は、ストレージ300−3及びストレージ300−1のそれぞれからFCP_XFER_RDYフレームを受信すると、接続管理テーブル910を参照して、FCP_XFER_RDYフレームをサーバ200−3に転送する(ステップS606)。具体的には以下のような処理が実行される。
まず、ネットワーク装置100−2は、ネットワーク装置100−1から受信したFCIPパケットをデカプセル化してFCP_XFER_RDYフレームに変換する。
ネットワーク装置100−2は、変換されたFCP_XFER_RDYフレームを解析してD_ID1120及びS_ID1130を取得する。
ネットワーク装置100−2は、接続管理テーブル910から、サーバポート912及びストレージポート911が、取得されたS_ID1130及びD_ID1120と一致するエントリを検索する。ネットワーク装置100−2は、検索されたエントリのサーバ_IF_ID911を取得する。
ネットワーク装置100−2は、取得されたサーバ_IF_ID911に対応するサーバ_IF140を特定し、当該サーバ_IF140に接続されるサーバ200−3にFCP_XFER_RDYフレームを転送する。
以上がステップS606の処理である。
次に、ネットワーク装置100−2は、FCP_DATAフレームを受信すると(ステップS607)、転送する必要があるか否かを判定する。具体的には、ステップS600と同一の処理が実行される。ここでは、エントリの状態915が「Destination」であるため、転送する必要があると判定される。
したがって、ネットワーク装置100−2は、FCP_DATAフレームをSAN800−2に含まれるスイッチ、及び、ネットワーク装置100−2に転送する(ステップS608)。なお、ステップS608の処理は、ステップS601及びステップS604と同一であるため説明を省略する。
ネットワーク装置100−2は、ストレージ300−3及びストレージ300−1からFCP_RSPフレームを受信するまで待つ(ステップS609)。
ネットワーク装置100−2は、ストレージ300−3及びストレージ300−1のそれぞれからFCP_RSPフレームを受信すると、接続管理テーブル910を参照してFCP_RSPフレームをサーバ200−3に転送する(ステップS610)。なお、ステップS610の処理は、ステップS606と同一であるため説明を省略する。
ネットワーク装置100−2は、ビットマップを更新し(ステップS611)、処理を終了する。具体的には以下のような処理が実行される。
ネットワーク装置100−2は、ステップS600において取得されたCDB1230のLBA1232及びTransfer_length1233に基づいて、データが書き込まれた領域を特定する。
ネットワーク装置100−2は、特定された領域のブロックに対応するビットにチェックを入れる。
以上がステップS611の処理である。
次に、図27を用いて読み出し処理について説明する。
ネットワーク装置100−2は、サーバ200−3からデータの読み出しを示すFCP_CMNDフレームを受信すると、読み出しの対象となるデータがストレージ300−3に格納されているか否かを判定する(ステップS620)。具体的には以下のような処理が実行される。
まず、ネットワーク装置100−2は、FCP_CMNDフレームを受信したサーバ_IF140を特定し、特定されたサーバ_IF140の識別子を取得する。また、ネットワーク装置100−2は、FCP_CMNDフレームを解析して、D_ID1120、及びS_ID1130を取得する。
ネットワーク装置100−2は、接続管理テーブル910から、取得されたサーバ_IF140の識別子、D_ID1120、及びS_ID1130に一致するエントリを検索する。
ネットワーク装置100−2は、検索されたエントリの状態915が「no」であるか否かを判定する。ここでは、エントリの状態915が「Destination」であるため、検索されたエントリの状態915が「no」でないと判定される。
ネットワーク装置100−2は、エントリの状態915が「Destination」であるため、移行先のストレージ300−3にデータが格納されているか判定する。
まず、ネットワーク装置100−2は、検索されたエントリのビットマップ_ID916から識別子を参照して、対応するビットマップを取得する。
ネットワーク装置100−2は、FCP_CMNDフレームから、LBA1232及びTransfer_length1233を取得する。ネットワーク装置100−2は、取得されたLBA1232及びTransfer_length1233に基づいて読み出し対象のブロックを特定する。
ネットワーク装置100−2は、取得されたビットマップを参照して、特定されたブロックに対応するビットのすべてにチェックがあるか否かを判定する。
対応するビットのすべてにチェックがある場合、ネットワーク装置100−2は、読み出し対象となるデータがストレージ300−3に格納されていると判定する。一方、一以上のビットにチェックがない場合、読み出し対象となるデータがストレージ300−3に格納されていないと判定される。
以上がステップS620の処理である。
読み出しの対象となるデータがストレージ300−3に格納されていないと判定された場合、ネットワーク装置100−2は、変換テーブル950を参照し、FCP_CMNDフレームをカプセル化したFCIPパケットをネットワーク装置100−1に対して送信する(ステップS621)。
これは、移行前のVM3(400−3)が使用していたストレージ300−1からデータを取得するためである。なお、FCIPパケットの変換及び送信先の決定方法は、ステップS604と同一であるため説明を省略する。
ネットワーク装置100−2は、ネットワーク装置100−1から送信されるFCP_DATAフレームの受信を待つ。
ネットワーク装置100−2は、FCP_DATAフレームがカプセル化されたFCIPパケットを受信すると(ステップS622)、当該FCIPパケットをデカプセル化してFCP_DATAフレームに変換する。
ネットワーク装置100−2は、変換テーブル950を参照して、サーバ200−3に変換されたFCP_DATAフレームを転送する(ステップS623)。また、ネットワーク装置100−2は、FCP_DATAフレームをメモリ120上にバッファリングする(ステップS624)。なお、FCP_DATAフレームの転送方法は、ステップS606と同一であるため説明を省略する。
ネットワーク装置100−2は、読み出されたデータをストレージ300−3に反映させるため、書き込みを示すFCP_CMNDフレームをストレージ300−3に送信する(ステップS625)。なお、ネットワーク装置100−2は、ステップS624の検索結果を用いることによって転送先のストレージ300−3を特定できる。
ネットワーク装置100−2は、ストレージ300−3からFCP_XFER_RDYフレームを受信すると(ステップS626)、バッファリングされたFCP_DATAフレームをストレージ300−3に送信する(ステップS627)。
ネットワーク装置100−2は、ストレージ300−3からFCP_RSPフレームを受信すると(ステップS628)、ビットマップを更新し(ステップS629)、処理を終了する。具体的には、データが反映されたブロックに対応するビットが更新される。なお、更新するビットの特定方法は、ステップS611と同一の方法を用いればよい。
ステップS620において、読み出しの対象となるデータがストレージ300−3に格納されていると判定された場合、ネットワーク装置100−2は、接続管理テーブル910を参照して、FCP_CMNDフレームをストレージ300−3に転送する(ステップS630)。
ネットワーク装置100−2は、ストレージ300−3からFCP_DATAフレームを受信すると(ステップS631)、接続管理テーブル910を参照して、サーバ200−3に受信したFCP_DATAフレームを転送する(ステップS632)。
ネットワーク装置100−2は、ストレージ300−3からFCP_RSPフレームを受信すると(ステップS633)、接続管理テーブル910を参照して、サーバ200−3に受信したFCP_RSPフレームを転送し(ステップS634)、処理を終了する。
図28は、本発明の実施形態におけるネットワーク装置100−1が実行する処理を説明するフローチャートである。
図28では、図25A及び図25Bに示すシーケンス図におけるネットワーク装置100−1の処理の流れを示す。
ネットワーク装置100−1は、ネットワーク装置100−2からIPパケットを受信すると(ステップS700)、FCP_CMNDフレームがカプセル化されたIPパケットであるか否かを判定する(ステップS701)。
具体的には、ネットワーク装置100−1は、FCIPパケットをデカプセル化してフレームに変換し、変換されたフレームがFCP_CMNDフレームであるか否かを判定する。なお、ネットワーク装置100−2は、IPヘッダから送り先のIPアドレスを取得する。
FCP_CMNDフレームでないと判定された場合、ネットワーク装置100−1は、ステップS704に進む。
FCP_CMNDフレームであると判定された場合、ネットワーク装置100−1は、当該フレームの転送先のLUNが変換テーブル950に登録されているか否かを判定する(ステップS702)。具体的には以下のような処理が実行される。
ネットワーク装置100−1は、FCP_CMNDフレームを解析して、S_ID1130、D_ID1120を取得する。
ネットワーク装置100−1は、変換テーブル950の転送先952を参照して、取得されたIPアドレス、S_ID1130及びD_ID1120情報と一致するエントリを検索する。
ネットワーク装置100−1は、検索されたエントリのLUN958にLUNが格納されているか否かを判定する。
検索されたエントリのLUN958にLUNが格納されている場合には、転送先のLUNが変換テーブル950に登録されていると判定される。
以上がステップS702の処理である。
転送先のLUNが変換テーブル950に登録されていると判定された場合、ネットワーク装置100−1は、ステップS704に進む。
転送先のLUNが変換テーブル950に登録されていていないと判定された場合、ネットワーク装置100−1は、対応するエントリのLUN958に、FCP_CMNDフレームのLUN1220を格納する(ステップS703)。
ネットワーク装置100−1は、変換テーブル950を参照して、FCP_CMNDフレームを変換する(ステップS704)。具体的には、以下のような処理を実行する。
ネットワーク装置100−1は、FCP_CMNDフレームを解析して、変換テーブル950の転送先952を参照して、対応するエントリを検索する。なお、検索方法はステップS702と同一の方法であるため説明を省略する。
ネットワーク装置100−1は、対応するエントリのサーバポート953、ストレージポート954、及びLUN955を取得する。
ネットワーク装置100−1は、FCP_CMNDフレームのS_ID1130の値を、取得されたストレージポート954の値に変換する。ネットワーク装置100−1は、FCP_CMNDフレームのD_ID1120の値を、取得されたサーバポート953の値に変換する。さらに、ネットワーク装置100−1は、FCP_CMNDフレームのLUN1220の値を、取得されたLUN955の値に変換する。
以上がステップS704の処理である。
ネットワーク装置100−1は、変換されたFCP_DATAフレームをSAN800−1に含まれるスイッチに転送し(ステップS705)、処理を終了する。
図29は、本発明の実施形態におけるネットワーク装置100−1が実行する処理を説明するフローチャートである。
図29では、図25A及び図25Bに示すシーケンス図におけるネットワーク装置100−1の処理の流れを示す。
ネットワーク装置100−1は、SAN800−1に含まれるスイッチからフレームを受信すると(ステップS710)、フレームを解析して転送する必要があるか否かを判定する。なお、判定処理はステップS600と同一である。ここでは、転送する必要があると判定されたものとする。
ネットワーク装置100−2は、変換テーブル950を参照して受信したフレームをFCIPパケットに変換する(ステップS711)。具体的には以下のような処理が実行される。
ネットワーク装置100−1は、受信したフレームを解析して、S_ID1130及びD_ID1120を取得する。ネットワーク装置100−1は、変換テーブル950の転送元951を参照して、取得されたS_ID1130及びD_ID1120と一致するエントリを検索する。
ネットワーク装置100−1は、検索されたエントリからサーバポート956、ストレージポート957、及び転送先_IP959を取得する。
ネットワーク装置100−1は、受信したフレームのS_ID1130に取得されたストレージポート957の値を格納し、また、D_ID1120に取得されたサーバポート956を格納する。
さらに、ネットワーク装置100−1は、受信したフレームをカプセル化してFCIPパケットに変換し、当該FCIPパケットの送信先のアドレスに取得された転送先_IP959を格納する。
以上がステップS711の処理である。
ネットワーク装置100−1は、変換されたFCIPパケットをネットワーク装置100−2に転送し(ステップS712)、処理を終了する。
[元のサーバへVMを移行する場合の処理]
次に、再度、移行元にVM400に移行させるライブマイグレーション処理について説明する。
図30A及び30Bは、本発明の実施形態におけるライブマイグレーション実行後に再度実行されるライブマイグレーション処理の流れを説明するシーケンス図である。
サーバ200−3は、VM3(400−3)のライブマイグレーションの開始メッセージを含むIPパケットをサーバ200−1に対して送信する(ステップS800)。当該IPパケットには、移行元としてサーバ200−3のIPアドレスが格納され、また移行先としてサーバ200−1のIPアドレスが格納される。
ネットワーク装置100−2は、WAN600を介して受信したIPパケットをネットワーク装置100−1に転送する。このとき、ネットワーク装置100−2は、監視テーブル940及び接続管理テーブル910を更新する(ステップS801、ステップS802)。具体的な更新処理については図31を用いて後述する。
なお、ネットワーク装置100−2は、LAN_IF130からIPパケットを受信しているため、ネットワーク装置100−2が属する拠点が移行元であることを認識できる。
ネットワーク装置100−2は、監視テーブル940を参照することによって、ライブマイグレーションの対象となるサーバ200間で送受信されるフレーム及びIPパケットを判別することができる。
ネットワーク装置100−1は、IPパケットを受信すると、移行先のサーバ200−1に当該IPパケットを転送する。このとき、ネットワーク装置100−1は、監視テーブル940を更新する(ステップS803)。具体的な更新処理については図33を用いて後述する。
ネットワーク装置100−1は、監視テーブル940を参照することによって、ライブマイグレーションの対象となるサーバ200間で送受信されるフレーム及びIPパケットを判別することができる。
なお、ネットワーク装置100−1は、WAN_IF160からIPパケットを受信しているため、ネットワーク装置100−1が属する拠点が移行先であることを認識できる。
サーバ200−1は、IPパケットを受信すると、VM3(400−3)に割り当てる記憶領域を確保するためにPLOGIフレームをネットワーク装置100−1に送信する(ステップS804)。なお、PLOGIフレームのS_ID1130には、移行前のVM3(400−3)が使用していたポートアドレスが含まれ、PLOGIフレームのD_ID1120には移行前のVM3(400−3)が使用していたストレージポートが格納される。ハイパバイザ250は、マイグレーション前にログインしていたストレージ300の情報を保持しており、当該情報を用いてログイン処理が実行される。
ネットワーク装置100−1は、PLOGIフレームを受信すると、ACCフレームをサーバ200−1に送信する(ステップS805)。このとき、ネットワーク装置100−2は、PLOGIフレームを解析することによって、移行前のVM3(400−3)に割り当てられていたストレージ300−1が存在することを認識できる。
また、ネットワーク装置100−1は、接続管理テーブル910、及び変換テーブル950を更新する(ステップS806、S807)。具体的な更新処理については図33を用いて後述する。
ネットワーク装置100−1は、WAN600を介して切り戻し通知を含むIPパケットをネットワーク装置100−2に対して送信する(ステップS808)。また、ネットワーク装置100−1は、監視テーブル940を更新する(ステップS809)。
ネットワーク装置100−2は、切り戻し通知を含むIPパケットを受信すると、接続管理テーブル910、変換テーブル950、及び監視テーブル940を更新する(ステップS810、ステップS812、ステップS813)。具体的な更新処理については図31を用いて後述する。
また、ネットワーク装置100−2は、ビットマップを削除する(ステップS811)。
その後、ライブマイグレーション処理が実行される(ステップS814)。ライブマイグレーション処理では、ハイパバイザ250がメモリ220上で管理するVM3(400−3)の情報を、移行先のサーバ200−1に転送する。なお、ライブマイグレーション処理は、公知の技術であるため説明を省略する。当該処理によって、VM3(400−3)が、サーバ200−1からサーバ200−3に瞬時に移行される。
サーバ200−2は、ライブマイグレーション処理の完了後、PLOGOフレームをストレージ300−1に対して送信する(ステップS815)。これは、VM3(400−3)に割り当てられた記憶領域を開放するための処理である。
ネットワーク装置100−1は、PLOGOフレームを受信すると、当該フレームをストレージ300−3に転送する。
ストレージ300−3は、PLOGOフレームを受信すると、ACCフレームをサーバ200−1に対して送信する(ステップS816)。
ネットワーク装置100−1は、ACCフレームを受信すると、接続管理テーブル910を更新し(ステップS817)、当該フレームをサーバ200−3に転送する。
なお、ステップS815、ステップS816、及びステップS817の処理は、ステップS103、ステップS104、及びステップS105と同一の処理であるため説明を省略する。
次に、ネットワーク装置100の処理について説明する。
図31は、本発明の実施形態のネットワーク装置100−2が実行する処理を説明するフローチャートである。
ネットワーク装置100−2は、ライブマイグレーションの開始メッセージを含むIPパケットを受信すると(ステップS900)、当該IPパケットを解析する。具体的には、ネットワーク装置100−1は、IPパケットから送信元のサーバ200−3のIPアドレス及び送信先のサーバ200−1のIPアドレスを取得する。
ここで、ネットワーク装置100−2は、LAN_IF130を介して当該IPパケットを受信しているため、ネットワーク装置100−2が属する拠点500−2が移行元であることが分かる。
ネットワーク装置100−2は、WAN600を介して受信したIPパケットをネットワーク装置100−1に転送する(ステップS901)。
ネットワーク装置100−2は、監視テーブル940に新たなエントリを追加する(ステップS902)。具体的には、以下のような処理が実行される。
ネットワーク装置100−2は、監視テーブル940にエントリを生成し、当該エントリのソース_IP941に取得されたサーバ200−3のIPアドレスを格納し、また、宛先_IP942に取得されたサーバ200−1のIPアドレスを格納する。
また、ネットワーク装置100−2は、生成されたエントリの属性943に「Source」を格納する。
図32は、ステップS902の処理が完了した後の監視テーブル940の状態を示す。
以上がステップS902における更新処理である。
次に、ネットワーク装置100−1は、接続管理テーブル910を更新する(ステップS903)。具体的には、以下のような処理が実行される。
ネットワーク装置100−2は、サーバ管理テーブル930からサーバ_IP932がソース_IP941と一致するエントリを検索する。ネットワーク装置100−1は、検索されたエントリからサーバ_IF_ID931を取得する。
ネットワーク装置100−1は、接続管理テーブル910からサーバ_IF_ID911が取得されたサーバ_IF_ID931と一致するエントリを検索する。
ネットワーク装置100−1は、検索されたエントリの状態915が「no」であるか否かを判定する。
検索されたエントリの状態915が「no」であると判定された場合、ネットワーク装置100−1は、状態915を「実行中」に変更する。検索されたエントリの状態915が「no」でないと判定された場合、ネットワーク装置100−1は、状態915の変更を行わない。
以上がステップS903の更新処理である。
ネットワーク装置100−2は、IPパケットを転送した後、ネットワーク装置100−1装置からの応答を待つ。
ネットワーク装置100−2は、切り戻し通知を含むIPパケットを受信すると(ステップS904)、接続管理テーブル910を更新する(ステップS905)。具体的には、以下のような処理が実行される。
ネットワーク装置100−2は、IPパケットを解析して、宛先のIPアドレス、サーバポート、ストレージポート、及びLUNを取得する。
ネットワーク装置100−2は、サーバ管理テーブル930から、サーバ_IP932が取得されたIPアドレスと一致するエントリを検索する。ネットワーク装置100−2は、検索されたエントリからサーバ_IF_ID931を取得する。
ネットワーク装置100−2は、接続管理テーブル910から、取得されたサーバ_IF_ID931、サーバポート、ストレージポート、及びLUNと一致するエントリを検索する。さらに、ネットワーク装置100−2は、検索されたエントリの中から状態915を「Destination」であるエントリを検索する。
ネットワーク装置100−2は、検索されたエントリの状態915を「Destination」から「no」に変更し、また、ビットマップ_ID916から識別子を削除する。
以上がステップS905の更新処理である。
次に、ネットワーク装置100−2は、ビットマップ_ID916と対応するビットマップを削除する(ステップS906)。
ネットワーク装置100−2は、変換テーブル950から対応するエントリを削除する(ステップS907)。具体的には以下のような処理が実行される。
ネットワーク装置100−2は、変換テーブル950の転送元951を参照して、取得されたサーバポート、ストレージポート、及びLUNと一致するエントリを検索する。
ネットワーク装置100−2は、検索されたエントリを変換テーブル950から削除する。
以上がステップS906の処理である。
次に、ネットワーク装置100−2は、監視テーブル940から対応するエントリを削除する(ステップS908)。その後、ネットワーク装置100−2は、PLOGOフレームを待つ。
ネットワーク装置100−2は、PLOGOフレームを受信すると、ログアウト処理を実行し、処理を終了する(ステップS909)。なお、ログアウト処理は、図14と同一の処理であるため説明を省略する。
移行元に再度移行させる場合、移行先のストレージ300に格納されるデータは移行されない。これは、ネットワーク装置100が、移行元のストレージ300にも同様の更新データが反映することによって、移行先のストレージに格納されるデータとの整合性が保たれているためである。したがって、移行先のデータを移行させる必要がない。
図33は、本発明の実施形態のネットワーク装置100−1が実行する処理を説明するフローチャートである。
ネットワーク装置100−1は、ライブマイグレーションの開始メッセージを含むIPパケットを受信すると(ステップS920)、当該IPパケットを解析する。具体的には、ネットワーク装置100−1は、IPパケットから送信元のサーバ200−3のIPアドレス及び送信先のサーバ200−1のIPアドレスを取得する。
ここで、ネットワーク装置100−1は、WAN_IF160を介して当該IPパケットを受信しているため、ネットワーク装置100−2が属する拠点500−2が移行先であることが分かる。
ネットワーク装置100−1は、LAN700−1を介して受信したIPパケットをサーバ200−1に転送する(ステップS921)。
ネットワーク装置100−1は、監視テーブル940に新たなエントリを追加する(ステップS922)。具体的には、以下のような処理が実行される。
ネットワーク装置100−1は、監視テーブル940にエントリを生成し、当該エントリのソース_IP941に取得されたサーバ200−3のIPアドレスを格納し、また、宛先_IP942に取得されたサーバ200−1のIPアドレスを格納する。
また、ネットワーク装置100−2は、生成されたエントリの属性943に「Destination」を格納する。
図34は、ステップS922の処理が完了した後の監視テーブル940の状態を示す。
以上がステップS922における更新処理である。その後、ネットワーク装置100−1は、PLOGIフレームを待つ。
ネットワーク装置100−1は、PLOGIフレームを受信すると(ステップS923)、接続管理テーブル910を更新する(ステップS924)。具体的には以下のような処理が実行される。
ネットワーク装置100−1は、PLOGIフレームを解析して、サーバポート、ストレージポート、及びLUNを取得する。
ネットワーク装置100−1は、接続管理テーブル910から、取得されたサーバポート、ストレージポート、及びLUNと一致するエントリを検索する。ネットワーク装置100−1は、検索されたエントリの状態915が「no」であるか否かを判定する。
検索されたエントリの状態915が「no」である場合は通常のログイン処理(図12)が実行される。一方、エントリの状態915が「Source」であると判定された場合、ネットワーク装置100−1は、状態915を「Source」から「no」に変更し、ログイン処理を行わずにACCフレームを送信することになる。
なお、ここでは、状態915が「Source」であるため、検索されたエントリの状態915が「no」でないと判定される。
以上がステップS924の処理である。
次に、ネットワーク装置100−1は、ACCフレームをサーバ200−1に送信する(ステップS925)。ここでは、VM3(400−3)に割り当てられていたストレージ300−1をそのまま用いるため、PLOGIフレームはストレージ300−1に転送されない。すなわち、通常のログイン処理を省略できる。
ネットワーク装置100−1は、変換テーブル950から対応するエントリを削除する(ステップS926)。具体的には以下のような処理が実行される。
ネットワーク装置100−2は、変換テーブル950を参照して、取得されたストレージポート、及びサーバ200−1のIPアドレスと一致するエントリを検索する。
ネットワーク装置100−2は、検索されたエントリを変換テーブル950から削除す
る。
以上がステップS926の処理である。
次に、ネットワーク装置100−1は、切り戻し通知を含むIPパケットをネットワーク装置100−2に対して送信する(ステップS927)。なお、切り戻し通知には、サーバポート912及びストレージポート913が含まれる。
ネットワーク装置100−1は、監視テーブル940から対応するエントリを削除し(ステップS928)、処理を終了する。
なお本実施形態におけるフローチャートを用いて説明した処理の順番は、整合性が保たれる範囲で入れ替え可能である。例えば、フレームの転送処理と、接続管理テーブル910の更新処理とは入れ替えることができる。
本発明の一形態によれば、ライブマイグレーション処理に伴って、ネットワーク装置100が、移行先のVM400が移行元のストレージ300にアクセスできるように制御できるため、物理的に離れた拠点間のライブマイグレーション処理を実現できる。
また、本実施形態におけるライブマイグレーション処理では、ストレージ300に格納されたデータは移行させないため、瞬時にVM400を移行することができる。また、予めストレージ300のデータを移行先のストレージに反映する必要がないため、ネットワーク負荷をかけることがない。
また、ネットワーク装置100が、移行先のストレージ300において更新されたデータを移行元のストレージにも反映することによって、元のサーバ200にVM400を移行させた後もデータとの整合性が保たれる。
また、移行後のVM400からのアクセス要求に対して、ネットワーク装置100が移行元のストレージ300及び移行先のストレージ300にアクセスできるように制御しているため、既存のハイパバイザ250の構成を変更する必要がない。また、ハイパバイザ250の処理負荷をあげることなくライブマイグレーション処理が実現できる。
[変形例]
ネットワーク装置100−1が、VM400とストレージ300との間のアクセス処理を実行していたが、ハイパバイザ250が同様の処理を実行してもよい。具体的には、ハイパバイザ250が、アクセス処理部900、接続管理テーブル910、拠点接続管理テーブル920、サーバ管理テーブル930、監視テーブル940、及び変換テーブル950を備えていてもよい。
なお、ハイパバイザ250は、アクセス処理に必要な情報をネットワーク装置100に問い合わせることによって取得でき、当該情報を用いて同様の処理を実現できる。
また、ネットワークシステムにアクセス処理部900を備える計算機を備える構成でもよい。この場合、アクセス処理部900を備える計算機が、各拠点のネットワーク装置100から必要な情報を取得することによって、同様の処理が実現できる。