JPWO2012176278A1 - 情報処理装置、仮想マシン制御方法およびプログラム - Google Patents

情報処理装置、仮想マシン制御方法およびプログラム Download PDF

Info

Publication number
JPWO2012176278A1
JPWO2012176278A1 JP2013521358A JP2013521358A JPWO2012176278A1 JP WO2012176278 A1 JPWO2012176278 A1 JP WO2012176278A1 JP 2013521358 A JP2013521358 A JP 2013521358A JP 2013521358 A JP2013521358 A JP 2013521358A JP WO2012176278 A1 JPWO2012176278 A1 JP WO2012176278A1
Authority
JP
Japan
Prior art keywords
virtual
adapter
interface
control unit
virtual machine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2013521358A
Other languages
English (en)
Inventor
宮内 啓次
啓次 宮内
堀内 俊宏
俊宏 堀内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013521358A priority Critical patent/JPWO2012176278A1/ja
Publication of JPWO2012176278A1 publication Critical patent/JPWO2012176278A1/ja
Pending legal-status Critical Current

Links

Images

Abstract

情報処理装置が備えるインタフェース部の保守を円滑に行うことができる。記憶部(1e)は、インタフェース部(1c,1d)のうち仮想マシン(1a,1b)がアクセスに用いるインタフェース部(1c)を示す情報を記憶する。制御部(1f)は、仮想マシン(1a)においてインタフェース部(1c)を用いたアクセスにエラーが発生すると、記憶部(1e)を参照して、インタフェース部(1c)を用いる仮想マシン(1b)を判定する。制御部(1f)は、仮想マシン(1b)が用いるインタフェース部を、インタフェース部(1c)から情報処理装置(1)に搭載したインタフェース部(1d)に切り換える。

Description

