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

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

Info

Publication number
JP5585731B2
JP5585731B2 JP2013521357A JP2013521357A JP5585731B2 JP 5585731 B2 JP5585731 B2 JP 5585731B2 JP 2013521357 A JP2013521357 A JP 2013521357A JP 2013521357 A JP2013521357 A JP 2013521357A JP 5585731 B2 JP5585731 B2 JP 5585731B2
Authority
JP
Japan
Prior art keywords
activation
virtual machine
activation code
program
virtual
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.)
Active
Application number
JP2013521357A
Other languages
English (en)
Other versions
JPWO2012176277A1 (ja
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
Application granted granted Critical
Publication of JP5585731B2 publication Critical patent/JP5585731B2/ja
Publication of JPWO2012176277A1 publication Critical patent/JPWO2012176277A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Description

本発明は情報処理装置、仮想マシン管理方法および仮想マシン管理プログラムに関する。
現在、情報処理の分野では、物理的なコンピュータ(物理マシンや物理ホストと呼ぶことがある)上で、複数の仮想的なコンピュータ(仮想マシンや論理ホストと呼ぶことがある)を動作させる仮想化技術が利用されている。各仮想マシン上では、オペレーティングシステム(OS:Operating System)などのソフトウェアを実行できる。仮想化技術を利用する物理マシンは、複数の仮想マシンを管理するためのソフトウェアを実行する。
例えば、ハイパーバイザと呼ばれるソフトウェアが、CPU(Central Processing Unit)の処理能力やRAM(Random Access Memory)の記憶領域を、演算のリソースとして複数の仮想マシンに割り振る。また、例えば、ハイパーバイザが、NIC(Network Interface Card)やHBA(Host Bus Adapter)などのインタフェースの処理能力を、通信のリソースとして複数の仮想マシンに割り振ることがある。
ところで、コンピュータがOSプログラムなどのプログラムを起動するとき、まず起動用のコード(ブートコードと呼ぶことがある)を実行することがある。コンピュータは、当該コードに従って、プログラムが記憶された所定の記憶装置にアクセスし、当該記憶装置からプログラムを読み込んで実行を開始する。
なお、管理サーバがディスク番号を計算機のBIOS(Basic Input/Output System)情報内に設定して当該計算機を再起動させることで、指定したディスクから当該計算機がOSプログラムを読み込むよう制御するブート制御方法が提案されている。また、仮想化機構が、仮想マシンに割当可能な仮想HBAとWWN(World Wide Name)とを対応付けておき、仮想マシンからストレージ装置へのアクセスをWWNに基づいて制限できるようにする仮想計算機システムが提案されている。
特開2007−164305号公報([0024],[0025]) 特開2010−33403号公報
コンピュータは、NICやHBAなどのインタフェースを介して接続された記憶装置から、OSプログラムなどのプログラムを読み込んで実行することもできる。その場合、コンピュータは、例えば、インタフェース内に記憶されている起動用のコードを実行することで、インタフェースを介して当該記憶装置にアクセスすることが考えられる。
しかし、複数の仮想マシンが同じインタフェースを共通に利用する物理マシンでは、各仮想マシンがインタフェース内のコードを用いて記憶装置にアクセスしようとすると、仮想マシンに応じてアクセス先の記憶装置を変更することが困難であるという問題がある。よって、例えば、複数種類のOSプログラムを複数の記憶装置に分散して格納しても、インタフェース内に記憶された起動用のコードが1つのみである場合、全ての仮想マシンが同一の記憶装置からOSプログラムを読み込もうとするおそれがある。
本発明はこのような点に鑑みてなされたものであり、プログラムの起動の際に何れの記憶装置からプログラムを読み込むかを仮想マシンに応じて変更できる情報処理装置、仮想マシン管理方法および仮想マシン管理プログラムを提供することを目的とする。
複数の仮想マシンが動作可能な情報処理装置が提供される。情報処理装置は、インタフェース部と記憶部と制御部とを有する。インタフェース部は、プログラムを記憶する複数の記憶装置にアクセス可能であって、複数の記憶装置のうちアクセス先の記憶装置を示す情報を含んでおり、当該アクセス先の記憶装置からプログラムを読み込むための第1の起動コードを保持する。記憶部は、それぞれが複数の記憶装置のうちアクセス先の記憶装置を示す情報を含んでおり、インタフェース部を介して当該アクセス先の記憶装置からプログラムを読み込むための複数の第2の起動コードを記憶する。制御部は、複数の仮想マシンのうちのいずれかの仮想マシン上でプログラムを起動するとき、当該仮想マシンに応じた第2の起動コードを記憶部から選択し、第1の起動コードに代えて選択した第2の起動コードを当該仮想マシンに提供する。
また、複数の仮想マシンが動作可能であり、プログラムを記憶する複数の記憶装置にアクセス可能な情報処理装置が実行する仮想マシン管理方法が提供される。仮想マシン管理方法では、複数の仮想マシンのうちのいずれかの仮想マシン上でのプログラムの起動開始を検出する。それぞれが複数の記憶装置のうちアクセス先の記憶装置を示す情報を含んでおり、情報処理装置が備えるインタフェース部を介して当該アクセス先の記憶装置からプログラムを読み込むための複数の第1の起動コードを記憶する記憶部から、プログラムの起動開始を検出した仮想マシンに応じた第1の起動コードを選択する。インタフェース部が保持する、複数の記憶装置のうちアクセス先の記憶装置を示す情報を含んでおり当該アクセス先の記憶装置からプログラムを読み込むための第2の起動コードに代えて、選択した第1の起動コードを当該仮想マシンに提供する。
また、複数の仮想マシンが動作可能であり、プログラムを記憶する複数の記憶装置にアクセス可能なコンピュータで実行される仮想マシン管理プログラムが提供される。
プログラムの起動の際に何れの記憶装置からプログラムを読み込むかを、仮想マシンに応じて変更することができる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
第1の実施の形態の情報処理装置を示す図である。 第2の実施の形態の情報処理システムを示す図である。 第2の実施の形態のサーバ装置のハードウェア例を示す図である。 第2の実施の形態のFCスイッチ装置のハードウェア例を示す図である。 仮想マシンの配置例を示すブロック図である。 第2の実施の形態のハードウェアの割当例を示すブロック図である。 第2の実施の形態のサーバ装置の機能を示すブロック図である。 起動コードのデータ構造例を示す図である。 第2の実施の形態の起動管理テーブルのデータ構造例を示す図である。 第2の実施の形態の全体処理を示すフローチャートである。 第2の実施の形態のVF割当処理を示すフローチャートである。 第2の実施の形態のVF割当処理を示すシーケンス図である。 第2の実施の形態のVF解除処理を示すフローチャートである。 第2の実施の形態のVF解除処理を示すシーケンス図である。 第2の実施の形態の仮想マシン起動処理を示すフローチャートである。 第2の実施の形態の仮想マシン起動処理を示すシーケンス図である。 第3の実施の形態のサーバ装置の機能を示すブロック図である。 第3の実施の形態の起動管理テーブルのデータ構造例を示す図である。 第3の実施の形態のVF割当処理を示すフローチャートである。 第3の実施の形態のVF割当処理を示すシーケンス図である。 第3の実施の形態の仮想マシン起動処理を示すシーケンス図である。 第4の実施の形態のFCスイッチ装置の機能を示すブロック図である。 第4の実施の形態のVF割当処理を示すシーケンス図である。 第4の実施の形態の仮想マシン起動処理を示すシーケンス図である。 第5の実施の形態のサーバ装置の機能を示すブロック図である。 第5の実施の形態の起動管理テーブルのデータ構造例を示す図である。 第5の実施の形態のVF割当処理を示すフローチャートである。 第5の実施の形態のVF割当処理を示すシーケンス図である。 第5の実施の形態の仮想マシン起動処理を示すシーケンス図である。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理装置を示す図である。情報処理装置1では、仮想マシン1a,1bを含む複数の仮想マシンが動作可能である。また、情報処理装置1は、記憶装置2,2aにアクセスすることができる。記憶装置2,2aは、例えば、不揮発性の記憶装置であり、仮想マシン1a,1b上で実行されるOSプログラムなどのプログラムを記憶する。記憶装置2と記憶装置2aとは、異なるプログラムを記憶してもよい。情報処理装置1は、インタフェース部1c、記憶部1dおよび制御部1eを有する。
インタフェース部1cは、記憶装置2,2aにアクセス可能である。インタフェース部1cは、NICやHBAなどのアダプタとして実装してもよい。インタフェース部1cと記憶装置2,2aとは、ケーブルにより直接接続されてもよいし、スイッチなどの中継装置を介して接続されてもよい。インタフェース部1cは、起動コード3(第1の起動コード)を保持する。起動コード3は、インタフェース部1cが備える不揮発性の記憶装置(例えば、ROM(Read Only Memory))に記憶されていてもよい。
ここで、起動コード3は、インタフェース部1cを介して何れかの記憶装置にアクセスし、当該記憶装置からプログラムを読み込むためのコードである。起動コード3は、ブートコードと呼ばれるものであってもよい。起動コード3は、インタフェース部1cからアクセス可能な記憶装置2,2aのうち、アクセス先とする記憶装置を示す情報を含む。例えば、起動コード3は、アクセス先として記憶装置2を示す情報を含む。
記憶部1dは、起動コード3a,3b(第2の起動コード)を記憶する。例えば、記憶部1dは、不揮発NVRAM(Non Volatile RAM)やRAM、HDD(Hard Disk Drive)として実装することができる。起動コード3a,3bは、起動コード3と同様、インタフェース部1cを介して何れかの記憶装置にアクセスし、当該記憶装置からプログラムを読み込むためのコードである。起動コード3a,3bは、それぞれ、インタフェース部1cからアクセス可能な記憶装置2,2aのうち、アクセス先とする記憶装置を示す情報を含む。例えば、起動コード3aは記憶装置2を示す情報を含み、起動コード3bは記憶装置2aを示す情報を含む。
ここで、起動コード3a,3bは、インタフェース部1cが保持する起動コード3に基づいて生成されて記憶部1dに記憶されてもよい。例えば、起動コード3を複製し、複製した起動コードに含まれるアクセス先の記憶装置の情報を書き換えることで、起動コード3a,3bを生成してもよい。また、記憶部1dでは、仮想マシン毎に少なくとも1つの起動コードが対応付けられてもよい。例えば、仮想マシン1aに起動コード3aが対応付けられ、仮想マシン1bに起動コード3bが対応付けられる。記憶部1dは、仮想マシン1a,1bと起動コード3a,3bとの対応関係を示す管理情報を記憶してもよい。ただし、管理情報は、情報処理装置1と通信可能な他の装置に記憶しておいてもよい。
制御部1eは、仮想マシン1a,1bのうちのいずれかの仮想マシン上でプログラム(例えば、OSプログラム)を起動するとき、当該仮想マシンに応じた起動コードを記憶部1dから選択する。そして、インタフェース部1cが保持する起動コード3に代えて、選択した起動コードを当該仮想マシンに提供する。例えば、制御部1eは、仮想マシン1a上でプログラムを起動するとき、起動コード3aを記憶部1dから読み出して仮想マシン1aに提供する。また、仮想マシン1b上でプログラムを起動するとき、起動コード3bを記憶部1dから読み出して仮想マシン1bに提供する。
なお、制御部1eの機能は、例えば、情報処理装置1のCPUおよびRAMを用いて実行されるプログラムのモジュールにより実現することができる。当該モジュールは、ハイパーバイザ内のモジュールとして実装してもよい。また、制御部1eは、仮想マシン1a,1b上のファームウェアから起動コード3の取得要求を受け付けたときに、起動コード3に代えて、記憶部1dに記憶された何れかの起動コードを仮想マシン1a,1bに提供してもよい。仮想マシン1a,1b上のファームウェアは、例えば、制御部1eから提供された起動コードを実行することで、インタフェース部1cを介して記憶装置2,2aのうちの何れかの記憶装置にアクセスし、OSプログラムなどのプログラムを取得する。
第1の実施の形態の情報処理装置1によれば、仮想マシン1a,1bのうちいずれかの仮想マシン上でのプログラムの起動開始が検出される。記憶部1dに記憶された起動コード3a,3bの中から、当該仮想マシンに応じた起動コードが選択される。インタフェース部1cが保持する起動コード3に代えて、選択された起動コードが当該仮想マシンに提供される。当該仮想マシンでは、提供された起動コードが示す記憶装置にアクセスすることで、OSプログラムなどのプログラムが読み出される。
これにより、仮想マシン1a,1bがインタフェース部1cを共通に利用する場合であっても、仮想マシンに応じてアクセス先の記憶装置を変更することができる。例えば、仮想マシン1aが、起動コード3aを用いて記憶装置2との接続を確立し、記憶装置2aに記憶されたプログラムを読み出す。また、仮想マシン1bが、起動コード3bを用いて記憶装置2aとの接続を確立し、記憶装置2aに記憶されたプログラムを読み出す。このように、仮想マシン1a,1bは、異なる記憶装置に記憶されたプログラムを読み出して実行することができる。例えば、仮想マシン1a,1bは、異なる記憶装置に記憶されたOSプログラムを読み出して実行することができる。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムを示す図である。この情報処理システムは、管理端末装置11,21、サーバ装置100、ファイバチャネル(FC:Fibre Channel)スイッチ装置200、ストレージ装置300,300aを含む。管理端末装置11は、サーバ装置100に接続されている。管理端末装置21は、FCスイッチ装置200に接続されている。また、サーバ装置100は、ネットワーク10に接続されている。
管理端末装置11,21は、管理者が操作するコンピュータである。管理端末装置11は、管理者がサーバ装置100に対する指示を入力するためのものである。管理端末装置21は、管理者がFCスイッチ装置200に対する指示を入力するためのものである。
サーバ装置100は、複数の仮想マシンが動作可能なサーバコンピュータである。サーバ装置100は、複数の仮想マシンの起動や停止を管理する。サーバ装置100は、ネットワーク10を介して、ネットワーク10に接続されたクライアント装置に対し仮想マシンの機能を利用可能とする。
FCスイッチ装置200は、FC用の複数のインタフェースを備え、各インタフェース間を中継する切換機である。FCスイッチ装置200は、サーバ装置100およびストレージ装置300,300aの間のデータ通信を中継する。FCスイッチ装置200は、管理端末装置21からの指示を受け、FCスイッチ装置200上の管理機能を実行する。
ストレージ装置300,300aは、プログラムを記憶する記憶装置である。ここで、ストレージ装置300,300aが記憶するプログラムは、OSの起動用のプログラム(以下、OSプログラムという)である。サーバ装置100上で動作する仮想マシンは、ストレージ装置300,300aに記憶されたOSプログラムをロードして実行することで起動される。なお、ストレージ装置300,300aにOS以外の他のアプリケーションを起動するためのプログラムを格納して、仮想マシンでのアプリケーション起動に用いてもよい。
図3は、第2の実施の形態のサーバ装置のハードウェア例を示す図である。サーバ装置100は、CPU(Central Processing Unit)ボード101、クロスバースイッチ102、PCI Express(Peripheral Component Interconnect Express)コントローラ103、SAS(Serial Attached SCSI(Small Computer System Interface))インタフェース104、HDD(Hard Disk Drive)105、FCインタフェース106、ネットワークインタフェース107、SVP(SerVice Processor)108およびディスクドライブ109を有する。
CPUボード101は、CPUやメモリを備えた情報処理部である。CPUボード101は、CPU111、RAM(Random Access Memory)112およびNVRAM113を有する。
CPU111は、ハイパーバイザのプログラム、OSプログラムおよびアプリケーションプログラムを実行して、仮想マシンや当該仮想マシン上のアプリケーションを実現する演算装置である。なお、CPUボード101は複数のCPUを備えてもよい。
RAM112は、CPU111が実行するハイパーバイザのプログラム、OSプログラムおよびアプリケーションプログラムの少なくとも一部を一時的に記憶する揮発性の記憶装置である。RAM112は、CPU111の処理に用いられるデータの少なくとも一部を一時的に記憶する。なお、CPUボード101は複数のRAMを備えてもよい。
NVRAM113は、ハイパーバイザの処理に用いるデータを記憶する不揮発性の記憶装置である。なお、CPUボード101は複数のNVRAMやFlash ROMを備えてもよい。
更に、サーバ装置100は、複数のCPUボードを備えてもよい。
クロスバースイッチ102は、CPUボード101、PCI Expressコントローラ103の間のデータ通信を中継する。
PCI Expressコントローラ103は、クロスバースイッチ102とSASインタフェース104、FCインタフェース106およびネットワークインタフェース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は、スイッチ装置200と接続され、スイッチ装置200との間のデータ通信を制御するHBAである。FCインタフェース106は、FCコントローラ114およびメモリ115を有する。FCコントローラ114は、FCインタフェース106の動作を制御する演算装置である。メモリ115は、FCコントローラ114の処理に用いるデータを記憶する。サーバ装置100は複数のFCコントローラを備えてもよい。
ネットワークインタフェース107は、ネットワーク10と接続され、ネットワーク10を介した他の装置とのデータ通信を制御する。
SVP108は、サーバ装置100を管理するための装置である。SVP108は、サーバ装置のCPUボード101、クロスバースイッチ102、PCI−Expressコントローラ103とI2Cなどで接続される。SVP108は、管理端末装置11に接続される。SVP108は、サーバ装置100を管理するためのGUI(Graphical User Interface)を管理端末装置11に表示させる。管理者は、管理端末装置11で当該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に格納する。
図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間を接続するためのルーティングテーブルを記憶する。
SVP203は、FCスイッチ装置200を管理するための装置である。SVP203は、管理端末装置21に接続される。SVP203は、FCスイッチ装置200を管理するためのGUIを管理端末装置21に表示させる。管理者は、管理端末装置21で当該GUIを操作して、FCスイッチ装置200に対する指示を行える。
クロスバースイッチ204は、各ポートを介した装置間のデータ通信を中継する。
I/Fコントローラ205は、各ポート間のデータの流れを制御する。
バッファ206は、データの流れを制御するためにデータを一時的に格納するための記憶領域である。
ポート207は、外部の装置と接続するためのアダプタである。ポート207は、FCケーブルを介してサーバ装置100と接続されている。ポート207cは、FCケーブルを介してストレージ装置300と接続されている。ポート207dは、FCケーブルを介してストレージ装置300aと接続されている。
図5は、仮想マシンの配置例を示すブロック図である。サーバ装置100は、ハードウェア120、ハイパーバイザ140および仮想マシン150,150aを有する。
ハードウェア120は、サーバ装置100が備える物理的なリソースである。ハードウェア120は、CPUボード101、PCI Expressコントローラ103、SASインタフェース104、HDD105、FCインタフェース106、ネットワークインタフェース107およびディスクドライブ109を含む。
ハイパーバイザ140は、仮想マシンを実現する。ハイパーバイザ140は、各仮想マシンに対するハードウェア120の割り当てを行い、各仮想マシンの起動・停止を制御する。また、ハイパーバイザ140は、各仮想マシンがハードウェア120を共同で利用できるよう各仮想マシンのハードウェア120へのアクセスを調停する。更に、ハイパーバイザ140は各仮想マシンに割り当てたハードウェア120の使用状況を監視する。
仮想マシン150,150aは、ハイパーバイザ140によりサーバ装置100上に実現された仮想マシンである。仮想マシン150,150aは、それぞれ独立のOSを実行している。仮想マシン150,150aは、その起動のときにOSプログラムをストレージ装置300,300aから取得できる。具体的には、仮想マシン150,150aはハイパーバイザ140から提供される起動コードによりストレージ装置300,300aとの接続を確立する。そして、仮想マシン150,150aはストレージ装置300,300aの所定の記憶領域からOSプログラムをロードする。
仮想マシン150,150aが実行するOSはそれぞれ同一でもよいし、異なっていてもよい。同一のOSとしても起動時の設定が異なっていてもよい。
図6は、第2の実施の形態のハードウェアの割当例を示すブロック図である。仮想マシン150,150aはサーバ装置100上のハードウェア120を論理的に分割したリソースにより実現される。図6ではハードウェア120に含まれる主要なものとして、CPU111、RAM112およびFCインタフェース106を示している。
CPU111は、CPUリソース11,l2,l3,l4に時分割される。例えば、CPUリソースl1,l2は仮想マシン150に割り当てられ、CPUリソースl3,l4は仮想マシン150aに割り当てられる。CPUは、命令単位、処理単位、演算回路単位で分割してもよい。
RAM112は、RAMリソースm1,m2に領域分割される。例えば、RAMリソースm1が仮想マシン150に割り当てられ、RAMリソースm2が仮想マシン150aに割り当てられる。
FCインタフェース106は、FCインタフェースリソースn1,n2に分割される。例えば、FCインタフェースリソースn1,n2には、FCコントローラ114を時分割したリソースが含まれる。また、例えば、FCインタフェースリソースn1,n2には、バッファ用に確保されたメモリ115を領域分割したリソースが含まれる。例えば、FCインタフェースリソースn1が仮想マシン150に割り当てられ、FCインタフェースリソースn2が仮想マシン150aに割り当てられる。FCインタフェース106を物理HBAとすれば、FCインタフェースリソースn1,n2は当該物理HBA上で実現される仮想HBAである。
図7は、第2の実施の形態のサーバ装置の機能を示すブロック図である。サーバ装置100は、起動コード記憶部130,160、ハイパーバイザ140、仮想マシン150,150a、物理ファンクション(PF:Physical Function)170および仮想ファンクション(VF:Virtual Function)180,180a,180bを有する。起動コード記憶部130、ハイパーバイザ140および仮想マシン150,150aの機能は、CPU111が所定のプログラムを実行することによりサーバ装置100上に実現される。また、起動コード記憶部160、PF170およびVF180,180a,180bの機能は、FCコントローラ114が所定のプログラムを実行することによりサーバ装置100上に実現される。ただし、これらのユニットの機能の全部または一部を専用のハードウェアで実装してもよい。
起動コード記憶部130は、複数の起動コードおよび起動管理テーブルを記憶する。起動コードは、仮想マシン150,150aがストレージ装置300,300aとの接続を確立し、ストレージ装置300,300aからOSプログラムを取得するための処理や設定内容を記述したデータである。起動管理テーブルは、仮想マシン150,150aとストレージ装置300,300aとの接続や起動コードの対応関係を定義したデータである。
ハイパーバイザ140は、制御部141を有する。制御部141は、FCインタフェース106から起動コードを取得し、仮想マシン150,150aごとに複製して起動コード記憶部130に格納する。ハイパーバイザ140は、仮想マシン150,150aごとに起動コードを編集する。編集内容は、例えば管理端末装置11から指示される。制御部141は、仮想マシン150,150aが起動するときに、起動コード記憶部130から仮想マシン150,150aに応じた起動コードを選択し、選択した起動コードを仮想マシン150,150aに提供する。このとき、制御部141は起動コード記憶部130に記憶された起動管理テーブルを参照して、仮想マシン150,150aに応じた起動コードを選択する。
仮想マシン150は、ファームウェア151およびOS152を有する。
ファームウェア151は、仮想マシン150上にOS152のプログラムをロードし、OS152を起動するためのソフトウェアである。
OS152は、仮想マシン150上で動作する基本プログラムである。
仮想マシン150aは、ファームウェア151aおよびOS152aを有する。ファームウェア151aはファームウェア151に対応する。OS152aはOS152に対応する。
起動コード記憶部160は、起動コードを記憶する。起動コード記憶部160に記憶される起動コードは、例えば管理者により予め設定される。この起動コードは、起動コード記憶部130に記憶される起動コードの雛型となるデフォルトの起動コードである。
PF170は、データ通信制御用のモジュールである。PF170は、FCインタフェース106上でVF180,180a,180bを実現する。また、PF170は、ハイパーバイザ140からの要求により、起動コード記憶部160に記憶された起動コードをハイパーバイザ140に出力する。PF170は、アクセス部の一例である。
VF180,180a,180bは、PF170によって生成されたデータ通信制御用のモジュールである。VF180,180a,180bは、仮想マシン150,150aに対して仮想的なアダプタとして機能する。仮想マシン150,150aは、VF180,180a,180bにアクセスすることで、単一のPF170を共有して、外部のストレージ装置300,300aとのデータ通信を行える。
なお、FCインタフェース106が実行するVFの数は、運用に応じて決定できる。図7では3つ実行する場合を例示したが、3つ以外の数でもよい。
図8は、起動コードのデータ構造例を示す図である。図8(A)は、起動コード記憶部160に記憶される起動コード161を示している。図8(B)は、起動コード記憶部130に記憶される起動コード131,131aを示している。
起動コード161は、アクセス先装置ID(IDentifier)の設定を含む。アクセス先装置IDには、接続先のストレージ装置を識別するための情報が設定される。当該識別情報は、例えば接続先のストレージ装置に対応するWWNである。例えば、ストレージ装置300が備えるFCインタフェースのWWNがデフォルトで設定される。
起動コード131,131aは、アクセス先装置IDおよび起動コードIDの設定を含む。アクセス先装置IDは、起動コード161に設定されるアクセス先装置IDに対応している。
起動コード131,131aには、互いに別個のアクセス先装置IDを設定可能である。例えば、起動コード131のアクセス先装置IDには、ストレージ装置300が備えるFCインタフェースのWWNが設定される。また、起動コード131aのアクセス先装置IDには、ストレージ装置300aが備えるFCインタフェースのWWNが設定される。
また、起動コードIDは、起動コード131,131aを一意に識別するための識別情報である。例えば、起動コード131には、起動コードID“0”が設定される。また、起動コード131aには、起動コードID“1”が設定される。
起動コード131,131aのアクセス先装置IDおよび起動コードIDの値は、制御部141によって設定される。
図9は、第2の実施の形態の起動管理テーブルのデータ構造例を示す図である。起動管理テーブル132は、起動コード記憶部130に格納される。起動管理テーブル132は、制御部141により更新される。起動管理テーブル132には、物理ホストID、仮想ホストID、VF、PF、パス、仮想ポート、起動コードID、起動指定および割当状態の項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、1つの仮想マシンに対するVFや起動コードの割り当てが示される。
物理ホストIDの項目には、CPUボードの識別情報が設定される。仮想ホストIDの項目には、仮想マシンの識別情報が設定される。VFの項目には、VFの識別情報が設定される。VFの識別情報は、VFを動作させるFCインタフェース106のデバイスのIDと、PF上で個々のVFを識別するための番号との組で構成される。PFの項目には、PFの識別情報が設定される。PFの識別情報は、PFを動作させるFCインタフェース106のデバイスのIDと、個々のPFを識別するための番号との組で構成される。パスの項目には、ファームウェアがPFとVFを対応付けて識別するためのデバイスパス情報が設定される。仮想ポートの項目には、FCインタフェース106上で利用可能な仮想ポートの識別情報が設定される。仮想ポートの情報としては、例えばNPIV(N Port ID Virtualization)を用いることができる。起動コードIDの項目には、起動コードIDが設定される。起動指定の項目には、仮想マシン上のOSの起動に用いるものであるか否かを示す情報が設定される(以下、単に起動用という場合、仮想マシン上のOSの起動用であることを示すとする)。割当状態を示す項目には、当該VFが何れかの仮想マシンに割当済であるか否かを示す情報が設定される。
例えば、起動管理テーブル132には、物理ホストIDが“0”、仮想ホストIDが“0”、VFにつきIDが“10CF1223”、番号が“0”、PFにつきIDが“10CF1223”、番号が“0”、パスが“/pci@0/vdev0/fc0”、仮想ポートが“0”、起動コードIDが“0”、起動指定が“起動用”、割当状態が“割当済”という情報が設定される。
これは、仮想マシン150とVF180とPF170上の仮想ポートの対応関係を示している。すなわち、CPUボード101(物理ホストID“0”)で実現される仮想マシン150(仮想ホストID“0”)に対して、VF180(ID−番号の組が“10CF1223−0”)が対応付けられていることを示す。また、VF180に対して入出力するためのデバイスパス情報が“/pci@0/vdev0/fc0”であることを示す。更に、VF180にPF170(ID−番号の組が“10CF1223−0”)の仮想ポート“0”が対応付けられていることを示す。また、VF180が仮想マシン上のOSの起動用として指定されており、仮想マシン150に割当済であることを示す。
また、例えば、起動管理テーブル132には、物理ホストIDが“0”、仮想ホストIDが“1”、VFにつきIDが“10CF1223”、番号が“1”、PFにつきIDが“10CF1223”、番号が“0”、パスが“/pci@0/vdev1/fc1”、仮想ポートが“1”、起動コードIDが“1”、起動指定が“起動用”、割当状態が“割当済”という情報が設定される。
これは、仮想マシン150aとVF180aとPF170上の仮想ポートの対応関係を示している。すなわち、CPUボード101(物理ホストID“0”)で実現される仮想マシン150a(仮想ホストID“1”)に対して、VF180a(ID−番号の組が“10CF1223−1”)が対応付けられていることを示す。また、VF180aに対して入出力するためのデバイスパス情報が“/pci@0/vdev1/fc1”であることを示す。更に、VF180aにPF170の仮想ポート“1”が対応付けられていることを示す。また、VF180aが仮想マシン上のOSの起動用として指定されており、仮想マシン150aに割当済であることを示す。
また、例えば、起動管理テーブル132には、物理ホストIDが“0”、仮想ホストIDが“−”(ハイフン)、VFにつきIDが“10CF1223”、番号が“2”、PFにつきIDが“10CF1223”、番号が“0”、パスが“−”(ハイフン)、仮想ポートが“−”(ハイフン)、起動コードIDが“−”(ハイフン)、起動指定が“非起動用”、割当状態が“未割当”という情報が設定される。
これは、VF180bの情報を示している。具体的には、VF180b(ID−番号の組が“10CF1223−2”)に対してPF170(ID−番号の組が“10CF1223−0”)が対応付けられていることを示す。また、仮想ホストID、パス、仮想ポート、起動コードIDが設定なし(“−”)であり、割当状態が“未割当”であることから、VF180bは何れの仮想マシンにも割り当てられていないことを示す。
なお、起動指定の項目の設定は、VF180bを仮想マシン上のOSの起動用として利用するのか、または、何れかのアプリケーションの起動用として利用するのか、が確定していないので、デフォルトの設定として“非起動用”が設定される。
例えば、仮想マシン150,150aの何れかに対して、未割当のVF180bを所定のアプリケーションの起動用に割り当てることも可能である。その場合には、起動指定の項目の設定は“非起動用”となる。このように、起動用に利用するVFと、それ以外の用途で利用するVFとを混在させ、両者を区別して利用することもできる。
また、例えば、仮想マシン150,150aの何れかに対して、未割当のVF180bを仮想マシン上のOSの起動用として更に割り当てることも可能である。例えば、異なる起動コードを指定して起動したい場合に有用である。具体的には、仮想マシン150に未割当のVF180b、PF170の仮想ポート“2”および起動コード131aを新たに対応付けることが考えられる。
次に、以上の構成のサーバ装置100の処理手順を説明する。
図10は、第2の実施の形態の全体処理を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。
(ステップS11)サーバ装置100が起動する。すると、CPUボード101によりハイパーバイザ140が実行される。
(ステップS12)制御部141は、起動コード記憶部130に記憶された起動管理テーブル132を参照して、仮想マシンとVFとPFの仮想ポートとの対応関係をチェックする。例えば、割当済のVFやPFの存在が確認できない場合に、その旨を管理端末装置11に通知することが考えられる。
(ステップS13)制御部141は、VF割当指示を受け付けたか否かを判定する。VF割当指示は、例えば管理者が管理端末装置11で管理用のGUIに対し所定の操作を行うことで制御部141に入力される。VF割当指示を受け付けた場合、処理をステップS14に進める。VF割当指示を受け付けていない場合、処理をステップS15に進める。ここで、VF割当指示には、新規にVFを割り当てたい仮想マシンを示す情報および割り当てたいPFおよび割り当てるVFの数を指定する情報が含まれる。PFを指定することは、当該PF上で実現されるVFの組を指定することともいえる。
(ステップS14)制御部141は、VF割当指示に基づいてVF割当処理を行う。そして、処理をステップS19に進める。
(ステップS15)制御部141は、VF解除指示を受け付けたか否かを判定する。VF解除指示は、例えば管理者が管理端末装置11で管理用のGUIに対し所定の操作を行うことで制御部141に入力される。VF解除指示を受け付けた場合、処理をステップS16に進める。VF解除指示を受け付けていない場合、処理をステップS17に進める。ここで、VF解除指示には、解除対象とするVFを示す情報が含まれる。
(ステップS16)制御部141は、VF解除指示に基づいてVF解除処理を行う。そして、処理をステップS19に進める。
(ステップS17)制御部141は、仮想マシン起動指示を受け付けたか否かを判定する。仮想マシン起動指示は、例えば管理者が管理端末装置11で管理用のGUIに対し所定の操作を行うことで制御部141に入力される。仮想マシン起動指示を受け付けた場合、処理をステップS18に進める。仮想マシン起動指示を受け付けていない場合、処理をステップS19に進める。ここで、仮想マシン起動指示には、起動対象の仮想マシンを示す情報が含まれる。
(ステップS18)制御部141は、仮想マシン起動指示に基づいて仮想マシンを起動する。
(ステップS19)ハイパーバイザ140は、サーバ装置100が停止されるか否かを判定する。サーバ装置100が停止される場合、サーバ装置100の停止に備えてハイパーバイザ140は停止処理を行い、処理を終了する。サーバ装置100が停止されない場合、処理をステップS13に進める。
このようにして、サーバ装置100は各種指示に応じてVFの割当・解除および仮想マシン上のOSの起動を行う。以下では、これらの各処理を個別に説明する。
まず、上記ステップS14のVF割当処理を説明する。
図11は、第2の実施の形態のVF割当処理を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。
(ステップS21)制御部141は、VF割当指示を取得する。VF割当指示には、例えば、仮想マシン150,150aに対してPF170からVF2つを起動用として割り当てる旨の指示が含まれる。制御部141は、VF割当指示に含まれるPFと要求VF数(この場合、2である)とを特定する。
(ステップS22)制御部141は、特定したPFからPF上に構成されるVFの数を確認し、起動コードをロードする。例えば、制御部141は、PF170から起動コード161をロードする。このとき、PF170により、起動コード記憶部160に記憶された起動コード161が読み出され、制御部141に出力される。
(ステップS23)制御部141は、起動管理テーブル132を参照して、当該PFにつき未割当VF数を取得する。例えば、PF170につき割当済VF数として3を取得する(例えば、VF180,180a,180bの割当状態が全て“未割当”である)。
(ステップS24)制御部141は、未割当VF数と要求VF数を比較する。
(ステップS25)制御部141は、要求されたVFを割当可能であるか否かを判定する。割当可能である場合とは、未割当VF数が要求VF数以上である場合である。一方、割当不可能である場合とは、未割当VF数が要求VF数よりも小さい場合である。要求されたVFを割当可能である場合、処理をステップS27に進める。要求されたVFを割当不可能である場合、処理をステップS26に進める。なお、制御部141は、割当可能である場合、割り当てるVFを選択する。例えば、VFの識別情報の昇順に割り当てるVFを選択する。例えば、VF180,180a,180bのうち、VF180,180aを割り当て対象として選択する。
(ステップS26)制御部141は、要求されたPFからVFを割り当てることができない旨を管理端末装置11に通知する。管理者は、当該通知を確認して、別のPFを指定したVF割当要求を再度行える。
(ステップS27)制御部141は、ステップS22でPFからロードした起動コードを要求VF数分だけ複製する。このとき、制御部141は、複製した起動コードに起動コードIDを付加する。例えば、PF170からロードした起動コード161を要求VF数“2”の分だけコピーして、起動コード131,131aを生成する。そして、制御部141は、例えば起動コード131に起動コードID“0”を付加する。起動コード131aに起動コードID“1”を付加する。
(ステップS28)制御部141は、管理端末装置11の指示により、VFごとの起動コードを更新する。具体的には、制御部141は起動コード131,131aのアクセス先装置IDを管理者が指定した設定内容に変更する。例えば、起動コード131のアクセス先装置IDをストレージ装置300のWWNに変更する。また、起動コード131aのアクセス先装置IDをストレージ装置300aのWWNに変更する。なお、アクセス先装置の指定は、アクセス先装置IDによる他、トポロジ(接続形態)の情報によって指定することも考えられる。
(ステップS29)制御部141は、管理端末装置11から編集完了の指示を受けると、変更後の起動コードを起動コード記憶部130に保存する。例えば、制御部141は起動コード記憶部130に起動コード131,131aを保存する。
(ステップS30)制御部141は、起動管理テーブル132を更新する。例えば、制御部141は、仮想マシン150(仮想ホストID“0”)と、VF180(IDと番号の組“10CF1223−0”)と、PF170の仮想ポート“0”と、起動コード131(起動コードID“0”)とを対応付け、パスを設定する。また、制御部141は、仮想マシン150a(仮想ホストID“1”)と、VF180a(IDと番号の組“10CF1223−1”)と、PF170の仮想ポート“1”と、起動コード131a(起動コードID“1”)とを対応付け、パスを設定する。更に、これらの各レコードにつき起動指定を“起動用”に、割当状態を“割当済”に設定する。そして、制御部141は、割当完了を管理端末装置11に通知する。
このように、制御部141はVF割当指示を受け付けると、起動管理テーブル132を編集して、仮想マシン150,150aに対するVF180,180aの割り当てを行う。
なお、VF割当指示に各VFに設定したいアクセス先装置IDやその他の設定情報を含めてもよい。その場合、ステップS28では制御部141はVF割当指示で指定されたアクセス先装置IDなどを起動コード131,131aに設定できる。このため、ステップS28での管理者の操作を省ける。
また、ステップS30では、仮想マシン150とVF180を対応付け、仮想マシン150aとVF180aを対応付ける場合(IDの昇順に対応付ける場合)を例示したが、このような方法に限らない。例えば、仮想マシン150とVF180aを対応付け、仮想マシン150aとVF180を対応付けてもよい。更に、PF170の仮想ポートの割り当ては、例えば未割当の仮想ポートをIDの昇順などで選択して割り当てればよい。
図12は、第2の実施の形態のVF割当処理を示すシーケンス図である。以下、図12に示す処理をステップ番号に沿って説明する。なお、以下に示すステップST101の直前では、起動コード記憶部130に記憶された起動管理テーブル132において、VF180,180a,180bの割当状態が“未割当”であるとする。
(ステップST101)管理端末装置11は、ハイパーバイザ140にVF割当指示を送信する。VF割当指示は、仮想マシン150,150aに対してPF170からVFを2つ割り当てる旨の指示を含むとする。
(ステップST102)ハイパーバイザ140は、VF割当指示を受信すると、指定されたPF170に起動コード161を要求する。
(ステップST103)PF170は、ハイパーバイザ140からの要求に応じて、起動コード記憶部160から起動コード161を取得し、ハイパーバイザ140に出力する。
(ステップST104)ハイパーバイザ140は、起動コード161に基づいてPF上に構成されるVFの数を確認する。ハイパーバイザ140は、起動コード記憶部130に記憶された起動管理テーブル132を参照し、PF170上の未割当のVF180,180a,180bに対して、仮想マシン150,150aを割当可能と判断する。
(ステップST105)起動コード161を複製して、起動コード131,131aを生成する。ハイパーバイザ140は、起動コード131,131aに起動コードIDを付加する。ハイパーバイザ140は、起動コード131,131aの内容を管理端末装置11に表示させ、当該管理端末装置11上のGUIから編集可能とする。管理者は当該GUIから各起動コードの編集内容を入力する。管理端末装置11は、起動コード131,131aに対する編集内容をハイパーバイザ140に送信する。管理端末装置11は編集完了の入力を受け付けると、それをハイパーバイザ140に通知する。
(ステップST106)ハイパーバイザ140は、編集内容を起動コード131,131aに反映させて起動コード記憶部130に保存する。そして、ハイパーバイザ140は、起動管理テーブル132を更新する。
(ステップST107)ハイパーバイザ140は割当完了を管理端末装置11に通知する。
このようにして、ハイパーバイザ140はPF170から起動コード161を取得し、当該起動コード161を雛型として、起動コード131,131aを生成する。ハイパーバイザ140は、仮想マシン150,150a、VF180,180a、PF170の仮想ポートおよび起動コード131,131aを対応付ける。ハイパーバイザ140は、起動管理テーブル132によって、その対応関係を管理する。
次に、図10のステップS16のVF解除処理を説明する。
図13は、第2の実施の形態のVF解除処理を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。
(ステップS31)制御部141は、割当解除指示の内容から割当解除対象のVFを特定する。例えば、制御部141はVF180を割当解除対象として特定する。
(ステップS32)制御部141は、割当解除対象のVF、および当該VFが属するPFに通信のために確保していた資源の解放を指示する。例えば、制御部141はPF170およびVF180に資源解放を指示する。
(ステップS33)制御部141は、起動管理テーブル132を更新する。具体的には、VF180のレコードに設定された仮想ホストID、パス、仮想ポート、起動コードIDの各項目の設定値をクリアする。また、起動指定の項目に非起動用を設定する。更に、割当状態の項目を“未割当”に設定する。
このように、制御部141はVF解除指示を受け付けると、起動管理テーブル132を編集して、仮想マシン150に対するVF180の割り当てを解除する。
図14は、第2の実施の形態のVF解除処理を示すシーケンス図である。以下、図14に示す処理をステップ番号に沿って説明する。なお、以下に示すステップST111の直前では、起動コード記憶部130に記憶された起動管理テーブル132において仮想マシン150(仮想ホストID“0”)、VF180(VFのIDと番号の組が“10CF1223−0”)および起動コード131(起動コードID“0”)が対応付けられた状態であるとする。
(ステップST111)管理端末装置11は、ハイパーバイザ140にVF解除指示を送信する。VF解除指示は、VF180の割り当てを解除する旨の指示を含むとする。
(ステップST112)ハイパーバイザ140は、VF解除指示を受信すると、解除指示を受けたVF180と、VF180が属するPF170に対して、確保している資源の解放指示を送信する。
(ステップST113)PF170は、資源解放指示に応じて、VF180を用いた通信用にメモリ115に確保していた記憶領域などを解放する。VF180も同様に通信用にメモリ115に確保していた記憶領域などを解放する。そして、PF170は、資源解放が完了した旨をハイパーバイザ140に応答する。
(ステップST114)ハイパーバイザ140は、起動コード記憶部130に記憶された起動管理テーブル132を更新する。具体的には、VF180に対応付けられていた仮想マシン150、パス、PF170の仮想ポートおよび起動コード131の情報を起動管理テーブル132上から削除する。
(ステップST115)ハイパーバイザ140は、管理端末装置11にVF解除指示に応じたVF解除を完了した旨を通知する。
このようにして、ハイパーバイザ140はVF180の割当解除を行う。ハイパーバイザ140は、起動管理テーブル132の設定内容を更新して、VF180が未割当の状態として管理される。これにより、VF180が他の仮想マシンに対して割当可能な状態となり、VF180の状態を適切に管理できる。
なお、上記ステップST114では、起動コード記憶部130から起動コード131を削除せずに残すものとした。ただし、起動コード記憶部130から起動コード131を削除してもよい。
次に、図10のステップS18の仮想マシン起動処理を説明する。
図15は、第2の実施の形態の仮想マシン起動処理を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
(ステップS41)制御部141は、仮想マシン起動指示を受け付けると、指示された仮想マシンのファームウェアをCPU111に実行させる。例えば、制御部141は仮想マシン150,150aの起動指示を受け付ける。すると、ファームウェア151,151aをCPU111に実行させる。これにより、ファームウェア151,151aの機能がサーバ装置100上に実現され、仮想マシン150,150aの起動が開始される。
(ステップS42)制御部141は、起動コード記憶部130に記憶された起動管理テーブル132を参照して、起動対象の仮想マシンに割り当てられたVFが存在するか否かを判定する。存在する場合、処理をステップS43に進める。存在しない場合、処理を終了する。例えば、制御部141は、起動対象の仮想マシン150,150aに対して、VF180,180aが割当済であることを確認する。
(ステップS43)制御部141は、起動管理テーブル132を参照して、起動対象の仮想マシンに割り当てられた起動コードが存在するか否かを判定する。存在する場合、処理をステップS44に進める。存在しない場合、処理を終了する。例えば、制御部141は、起動対象の仮想マシン150,150aに対して起動コード131,131aが割当済であることを確認する。
(ステップS44)制御部141は、ステップS41でサーバ装置100上に実現されたファームウェアに仮想マシンの起動指示を行う。すると、ファームウェアはOSプログラムをロードするための起動コードを制御部141に要求する。例えば、起動指示を受けたファームウェア151,151aは、起動コードを制御部141に要求する。
(ステップS45)制御部141は、当該要求を受けると、起動コード記憶部130に記憶された起動管理テーブル132を参照し、各仮想マシンに対応付けられた起動コードを特定する。例えば、仮想マシン150に対して起動コード131を特定し、仮想マシン150aに対して起動コード131aを特定する。制御部141は、起動コード131をファームウェア151に提供する。制御部141は、起動コード131aをファームウェア151aに提供する。
(ステップS46)ファームウェア151,151aは、制御部141から取得した起動コードと仮想ポートに基づいてストレージ装置300,300aとの接続を確立し、各装置からOSプログラムをロードする。例えば、ファームウェア151は、起動コード131のアクセス先装置IDで指定されたWWNに対応するストレージ装置300との接続を確立し、ストレージ装置300からOSプログラムをロードする。また、ファームウェア151aは、起動コード131aのアクセス先装置IDで指定されたWWNに対応するストレージ装置300aとの接続を確立し、ストレージ装置300aからOSプログラムをロードする。そして、ファームウェア151,151aは、ロードしたOSプログラムをCPU111に実行させることで、OS152,152aを起動する。
このようにして、制御部141は仮想マシン150,150aを起動するときに、起動コード記憶部130に記憶された起動コード131,131aを取得して、仮想マシン150,150aに提供する。
なお、上記ステップS42,S43において、処理を終了する場合に、制御部141はファームウェア151,151aを停止させてもよい。また、制御部141は処理を終了する場合に、処理を終了する理由(割り当てられたVFまたは起動コードが存在しないなど)を管理端末装置11に通知してもよい。
図16は、第2の実施の形態の仮想マシン起動処理を示すシーケンス図である。以下、図16に示す処理をステップ番号に沿って説明する。
(ステップST121)管理端末装置11は、ハイパーバイザ140に仮想マシン起動指示を送信する。仮想マシン起動指示は、仮想マシン150,150aを指定する情報を含むとする。
(ステップST122)ハイパーバイザ140は、仮想マシン起動指示を受信すると、仮想マシン150,150aが指定されていることを検知する。すると、ハイパーバイザ140は、起動コード記憶部130に記憶された起動管理テーブル132を参照して、仮想マシン150に対してVF180および起動コード131が対応付けられていることを確認する。そして、ハイパーバイザ140は、仮想マシン150に起動指示を出力する。これにより、ファームウェア151がサーバ装置100上で実行開始され、仮想マシン150の起動が開始される。
(ステップST123)ハイパーバイザ140は、起動管理テーブル132を参照して、仮想マシン150aに対してVF180aおよび起動コード131aが対応付けられていることを確認する。そして、ハイパーバイザ140は、仮想マシン150aに起動指示を出力する。これにより、ファームウェア151aがサーバ装置100上で実行開始され、仮想マシン150aの起動が開始される。
(ステップST124)仮想マシン150は、ハイパーバイザ140に起動コードを要求する。
(ステップST125)ハイパーバイザ140は、起動コード記憶部130から起動コード131を取得し、仮想マシン150に提供する。
(ステップST126)仮想マシン150aは、ハイパーバイザ140に起動コードを要求する。
(ステップST127)ハイパーバイザ140は、起動コード記憶部130から起動コード131aを取得し、仮想マシン150aに提供する。
(ステップST128)仮想マシン150は、起動コード131で示されるアクセス先装置IDに基づいて、ストレージ装置300との接続を試みる。その際、ハイパーバイザ140は起動管理テーブル132を参照して、当該接続をVF180に割り当て、更にPF170の仮想ポート“0”に対応付ける。すなわち、仮想マシン150は、VF180およびPF170の仮想ポート“0”を介してストレージ装置300との接続を確立する。そして、仮想マシン150はストレージ装置300にOSプログラムを要求する。
(ステップST129)ストレージ装置300は、仮想マシン150にOSプログラムを送信する。ハイパーバイザ140は、PF170の仮想ポート“0”を介して受信したOSプログラムをVF180に対応付けて、仮想マシン150に出力する。仮想マシン150は、OSプログラムを受信するとOS152を起動する。
(ステップST130)仮想マシン150aは、起動コード131aで示されるアクセス先装置IDに基づいて、ストレージ装置300aとの接続を試みる。その際、ハイパーバイザ140は起動管理テーブル132を参照して、当該接続をVF180aに割り当て、更にPF170の仮想ポート“1”に対応付ける。すなわち、仮想マシン150aは、VF180aおよびPF170の仮想ポート“1”を介してストレージ装置300aとの接続を確立する。そして、仮想マシン150aはストレージ装置300aにOSプログラムを要求する。
(ステップST131)ストレージ装置300aは、仮想マシン150aにOSプログラムを送信する。ハイパーバイザ140は、PF170の仮想ポート“1”を介して受信したOSプログラムをVF180aに対応付けて、仮想マシン150aに出力する。仮想マシン150aは、OSプログラムを受信するとOS152aを起動する。
このようにして、ハイパーバイザ140は、仮想マシン150,150a、VF180,180a、PF170の仮想ポートおよび起動コード131,131aの対応関係を起動管理テーブル132により管理する。そして、仮想マシン150,150aが起動するときに、FCインタフェース106上の起動コード記憶部160に記憶された起動コード161に代えて、起動コード記憶部130に記憶された起動コード131,131aを仮想マシン150,150aに提供する。
これにより、仮想マシン150,150aはそれぞれ別個の起動コード131,131aを用いて、ストレージ装置300,300aとの接続を確立できる。起動コード131,131aでアクセス先として互いに異なるストレージ装置を指定すれば、それぞれ別個のストレージ装置からOSプログラムをロードでき、別個のOSプログラムを仮想マシン150,150a上で起動できる。すなわち、OSプログラムの起動時のアクセス先のストレージ装置300,300aを仮想マシン150,150aごとに切り換えられる。
なお、図9の説明で仮想マシン150に起動コード131,131aを対応付ける例を示した。この設定をした場合、起動コード131,131aのうち何れを用いて仮想マシン150を起動するかは、例えばファームウェア151に設定し、仮想マシン150の起動時にファームウェア151からハイパーバイザ140に指示する。このようにすれば、仮想マシン150上で起動するOSを、仮想マシン150の起動時に選択可能となる。
また、以上の説明ではOSプログラムの起動について主に説明したが、OSプログラムの起動に限られない。例えば、OS以外の所定のアプリケーションを起動する際に、当該アプリケーションプログラムをロードするストレージ装置を仮想マシンごとに切り換えることもできる。
[第3の実施の形態]
次に、第3の実施の形態を説明する。前述の第2の実施の形態との相違点を主に説明し、同様の事項は説明を省略する。
第2の実施の形態では、1つのCPUボード上で実行される複数の仮想マシンに1つのFCインタフェース上のPFおよびVFを割り当てる方法を例示した。
ここで、サーバ装置100には複数のCPUボードおよび複数のFCインタフェースが設けられることもある。その場合、1つのCPUボードと1つのFCインタフェースとの間の仮想マシン、PFおよびVFの対応付けは、第2の実施の形態と同様にして行える。一方で、1つのCPUボード上の複数の仮想マシンに対して複数のFCインタフェースからVFを割り当ててもよい。そこで、第3の実施の形態では、複数のCPUボードと複数のFCインタフェースを備えたサーバ装置において各仮想マシンに異なるFCインタフェースからVFを割り当てる方法を説明する。
なお、第3の実施の形態の情報処理システムの全体構成は、図2で説明した第2の実施の形態の情報処理システムの全体構成と同様であるため説明を省略する。
また、第3の実施の形態のサーバ装置のハードウェア構成は、図3で説明した第2の実施の形態のサーバ装置100のハードウェア構成と同様であるため説明を省略する(各構成をサーバ装置100と同一符号で表記する)。ただし、第3の実施の形態のサーバ装置100はCPUボード101aおよびFCインタフェース106aを更に備える。CPUボード101aのハードウェア構成はCPUボード101と同様である。FCインタフェース106aのハードウェア構成はFCインタフェース106と同様である。
更に、第3の実施の形態のFCスイッチ装置のハードウェア構成は、図4で説明した第2の実施の形態のFCスイッチ装置200のハードウェア構成と同様であるため説明を省略する(各構成をFCスイッチ装置200と同一符号で表記する)。
図17は、第3の実施の形態のサーバ装置の機能を示すブロック図である。サーバ装置100は、起動コード記憶部130,130a、ハイパーバイザ140,140a、仮想マシン150,150a,150b、起動コード記憶部160,160a、PF170,170aおよびVF180,180a,180c,180dを有する。
起動コード記憶部130、ハイパーバイザ140および仮想マシン150,150aは、CPU111が所定のプログラムを実行することで、サーバ装置100上に実現される。起動コード記憶部130a、ハイパーバイザ140aおよび仮想マシン150bは、CPUボード101a上のCPUが所定のプログラムを実行することでサーバ装置100上に実現される。起動コード記憶部160、PF170およびVF180,180aは、FCコントローラ114が所定のプログラムを実行することでサーバ装置100上に実現される。起動コード記憶部160a、PF170aおよびVF180c,180dは、FCインタフェース106a上のFCコントローラが所定のプログラムを実行することでサーバ装置100上に実現される。ただし、これらのユニットの機能の全部または一部を専用のハードウェアで実現してもよい。
起動コード記憶部130aは、起動コード記憶部130に対応する。ハイパーバイザ140aは、ハイパーバイザ140に対応する。ハイパーバイザ140aは、制御部141aを有する。制御部141aは、制御部141に対応する。
制御部141,141aは、互いに通信可能である。制御部141,141aは、起動コード記憶部130,130aに記憶された起動コードおよび起動管理テーブルの設定内容を同期する。制御部141,141aは、起動コード記憶部160,160a全体として一意の起動コード識別情報を起動コードに付与する。
仮想マシン150bは、仮想マシン150,150aに対応する。ここで、仮想マシン150bは仮想マシン150aと共に論理的な1つの仮想マシンを構成する。すなわち、CPUボード101,101aに跨って、仮想マシン150a,150bを組み合わせた1つの仮想マシンが実現される。ハイパーバイザ140,140aは所定のデータを互いに同期し、仮想マシン150a,150bを1つの仮想マシンとして、クライアント装置から利用可能とする。
起動コード記憶部160aは、起動コード記憶部160に対応する。
PF170aは、PF170に対応する。PF170aは、FCスイッチ装置200に接続されている。
VF180c,180dは、VF180,180aに対応する。VF180c,180dは、PF170aによって生成されたデータ通信制御用のモジュールである。仮想マシン150,150a,150bは、VF180c,180dにアクセスすることで単一のPF170aを共有して、外部のストレージ装置300,300aとのデータ通信を行える。なお、第3の実施の形態では、FCインタフェース106のVF180bの図示を省略している(VF180bは割当済もしくは存在しないとする)。
図18は、第3の実施の形態の起動管理テーブルのデータ構造例を示す図である。起動管理テーブル132aは、起動管理テーブル132に対応する。各項目に設定される内容は、起動管理テーブル132と同様である。
ここで、仮想マシン150aを起動するときに、PF170からVFを割り当てることができない場合を考える。その一例が、VF180,180aとも仮想マシン150に割当済であり、PF170上で他に未割当のVFが存在しない場合である。起動管理テーブル132aは、その場合の設定を例示している。
具体的には、CPUボード101(物理ホストID“0”)における仮想マシン150(仮想ホストID“0”)に対して、VF180,180a(VFのIDと番号の組が“10CF1223−0”および“10CF1223−1”)が割当済である。VF180,180aの何れも“起動用”である。VF180,180aにつき起動コードIDが“0”、“1”の2種類の起動コードが対応付けられており、仮想マシン150は、その起動時に何れかの起動コードを選択して起動可能となっている。
また、起動管理テーブル132aでは、仮想マシン150bに対する割当状況も示されている。具体的には、CPUボード101a(物理ホストID“1”)における仮想マシン150b(仮想ホストID“0”)に対して、PF170a上のVF180c(VFのIDと番号の組が“10CF1223−0”)が割り当てられている。また、VF180cにはPF170aの仮想ポート“0”が対応付けられている。更に、仮想マシン150bに対して起動コードID“2”が対応付けられている。
制御部141は、このようにPF170上のVFが全て割当済の状態でPF170を指定したVF割当指示を受けた場合でも、同一IDのPF170aを検出し、PF170a上の未割当のVF180dを仮想マシン150aに割り当てる。
具体的には、CPUボード101(物理ホストID“0”)における仮想マシン150a(仮想ホストID“1”)に対して、PF170a(PFのIDと番号の組が“10CF1223−1”)上のVF180d(VFのIDと番号の組が“10CF1223−1”)が割り当てられている。また、VF180dにはPF170aの仮想ポート“1”が対応付けられている。図17のハイパーバイザ140とVF180dとの間の関連線は、この割当関係を示している。更に、仮想マシン150aに対して起動コードID“3”が対応付けられている。
次に、以上の構成のサーバ装置100の処理手順を説明する。ここで、全体処理、割当解除処理および仮想マシン起動処理の手順は、図10,13,15で説明した第2の実施の形態の全体処理、割当解除処理および仮想マシン起動処理の手順と同様であるため説明を省略する。
図19は、第3の実施の形態のVF割当処理を示すフローチャートである。以下、図19に示す処理をステップ番号に沿って説明する。
(ステップS51)制御部141は、VF割当指示を取得する。VF割当指示には、仮想マシンを指定する情報、当該仮想マシンに対して、起動用として割り当てるPFおよび割り当てるVFの数(要求VF数)が含まれる。制御部141は、VF割当指示からPFおよび要求VF数を特定する。
(ステップS52)制御部141は、特定したPFからPF上に構成されるVFの数を確認し、起動コードをロードする。
(ステップS53)制御部141は、起動コード記憶部130に記憶された起動管理テーブル132aを参照して、当該PFにつき未割当VF数を取得する。
(ステップS54)制御部141は、未割当VF数と要求VF数とを比較する。
(ステップS55)制御部141は、要求された数のVFを指定されたPFから割当可能であるか否かを判定する。割当可能である場合、処理をステップS58に進める。割当不可能である場合、処理をステップS56に進める。
(ステップS56)制御部141は、起動管理テーブル132aを参照して、別のFCインタフェース上に同一IDのPFが存在するか否かを判定する。同一IDのPFが存在する場合、処理をステップS57に進める。同一IDのPFが存在しない場合、VFの割り当てができないことを管理端末装置11に通知して処理を終了する。例えば、PF170と同一ID(“10CF1223”)のPFとしてPF170aが存在する。なお、制御部141はステップS51〜S55の処理を実行済のPFを除いてステップS56の判断を行う。
(ステップS57)制御部141は、ステップS51で取得したVF割当指示のPFの指定を、ステップS56で検知したPFに変更する。その結果、VF割当指示では、別個のPF(例えば、PF170に代えてPF170a)が指定されることとなる。そして、処理をステップS51に進める。なお、制御部141はステップS52で取得した起動コードを破棄する。
(ステップS58)制御部141は、ステップS52でPFからロードした起動コードを要求VF数分だけ複製する。制御部141は、複製した起動コードに起動コードIDを付加する。
(ステップS59)制御部141は、管理端末装置11の指示により、VFごとの起動コードのアクセス先装置IDの設定内容を更新する。
(ステップS60)制御部141は、管理端末装置11から編集完了の指示を受けると、変更後の起動コードを起動コード記憶部130に保存する。そして、制御部141は制御部141aにも保存した起動コードを送信し、起動コード記憶部130aに保存させ、起動コードの同期を行う。
(ステップS61)制御部141は、起動管理テーブル132aを更新する。制御部141は、制御部141aにも更新内容を送信し、起動コード記憶部130aに格納された起動管理テーブルを更新させ、起動管理テーブルの同期を行う。
このように、制御部141はVF割当指示を受け付けた際に、指定されたPFからVFを割り当てることができない場合でも、同一IDの他のPFが存在すれば、当該PFから未割当のVFを検出して、仮想マシンに割り当てる。なお、同一IDのPFを検出する理由は、当該IDがデバイスに割り当てられたIDを示すものであり、IDが同一であればPFの機能が同一であると考えられるからである。すなわち、制御部141は、VF割当指示によって指定されたPFからVFを割り当てられない場合、当該PFと同一機能を備える他のPFからVFの割り当てを試みる。
なお、VF割当指示に各VFに設定したいアクセス先装置IDやその他の設定情報を含めてもよい。その場合、ステップS59では制御部141はVF割当指示で指定されたアクセス先装置IDなどを起動コードに設定できる。このため、ステップS59での管理者の操作を省ける。
図20は、第3の実施の形態のVF割当処理を示すシーケンス図である。以下、図20に示す処理をステップ番号に沿って説明する。なお、以下に示すステップST141の直前では、VF180,180aは仮想マシン150に割当済であり、VF180cは仮想マシン150bに割当済であるとする。そして、PF170にはその他に未割当のVFが存在しないとする。また、起動管理テーブル132aにおいて、VF180dが“未割当”の状態であるとする。
(ステップST141)管理端末装置11は、ハイパーバイザ140にVF割当指示を送信する。VF割当は、仮想マシン150aに対して、PF170からVFを起動用として1つ割り当てる旨の指示を含むとする。
(ステップST142)ハイパーバイザ140は、VF割当指示を受信すると、指定されたPF170に起動コード161の送信を要求する。
(ステップST143)PF170は、ハイパーバイザ140からの要求に応じて、起動コード記憶部160から起動コード161を取得し、ハイパーバイザ140に出力する。
(ステップST144)ハイパーバイザ140は、起動コード161に基づいて、PF上に構成されるVFの数を確認する。ハイパーバイザ140は、起動コード記憶部130に記憶された起動管理テーブル132aを参照してPF170に未割当のVFが存在しておらず、PF170から新たにVFの割り当てを行うことができないと判断する。
(ステップST145)ハイパーバイザ140は、PF170と同一IDのPF170aを検知すると、PF170aに起動コードの送信を要求する。
(ステップST146)PF170aは、ハイパーバイザ140からの要求に応じて、起動コード記憶部160aから起動コードを所得し、ハイパーバイザ140に出力する。
(ステップST147)ハイパーバイザ140は、PF170aから受信した起動コードに基づいて、PF170a上に構成されるVFの数を確認する。ハイパーバイザ140は、起動管理テーブル132aを参照してPF170aにおけるVF180dが未割当であり、VF割当可能であると判断する。
(ステップST148)ハイパーバイザ140は、PF170aから受信した起動コードに対して起動コードID“3”を付加する(要求VF数が1つなので起動コードの複製を行わなくてもよい)。以下、起動コードID“3”を付した起動コードを起動コード131aと表記する。ハイパーバイザ140は、管理端末装置11からの起動コード131aの編集を受け付ける。例えば、起動コード131aのアクセス先装置IDにストレージ装置300aのWWNが設定される。管理端末装置11は、管理者による編集完了の入力を受け付けると、それをハイパーバイザ140に通知する。
(ステップST149)ハイパーバイザ140は、編集内容を起動コード131aに反映させて、起動コード記憶部130に保存する。ハイパーバイザ140は、仮想マシン150a、PF170aの仮想ポート“0”、VF180dおよび起動コード131aの対応関係を起動用として起動管理テーブル132aに設定する。ハイパーバイザ140は、ハイパーバイザ140aと通信して、保存した起動コード131aと起動管理テーブル132aの更新内容とを同期する。
(ステップST150)ハイパーバイザ140は、割当完了を管理端末装置11に通知する。
このようにして、ハイパーバイザ140は、指定されたPF170に未割当VFが存在しなくても、PF170と同一IDのPF170aから未割当VFを検出して、仮想マシン150aに対応付ける。
図21は、第3の実施の形態の仮想マシン起動処理を示すシーケンス図である。以下、図21に示す処理をステップ番号に沿って説明する。
(ステップST151)管理端末装置11は、ハイパーバイザ140に仮想マシン起動指示を送信する。仮想マシン起動指示は、仮想マシン150,150aを指定する情報を含むとする。
(ステップST152)ハイパーバイザ140は、仮想マシン起動指示を受信すると、仮想マシン150,150aが指定されていることを検知する。すると、ハイパーバイザ140は、起動コード記憶部130に記憶された起動管理テーブル132aを参照して、仮想マシン150に対して起動用のVF180,180aおよび起動コード131を含む2つの起動コードが対応付けられていることを確認する。そして、ハイパーバイザ140は、仮想マシン150に起動指示を出力する。これにより、ファームウェア151がサーバ装置100上で実行開始される。
(ステップST153)ハイパーバイザ140は、起動管理テーブル132aを参照して、仮想マシン150aに対して起動用のVF180dおよび起動コード131aが対応付けられていることを確認する。そして、ハイパーバイザ140は、仮想マシン150aに起動指示を出力する。これにより、ファームウェア151aがサーバ装置100上で実行開始される。
(ステップST154)仮想マシン150は、ハイパーバイザ140に起動コードを要求する。ここで、起動管理テーブル132aでは、仮想マシン150に対して起動コード131を含む2つの起動コードが対応付けられている。仮想マシン150は、そのうちの起動コード131を指定してハイパーバイザ140に要求する。起動コードは、仮想マシン150のファームウェアで選定しておいてよい。
(ステップST155)ハイパーバイザ140は、起動コード記憶部130から起動コード131を取得し、仮想マシン150に提供する。
(ステップST156)仮想マシン150aは、ハイパーバイザ140に起動コードを要求する。
(ステップST157)ハイパーバイザ140は、起動コード記憶部130から起動コード131aを取得し、仮想マシン150aに提供する。
(ステップST158)仮想マシン150は、起動コード131で示されるアクセス先装置IDに基づいて、ストレージ装置300との接続を試みる。その際、ハイパーバイザ140は起動管理テーブル132aを参照して、当該接続をVF180に割り当て、更にPF170の仮想ポート“0”に対応付ける。すなわち、仮想マシン150は、VF180およびPF170の仮想ポート“0”を介してストレージ装置300との接続を確立する。そして、仮想マシン150はストレージ装置300にOSプログラムを要求する。
(ステップST159)ストレージ装置300は、仮想マシン150にOSプログラムを送信する。ハイパーバイザ140は、PF170の仮想ポート“0”を介して受信したOSプログラムをVF180に対応付けて、仮想マシン150に出力する。仮想マシン150は、OSプログラムを受信するとOS152を起動する。
(ステップST160)仮想マシン150aは、起動コード131aで示されるアクセス先装置IDに基づいて、ストレージ装置300aとの接続を試みる。その際、ハイパーバイザ140は起動管理テーブル132aを参照して、当該接続をVF180dに割り当て、更にPF170aの仮想ポート“0”に対応付ける。すなわち、仮想マシン150aは、VF180dおよびPF170aの仮想ポート“0”を介してストレージ装置300aとの接続を確立する。そして、仮想マシン150aはストレージ装置300aにOSプログラムを要求する。
(ステップST161)ストレージ装置300aは、仮想マシン150aにOSプログラムを送信する。ハイパーバイザ140は、PF170aの仮想ポート“0”を介して受信したOSプログラムをVF180dに対応付けて、仮想マシン150aに出力する。仮想マシン150aは、OSプログラムを受信するとOS152aを起動する。
このようにして、ハイパーバイザ140は、CPUボード101上の仮想マシン150,150aに対して、FCインタフェース106,106aからVFを割り当てることができる。これにより、各仮想マシンに対するVF割当の自由度を向上できる。
また、仮想マシン150aに対して指定のPFからVFを割り当てることができない場合、仮想マシン150aと共に1つの仮想マシンを構成する仮想マシン150bが存在することがある。その場合には、仮想マシン150bに対応付けられているPF170aを優先して選択し、未割当VFを検出してもよい。
[第4の実施の形態]
次に、第4の実施の形態を説明する。前述の第2,第3の実施の形態との相違点を主に説明し、同様の事項は説明を省略する。
第2,第3の実施の形態では、管理端末装置11からの指示によりハイパーバイザが仮想マシン、VF、PFの仮想ポートおよび起動コードの対応関係を管理する例を示した。一方、これをスイッチ装置200が行ってもよい。その場合、管理者は管理端末装置21を操作してFCスイッチ装置200を介して仮想マシンの起動を指示できる。第4の実施の形態では、このような機能を説明する。
なお、第4の実施の形態の情報処理システムの全体構成は、図2で説明した第2の実施の形態の情報処理システムの全体構成と同様であるため説明を省略する。ここで、サーバ装置100のSVP108およびFCスイッチ装置200のSVP203は、管理用のLAN(Local Area Network)で接続される。
また、第4の実施の形態のサーバ装置のハードウェア構成は、図3で説明した第2の実施の形態のサーバ装置100のハードウェア構成と同一であるため説明を省略する(各構成をサーバ装置100と同一符号で表記する)。
更に、第4の実施の形態のFCスイッチ装置のハードウェア構成は、図4で説明した第2の実施の形態のFCスイッチ装置200のハードウェア構成と同様であるため説明を省略する(各構成をFCスイッチ装置200と同一符号で表記する)。
図22は、第4の実施の形態のFCスイッチ装置の機能を示すブロック図である。FCスイッチ装置200は、起動管理情報記憶部210および制御部220を有する。これらのユニットの機能は、SVP203が所定のプログラムを実行することによりFCスイッチ装置200上に実現される。ただし、これらのユニットの機能の全部または一部を専用のハードウェアで実装してもよい。
起動管理情報記憶部210は、起動管理テーブルを記憶する。起動管理テーブルのデータ構造例は、図9で説明した起動管理テーブル132と同様である。
制御部220は、管理端末装置21からVF割当指示を受け付けると、ハイパーバイザ140に対する起動コードの複製・編集を指示する。また、制御部220は、起動管理情報記憶部210に記憶された起動管理テーブルを更新する。具体的には、制御部220は、新たに割り当てた仮想マシン、起動コード、VF180,180a,180bおよびPF170の仮想ポートの対応関係を起動管理テーブルに設定する。
次に、以上の構成のFCスイッチ装置200の処理手順を説明する。サーバ装置100の制御部141が行う処理のうち、起動管理テーブルに関する処理を制御部220が実行する。
具体的には、制御部220は図10で示した全体処理を実行する。ただし、ステップS11に対応するステップはFCスイッチ装置200の起動を契機として、ステップS19に対応するステップはFCスイッチ装置200の停止有無の判断を契機として実行する。制御部220は、VF割当指示、VF解除指示および仮想マシン起動指示を管理端末装置21から受け付ける。
また、制御部220は、図11,13,15で示したVF割当処理、割当解除処理および仮想マシン起動処理のうち、起動管理テーブルを照会・更新する処理を担う。すなわち、制御部220は、起動コードの複製・保存に関してはハイパーバイザ140の制御部141に依頼する。また、制御部220は、当該起動コードに基づく仮想マシンの起動を制御部141に依頼する。その際、制御部220は起動管理情報記憶部210に記憶された起動管理テーブルを参照して、仮想マシン、VF、PFの仮想ポートおよび起動コードの対応関係を制御部141に通知する。
以下では、制御部220のこのような処理を具体的に説明する。
図23は、第4の実施の形態のVF割当処理を示すシーケンス図である。以下、図23に示す処理をステップ番号に沿って説明する。
(ステップST171)管理端末装置21は、制御部220にVF割当指示を送信する。VF割当指示は、仮想マシン150に対してPF170からVFを起動用として1つ割り当てる旨の指示を含むとする。また、VF割当指示には、その他の起動コードに設定する情報(時間設定や接続形態など)を示す情報が含まれ得る。
(ステップST172)制御部220は、VF割当指示を受信すると、サーバ装置100のSVP108を介して、ハイパーバイザ140にVF割当指示を出力する。
(ステップST173)ハイパーバイザ140は、VF割当指示を受信すると、指定されたPF170にVF数と起動コード161の送信を要求する。
(ステップST174)PF170は、ハイパーバイザ140からの要求に応じて、VF数と起動コード記憶部160から起動コード161を取得し、ハイパーバイザ140に出力する。
(ステップST175)ハイパーバイザ140は、PF170上に構成されるVFの数を確認し、制御部220に通知する。
(ステップST176)制御部220は、起動管理情報記憶部210に記憶された起動管理テーブルを参照して、PF170のVF180が未割当であり、これを仮想マシン150に割当可能である旨をハイパーバイザ140に通知する。ハイパーバイザ140は、取得した起動コード161に起動コードIDを付加し、起動コード131を生成する(要求VF数が1であるため複製はしなくてもよい)。
(ステップST177)制御部220は、ステップST171で受け付けたVF割当指示の設定指示内容に基づいて、起動コード131を編集する。
(ステップST178)ハイパーバイザ140は、起動コード131を起動コード記憶部130に保存する。そして、ハイパーバイザ140は、起動コード131の保存完了通知を制御部220に送信する。保存完了通知には、起動コード131の起動コードIDが含まれる。
(ステップST179)制御部220は、保存完了通知を受信すると、起動管理情報記憶部210に記憶された起動管理テーブルを更新する。具体的には、制御部220は、仮想マシン150、VF180、PF170の仮想ポート“0”および起動コード131を対応付けて、起動管理テーブルに設定する。
(ステップST180)制御部220は、VF割当完了を管理端末装置21に通知する。
このようにして、FCスイッチ装置200で起動管理テーブルを保持する。ハイパーバイザ140は、制御部220の指示によって、起動コードの複製・保存を行う。
なお、ステップST177では、第2,第3の実施の形態と同様に管理端末装置21から管理者による編集を受け付けてもよい。
図24は、第4の実施の形態の仮想マシン起動処理を示すシーケンス図である。以下、図24に示す処理をステップ番号に沿って説明する。
(ステップST181)管理端末装置21は、制御部220に仮想マシン起動指示を送信する。仮想マシン起動指示は、仮想マシン150を指定する情報を含むとする。
(ステップST182)制御部220は、仮想マシン起動指示を受信すると、ハイパーバイザ140に対し、サーバ装置のSVP108を介して当該仮想マシン起動指示を送信する。制御部220は、転送する仮想マシン起動指示に、指定された仮想マシン150、VF180、PF170の仮想ポート“0”および起動コード131の対応関係を示す情報を含める。制御部220は、起動管理情報記憶部210に記憶された起動管理テーブルを参照して、当該対応関係を取得できる。
(ステップST183)ハイパーバイザ140は、制御部220から仮想マシン起動指示を受信すると、仮想マシン150が指定されていることを検知する。ハイパーバイザ140は、仮想マシン150に起動指示を出力する。これにより、ファームウェア151がサーバ装置100上で実行開始される。
(ステップST184)仮想マシン150は、ハイパーバイザ140に起動コードを要求する。
(ステップST185)ハイパーバイザ140は、ステップST183で受信した仮想マシン起動指示に含まれる対応関係の情報に基づいて、起動コード記憶部130から起動コード131を取得し、仮想マシン150に提供する。
(ステップST186)仮想マシン150は、起動コード131で示されるアクセス先装置IDに基づいて、ストレージ装置300との接続を試みる。その際、ハイパーバイザ140は、制御部220から取得した対応関係に基づいて、当該接続をVF180に割り当て、更にPF170の仮想ポート“0”に対応付ける。すなわち、仮想マシン150は、VF180およびPF170の仮想ポート“0”を介してストレージ装置300との接続を確立する。そして、仮想マシン150はストレージ装置300にOSプログラムを要求する。
(ステップST187)ストレージ装置300は、仮想マシン150にOSプログラムを送信する。ハイパーバイザ140は、PF170の仮想ポート“0”を介して受信したOSプログラムをVF180に対応付けて、仮想マシン150に出力する。仮想マシン150は、OSプログラムを受信するとOS152を起動する。
このようにして、FCスイッチ装置200で起動管理テーブルを一元管理する。そして、仮想マシン150を起動するときには、FCスイッチ装置200の制御部220からハイパーバイザ140に起動コードに関する情報を送信する。なお、仮想マシン150の起動の処理を説明したが、仮想マシン150aに関しても同様である。例えば、仮想マシン150aをストレージ装置300aから起動したい場合、起動管理情報記憶部210に記憶された起動管理テーブルにそのための対応関係を予め設定する。そして、仮想マシン150aの起動時には、制御部220は、当該仮想マシン150aに関する対応関係を起動管理テーブルから取得してハイパーバイザ140に通知する。
このようにFCスイッチ装置200で起動管理テーブルを一元管理すれば、各ハイパーバイザで起動管理テーブルを保持しなくてよい。このため、例えば、第3の実施の形態で示したようなハイパーバイザ間での同期による通信負荷を軽減できる。また、例えば各ハイパーバイザの同期処理に伴う処理負荷を軽減できる。
[第5の実施の形態]
次に、第5の実施の形態を説明する。前述の第2〜第4の実施の形態との相違点を主に説明し、同様の事項は説明を省略する。
第2〜第4の実施の形態では、FCインタフェースが1つのPFを有する場合を例示した。一方、1つのインタフェースが複数の異なるPFを有する場合もある。例えば、1つのアダプタで複数規格の通信(例えば、FCとEthernet(登録商標))に対応可能なインタフェースが考えられる。このようなインタフェースは、CEE(Converged Enhanced Ethernet)と呼ばれることもある。
そこで、第5の実施の形態では、複数のPFを有するCEEインタフェースを備えたサーバ装置において各仮想マシンにVFを割り当てる方法を説明する。
なお、第5の実施の形態の情報処理システムの全体構成は、図2で説明した第2の実施の形態の情報処理システムの全体構成と同様である。ただし、FCスイッチ装置200に代えてCEEをサポートするCEEスイッチ装置200aを用いる。
図25は、第5の実施の形態のサーバ装置の機能を示すブロック図である。ここで、CEEスイッチ装置200aは、ネットワーク20を介してサーバ装置100aと接続する。ネットワーク20は、LANである。サーバ装置100aは、ネットワーク20と接続され、ストレージ装置300,300aと同様にOSプログラムを記憶する情報処理装置である。
また、サーバ装置100,100aのハードウェア構成は、図3で説明した第2の実施の形態のサーバ装置100のハードウェア構成と同様であるため説明を省略する(各構成をサーバ装置100と同一符号で表記する。)ただし、第5の実施の形態のサーバ装置100は、FCインタフェース106に代えてCEEインタフェース106bを備える。CEEインタフェース106b上には、FCおよびEthernetによる通信を制御するためのCEEコントローラが設けられる。
更に、CEEスイッチ装置200aのハードウェア構成は、図4で説明した第2の実施の形態のFCスイッチ装置200のハードウェア構成と同様である。ただし、各ポート、I/Fコントローラおよびルーティングコントローラは、FCおよびEthernetに対応可能である。
サーバ装置100は、起動コード記憶部130、ハイパーバイザ140、仮想マシン150,150a、起動コード記憶部160,160b、PF170,170bおよびVF180,180a,180e,180fを有する。
起動コード記憶部130、ハイパーバイザ140および仮想マシン150,150aは、図7で説明した第2の実施の形態における同一符号のユニットに対応する。
起動コード記憶部160,160b、PF170,170bおよびVF180,180a,180e,180fは、CEEコントローラが所定のプログラムを実行することでサーバ装置100上に実現される。ただし、これらのユニットの機能の全部または一部を専用のハードウェアで実現してもよい。
起動コード記憶部160bは、起動コード記憶部160に対応する。起動コード記憶部160bは、デフォルトの起動コードを1つ記憶する。起動コード記憶部160に記憶されるブートコードは、Ethernet接続用のものである。このため、当該ブートコードのアクセス先装置IDでは、例えばMAC(Media Access Control address)アドレスやIP(Internet Protocol)アドレスによって接続先装置が指定される。
PF170bは、Ethernet接続するためのインタフェースである。PF170bは、CEEスイッチ装置200aに接続されている。
VF180e,180fは、仮想マシンがEthenet接続するための仮想アダプタである。VF180e,180fは、PF170bによって生成されたデータ通信制御用のモジュールである。仮想マシン150,150aは、VF180e,180fにアクセスすることで単一のPF170bを共有している。PF170とPF170bは、CEEインタフェース106bをバーチャルレーンで共有して、CEEスイッチ装置200aと接続している。バーチャルレーンは、1つのインタフェースの物理接続を論理的に分割した経路である。これにより、PF170は、CEEスイッチ装置200aを介してFC接続により外部のストレージ装置300,300aとのデータ通信を行える。また、PF170bは、CEEスイッチ装置200aおよびネットワーク20を介して外部のサーバ装置100aとのデータ通信を行える。
図26は、第5の実施の形態の起動管理テーブルのデータ構造例を示す図である。起動管理テーブル132bは、起動管理テーブル132に対応する。各項目に設定される内容は、起動管理テーブル132と同様である。
ここで、仮想マシン150はストレージ装置300に記憶された起動コードでOS起動し、仮想マシン150aはサーバ装置100aに記憶された起動コードでOS起動したい場合を考える。その場合、仮想マシン150は、PF170を介してストレージ装置300とFC接続できる。仮想マシン150aは、PF170bを介してサーバ装置100aとEthernet接続できる。起動管理テーブル132bは、その場合の設定を例示している。
具体的には、CPUボード101(物理ホストID“0”)における仮想マシン150(仮想ホストID“0”)に対して、VF180,180a(VFのIDと番号の組が“10CF1223−0”および“10CF1223−1”)が割当済である。VF180,180aの何れも“起動用”である。VF180,180aにつき起動コードIDが“0”、“1”の2種類の起動コードが対応付けられており、仮想マシン150は、その起動時に何れかの起動コードを選択して起動可能となっている。
一方、仮想マシン150a(仮想ホストID“1”)に対しては、PF170b(PFのIDと番号の組が“10CF1224−1”)上のVF180e(VFのIDと番号の組が“10CF1224−0”)が割り当てられている。図25のハイパーバイザ140とVF180eとの間の関連線は、この割当関係を示している。更に、仮想マシン150aには起動コードID“2”が対応付けられている。パスの項目に設定された“/pci@1/vdev0/etn0”の“etn0”の箇所は、当該VF180eがEthernet接続用のものであることを示している。
なお、起動管理テーブル132bでは、PF170b上のVF180f(VFのIDと番号の組が“10CF1224−1”)の割当状況も示されている。VF180fは、割当状態が“未割当”である。
次に、以上の構成のサーバ装置100の処理手順を説明する。ここで、全体処理、割当解除処理および仮想マシン起動処理の手順は、図10,13,15で説明した第2の実施の形態の全体処理、割当解除処理および仮想マシン起動処理の手順と同様であるため説明を省略する。
図27は、第5の実施の形態のVF割当処理を示すフローチャートである。以下、図27に示す処理をステップ番号に沿って説明する。
(ステップS71)制御部141は、VF割当指示を取得する。VF割当指示には、仮想マシンを指定する情報、当該仮想マシンに対して、起動用として割り当てるPFおよび割り当てるVFの数(要求VF数)が含まれる。例えば、仮想マシン150をストレージ装置300のOSプログラムで起動させたい場合、PF170が選択される。また、仮想マシン150aをサーバ装置100aのOSプログラムで起動させたい場合、PF170bが選択される。制御部141は、VF割当指示からPFおよび要求VF数を特定する。
(ステップS72)制御部141は、特定したPFから起動コードをロードし、PF上に構成されるVFの数を確認する。
(ステップS73)制御部141は、起動管理テーブル132bを参照して、当該PFにつき未割当VF数を取得する。
(ステップS74)制御部141は、未割当VF数と要求VF数とを比較する。
(ステップS75)制御部141は、要求された数のVFを指定されたPFから割当可能であるか否かを判定する。割当可能である場合、処理をステップS78に進める。割当不可能である場合、処理をステップS76に進める。
(ステップS76)制御部141は、要求されたPFからVFを割り当てることができない旨を管理端末装置11に通知する。管理者は、当該通知を確認して、別のPFを指定したVF割当要求を再度行える。
(ステップS77)制御部141は、ステップS72でPFからロードした起動コードを要求VF数分だけ複製する。制御部141は、複製した起動コードに起動コードIDを付加する。
(ステップS78)制御部141は、管理端末装置11の指示により、VFごとの起動コードのアクセス先装置IDの設定内容を更新する。FC接続であれば、アクセス先装置IDは、WWNである。Ethernet接続であれば、アクセス先装置IDは、例えばMACアドレスやIPアドレスである。
(ステップS79)制御部141は、管理端末装置11から編集完了の指示を受けると、変更後の起動コードを起動コード記憶部130に保存する。
(ステップS80)制御部141は起動管理テーブル132bを更新する。
このようにして、CEEインタフェース106bを用いる場合でも、FC接続およびEthernet接続に関わらず、同様にしてVFごとの起動コードを生成できる。
図28は、第5の実施の形態のVF割当処理を示すシーケンス図である。以下、図28の示す処理をステップ番号に沿って説明する。
(ステップST191)管理端末装置11は、ハイパーバイザ140にVF割当指示を送信する。VF割当指示には、仮想マシン150aに対して、PF170bからVFを1つ起動用として割り当てる旨の指示を含むとする。
(ステップST192)ハイパーバイザ140は、PF170bに起動コードを要求する。
(ステップST193)PF170bは、ハイパーバイザ140からの要求に応じて、起動コード記憶部160bから起動コードを取得し、ハイパーバイザ140に出力する。
(ステップST194)ハイパーバイザ140は、PF170bから受信した起動コードに基づいて、PF上に構成されるVFの数を確認する。ハイパーバイザ140は、起動管理テーブル132aを参照してPF170bにおけるVF180eが未割当であり、VF割当可能であると判断する。なお、VF180e,180fの何れを割り当てるかは、例えば、識別情報(VFのIDと番号の組)の昇順に未割当のVFを選択していくなどのルールがハイパーバイザ140に予め設定される。
(ステップST195)ハイパーバイザ140は、PF170bから受信した起動コードに対して起動コードID“2”を付加する(要求VF数が1つなので起動コードの複製を行わなくてもよい)。以下、起動コードID“2”を付した起動コードを起動コード131aと表記する。ハイパーバイザ140は、管理端末装置11からの起動コード131aの編集を受け付ける。例えば、起動コード131aのアクセス先装置IDにサーバ装置100aのMACアドレスあるいはIPアドレスが設定される。管理端末装置11は、管理者による編集完了の入力を受け付けると、それをハイパーバイザ140に通知する。
(ステップST196)ハイパーバイザ140は、編集内容を起動コード131aに反映させて、起動コード記憶部130に保存する。ハイパーバイザ140は、仮想マシン150a、PF170bの仮想ポート“0”、VF180eおよび起動コード131aの対応関係を起動管理テーブル132bに設定する。
(ステップST197)ハイパーバイザ140は、割当完了を管理端末装置11に通知する。
このようにして、ハイパーバイザ140は、CEEインタフェース106bによりサーバ装置100aとEthernet接続する仮想マシン150aに対して、VF180eを割り当てる。
図29は、第5の実施の形態の仮想マシン起動処理を示すシーケンス図である。以下、図29に示す処理をステップ番号に沿って説明する。
(ステップST201)管理端末装置11は、ハイパーバイザ140に仮想マシン起動指示を送信する。仮想マシン起動指示は、仮想マシン150,150aを指定する情報を含むとする。
(ステップST202)ハイパーバイザ140は、仮想マシン起動指示を受信すると、仮想マシン150,150aが指定されていることを検知する。すると、ハイパーバイザ140は、起動コード記憶部130に記憶された起動管理テーブル132bを参照して、仮想マシン150に対して起動用のVF180,180aおよび起動コード131を含む2つの起動コードが対応付けられていることを確認する。そして、ハイパーバイザ140は、仮想マシン150に起動指示を出力する。これにより、ファームウェア151がサーバ装置100上で実行開始される。
(ステップST203)ハイパーバイザ140は、起動管理テーブル132bを参照して、仮想マシン150aに対して起動用のVF180eおよび起動コード131aが対応付けられていることを確認する。そして、ハイパーバイザ140は、仮想マシン150aに起動指示を出力する。これにより、ファームウェア151aがサーバ装置100上で実行開始される。
(ステップST204)仮想マシン150は、ハイパーバイザ140に起動コードを要求する。ここで、起動管理テーブル132aでは、仮想マシン150に対して2つの起動コードが対応付けられている。仮想マシン150は、そのうちの起動コード131を指定してハイパーバイザ140に要求する。
(ステップST205)ハイパーバイザ140は、起動コード記憶部130から起動コード131を取得し、仮想マシン150に提供する。
(ステップST206)仮想マシン150aは、ハイパーバイザ140に起動コードを要求する。
(ステップST207)ハイパーバイザ140は、起動コード記憶部130から起動コード131aを取得し、仮想マシン150aに提供する。
(ステップST208)仮想マシン150は、起動コード131で示されるアクセス先装置IDに基づいて、ストレージ装置300との接続を試みる。その際、ハイパーバイザ140は起動管理テーブル132bを参照して、当該接続をVF180に割り当て、更にPF170の仮想ポート“0”に対応付ける。すなわち、仮想マシン150は、VF180およびPF170の仮想ポート“0”を介してストレージ装置300とのFC接続を確立する。そして、仮想マシン150はストレージ装置300にOSプログラムを要求する。
(ステップST209)ストレージ装置300は、仮想マシン150にOSプログラムを送信する。ハイパーバイザ140は、PF170の仮想ポート“0”を介して受信したOSプログラムをVF180に対応付けて、仮想マシン150に出力する。仮想マシン150は、OSプログラムを受信するとOS152を起動する。
(ステップST210)仮想マシン150aは、起動コード131aで示されるアクセス先装置IDに基づいて、サーバ装置100aとの接続を試みる。その際、ハイパーバイザ140は起動管理テーブル132bを参照して、当該接続をVF180eに割り当て、更にPF170bの仮想ポート“0”に対応付ける。すなわち、仮想マシン150aは、VF180eおよびPF170bの仮想ポート“0”を介してサーバ装置100aとのEthernet接続を確立する。そして、仮想マシン150aはストレージ装置300aにOSプログラムを要求する。
(ステップST211)ストレージ装置300aは、仮想マシン150aにOSプログラムを送信する。ハイパーバイザ140は、PF170bの仮想ポート“0”を介して受信したOSプログラムをVF180eに対応付けて、仮想マシン150aに出力する。仮想マシン150aは、OSプログラムを受信するとOS152aを起動する。
このようにして、ハイパーバイザ140は、CPUボード101上の仮想マシン150,150aに対して、CEEインタフェース106b上の異なるPF170,170bから接続したい通信規格に応じたVFを割り当てることができる。これにより、各仮想マシンに対するVF割当の自由度を向上できる。
なお、第5の実施の形態では、FCおよびEthernetでの接続を例示して説明したが、他の通信規格を使い分けて接続する場合も同様である。CEEインタフェース106bでサポート可能な他の通信規格としては、例えば、SASインタフェース、Infinibandインタフェース、PCI Expressインタフェースが考えられる。
また、第2〜第4の実施の形態でも、FCインタフェースに限らず、NICインタフェース、SASインタフェース、Infinibandインタフェース、PCI Expressインタフェースなどに対して、同様にしてアダプタ切り換えの制御を行える。
上記については単に本発明の原理を示すものである。更に、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
1 情報処理装置
1a,1b 仮想マシン
1c インタフェース部
1d 記憶部
1e 制御部
2,2a 記憶装置
3,3a,3b 起動コード

Claims (10)

  1. 複数の仮想マシンが動作可能な情報処理装置であって、
    プログラムを記憶する複数の記憶装置にアクセス可能であって、前記複数の記憶装置のうちアクセス先の記憶装置を示す情報を含んでおり、当該アクセス先の記憶装置からプログラムを読み込むための第1の起動コードを保持するインタフェース部と、
    それぞれが前記複数の記憶装置のうちアクセス先の記憶装置を示す情報を含んでおり、前記インタフェース部を介して当該アクセス先の記憶装置からプログラムを読み込むための複数の第2の起動コードを記憶する記憶部と、
    前記複数の仮想マシンのうちのいずれかの仮想マシン上でプログラムを起動するとき、当該仮想マシンに応じた第2の起動コードを前記記憶部から選択し、前記第1の起動コードに代えて選択した第2の起動コードを当該仮想マシンに提供する制御部と、
    を有する情報処理装置。
  2. 前記記憶部は、前記複数の仮想マシンそれぞれに対して少なくとも1つの第2の起動コードを対応付けた管理情報を更に記憶し、
    前記制御部は、前記記憶部に記憶された前記管理情報に基づいて、前記仮想マシンに応じた第2の起動コードを選択する、
    請求項1記載の情報処理装置。
  3. 前記複数の第2の起動コードは、前記インタフェース部が保持する前記第1の起動コードを用いて生成されて前記記憶部に格納される、請求項1記載の情報処理装置。
  4. 前記制御部は、1つの仮想マシンに対して2以上の第2の起動コードが対応付けられている場合、前記仮想マシンからの通知に基づいて、前記2以上の第2の起動コードの中の1つを選択する、請求項1記載の情報処理装置。
  5. 前記制御部は、前記複数の仮想マシンと前記複数の第2の起動コードとの対応関係を示す管理情報を記憶する他の装置と通信して、前記仮想マシンに応じた第2の起動コードを選択する、請求項1記載の情報処理装置。
  6. 前記インタフェース部は、前記複数の記憶装置にアクセス可能な2以上のアクセス部を備え、前記2以上のアクセス部と対応して2以上の第1の起動コードを保持し、
    前記複数の第2の起動コードそれぞれは、前記インタフェース部が保持する前記2以上の第1の起動コードの中の1つを用いて生成されて前記記憶部に格納される、
    請求項1記載の情報処理装置。
  7. 前記アクセス先の記憶装置から読み込まれるプログラムは、オペレーティングシステムのプログラムである、請求項1記載の情報処理装置。
  8. 前記制御部は、前記仮想マシン上で実行されるファームウェアからの要求に応じて、当該仮想マシンに応じた第2の起動コードを選択して前記ファームウェアに提供する、請求項1記載の情報処理装置。
  9. 複数の仮想マシンが動作可能であり、プログラムを記憶する複数の記憶装置にアクセス可能な情報処理装置が実行する仮想マシン管理方法であって、
    前記複数の仮想マシンのうちのいずれかの仮想マシン上でのプログラムの起動開始を検出し、
    それぞれが前記複数の記憶装置のうちアクセス先の記憶装置を示す情報を含んでおり、前記情報処理装置が備えるインタフェース部を介して当該アクセス先の記憶装置からプログラムを読み込むための複数の第1の起動コードを記憶する記憶部から、プログラムの起動開始を検出した前記仮想マシンに応じた第1の起動コードを選択し、
    前記インタフェース部が保持する、前記複数の記憶装置のうちアクセス先の記憶装置を示す情報を含んでおり当該アクセス先の記憶装置からプログラムを読み込むための第2の起動コードに代えて、選択した第1の起動コードを前記仮想マシンに提供する、
    仮想マシン管理方法。
  10. 複数の仮想マシンが動作可能であり、プログラムを記憶する複数の記憶装置にアクセス可能なコンピュータに、
    前記複数の仮想マシンのうちのいずれかの仮想マシン上でのプログラムの起動開始を検出し、
    それぞれが前記複数の記憶装置のうちアクセス先の記憶装置を示す情報を含んでおり、前記コンピュータが備えるインタフェース部を介して当該アクセス先の記憶装置からプログラムを読み込むための複数の第1の起動コードを記憶する記憶部から、プログラムの起動開始を検出した前記仮想マシンに応じた第1の起動コードを選択し、
    前記インタフェース部が保持する、前記複数の記憶装置のうちアクセス先の記憶装置を示す情報を含んでおり当該アクセス先の記憶装置からプログラムを読み込むための第2の起動コードに代えて、選択した第1の起動コードを前記仮想マシンに提供する、
    処理を実行させる仮想マシン管理プログラム。
JP2013521357A 2011-06-21 2011-06-21 情報処理装置、仮想マシン管理方法および仮想マシン管理プログラム Active JP5585731B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/064124 WO2012176277A1 (ja) 2011-06-21 2011-06-21 情報処理装置、仮想マシン管理方法および仮想マシン管理プログラム

Publications (2)

Publication Number Publication Date
JP5585731B2 true JP5585731B2 (ja) 2014-09-10
JPWO2012176277A1 JPWO2012176277A1 (ja) 2015-02-23

Family

ID=47422159

Family Applications (1)

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

Country Status (4)

Country Link
US (1) US20140108776A1 (ja)
EP (1) EP2725488A1 (ja)
JP (1) JP5585731B2 (ja)
WO (1) WO2012176277A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9952877B2 (en) * 2014-04-23 2018-04-24 Cisco Technology, Inc. Booting a physical device using custom-created frozen partially-booted virtual machines
US9804877B2 (en) * 2014-09-16 2017-10-31 Unisys Corporation Reset of single root PCI manager and physical functions within a fabric
US9720720B2 (en) * 2015-02-25 2017-08-01 Red Hat Israel, Ltd. Dynamic management of assignment and number of virtual functions on SR-IOV capable hypervisors
US10296383B2 (en) 2015-07-10 2019-05-21 Samsung Electronics Co., Ltd. Computing system with resource management mechanism and method of operation thereof
CN106886429B (zh) * 2015-12-16 2020-11-06 华为技术有限公司 一种加载驱动程序的方法和服务器
JPWO2017170937A1 (ja) * 2016-04-01 2019-02-21 株式会社Nttドコモ スライス変更方法及びスライス変更装置
US10942758B2 (en) * 2017-04-17 2021-03-09 Hewlett Packard Enterprise Development Lp Migrating virtual host bus adaptors between sets of host bus adaptors of a target device in order to reallocate bandwidth to enable virtual machine migration
US10459751B2 (en) * 2017-06-30 2019-10-29 ATI Technologies ULC. Varying firmware for virtualized device
JP6998419B2 (ja) * 2020-04-16 2022-01-18 株式会社三菱Ufj銀行 制御プログラム
KR20220003757A (ko) * 2020-07-02 2022-01-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006011506A (ja) * 2004-06-22 2006-01-12 Nec Corp 起動イメージ提供システム及び方法、ブートノード装置、ブートサーバ装置並びにプログラム
US7360072B1 (en) * 2003-03-28 2008-04-15 Cisco Technology, Inc. iSCSI system OS boot configuration modification
US7624262B2 (en) * 2006-12-20 2009-11-24 International Business Machines Corporation Apparatus, system, and method for booting using an external disk through a virtual SCSI connection
JP2010532527A (ja) * 2007-06-29 2010-10-07 マイクロソフト コーポレーション 物理イメージと仮想イメージの統合的な提供

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4487920B2 (ja) 2005-12-12 2010-06-23 株式会社日立製作所 ブート制御方法および計算機システム並びにその処理プログラム
JP5149732B2 (ja) 2008-07-30 2013-02-20 株式会社日立製作所 仮想計算機システム
US8380971B2 (en) * 2008-12-02 2013-02-19 Dell Products, Lp Information handling systems including network adapters and methods of booting the information handling systems using boot configuration information from remote sources
US9973446B2 (en) * 2009-08-20 2018-05-15 Oracle International Corporation Remote shared server peripherals over an Ethernet network for resource virtualization
US8874888B1 (en) * 2011-01-13 2014-10-28 Google Inc. Managed boot in a cloud system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7360072B1 (en) * 2003-03-28 2008-04-15 Cisco Technology, Inc. iSCSI system OS boot configuration modification
JP2006011506A (ja) * 2004-06-22 2006-01-12 Nec Corp 起動イメージ提供システム及び方法、ブートノード装置、ブートサーバ装置並びにプログラム
US7624262B2 (en) * 2006-12-20 2009-11-24 International Business Machines Corporation Apparatus, system, and method for booting using an external disk through a virtual SCSI connection
JP2010532527A (ja) * 2007-06-29 2010-10-07 マイクロソフト コーポレーション 物理イメージと仮想イメージの統合的な提供

Also Published As

Publication number Publication date
US20140108776A1 (en) 2014-04-17
WO2012176277A1 (ja) 2012-12-27
JPWO2012176277A1 (ja) 2015-02-23
EP2725488A1 (en) 2014-04-30

Similar Documents

Publication Publication Date Title
JP5585731B2 (ja) 情報処理装置、仮想マシン管理方法および仮想マシン管理プログラム
JP5272709B2 (ja) アドレス割当方法、コンピュータ、物理マシン、プログラム、及びシステム
JP5427574B2 (ja) 仮想計算機の移動管理方法、前記移動管理方法を用いた計算機、前記移動管理方法を用いた仮想化機構および前記移動管理方法を用いた計算機システム
US8706859B2 (en) Method and apparatus of data center file system
US6804703B1 (en) System and method for establishing persistent reserves to nonvolatile storage in a clustered computer environment
JP5142678B2 (ja) デプロイ方法およびシステム
US8959323B2 (en) Remote restarting client logical partition on a target virtual input/output server using hibernation data in a cluster aware data processing system
JP5352132B2 (ja) 計算機システム及びそのi/o構成変更方法
JP6799668B2 (ja) Raid設定
US7406577B2 (en) Data migration method
WO2012176278A1 (ja) 情報処理装置、仮想マシン制御方法およびプログラム
US20060136704A1 (en) System and method for selectively installing an operating system to be remotely booted within a storage area network
US10678465B2 (en) Seamless migration of storage volumes between storage arrays
JP2006085543A (ja) 仮想計算機システム
JP2006195703A (ja) ディスクレス計算機の運用管理システム
JP2007164476A (ja) ストレージ装置及びその制御方法並びにプログラム
JP5226810B2 (ja) 論理パス・リソースを動的に管理する方法、装置、システム、及びコンピュータ・プログラム
WO2011111245A1 (ja) 計算機システム、計算機システムの制御方法及びプログラムを格納した記憶媒体
US20070192553A1 (en) Backup apparatus and backup method
JP6663478B2 (ja) データ移行方法及び計算機システム
JP4863905B2 (ja) ストレージ利用排他方式
JP4734259B2 (ja) 運用管理プログラム、運用管理方法および運用管理装置
JP5750169B2 (ja) 計算機システム、プログラム連携方法、及びプログラム
JP4430456B2 (ja) ネットワークストレージシステム,ユーザ管理サーバおよびユーザ管理サーバ用プログラム
JP3861920B2 (ja) 計算機システムおよびプログラムのインストール方法

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140624

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140707

R150 Certificate of patent or registration of utility model

Ref document number: 5585731

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150