本発明は情報処理装置、仮想マシン制御方法およびプログラムに関する。
現在、情報処理の分野では、物理的なコンピュータ(物理マシンや物理ホストと呼ぶことがある)上で、複数の仮想的なコンピュータ(仮想マシンや論理ホストと呼ぶことがある)を動作させる仮想化技術が利用されている。各仮想マシン上では、オペレーティングシステム(OS:Operating System)などのソフトウェアを実行できる。仮想化技術を利用する物理マシンは、複数の仮想マシンを管理するためのソフトウェアを実行する。
例えば、ハイパーバイザと呼ばれるソフトウェアが、CPU(Central Processing Unit)の処理能力やRAM(Random Access Memory)の記憶領域を、演算のリソースとして複数の仮想マシンに割り振る。また、例えば、ハイパーバイザが、NIC(Network Interface Card)やHBA(Host Bus Adapter)などのインタフェース部の処理能力を、通信のリソースとして複数の仮想マシンに割り振ることがある。仮想マシンは、自身に割り振られた通信のリソースを用いて、インタフェース部を介してデバイスにアクセスできる。
なお、CPUに接続されるホストアダプタと記憶装置に接続されるディスクアダプタと共通バスとを二重化し、障害発生時に縮退運転できるようにした記憶システムが提案されている。また、複数のアダプタを含むアダプタブロックを二重化し、一方のアダプタブロック内の1つのアダプタが故障すると、アダプタブロック単位で使用するアダプタを切り換える情報処理装置が提案されている。また、複数の仮想マシンが1つのHBAを共用するとき、障害回数の多い仮想マシンのI/O(Input/Output)要求を遮断することで他の仮想マシンのI/O要求への影響を抑制する仮想計算機システムが提案されている。
特開2004−303256号公報 特開平10−312301号公報 特開2009−294758号公報
ところで、上記のように、複数の仮想マシンが動作する情報処理装置では、デバイスへのアクセスのため2以上の仮想マシンが1つのインタフェース部を共用することがある。このとき、1つの仮想マシンで当該インタフェース部を用いたアクセスにエラーが発生しても、他の仮想マシンではエラーが発生しない場合が生じ得る。例えば、インタフェース部が備えるメモリ領域などのリソースを分割して2以上の仮想マシンに割り振った場合、ある仮想マシンに割り振ったメモリ領域のみに障害が発生することが考えられる。
しかし、1つのインタフェース部を共用する2以上の仮想マシンの一部のみでエラーが検出された場合に、インタフェース部の保守が容易でないという問題がある。例えば、各仮想マシンは、情報処理が互いに干渉しないよう他の仮想マシンから分離されていることが多く、自身がエラーを検出しない限り、他の仮想マシンでのエラーの検出状況にかかわらず当該インタフェース部を使用し続ける可能性がある。この状態では、エラーが検出されたインタフェース部の停止や交換などの保守を円滑に行えないおそれがある。
本発明はこのような点に鑑みてなされたものであり、情報処理装置が備えるインタフェース部の保守を円滑に行うことができる情報処理装置、仮想マシン制御方法およびプログラムを提供することを目的とする。
複数の仮想マシンが動作可能であり複数の仮想マシンからデバイスへのアクセスに用いられる複数のインタフェース部を搭載可能な情報処理装置が提供される。この情報処理装置は、記憶部と制御部とを有する。記憶部は、複数のインタフェース部のうち複数の仮想マシンそれぞれがアクセスに用いるインタフェース部を示す情報を記憶する。制御部は、第1の仮想マシンにおいて第1のインタフェース部を用いたアクセスにエラーが発生すると、記憶部を参照して、第1のインタフェース部を用いる第2の仮想マシンを判定し、第2の仮想マシンが用いるインタフェース部を、第1のインタフェース部から情報処理装置に搭載した第2のインタフェース部に切り換える。
また、複数の仮想マシンが動作可能であり複数の仮想マシンからデバイスへのアクセスに用いられる複数のインタフェース部を搭載可能な情報処理装置、または、情報処理装置と通信する他の情報処理装置が実行する仮想マシン制御方法が提供される。この仮想マシン制御方法では、第1の仮想マシンにおいて第1のインタフェース部を用いたアクセスにエラーが発生したことを検知する。複数のインタフェース部のうち複数の仮想マシンそれぞれがアクセスに用いるインタフェース部を示す情報を記憶する記憶装置を参照して、第1のインタフェース部を用いる第2の仮想マシンを判定する。第2の仮想マシンが用いるインタフェース部を、第1のインタフェース部から情報処理装置に搭載した第2のインタフェース部に切り換える。
また、複数の仮想マシンが動作可能であり複数の仮想マシンからデバイスへのアクセスに用いられる複数のインタフェース部を搭載可能なコンピュータを制御するためのプログラムが提供される。このプログラムは、コンピュータまたはコンピュータと通信する他のコンピュータに、以下の処理を実行させる。第1の仮想マシンにおいて第1のインタフェース部を用いたアクセスにエラーが発生したことを検知する。複数のインタフェース部のうち複数の仮想マシンそれぞれがアクセスに用いるインタフェース部を示す情報を記憶する記憶装置を参照して、第1のインタフェース部を用いる第2の仮想マシンを判定する。第2の仮想マシンが用いるインタフェース部を、第1のインタフェース部からコンピュータに搭載した第2のインタフェース部に切り換える。
上記情報処理装置、仮想マシン制御方法およびプログラムによれば、情報処理装置が備えるインタフェース部の保守を円滑に行うことができる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
第1の実施の形態の情報処理装置を示す図である。 第2の実施の形態の情報処理システムの全体構成を示す図である。 第2の実施の形態のサーバ装置のハードウェア例を示す図である。 第2の実施の形態のFCスイッチ装置のハードウェア例を示す図である。 第2の実施の形態のストレージ装置のハードウェア例を示す図である。 仮想マシンの配置例を示す図である。 ハードウェアの割当例を示すブロック図である。 第2の実施の形態のサーバ装置の機能を示すブロック図である。 接続構成管理テーブルの例を示す図である。 冗長グループ管理テーブルの例を示す図である。 第2の実施の形態の障害検知時の全体処理を示すフローチャートである。 第2の実施の形態の障害検知時の全体処理を示すシーケンス図である。 第2の実施の形態の物理アダプタ追加処理を示すフローチャートである。 第2の実施の形態の物理アダプタ追加処理を示すシーケンス図である。 第2の実施の形態の接続先装置追加処理を示すフローチャートである。 第2の実施の形態の接続先装置追加処理を示すシーケンス図である。 第2の実施の形態のアダプタ切り換え処理を示すフローチャートである。 第3の実施の形態のサーバ装置の機能を示すブロック図である。 第4の実施の形態の管理端末装置の機能を示すブロック図である。 第4の実施の形態の障害検知時の全体処理を示すシーケンス図である。 第5の実施の形態のFCスイッチ装置の機能を示すブロック図である。 第5の実施の形態の障害検知時の全体処理を示すシーケンス図である。 第6の実施の形態のストレージ装置の機能を示すブロック図である。 第6の実施の形態の障害検知時の全体処理を示すシーケンス図である。 第7の実施の形態のサーバ装置の機能を示すブロック図である。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理装置を示す図である。第1の実施の形態の情報処理装置1では、仮想マシン1a,1bを含む複数の仮想マシンが動作可能である。また、情報処理装置1には、当該複数の仮想マシンからデバイス2へのアクセスに用いられる、インタフェース部1c,1dを含む複数のインタフェース部を搭載可能である。デバイス2は、例えば、通信装置、ストレージ装置、他の情報処理装置などである。情報処理装置1は、インタフェース部1c,1d、記憶部1eおよび制御部1fを有する。
インタフェース部1c,1dは、信号処理を行い、仮想マシン1a,1bからデバイス2へのアクセスに用いられる。インタフェース部1c,1dは、NICやHBAなどのアダプタとして実装してもよい。インタフェース部1c,1dとデバイス2とは、ケーブルで直接接続されてもよいし、スイッチなどの中継装置を介して接続されてもよい。なお、インタフェース部1dは、インタフェース部1cが故障したときに使用される予備のものでもよく、インタフェース部1cが故障した後に情報処理装置1に追加されてもよい。
記憶部1eは、情報処理装置1に搭載可能な複数のインタフェース部のうち、複数の仮想マシンそれぞれがアクセスに用いるインタフェース部を示す情報を記憶する。記憶部1eは、不揮発NVRAM(Non Volatile RAM)やRAM、HDD(Hard Disk Drive)として実装してもよい。なお、第1の実施の形態では、インタフェース部1c,1dが正常に動作しているとき、仮想マシン1a,1bはインタフェース部1cを用いてデバイス2にアクセスするものとする。
制御部1fは、情報処理装置1で動作する複数の仮想マシンへのインタフェース部1c,1dの割り当てを制御する。制御部1fは、CPUとRAMを用いて実行されるプログラムとして実装してもよく、ハイパーバイザ内のモジュールとして実装してもよい。制御部1fは、仮想マシン1aにおいてインタフェース部1cを用いたアクセスにエラーが発生したことを検知する。すると、制御部1fは、記憶部1eを参照して、仮想マシン1aの他にインタフェース部1cを用いる仮想マシン1bを検索する。そして、仮想マシン1bが用いるインタフェース部を、インタフェース部1cからインタフェース部1dに切り換える。制御部1fは、仮想マシン1aが用いるインタフェース部も併せて、インタフェース部1cからインタフェース部1dに切り換えてもよい。
ここで、制御部1fは、インタフェース部1cが備える複数のリソース(例えば、複数のメモリ領域など)のうち、第1のリソースを仮想マシン1aに割り当て、第2のリソースを仮想マシン1bに割り当ててもよい。仮想マシン1aにおいて第1のリソースを用いたアクセスにエラーが発生すると、制御部1fは、第2のリソースについてエラーが発生していなくても、仮想マシン1bが用いるインタフェース部を切り換えることができる。
また、制御部1fは、仮想マシン1bがデバイス2にアクセス中でないタイミングで、インタフェース部1dへの切り換えが行われるように制御してもよい。そのため、制御部1fは、仮想マシン1bがアクセス中であるか否かを示す情報を記憶部1eに格納して、アクセス状態を管理してもよい。また、制御部1fは、インタフェース部1cを用いてアクセス可能であったデバイスに、インタフェース部1dを用いてアクセス可能であることが確認されてから、インタフェース部1dへの切り換えが行われるよう制御してもよい。また、制御部1fは、仮想マシン1aからの通知に基づいて、仮想マシン1aにおいてインタフェース部1cを用いたアクセスにエラーが発生したことを検知してもよい。
なお、第1の実施の形態では、記憶部1eおよび制御部1fを、仮想マシン1a,1bが動作する情報処理装置1に設けたが、情報処理装置1と通信する他の装置に設けてもよい。例えば、情報処理装置1と通信する通信装置、ストレージ装置、コンピュータなどが記憶部1eおよび制御部1fを備え、情報処理装置1を制御してもよい。また、記憶部1eは、情報処理装置1(または、制御部1fを備える他の装置)の外部に設けてもよい。
第1の実施の形態の情報処理装置1によれば、仮想マシン1aにおいてインタフェース部1cを用いたアクセスにエラーが発生したことが検知される。複数のインタフェース部のうち複数の仮想マシンそれぞれがアクセスに用いるインタフェース部を示す情報を記憶する記憶部1eが参照されて、エラーが発生したインタフェース部1cを用いる仮想マシン1bが判定される。判定された仮想マシン1bの用いるインタフェース部が、インタフェース部1cからインタフェース部1dに切り換えられる。
これにより、複数の仮想マシンが動作可能な情報処理装置1におけるインタフェース部1c,1dの保守を円滑に行うことができる。例えば、仮想マシン1aでインタフェース部1cについてのエラーが検出されると、インタフェース部1cを共用する仮想マシン1bでエラーが検出されなくても、仮想マシン1bの使用するインタフェース部が切り換えられる。よって、インタフェース部1cは、エラーを認識した仮想マシン1aに加えて仮想マシン1bからも使用されなくなり、停止させて情報処理装置1から取り外すことが容易となる。また、情報処理装置1には複数のインタフェース部を搭載でき、仮想マシン1bを停止させずにインタフェース部1cを交換することが可能となる。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムの全体構成を示す図である。この情報処理システムは、サーバ装置100、FC(FC:Fibre Channel)スイッチ装置200、ストレージ装置300および管理端末装置400を含む。サーバ装置100は、ネットワーク10に接続されている。
サーバ装置100は、複数の仮想マシンが動作可能なサーバコンピュータである。サーバ装置100は、複数の仮想マシンの起動や停止を管理する。サーバ装置100は、ネットワーク10を介して、ネットワーク10に接続されたクライアント装置で仮想マシンの機能を利用可能とする。
FCスイッチ装置200は、FC用の複数のインタフェースを備え、各インタフェース間を中継する通信経路切り換え機である。FCスイッチ装置200は、サーバ装置100およびストレージ装置300の間のデータ通信を中継する。サーバ装置100とFCスイッチ装置200との間の通信は、FCによる通信の他にも、I2C(Inter Integrated Circuit)やLAN(Local Area Network)などを介して行える。
ストレージ装置300は、サーバ装置100が利用するデータやプログラムを記憶する記憶装置である。ストレージ装置300は、サーバ装置100の要求に応じて、自身が記憶する各種のデータをサーバ装置100に送信する。ストレージ装置300は、サーバ装置100の接続先装置の一例である。
管理端末装置400は、管理者が操作するコンピュータである。管理端末装置400は、サーバ装置100に接続されている。管理端末装置400は、管理者がサーバ装置100に対する指示を入力するためのものである。
図3は、第2の実施の形態のサーバ装置のハードウェア例を示す図である。サーバ装置100は、CPUボード101、クロスバースイッチ102、PCI Express(Peripheral Component Interconnect Express)コントローラ103、SAS(Serial Attached SCSI(Small Computer System Interface))インタフェース104、HDD105、FCインタフェース106,106a、ネットワークインタフェース107、SVP(SerVice Processor)108およびディスクドライブ109を有する。
CPUボード101は、CPUやメモリを備えた情報処理部である。CPUボード101は、CPU111、RAM112およびNVRAM113を有する。
CPU111は、ハイパーバイザのプログラム、OSプログラムおよびアプリケーションプログラムを実行して、仮想マシンや当該仮想マシン上のアプリケーションを実現する演算装置である。なお、CPUボード101は複数のCPUを備えてもよい。
RAM112は、CPU111が実行するハイパーバイザのプログラム、OSプログラムおよびアプリケーションプログラムの少なくとも一部を一時的に記憶する揮発性の記憶装置である。なお、CPUボード101は複数のRAMを備えてもよい。
NVRAM113は、ハイパーバイザの処理に用いるデータを記憶する不揮発性の記憶装置である。なお、CPUボード101は複数のNVRAMを備えてもよい。
また、サーバ装置100は、複数のCPUボードを備えてもよい。
クロスバースイッチ102は、CPUボード101、PCI Expressコントローラ103の間のデータ通信を中継する。
PCI Expressコントローラ103は、クロスバースイッチ102とSASインタフェース104、FCインタフェース106,106aおよびネットワークインタフェース107との間のデータ通信を制御する。
SASインタフェース104は、HDD105とディスクドライブ109に接続され、HDD105とディスクドライブ109に対するデータの入出力を制御する。ディスクドライブ109は、SATA(Serial ATA)プロトコルをカプセリングして入出力制御してもよい。
HDD105は、ハイパーバイザのプログラムやハイパーバイザの処理に用いられるデータを記憶する不揮発性の記憶装置である。HDD105は、CPU111の命令に従って、内蔵の磁気ディスクに対する読み書きを行う。なお、サーバ装置100は、HDD以外の不揮発性の記憶装置(例えば、SSD(Solid State Drive))を備えていてもよく、複数の記憶装置を備えてもよい。また、CPUボード101で実行するハイパーバイザのプログラムをNVRAM113に格納してもよい。
FCインタフェース106,106aは、FCスイッチ装置200と接続され、FCスイッチ装置200との間のデータ通信を制御するHBAである。FCインタフェース106,106aは、当該制御を行う制御装置を有している。
ネットワークインタフェース107は、ネットワーク10と接続され、ネットワーク10を介した他の装置とのデータ通信を制御する。
SVP108は、サーバ装置100を管理するための装置である。SVP108は、サーバ装置のCPUボード101、クロスバースイッチ102、PCI Expressコントローラ103とI2Cなどで接続される。SVP108は、管理端末装置400に接続される。SVP108は、サーバ装置100を管理するためのGUI(Graphical User Interface)を管理端末装置400に表示させる。管理者は、管理端末装置400で当該GUIを操作してサーバ装置100に対する指示を行える。
ディスクドライブ109は、記録媒体12に記録されたプログラムやデータを読み取る駆動装置である。記録媒体12として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。ディスクドライブ109は、例えば、CPU111の命令に従って、記録媒体12から読み取ったプログラムやデータをRAM112またはHDD105に格納する。
なお、管理端末装置400も、サーバ装置100と同様に、CPU、ROM、RAM、HDD、ネットワークインタフェースおよびディスクドライブなどを有する。管理端末装置400上のCPUが、所定のプログラムを実行することで、管理端末装置400の機能が実現される。
図4は、第2の実施の形態のFCスイッチ装置のハードウェア例を示す図である。FCスイッチ装置200は、ルーティングコントローラ201、メモリ202、SVP203、クロスバースイッチ204、I/F(InterFace)コントローラ205,205a,205b,205c,205d,205e、バッファ206,206a,206b,206c,206d,206eおよびポート207,207a,207b,207c,207d,207eを有する。
なお、以下ではI/Fコントローラ205、バッファ206およびポート207について説明するが、I/Fコントローラ205a,205b,205c,205d,205e、バッファ206a,206b,206c,206d,206eおよびポート207a,207b,207c,207d,207eに関しても同様である。
ルーティングコントローラ201は、複数のSAN(Storage Area Network)間でのデータ通信を制御する。
メモリ202は、ルーティングコントローラ201の処理に用いるデータを記憶する。例えば、SAN間を接続するためのルーティングテーブルやFCのゾーン設定の情報を記憶する。ここで、ゾーンとは、FCスイッチ装置200内の通信パスを分割して、トラフィックを分離するものである。
SVP203は、FCスイッチ装置200を管理するための装置である。SVP203は、FCスイッチ装置200上の各種の管理機能(例えば、通信の障害管理や電源管理)を担う。SVP203は、FCスイッチ装置200を管理するための管理端末装置(不図示)と接続されてもよい。その場合、SVP203は、当該管理端末装置に管理用のGUIを表示させることができる。管理者は、当該GUIを操作して、FCスイッチ装置200に指示を入力することもできる。また、SVP203は、当該SVP203の処理に用いるプログラムやデータを格納するためのメモリを有している。これらプログラムやデータをメモリ202に格納してもよい。
クロスバースイッチ204は、各ポートを介した装置間のデータ通信を中継する。
I/Fコントローラ205は、各ポート間のデータの流れを制御する。
バッファ206は、データの流れを制御するためにデータを一時的に格納するための記憶領域である。
ポート207は、外部の装置と接続するためのアダプタである。ポート207は、FCケーブルを介してサーバ装置100と接続されている。ポート207cは、FCケーブルを介してストレージ装置300と接続されている。ポート207dは、FCケーブルを介してストレージ装置300と接続されている。
図5は、第2の実施の形態のストレージ装置のハードウェア例を示す図である。ストレージ装置300は、RAID(Redundant Arrays of Inexpensive Disks)制御部301、ストレージ部302、I/Fコントローラ303,303a、SVP304を有する。
RAID制御部301は、RAIDを実現するための装置である。RAID制御部301は、ストレージ部302に設けられた複数のHDDを論理的な1つの記憶装置として、サーバ装置100上の仮想マシンから利用可能にする。RAID制御部301は、制御ボード310,310a、I/Fコントローラ320,320a、バッファ330,330aおよびポート340,340aを有する。
制御ボード310,310aは、ポート340,340aごとに設けられている。制御ボード310,310aは、ポート340,340aを介してサーバ装置100から受けたリクエストに応じて、ストレージ部302にアクセスし、データの読み書きを行う。制御ボード310は、CPU311、メモリ312およびPCI Expressコントローラ313を有する。
CPU311は、制御ボード310の処理を制御する。
メモリ312は、CPU311の処理に用いるデータを記憶する。
PCI Expressコントローラ313は、I/Fコントローラ303を介してストレージ部302に接続する。PCI Expressコントローラ313は、I/Fコントローラ320に接続する。PCI Expressコントローラ313は、インタフェース間の通信を中継する。
制御ボード310aは、CPU311a、メモリ312aおよびPCI Expressコントローラ313aを有する。CPU311a、メモリ312aおよびPCI Expressコントローラ313aは、CPU311、メモリ312およびPCI Expressコントローラ313に対応する。
I/Fコントローラ320は、ポート340から入力、あるいはポート340に出力するデータの流れを制御する。I/Fコントローラ320aも同様に、ポート340aとの間のデータの流れを制御する。
バッファ330は、I/Fコントローラ320およびポート340の間のデータの流れを制御する。バッファ330aも同様に、I/Fコントローラ320aおよびポート340aの間のデータの流れを制御する。
ポート340は、外部の装置と接続するためのアダプタである。ポート340は、FCケーブルを介してFCスイッチ装置200のポート207cと接続されている。ポート340aは、FCケーブルを介してFCスイッチ装置200のポート207dに接続されている。
ストレージ部302は、I/Fスイッチ350,350aおよびHDD351,351a,352,352a,353,353aを有する。
I/Fスイッチ350,350aは、制御ボード310,310aがアクセスするHDDとI/Fコントローラ303,303aの通信制御を行う。
HDD351,351a,352,352a,353,353aは、CPU311,311aの命令に従って、内蔵の磁気ディスクに対する読み書きを行う。HDD351,352,353は、I/Fスイッチ350に接続されている。HDD351a,352a,353aは、I/Fスイッチ350aに接続されている。なお、ストレージ部302は、HDD以外の不揮発性の記憶装置(例えば、SSD)を備えていてもよい。
I/Fコントローラ303,303aは、RAID制御部301とストレージ部302との間のデータ通信を中継する。I/Fコントローラ303は、PCI Expressコントローラ313およびI/Fスイッチ350,350aと接続される。I/Fコントローラ303aは、PCI Expressコントローラ313aおよびI/Fスイッチ350,350aと接続される。
SVP304は、ストレージ装置300を管理するための装置である。SVP304は、ストレージ装置300上の各種の機能(例えば、ディスクの障害管理や電源管理など)を担う。SVP304は、ストレージ装置300を管理するための管理端末装置(不図示)と接続されてもよい。その場合、SVP304は、当該管理端末装置に管理用のGUIを表示させることができる。管理者は、当該GUIを操作して、ストレージ装置300に指示を入力することもできる。また、SVP304は、当該SVP304の処理に用いるプログラムやデータを格納するためのメモリを有している。
図6は、仮想マシンの配置例を示す図である。サーバ装置100は、ハードウェア120、ハイパーバイザ140および仮想マシン150,150aを有する。
ハードウェア120は、サーバ装置100が備える物理的なリソースである。ハードウェア120は、CPUボード101、PCI Expressコントローラ103、SASインタフェース104、HDD105、FCインタフェース106,106a、ネットワークインタフェース107およびディスクドライブ109を含む。
ハイパーバイザ140は、仮想マシンを実現する。ハイパーバイザ140は、各仮想マシンに対するハードウェア120の割り当てを行い、各仮想マシンの起動・停止を制御する。また、ハイパーバイザ140は、各仮想マシンがハードウェア120を共同で利用できるよう各仮想マシンのハードウェア120へのアクセスを調停する。更に、ハイパーバイザ140は各仮想マシンに割り当てたハードウェア120の使用状況を監視する。
仮想マシン150,150aは、ハイパーバイザ140によりサーバ装置100上に実現された仮想マシンである。仮想マシン150,150aは、それぞれ独立のOSを実行している。仮想マシン150,150aが実行するOSはそれぞれ同一でもよいし、異なっていてもよい。また、サーバ装置100は3以上の仮想マシンを実行してもよい。
図7は、ハードウェアの割当例を示すブロック図である。仮想マシン150,150aはサーバ装置100上のハードウェア120を論理的に分割したリソースにより実現される。図7ではハードウェア120に含まれる主要なものとして、CPU111、RAM112およびFCインタフェース106を示している。
CPU111は、CPUリソースl1,l2,l3,l4に時分割される。CPU111は、領域分割してもよい。例えば、CPUリソースl1,l2は仮想マシン150に割り当てられ、CPUリソースl3,l4は仮想マシン150aに割り当てられる。
RAM112は、RAMリソースm1,m2に領域分割される。例えば、RAMリソースm1が仮想マシン150に割り当てられ、RAMリソースm2が仮想マシン150aに割り当てられる。
FCインタフェース106は、FCインタフェースリソースn1,n2に分割される。例えば、FCインタフェースリソースn1,n2には、FCインタフェース106上の制御装置の処理能力を時分割したリソースが含まれる。また、例えば、FCインタフェースリソースn1,n2には、バッファ用に確保されたFCインタフェース106上の物理的なメモリを領域分割したリソースが含まれる。例えば、FCインタフェースリソースn1が仮想マシン150に割り当てられ、FCインタフェースリソースn2が仮想マシン150aに割り当てられる。FCインタフェース106を物理HBAとすれば、FCインタフェースリソースn1,n2は当該物理HBA上で実現される仮想HBAである。
図8は、第2の実施の形態のサーバ装置の機能を示すブロック図である。サーバ装置100は、管理情報記憶部130、ハイパーバイザ140、仮想マシン150,150aおよび仮想アダプタ160,160a,160b,160cを有する。
管理情報記憶部130、ハイパーバイザ140および仮想マシン150,150aの機能は、CPU111が所定のプログラムを実行することによりサーバ装置100上に実現される。また、仮想アダプタ160,160aの機能は、FCインタフェース106上の制御装置が所定のプログラムを実行することによりFCインタフェース106上に実現される。更に、仮想アダプタ160b,160cの機能は、FCインタフェース106a上の制御装置が所定のプログラムを実行することにより、FCインタフェース106a上に実現される。ただし、これらのユニットの全部または一部を専用のハードウェアにより実現してもよい。
管理情報記憶部130は、管理情報を記憶する。管理情報には、接続構成管理テーブルおよび冗長グループ管理テーブルが含まれる。接続構成管理テーブルは、仮想マシンと仮想アダプタとの対応関係を管理するためのデータである。冗長グループ管理テーブルは、複数の仮想アダプタを束ねた冗長グループを管理するためのデータである。
ハイパーバイザ140は、制御部141を有する。制御部141は、仮想マシン150,150aの通信パスを制御する。制御部141は、仮想マシンからFCインタフェースを介した通信で障害が発生した旨の通知を受ける。すると、制御部141は、管理情報記憶部130を参照して、当該FCインタフェースを用いて通信する他の仮想マシンを特定する。制御部141は、特定した他の仮想マシンを他のインタフェースに割り当てる。
仮想マシン150は、OS151、アダプタドライバ152、冗長パス制御部153および接続先装置ドライバ154を有する。
OS151は、仮想マシン150上で動作する基本プログラムである。
アダプタドライバ152は、OS151上から仮想アダプタを利用するためのソフトウェアである。
冗長パス制御部153は、仮想アダプタを冗長化して、仮想マシン150における通信路の信頼性を向上するソフトウェアである。冗長パス制御部153は、複数の仮想アダプタを現用系と待機系とに区別して管理する。冗長パス制御部153は、現用系の仮想アダプタで故障が発生して仮想マシン150が通信不能となった場合に、仮想マシン150が利用する仮想アダプタを待機系に切り換える。また、冗長パス制御部153は、現用系の仮想アダプタで故障を検知していなくても、制御部141からアダプタの切り換え指示を受けると、仮想マシン150が利用するアダプタを待機系に切り換える。
接続先装置ドライバ154は、仮想マシン150上からストレージ装置300を利用するためのドライバソフトウェアである。
また、仮想マシン150aは、OS151a、アダプタドライバ152a、冗長パス制御部153aおよび接続先装置ドライバ154aを有する。OS151a、アダプタドライバ152a、冗長パス制御部153aおよび接続先装置ドライバ154aは、OS151、アダプタドライバ152、冗長パス制御部153および接続先装置ドライバ154にそれぞれ対応する。
仮想アダプタ160,160a,160b,160cは、FCインタフェース106,106a上のリソースにより実現されたデータ通信用の仮想的なアダプタである。
図9は、接続構成管理テーブルの例を示す図である。接続構成管理テーブル131には、スロット、物理アダプタ、仮想アダプタ、仮想マシンID(IDentifier)、仮想ポートNo.、接続先WWN(World Wide Name)およびゾーンの項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、仮想マシンと仮想アダプタとの1つの対応関係を示す。
スロットの項目には、物理アダプタが搭載されているPCIのPCIスロットIDが設定される。
物理アダプタの項目には、物理アダプタの情報が設定される。物理アダプタの項目には、デバイスパス、インスタンスNo.、VID(Vendor ID)およびDID(Device ID)の項目が設けられている。デバイスパスの項目には、物理アダプタにアクセスするためのデバイスパス情報が設定される。インスタンスNo.の項目には、物理アダプタのファンクション識別番号(物理ポート番号)が設定される。物理アダプタのファンクション識別番号に対して複数の物理ポートを持つ場合は、インスタンスNo.に加えて物理ポート番号を管理してもよい。VIDの項目には、当該物理アダプタを製造したベンダを識別するためのVIDが設定される。VIDは同一ベンダであれば同一のIDとなる。DIDの項目には、当該物理アダプタのデバイス(機能)を識別するためのDIDが設定される。DIDはサーバ装置100内で物理アダプタを一意に識別するためのIDである。仮想アダプタの項目には、仮想アダプタの情報が設定される。仮想アダプタの項目には、デバイスパス、インスタンスNo.(仮想アダプタのファンクションに割り当てる識別番号)、VIDおよびDIDの項目が設けられている。これらの項目の設定内容は、上述した物理アダプタの情報の設定内容と同様である。更に、SVID(Sub Vendor ID)、SDID(Sub Device ID)を用いてもよい。
仮想マシンIDの項目には、当該仮想アダプタに対応付けられた仮想マシンのIDが設定される。仮想ポートNo.の項目には、物理アダプタ上の仮想ポートの識別番号が設定される。接続先WWNの項目には、接続先ストレージ装置のFCインタフェースのWWNが設定される。ゾーンの項目には、FCスイッチ装置200上の何れのゾーンに属するかが、当該ゾーンのIDにより指定される。
例えば、接続構成管理テーブル131には、各仮想マシンと各FCインタフェース上の仮想アダプタとについて、次のような対応関係が設定される。
(1)仮想マシン150と仮想アダプタ160の対応関係。
(2)仮想マシン150aと仮想アダプタ160aの対応関係。
(3)仮想マシン150と仮想アダプタ160bの対応関係。
(4)仮想マシン150aと仮想アダプタ160cの対応関係。
具体的には、次の通りである。
(1)の対応関係に関して、接続構成管理テーブル131には、スロットが“0”、物理アダプタにつき、デバイスパスが“/pci@0/pci@0/fibre−channel@0”、インスタンスNo.が“0”、VIDが“10CF”、DIDが“0001”、仮想アダプタにつき、デバイスパスが“/pci@0/pci@0/pci@0/fibre−channel@0”、インスタンスNo.が“0”、VIDが“10CF”、DIDが“0001”、仮想マシンIDが“0”、仮想ポートNo.が“00”、接続先WWNが“xxyy01”およびゾーンが“Zone0”という情報が設定される。
これは、FCインタフェース106は、PCIスロット“0”に接続されており、FCインタフェース106のデバイスパス、インスタンスNo.、VID、DIDが上記設定であることを示している。また、仮想アダプタ160のデバイスパス、ポートNo.、VID、DIDが上記設定であることを示している。また、仮想アダプタ160に対して、仮想マシン150(仮想マシンID“0”)が対応付けられている。更に、FCインタフェース106において仮想ポートNo.“00”の仮想ポートが割り当てられていることを示す。当該仮想アダプタを介した接続先装置のWWNとして、“xxyy01”が指定されていることを示す。また、仮想アダプタ160による通信経路はFCスイッチ装置200が管理するゾーンのうちの“Zone0”に属することを示す。
(2)の対応関係に関して、接続構成管理テーブル131には、スロットが“0”、物理アダプタにつき、デバイスパスが“/pci@0/pci@0/fibre−channel@0”、インスタンスNo.が“0”、VIDが“10CF”、DIDが“0001”、仮想アダプタにつき、デバイスパスが“/pci@0/pci@0/pci@0/fibre−channel@1”、インスタンスNo.が“1”、VIDが“10CF”、DIDが“0001”、仮想マシンIDが“1”、仮想ポートNo.が“01”、接続先WWNが“xxyy02”およびゾーンが“Zone1”という情報が設定される。
(3)の対応関係に関して、接続構成管理テーブル131には、スロットが“1”、物理アダプタにつき、デバイスパスが“/pci@1/pci@0/fibre−channel@0”、インスタンスNo.が“1”、VIDが“10CF”、DIDが“0001”、仮想アダプタにつき、デバイスパスが“/pci@1/pci@0/pci@0/fibre−channel@2”、インスタンスNo.が“2”、VIDが“10CF”、DIDが“0001”、仮想マシンIDが“0”、仮想ポートNo.が“10”、接続先WWNが“xxyy01”およびゾーンが“Zone0”という情報が設定される。
(4)の対応関係に関して、接続構成管理テーブル131には、スロットが“1”、物理アダプタにつき、デバイスパスが“/pci@1/pci@0/fibre−channel@0”、インスタンスNo.が“1”、VIDが“10CF”、DIDが“0001”、仮想アダプタにつき、デバイスパスが“/pci@1/pci@0/pci@0/fibre−channel@3”、インスタンスNo.が“3”、VIDが“10CF”、DIDが“0001”、仮想マシンIDが“1”、仮想ポートNo.が“11”、接続先WWNが“xxyy02”およびゾーンが“Zone1”という情報が設定される。
ここで、接続先WWN“xxyy01”は、ストレージ装置300のポート340に対応する。接続先WWN“xxyy02”は、ストレージ装置300のポート340aに対応する。
図10は、冗長グループ管理テーブルの例を示す図である。冗長グループ管理テーブル132には、仮想マシンID、物理アダプタインスタンスNo.、仮想アダプタインスタンスNo.、アダプタ識別情報、運用状態、IO(Input / Output)要求状態、冗長グループおよび同一物理アダプタの他の仮想アダプタを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、1つの冗長グループの情報を示す。
仮想マシンIDの項目には、仮想マシンIDが設定される。物理アダプタインスタンスNo.の項目には、物理アダプタインスタンスNo.が設定される。物理アダプタインスタンスNo.は、物理アダプタのファンクション番号(物理ポート番号)である。仮想アダプタインスタンスNo.の項目には、仮想アダプタインスタンスNo.が設定される。仮想アダプタインスタンスNo.は、仮想アダプタのファンクション番号(仮想アダプタの仮想的なファンクションを識別するための番号)である。
アダプタ識別情報の項目には、接続先装置へのアクセスに用いるアダプタの情報が設定される。アダプタ識別情報の項目には、物理デバイスパスの項目およびスロットの項目が更に設けられている。物理デバイスパスの項目には、物理アダプタのデバイスパス情報が設定される。スロットの項目には、当該物理アダプタが設けられたPCIスロットのPCIスロットIDが設定される。運用状態の項目には、当該仮想アダプタを介したデータ通信の運用状態を示す情報が設定される。IO要求状態の項目には、当該仮想アダプタを介したデータ通信におけるIO要求の状態を示す情報が設定される。
冗長グループの項目には、当該仮想アダプタの属する冗長グループ(仮想アダプタの組み合わせ)の情報が設定される。冗長グループの項目には、更に、グループIDの項目および仮想アダプタの項目が設けられている。グループIDの項目には、冗長グループのグループIDが設定される。仮想アダプタの項目には、当該グループのペアとなる仮想アダプタの仮想アダプタインスタンスNo.が設定される。
同一物理アダプタの他の仮想アダプタの項目には、当該仮想アダプタが属するFCインタフェース上の他の仮想アダプタの仮想アダプタインスタンスNo.が設定される。
例えば、冗長グループ管理テーブル132には、各仮想アダプタについて、次のような冗長グループが設定される。
(1)仮想アダプタ160と仮想アダプタ160bとをペアとした第1の冗長グループ。第1の冗長グループは仮想マシン150に割り当てられる。
(2)仮想アダプタ160aと仮想アダプタ160cとをペアとした第2の冗長グループ。第2の冗長グループは仮想マシン150aに割り当てられる。
具体的には、次の通りである。
第1の冗長グループ(仮想アダプタ160側)に関して、冗長グループ管理テーブル132には、仮想マシンIDが“0”、物理アダプタインスタンスNo.が“0”、仮想アダプタインスタンスNo.が“0”、アダプタ識別情報につき物理デバイスパスが“/pci@0/pci@0/fibre−channel@0”、スロットが“0”、運用状態が“異常”、IO要求状態が“停止”、冗長グループにつきグループIDが“マルチパスA”、対の仮想アダプタのIDが“2”、同一物理アダプタの他の仮想アダプタインスタンスNo.が“1”という情報が設定される。
これは、仮想マシン150に対して、FCインタフェース106(物理アダプタインスタンスNo.“0”)上の仮想アダプタ160(仮想アダプタインスタンスNo.“0”)が割り当てられていることを示す。物理アダプタを識別するための情報として、上記物理デバイスパスおよびスロット番号が設定されている。また、当該仮想アダプタ160の運用状態が“異常”であり、IO要求状態が“停止”中であることを示す。更に、仮想アダプタ160が属する冗長グループのグループIDが“マルチパスA”であり、対になる仮想アダプタが仮想アダプタ160b(仮想アダプタインスタンスNo.“2”)であることを示す。また、FCインタフェース106上の他の仮想アダプタとして仮想アダプタ160a(仮想アダプタインスタンスNo.“1”)が存在することを示す。
第1の冗長グループ(仮想アダプタ160b側)に関して、冗長グループ管理テーブル132には、仮想マシンIDが“0”、物理アダプタインスタンスNo.が“1”、仮想アダプタインスタンスNo.が“2”、アダプタ識別情報につき物理デバイスパスが“/pci@1/pci@0/fibre−channel@0”、スロットが“1”、運用状態が“待機”、IO要求状態が“リトライ”、冗長グループにつきグループIDが“マルチパスA”、対の仮想アダプタインスタンスNo.が“0”、同一物理アダプタの他の仮想アダプタインスタンスNo.が“3”という情報が設定される。
第2の冗長グループ(仮想アダプタ160a側)に関して、冗長グループ管理テーブル132には、仮想マシンIDが“1”、物理アダプタインスタンスNo.が“0”、仮想アダプタインスタンスNo.が“1”、アダプタ識別情報につき物理デバイスパスが“/pci@0/pci@0/fibre−channel@0”、スロットが“0”、運用状態が“待機”、IO要求状態が“停止”、冗長グループにつきグループIDが“マルチパスB”、対の仮想アダプタインスタンスNo.が“3”、同一物理アダプタの他の仮想アダプタインスタンスNo.が“0”という情報が設定される。
第2の冗長グループ(仮想アダプタ160c側)に関して、冗長グループ管理テーブル132には、仮想マシンIDが“1”、物理アダプタインスタンスNo.が“1”、仮想アダプタインスタンスNo.が“3”、アダプタ識別情報につき物理デバイスパスが“/pci@1/pci@0/fibre−channel@0”、スロットが“1”、運用状態が“運用”、IO要求状態が“通信中”、冗長グループにつきグループIDが“マルチパスB”、対の仮想アダプタインスタンスNo.が“1”、同一物理アダプタの他の仮想アダプタインスタンスNo.が“2”という情報が設定される。
ここで、運用状態の各設定内容の意味は次の通りである。“異常”は、当該仮想アダプタの故障や障害の発生を示す。“待機”は、当該仮想アダプタが冗長グループの待機系であることを示す。“運用”は、当該仮想アダプタが冗長グループの現用系であり、通信に利用可能な状態であることを示す。
また、IO要求状態の各設定内容の意味は次の通りである。“停止”は、当該仮想アダプタでIO(データの送受信動作)が発生していないことを示す。“リトライ”は、当該仮想アダプタを介した通信を試行中であることを示す。“通信中”は、当該仮想アダプタを介した通信が確立されており、通信に利用されている状態であることを示す。
次に、以上の構成のサーバ装置100の処理手順を説明する。
図11は、第2の実施の形態の障害検知時の全体処理を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。なお、以下に示すステップS11の直前では、仮想マシン150は仮想アダプタ160を介して、仮想マシン150aは仮想アダプタ160aを介してストレージ装置300にアクセスしているとする。
(ステップS11)アダプタドライバ152は、仮想アダプタ160を介した通信で故障を検知する。すると、アダプタドライバ152は、プロセス間通信によりハイパーバイザ140に仮想アダプタ160の故障検知を通知する。制御部141は、当該通知を受けて、仮想アダプタ160の故障を検知する。
(ステップS12)制御部141は、管理情報記憶部130に記憶された接続構成管理テーブル131を参照して、仮想アダプタの構成を確認する。具体的には、制御部141は、故障を検知した仮想アダプタ160が属するFCインタフェース106上の他の仮想アダプタの存在を確認する。制御部141は、当該他の仮想アダプタとして仮想アダプタ160aを特定する。制御部141は、接続構成管理テーブル131を参照して、仮想アダプタ160aに対応する仮想マシン150aを特定する。
(ステップS13)制御部141は、仮想マシン150aに対して、他の物理アダプタ上にある退避先の仮想アダプタ(以下、退避先アダプタという)を有しているか問い合わせる。仮想マシン150aの冗長パス制御部153aは、当該問い合わせに対して、退避先アダプタの有無を応答する。冗長パス制御部153aは、退避先アダプタがある場合には、その識別情報を制御部141に通知する。制御部141は、受け付けた退避先アダプタの識別情報を冗長グループ管理テーブル132に設定する。例えば、冗長パス制御部153aは、仮想アダプタ160aに対してFCインタフェース106a上の退避先アダプタ(仮想アダプタ160c)が存在する旨を制御部141に通知する。すると、制御部141は、冗長グループ管理テーブル132に、仮想アダプタ160a,160cを対応付けて登録する。なお、制御部141は、故障した仮想アダプタ160と仮想アダプタ160bとの対応も同様に、冗長パス制御部153から情報を取得して冗長グループ管理テーブル132に登録する。
(ステップS14)制御部141は、ステップS12で確認した他の仮想アダプタのうちから、未退避の仮想アダプタを1つ選択する。例えば、仮想アダプタ160aを選択する。
(ステップS15)制御部141は、冗長グループ管理テーブル132を参照して、当該仮想アダプタに退避先アダプタがあるか否かを判定する。退避先アダプタがない場合、処理をステップS16に進める。退避先アダプタがある場合、処理をステップS19に進める。
(ステップS16)制御部141は、物理アダプタを追加する処理を行う。例えば、管理者にFCインタフェース106aの追加を促すメッセージを報知する。管理者がサーバ装置100に新たにFCインタフェース106aを搭載する作業を行った後、制御部141は、FCインタフェース106aを仮想マシン150aから利用可能にするための処理を行う。制御部141は、FCインタフェース106a上の仮想アダプタから仮想マシン150aに退避先の仮想アダプタ160cを割り当てる。制御部141は、追加されたFCインタフェース106aに関する接続構成を接続構成管理テーブル131に登録する。制御部141は、管理情報記憶部130に記憶された冗長グループ管理テーブル132に退避元の仮想アダプタと退避先の仮想アダプタとの対応関係を登録する。
(ステップS17)制御部141は、接続構成管理テーブル131を参照して、退避先アダプタに対応するゾーンがFCスイッチ装置200に設定済であるか否かを判定する。ゾーンを設定済である場合、処理をステップS19に進める。ゾーンを未設定である場合、処理をステップS18に進める。
(ステップS18)制御部141は、退避先アダプタに対応するポート情報をFCスイッチ装置200のゾーン情報に追加する。
(ステップS19)制御部141は、仮想マシン150aに対し、退避先アダプタの接続先装置を組み込む指示をプロセス間通信で通知する。仮想マシン150aは、組み込み指示を受信すると、接続先装置と通信して、退避先アダプタを介した接続先装置の利用を可能とするための処理を行う。仮想マシン150aは、組み込みを完了すると、完了した旨をハイパーバイザ140に通知する。
(ステップS20)制御部141は、退避先アダプタへ通信を切り換える旨の指示を仮想マシン150aに通知する。冗長パス制御部153aは、通信に用いるアダプタを仮想アダプタ160aから仮想アダプタ160cに切り換える。冗長パス制御部153aは、切り換えが完了した旨を制御部141に通知する。制御部141は、当該通知を受けて、冗長グループ管理テーブル132の仮想アダプタ160a,160cの運用状態を更新する。
(ステップS21)制御部141は、冗長グループ管理テーブル132を参照して、ステップS12で特定した全ての仮想アダプタにつき退避が完了したかを判定する。全ての仮想アダプタを退避済である場合、処理をステップS22に進める。未退避の仮想アダプタが存在する場合、処理をステップS14に進める。
(ステップS22)制御部141は、故障した物理アダプタ(FCインタフェース106)を故障状態として、その動作を停止させる。制御部141は、仮想マシン150,150aなどによる当該物理アダプタへの資源取得の要求を防止し、故障した物理アダプタを閉塞する。そして、制御部141は、故障した物理アダプタの電源をOFFにして、サーバ装置100から切り離す。
このようにして、制御部141は仮想アダプタの切り換えを制御する。ステップS13では、制御部141は、管理情報記憶部130に記憶された接続構成管理テーブル131を参照して、退避先アダプタの有無を確認してもよい。
なお、ステップS22の処理は、仮想マシン150上で故障が検知された仮想アダプタ160の仮想アダプタ160bへの切り換えが完了した後に行われる。故障が検知された仮想アダプタ160に関しては、冗長パス制御部153により、当該故障検知の後に、仮想アダプタ160から仮想アダプタ160bへの切り換えが行われる。冗長パス制御部153は、当該切り換えの完了を制御部141に通知する。このようにして、制御部141は仮想アダプタ160,160b間の切り換え状況も管理する。
例えば、故障検知後、所定期間経過後も、冗長パス制御部153によるアダプタ切り換えが実行されない場合、制御部141は、冗長パス制御部153にも切り換えの指示を行ってもよい。
また、例えば、故障を検知した仮想マシン150の退避先アダプタがない場合も考えられる。その場合には、新たにFCインタフェース106aがサーバ装置100に搭載されるまで、制御部141は冗長パス制御部153によるアダプタ切り換えを留保することが考えられる。
図12は、第2の実施の形態の障害検知時の全体処理を示すシーケンス図である。以下、図12に示す処理をステップ番号に沿って説明する。なお、以下に示すステップST101の直前では、仮想マシン150は仮想アダプタ160を介して、仮想マシン150aは仮想アダプタ160aを介してストレージ装置300にアクセスしているとする。また、FCインタフェース106aは、サーバ装置100に未設置であるとする。
(ステップST101)仮想マシン150は、ハイパーバイザ140に仮想アダプタ160の故障を通知する。
(ステップST102)ハイパーバイザ140は、管理情報記憶部130に記憶された接続構成管理テーブル131を参照して、仮想アダプタ160とFCインタフェース106を共用する仮想アダプタ160aを確認する。また、当該仮想アダプタ160aに対して仮想マシン150aが対応付けられていることを確認する。
(ステップST103)ハイパーバイザ140は、仮想マシン150aに、退避先アダプタがあるかを問い合わせる。仮想マシン150aは、退避先アダプタがない旨をハイパーバイザ140に応答する。その後、ハイパーバイザ140は、管理者に対してFCインタフェース106aをサーバ装置100に新たに設けるよう通知する。管理者は当該通知に応じて、FCインタフェース106aをサーバ装置100に設置する。なお、ここでは、仮想マシン150も退避先アダプタが存在しない。このため、故障検知後から追加されたFCインタフェース106aが利用可能になるまで、ハイパーバイザ140は、冗長パス制御部153による仮想アダプタの切り換え処理を留保させる。
(ステップST104)ハイパーバイザ140は、FCインタフェース106a上の仮想アダプタ160b,160cのドライバモジュールの組み込みを仮想マシン150,150aに指示する。仮想マシン150,150aは、当該指示に応じて、仮想アダプタ160b,160cを組み込む。これにより、仮想マシン150は、仮想アダプタ160bを利用可能となる。仮想マシン150aは、仮想アダプタ160cを利用可能となる。ハイパーバイザ140は、管理情報記憶部130に記憶された冗長グループ管理テーブル132に、仮想アダプタ160,160bを冗長グループのペアとして登録する。同様に、仮想アダプタ160a,160cを冗長グループのペアとして登録する。
(ステップST105)ハイパーバイザ140は、FCスイッチ装置200のゾーン情報に仮想アダプタ160b,160cに対応するポート情報(物理アダプタの情報や物理アダプタの仮想ポート番号の情報)を追加する。これにより、仮想アダプタ160b,160cからFCスイッチ装置200の当該ゾーンを介した通信が可能となる。
(ステップST106)ハイパーバイザ140は、仮想アダプタ160b,160cを介したストレージ装置300の組み込みを仮想マシン150,150aに指示する。仮想マシン150,150aは、当該指示に応じてストレージ装置300と通信し、仮想アダプタ160b,160cを介したストレージ装置300の利用を可能な状態とする。これにより、仮想マシン150は、仮想アダプタ160bを介してストレージ装置300へアクセス可能となる。仮想マシン150aは、仮想アダプタ160cを介してストレージ装置300へアクセス可能となる。
(ステップST107)ハイパーバイザ140は、仮想マシン150,150aに仮想アダプタの切り換えを指示する。当該指示に応じて、仮想マシン150は、仮想アダプタ160から仮想アダプタ160bへの切り換えを行う。また、仮想マシン150aは、仮想アダプタ160aから仮想アダプタ160cへの切り換えを行う。
(ステップST108)ハイパーバイザ140は、FCインタフェース106を共用する全ての仮想マシンが他のFCインタフェースに移管済であり、FCインタフェース106上の全ての仮想アダプタで通信が停止されたことを確認する。ハイパーバイザ140は、FCインタフェース106を閉塞させて電源OFFし、停止させる。
(ステップST109)ハイパーバイザ140は、FCインタフェース106をサーバ装置100から切り離す。FCインタフェース106は、サーバ装置100から取り外し可能な状態となる。
このようにして、ハイパーバイザ140は、仮想アダプタ160で故障を検知すると、仮想マシン150とFCインタフェース106を共有する仮想マシン150aについても、FCインタフェース106aに移管する。これによって、FCインタフェース106を利用する仮想マシンが全てFCインタフェース106aに退避される。
次に、図11のステップS16の物理アダプタ追加処理を説明する。以下では、FCインタフェース106aを追加する場合を想定する。
図13は、第2の実施の形態の物理アダプタ追加処理を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。
(ステップS31)管理者により、FCインタフェース106aが、サーバ装置100に搭載される。また、管理者により、FCインタフェース106aとFCスイッチ装置200とがFCケーブルを介して接続される。制御部141は、FCインタフェース106aがサーバ装置100に追加された旨を検知する。
(ステップS32)制御部141は、FCインタフェース106aおよび仮想アダプタ160b,160cの情報を管理情報記憶部130に記憶された接続構成管理テーブル131に登録する。制御部141は、退避元の仮想アダプタに関する接続先WWNやゾーンの情報を接続構成管理テーブル131から取得し、退避先アダプタの接続先WWNやゾーンの情報として同テーブルに登録する。制御部141は、退避先アダプタの接続先WWNやゾーンの情報として、管理端末装置400で管理者が入力した情報を接続構成管理テーブル131に登録してもよい。また、制御部141は、管理情報記憶部130に記憶された冗長グループ管理テーブル132に、仮想アダプタ160,160aの退避先として、仮想アダプタ160b,160cを登録する。何れの仮想アダプタを何れの仮想アダプタとペアにするかは、管理者が管理端末装置400から指定してもよいし、制御部141がDIDの昇順などの条件に基づいて自動で指定してもよい。
(ステップS33)制御部141は、接続構成管理テーブル131を参照して、新たに登録したFCインタフェース106aおよび仮想アダプタ160b,160cのVIDとDIDを確認する。
(ステップS34)制御部141は、冗長グループ内で、仮想アダプタ同士のVIDとDIDが同一であるか否かを判定する。同一である場合、処理をステップS35に進める。同一でない場合、管理者に対して、同一機能の物理アダプタを搭載するよう指示して、処理をステップS31に進める。
(ステップS35)制御部141は、接続構成管理テーブル131を参照して、退避元の仮想アダプタ160,160aに対応する仮想マシン150,150aを特定する。
(ステップS36)制御部141は、アダプタドライバ152,152a、冗長パス制御部153,153aおよび接続先装置ドライバ154,154aに、仮想アダプタ160b,160cのドライバモジュールの組み込みを指示する。
(ステップS37)アダプタドライバ152,152a、冗長パス制御部153,153aおよび接続先装置ドライバ154,154aは、制御部141からの指示に応じて、仮想アダプタ160b,160cのドライバモジュールを組み込む。
このようにして、新たに追加したFCインタフェース106aを利用可能とするための処理が行われる。退避先の仮想アダプタのVIDとDIDが同一であることを確認し、同一でなければ確認を促すことで、退避前後でアダプタの機能が変わらないことを保証できる。
これにより、通信性能の低下や接続先装置との相性の不一致などが生じる可能性を低減できる。
図14は、第2の実施の形態の物理アダプタ追加処理を示すシーケンス図である。以下、図14に示す処理をステップ番号に沿って説明する。
(ステップST111)管理者により、FCインタフェース106aがサーバ装置100に搭載される。管理者により、FCインタフェース106aとFCスイッチ装置200とがFCケーブルで接続される。
(ステップST112)ハイパーバイザ140は、FCインタフェース106aが追加された旨を検知すると、FCインタフェース106aから、物理アダプタおよび仮想アダプタの情報を取得する。ハイパーバイザ140は、取得した情報を管理情報記憶部130に記憶された接続構成管理テーブル131に登録する。また、ハイパーバイザ140は、管理情報記憶部130に記憶された冗長グループ管理テーブル132に、仮想アダプタ160,160aの退避先として、仮想アダプタ160b,160cを登録する。
(ステップST113)ハイパーバイザ140は、接続構成管理テーブル131を参照して、新たに登録したFCインタフェース106aおよび仮想アダプタ160b,160cのVIDとDIDを確認する。ハイパーバイザ140は、冗長ペアの仮想アダプタ同士で、VIDとDIDが同一であることを確認する。具体的には、仮想アダプタ160,160bのVIDとDIDが同一であることを確認する。また、仮想アダプタ160a,160cのVIDとDIDが同一であることを確認する。
(ステップST114)ハイパーバイザ140は、接続構成管理テーブル131を参照して、仮想アダプタ160に対応付けられた仮想マシン150を特定する。同様に、仮想アダプタ160aに対応付けられた仮想マシン150aを特定する。
(ステップST115)ハイパーバイザ140は、仮想マシン150,150aに、仮想アダプタ160b,160cの組み込みを指示する。
(ステップST116)仮想マシン150,150aは、仮想アダプタ160b,160cのドライバモジュールを組み込む。これにより、仮想マシン150は仮想アダプタ160bを利用可能となる。また、仮想マシン150aは仮想アダプタ160cを利用可能となる。
このように、FCインタフェース106aを追加した後、ハイパーバイザ140は、仮想マシン150,150aに仮想アダプタ160b,160cの組み込みを実行させる。ハイパーバイザ140は、仮想マシン150,150aに対する仮想アダプタ160b,160cの割り当て状況を接続構成管理テーブル131で管理する。また、ハイパーバイザ140は、仮想アダプタ160,160a,160b,160cによる冗長グループの対応関係を冗長グループ管理テーブル132で管理する。
次に、図11のステップS19の接続先装置追加処理を説明する。
図15は、第2の実施の形態の接続先装置追加処理を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
(ステップS41)制御部141は、仮想マシン150,150aに接続先装置(ストレージ装置300)の組み込みを指示する。このとき、制御部141は、管理情報記憶部130に記憶された接続構成管理テーブル131を参照して、仮想アダプタ160bの接続先WWNを、仮想マシン150に通知する。同様に、制御部141は、仮想アダプタ160cの接続先WWNを仮想マシン150aに通知する。
(ステップS42)冗長パス制御部153は、仮想アダプタ160の接続先WWNを確認する。冗長パス制御部153aは、仮想アダプタ160aの接続先WWNを確認する。
(ステップS43)冗長パス制御部153,153aは、ステップS41で受け付けた接続先WWNとステップS42で確認した接続先WWNとが同一であるか否かを判定する。同一である場合、すなわち、FCインタフェースの変更後も、元の接続先装置にアクセスできると確認できた場合、冗長パス制御部153,153aはその接続先装置の組み込みを行う。その後、冗長パス制御部153,153aは組み込みが完了した旨をハイパーバイザ140に通知して、処理をステップS44に進める。接続先WWNが異なる場合、すなわち、FCインタフェースの変更後に元の接続先装置にアクセスできない場合、その旨をハイパーバイザ140に通知して、処理をステップS45に進める。
(ステップS44)制御部141は、管理情報記憶部130に記憶された冗長グループ管理テーブル132を更新する。具体的には、制御部141は、仮想アダプタ160b,160cの運用状態を“待機”に更新する。
(ステップS45)制御部141は、仮想アダプタ160b,160cの接続先装置の確認を管理者に促す。例えば、制御部141は、管理端末装置400に所定のメッセージを通知したり、管理者の電子メールアドレスに所定のメッセージを記述した電子メールを送信したりする。
このようにして、制御部141は、仮想マシン150,150aから退避先の仮想アダプタを介してストレージ装置300を利用可能とする。制御部141は、退避先装置が退避の前後で異ならないことを事前に確認するので、退避後の仮想マシン150,150aの処理への影響を低減できる。
図16は、第2の実施の形態の接続先装置追加処理を示すシーケンス図である。以下、図16に示す処理をステップ番号に沿って説明する。
(ステップST121)ハイパーバイザ140は、仮想マシン150,150aにストレージ装置300の組み込みを指示する。
(ステップST122)仮想マシン150,150aは、新たな接続先となるストレージ装置300が、現在の接続先であるストレージ装置300と同一であることを確認する。そして、仮想マシン150,150aは、ストレージ装置300の組み込みを行う。これにより、仮想マシン150は、仮想アダプタ160bを介してストレージ装置300へアクセス可能となる。また、仮想マシン150aは、仮想アダプタ160cを介してストレージ装置300へアクセス可能となる。
(ステップST123)仮想マシン150,150aは、ストレージ装置300の組み込みが完了した旨をハイパーバイザ140に応答する。
(ステップST124)ハイパーバイザ140は、管理情報記憶部130に記憶された冗長グループ管理テーブル132を更新する。具体的には、制御部141は、仮想アダプタ160b,160cの運用状態を“待機”に更新する。
これにより、各冗長グループでアダプタ切り換えの準備が整う。
次に、図11のステップS20のアダプタ切り換え処理を説明する。
図17は、第2の実施の形態のアダプタ切り換え処理を示すフローチャートである。以下、図17に示す処理をステップ番号に沿って説明する。
(ステップS51)制御部141は、退避対象の仮想アダプタを確認する。具体的には、制御部141は、故障が検知されたFCインタフェース106上の仮想アダプタ160aを確認する。制御部141は、管理情報記憶部130に記憶された冗長グループ管理テーブル132を参照し、仮想アダプタ160aの退避先アダプタとして、仮想アダプタ160cを特定する。
(ステップS52)制御部141は、仮想マシン150aに仮想アダプタ160cへの切り換えを指示する。
(ステップS53)冗長パス制御部153aは、制御部141の指示を受け付けると、冗長グループ管理テーブル132を参照して、仮想マシン150aのIO要求状態を確認する。冗長パス制御部153aは、接続先装置ドライバ154aのIO要求状態を参照して確認してもよい。冗長パス制御部153aは、仮想マシン150aの仮想アダプタ160aによるIO要求状態が“停止”になると、仮想アダプタ160aから仮想アダプタ160cへアダプタの切り換えを行う。
(ステップS54)冗長パス制御部153aは、制御部141に切り換え完了を通知する。
(ステップS55)制御部141は、冗長パス制御部153aから切り換え完了の通知を受け付けると、冗長グループ管理テーブル132を更新する。具体的には、制御部141は、仮想アダプタ160aのIO要求状態が“停止”であることを確認し、仮想アダプタ160aにつき運用状態の項目を“待機”に変更し、仮想アダプタ160cにつき運用状態の項目を“運用”に変更する。
このようにして、制御部141は、冗長グループ内でのアダプタの切り換えを制御する。制御部141は、仮想アダプタ160で故障が発生した場合、FCインタフェース106を共用する仮想マシン150aが存在することを確認する。そして、制御部141は、仮想マシン150aの冗長パス制御部153aに対して、仮想アダプタの切り換えを指示する。
冗長パス制御部153aは、仮想マシン150aがストレージ装置300にアクセス中でないタイミングでFCインタフェース106上の仮想アダプタ160aからFCインタフェース106a上の仮想アダプタ160cへ、アダプタの切り換えを行う。これにより、仮想マシン150aの処理が中断されないようにアダプタの切り換えを行える。
なお、制御部141は、仮想マシン150のアダプタ切り換えを留保している場合(例えば、図12のステップST103参照)には、上記ステップS51において、仮想マシン150の退避先アダプタとして、仮想アダプタ160bを特定する。そして、制御部141は、以降のステップS52〜S55において、仮想マシン150aと同様に、仮想マシン150の冗長パス制御部153に対して仮想アダプタ160から仮想アダプタ160bへの切り換えを制御する。
これにより、故障が検出されたFCインタフェース106を共用する全ての仮想マシンを他のFCインタフェース106aに移管できる。その結果、FCインタフェース106の全ての仮想アダプタを介した通信が停止状態となる。このため、FCインタフェース106を交換するなどの保守作業を行ったとしても、サーバ装置100で動作する他の仮想マシンに対する影響を抑えることができる。その結果、保守作業を容易に行えるようになる。
また、制御部141は、FCインタフェース106で故障を検知したタイミングで、他の仮想マシンをFCインタフェース106aに移管させる。このため、サーバ装置100の保守作業を迅速に開始でき、保守作業を効率的に行える。
なお、仮想マシン150,150aで同一のFCインタフェース106aに移管するものとしたが、各仮想マシンをそれぞれ異なるFCインタフェースに移管してもよい。また、仮想マシン150,150aの接続先装置をストレージ装置300としたが、それぞれ異なる接続先装置に接続してもよい。
[第3の実施の形態]
次に、第3の実施の形態を説明する。前述の第2の実施の形態との相違点を主に説明し、同様の事項は説明を省略する。
第2の実施の形態では、仮想マシン150,150aが冗長パス制御部153,153aを備え、制御部141の指示に応じて、仮想アダプタの切り換えの処理を行う例を示した。
一方、冗長パス制御部153,153aの機能をハイパーバイザが備えてもよい。第3の実施の形態では、この場合を例示する。
ここで、第3の実施の形態の情報処理システムの全体構成は、図2で説明した第2の実施の形態の情報処理システムの全体構成と同様であるため説明を省略する。また、第3の実施の形態のサーバ装置、FCスイッチ装置、ストレージ装置および管理端末装置のハードウェア例は、図3〜5で説明した通りであるため説明を省略する。第3の実施の形態では、以下に示すサーバ装置100aのハードウェア、FCスイッチ装置、ストレージ装置および管理端末装置を、第2の実施の形態と同一の符号により示す。また、対応する同一の構成については、同一の符号により示す。
図18は、第3の実施の形態のサーバ装置の機能を示すブロック図である。サーバ装置100aは、管理情報記憶部130、ハイパーバイザ140a、仮想マシン150b,150cおよび仮想アダプタ160,160a,160b,160cを有する。管理情報記憶部130、ハイパーバイザ140aおよび仮想マシン150b,150cの機能は、CPU111が所定のプログラムを実行することにより、サーバ装置100a上に実現される。ただし、これらのユニットの全部または一部を専用のハードウェアにより実現してもよい。
管理情報記憶部130は、第2の実施の形態の管理情報記憶部130に対応する。
ハイパーバイザ140aは、第2の実施の形態のハイパーバイザ140に対応する。ハイパーバイザ140aは、制御部141aを有する。制御部141aは、第2の実施の形態の制御部141に対応する。ただし、制御部141aは、制御部141の機能に加えて、第2の実施の形態の冗長パス制御部153,153aの機能を担う。制御部141aは、仮想マシン150b,150cに割り当てた仮想アダプタを冗長制御する。
仮想マシン150bは、OS151、アダプタドライバ152bおよび接続先装置ドライバ154bを有する。仮想マシン150cは、OS151a、アダプタドライバ152cおよび接続先装置ドライバ154cを有する。OS151b,151c、アダプタドライバ152b,152cおよび接続先装置ドライバ154b,154cは、第2の実施の形態のOS151,151a、アダプタドライバ152,152aおよび接続先装置ドライバ154,154aに対応する。
仮想アダプタ160,160a,160b,160cは、第2の実施の形態の仮想アダプタ160,160a,160b,160cに対応する。
このような構成によっても、第2の実施の形態と同一の処理を行える。その際、第2の実施の形態において冗長パス制御部153,153aに対して行われた処理は、制御部141aに対して行われる。また、第2の実施の形態において冗長パス制御部153,153aが実行した処理は、制御部141aが実行する。
例えば、図12で示した第2の実施の形態の障害検知時の全体処理のシーケンス図のステップST101では、制御部141aは、アダプタドライバ152b,152cからの通知で、仮想アダプタの故障の有無を判断できる。また、制御部141aは、アダプタドライバ152b,152cと通信し、仮想マシン150b,150cのIO要求状況を監視する。制御部141aは、接続先装置ドライバ154b,154cと通信して、IO要求状況を監視してもよい。これにより、制御部141aは、ある仮想アダプタにつきIO要求状況を判断でき、アダプタ切り換え完了状態を判断できる。具体的には、制御部141aは、仮想マシン150cが仮想アダプタ160aによりストレージ装置300にアクセス中に、仮想アダプタ160aが待機状態としないよう制御する。
また、例えば、図12のステップST103の処理は、制御部141aが管理情報記憶部130に記憶された接続構成管理テーブル131を参照することで確認する。このため、仮想マシンへの問い合わせによる処理負荷が軽減される。また、ステップST107の仮想アダプタの切り換え処理は、制御部141aが行う。
これにより、第2の実施の形態と同様の効果を得ることができる。特に、制御部141aが切り換え処理を一括して行うので、仮想マシンごとに生じるアダプタ確認の問い合わせや、切り換え指示などの通信を省ける。このため、高速に切り換え処理を行える。
[第4の実施の形態]
次に、第4の実施の形態を説明する。前述の第2,第3の実施の形態との相違点を主に説明し、同様の事項は説明を省略する。
第2,第3の実施の形態では、物理アダプタおよび仮想アダプタの接続構成を管理する制御部の機能をハイパーバイザに設けた。一方、当該制御部を他の装置に設けてもよい。第4の実施の形態では、管理端末装置400が制御部を備える例を示す。
ここで、第4の実施の形態の情報処理システムの全体構成は、図2で説明した第2の実施の形態の情報処理システムの全体構成と同様であるため説明を省略する。また、第4の実施の形態のサーバ装置、FCスイッチ装置、ストレージ装置および管理端末装置のハードウェア例は、図3〜5で説明した通りであるため説明を省略する。第4の実施の形態では、サーバ装置、FCスイッチ装置、ストレージ装置および管理端末装置を第2の実施の形態と同一の符号により指し示す。
図19は、第4の実施の形態の管理端末装置の機能を示すブロック図である。管理端末装置400は、管理情報記憶部410および制御部420を有する。これらの各機能は、管理端末装置400上のCPUが、管理端末装置400上のメモリに格納された所定のプログラムを実行することにより、管理端末装置400上に実現される。ただし、制御部420を専用のハードウェアにより実現してもよい。
管理情報記憶部410は、第2の実施の形態の管理情報記憶部130に対応する。管理情報記憶部410は、管理情報を記憶する。管理情報は、図9,10で説明した接続構成管理テーブルおよび冗長グループ管理テーブルを含む。
制御部420は、第2の実施の形態の制御部141に対応する。すなわち、第2の実施の形態の制御部141の機能を制御部420が担う。具体的には、制御部420は、ハイパーバイザ140から、何れかの仮想マシンでFCインタフェースを介した通信で障害が発生した旨の通知を受ける。すると、制御部420は、管理情報記憶部410を参照して、当該FCインタフェースを用いて通信する他の仮想マシンを特定する。制御部420は、特定した他の仮想マシンの他のFCインタフェースへの割り当てをハイパーバイザ140に指示する。ハイパーバイザ140は、制御部420の指示により、当該他の仮想マシンを他のFCインタフェースに割り当てる。
次に、以上の構成の管理端末装置400の処理を説明する。
図20は、第4の実施の形態の障害検知時の全体処理を示すシーケンス図である。以下、図20に示す処理をステップ番号に沿って説明する。なお、以下に示すステップST131の直前では、仮想マシン150は仮想アダプタ160を介して、仮想マシン150aは仮想アダプタ160aを介して、ストレージ装置300にアクセスしているとする。また、FCインタフェース106aは、サーバ装置100に未設置であるとする。
(ステップST131)仮想マシン150は、ハイパーバイザ140を介して制御部420に、仮想アダプタ160の故障を通知する。ここで、以下の説明では、仮想マシン150,150aと制御部420の間の通信は当該ステップST131と同様にハイパーバイザ140を介して行われるものとする。
(ステップST132)制御部420は、管理情報記憶部410に記憶された接続構成管理テーブルを参照して、仮想アダプタ160とFCインタフェース106を共用する仮想アダプタ160aを確認する。また、当該仮想アダプタ160aに対して仮想マシン150aが対応付けられていることを確認する。
(ステップST133)制御部420は、仮想マシン150aに、退避先アダプタがあるかを問い合わせる。仮想マシン150aは、退避先アダプタがない旨を制御部420に応答する。その後、制御部420は、管理者に対してFCインタフェース106aをサーバ装置100に新たに設けるよう通知する。管理者は当該通知に応じて、FCインタフェース106aをサーバ装置100に設置する。なお、ここでは、仮想マシン150も退避先アダプタが存在しない。このため、故障検知後から追加されたFCインタフェース106aが利用可能になるまで、制御部420は、冗長パス制御部153による仮想アダプタの切り換え処理を留保させる。
(ステップST134)制御部420は、FCインタフェース106a上の仮想アダプタ160b,160cのドライバモジュールの組み込みを仮想マシン150,150aに指示する。仮想マシン150,150aは、当該指示に応じて、仮想アダプタ160b,160cを組み込む。これにより、仮想マシン150は、仮想アダプタ160bを利用可能となる。仮想マシン150aは、仮想アダプタ160cを利用可能となる。制御部420は、管理情報記憶部410に記憶された冗長グループ管理テーブルに仮想アダプタ160,160bを冗長グループのペアとして登録する。同様に、仮想アダプタ160a,160cを冗長グループのペアとして登録する。
(ステップST135)制御部420は、FCスイッチ装置200のゾーン情報の追加をハイパーバイザ140に指示する。ハイパーバイザ140は、仮想アダプタ160b,160cに対応するポート情報をFCスイッチ装置200のゾーン情報に追加する。これにより、仮想アダプタ160b,160cからFCスイッチ装置200の当該ゾーンを介した通信が可能となる。なお、制御部420からFCスイッチ装置200に対してゾーンの設定を直接行ってもよい。例えば、管理端末装置400とFCスイッチ装置200のSVP203を接続すれば、制御部420からFCスイッチ装置200へ直接指示を送れる。
(ステップST136)制御部420は、冗長グループ管理テーブルを参照して、仮想アダプタ160,160aによるIO要求状態が“停止”となったことを確認する。仮想アダプタ160b,160cを介したストレージ装置300の組み込みを仮想マシン150,150aに指示する。仮想マシン150,150aは、当該指示に応じてストレージ装置300と通信し、仮想アダプタ160b,160cを介したストレージ装置300の利用を可能な状態とする。これにより、仮想マシン150は、仮想アダプタ160bを介してストレージ装置300へアクセス可能となる。仮想マシン150aは、仮想アダプタ160cを介してストレージ装置300へアクセス可能となる。
(ステップST137)制御部420は、制御部420は、仮想マシン150,150aに仮想アダプタの切り換えを指示する。当該指示に応じて、仮想マシン150は、仮想アダプタ160から仮想アダプタ160bへの切り換えを行う。また、仮想マシン150aは、仮想アダプタ160aから仮想アダプタ160cへの切り換えを行う。
(ステップST138)制御部420は、FCインタフェース106を共用する全ての仮想マシンが他のFCインタフェースに移管済であり、FCインタフェース106上の全ての仮想アダプタで通信が停止されたことを確認する。制御部420は、ハイパーバイザ140にFCインタフェース106の停止を指示する。ハイパーバイザ140は、FCインタフェース106を閉塞させて電源OFFし、停止させる。
(ステップST139)制御部420は、ハイパーバイザ140にFCインタフェース106の切り離しを指示する。ハイパーバイザ140は、FCインタフェース106をサーバ装置100から切り離す。FCインタフェース106は、サーバ装置100から取り外し可能な状態となる。
このようにして、制御部420は、仮想マシン150が仮想アダプタ160で故障を検知した場合に、FCインタフェース106を共用する仮想マシン150aの仮想アダプタの切り換えを制御する。ここで、ステップST137では、制御部420は仮想アダプタ160,160aのうち、IO要求状態が“停止”になった方から順にアダプタの切り換えを指示できる。
これにより、第2の実施の形態と同様の効果を得ることができる。また、管理端末装置400でアダプタ切り換えの制御を行えば、サーバ装置100以外の装置(例えば、FCスイッチ装置200やストレージ装置300など)を含めた統合的な運用管理を、管理端末装置400上で行える。すなわち、管理者は、仮想マシンと接続先装置との間の接続構成や冗長グループの割当状況などを管理端末装置400で管理可能となる。このため、情報処理システム全体の運用管理を効率化できる。
[第5の実施の形態]
次に、第5の実施の形態を説明する。前述の第2〜第4の実施の形態との相違点を主に説明し、同様の事項は説明を省略する。
第4の実施の形態では、管理端末装置400に制御部420を設ける例を示した。一方、制御部420の機能をFCスイッチ装置200に設けてもよい。第5の実施の形態では、FCスイッチ装置200が制御部を備える例を示す。
ここで、第5の実施の形態の情報処理システムの全体構成は、図2で説明した第2の実施の形態の情報処理システムの全体構成と同様であるため説明を省略する。また、第5の実施の形態のサーバ装置、FCスイッチ装置、ストレージ装置および管理端末装置のハードウェア例は、図3〜5で説明した通りであるため説明を省略する。第5の実施の形態では、サーバ装置、FCスイッチ装置、ストレージ装置および管理端末装置を第2の実施の形態と同一の符号により指し示す。
図21は、第5の実施の形態のFCスイッチ装置の機能を示すブロック図である。FCスイッチ装置200は、管理情報記憶部210および制御部220を有する。これらの各機能は、SVP203がSVP203上のメモリまたはメモリ202に格納された所定のプログラムを実行することにより、FCスイッチ装置200上に実現される。ただし、制御部220を専用のハードウェアにより実現してもよい。
管理情報記憶部210は、第2の実施の形態の管理情報記憶部130に対応する。管理情報記憶部210は、管理情報を記憶する。管理情報は、図9,10で説明した接続構成管理テーブルおよび冗長グループ管理テーブルを含む。
制御部220は、第2の実施の形態の制御部141に対応する。すなわち、第2の実施の形態の制御部141の機能を制御部220が担う。具体的には、制御部220は、ハイパーバイザ140から、何れかの仮想マシンでFCインタフェースを介した通信に障害が発生した旨の通知を受ける。すると、制御部220は、管理情報記憶部210を参照して、当該FCインタフェースを用いて通信する他の仮想マシンを特定する。制御部220は、特定した他の仮想マシンの他のFCインタフェースへの割り当てをハイパーバイザ140に指示する。ハイパーバイザ140は、制御部220の指示により、当該他の仮想マシンを他のFCインタフェースに割り当てる。
次に、以上の構成のFCスイッチ装置200の処理を説明する。
図22は、第5の実施の形態の障害検知時の全体処理を示すシーケンス図である。以下、図22に示す処理をステップ番号に沿って説明する。なお、以下に示すステップST141の直前では、仮想マシン150は仮想アダプタ160を介して、仮想マシン150aは仮想アダプタ160aを介して、ストレージ装置300にアクセスしているとする。また、FCインタフェース106aは、サーバ装置100に未設置であるとする。
(ステップST141)仮想マシン150は、ハイパーバイザ140を介して制御部220に、仮想アダプタ160の故障を通知する。ここで、以下の説明では、仮想マシン150,150aと制御部220の間の通信は当該ステップST141と同様にハイパーバイザ140を介して行われるものとする。
(ステップST142)制御部220は、管理情報記憶部210に記憶された接続構成管理テーブルを参照して、仮想アダプタ160とFCインタフェース106を共用する仮想アダプタ160aを確認する。また、当該仮想アダプタ160aに対して仮想マシン150aが対応付けられていることを確認する。
(ステップST143)制御部220は、仮想マシン150aに、退避先アダプタがあるかを問い合わせる。仮想マシン150aは、退避先アダプタがない旨を制御部220に応答する。その後、制御部220は、管理者に対してFCインタフェース106aをサーバ装置100に新たに設けるよう通知する。管理者は当該通知に応じて、FCインタフェース106aをサーバ装置100に設置する。なお、ここでは、仮想マシン150も退避先アダプタが存在しない。このため、故障検知後から追加されたFCインタフェース106aが利用可能になるまで、制御部220は、冗長パス制御部153による仮想アダプタの切り換え処理を留保させる。
(ステップST144)制御部220は、FCインタフェース106a上の仮想アダプタ160b,160cのドライバモジュールの組み込みを仮想マシン150,150aに指示する。仮想マシン150,150aは、当該指示に応じて、仮想アダプタ160b,160cを組み込む。これにより、仮想マシン150は、仮想アダプタ160bを利用可能となる。仮想マシン150aは、仮想アダプタ160cを利用可能となる。制御部220は、管理情報記憶部210に記憶された冗長グループ管理テーブルに仮想アダプタ160,160bを冗長グループのペアとして登録する。同様に、仮想アダプタ160a,160cを冗長グループのペアとして登録する。
(ステップST145)制御部220は、仮想アダプタ160b,160cに対応するポート情報をFCスイッチ装置200のゾーン情報に追加する。これにより、仮想アダプタ160b,160cからFCスイッチ装置200の当該ゾーンを介した通信が可能となる。
(ステップST146)制御部220は、仮想アダプタ160b,160cを介したストレージ装置300の組み込みを仮想マシン150,150aに指示する。仮想マシン150,150aは、当該指示に応じてストレージ装置300と通信し、仮想アダプタ160b,160cを介したストレージ装置300の利用を可能な状態とする。これにより、仮想マシン150は、仮想アダプタ160bを介してストレージ装置300へアクセス可能となる。仮想マシン150aは、仮想アダプタ160cを介してストレージ装置300へアクセス可能となる。
(ステップST147)制御部220は、冗長グループ管理テーブルを参照して、仮想アダプタ160,160aによるIO要求状態が“停止”となったことを確認する。制御部220は、仮想マシン150,150aに仮想アダプタの切り換えを指示する。当該指示に応じて、仮想マシン150は、仮想アダプタ160から仮想アダプタ160bへの切り換えを行う。また、仮想マシン150aは、仮想アダプタ160aから仮想アダプタ160cへの切り換えを行う。
(ステップST148)制御部220は、FCインタフェース106を共用する全ての仮想マシンが他のFCインタフェースに移管済であり、FCインタフェース106上の全ての仮想アダプタで通信が停止されたことを確認する。制御部220は、ハイパーバイザ140にFCインタフェース106の停止を指示する。ハイパーバイザ140は、FCインタフェース106を閉塞させて電源OFFし、停止させる。
(ステップST149)制御部220は、ハイパーバイザ140にFCインタフェース106の切り離しを指示する。ハイパーバイザ140は、FCインタフェース106をサーバ装置100から切り離す。FCインタフェース106は、サーバ装置100から取り外し可能な状態となる。
このようにして、制御部220は、仮想マシン150が仮想アダプタ160で故障を検知した場合に、FCインタフェース106を共用する仮想マシン150aの仮想アダプタの切り換えを制御する。ここで、ステップST147では、制御部220は仮想アダプタ160,160aのうち、IO要求状態が“停止”になった方から順にアダプタの切り換えを指示できる。
これにより、第2の実施の形態と同様の効果を得ることができる。また、FCスイッチ装置200でアダプタ切り換えの制御とゾーンの設定をまとめて行うことで、サーバ装置100の構成の変化に柔軟に対応できる。
[第6の実施の形態]
次に、第6の実施の形態を説明する。前述の第2〜第5の実施の形態との相違点を主に説明し、同様の事項は説明を省略する。
第6の実施の形態では、ストレージ装置300が制御部を備える例を示す。
ここで、第6の実施の形態の情報処理システムの全体構成は、図2で説明した第2の実施の形態の情報処理システムの全体構成と同様であるため説明を省略する。また、第6の実施の形態のサーバ装置、FCスイッチ装置、ストレージ装置および管理端末装置のハードウェア例は、図3〜5で説明した通りであるため説明を省略する。第6の実施の形態では、サーバ装置、FCスイッチ装置、ストレージ装置および管理端末装置を第2の実施の形態と同一の符号により指し示す。ここで、サーバ装置100とストレージ装置300上のSVP304は、専用の管理LANで接続される。
図23は、第6の実施の形態のストレージ装置の機能を示すブロック図である。ストレージ装置300は、管理情報記憶部360および制御部370を有する。これらの各機能は、SVP304がSVP304上のメモリに格納された所定のプログラムを実行することにより、ストレージ装置300上に実現される。ただし、制御部370を専用のハードウェアにより実現してもよい。
管理情報記憶部360は、第2の実施の形態の管理情報記憶部130に対応する。管理情報記憶部360は、管理情報を記憶する。管理情報は、図9,10で説明した接続構成管理テーブルおよび冗長グループ管理テーブルを含む。
制御部370は、第2の実施の形態の制御部141に対応する。すなわち、第2の実施の形態の制御部141の機能を制御部370が担う。具体的には、制御部370は、何れかの仮想マシンでタイムアウトなどのアクセス異常を検知すると、当該仮想マシンに対応する仮想アダプタで故障が発生した旨を検知する。すると、制御部370は、管理情報記憶部360を参照して、当該仮想マシンに対応するFCインタフェースを用いて通信する他の仮想マシンを特定する。制御部370は、特定した他の仮想マシンの他のFCインタフェースへの割り当てをハイパーバイザ140に指示する。ハイパーバイザ140は、制御部370の指示により、当該他の仮想マシンを他のFCインタフェースに割り当てる。
次に、以上の構成のストレージ装置300の処理を説明する。
図24は、第6の実施の形態の障害検知時の全体処理を示すシーケンス図である。以下、図24に示す処理をステップ番号に沿って説明する。なお、以下に示すステップST151の直前では、仮想マシン150は仮想アダプタ160を介して、仮想マシン150aは仮想アダプタ160aを介して、ストレージ装置300にアクセスしているとする。また、FCインタフェース106aは、サーバ装置100に未設置であるとする。
(ステップST151)制御部370は、仮想マシン150からのアクセスにつき、タイムアウトなどによるアクセス異常を検知する。制御部370は、管理情報記憶部360に記憶された接続構成管理テーブルを参照して、仮想マシン150に対応する仮想アダプタ160を特定する。そして、制御部370は、仮想アダプタ160の故障を検知する。
(ステップST152)制御部370は、接続構成管理テーブルを参照して、仮想アダプタ160とFCインタフェース106を共用する仮想アダプタ160aを確認する。また、当該仮想アダプタ160aに対して仮想マシン150aが対応付けられていることを確認する。
(ステップST153)制御部370は、ハイパーバイザ140を介して、仮想マシン150aに、退避先アダプタがあるかを問い合わせる。仮想マシン150aは、退避先アダプタがない旨を制御部370に応答する。その後、制御部370は、管理者に対してFCインタフェース106aをサーバ装置100に新たに設けるよう通知する。管理者は当該通知に応じて、FCインタフェース106aをサーバ装置100に設置する。なお、ここでは、仮想マシン150も退避先アダプタが存在しない。このため、故障検知後から追加されたFCインタフェース106aが利用可能になるまで、制御部370は、冗長パス制御部153による仮想アダプタの切り換え処理を留保させる。ここで、以下の説明では、仮想マシン150,150aと制御部370の間の通信は当該ステップST153と同様にハイパーバイザ140を介して行われるものとする。
(ステップST154)制御部370は、FCインタフェース106a上の仮想アダプタ160b,160cのドライバモジュールの組み込みを仮想マシン150,150aに指示する。仮想マシン150,150aは、当該指示に応じて、仮想アダプタ160b,160cを組み込む。これにより、仮想マシン150は、仮想アダプタ160bを利用可能となる。仮想マシン150aは、仮想アダプタ160cを利用可能となる。制御部370は、管理情報記憶部360に記憶された冗長グループ管理テーブルに仮想アダプタ160,160bを冗長グループのペアとして登録する。同様に、仮想アダプタ160a,160cを冗長グループのペアとして登録する。
(ステップST155)制御部370は、仮想アダプタ160b,160cに対応するポート情報をFCスイッチ装置200のゾーン情報に追加する。これにより、仮想アダプタ160b,160cからFCスイッチ装置200の当該ゾーンを介した通信が可能となる。
(ステップST156)制御部370は、仮想アダプタ160b,160cを介したストレージ装置300の組み込みを仮想マシン150,150aに指示する。仮想マシン150,150aは、当該指示に応じてストレージ装置300と通信し、仮想アダプタ160b,160cを介したストレージ装置300の利用を可能な状態とする。これにより、仮想マシン150は、仮想アダプタ160bを介してストレージ装置300へアクセス可能となる。仮想マシン150aは、仮想アダプタ160cを介してストレージ装置300へアクセス可能となる。
(ステップST157)制御部370は、冗長グループ管理テーブルを参照して、仮想アダプタ160,160aによるIO要求状態が“停止”となったことを確認する。制御部370は、仮想マシン150,150aに仮想アダプタの切り換えを指示する。当該指示に応じて、仮想マシン150は、仮想アダプタ160から仮想アダプタ160bへの切り換えを行う。また、仮想マシン150aは、仮想アダプタ160aから仮想アダプタ160cへの切り換えを行う。
(ステップST158)制御部370は、FCインタフェース106を共用する全ての仮想マシンが他のFCインタフェースに移管済であり、FCインタフェース106上の全ての仮想アダプタで通信が停止されたことを確認する。制御部370は、ハイパーバイザ140にFCインタフェース106の停止を指示する。ハイパーバイザ140は、FCインタフェース106を閉塞させて電源OFFし、停止させる。
(ステップST159)制御部370は、ハイパーバイザ140にFCインタフェース106の切り離しを指示する。ハイパーバイザ140は、FCインタフェース106をサーバ装置100から切り離す。FCインタフェース106は、サーバ装置100から取り外し可能な状態となる。
このようにして、制御部370は、仮想マシン150が仮想アダプタ160で故障を検知した場合に、FCインタフェース106を共用する仮想マシン150aの仮想アダプタの切り換えを制御する。ここで、ステップST157では、制御部370は仮想アダプタ160,160aのうち、IO要求状態が“停止”になった方から順にアダプタの切り換えを指示できる。
これにより、第2の実施の形態と同様の効果を得ることができる。また、ストレージ装置300の判断で仮想アダプタの故障を検知し、アダプタ切り換えの制御を行うことで、切り換え処理を高速に行うことができる。
[第7の実施の形態]
次に、第7の実施の形態を説明する。前述の第2〜第6の実施の形態との相違点を主に説明し、同様の事項は説明を省略する。
第2〜第6の実施の形態では、サーバ装置100が物理アダプタとしてFCインタフェース106,106aを備える例を示した。一方で、他の種類の物理アダプタについても制御部141の機能を利用できる。その一例として、第7の実施の形態では、FCoE(FC Over Ethernet、Ethernetは登録商標)インタフェースを備えるサーバ装置に制御部141の機能を適用する場合を示す。
ここで、第7の実施の形態の情報処理システムの全体構成は、図2で説明した第2の実施の形態の情報処理システムの全体構成と同様であるため説明を省略する。ただし、第7の実施の形態の情報処理システムでは、サーバ装置100に代えてサーバ装置100bを、FCスイッチ装置200に代えてFCoEスイッチ装置200aを含む。更に、FCoEスイッチ装置200aは、ネットワーク20に接続される。FCoEスイッチ装置200aは、CEE(Converged Enhanced Ethernet)スイッチ装置を用いてもよい。
また、第7の実施の形態のサーバ装置100b、FCoEスイッチ装置200a、ストレージ装置および管理端末装置のハードウェア例は、図3〜5で説明した通りであるため説明を省略する。第7の実施の形態では、ストレージ装置および管理端末装置を第2の実施の形態と同一の符号により指し示す。ここで、サーバ装置100bは、FCインタフェース106,106aに代えて、FCoEインタフェース106b,106cを有する。
ここで、FCoEは、イーサネット(登録商標)上でFCのデータを伝送するための技術である。FCoEでは、FCのデータをイーサネットフレームにカプセル化して伝送できる。FCoEスイッチ装置200aは、ストレージ装置300との間ではFCによる通信を行う。ストレージ装置300が、FCoEによる接続であれば、FCoEによる通信でもよい。FCoEスイッチ装置300aは、ネットワーク20との間ではイーサネットによる通信を行う。FCoEインタフェース106b,106cは、HBAの一例である。
図25は、第7の実施の形態のサーバ装置の機能を示すブロック図である。サーバ装置100bは、管理情報記憶部130、ハイパーバイザ140、仮想マシン150d,150e、FC仮想アダプタ160d,160e,160f,160gおよびNIC仮想アダプタ170,170a,170b,170cを有する。
管理情報記憶部130、ハイパーバイザ140および仮想マシン150d,150eの機能は、CPU111が所定のプログラムを実行することによりサーバ装置100b上に実現される。また、FC仮想アダプタ160d,160eおよびNIC仮想アダプタ170,170aの機能は、FCoEインタフェース106b上の制御装置が所定のプログラムを実行することにより、FCoEインタフェース106b上に実現される。更に、FC仮想アダプタ160f,160gおよびNIC仮想アダプタ170b,170cの機能は、FCoEインタフェース106c上の制御装置が所定のプログラムを実行することにより、FCoEインタフェース106c上に実現される。ただし、これらのユニットの全部または一部を専用のハードウェアにより実現してもよい。
管理情報記憶部130は、第2の実施の形態の管理情報記憶部130に対応する。ハイパーバイザ140は、第2の実施の形態のハイパーバイザ140に対応する。
仮想マシン150d,150eは、第2の実施の形態の仮想マシン150,150aに対応する。仮想マシン150dは、OS151、アダプタドライバ152,152d、冗長パス制御部153,153dおよび接続先装置ドライバ154を有する。
OS151および接続先装置ドライバ154は、第2の実施の形態のOS151および接続先装置ドライバ154に対応する。
アダプタドライバ152は、OS151上からFC仮想アダプタを利用するためのソフトウェアである。アダプタドライバ152dは、OS151上からNIC仮想アダプタを利用するためのソフトウェアである。
冗長パス制御部153は、FC仮想アダプタを冗長化して、仮想マシン150dにおけるFC通信路の信頼性を向上するソフトウェアである。冗長パス制御部153dは、NIC仮想アダプタを冗長化して、仮想マシン150dにおけるイーサネット通信路の信頼性を向上するソフトウェアである。
仮想マシン150eは、OS151a、アダプタドライバ152a,152e、冗長パス制御部153a,153eおよび接続先装置ドライバ154aを有する。
OS151aおよび接続先装置ドライバ154aは、第2の実施の形態のOS151aおよび接続先装置ドライバ154aに対応する。
アダプタドライバ152a,152eは、アダプタドライバ152,152dに対応する。冗長パス制御部153a,153eは、冗長パス制御部153,153dに対応する。
FC仮想アダプタ160d,160e,160f,160gは、FCoEインタフェース106b,106c上のリソースにより実現された仮想的なFC用のアダプタである(アクセス部の一例である)。仮想マシン150d,150eは、FC仮想アダプタ160d,160e,160f,160gを利用して、ストレージ装置300とFCによるデータ通信を行える。
NIC仮想アダプタ170,170a,170b,170cは、FCoEインタフェース106b,106c上のリソースにより実現された仮想的なNIC用のアダプタである(アクセス部の一例である)。仮想マシン150d,150eは、NIC仮想アダプタ170,170a,170b,170cを利用して、ネットワーク20に接続された情報処理装置とイーサネットによるデータ通信を行える。
FCoEインタフェース106b上のFC仮想アダプタ160d,160eおよびNIC仮想アダプタ170,170aは、単一の物理ポートで実現される(仮想ポート4つ)。なお、例えば、FC仮想アダプタ160d,160eで1つの物理ポート(仮想ポート2つ)、NIC仮想アダプタ170,170aで1つの物理ポート(仮想ポート2つ)、というように2つの物理ポートで実現してもよい。このような構成によっても、制御部141は第2の実施の形態と同一の処理を行える。具体的には次の通りである。
例えば、管理情報記憶部130に記憶された接続構成管理テーブル131で、仮想マシン150dにFC仮想アダプタ160dおよびNIC仮想アダプタ170が割り当てられる。同様に、仮想マシン150eにFC仮想アダプタ160eおよびNIC仮想アダプタ170aが割り当てられる。
また、管理情報記憶部130に記憶された冗長グループ管理テーブル132では、FC仮想アダプタ160dとFC仮想アダプタ160fとが冗長グループのペアとして設定される。FC仮想アダプタ160eとFC仮想アダプタ160gとが冗長グループのペアとして設定される。NIC仮想アダプタ170とNIC仮想アダプタ170bとが冗長グループのペアとして設定される。NIC仮想アダプタ170aとNIC仮想アダプタ170cとが冗長グループのペアとして設定される。
そして、制御部141が仮想マシン150dの冗長パス制御部153からFC仮想アダプタ160dの故障の通知を受けたとする。すると、制御部141は、接続構成管理テーブル131を参照して、FCoEインタフェース106bを仮想マシン150dと共用する仮想マシン150eを特定する。制御部141は、仮想マシン150dにつき、FC仮想アダプタ160fおよびNIC仮想アダプタ170bを割り当てる。制御部141は、仮想マシン150eにつき、FC仮想アダプタ160gおよびNIC仮想アダプタ170cを割り当てる。制御部141は、仮想マシン150d,150eに当該割り当てに基づくアダプタ切り換えを指示する。
なお、切り換えの際、制御部141は、第2〜第6の実施の形態と同様に、アダプタドライバ152,152a,152d,152eおよび冗長パス制御部153,153a,153d,153eに対してアダプタドライバおよび接続先装置の組み込みを事前に行う。
冗長パス制御部153dは、アダプタ切り換えの指示を受けると、NIC仮想アダプタ170からNIC仮想アダプタ170bへNIC仮想アダプタを切り換える。
また、冗長パス制御部153aは、アダプタ切り換えの指示を受けると、FC仮想アダプタ160eからFC仮想アダプタ160gへFC仮想アダプタを切り換える。更に、冗長パス制御部153eは、NIC仮想アダプタ170aからNIC仮想アダプタ170cへNIC仮想アダプタを切り換える。
これにより、第2の実施の形態と同様の効果を得ることができる。特に、同一物理アダプタに異なるインタフェースをもつ仮想アダプタに対して切り換え制御を行える。FC仮想アダプタ160dの故障の通知を受けた際に、仮想マシン150dに対してNIC仮想アダプタ170の切り換えを指示する。このため、冗長パス制御部153dでNIC仮想アダプタ170の故障が検知されない場合でも、冗長パス制御部153dは当該指示に応じてNIC仮想アダプタ170bへの切り換えを行える。
なお、制御部141が冗長パス制御部153dからNIC仮想アダプタ170の故障の通知を受けた場合も、制御部141は同様にして、仮想マシン150d,150eのアダプタの切り換えを制御する。
ここで、冗長パス制御部153,153a,153d,153eは、第2の実施の形態と同様に、仮想アダプタの切り換え前後で仮想マシン150d,150eがストレージ装置300にアクセス可能であることを確認した後に、各仮想アダプタの切り換えを行う。また、冗長パス制御部153,153a,153d,153eは、仮想マシン150d,150eが各仮想アダプタによりストレージ装置300にアクセス中でないタイミングで、各仮想アダプタの切り換えを行う。
更に、第3の実施の形態と同様に、冗長パス制御部153,153a,153d,153eの機能を制御部141が備えてもよい。また、FC仮想アダプタおよびNIC仮想アダプタのように異なる種類のプロトコルで通信する仮想アダプタを示したが、同一のプロトコルでもよい。
また、第2〜第7の実施の形態では、FCインタフェースやFCoEインタフェースを用いる場合を例示したが、それ以外の物理アダプタを用いても同様である。例えば、制御部141は、NICインタフェースやSASインタフェース、Infinibandインタフェース、PCI Expressインタフェースに対しても、同様にしてアダプタ切り換えの制御を行える。
上記については単に本発明の原理を示すものである。更に、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
1 情報処理装置
1a,1b 仮想マシン
1c,1d インタフェース部
1e 記憶部
1f 制御部
2 デバイス
本発明は情報処理装置、仮想マシン制御方法およびプログラムに関する。
現在、情報処理の分野では、物理的なコンピュータ(物理マシンや物理ホストと呼ぶことがある)上で、複数の仮想的なコンピュータ(仮想マシンや論理ホストと呼ぶことがある)を動作させる仮想化技術が利用されている。各仮想マシン上では、オペレーティングシステム(OS:Operating System)などのソフトウェアを実行できる。仮想化技術を利用する物理マシンは、複数の仮想マシンを管理するためのソフトウェアを実行する。
例えば、ハイパーバイザと呼ばれるソフトウェアが、CPU(Central Processing Unit)の処理能力やRAM(Random Access Memory)の記憶領域を、演算のリソースとして複数の仮想マシンに割り振る。また、例えば、ハイパーバイザが、NIC(Network Interface Card)やHBA(Host Bus Adapter)などのインタフェース部の処理能力を、通信のリソースとして複数の仮想マシンに割り振ることがある。仮想マシンは、自身に割り振られた通信のリソースを用いて、インタフェース部を介してデバイスにアクセスできる。
なお、CPUに接続されるホストアダプタと記憶装置に接続されるディスクアダプタと共通バスとを二重化し、障害発生時に縮退運転できるようにした記憶システムが提案されている。また、複数のアダプタを含むアダプタブロックを二重化し、一方のアダプタブロック内の1つのアダプタが故障すると、アダプタブロック単位で使用するアダプタを切り換える情報処理装置が提案されている。また、複数の仮想マシンが1つのHBAを共用するとき、障害回数の多い仮想マシンのI/O(Input/Output)要求を遮断することで他の仮想マシンのI/O要求への影響を抑制する仮想計算機システムが提案されている。
特開2004−303256号公報 特開平10−312301号公報 特開2009−294758号公報
ところで、上記のように、複数の仮想マシンが動作する情報処理装置では、デバイスへのアクセスのため2以上の仮想マシンが1つのインタフェース部を共用することがある。このとき、1つの仮想マシンで当該インタフェース部を用いたアクセスにエラーが発生しても、他の仮想マシンではエラーが発生しない場合が生じ得る。例えば、インタフェース部が備えるメモリ領域などのリソースを分割して2以上の仮想マシンに割り振った場合、ある仮想マシンに割り振ったメモリ領域のみに障害が発生することが考えられる。
しかし、1つのインタフェース部を共用する2以上の仮想マシンの一部のみでエラーが検出された場合に、インタフェース部の保守が容易でないという問題がある。例えば、各仮想マシンは、情報処理が互いに干渉しないよう他の仮想マシンから分離されていることが多く、自身がエラーを検出しない限り、他の仮想マシンでのエラーの検出状況にかかわらず当該インタフェース部を使用し続ける可能性がある。この状態では、エラーが検出されたインタフェース部の停止や交換などの保守を円滑に行えないおそれがある。
本発明はこのような点に鑑みてなされたものであり、情報処理装置が備えるインタフェース部の保守を円滑に行うことができる情報処理装置、仮想マシン制御方法およびプログラムを提供することを目的とする。
複数の仮想マシンが動作可能であり複数の仮想マシンからデバイスへのアクセスに用いられる複数のインタフェース部を搭載可能な情報処理装置が提供される。この情報処理装置は、記憶部と制御部とを有する。記憶部は、複数のインタフェース部のうち複数の仮想マシンそれぞれがアクセスに用いるインタフェース部を示す情報を記憶する。制御部は、第1の仮想マシンにおいて第1のインタフェース部を用いたアクセスにエラーが発生すると、記憶部を参照して、第1のインタフェース部を用いる第2の仮想マシンを判定し、第2の仮想マシンが用いるインタフェース部を、第1のインタフェース部から情報処理装置に搭載した第2のインタフェース部に切り換える。
また、複数の仮想マシンが動作可能であり複数の仮想マシンからデバイスへのアクセスに用いられる複数のインタフェース部を搭載可能な情報処理装置、または、情報処理装置と通信する他の情報処理装置が実行する仮想マシン制御方法が提供される。この仮想マシン制御方法では、第1の仮想マシンにおいて第1のインタフェース部を用いたアクセスにエラーが発生したことを検知する。複数のインタフェース部のうち複数の仮想マシンそれぞれがアクセスに用いるインタフェース部を示す情報を記憶する記憶装置を参照して、第1のインタフェース部を用いる第2の仮想マシンを判定する。第2の仮想マシンが用いるインタフェース部を、第1のインタフェース部から情報処理装置に搭載した第2のインタフェース部に切り換える。
また、複数の仮想マシンが動作可能であり複数の仮想マシンからデバイスへのアクセスに用いられる複数のインタフェース部を搭載可能なコンピュータを制御するためのプログラムが提供される。このプログラムは、コンピュータまたはコンピュータと通信する他のコンピュータに、以下の処理を実行させる。第1の仮想マシンにおいて第1のインタフェース部を用いたアクセスにエラーが発生したことを検知する。複数のインタフェース部のうち複数の仮想マシンそれぞれがアクセスに用いるインタフェース部を示す情報を記憶する記憶装置を参照して、第1のインタフェース部を用いる第2の仮想マシンを判定する。第2の仮想マシンが用いるインタフェース部を、第1のインタフェース部からコンピュータに搭載した第2のインタフェース部に切り換える。
上記情報処理装置、仮想マシン制御方法およびプログラムによれば、情報処理装置が備えるインタフェース部の保守を円滑に行うことができる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
第1の実施の形態の情報処理装置を示す図である。 第2の実施の形態の情報処理システムの全体構成を示す図である。 第2の実施の形態のサーバ装置のハードウェア例を示す図である。 第2の実施の形態のFCスイッチ装置のハードウェア例を示す図である。 第2の実施の形態のストレージ装置のハードウェア例を示す図である。 仮想マシンの配置例を示す図である。 ハードウェアの割当例を示すブロック図である。 第2の実施の形態のサーバ装置の機能を示すブロック図である。 接続構成管理テーブルの例を示す図である。 冗長グループ管理テーブルの例を示す図である。 第2の実施の形態の障害検知時の全体処理を示すフローチャートである。 第2の実施の形態の障害検知時の全体処理を示すシーケンス図である。 第2の実施の形態の物理アダプタ追加処理を示すフローチャートである。 第2の実施の形態の物理アダプタ追加処理を示すシーケンス図である。 第2の実施の形態の接続先装置追加処理を示すフローチャートである。 第2の実施の形態の接続先装置追加処理を示すシーケンス図である。 第2の実施の形態のアダプタ切り換え処理を示すフローチャートである。 第3の実施の形態のサーバ装置の機能を示すブロック図である。 第4の実施の形態の管理端末装置の機能を示すブロック図である。 第4の実施の形態の障害検知時の全体処理を示すシーケンス図である。 第5の実施の形態のFCスイッチ装置の機能を示すブロック図である。 第5の実施の形態の障害検知時の全体処理を示すシーケンス図である。 第6の実施の形態のストレージ装置の機能を示すブロック図である。 第6の実施の形態の障害検知時の全体処理を示すシーケンス図である。 第7の実施の形態のサーバ装置の機能を示すブロック図である。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理装置を示す図である。第1の実施の形態の情報処理装置1では、仮想マシン1a,1bを含む複数の仮想マシンが動作可能である。また、情報処理装置1には、当該複数の仮想マシンからデバイス2へのアクセスに用いられる、インタフェース部1c,1dを含む複数のインタフェース部を搭載可能である。デバイス2は、例えば、通信装置、ストレージ装置、他の情報処理装置などである。情報処理装置1は、インタフェース部1c,1d、記憶部1eおよび制御部1fを有する。
インタフェース部1c,1dは、信号処理を行い、仮想マシン1a,1bからデバイス2へのアクセスに用いられる。インタフェース部1c,1dは、NICやHBAなどのアダプタとして実装してもよい。インタフェース部1c,1dとデバイス2とは、ケーブルで直接接続されてもよいし、スイッチなどの中継装置を介して接続されてもよい。なお、インタフェース部1dは、インタフェース部1cが故障したときに使用される予備のものでもよく、インタフェース部1cが故障した後に情報処理装置1に追加されてもよい。
記憶部1eは、情報処理装置1に搭載可能な複数のインタフェース部のうち、複数の仮想マシンそれぞれがアクセスに用いるインタフェース部を示す情報を記憶する。記憶部1eは、不揮発NVRAM(Non Volatile RAM)やRAM、HDD(Hard Disk Drive)として実装してもよい。なお、第1の実施の形態では、インタフェース部1c,1dが正常に動作しているとき、仮想マシン1a,1bはインタフェース部1cを用いてデバイス2にアクセスするものとする。
制御部1fは、情報処理装置1で動作する複数の仮想マシンへのインタフェース部1c,1dの割り当てを制御する。制御部1fは、CPUとRAMを用いて実行されるプログラムとして実装してもよく、ハイパーバイザ内のモジュールとして実装してもよい。制御部1fは、仮想マシン1aにおいてインタフェース部1cを用いたアクセスにエラーが発生したことを検知する。すると、制御部1fは、記憶部1eを参照して、仮想マシン1aの他にインタフェース部1cを用いる仮想マシン1bを検索する。そして、仮想マシン1bが用いるインタフェース部を、インタフェース部1cからインタフェース部1dに切り換える。制御部1fは、仮想マシン1aが用いるインタフェース部も併せて、インタフェース部1cからインタフェース部1dに切り換えてもよい。
ここで、制御部1fは、インタフェース部1cが備える複数のリソース(例えば、複数のメモリ領域など)のうち、第1のリソースを仮想マシン1aに割り当て、第2のリソースを仮想マシン1bに割り当ててもよい。仮想マシン1aにおいて第1のリソースを用いたアクセスにエラーが発生すると、制御部1fは、第2のリソースについてエラーが発生していなくても、仮想マシン1bが用いるインタフェース部を切り換えることができる。
また、制御部1fは、仮想マシン1bがデバイス2にアクセス中でないタイミングで、インタフェース部1dへの切り換えが行われるように制御してもよい。そのため、制御部1fは、仮想マシン1bがアクセス中であるか否かを示す情報を記憶部1eに格納して、アクセス状態を管理してもよい。また、制御部1fは、インタフェース部1cを用いてアクセス可能であったデバイスに、インタフェース部1dを用いてアクセス可能であることが確認されてから、インタフェース部1dへの切り換えが行われるよう制御してもよい。また、制御部1fは、仮想マシン1aからの通知に基づいて、仮想マシン1aにおいてインタフェース部1cを用いたアクセスにエラーが発生したことを検知してもよい。
なお、第1の実施の形態では、記憶部1eおよび制御部1fを、仮想マシン1a,1bが動作する情報処理装置1に設けたが、情報処理装置1と通信する他の装置に設けてもよい。例えば、情報処理装置1と通信する通信装置、ストレージ装置、コンピュータなどが記憶部1eおよび制御部1fを備え、情報処理装置1を制御してもよい。また、記憶部1eは、情報処理装置1(または、制御部1fを備える他の装置)の外部に設けてもよい。
第1の実施の形態の情報処理装置1によれば、仮想マシン1aにおいてインタフェース部1cを用いたアクセスにエラーが発生したことが検知される。複数のインタフェース部のうち複数の仮想マシンそれぞれがアクセスに用いるインタフェース部を示す情報を記憶する記憶部1eが参照されて、エラーが発生したインタフェース部1cを用いる仮想マシン1bが判定される。判定された仮想マシン1bの用いるインタフェース部が、インタフェース部1cからインタフェース部1dに切り換えられる。
これにより、複数の仮想マシンが動作可能な情報処理装置1におけるインタフェース部1c,1dの保守を円滑に行うことができる。例えば、仮想マシン1aでインタフェース部1cについてのエラーが検出されると、インタフェース部1cを共用する仮想マシン1bでエラーが検出されなくても、仮想マシン1bの使用するインタフェース部が切り換えられる。よって、インタフェース部1cは、エラーを認識した仮想マシン1aに加えて仮想マシン1bからも使用されなくなり、停止させて情報処理装置1から取り外すことが容易となる。また、情報処理装置1には複数のインタフェース部を搭載でき、仮想マシン1bを停止させずにインタフェース部1cを交換することが可能となる。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムの全体構成を示す図である。この情報処理システムは、サーバ装置100、FC(FC:Fibre Channel)スイッチ装置200、ストレージ装置300および管理端末装置400を含む。サーバ装置100は、ネットワーク10に接続されている。
サーバ装置100は、複数の仮想マシンが動作可能なサーバコンピュータである。サーバ装置100は、複数の仮想マシンの起動や停止を管理する。サーバ装置100は、ネットワーク10を介して、ネットワーク10に接続されたクライアント装置で仮想マシンの機能を利用可能とする。
FCスイッチ装置200は、FC用の複数のインタフェースを備え、各インタフェース間を中継する通信経路切り換え機である。FCスイッチ装置200は、サーバ装置100およびストレージ装置300の間のデータ通信を中継する。サーバ装置100とFCスイッチ装置200との間の通信は、FCによる通信の他にも、I2C(Inter Integrated Circuit)やLAN(Local Area Network)などを介して行える。
ストレージ装置300は、サーバ装置100が利用するデータやプログラムを記憶する記憶装置である。ストレージ装置300は、サーバ装置100の要求に応じて、自身が記憶する各種のデータをサーバ装置100に送信する。ストレージ装置300は、サーバ装置100の接続先装置の一例である。
管理端末装置400は、管理者が操作するコンピュータである。管理端末装置400は、サーバ装置100に接続されている。管理端末装置400は、管理者がサーバ装置100に対する指示を入力するためのものである。
図3は、第2の実施の形態のサーバ装置のハードウェア例を示す図である。サーバ装置100は、CPUボード101、クロスバースイッチ102、PCI Express(Peripheral Component Interconnect Express)コントローラ103、SAS(Serial Attached SCSI(Small Computer System Interface))インタフェース104、HDD105、FCインタフェース106,106a、ネットワークインタフェース107、SVP(SerVice Processor)108およびディスクドライブ109を有する。
CPUボード101は、CPUやメモリを備えた情報処理部である。CPUボード101は、CPU111、RAM112およびNVRAM113を有する。
CPU111は、ハイパーバイザのプログラム、OSプログラムおよびアプリケーションプログラムを実行して、仮想マシンや当該仮想マシン上のアプリケーションを実現する演算装置である。なお、CPUボード101は複数のCPUを備えてもよい。
RAM112は、CPU111が実行するハイパーバイザのプログラム、OSプログラムおよびアプリケーションプログラムの少なくとも一部を一時的に記憶する揮発性の記憶装置である。なお、CPUボード101は複数のRAMを備えてもよい。
NVRAM113は、ハイパーバイザの処理に用いるデータを記憶する不揮発性の記憶装置である。なお、CPUボード101は複数のNVRAMを備えてもよい。
また、サーバ装置100は、複数のCPUボードを備えてもよい。
クロスバースイッチ102は、CPUボード101、PCI Expressコントローラ103の間のデータ通信を中継する。
PCI Expressコントローラ103は、クロスバースイッチ102とSASインタフェース104、FCインタフェース106,106aおよびネットワークインタフェース107との間のデータ通信を制御する。
SASインタフェース104は、HDD105とディスクドライブ109に接続され、HDD105とディスクドライブ109に対するデータの入出力を制御する。ディスクドライブ109は、SATA(Serial ATA)プロトコルをカプセリングして入出力制御してもよい。
HDD105は、ハイパーバイザのプログラムやハイパーバイザの処理に用いられるデータを記憶する不揮発性の記憶装置である。HDD105は、CPU111の命令に従って、内蔵の磁気ディスクに対する読み書きを行う。なお、サーバ装置100は、HDD以外の不揮発性の記憶装置(例えば、SSD(Solid State Drive))を備えていてもよく、複数の不揮発性記憶装置を備えてもよい。また、CPUボード101で実行するハイパーバイザのプログラムをNVRAM113に格納してもよい。
FCインタフェース106,106aは、FCスイッチ装置200と接続され、FCスイッチ装置200との間のデータ通信を制御するHBAである。FCインタフェース106,106aは、当該制御を行う制御装置を有している。
ネットワークインタフェース107は、ネットワーク10と接続され、ネットワーク10を介した他の装置とのデータ通信を制御する。
SVP108は、サーバ装置100を管理するための装置である。SVP108は、サーバ装置のCPUボード101、クロスバースイッチ102、PCI Expressコントローラ103とI2Cなどで接続される。SVP108は、管理端末装置400に接続される。SVP108は、サーバ装置100を管理するためのGUI(Graphical User Interface)を管理端末装置400に表示させる。管理者は、管理端末装置400で当該GUIを操作してサーバ装置100に対する指示を行える。
ディスクドライブ109は、記録媒体12に記録されたプログラムやデータを読み取る駆動装置である。記録媒体12として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。ディスクドライブ109は、例えば、CPU111の命令に従って、記録媒体12から読み取ったプログラムやデータをRAM112またはHDD105に格納する。
なお、管理端末装置400も、サーバ装置100と同様に、CPU、ROM、RAM、HDD、ネットワークインタフェースおよびディスクドライブなどを有する。管理端末装置400上のCPUが、所定のプログラムを実行することで、管理端末装置400の機能が実現される。
図4は、第2の実施の形態のFCスイッチ装置のハードウェア例を示す図である。FCスイッチ装置200は、ルーティングコントローラ201、メモリ202、SVP203、クロスバースイッチ204、I/F(InterFace)コントローラ205,205a,205b,205c,205d,205e、バッファ206,206a,206b,206c,206d,206eおよびポート207,207a,207b,207c,207d,207eを有する。
なお、以下ではI/Fコントローラ205、バッファ206およびポート207について説明するが、I/Fコントローラ205a,205b,205c,205d,205e、バッファ206a,206b,206c,206d,206eおよびポート207a,207b,207c,207d,207eに関しても同様である。
ルーティングコントローラ201は、複数のSAN(Storage Area Network)間でのデータ通信を制御する。
メモリ202は、ルーティングコントローラ201の処理に用いるデータを記憶する。例えば、SAN間を接続するためのルーティングテーブルやFCのゾーン設定の情報を記憶する。ここで、ゾーンとは、FCスイッチ装置200内の通信パスを分割して、トラフィックを分離するものである。
SVP203は、FCスイッチ装置200を管理するための装置である。SVP203は、FCスイッチ装置200上の各種の管理機能(例えば、通信の障害管理や電源管理)を担う。SVP203は、FCスイッチ装置200を管理するための管理端末装置(不図示)と接続されてもよい。その場合、SVP203は、当該管理端末装置に管理用のGUIを表示させることができる。管理者は、当該GUIを操作して、FCスイッチ装置200に指示を入力することもできる。また、SVP203は、当該SVP203の処理に用いるプログラムやデータを格納するためのメモリを有している。これらプログラムやデータをメモリ202に格納してもよい。
クロスバースイッチ204は、各ポートを介した装置間のデータ通信を中継する。
I/Fコントローラ205は、各ポート間のデータの流れを制御する。
バッファ206は、データの流れを制御するためにデータを一時的に格納するための記憶領域である。
ポート207は、外部の装置と接続するためのアダプタである。ポート207は、FCケーブルを介してサーバ装置100と接続されている。ポート207cは、FCケーブルを介してストレージ装置300と接続されている。ポート207dは、FCケーブルを介してストレージ装置300と接続されている。
図5は、第2の実施の形態のストレージ装置のハードウェア例を示す図である。ストレージ装置300は、RAID(Redundant Arrays of Inexpensive Disks)制御部301、ストレージ部302、I/Fコントローラ303,303a、SVP304を有する。
RAID制御部301は、RAIDを実現するための装置である。RAID制御部301は、ストレージ部302に設けられた複数のHDDを論理的な1つの記憶装置として、サーバ装置100上の仮想マシンから利用可能にする。RAID制御部301は、制御ボード310,310a、I/Fコントローラ320,320a、バッファ330,330aおよびポート340,340aを有する。
制御ボード310,310aは、ポート340,340aごとに設けられている。制御ボード310,310aは、ポート340,340aを介してサーバ装置100から受けたリクエストに応じて、ストレージ部302にアクセスし、データの読み書きを行う。制御ボード310は、CPU311、メモリ312およびPCI Expressコントローラ313を有する。
CPU311は、制御ボード310の処理を制御する。
メモリ312は、CPU311の処理に用いるデータを記憶する。
PCI Expressコントローラ313は、I/Fコントローラ303を介してストレージ部302に接続する。PCI Expressコントローラ313は、I/Fコントローラ320に接続する。PCI Expressコントローラ313は、インタフェース間の通信を中継する。
制御ボード310aは、CPU311a、メモリ312aおよびPCI Expressコントローラ313aを有する。CPU311a、メモリ312aおよびPCI Expressコントローラ313aは、CPU311、メモリ312およびPCI Expressコントローラ313に対応する。
I/Fコントローラ320は、ポート340から入力、あるいはポート340に出力するデータの流れを制御する。I/Fコントローラ320aも同様に、ポート340aとの間のデータの流れを制御する。
バッファ330は、I/Fコントローラ320およびポート340の間のデータの流れを制御する。バッファ330aも同様に、I/Fコントローラ320aおよびポート340aの間のデータの流れを制御する。
ポート340は、外部の装置と接続するためのアダプタである。ポート340は、FCケーブルを介してFCスイッチ装置200のポート207cと接続されている。ポート340aは、FCケーブルを介してFCスイッチ装置200のポート207dに接続されている。
ストレージ部302は、I/Fスイッチ350,350aおよびHDD351,351a,352,352a,353,353aを有する。
I/Fスイッチ350,350aは、制御ボード310,310aがアクセスするHDDとI/Fコントローラ303,303aの通信制御を行う。
HDD351,351a,352,352a,353,353aは、CPU311,311aの命令に従って、内蔵の磁気ディスクに対する読み書きを行う。HDD351,352,353は、I/Fスイッチ350に接続されている。HDD351a,352a,353aは、I/Fスイッチ350aに接続されている。なお、ストレージ部302は、HDD以外の不揮発性の記憶装置(例えば、SSD)を備えていてもよい。
I/Fコントローラ303,303aは、RAID制御部301とストレージ部302との間のデータ通信を中継する。I/Fコントローラ303は、PCI Expressコントローラ313およびI/Fスイッチ350,350aと接続される。I/Fコントローラ303aは、PCI Expressコントローラ313aおよびI/Fスイッチ350,350aと接続される。
SVP304は、ストレージ装置300を管理するための装置である。SVP304は、ストレージ装置300上の各種の機能(例えば、ディスクの障害管理や電源管理など)を担う。SVP304は、ストレージ装置300を管理するための管理端末装置(不図示)と接続されてもよい。その場合、SVP304は、当該管理端末装置に管理用のGUIを表示させることができる。管理者は、当該GUIを操作して、ストレージ装置300に指示を入力することもできる。また、SVP304は、当該SVP304の処理に用いるプログラムやデータを格納するためのメモリを有している。
図6は、仮想マシンの配置例を示す図である。サーバ装置100は、ハードウェア120、ハイパーバイザ140および仮想マシン150,150aを有する。
ハードウェア120は、サーバ装置100が備える物理的なリソースである。ハードウェア120は、CPUボード101、PCI Expressコントローラ103、SASインタフェース104、HDD105、FCインタフェース106,106a、ネットワークインタフェース107およびディスクドライブ109を含む。
ハイパーバイザ140は、仮想マシンを実現する。ハイパーバイザ140は、各仮想マシンに対するハードウェア120の割り当てを行い、各仮想マシンの起動・停止を制御する。また、ハイパーバイザ140は、各仮想マシンがハードウェア120を共同で利用できるよう各仮想マシンのハードウェア120へのアクセスを調停する。更に、ハイパーバイザ140は各仮想マシンに割り当てたハードウェア120の使用状況を監視する。
仮想マシン150,150aは、ハイパーバイザ140によりサーバ装置100上に実現された仮想マシンである。仮想マシン150,150aは、それぞれ独立のOSを実行している。仮想マシン150,150aが実行するOSはそれぞれ同一でもよいし、異なっていてもよい。また、サーバ装置100は3以上の仮想マシンを実行してもよい。
図7は、ハードウェアの割当例を示すブロック図である。仮想マシン150,150aはサーバ装置100上のハードウェア120を論理的に分割したリソースにより実現される。図7ではハードウェア120に含まれる主要なものとして、CPU111、RAM112およびFCインタフェース106を示している。
CPU111は、CPUリソースl1,l2,l3,l4に時分割される。CPU111は、領域分割してもよい。例えば、CPUリソースl1,l2は仮想マシン150に割り当てられ、CPUリソースl3,l4は仮想マシン150aに割り当てられる。
RAM112は、RAMリソースm1,m2に領域分割される。例えば、RAMリソースm1が仮想マシン150に割り当てられ、RAMリソースm2が仮想マシン150aに割り当てられる。
FCインタフェース106は、FCインタフェースリソースn1,n2に分割される。例えば、FCインタフェースリソースn1,n2には、FCインタフェース106上の制御装置の処理能力を時分割したリソースが含まれる。また、例えば、FCインタフェースリソースn1,n2には、バッファ用に確保されたFCインタフェース106上の物理的なメモリを領域分割したリソースが含まれる。例えば、FCインタフェースリソースn1が仮想マシン150に割り当てられ、FCインタフェースリソースn2が仮想マシン150aに割り当てられる。FCインタフェース106を物理HBAとすれば、FCインタフェースリソースn1,n2は当該物理HBA上で実現される仮想HBAである。
図8は、第2の実施の形態のサーバ装置の機能を示すブロック図である。サーバ装置100は、管理情報記憶部130、ハイパーバイザ140、仮想マシン150,150aおよび仮想アダプタ160,160a,160b,160cを有する。
管理情報記憶部130、ハイパーバイザ140および仮想マシン150,150aの機能は、CPU111が所定のプログラムを実行することによりサーバ装置100上に実現される。また、仮想アダプタ160,160aの機能は、FCインタフェース106上の制御装置が所定のプログラムを実行することによりFCインタフェース106上に実現される。更に、仮想アダプタ160b,160cの機能は、FCインタフェース106a上の制御装置が所定のプログラムを実行することにより、FCインタフェース106a上に実現される。ただし、これらのユニットの全部または一部を専用のハードウェアにより実現してもよい。
管理情報記憶部130は、管理情報を記憶する。管理情報には、接続構成管理テーブルおよび冗長グループ管理テーブルが含まれる。接続構成管理テーブルは、仮想マシンと仮想アダプタとの対応関係を管理するためのデータである。冗長グループ管理テーブルは、複数の仮想アダプタを束ねた冗長グループを管理するためのデータである。
ハイパーバイザ140は、制御部141を有する。制御部141は、仮想マシン150,150aの通信パスを制御する。制御部141は、仮想マシンからFCインタフェースを介した通信で障害が発生した旨の通知を受ける。すると、制御部141は、管理情報記憶部130を参照して、当該FCインタフェースを用いて通信する他の仮想マシンを特定する。制御部141は、特定した他の仮想マシンを他のインタフェースに割り当てる。
仮想マシン150は、OS151、アダプタドライバ152、冗長パス制御部153および接続先装置ドライバ154を有する。
OS151は、仮想マシン150上で動作する基本プログラムである。
アダプタドライバ152は、OS151上から仮想アダプタを利用するためのソフトウェアである。
冗長パス制御部153は、仮想アダプタを冗長化して、仮想マシン150における通信路の信頼性を向上するソフトウェアである。冗長パス制御部153は、複数の仮想アダプタを現用系と待機系とに区別して管理する。冗長パス制御部153は、現用系の仮想アダプタで故障が発生して仮想マシン150が通信不能となった場合に、仮想マシン150が利用する仮想アダプタを待機系に切り換える。また、冗長パス制御部153は、現用系の仮想アダプタで故障を検知していなくても、制御部141からアダプタの切り換え指示を受けると、仮想マシン150が利用するアダプタを待機系に切り換える。
接続先装置ドライバ154は、仮想マシン150上からストレージ装置300を利用するためのドライバソフトウェアである。
また、仮想マシン150aは、OS151a、アダプタドライバ152a、冗長パス制御部153aおよび接続先装置ドライバ154aを有する。OS151a、アダプタドライバ152a、冗長パス制御部153aおよび接続先装置ドライバ154aは、OS151、アダプタドライバ152、冗長パス制御部153および接続先装置ドライバ154にそれぞれ対応する。
仮想アダプタ160,160a,160b,160cは、FCインタフェース106,106a上のリソースにより実現されたデータ通信用の仮想的なアダプタである。
図9は、接続構成管理テーブルの例を示す図である。接続構成管理テーブル131には、スロット、物理アダプタ、仮想アダプタ、仮想マシンID(IDentifier)、仮想ポートNo.、接続先WWN(World Wide Name)およびゾーンの項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、仮想マシンと仮想アダプタとの1つの対応関係を示す。
スロットの項目には、物理アダプタが搭載されているPCIスロットのPCIスロットIDが設定される。
物理アダプタの項目には、物理アダプタの情報が設定される。物理アダプタの項目には、デバイスパス、インスタンスNo.、VID(Vendor ID)およびDID(Device ID)の項目が設けられている。デバイスパスの項目には、物理アダプタにアクセスするためのデバイスパス情報が設定される。インスタンスNo.の項目には、当該物理アダプタのファンクション識別番号(物理ポート番号)が設定される。物理アダプタのファンクション識別番号に対して複数の物理ポートを持つ場合は、インスタンスNo.に加えて物理ポート番号を管理してもよい。VIDの項目には、当該物理アダプタを製造したベンダを識別するためのVIDが設定される。VIDは同一ベンダであれば同一となる。DIDの項目には、当該物理アダプタのデバイス(機能)を識別するためのDIDが設定される。DIDはサーバ装置100内で物理アダプタを一意に識別するためのIDである。仮想アダプタの項目には、仮想アダプタの情報が設定される。仮想アダプタの項目には、デバイスパス、インスタンスNo.(仮想アダプタのファンクションに割り当てる識別番号)、VIDおよびDIDの項目が設けられている。これらの項目の設定内容は、上述した物理アダプタの情報の設定内容と同様である。更に、SVID(Sub Vendor ID)、SDID(Sub Device ID)を用いてもよい。
仮想マシンIDの項目には、当該仮想アダプタに対応付けられた仮想マシンのIDが設定される。仮想ポートNo.の項目には、物理アダプタ上の仮想ポートの識別番号が設定される。接続先WWNの項目には、接続先ストレージ装置のFCインタフェースのWWNが設定される。ゾーンの項目には、FCスイッチ装置200上の何れのゾーンに属するかが、当該ゾーンのIDにより指定される。
例えば、接続構成管理テーブル131には、各仮想マシンと各FCインタフェース上の仮想アダプタとについて、次のような対応関係が設定される。
(1)仮想マシン150と仮想アダプタ160の対応関係。
(2)仮想マシン150aと仮想アダプタ160aの対応関係。
(3)仮想マシン150と仮想アダプタ160bの対応関係。
(4)仮想マシン150aと仮想アダプタ160cの対応関係。
具体的には、次の通りである。
(1)の対応関係に関して、接続構成管理テーブル131には、スロットが“0”、物理アダプタにつき、デバイスパスが“/pci@0/pci@0/fibre−channel@0”、インスタンスNo.が“0”、VIDが“10CF”、DIDが“0001”、仮想アダプタにつき、デバイスパスが“/pci@0/pci@0/pci@0/fibre−channel@0”、インスタンスNo.が“0”、VIDが“10CF”、DIDが“0001”、仮想マシンIDが“0”、仮想ポートNo.が“00”、接続先WWNが“xxyy01”およびゾーンが“Zone0”という情報が設定される。
これは、FCインタフェース106は、PCIスロット“0”に接続されており、FCインタフェース106のデバイスパス、インスタンスNo.、VID、DIDが上記設定であることを示している。また、仮想アダプタ160のデバイスパス、インスタンスNo.、VID、DIDが上記設定であることを示している。また、仮想アダプタ160に対して、仮想マシン150(仮想マシンID“0”)が対応付けられている。更に、FCインタフェース106において仮想ポートNo.“00”の仮想ポートが割り当てられていることを示す。当該仮想アダプタを介した接続先装置のWWNとして、“xxyy01”が指定されていることを示す。また、仮想アダプタ160による通信経路はFCスイッチ装置200が管理するゾーンのうちの“Zone0”に属することを示す。
(2)の対応関係に関して、接続構成管理テーブル131には、スロットが“0”、物理アダプタにつき、デバイスパスが“/pci@0/pci@0/fibre−channel@0”、インスタンスNo.が“0”、VIDが“10CF”、DIDが“0001”、仮想アダプタにつき、デバイスパスが“/pci@0/pci@0/pci@0/fibre−channel@1”、インスタンスNo.が“1”、VIDが“10CF”、DIDが“0001”、仮想マシンIDが“1”、仮想ポートNo.が“01”、接続先WWNが“xxyy02”およびゾーンが“Zone1”という情報が設定される。
(3)の対応関係に関して、接続構成管理テーブル131には、スロットが“1”、物理アダプタにつき、デバイスパスが“/pci@1/pci@0/fibre−channel@0”、インスタンスNo.が“1”、VIDが“10CF”、DIDが“0001”、仮想アダプタにつき、デバイスパスが“/pci@1/pci@0/pci@0/fibre−channel@2”、インスタンスNo.が“2”、VIDが“10CF”、DIDが“0001”、仮想マシンIDが“0”、仮想ポートNo.が“10”、接続先WWNが“xxyy01”およびゾーンが“Zone0”という情報が設定される。
(4)の対応関係に関して、接続構成管理テーブル131には、スロットが“1”、物理アダプタにつき、デバイスパスが“/pci@1/pci@0/fibre−channel@0”、インスタンスNo.が“1”、VIDが“10CF”、DIDが“0001”、仮想アダプタにつき、デバイスパスが“/pci@1/pci@0/pci@0/fibre−channel@3”、インスタンスNo.が“3”、VIDが“10CF”、DIDが“0001”、仮想マシンIDが“1”、仮想ポートNo.が“11”、接続先WWNが“xxyy02”およびゾーンが“Zone1”という情報が設定される。
ここで、接続先WWN“xxyy01”は、ストレージ装置300のポート340に対応する。接続先WWN“xxyy02”は、ストレージ装置300のポート340aに対応する。
図10は、冗長グループ管理テーブルの例を示す図である。冗長グループ管理テーブル132には、仮想マシンID、物理アダプタインスタンスNo.、仮想アダプタインスタンスNo.、アダプタ識別情報、運用状態、IO(Input / Output)要求状態、冗長グループおよび同一物理アダプタの他の仮想アダプタを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、1つの冗長グループの情報を示す。
仮想マシンIDの項目には、仮想マシンIDが設定される。物理アダプタインスタンスNo.の項目には、物理アダプタインスタンスNo.が設定される。物理アダプタインスタンスNo.は、物理アダプタのファンクション番号(物理ポート番号)である。仮想アダプタインスタンスNo.の項目には、仮想アダプタインスタンスNo.が設定される。仮想アダプタインスタンスNo.は、仮想アダプタのファンクション番号(仮想アダプタの仮想的なファンクションを識別するための番号)である。
アダプタ識別情報の項目には、接続先装置へのアクセスに用いるアダプタの情報が設定される。アダプタ識別情報の項目には、物理デバイスパスの項目およびスロットの項目が更に設けられている。物理デバイスパスの項目には、物理アダプタのデバイスパス情報が設定される。スロットの項目には、当該物理アダプタが設けられたPCIスロットのPCIスロットIDが設定される。運用状態の項目には、当該仮想アダプタを介したデータ通信の運用状態を示す情報が設定される。IO要求状態の項目には、当該仮想アダプタを介したデータ通信におけるIO要求の状態を示す情報が設定される。
冗長グループの項目には、当該仮想アダプタの属する冗長グループ(仮想アダプタの組み合わせ)の情報が設定される。冗長グループの項目には、更に、グループIDの項目および仮想アダプタの項目が設けられている。グループIDの項目には、冗長グループのグループIDが設定される。仮想アダプタの項目には、当該グループのペアとなる仮想アダプタの仮想アダプタインスタンスNo.が設定される。
同一物理アダプタの他の仮想アダプタの項目には、当該仮想アダプタが属するFCインタフェース上の他の仮想アダプタの仮想アダプタインスタンスNo.が設定される。
例えば、冗長グループ管理テーブル132には、各仮想アダプタについて、次のような冗長グループが設定される。
(1)仮想アダプタ160と仮想アダプタ160bとをペアとした第1の冗長グループ。第1の冗長グループは仮想マシン150に割り当てられる。
(2)仮想アダプタ160aと仮想アダプタ160cとをペアとした第2の冗長グループ。第2の冗長グループは仮想マシン150aに割り当てられる。
具体的には、次の通りである。
第1の冗長グループ(仮想アダプタ160側)に関して、冗長グループ管理テーブル132には、仮想マシンIDが“0”、物理アダプタインスタンスNo.が“0”、仮想アダプタインスタンスNo.が“0”、アダプタ識別情報につき物理デバイスパスが“/pci@0/pci@0/fibre−channel@0”、スロットが“0”、運用状態が“異常”、IO要求状態が“停止”、冗長グループにつきグループIDが“マルチパスA”、対の仮想アダプタのインスタンスNo.が“2”、同一物理アダプタの他の仮想アダプタインスタンスNo.が“1”という情報が設定される。
これは、仮想マシン150に対して、FCインタフェース106(物理アダプタインスタンスNo.“0”)上の仮想アダプタ160(仮想アダプタインスタンスNo.“0”)が割り当てられていることを示す。物理アダプタを識別するための情報として、上記物理デバイスパスおよびスロット番号が設定されている。また、当該仮想アダプタ160の運用状態が“異常”であり、IO要求状態が“停止”中であることを示す。更に、仮想アダプタ160が属する冗長グループのグループIDが“マルチパスA”であり、対になる仮想アダプタが仮想アダプタ160b(仮想アダプタインスタンスNo.“2”)であることを示す。また、FCインタフェース106上の他の仮想アダプタとして仮想アダプタ160a(仮想アダプタインスタンスNo.“1”)が存在することを示す。
第1の冗長グループ(仮想アダプタ160b側)に関して、冗長グループ管理テーブル132には、仮想マシンIDが“0”、物理アダプタインスタンスNo.が“1”、仮想アダプタインスタンスNo.が“2”、アダプタ識別情報につき物理デバイスパスが“/pci@1/pci@0/fibre−channel@0”、スロットが“1”、運用状態が“待機”、IO要求状態が“リトライ”、冗長グループにつきグループIDが“マルチパスA”、対の仮想アダプタインスタンスNo.が“0”、同一物理アダプタの他の仮想アダプタインスタンスNo.が“3”という情報が設定される。
第2の冗長グループ(仮想アダプタ160a側)に関して、冗長グループ管理テーブル132には、仮想マシンIDが“1”、物理アダプタインスタンスNo.が“0”、仮想アダプタインスタンスNo.が“1”、アダプタ識別情報につき物理デバイスパスが“/pci@0/pci@0/fibre−channel@0”、スロットが“0”、運用状態が“待機”、IO要求状態が“停止”、冗長グループにつきグループIDが“マルチパスB”、対の仮想アダプタインスタンスNo.が“3”、同一物理アダプタの他の仮想アダプタインスタンスNo.が“0”という情報が設定される。
第2の冗長グループ(仮想アダプタ160c側)に関して、冗長グループ管理テーブル132には、仮想マシンIDが“1”、物理アダプタインスタンスNo.が“1”、仮想アダプタインスタンスNo.が“3”、アダプタ識別情報につき物理デバイスパスが“/pci@1/pci@0/fibre−channel@0”、スロットが“1”、運用状態が“運用”、IO要求状態が“通信中”、冗長グループにつきグループIDが“マルチパスB”、対の仮想アダプタインスタンスNo.が“1”、同一物理アダプタの他の仮想アダプタインスタンスNo.が“2”という情報が設定される。
ここで、運用状態の各設定内容の意味は次の通りである。“異常”は、当該仮想アダプタの故障や障害の発生を示す。“待機”は、当該仮想アダプタが冗長グループの待機系であることを示す。“運用”は、当該仮想アダプタが冗長グループの現用系であり、通信に利用可能な状態であることを示す。
また、IO要求状態の各設定内容の意味は次の通りである。“停止”は、当該仮想アダプタでIO(データの送受信動作)が発生していないことを示す。“リトライ”は、当該仮想アダプタを介した通信を試行中であることを示す。“通信中”は、当該仮想アダプタを介した通信が確立されており、通信に利用されている状態であることを示す。
次に、以上の構成のサーバ装置100の処理手順を説明する。
図11は、第2の実施の形態の障害検知時の全体処理を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。なお、以下に示すステップS11の直前では、仮想マシン150は仮想アダプタ160を介して、仮想マシン150aは仮想アダプタ160aを介してストレージ装置300にアクセスしているとする。
(ステップS11)アダプタドライバ152は、仮想アダプタ160を介した通信で故障を検知する。すると、アダプタドライバ152は、プロセス間通信によりハイパーバイザ140に仮想アダプタ160の故障検知を通知する。制御部141は、当該通知を受けて、仮想アダプタ160の故障を検知する。
(ステップS12)制御部141は、管理情報記憶部130に記憶された接続構成管理テーブル131を参照して、仮想アダプタの構成を確認する。具体的には、制御部141は、故障を検知した仮想アダプタ160が属するFCインタフェース106上の他の仮想アダプタの存在を確認する。制御部141は、当該他の仮想アダプタとして仮想アダプタ160aを特定する。制御部141は、接続構成管理テーブル131を参照して、仮想アダプタ160aに対応する仮想マシン150aを特定する。
(ステップS13)制御部141は、仮想マシン150aに対して、他の物理アダプタ上にある退避先の仮想アダプタ(以下、退避先アダプタという)を有しているか問い合わせる。仮想マシン150aの冗長パス制御部153aは、当該問い合わせに対して、退避先アダプタの有無を応答する。冗長パス制御部153aは、退避先アダプタがある場合には、その識別情報を制御部141に通知する。制御部141は、受け付けた退避先アダプタの識別情報を冗長グループ管理テーブル132に設定する。例えば、冗長パス制御部153aは、仮想アダプタ160aに対してFCインタフェース106a上の退避先アダプタ(仮想アダプタ160c)が存在する旨を制御部141に通知する。すると、制御部141は、冗長グループ管理テーブル132に、仮想アダプタ160a,160cを対応付けて登録する。なお、制御部141は、故障した仮想アダプタ160と仮想アダプタ160bとの対応も同様に、冗長パス制御部153から情報を取得して冗長グループ管理テーブル132に登録する。
(ステップS14)制御部141は、ステップS12で確認した他の仮想アダプタのうちから、未退避の仮想アダプタを1つ選択する。例えば、仮想アダプタ160aを選択する。
(ステップS15)制御部141は、冗長グループ管理テーブル132を参照して、当該仮想アダプタに退避先アダプタがあるか否かを判定する。退避先アダプタがない場合、処理をステップS16に進める。退避先アダプタがある場合、処理をステップS19に進める。
(ステップS16)制御部141は、物理アダプタを追加する処理を行う。例えば、管理者にFCインタフェース106aの追加を促すメッセージを報知する。管理者がサーバ装置100に新たにFCインタフェース106aを搭載する作業を行った後、制御部141は、FCインタフェース106aを仮想マシン150aから利用可能にするための処理を行う。制御部141は、FCインタフェース106a上の仮想アダプタから仮想マシン150aに退避先の仮想アダプタ160cを割り当てる。制御部141は、追加されたFCインタフェース106aに関する接続構成を接続構成管理テーブル131に登録する。制御部141は、管理情報記憶部130に記憶された冗長グループ管理テーブル132に退避元の仮想アダプタと退避先の仮想アダプタとの対応関係を登録する。
(ステップS17)制御部141は、接続構成管理テーブル131を参照して、退避先アダプタに対応するゾーンがFCスイッチ装置200に設定済であるか否かを判定する。ゾーンを設定済である場合、処理をステップS19に進める。ゾーンを未設定である場合、処理をステップS18に進める。
(ステップS18)制御部141は、退避先アダプタに対応するポート情報をFCスイッチ装置200のゾーン情報に追加する。
(ステップS19)制御部141は、仮想マシン150aに対し、退避先アダプタの接続先装置を組み込む指示をプロセス間通信で通知する。仮想マシン150aは、組み込み指示を受信すると、接続先装置と通信して、退避先アダプタを介した接続先装置の利用を可能とするための処理を行う。仮想マシン150aは、組み込みを完了すると、完了した旨をハイパーバイザ140に通知する。
(ステップS20)制御部141は、退避先アダプタへ通信を切り換える旨の指示を仮想マシン150aに通知する。冗長パス制御部153aは、通信に用いるアダプタを仮想アダプタ160aから仮想アダプタ160cに切り換える。冗長パス制御部153aは、切り換えが完了した旨を制御部141に通知する。制御部141は、当該通知を受けて、冗長グループ管理テーブル132の仮想アダプタ160a,160cの運用状態を更新する。
(ステップS21)制御部141は、冗長グループ管理テーブル132を参照して、ステップS12で特定した全ての仮想アダプタにつき退避が完了したかを判定する。全ての仮想アダプタを退避済である場合、処理をステップS22に進める。未退避の仮想アダプタが存在する場合、処理をステップS14に進める。
(ステップS22)制御部141は、故障した物理アダプタ(FCインタフェース106)を故障状態として、その動作を停止させる。制御部141は、仮想マシン150,150aなどによる当該物理アダプタへの資源取得の要求を防止し、故障した物理アダプタを閉塞する。そして、制御部141は、故障した物理アダプタの電源をOFFにして、サーバ装置100から切り離す。
このようにして、制御部141は仮想アダプタの切り換えを制御する。ステップS13では、制御部141は、管理情報記憶部130に記憶された接続構成管理テーブル131を参照して、退避先アダプタの有無を確認してもよい。
なお、ステップS22の処理は、仮想マシン150上で故障が検知された仮想アダプタ160の仮想アダプタ160bへの切り換えが完了した後に行われる。故障が検知された仮想アダプタ160に関しては、冗長パス制御部153により、当該故障検知の後に、仮想アダプタ160から仮想アダプタ160bへの切り換えが行われる。冗長パス制御部153は、当該切り換えの完了を制御部141に通知する。このようにして、制御部141は仮想アダプタ160,160b間の切り換え状況も管理する。
例えば、故障検知後、所定期間経過後も、冗長パス制御部153によるアダプタ切り換えが実行されない場合、制御部141は、冗長パス制御部153にも切り換えの指示を行ってもよい。
また、例えば、故障を検知した仮想マシン150の退避先アダプタがない場合も考えられる。その場合には、新たにFCインタフェース106aがサーバ装置100に搭載されるまで、制御部141は冗長パス制御部153によるアダプタ切り換えを留保することが考えられる。
図12は、第2の実施の形態の障害検知時の全体処理を示すシーケンス図である。以下、図12に示す処理をステップ番号に沿って説明する。なお、以下に示すステップST101の直前では、仮想マシン150は仮想アダプタ160を介して、仮想マシン150aは仮想アダプタ160aを介してストレージ装置300にアクセスしているとする。また、FCインタフェース106aは、サーバ装置100に未設置であるとする。
(ステップST101)仮想マシン150は、ハイパーバイザ140に仮想アダプタ160の故障を通知する。
(ステップST102)ハイパーバイザ140は、管理情報記憶部130に記憶された接続構成管理テーブル131を参照して、仮想アダプタ160とFCインタフェース106を共用する仮想アダプタ160aを確認する。また、当該仮想アダプタ160aに対して仮想マシン150aが対応付けられていることを確認する。
(ステップST103)ハイパーバイザ140は、仮想マシン150aに、退避先アダプタがあるかを問い合わせる。仮想マシン150aは、退避先アダプタがない旨をハイパーバイザ140に応答する。その後、ハイパーバイザ140は、管理者に対してFCインタフェース106aをサーバ装置100に新たに設けるよう通知する。管理者は当該通知に応じて、FCインタフェース106aをサーバ装置100に設置する。なお、ここでは、仮想マシン150も退避先アダプタが存在しない。このため、故障検知後から追加されたFCインタフェース106aが利用可能になるまで、ハイパーバイザ140は、冗長パス制御部153による仮想アダプタの切り換え処理を留保させる。
(ステップST104)ハイパーバイザ140は、FCインタフェース106a上の仮想アダプタ160b,160cのドライバモジュールの組み込みを仮想マシン150,150aに指示する。仮想マシン150,150aは、当該指示に応じて、仮想アダプタ160b,160cのドライバモジュールを組み込む。これにより、仮想マシン150は、仮想アダプタ160bを利用可能となる。仮想マシン150aは、仮想アダプタ160cを利用可能となる。ハイパーバイザ140は、管理情報記憶部130に記憶された冗長グループ管理テーブル132に、仮想アダプタ160,160bを冗長グループのペアとして登録する。同様に、仮想アダプタ160a,160cを冗長グループのペアとして登録する。
(ステップST105)ハイパーバイザ140は、FCスイッチ装置200のゾーン情報に仮想アダプタ160b,160cに対応するポート情報(物理アダプタの情報や物理アダプタの仮想ポート番号の情報)を追加する。これにより、仮想アダプタ160b,160cからFCスイッチ装置200の当該ゾーンを介した通信が可能となる。
(ステップST106)ハイパーバイザ140は、仮想アダプタ160b,160cを介したストレージ装置300の組み込みを仮想マシン150,150aに指示する。仮想マシン150,150aは、当該指示に応じてストレージ装置300と通信し、仮想アダプタ160b,160cを介したストレージ装置300の利用を可能な状態とする。これにより、仮想マシン150は、仮想アダプタ160bを介してストレージ装置300へアクセス可能となる。仮想マシン150aは、仮想アダプタ160cを介してストレージ装置300へアクセス可能となる。
(ステップST107)ハイパーバイザ140は、仮想マシン150,150aに仮想アダプタの切り換えを指示する。当該指示に応じて、仮想マシン150は、仮想アダプタ160から仮想アダプタ160bへの切り換えを行う。また、仮想マシン150aは、仮想アダプタ160aから仮想アダプタ160cへの切り換えを行う。
(ステップST108)ハイパーバイザ140は、FCインタフェース106を共用する全ての仮想マシンが他のFCインタフェースに移管済であり、FCインタフェース106上の全ての仮想アダプタで通信が停止されたことを確認する。ハイパーバイザ140は、FCインタフェース106を閉塞させて電源OFFし、停止させる。
(ステップST109)ハイパーバイザ140は、FCインタフェース106をサーバ装置100から切り離す。FCインタフェース106は、サーバ装置100から取り外し可能な状態となる。
このようにして、ハイパーバイザ140は、仮想アダプタ160で故障を検知すると、仮想マシン150とFCインタフェース106を共有する仮想マシン150aについても、FCインタフェース106aに移管する。これによって、FCインタフェース106を利用する仮想マシンが全てFCインタフェース106aに退避される。
次に、図11のステップS16の物理アダプタ追加処理を説明する。以下では、FCインタフェース106aを追加する場合を想定する。
図13は、第2の実施の形態の物理アダプタ追加処理を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。
(ステップS31)管理者により、FCインタフェース106aが、サーバ装置100に搭載される。また、管理者により、FCインタフェース106aとFCスイッチ装置200とがFCケーブルを介して接続される。制御部141は、FCインタフェース106aがサーバ装置100に追加された旨を検知する。
(ステップS32)制御部141は、FCインタフェース106aおよび仮想アダプタ160b,160cの情報を管理情報記憶部130に記憶された接続構成管理テーブル131に登録する。制御部141は、退避元の仮想アダプタに関する接続先WWNやゾーンの情報を接続構成管理テーブル131から取得し、退避先アダプタの接続先WWNやゾーンの情報として同テーブルに登録する。制御部141は、退避先アダプタの接続先WWNやゾーンの情報として、管理端末装置400で管理者が入力した情報を接続構成管理テーブル131に登録してもよい。また、制御部141は、管理情報記憶部130に記憶された冗長グループ管理テーブル132に、仮想アダプタ160,160aの退避先として、仮想アダプタ160b,160cを登録する。何れの仮想アダプタを何れの仮想アダプタとペアにするかは、管理者が管理端末装置400から指定してもよいし、制御部141がDIDの昇順などの条件に基づいて自動で指定してもよい。
(ステップS33)制御部141は、接続構成管理テーブル131を参照して、新たに登録したFCインタフェース106aおよび仮想アダプタ160b,160cのVIDとDIDを確認する。
(ステップS34)制御部141は、冗長グループ内で、仮想アダプタ同士のVIDとDIDが同一であるか否かを判定する。同一である場合、処理をステップS35に進める。同一でない場合、管理者に対して、同一機能の物理アダプタを搭載するよう指示して、処理をステップS31に進める。
(ステップS35)制御部141は、接続構成管理テーブル131を参照して、退避元の仮想アダプタ160,160aに対応する仮想マシン150,150aを特定する。
(ステップS36)制御部141は、アダプタドライバ152,152a、冗長パス制御部153,153aおよび接続先装置ドライバ154,154aに、仮想アダプタ160b,160cのドライバモジュールの組み込みを指示する。
(ステップS37)アダプタドライバ152,152a、冗長パス制御部153,153aおよび接続先装置ドライバ154,154aは、制御部141からの指示に応じて、仮想アダプタ160b,160cのドライバモジュールを組み込む。
このようにして、新たに追加したFCインタフェース106aを利用可能とするための処理が行われる。冗長グループ内で仮想アダプタのVIDとDIDが同一であることを確認し、同一でなければ交換を促すことで、退避前後でアダプタの機能が変わらないことを保証できる。
これにより、通信性能の低下や接続先装置との相性の不一致などが生じる可能性を低減できる。
図14は、第2の実施の形態の物理アダプタ追加処理を示すシーケンス図である。以下、図14に示す処理をステップ番号に沿って説明する。
(ステップST111)管理者により、FCインタフェース106aがサーバ装置100に搭載される。管理者により、FCインタフェース106aとFCスイッチ装置200とがFCケーブルで接続される。
(ステップST112)ハイパーバイザ140は、FCインタフェース106aが追加された旨を検知すると、FCインタフェース106aから、物理アダプタおよび仮想アダプタの情報を取得する。ハイパーバイザ140は、取得した情報を管理情報記憶部130に記憶された接続構成管理テーブル131に登録する。また、ハイパーバイザ140は、管理情報記憶部130に記憶された冗長グループ管理テーブル132に、仮想アダプタ160,160aの退避先として、仮想アダプタ160b,160cを登録する。
(ステップST113)ハイパーバイザ140は、接続構成管理テーブル131を参照して、新たに登録したFCインタフェース106aおよび仮想アダプタ160b,160cのVIDとDIDを確認する。ハイパーバイザ140は、冗長グループの仮想アダプタ同士で、VIDとDIDが同一であることを確認する。具体的には、仮想アダプタ160,160bのVIDとDIDが同一であることを確認する。また、仮想アダプタ160a,160cのVIDとDIDが同一であることを確認する。
(ステップST114)ハイパーバイザ140は、接続構成管理テーブル131を参照して、仮想アダプタ160に対応付けられた仮想マシン150を特定する。同様に、仮想アダプタ160aに対応付けられた仮想マシン150aを特定する。
(ステップST115)ハイパーバイザ140は、仮想マシン150,150aに、仮想アダプタ160b,160cの組み込みを指示する。
(ステップST116)仮想マシン150,150aは、仮想アダプタ160b,160cのドライバモジュールを組み込む。これにより、仮想マシン150は仮想アダプタ160bを利用可能となる。また、仮想マシン150aは仮想アダプタ160cを利用可能となる。
このように、FCインタフェース106aを追加した後、ハイパーバイザ140は、仮想マシン150,150aに仮想アダプタ160b,160cの組み込みを実行させる。ハイパーバイザ140は、仮想マシン150,150aに対する仮想アダプタ160b,160cの割り当て状況を接続構成管理テーブル131で管理する。また、ハイパーバイザ140は、仮想アダプタ160,160a,160b,160cによる冗長グループの対応関係を冗長グループ管理テーブル132で管理する。
次に、図11のステップS19の接続先装置追加処理を説明する。
図15は、第2の実施の形態の接続先装置追加処理を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
(ステップS41)制御部141は、仮想マシン150,150aに接続先装置(ストレージ装置300)の組み込みを指示する。このとき、制御部141は、管理情報記憶部130に記憶された接続構成管理テーブル131を参照して、仮想アダプタ160bの接続先WWNを、仮想マシン150に通知する。同様に、制御部141は、仮想アダプタ160cの接続先WWNを仮想マシン150aに通知する。
(ステップS42)冗長パス制御部153は、仮想アダプタ160の接続先WWNを確認する。冗長パス制御部153aは、仮想アダプタ160aの接続先WWNを確認する。
(ステップS43)冗長パス制御部153,153aは、ステップS41で受け付けた接続先WWNとステップS42で確認した接続先WWNとが同一であるか否かを判定する。同一である場合、すなわち、FCインタフェースの変更後も、元の接続先装置にアクセスできると確認できた場合、冗長パス制御部153,153aはその接続先装置の組み込みを行う。その後、冗長パス制御部153,153aは組み込みが完了した旨をハイパーバイザ140に通知して、処理をステップS44に進める。接続先WWNが異なる場合、すなわち、FCインタフェースの変更後に元の接続先装置にアクセスできない場合、その旨をハイパーバイザ140に通知して、処理をステップS45に進める。
(ステップS44)制御部141は、管理情報記憶部130に記憶された冗長グループ管理テーブル132を更新する。具体的には、制御部141は、仮想アダプタ160b,160cの運用状態を“待機”に更新する。
(ステップS45)制御部141は、仮想アダプタ160b,160cの接続先装置の確認を管理者に促す。例えば、制御部141は、管理端末装置400に所定のメッセージを通知したり、管理者の電子メールアドレスに所定のメッセージを記述した電子メールを送信したりする。
このようにして、制御部141は、仮想マシン150,150aから退避先の仮想アダプタを介してストレージ装置300を利用可能とする。制御部141は、接続先装置が退避の前後で異ならないことを事前に確認するので、退避後の仮想マシン150,150aの処理への影響を低減できる。
図16は、第2の実施の形態の接続先装置追加処理を示すシーケンス図である。以下、図16に示す処理をステップ番号に沿って説明する。
(ステップST121)ハイパーバイザ140は、仮想マシン150,150aにストレージ装置300の組み込みを指示する。
(ステップST122)仮想マシン150,150aは、新たな接続先となるストレージ装置300が、現在の接続先であるストレージ装置300と同一であることを確認する。そして、仮想マシン150,150aは、ストレージ装置300の組み込みを行う。これにより、仮想マシン150は、仮想アダプタ160bを介してストレージ装置300へアクセス可能となる。また、仮想マシン150aは、仮想アダプタ160cを介してストレージ装置300へアクセス可能となる。
(ステップST123)仮想マシン150,150aは、ストレージ装置300の組み込みが完了した旨をハイパーバイザ140に応答する。
(ステップST124)ハイパーバイザ140は、管理情報記憶部130に記憶された冗長グループ管理テーブル132を更新する。具体的には、制御部141は、仮想アダプタ160b,160cの運用状態を“待機”に更新する。
これにより、各冗長グループでアダプタ切り換えの準備が整う。
次に、図11のステップS20のアダプタ切り換え処理を説明する。
図17は、第2の実施の形態のアダプタ切り換え処理を示すフローチャートである。以下、図17に示す処理をステップ番号に沿って説明する。
(ステップS51)制御部141は、退避対象の仮想アダプタを確認する。具体的には、制御部141は、故障が検知されたFCインタフェース106上の仮想アダプタ160aを確認する。制御部141は、管理情報記憶部130に記憶された冗長グループ管理テーブル132を参照し、仮想アダプタ160aの退避先アダプタとして、仮想アダプタ160cを特定する。
(ステップS52)制御部141は、仮想マシン150aに仮想アダプタ160cへの切り換えを指示する。
(ステップS53)冗長パス制御部153aは、制御部141の指示を受け付けると、冗長グループ管理テーブル132を参照して、仮想マシン150aのIO要求状態を確認する。冗長パス制御部153aは、接続先装置ドライバ154aのIO要求状態を参照して確認してもよい。冗長パス制御部153aは、仮想マシン150aの仮想アダプタ160aによるIO要求状態が“停止”になると、仮想アダプタ160aから仮想アダプタ160cへアダプタの切り換えを行う。
(ステップS54)冗長パス制御部153aは、制御部141に切り換え完了を通知する。
(ステップS55)制御部141は、冗長パス制御部153aから切り換え完了の通知を受け付けると、冗長グループ管理テーブル132を更新する。具体的には、制御部141は、仮想アダプタ160aのIO要求状態が“停止”であることを確認し、仮想アダプタ160aにつき運用状態の項目を“待機”に変更し、仮想アダプタ160cにつき運用状態の項目を“運用”に変更する。
このようにして、制御部141は、冗長グループ内でのアダプタの切り換えを制御する。制御部141は、仮想アダプタ160で故障が発生した場合、FCインタフェース106を共用する仮想マシン150aが存在することを確認する。そして、制御部141は、仮想マシン150aの冗長パス制御部153aに対して、仮想アダプタの切り換えを指示する。
冗長パス制御部153aは、仮想マシン150aがストレージ装置300にアクセス中でないタイミングでFCインタフェース106上の仮想アダプタ160aからFCインタフェース106a上の仮想アダプタ160cへ、アダプタの切り換えを行う。これにより、仮想マシン150aの処理が中断されないようにアダプタの切り換えを行える。
なお、制御部141は、仮想マシン150のアダプタ切り換えを留保している場合(例えば、図12のステップST103参照)には、上記ステップS51において、仮想マシン150の退避先アダプタとして、仮想アダプタ160bを特定する。そして、制御部141は、以降のステップS52〜S55において、仮想マシン150aと同様に、仮想マシン150の冗長パス制御部153に対して仮想アダプタ160から仮想アダプタ160bへの切り換えを制御する。
これにより、故障が検出されたFCインタフェース106を共用する全ての仮想マシンを他のFCインタフェース106aに移管できる。その結果、FCインタフェース106の全ての仮想アダプタを介した通信が停止状態となる。このため、FCインタフェース106を交換するなどの保守作業を行ったとしても、サーバ装置100で動作する仮想マシンに対する影響を抑えることができる。その結果、保守作業を容易に行えるようになる。
また、制御部141は、FCインタフェース106で故障を検知したタイミングで、仮想マシンをFCインタフェース106aに移管させる。このため、サーバ装置100の保守作業を迅速に開始でき、保守作業を効率的に行える。
なお、仮想マシン150,150aで同一のFCインタフェース106aに移管するものとしたが、各仮想マシンをそれぞれ異なるFCインタフェースに移管してもよい。また、仮想マシン150,150aの接続先装置をストレージ装置300としたが、それぞれ異なる接続先装置に接続してもよい。
[第3の実施の形態]
次に、第3の実施の形態を説明する。前述の第2の実施の形態との相違点を主に説明し、同様の事項は説明を省略する。
第2の実施の形態では、仮想マシン150,150aが冗長パス制御部153,153aを備え、制御部141の指示に応じて、仮想アダプタの切り換えの処理を行う例を示した。
一方、冗長パス制御部153,153aの機能をハイパーバイザが備えてもよい。第3の実施の形態では、この場合を例示する。
ここで、第3の実施の形態の情報処理システムの全体構成は、図2で説明した第2の実施の形態の情報処理システムの全体構成と同様であるため説明を省略する。また、第3の実施の形態のサーバ装置、FCスイッチ装置、ストレージ装置のハードウェア例は、図3〜5で説明した通りであるため説明を省略する。第3の実施の形態では、以下に示すサーバ装置100aの機能、FCスイッチ装置、ストレージ装置を、第2の実施の形態と同一の符号により示す
図18は、第3の実施の形態のサーバ装置の機能を示すブロック図である。サーバ装置100aは、管理情報記憶部130、ハイパーバイザ140a、仮想マシン150b,150cおよび仮想アダプタ160,160a,160b,160cを有する。管理情報記憶部130、ハイパーバイザ140aおよび仮想マシン150b,150cの機能は、CPU111が所定のプログラムを実行することにより、サーバ装置100a上に実現される。ただし、これらのユニットの全部または一部を専用のハードウェアにより実現してもよい。
管理情報記憶部130は、第2の実施の形態の管理情報記憶部130に対応する。
ハイパーバイザ140aは、第2の実施の形態のハイパーバイザ140に対応する。ハイパーバイザ140aは、制御部141aを有する。制御部141aは、第2の実施の形態の制御部141に対応する。ただし、制御部141aは、制御部141の機能に加えて、第2の実施の形態の冗長パス制御部153,153aの機能を担う。制御部141aは、仮想マシン150b,150cに割り当てた仮想アダプタを冗長制御する。
仮想マシン150bは、OS151、アダプタドライバ152bおよび接続先装置ドライバ154bを有する。仮想マシン150cは、OS151a、アダプタドライバ152cおよび接続先装置ドライバ154cを有する。OS151b,151c、アダプタドライバ152b,152cおよび接続先装置ドライバ154b,154cは、第2の実施の形態のOS151,151a、アダプタドライバ152,152aおよび接続先装置ドライバ154,154aに対応する。
仮想アダプタ160,160a,160b,160cは、第2の実施の形態の仮想アダプタ160,160a,160b,160cに対応する。
このような構成によっても、第2の実施の形態と同一の処理を行える。その際、第2の実施の形態において冗長パス制御部153,153aに対して行われた処理は、制御部141aに対して行われる。また、第2の実施の形態において冗長パス制御部153,153aが実行した処理は、制御部141aが実行する。
例えば、図12で示した第2の実施の形態の障害検知時の全体処理のシーケンス図のステップST101では、制御部141aは、アダプタドライバ152b,152cからの通知で、仮想アダプタの故障の有無を判断できる。また、制御部141aは、アダプタドライバ152b,152cと通信し、仮想マシン150b,150cのIO要求状況を監視する。制御部141aは、接続先装置ドライバ154b,154cと通信して、IO要求状況を監視してもよい。これにより、制御部141aは、ある仮想アダプタにつきIO要求状況を判断でき、アダプタ切り換え完了状態を判断できる。具体的には、制御部141aは、仮想マシン150cが仮想アダプタ160aによりストレージ装置300にアクセス中に、仮想アダプタ160aが待機状態としないよう制御する。
また、例えば、図12のステップST103の処理は、制御部141aが管理情報記憶部130に記憶された接続構成管理テーブル131を参照することで確認する。このため、仮想マシンへの問い合わせによる処理負荷が軽減される。また、ステップST107の仮想アダプタの切り換え処理は、制御部141aが行う。
これにより、第2の実施の形態と同様の効果を得ることができる。特に、制御部141aが切り換え処理を一括して行うので、仮想マシンごとに生じるアダプタ確認の問い合わせや、切り換え指示などの通信を省ける。このため、高速に切り換え処理を行える。
[第4の実施の形態]
次に、第4の実施の形態を説明する。前述の第2,第3の実施の形態との相違点を主に説明し、同様の事項は説明を省略する。
第2,第3の実施の形態では、物理アダプタおよび仮想アダプタの接続構成を管理する制御部の機能をハイパーバイザに設けた。一方、当該制御部を他の装置に設けてもよい。第4の実施の形態では、管理端末装置400が制御部を備える例を示す。
ここで、第4の実施の形態の情報処理システムの全体構成は、図2で説明した第2の実施の形態の情報処理システムの全体構成と同様であるため説明を省略する。また、第4の実施の形態のサーバ装置、FCスイッチ装置、ストレージ装置のハードウェア例は、図3〜5で説明した通りであるため説明を省略する。第4の実施の形態では、サーバ装置、FCスイッチ装置、ストレージ装置を第2の実施の形態と同一の符号により指し示す。
図19は、第4の実施の形態の管理端末装置の機能を示すブロック図である。管理端末装置400は、管理情報記憶部410および制御部420を有する。これらの各機能は、管理端末装置400上のCPUが、管理端末装置400上のメモリに格納された所定のプログラムを実行することにより、管理端末装置400上に実現される。ただし、制御部420を専用のハードウェアにより実現してもよい。
管理情報記憶部410は、第2の実施の形態の管理情報記憶部130に対応する。管理情報記憶部410は、管理情報を記憶する。管理情報は、図9,10で説明した接続構成管理テーブルおよび冗長グループ管理テーブルを含む。
制御部420は、第2の実施の形態の制御部141に対応する。すなわち、第2の実施の形態の制御部141の機能を制御部420が担う。具体的には、制御部420は、ハイパーバイザ140から、何れかの仮想マシンでFCインタフェースを介した通信で障害が発生した旨の通知を受ける。すると、制御部420は、管理情報記憶部410を参照して、当該FCインタフェースを用いて通信する他の仮想マシンを特定する。制御部420は、特定した他の仮想マシンの他のFCインタフェースへの割り当てをハイパーバイザ140に指示する。ハイパーバイザ140は、制御部420の指示により、当該他の仮想マシンを他のFCインタフェースに割り当てる。
次に、以上の構成の管理端末装置400の処理を説明する。
図20は、第4の実施の形態の障害検知時の全体処理を示すシーケンス図である。以下、図20に示す処理をステップ番号に沿って説明する。なお、以下に示すステップST131の直前では、仮想マシン150は仮想アダプタ160を介して、仮想マシン150aは仮想アダプタ160aを介して、ストレージ装置300にアクセスしているとする。また、FCインタフェース106aは、サーバ装置100に未設置であるとする。
(ステップST131)仮想マシン150は、ハイパーバイザ140を介して制御部420に、仮想アダプタ160の故障を通知する。ここで、以下の説明では、仮想マシン150,150aと制御部420の間の通信は当該ステップST131と同様にハイパーバイザ140を介して行われるものとする。
(ステップST132)制御部420は、管理情報記憶部410に記憶された接続構成管理テーブルを参照して、仮想アダプタ160とFCインタフェース106を共用する仮想アダプタ160aを確認する。また、当該仮想アダプタ160aに対して仮想マシン150aが対応付けられていることを確認する。
(ステップST133)制御部420は、仮想マシン150aに、退避先アダプタがあるかを問い合わせる。仮想マシン150aは、退避先アダプタがない旨を制御部420に応答する。その後、制御部420は、管理者に対してFCインタフェース106aをサーバ装置100に新たに設けるよう通知する。管理者は当該通知に応じて、FCインタフェース106aをサーバ装置100に設置する。なお、ここでは、仮想マシン150も退避先アダプタが存在しない。このため、故障検知後から追加されたFCインタフェース106aが利用可能になるまで、制御部420は、冗長パス制御部153による仮想アダプタの切り換え処理を留保させる。
(ステップST134)制御部420は、FCインタフェース106a上の仮想アダプタ160b,160cのドライバモジュールの組み込みを仮想マシン150,150aに指示する。仮想マシン150,150aは、当該指示に応じて、仮想アダプタ160b,160cのドライバモジュールを組み込む。これにより、仮想マシン150は、仮想アダプタ160bを利用可能となる。仮想マシン150aは、仮想アダプタ160cを利用可能となる。制御部420は、管理情報記憶部410に記憶された冗長グループ管理テーブルに仮想アダプタ160,160bを冗長グループのペアとして登録する。同様に、仮想アダプタ160a,160cを冗長グループのペアとして登録する。
(ステップST135)制御部420は、FCスイッチ装置200のゾーン情報の追加をハイパーバイザ140に指示する。ハイパーバイザ140は、仮想アダプタ160b,160cに対応するポート情報をFCスイッチ装置200のゾーン情報に追加する。これにより、仮想アダプタ160b,160cからFCスイッチ装置200の当該ゾーンを介した通信が可能となる。なお、制御部420からFCスイッチ装置200に対してゾーンの設定を直接行ってもよい。例えば、管理端末装置400とFCスイッチ装置200のSVP203を接続すれば、制御部420からFCスイッチ装置200へ直接指示を送れる。
(ステップST136)制御部420は、冗長グループ管理テーブルを参照して、仮想アダプタ160,160aによるIO要求状態が“停止”となったことを確認する。仮想アダプタ160b,160cを介したストレージ装置300の組み込みを仮想マシン150,150aに指示する。仮想マシン150,150aは、当該指示に応じてストレージ装置300と通信し、仮想アダプタ160b,160cを介したストレージ装置300の利用を可能な状態とする。これにより、仮想マシン150は、仮想アダプタ160bを介してストレージ装置300へアクセス可能となる。仮想マシン150aは、仮想アダプタ160cを介してストレージ装置300へアクセス可能となる。
(ステップST137)制御部420は、仮想マシン150,150aに仮想アダプタの切り換えを指示する。当該指示に応じて、仮想マシン150は、仮想アダプタ160から仮想アダプタ160bへの切り換えを行う。また、仮想マシン150aは、仮想アダプタ160aから仮想アダプタ160cへの切り換えを行う。
(ステップST138)制御部420は、FCインタフェース106を共用する全ての仮想マシンが他のFCインタフェースに移管済であり、FCインタフェース106上の全ての仮想アダプタで通信が停止されたことを確認する。制御部420は、ハイパーバイザ140にFCインタフェース106の停止を指示する。ハイパーバイザ140は、FCインタフェース106を閉塞させて電源OFFし、停止させる。
(ステップST139)制御部420は、ハイパーバイザ140にFCインタフェース106の切り離しを指示する。ハイパーバイザ140は、FCインタフェース106をサーバ装置100から切り離す。FCインタフェース106は、サーバ装置100から取り外し可能な状態となる。
このようにして、制御部420は、仮想マシン150が仮想アダプタ160で故障を検知した場合に、FCインタフェース106を共用する仮想マシン150aの仮想アダプタの切り換えを制御する。ここで、ステップST137では、制御部420は仮想アダプタ160,160aのうち、IO要求状態が“停止”になった方から順にアダプタの切り換えを指示できる。
これにより、第2の実施の形態と同様の効果を得ることができる。また、管理端末装置400でアダプタ切り換えの制御を行えば、サーバ装置100以外の装置(例えば、FCスイッチ装置200やストレージ装置300など)を含めた統合的な運用管理を、管理端末装置400上で行える。すなわち、管理者は、仮想マシンと接続先装置との間の接続構成や冗長グループの割当状況などを管理端末装置400で管理可能となる。このため、情報処理システム全体の運用管理を効率化できる。
[第5の実施の形態]
次に、第5の実施の形態を説明する。前述の第2〜第4の実施の形態との相違点を主に説明し、同様の事項は説明を省略する。
第4の実施の形態では、管理端末装置400に制御部420を設ける例を示した。一方、制御部420の機能をFCスイッチ装置200に設けてもよい。第5の実施の形態では、FCスイッチ装置200が制御部を備える例を示す。
ここで、第5の実施の形態の情報処理システムの全体構成は、図2で説明した第2の実施の形態の情報処理システムの全体構成と同様であるため説明を省略する。また、第5の実施の形態のサーバ装置、FCスイッチ装置、ストレージ装置のハードウェア例は、図3〜5で説明した通りであるため説明を省略する。第5の実施の形態では、サーバ装置、FCスイッチ装置、ストレージ装置を第2の実施の形態と同一の符号により指し示す。
図21は、第5の実施の形態のFCスイッチ装置の機能を示すブロック図である。FCスイッチ装置200は、管理情報記憶部210および制御部220を有する。これらの各機能は、SVP203がSVP203上のメモリまたはメモリ202に格納された所定のプログラムを実行することにより、FCスイッチ装置200上に実現される。ただし、制御部220を専用のハードウェアにより実現してもよい。
管理情報記憶部210は、第2の実施の形態の管理情報記憶部130に対応する。管理情報記憶部210は、管理情報を記憶する。管理情報は、図9,10で説明した接続構成管理テーブルおよび冗長グループ管理テーブルを含む。
制御部220は、第2の実施の形態の制御部141に対応する。すなわち、第2の実施の形態の制御部141の機能を制御部220が担う。具体的には、制御部220は、ハイパーバイザ140から、何れかの仮想マシンでFCインタフェースを介した通信に障害が発生した旨の通知を受ける。すると、制御部220は、管理情報記憶部210を参照して、当該FCインタフェースを用いて通信する他の仮想マシンを特定する。制御部220は、特定した他の仮想マシンの他のFCインタフェースへの割り当てをハイパーバイザ140に指示する。ハイパーバイザ140は、制御部220の指示により、当該他の仮想マシンを他のFCインタフェースに割り当てる。
次に、以上の構成のFCスイッチ装置200の処理を説明する。
図22は、第5の実施の形態の障害検知時の全体処理を示すシーケンス図である。以下、図22に示す処理をステップ番号に沿って説明する。なお、以下に示すステップST141の直前では、仮想マシン150は仮想アダプタ160を介して、仮想マシン150aは仮想アダプタ160aを介して、ストレージ装置300にアクセスしているとする。また、FCインタフェース106aは、サーバ装置100に未設置であるとする。
(ステップST141)仮想マシン150は、ハイパーバイザ140を介して制御部220に、仮想アダプタ160の故障を通知する。ここで、以下の説明では、仮想マシン150,150aと制御部220の間の通信は当該ステップST141と同様にハイパーバイザ140を介して行われるものとする。
(ステップST142)制御部220は、管理情報記憶部210に記憶された接続構成管理テーブルを参照して、仮想アダプタ160とFCインタフェース106を共用する仮想アダプタ160aを確認する。また、当該仮想アダプタ160aに対して仮想マシン150aが対応付けられていることを確認する。
(ステップST143)制御部220は、仮想マシン150aに、退避先アダプタがあるかを問い合わせる。仮想マシン150aは、退避先アダプタがない旨を制御部220に応答する。その後、制御部220は、管理者に対してFCインタフェース106aをサーバ装置100に新たに設けるよう通知する。管理者は当該通知に応じて、FCインタフェース106aをサーバ装置100に設置する。なお、ここでは、仮想マシン150も退避先アダプタが存在しない。このため、故障検知後から追加されたFCインタフェース106aが利用可能になるまで、制御部220は、冗長パス制御部153による仮想アダプタの切り換え処理を留保させる。
(ステップST144)制御部220は、FCインタフェース106a上の仮想アダプタ160b,160cのドライバモジュールの組み込みを仮想マシン150,150aに指示する。仮想マシン150,150aは、当該指示に応じて、仮想アダプタ160b,160cのドライバモジュールを組み込む。これにより、仮想マシン150は、仮想アダプタ160bを利用可能となる。仮想マシン150aは、仮想アダプタ160cを利用可能となる。制御部220は、管理情報記憶部210に記憶された冗長グループ管理テーブルに仮想アダプタ160,160bを冗長グループのペアとして登録する。同様に、仮想アダプタ160a,160cを冗長グループのペアとして登録する。
(ステップST145)制御部220は、仮想アダプタ160b,160cに対応するポート情報をFCスイッチ装置200のゾーン情報に追加する。これにより、仮想アダプタ160b,160cからFCスイッチ装置200の当該ゾーンを介した通信が可能となる。
(ステップST146)制御部220は、仮想アダプタ160b,160cを介したストレージ装置300の組み込みを仮想マシン150,150aに指示する。仮想マシン150,150aは、当該指示に応じてストレージ装置300と通信し、仮想アダプタ160b,160cを介したストレージ装置300の利用を可能な状態とする。これにより、仮想マシン150は、仮想アダプタ160bを介してストレージ装置300へアクセス可能となる。仮想マシン150aは、仮想アダプタ160cを介してストレージ装置300へアクセス可能となる。
(ステップST147)制御部220は、冗長グループ管理テーブルを参照して、仮想アダプタ160,160aによるIO要求状態が“停止”となったことを確認する。制御部220は、仮想マシン150,150aに仮想アダプタの切り換えを指示する。当該指示に応じて、仮想マシン150は、仮想アダプタ160から仮想アダプタ160bへの切り換えを行う。また、仮想マシン150aは、仮想アダプタ160aから仮想アダプタ160cへの切り換えを行う。
(ステップST148)制御部220は、FCインタフェース106を共用する全ての仮想マシンが他のFCインタフェースに移管済であり、FCインタフェース106上の全ての仮想アダプタで通信が停止されたことを確認する。制御部220は、ハイパーバイザ140にFCインタフェース106の停止を指示する。ハイパーバイザ140は、FCインタフェース106を閉塞させて電源OFFし、停止させる。
(ステップST149)制御部220は、ハイパーバイザ140にFCインタフェース106の切り離しを指示する。ハイパーバイザ140は、FCインタフェース106をサーバ装置100から切り離す。FCインタフェース106は、サーバ装置100から取り外し可能な状態となる。
このようにして、制御部220は、仮想マシン150が仮想アダプタ160で故障を検知した場合に、FCインタフェース106を共用する仮想マシン150aの仮想アダプタの切り換えを制御する。ここで、ステップST147では、制御部220は仮想アダプタ160,160aのうち、IO要求状態が“停止”になった方から順にアダプタの切り換えを指示できる。
これにより、第2の実施の形態と同様の効果を得ることができる。また、FCスイッチ装置200でアダプタ切り換えの制御とゾーンの設定をまとめて行うことで、サーバ装置100の構成の変化に柔軟に対応できる。
[第6の実施の形態]
次に、第6の実施の形態を説明する。前述の第2〜第5の実施の形態との相違点を主に説明し、同様の事項は説明を省略する。
第6の実施の形態では、ストレージ装置300が制御部を備える例を示す。
ここで、第6の実施の形態の情報処理システムの全体構成は、図2で説明した第2の実施の形態の情報処理システムの全体構成と同様であるため説明を省略する。また、第6の実施の形態のサーバ装置、FCスイッチ装置、ストレージ装置のハードウェア例は、図3〜5で説明した通りであるため説明を省略する。第6の実施の形態では、サーバ装置、FCスイッチ装置、ストレージ装置を第2の実施の形態と同一の符号により指し示す。ここで、サーバ装置100とストレージ装置300上のSVP304は、専用の管理LANで接続される。
図23は、第6の実施の形態のストレージ装置の機能を示すブロック図である。ストレージ装置300は、管理情報記憶部360および制御部370を有する。これらの各機能は、SVP304がSVP304上のメモリに格納された所定のプログラムを実行することにより、ストレージ装置300上に実現される。ただし、制御部370を専用のハードウェアにより実現してもよい。
管理情報記憶部360は、第2の実施の形態の管理情報記憶部130に対応する。管理情報記憶部360は、管理情報を記憶する。管理情報は、図9,10で説明した接続構成管理テーブルおよび冗長グループ管理テーブルを含む。
制御部370は、第2の実施の形態の制御部141に対応する。すなわち、第2の実施の形態の制御部141の機能を制御部370が担う。具体的には、制御部370は、何れかの仮想マシンでタイムアウトなどのアクセス異常を検知すると、当該仮想マシンに対応する仮想アダプタで故障が発生した旨を検知する。すると、制御部370は、管理情報記憶部360を参照して、当該仮想マシンに対応するFCインタフェースを用いて通信する他の仮想マシンを特定する。制御部370は、特定した他の仮想マシンの他のFCインタフェースへの割り当てをハイパーバイザ140に指示する。ハイパーバイザ140は、制御部370の指示により、当該他の仮想マシンを他のFCインタフェースに割り当てる。
次に、以上の構成のストレージ装置300の処理を説明する。
図24は、第6の実施の形態の障害検知時の全体処理を示すシーケンス図である。以下、図24に示す処理をステップ番号に沿って説明する。なお、以下に示すステップST151の直前では、仮想マシン150は仮想アダプタ160を介して、仮想マシン150aは仮想アダプタ160aを介して、ストレージ装置300にアクセスしているとする。また、FCインタフェース106aは、サーバ装置100に未設置であるとする。
(ステップST151)制御部370は、仮想マシン150からのアクセスにつき、タイムアウトなどによるアクセス異常を検知する。制御部370は、管理情報記憶部360に記憶された接続構成管理テーブルを参照して、仮想マシン150に対応する仮想アダプタ160を特定する。そして、制御部370は、仮想アダプタ160の故障を検知する。
(ステップST152)制御部370は、接続構成管理テーブルを参照して、仮想アダプタ160とFCインタフェース106を共用する仮想アダプタ160aを確認する。また、当該仮想アダプタ160aに対して仮想マシン150aが対応付けられていることを確認する。
(ステップST153)制御部370は、ハイパーバイザ140を介して、仮想マシン150aに、退避先アダプタがあるかを問い合わせる。仮想マシン150aは、退避先アダプタがない旨を制御部370に応答する。その後、制御部370は、管理者に対してFCインタフェース106aをサーバ装置100に新たに設けるよう通知する。管理者は当該通知に応じて、FCインタフェース106aをサーバ装置100に設置する。なお、ここでは、仮想マシン150も退避先アダプタが存在しない。このため、故障検知後から追加されたFCインタフェース106aが利用可能になるまで、制御部370は、冗長パス制御部153による仮想アダプタの切り換え処理を留保させる。ここで、以下の説明では、仮想マシン150,150aと制御部370の間の通信は当該ステップST153と同様にハイパーバイザ140を介して行われるものとする。
(ステップST154)制御部370は、FCインタフェース106a上の仮想アダプタ160b,160cのドライバモジュールの組み込みを仮想マシン150,150aに指示する。仮想マシン150,150aは、当該指示に応じて、仮想アダプタ160b,160cのドライバモジュールを組み込む。これにより、仮想マシン150は、仮想アダプタ160bを利用可能となる。仮想マシン150aは、仮想アダプタ160cを利用可能となる。制御部370は、管理情報記憶部360に記憶された冗長グループ管理テーブルに仮想アダプタ160,160bを冗長グループのペアとして登録する。同様に、仮想アダプタ160a,160cを冗長グループのペアとして登録する。
(ステップST155)制御部370は、仮想アダプタ160b,160cに対応するポート情報をFCスイッチ装置200のゾーン情報に追加する。これにより、仮想アダプタ160b,160cからFCスイッチ装置200の当該ゾーンを介した通信が可能となる。
(ステップST156)制御部370は、仮想アダプタ160b,160cを介したストレージ装置300の組み込みを仮想マシン150,150aに指示する。仮想マシン150,150aは、当該指示に応じてストレージ装置300と通信し、仮想アダプタ160b,160cを介したストレージ装置300の利用を可能な状態とする。これにより、仮想マシン150は、仮想アダプタ160bを介してストレージ装置300へアクセス可能となる。仮想マシン150aは、仮想アダプタ160cを介してストレージ装置300へアクセス可能となる。
(ステップST157)制御部370は、冗長グループ管理テーブルを参照して、仮想アダプタ160,160aによるIO要求状態が“停止”となったことを確認する。制御部370は、仮想マシン150,150aに仮想アダプタの切り換えを指示する。当該指示に応じて、仮想マシン150は、仮想アダプタ160から仮想アダプタ160bへの切り換えを行う。また、仮想マシン150aは、仮想アダプタ160aから仮想アダプタ160cへの切り換えを行う。
(ステップST158)制御部370は、FCインタフェース106を共用する全ての仮想マシンが他のFCインタフェースに移管済であり、FCインタフェース106上の全ての仮想アダプタで通信が停止されたことを確認する。制御部370は、ハイパーバイザ140にFCインタフェース106の停止を指示する。ハイパーバイザ140は、FCインタフェース106を閉塞させて電源OFFし、停止させる。
(ステップST159)制御部370は、ハイパーバイザ140にFCインタフェース106の切り離しを指示する。ハイパーバイザ140は、FCインタフェース106をサーバ装置100から切り離す。FCインタフェース106は、サーバ装置100から取り外し可能な状態となる。
このようにして、制御部370は、仮想マシン150が仮想アダプタ160で故障を検知した場合に、FCインタフェース106を共用する仮想マシン150aの仮想アダプタの切り換えを制御する。ここで、ステップST157では、制御部370は仮想アダプタ160,160aのうち、IO要求状態が“停止”になった方から順にアダプタの切り換えを指示できる。
これにより、第2の実施の形態と同様の効果を得ることができる。また、ストレージ装置300の判断で仮想アダプタの故障を検知し、アダプタ切り換えの制御を行うことで、切り換え処理を高速に行うことができる。
[第7の実施の形態]
次に、第7の実施の形態を説明する。前述の第2〜第6の実施の形態との相違点を主に説明し、同様の事項は説明を省略する。
第2〜第6の実施の形態では、サーバ装置100が物理アダプタとしてFCインタフェース106,106aを備える例を示した。一方で、他の種類の物理アダプタについても制御部141の機能を利用できる。その一例として、第7の実施の形態では、FCoE(FC Over Ethernet、Ethernetは登録商標)インタフェースを備えるサーバ装置に制御部141の機能を適用する場合を示す。
ここで、第7の実施の形態の情報処理システムの全体構成は、図2で説明した第2の実施の形態の情報処理システムの全体構成と同様であるため説明を省略する。ただし、第7の実施の形態の情報処理システムでは、サーバ装置100に代えてサーバ装置100bを、FCスイッチ装置200に代えてFCoEスイッチ装置200aを含む。更に、FCoEスイッチ装置200aは、ネットワーク20に接続される。FCoEスイッチ装置200aは、CEE(Converged Enhanced Ethernet)スイッチ装置を用いてもよい。
また、第7の実施の形態のサーバ装置100b、FCoEスイッチ装置200a、ストレージ装置のハードウェア例は、図3〜5で説明した通りであるため説明を省略する。第7の実施の形態では、ストレージ装置を第2の実施の形態と同一の符号により指し示す。ここで、サーバ装置100bは、FCインタフェース106,106aに代えて、FCoEインタフェース106b,106cを有する。
ここで、FCoEは、イーサネット(登録商標)上でFCのデータを伝送するための技術である。FCoEでは、FCのデータをイーサネットフレームにカプセル化して伝送できる。FCoEスイッチ装置200aは、ストレージ装置300との間ではFCによる通信を行う。ストレージ装置300が、FCoEによる接続であれば、FCoEによる通信でもよい。FCoEスイッチ装置200aは、ネットワーク20との間ではイーサネットによる通信を行う。FCoEインタフェース106b,106cは、HBAの一例である。
図25は、第7の実施の形態のサーバ装置の機能を示すブロック図である。サーバ装置100bは、管理情報記憶部130、ハイパーバイザ140、仮想マシン150d,150e、FC仮想アダプタ160d,160e,160f,160gおよびNIC仮想アダプタ170,170a,170b,170cを有する。
管理情報記憶部130、ハイパーバイザ140および仮想マシン150d,150eの機能は、CPU111が所定のプログラムを実行することによりサーバ装置100b上に実現される。また、FC仮想アダプタ160d,160eおよびNIC仮想アダプタ170,170aの機能は、FCoEインタフェース106b上の制御装置が所定のプログラムを実行することにより、FCoEインタフェース106b上に実現される。更に、FC仮想アダプタ160f,160gおよびNIC仮想アダプタ170b,170cの機能は、FCoEインタフェース106c上の制御装置が所定のプログラムを実行することにより、FCoEインタフェース106c上に実現される。ただし、これらのユニットの全部または一部を専用のハードウェアにより実現してもよい。
管理情報記憶部130は、第2の実施の形態の管理情報記憶部130に対応する。ハイパーバイザ140は、第2の実施の形態のハイパーバイザ140に対応する。
仮想マシン150d,150eは、第2の実施の形態の仮想マシン150,150aに対応する。仮想マシン150dは、OS151、アダプタドライバ152,152d、冗長パス制御部153,153dおよび接続先装置ドライバ154を有する。
OS151および接続先装置ドライバ154は、第2の実施の形態のOS151および接続先装置ドライバ154に対応する。
アダプタドライバ152は、OS151上からFC仮想アダプタを利用するためのソフトウェアである。アダプタドライバ152dは、OS151上からNIC仮想アダプタを利用するためのソフトウェアである。
冗長パス制御部153は、FC仮想アダプタを冗長化して、仮想マシン150dにおけるFC通信路の信頼性を向上するソフトウェアである。冗長パス制御部153dは、NIC仮想アダプタを冗長化して、仮想マシン150dにおけるイーサネット通信路の信頼性を向上するソフトウェアである。
仮想マシン150eは、OS151a、アダプタドライバ152a,152e、冗長パス制御部153a,153eおよび接続先装置ドライバ154aを有する。
OS151aおよび接続先装置ドライバ154aは、第2の実施の形態のOS151aおよび接続先装置ドライバ154aに対応する。
アダプタドライバ152a,152eは、アダプタドライバ152,152dに対応する。冗長パス制御部153a,153eは、冗長パス制御部153,153dに対応する。
FC仮想アダプタ160d,160e,160f,160gは、FCoEインタフェース106b,106c上のリソースにより実現された仮想的なFC用のアダプタである(アクセス部の一例である)。仮想マシン150d,150eは、FC仮想アダプタ160d,160e,160f,160gを利用して、ストレージ装置300とFCによるデータ通信を行える。
NIC仮想アダプタ170,170a,170b,170cは、FCoEインタフェース106b,106c上のリソースにより実現された仮想的なNIC用のアダプタである(アクセス部の一例である)。仮想マシン150d,150eは、NIC仮想アダプタ170,170a,170b,170cを利用して、ネットワーク20に接続された情報処理装置とイーサネットによるデータ通信を行える。
FCoEインタフェース106b上のFC仮想アダプタ160d,160eおよびNIC仮想アダプタ170,170aは、単一の物理ポートで実現される(仮想ポート4つ)。なお、例えば、FC仮想アダプタ160d,160eで1つの物理ポート(仮想ポート2つ)、NIC仮想アダプタ170,170aで1つの物理ポート(仮想ポート2つ)、というように2つの物理ポートで実現してもよい。このような構成によっても、制御部141は第2の実施の形態と同一の処理を行える。具体的には次の通りである。
例えば、管理情報記憶部130に記憶された接続構成管理テーブル131で、仮想マシン150dにFC仮想アダプタ160dおよびNIC仮想アダプタ170が割り当てられる。同様に、仮想マシン150eにFC仮想アダプタ160eおよびNIC仮想アダプタ170aが割り当てられる。
また、管理情報記憶部130に記憶された冗長グループ管理テーブル132では、FC仮想アダプタ160dとFC仮想アダプタ160fとが冗長グループのペアとして設定される。FC仮想アダプタ160eとFC仮想アダプタ160gとが冗長グループのペアとして設定される。NIC仮想アダプタ170とNIC仮想アダプタ170bとが冗長グループのペアとして設定される。NIC仮想アダプタ170aとNIC仮想アダプタ170cとが冗長グループのペアとして設定される。
そして、制御部141が仮想マシン150dの冗長パス制御部153からFC仮想アダプタ160dの故障の通知を受けたとする。すると、制御部141は、接続構成管理テーブル131を参照して、FCoEインタフェース106bを仮想マシン150dと共用する仮想マシン150eを特定する。制御部141は、仮想マシン150dにつき、FC仮想アダプタ160fおよびNIC仮想アダプタ170bを割り当てる。制御部141は、仮想マシン150eにつき、FC仮想アダプタ160gおよびNIC仮想アダプタ170cを割り当てる。制御部141は、仮想マシン150d,150eに当該割り当てに基づくアダプタ切り換えを指示する。
なお、切り換えの際、制御部141は、第2〜第6の実施の形態と同様に、アダプタドライバ152,152a,152d,152eおよび冗長パス制御部153,153a,153d,153eに対してドライバモジュールおよび接続先装置の組み込みを事前に行う。
冗長パス制御部153dは、アダプタ切り換えの指示を受けると、NIC仮想アダプタ170からNIC仮想アダプタ170bへNIC仮想アダプタを切り換える。
また、冗長パス制御部153aは、アダプタ切り換えの指示を受けると、FC仮想アダプタ160eからFC仮想アダプタ160gへFC仮想アダプタを切り換える。更に、冗長パス制御部153eは、NIC仮想アダプタ170aからNIC仮想アダプタ170cへNIC仮想アダプタを切り換える。
これにより、第2の実施の形態と同様の効果を得ることができる。特に、同一物理アダプタに異なるインタフェースをもつ仮想アダプタに対して切り換え制御を行える。FC仮想アダプタ160dの故障の通知を受けた際に、仮想マシン150dに対してNIC仮想アダプタ170の切り換えを指示する。このため、冗長パス制御部153dでNIC仮想アダプタ170の故障が検知されない場合でも、冗長パス制御部153dは当該指示に応じてNIC仮想アダプタ170bへの切り換えを行える。
なお、制御部141が冗長パス制御部153dからNIC仮想アダプタ170の故障の通知を受けた場合も、制御部141は同様にして、仮想マシン150d,150eのアダプタの切り換えを制御する。
ここで、冗長パス制御部153,153a,153d,153eは、第2の実施の形態と同様に、仮想アダプタの切り換え前後で仮想マシン150d,150eがストレージ装置300にアクセス可能であることを確認した後に、各仮想アダプタの切り換えを行う。また、冗長パス制御部153,153a,153d,153eは、仮想マシン150d,150eが各仮想アダプタによりストレージ装置300にアクセス中でないタイミングで、各仮想アダプタの切り換えを行う。
更に、第3の実施の形態と同様に、冗長パス制御部153,153a,153d,153eの機能を制御部141が備えてもよい。また、FC仮想アダプタおよびNIC仮想アダプタのように異なる種類のプロトコルで通信する仮想アダプタを示したが、同一のプロトコルでもよい。
また、第2〜第7の実施の形態では、FCインタフェースやFCoEインタフェースを用いる場合を例示したが、それ以外の物理アダプタを用いても同様である。例えば、制御部141は、NICインタフェースやSASインタフェース、Infinibandインタフェース、PCI Expressインタフェースに対しても、同様にしてアダプタ切り換えの制御を行える。
上記については単に本発明の原理を示すものである。更に、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
1 情報処理装置
1a,1b 仮想マシン
1c,1d インタフェース部
1e 記憶部
1f 制御部
2 デバイス

Claims (8)

  1. 複数の仮想マシンが動作可能であり前記複数の仮想マシンからデバイスへのアクセスに用いられる複数のインタフェース部を搭載可能な情報処理装置であって、
    前記複数のインタフェース部のうち前記複数の仮想マシンそれぞれがアクセスに用いるインタフェース部を示す情報を記憶する記憶部と、
    第1の仮想マシンにおいて第1のインタフェース部を用いたアクセスにエラーが発生すると、前記記憶部を参照して、前記第1のインタフェース部を用いる第2の仮想マシンを判定し、前記第2の仮想マシンが用いるインタフェース部を、前記第1のインタフェース部から前記情報処理装置に搭載した第2のインタフェース部に切り換える制御部と、
    を有する情報処理装置。
  2. 前記第1のインタフェース部は、複数のリソースを含み、
    前記複数のリソースのうち第1のリソースが前記第1の仮想マシンに割り当てられ、第2のリソースが前記第2の仮想マシンに割り当てられており、
    前記制御部は、前記第1の仮想マシンにおいて前記第1のリソースを用いたアクセスにエラーが発生すると、前記第2のリソースを用いたアクセスにエラーが発生していなくても、前記第2の仮想マシンが用いるインタフェース部を切り換える、
    請求の範囲第1項記載の情報処理装置。
  3. 前記制御部は、前記第2の仮想マシンが前記デバイスにアクセス中でないタイミングで前記第2のインタフェース部への切り換えが行われるよう制御する、請求の範囲第1項または第2項記載の情報処理装置。
  4. 前記制御部は、前記第1のインタフェース部を用いてアクセス可能であったデバイスに前記第2のインタフェース部を用いてアクセス可能であることが確認されてから、前記第2のインタフェース部への切り換えが行われるよう制御する、請求の範囲第1項乃至第3項の何れか一項に記載の情報処理装置。
  5. 前記制御部は、前記第1の仮想マシンからの通知に基づいて、前記第1の仮想マシンにおいて前記第1のインタフェース部を用いたアクセスにエラーが発生したことを検知する、請求の範囲第1項乃至第4項の何れか一項に記載の情報処理装置。
  6. 複数の仮想マシンが動作可能であり前記複数の仮想マシンからデバイスへのアクセスに用いられる複数のインタフェース部を搭載可能な他の情報処理装置と通信する情報処理装置であって、
    前記複数のインタフェース部のうち前記複数の仮想マシンそれぞれがアクセスに用いるインタフェース部を示す情報を記憶する記憶部と、
    第1の仮想マシンにおいて第1のインタフェース部を用いたアクセスにエラーが発生すると、前記記憶部を参照して、前記第1のインタフェース部を用いる第2の仮想マシンを判定し、前記第2の仮想マシンが用いるインタフェース部を、前記第1のインタフェース部から前記情報処理装置に搭載した第2のインタフェース部に切り換える制御部と、
    を有する情報処理装置。
  7. 複数の仮想マシンが動作可能であり前記複数の仮想マシンからデバイスへのアクセスに用いられる複数のインタフェース部を搭載可能な情報処理装置、または、前記情報処理装置と通信する他の情報処理装置が実行する仮想マシン制御方法であって、
    第1の仮想マシンにおいて第1のインタフェース部を用いたアクセスにエラーが発生したことを検知し、
    前記複数のインタフェース部のうち前記複数の仮想マシンそれぞれがアクセスに用いるインタフェース部を示す情報を記憶する記憶装置を参照して、前記第1のインタフェース部を用いる第2の仮想マシンを判定し、
    前記第2の仮想マシンが用いるインタフェース部を、前記第1のインタフェース部から前記情報処理装置に搭載した第2のインタフェース部に切り換える、
    仮想マシン制御方法。
  8. 複数の仮想マシンが動作可能であり前記複数の仮想マシンからデバイスへのアクセスに用いられる複数のインタフェース部を搭載可能なコンピュータを制御するためのプログラムであって、前記コンピュータまたは前記コンピュータと通信する他のコンピュータに、
    第1の仮想マシンにおいて第1のインタフェース部を用いたアクセスにエラーが発生したことを検知し、
    前記複数のインタフェース部のうち前記複数の仮想マシンそれぞれがアクセスに用いるインタフェース部を示す情報を記憶する記憶装置を参照して、前記第1のインタフェース部を用いる第2の仮想マシンを判定し、
    前記第2の仮想マシンが用いるインタフェース部を、前記第1のインタフェース部から前記コンピュータに搭載した第2のインタフェース部に切り換える、
    処理を実行させるプログラム。
JP2013521358A 2011-06-21 2011-06-21 情報処理装置、仮想マシン制御方法およびプログラム Pending JPWO2012176278A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013521358A JPWO2012176278A1 (ja) 2011-06-21 2011-06-21 情報処理装置、仮想マシン制御方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013521358A JPWO2012176278A1 (ja) 2011-06-21 2011-06-21 情報処理装置、仮想マシン制御方法およびプログラム

Publications (1)

Publication Number Publication Date
JPWO2012176278A1 true JPWO2012176278A1 (ja) 2015-02-23

Family

ID=52687749

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013521358A Pending JPWO2012176278A1 (ja) 2011-06-21 2011-06-21 情報処理装置、仮想マシン制御方法およびプログラム

Country Status (1)

Country Link
JP (1) JPWO2012176278A1 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002063126A (ja) * 2000-08-18 2002-02-28 Fujitsu Ltd マルチパス計算機システム
JP2008146566A (ja) * 2006-12-13 2008-06-26 Hitachi Ltd 計算機、仮想デバイスの制御方法およびそのプログラム
JP2010113707A (ja) * 2008-11-10 2010-05-20 Internatl Business Mach Corp <Ibm> 物理及び仮想マルチパス入出力を動的に管理する方法、装置、システム、及びプログラム
JP2011014088A (ja) * 2009-07-06 2011-01-20 Hitachi Ltd 計算機装置及びパス管理方法
JP2012203636A (ja) * 2011-03-25 2012-10-22 Hitachi Ltd 仮想計算機の制御方法及び計算機

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002063126A (ja) * 2000-08-18 2002-02-28 Fujitsu Ltd マルチパス計算機システム
JP2008146566A (ja) * 2006-12-13 2008-06-26 Hitachi Ltd 計算機、仮想デバイスの制御方法およびそのプログラム
JP2010113707A (ja) * 2008-11-10 2010-05-20 Internatl Business Mach Corp <Ibm> 物理及び仮想マルチパス入出力を動的に管理する方法、装置、システム、及びプログラム
JP2011014088A (ja) * 2009-07-06 2011-01-20 Hitachi Ltd 計算機装置及びパス管理方法
JP2012203636A (ja) * 2011-03-25 2012-10-22 Hitachi Ltd 仮想計算機の制御方法及び計算機

Similar Documents

Publication Publication Date Title
WO2012176278A1 (ja) 情報処理装置、仮想マシン制御方法およびプログラム
US9298566B2 (en) Automatic cluster-based failover handling
TWI439867B (zh) 動態實體及虛擬多重路徑輸入/輸出
US8010827B2 (en) Method and computer system for failover
US6578158B1 (en) Method and apparatus for providing a raid controller having transparent failover and failback
KR100952553B1 (ko) 가상 계산기 시스템 및 그 제어 방법
US8683172B2 (en) Method and apparatus for management between virtualized machines and virtualized storage systems
JP5352132B2 (ja) 計算機システム及びそのi/o構成変更方法
JP5561622B2 (ja) 多重化システム、データ通信カード、状態異常検出方法、及びプログラム
JP4448878B2 (ja) 障害回復環境の設定方法
TWI403891B (zh) 直接附加儲存系統之主動-主動失效切換
JP6056554B2 (ja) クラスタシステム
US20110004708A1 (en) Computer apparatus and path management method
JP2007072571A (ja) 計算機システム及び管理計算機ならびにアクセスパス管理方法
JP2017010390A (ja) ストレージ制御装置、ストレージ制御プログラム、およびストレージ制御方法
JP5585731B2 (ja) 情報処理装置、仮想マシン管理方法および仮想マシン管理プログラム
WO2014174594A1 (ja) ストレージシステムおよびストレージシステムの障害管理方法
WO2012004902A1 (ja) 計算機システム及び計算機システムの系切替制御方法
WO2011111245A1 (ja) 計算機システム、計算機システムの制御方法及びプログラムを格納した記憶媒体
JP2012238299A (ja) ストレージサブシステムのための単一障害点を除去するためのシステム及び方法
JP2004088570A (ja) ネットワーク計算機システムおよび管理装置
US10884878B2 (en) Managing a pool of virtual functions
JP6777848B2 (ja) 制御装置、及びストレージ装置
US11755438B2 (en) Automatic failover of a software-defined storage controller to handle input-output operations to and from an assigned namespace on a non-volatile memory device
CN112799602B (zh) 一种云硬盘在线扩容方法

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150210