JP2013250950A - 計算機システム、仮想化機構、及び計算機システムの制御方法 - Google Patents

計算機システム、仮想化機構、及び計算機システムの制御方法 Download PDF

Info

Publication number
JP2013250950A
JP2013250950A JP2012127420A JP2012127420A JP2013250950A JP 2013250950 A JP2013250950 A JP 2013250950A JP 2012127420 A JP2012127420 A JP 2012127420A JP 2012127420 A JP2012127420 A JP 2012127420A JP 2013250950 A JP2013250950 A JP 2013250950A
Authority
JP
Japan
Prior art keywords
virtual
data
computer
program
transfer
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.)
Granted
Application number
JP2012127420A
Other languages
English (en)
Other versions
JP5658197B2 (ja
Inventor
Eiichiro Oiwa
栄一郎 大岩
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2012127420A priority Critical patent/JP5658197B2/ja
Priority to US13/908,633 priority patent/US9292219B2/en
Publication of JP2013250950A publication Critical patent/JP2013250950A/ja
Application granted granted Critical
Publication of JP5658197B2 publication Critical patent/JP5658197B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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/4557Distribution of virtual machine instances; Migration and load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】仮想計算機を他の物理計算機に適切に移動させるようにする。
【解決手段】計算機システムは、第1物理計算機と、第2物理計算機とを備える。第1物理計算機は、制御デバイスと、制御デバイスに接続される記憶デバイスとを有する。第1物理計算機の制御デバイスは、仮想計算機を構築し、仮想計算機上で所定のゲストプログラムを実行可能である。記憶デバイスの一部の領域は、仮想計算機における記憶デバイスである仮想記憶デバイスとして用いられる。制御デバイスは、第1物理計算機の仮想計算機を、ゲストプログラムを実質的に実行させつつ、第2物理計算機に移動させるライブマイグレーションを実行する際に、仮想計算機に割り当てられた仮想記憶デバイスに対する一定時間におけるデータの書込み量を低減させるように制御する。
【選択図】図1

Description

本発明は、一の物理計算機から他の物理計算機へ、実質的に動作状態にある仮想計算機を移動させる技術に関する。
従来、物理計算機において、仮想計算機を動作させることが行われている。また、1の物理計算機で動作している仮想計算機を他の物理計算機に移動させる技術として、特許文献1に記載されている技術が知られている。特許文献1には、実計算機上で動作している仮想計算機を別の実計算機上に移動させる際、管理部により、転送元の仮想計算機を停止させ、転送先の仮想計算機を別の実計算機上に定義し、その起動を抑止した状態で、転送元の仮想計算機の構成情報及び転送先の仮想計算機の構成情報を変更し、構成情報の変更後に、転送先の仮想計算機の起動の抑止を解除する技術が開示されている。
特開2010−33404号公報
ところで、認証サービスや予約システムなど、多くのサービスは、24時間、1年中にわたって無停止でのサービスの提供が要求される場合が多い。このような無停止でのサービスの提供を実現するには、24時間、1年中にわたって稼動することのできる物理計算機が必要となる。しかしながら、実際には、不具合の発生により、物理計算機を停止しなければならないことがある。物理計算機に発生する不具合としては、ファームウェアの不具合や、物理計算機の各部位の物理的な劣化などによる故障、物理計算機の能力を超える負荷によるシステム停止などがある。
ファームウェアの不具合は、不具合箇所のコードが走る前に、ファームウェアを交換したり、または、修正されたファームウェアが適用されている別の装置を用いたりすることができれば、発生することはない。また、物理計算機の劣化は、修正可能なエラー(correctable error(CE))として、事前にファームウェアに、報告が上がる場合があるので、correctable error発生時に、別の物理計算機に、サービスを移動できれば、サービスを停止しなくて済む。また、物理計算機の能力以上の負荷がかかりそうになる前に、能力の高い物理計算機にサービスを移動できれば、システム停止することなくサービスを続けることができる。
このように、物理計算機に縛られずにサービスを無停止で、物理計算機間を移動できれば、24時間、1年中無停止でのサービスを提供することが可能となる。
ここで、物理計算機そのものに、サービスを提供するOS(operating
system)やアプリケーションをインストールしている場合には、サービスを提供するOSを無停止で、他の物理計算機に移動することができない。
これに対して、特許文献1に記載された技術のように、OSの下に、仮想計算機をソフトウェア的に作ると、この仮想計算機を物理計算機間で移動することが可能である。
しかしながら、特許文献1に記載された技術では、仮想計算機の移動が完了するまで仮想計算機の動作を停止させる必要がある。
これに対して、仮想計算機が処理の実行を継続して行っている際に、OSに認知されないほど短い間(数msから1秒間程度)仮想計算機を停止させることを適宜行いつつ、仮想計算機を他の物理計算機に移動させることにより、実質的に無停止で仮想計算機を他の物理計算機に移動させたかのように見せるライブマイグレーション(live migration:活性状態移動)の技術がある。
仮想計算機を構成するための部位として、SAN (Storage Area
Network)等の高速なデータ転送が可能なネットワークにデータを流すHBA (Host Bus Adapter)デバイスが必要となるが、HBAデバイスを、全てソフトウェアにより仮想化またはエミュレーション (模擬:emulation)すると、エミュレーションのために使用する物理プロセッサ(physical processor)の処理が必要となる。HBAを物理プロセッサによってエミュレーションすると、エミュレーションしないで、物理HBAを使用する場合よりも、データ転送帯域の低下やデータ転送レイテンシ(latency:転送遅延)の増大等のデータ性能低下を招く。
エミュレーションによるデータ性能低下を、エミュレーションしない場合に比べて、例えば、10%以下に抑えるための技術としては、HBAの機能であるNPIV(N_Port ID virtualization)を使用し、仮想計算機に、物理HBAそのものではなく、NPIVで作った仮想ポート(port)を見せる技術が考えられる。仮想計算機にNPIVを見せることで、DMA(direct memory access)転送やネットワークに流すパケットの生成など、物理プロセッサで実行する必要があった処理を、物理HBAに実行させることができるようになる。このように、一部の処理を物理HBAで実行させることができるため、データ転送帯域の低下や、データ転送レイテンシの増大を、低く抑えることができる。
また、NPIVによると、1つのポートを複数のポートとして使用できるため、1つのポートを使用中でも、別のポートを使用して、データ転送をすることが可能である。
ここで、HBAと、ストレージ(storage:記憶装置)との間でデータ転送をする前には、必ずHBAポートからSANファブリック(fablic)へのログイン(承認)が必要である。このログインを行うための時間(ログイン時間)は、SANの構成によっては、数分かかることもある。NPIVポートを割り当てた仮想計算機も同様に、HBAと、ストレージ(storage:記憶装置)との間でデータ転送をする前には、ログインする必要がある。
例えば、ライブマイグレーションにおいては、転送元の物理計算機でNPIVをログアウトさせ、その後、転送先の物理計算機でNPIVをログインさせる必要があるが、上記したようにログインには数分かかることもあるので、転送先の物理計算機の仮想計算機では、ストレージとの間のデータ転送が数分間止まってしまう可能性がある。
このようなログインに関わるデータ転送の停止を解決するための方法としては、1つの物理的なポートを複数ポートとして共有して使用することができるNPIV技術を利用し、移動対象のNPIVポートがログイン中に、もう1つのNPIVポートもログインさせ、移動対象のNPIVポートと異なるポートにデータを流すようにし、移動対象のNPIVポートをログアウトさせ、転送先の物理計算機において、移動対象のNPIVポートに対応させるNPIVポートをログインする方法がある。この方法によると、転送先の物理計算機での仮想計算機が動作する場合において、ストレージとの間のデータ転送が数分止まることがない。
ここで、仮想計算機が、処理におけるストレージとの間のデータ転送を、物理計算機の最大データ転送帯域に近い性能を出している環境下で行っている場合において、ライブマイグレーションを行うことを想定する。ライブマイグレーションをするためのデータの転送路として、ストレージとの間のデータ転送帯域よりも性能の低い転送路が使用されることもある。ライブマイグレーションにおいては、転送元の仮想計算機のメモリ(ゲストメモリ)の内容を、転送先の仮想計算機のメモリに反映させる必要があるが、メモリに対して読込まれるデータの帯域が、ライブマイグレーションのためのデータ転送路の帯域よりも大きいと、転送元の仮想計算機のメモリの内容を、転送先の仮想計算機のメモリに反映させる処理が追いつかなくなってしまい、ライブマイグレーションがいつまでも終了しないという事態が発生する可能性がある。
本発明は、上記課題に鑑みなされたものであり、その目的は、仮想計算機を他の物理計算機に適切に移動させることのできる技術を提供することにある。
計算機システムは、第1物理計算機と、第1物理計算機に接続される第2物理計算機とを備える。第1物理計算機は、制御デバイスと、制御デバイスに接続される記憶デバイスとを有する。第1物理計算機の制御デバイスは、仮想計算機を構築し、仮想計算機上で所定のゲストプログラムを実行可能である。記憶デバイスの一部の領域は、仮想計算機における記憶デバイスである仮想記憶デバイスとして用いられる。制御デバイスは、第1物理計算機の仮想計算機を、ゲストプログラムを実質的に実行させつつ、第2物理計算機に移動させるライブマイグレーションを実行する際に、仮想計算機に割り当てられた仮想記憶デバイスに対する一定時間におけるデータの書込み量を低減させるように制御する。
一の物理計算機で動作する仮想計算機を、他の物理計算機にライブマイグレーションにより適切に移動させることができる。
図1は、実施形態に係る計算機システムの構成図である。 図2は、実施形態に係る転送元物理計算機上で動作するプログラムにより実行される処理のフローチャートである。 図3は、実施形態に係るHBA転送処理を説明する第1の図である。 図4は、実施形態に係るHBA転送処理を説明する第2の図である。 図5は、実施形態に係るDMAデータ転送量および平均DMAデータ転送量の関係を説明する第1の図である。 図6は、実施形態に係るDMAデータ転送量および平均DMAデータ転送量の関係を説明する第2の図である。 図7は、実施形態に係るHBAのリクエストキューを説明する第1の図である。 図8は、実施形態に係るHBAのレスポンスキューを説明する第1の図である。 図9は、実施形態に係るHBAのリクエストキューを説明する第2の図である。 図10は、実施形態に係るHBAのレスポンスキューを説明する第2の図である。 図11は、実施形態に係る転送先物理計算機上で動作するプログラムにより実行される処理のフローチャートである。 図12は、実施形態に係るEPTを説明する図である。 図13は、実施形態に係るEPT中のEPT PTテーブルのエントリを説明する図である。 図14は、実施形態に係るEPT中のEPT PDテーブルのエントリを説明する図である。 図15は、実施形態に係るゲストプログラムによるゲストメモリへの書込み処理を説明する第1の図である。 図16は、実施形態に係るゲストプログラムによるゲストメモリへの書込み処理を説明する第2の図である。 図17は、実施形態に係る実HBA仮想ポートの使用時における、ゲストアドレスと、ハイパバイザアドレスとの対応関係を示す図である。 図18は、実施形態に係るダミーHBA仮想ポートの使用時における、ゲストアドレスと、ハイパバイザアドレスとの対応関係を示す図である。
以下、図面を用いて実施形態を説明する。なお、以下に説明する実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
なお、以後の説明では、「aaaテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていても良い。データ構造に依存しないことを示すために「aaaテーブル」を「aaa情報」と呼ぶことができる。
また、以後の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)、や通信制御装置(例えばNIC、HBA)を用いながら行うため、処理の主語がプロセッサとされても良い。また、プログラムを主語として説明された処理は、プロセッサ或いはそのプロセッサを有するデバイス(例えば、計算機等)が行う処理としても良い。また、プログラムの一部又は全ては専用ハードウェアによって実現されても良い。また、コンピュータプログラムは、プログラムソースから各デバイスにインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。
本実施形態の概要について説明する。
ライブマイグレーションのためのデータの転送路のデータ転送帯域よりも高いデータ転送帯域を持つデバイス(図1のメモリ211等)のデータをライブマイグレーションにより移動する場合には、そのデバイスのデータ転送帯域(一定時間におけるデータ転送量)を制御する必要がある。
転送元の仮想計算機104を構成している物理計算機のデータ転送が、物理プロセッサ(physical processor)210のエミュレーションにより実現しているのではなく、ハードウェア(例えば、HBA212)の機能を使用してデータ転送機能を実現している場合、物理プロセッサ210による介入や、エミュレーションなしに物理デバイスによりDMA転送が行われ、仮想計算機104に割り当てたられたメモリ211(ゲストメモリ109)に直接書込みや読み込みが行われる。このような場合には、物理デバイスによるDMA転送の帯域制御をする必要がある。
また、物理プロセッサ210による介入が可能な仮想計算機104に割り当てられたゲストメモリ109へのデータの書込みもライブマイグレーションのための転送路のデータ転送帯域よりも高いデータ転送帯域があるため、このデータ書込みも転送帯域を制御する必要がある。
DMA転送の帯域制御する方法のうち、物理デバイスが転送している転送帯域自体を制御する方法としては、物理デバイスの内部機構を変更して、DMA転送の帯域を制御する他にはない。物理デバイスの内部機構の変更は困難であるので、物理デバイスが転送している転送帯域自体を制御することは困難である。
したがって、DMA転送が最大の性能により常に実行されている場合には、DMA転送の帯域を制御する方法がない。しかしながら、DMA転送を実行する時間と、DMA転送を実行しない時間とを制御することにより、実質的なDMA転送の帯域を制御することができる。ここで、実質的なDMA転送の帯域は、DMA転送していない時間(すなわち、帯域が0となる時間)とDMA転送を実行している時間とを足し合わせた合計時間で、この合計時間内に行われたDMAデータ転送量を割った値である。
そこで、本実施形態においては、DMA転送していない時間を制御することにより、DMA転送の帯域を制御する。例えば、DMA転送していない時間を作るために、物理プロセッサ210による介入が可能なデバイスの割込み報告を遅らせることで、DMA転送していない時間を制御する。割込み報告を遅らせることで、ディスク読み込み等のDMA転送による仮想計算機104に割り当てられたゲストメモリ109への書込み頻度を制御する。このように、仮想計算機104に割り当てられたゲストメモリ109への書込み頻度を制御できるので、ライブマイグレーションのためのデータの転送路を用いて、適切にデータの転送を行うことができる。
また、物理プロセッサ210による介入が可能な仮想計算機104に割り当てられたゲストメモリ109への書込みは、物理プロセッサ210の書込み保護機能を使用して帯域制御する。書込み保護例外(すなわち、書込み保護がされている領域に対するデータの書込み要求)が発生した後、データが実際にゲストメモリ109に書き込まれるようにするには、書込み保護例外を解除しなくてはならないが、書込み保護例外の解除を遅延させることで、ゲストメモリ109に対する書込み帯域を制御する。書込み保護機能を使った帯域制御は、ゲストメモリ109に対する書込み帯域を制御することができるので、ディスク(disk:不揮発性記憶装置)へのデータ書込み等といった、物理プロセッサ210によって、書込みデータをいったん仮想計算機に割り当てたゲストメモリ109へ書き込んでからデバイスに書込みを依頼するようなデータ書込みの帯域制限にも使用することが可能である。このように、仮想計算機104に割り当てられたゲストメモリ109への書込み帯域を制御できるので、ライブマイグレーションのためのデータの転送路を用いて、適切にデータの転送を行うことができる。
次に、実施形態に係る計算機システムについて詳細に説明する。
図1は、実施形態に係る計算機システムの構成図である。
計算機システムは、転送元の仮想計算機を動作させる転送元物理計算機(Source
machine:第1物理計算機の一例)200と、仮想計算機の転送先となる転送先物理計算機(Destination machine:第2物理計算機の一例)201と、ファイバーチャネルスイッチ(FC−SW)230と、ストレージ231と、イーサネットスイッチ(Ethernet-SW:イーサネットは登録商標)232とを含む。転送元物理計算機200と転送先物理計算機201とは、イーサネットスイッチ232を介して接続されている。本実施形態では、転送元物理計算機200と転送先物理計算機201との間の通信帯域は、例えば、1Gbpsである。本実施形態では、イーサネットスイッチ232を介して接続されたネットワークを、ライブマイグレーションのためのデータの転送路としている。転送元物理計算機200と、ストレージ231とは、FC−SW230を介して接続されている。転送先物理計算機201と、ストレージ231とは、FC−SW230を介して接続されている。なお、本実施形態では、転送元物理計算機200又は転送先物理計算機201と、ストレージ231との間の回線の通信帯域は、イーサネットスイッチ232を介した転送元物理計算機200と転送先物理計算機201との間の通信帯域よりも広く、例えば、8Gbpsである。ストレージ231は、記憶領域を、転送元物理計算機200又は転送先物理計算機201が利用するデータを格納する1以上のLU(Logical unit)234を管理する。ストレージ231は、FC−SW230に登録されているWWN(World Wide Name)をもつHBAのみが、LU234を読み書きできるように、アクセス制限を行っている。
転送元物理計算機200は、制御デバイスの一例としての物理プロセッサ(Physical
processor)210と、記憶デバイスの一例としてのメモリ(Memory)211と、転送デバイスの一例としてのHBA(Host Bus Adapter)212と、NIC(Network Interface Controller)213とを有する。物理プロセッサ210は、各種プログラム(例えば、ゲストプログラム100等)を実行し、各種処理(例えば、デバイスのエミュレーション(emulation)等)を実行する。メモリ211は、各種プログラムや、各種プログラムが処理に利用するデータを記憶する。HBA212は、ストレージ231に対するデータの書込み、又はストレージ231からのデータの読み出しを実行する。HBA212は、DMA転送を行うことができる。ストレージ231にデータを書込む際には、HBA212に書込みたいデータを含む書込み要求を送信すると、データの書込み要求を受けたHBA212がFC−SW230を経由し、ストレージ231へデータを書込む。また、ストレージ231からデータを読込む際には、HBA212に読込み要求を送信すると、データの読込み要求を受けたHBA212がストレージ231からFC−SW230を経由し、データを読込む。NIC213は、イーサネットスイッチ232を介して接続された他の装置(例えば、転送先物理計算機201)との間のデータ転送を行う。本実施形態では、NIC213を介して、転送元物理計算機200の仮想計算機104で実行するプログラム(ゲストプログラム)100や、ライブマイグレーション時に転送先物理計算機201に送る各種データを転送する。
HBA212は、はNPIV(N_Port ID virtualization)技術により、1つのHBAポートを、複数のWWNを持つ複数の仮想的なポートとして動作することができ、WWNごとに別々に、LU234への読み書きを制御することができる。すなわち、物理的にFC−SW230に接続されているHBAポートが1つでも、仮想的な複数のHBAポートがそれぞれ、別々に、読み書きする対象のLU234を選択することができ、それらLU234に別々にデータを読み書きすることができる。
転送先物理計算機201は、物理プロセッサ220と、メモリ221と、HBA223と、NIC222とを有する。なお、各構成は、転送元物理計算機200の同名の構成と同様である。
転送元物理計算機200は、物理プロセッサ210、メモリ211、NIC213、HBA212等の物理デバイスを所定の時間ごとに使用者を分ける方法や、物理デバイスの使用領域を分ける方法を使用することで、1以上の仮想的な計算機(仮想計算機)104、105として動作することができる。例えば、転送元物理計算機200は、転送元ハイパバイザ190を物理プロセッサ210により実行することで、仮想計算機を構築することができる。転送元ハイパバイザ190は、転送元LPAR(logical partition)150、転送元シャドウLPAR160、割込みプログラム(interrupt program)152等を記憶する。転送元ハイパバイザ190及び転送元LPAR150を物理プロセッサ210が実行することにより、転送元仮想計算機104が構築され、転送元ハイパバイザ190及び転送元シャドウLPAR160を物理プロセッサ210が実行することにより、転送元シャドウ仮想計算機105が構築される。
転送先物理計算機201も、物理プロセッサ220、メモリ221、NIC223、HBA222等の物理デバイスを所定の時間ごとに使用者を分ける方法や、物理デバイスの使用領域を分ける方法を使用することで、1以上の仮想的な計算機(仮想計算機)106、107として動作することができる。例えば、転送先物理計算機201は、転送先ハイパバイザ191を物理プロセッサ220により実行することで、仮想計算機を構築することができる。転送先ハイパバイザ191は、転送先シャドウLPAR170、割込みプログラム(interrupt program)172等を記憶する。なお、ライブマイグレーション後においては、転送先ハイパバイザ191は、転送先LPAR180を更に記憶する。転送先ハイパバイザ191及び転送先シャドウLPAR170を物理プロセッサ220が実行することにより、転送先シャドウ仮想計算機106が構築され、また、転送先ハイパバイザ191及び転送先LPAR180を物理プロセッサ220が実行することにより、転送先仮想計算機107が構築される。転送元ハイパバイザ190と転送先ハイパバイザ191は、いわゆる仮想化機構である。
転送元仮想計算機104は、ユーザに対して提供される計算機であり、この転送元仮想計算機104上において、ゲストプログラム100が実行される。ゲストプログラム100としては、OSや、ストレージ231との間のデータの入出力を伴うアプリケーション等がある。転送元仮想計算機104は、仮想プロセッサ(VProcessor)108と、ゲストメモリ(Guest memory)109と、仮想NIC(VNIC)110と、実HBA仮想ポート(Real HBA vport)111と、ダミーHBA仮想ポート(Dummy HBA Vport)112とを含む。仮想プロセッサ108は、物理プロセッサ210の資源の一部が提供されることにより実現される仮想的なプロセッサである。ゲストメモリ109は、メモリ211の一部の領域が割り当てられているメモリである。仮想NIC110は、NIC213の機能を用いて構成される仮想的なNICである。実HBA仮想ポート111及びダミーHBA仮想ポート112は、HBA212のNPIV機能を使用して構成される、仮想的なHBAポートである。なお、転送元仮想計算機104上で動作するゲストプログラム100に対しては、実HBA仮想ポート111またはダミーHBA仮想ポート112のいずれかのHBAポートが利用可能に提供される。なお、転送先仮想計算機107も、ライブマイグレーションが実行されると、最終的には転送元仮想計算機104と同様な構成となる。転送先仮想計算機107において、ゲストプログラム100と同様なゲストプログラム103が実行される。
転送元シャドウ仮想計算機105は、転送元物理計算機200から転送先物理計算機201に、仮想計算機を移動させるライブマイグレーションにおけるデータの転送における転送元物理計算機200側の処理を実行するための計算機である。転送元シャドウ仮想計算機105上で、仮想計算機を移動させるライブマイグレーションにおけるデータの転送(具体的には、転送元LPAR150と、ゲストメモリ109を複製するためのデータ(複製データ)の転送)を実行するためのプログラムである転送元LPARムーバ101が実行される。転送元シャドウ仮想計算機105は、仮想プロセッサ120と、ゲストメモリ121と、仮想NIC122とを含む。仮想プロセッサ102は、物理プロセッサ210の資源の一部が提供されることにより実現される仮想的なプロセッサである。ゲストメモリ121は、メモリ211の一部の領域が割り当てられているメモリである。仮想NIC122は、NIC213の機能を用いて構成される仮想的なNICである。
転送先シャドウ仮想計算機106は、転送元物理計算機200から転送先物理計算機201に、仮想計算機を移動させるライブマイグレーションにおけるデータの転送における転送先物理計算機201側の処理を実行するための計算機である。転送先シャドウ仮想計算機106上で、仮想計算機を移動させるライブマイグレーションにおけるデータの転送を実行するためのプログラムである転送先LPARムーバ102が実行される。転送先シャドウ仮想計算機106は、仮想プロセッサ130と、ゲストメモリ131と、仮想NIC132とを含む。なお、各構成は、転送元シャドウ仮想計算機105の同名の構成と同様である。
割込みプログラム152は、物理プロセッサ210、NIC213、及びHBA212からの割込みを受け、転送元LPAR150または、転送元シャドウLPAR160へ割込みがあったことを伝えるプログラムである。割込みプログラム152は、実施形態に係る帯域制御をしていない場合には、転送元LPAR150の後述するIRRテーブル(Interrupt Request Register Table)158または、転送元シャドウLPAR160の後述するIRRテーブル165に割込みがあったことを記録する。
一方、割込みプログラム152は、実施形態に係る帯域制御を実施する場合において、ライブマイグレーション中は、割込み保留条件(割込み保留条件については、後に説明する)に合致した場合には、割込みを保留する。この時、割込みプログラム152は、割込みを保留する場合には、保留する割込みに対応する割込みベクトル(interrupt vector)を示す情報を後述する保留割込みテーブル(pending interrupt table)157に登録する。ここで、割込みベクトルは、割込みの種類を示す番号である。また、割込みプログラム152は、保留する割込みによってゲストプログラム100に報告される、DMAによる書込みデータ長(更新データ長)と、発生した時刻(例えば、x86系プロセッサのtsc: time stamp counter)とを後述する保留データテーブル(Pending data table)156に記録する。
転送元LPAR150は、Lプロセッサプログラム151と、LPARプログラム153と、EPT(extended page table)154と、ゲストアドレステーブル(guest address table)155と、保留データテーブル156と、保留割込みテーブル157と、IRRテーブル158と、ISR(In-Service Register)テーブル159とを含む。
Lプロセッサプログラム151は、書込み保護等によりゲストプログラム100を直接物理プロセッサ210で実行できない場合に、ゲストプログラム100に割り込んで実行されるプログラムである。
Lプロセッサプログラム151は、ゲストプログラム100から制御が渡された際、IRRテーブル158の内容を確認し、IRRテーブル158に登録されている割込みベクトルの内、最も優先度が高い割込みベクトルについてISRテーブル159に登録する。この時、Lプロセッサプログラム151は、ISRテーブル159に登録した割込みベクトルに対応するIPRテーブル158のビットを落として、当該割込みベクトルの記録を取り消す。なお、x86系プロセッサでは、割込みベクトルは8ビットで表され、上位4ビットが割込み報告の優先順位を表している。上位4ビットの値が大きいほど、優先度が高い割込みベクトルであることを意味している。
転送元LPAR150は、ゲストプログラム100がメモリ211を使用できるように、EPT154を設定し、ハイパバイザ190が管理しているメモリ211の或る部分の領域を割当てる。このメモリ211の割り当てられた領域がゲストメモリ109の領域となる。
EPT154は、転送元仮想計算機104のゲストメモリ109における物理アドレス(ゲストアドレス)が、ハイパバイザ190が管理しているメモリ211の領域のどのアドレス(ハイパバイザアドレス)に対応しているかを示すアドレス変換テーブルである。ここで、ゲストアドレスは、ゲストプログラム100で利用される物理アドレスである。なお、EPT154は、ネストテッドページテーブル(Nested page Table)と呼ばれることがある。
また、EPT154は、ゲストメモリ109における4KBページ単位、または2MBページ単位のそれぞれの領域について、当該領域のデータについての書込み保護、読込み保護、命令実行保護、キャッシュ属性等のメモリアクセスにかかわる属性を保存している。ここで、ページとは、プロセッサがメモリアクセス属性を変えることのできる最小単位である。
LPARプログラム153は、転送元仮想計算機104の起動時に、ゲストプログラム100にゲストメモリ109を割り当てる際にEPT154を設定する。また、LPARプログラム153は、ライブマイグレーションを実施する際に、ゲストメモリ109の全ての領域を、書込み保護属性とするようにEPT154を書き換える。
ゲストアドレステーブル155は、書込み保護例外、すなわち、書込み保護がされている領域へのデータの書込みを起こしたゲストプログラム100が使用している物理アドレス(ゲストメモリアドレス)と、保護例外を起こした時の時刻(tsc)とを格納する。
保留データテーブル156は、ゲストプログラム100に報告されるDMAによる書込みデータ長(更新データ長)と、発生した時刻とを記憶する。
保留割込みテーブル157は、保留されている割込みを示す割込みベクトルを登録する。本実施形態では、保留割込みテーブル157は、複数(例えば、256)のビットで構成されたビットテーブルであり、各ビットが、発生する可能性がある各割込みベクトルと対応している。例えば、保留する割込みを示す割込みベクトルが50(0x32)である場合には、保留割込みテーブル157の50ビット目のビットが1に設定される。
IRRテーブル158は、発生した割込みを示す割込みベクトルを登録するためのテーブルである。IRRテーブル158は、複数(例えば、256)のビットで構成されたビットテーブルであり、各ビットが、発生する可能性のある各割込みベクトルと対応している。例えば、発生した割込みを示す割込みベクトルが50(0x32)である場合には、IRRテーブル158の50ビット目のビットが1に設定される。
ISRテーブル159は、ゲストプログラム100に報告している割込みを示す割込みベクトルを登録するためのテーブルである。ISRテーブル159は、複数(例えば、256)のビットで構成されたビットテーブルであり、各ビットが、発生する可能性のある各割込みベクトルと対応している。例えば、ゲストプログラム100に報告している割込みを示す割込みベクトルが50(0x32)である場合には、ISRテーブル159の50ビット目のビットが1に設定される。
転送先LPAR180は、ライブマイグレーションが終了する際においては、転送元LPAR150と同様な構成となる。なお、転送先LPAR180は、転送元LPAR150が、停止するまで、動作しないように管理される。また、同様に、転送先LPAR180により構築される転送先仮想計算機107及び転送先仮想計算機107上で動作するゲストプログラム103についても、転送元LPAR150が停止するまで、動作しないで、待機しておくように管理される。
転送元シャドウLPAR160は、Lプロセッサプログラム161と、LPARプログラム163と、EPT164と、IRRテーブル165と、ISRテーブル166とを含む。転送元シャドウLPAR160の各構成は、上述した保留に関わる動作を行わないこと以外は、転送元LPAR150の同名の構成と同様な処理を行う。また、転送先シャドウLPAR170は、転送元シャドウLPAR160と同様な構成である。
次に、実施形態に係るライブマイグレーションについて説明する。
ライブマイグレーションにおいては、ゲストプログラム100を転送先物理計算機201に複製することで、ゲストプログラム100が転送先物理計算機201に移動したかのように見せる。この際に、転送元LPAR150が管理している転送元仮想計算機104のゲストメモリ109等の状態を、徐々に、転送先物理計算機201の転送先仮想計算機107に反映することで、仮想的に転送元仮想計算機104が移動したかのように見せる。
図2は、実施形態に係る転送元の物理計算機上で動作するプログラムにより実行される処理のフローチャートである。同図においては、ライブマイグレーションにおける処理、すなわち、転送元仮想計算機104の複製処理を、各プログラム単位のフローチャートとして示している。
まず、図2の一番右側のフローチャートを参照して、割込みプログラム152による処理について説明する。
割込みプログラム152は、転送元物理計算機200の割込み要求が上がるまで、待機する(ステップS100)。この待機中は、物理プロセッサ201が、割込みプログラム152を走らせない状態としている。そして、転送元物理計算機200から割込み要求が上がると、物理プロセッサ210が割込みプログラム152に制御を渡して、割込みプログラム152を起こす。
物理プロセッサ210から起こされた割込みプログラム152は、転送元物理計算機200からの割込みを受け付け(ステップS101)、割込み先LPARを特定する(ステップS102)。割込み先LPAR (例えば、転送元LPAR150または転送元シャドウLPAR160)の特定方法は、割込み種類(割込みベクトルの番号)によって異なる。
ここでは、以下に、HBA212に係る割込みを例として説明する。HBA212へ要求を行う際には、Lプロセッサプログラム151が、どのNPIV(HBA vport)への要求なのかを示すIDを付けて要求を行うと、要求に対する応答時には、HBA212の特定レジスタに要求時のIDが格納されていので、当該IDに基づいて、どのNPIVの応答なのかを把握することができるようになっている。そこで、HBA212へ要求をかける前に、LPAR(例えば、転送元LPAR150または転送元シャドウLPAR160)ごとに、使用するHAB仮想ポート(HBA vport)のIDを対応付けておけば、HBA212の特定のレジスタに格納されたIDに基づいて、応答時に割込みを報告すべきLPARを特定することができる。
割込み先LPARを特定した後に、割込みプログラム152は、ゲストプログラム100へのその割込みの報告を保留すべきか否かを判定する(ステップS103)。
具体的には、割込みプログラム152は、割込みの報告対象のゲストプログラム100が動作している転送元仮想計算機104のゲストメモリ109の中で、転送先仮想計算機107に反映されていない領域を確認し、反映していない領域のデータが、ライブマイグレーション用のデータ転送路(マイグレーション用転送路)を使用して、所定時間以内に転送先仮想計算機107に転送可能かを判定し、所定時間以内に転送可能である場合には、報告を保留する必要がないと判定し、所定時間以内に転送可能でない場合には、報告を保留すべきと判定する。
ここで、判定の基準となる所定時間としては、ライブマイグレーション時にゲストプログラム100、103が停止しても問題ない時間、すなわち、ゲストプログラム100,103の実質的な実行に問題ない時間を500msと仮定した場合には、ゲストプログラム100の停止中にゲストメモリ109の内容を転送先仮想計算機107に反映することができる時間(例えば100ms)として良い。なお、ゲストプログラム100、103が停止しても問題ない時間としては、ストレージ231のディスクシーク時間や、OS内のタイムアウト時間などを考慮し、ゲストプログラム100、103がタイムアウト検出によって停止することがない時間であって良い。
ステップS103の判定により、報告を保留すべきと判定した場合(ステップS103でYes)には、割込みプログラム152は、保留割込みテーブル157に、保留する割込みを示す割込みベクトルを登録し(保留割込みテーブル157の割込みベクトルに対応するビットを1に設定し)、保留データテーブル156に、DMAにより更新されたデータ長(更新データ長)と、このときの時刻(保留時刻)とを保存する(ステップS104)。例えば、保留時刻としては、x86系プロセッサを使用している場合には、TSC (time stamp counter)を使用することができる。また、更新データ長としては、HBA212のようなSCSIデバイスを使用している場合には、ゲストプログラム100が、Fibre channel protocol for SCSI規格で定められているFCP_DL field (FCP data length field)に設定した値から求めることができる。
なお、以前に保留している割込みがある場合には、割込みプログラム152は、保留データテーブル156に記録している更新データ長に新たに保留する割込みに対応する更新データ長を加算した加算後の更新データ長を、新たな更新データ長として記録し、保留時刻は、前回記録した保留時刻のまま値を変えない。
一方、ステップS103の判定により、報告を保留する必要がないと判定した場合(ステップS103でNo)には、割込みプログラム152は、保留データテーブル156に保留している割込みがあるか否か確認し(ステップS105)、保留している割込みがある場合には、保留データテーブル156の保留時刻と現在の時刻との差分から、保留時間を算出する。
割込みプログラム152は、保留データテーブル156の更新データ長を、算出した保留時間で割った値と、マイグレーション用転送路の帯域とを比較する。比較の結果、保留データテーブル156の更新データ長を、算出した保留時間で割った値が、マイグレーション用転送路の帯域よりも大きい場合には、割込みプログラム152は、保留している割込みの保留を続ける。一方、保留データテーブル156の更新データ長を、算出した保留時間で割った値が、マイグレーション用転送路の帯域よりも小さいか、または、等しい場合には、割込みプログラム152は、保留されている割込みが、後述するステップS107で、ゲストプログラム100に報告すべき割込みがあると判定される割込みであると認識する。なお、保留時間が、ゲストプログラム100による割込みタイムアウト時間よりも大きくなる前に、割込みの保留を解除しなくてはならないので、割込みプログラム152は、更新データ長を保留時間で割った値と、マイグレーション用の転送路の帯域の値との比較に関係なく、ゲストプログラム100のタイムアウト時間となる前に、ゲストプログラム100に割込みを上げるようにしている。
ライブマイグレーションでは、後述するステップS304でゲストメモリ109の領域に書込み保護を実施した後において、ゲストプログラム100がゲストメモリ109に更新をかけたページについては、転送先物理計算機201の転送先仮想計算機107に反映して、ゲストプログラム100、103にとって、転送元仮想計算機104と、転送先仮想計算機107とを同じ状態とする必要がある。このような状態にするために、ライブマイグレーションの実行中には、DMAによるゲストメモリ109の更新についても転送先物理計算機201の転送先仮想計算機107のゲストメモリ141に反映させる必要がある。
そこで、本実施形態では、割込みプログラム152は、転送元物理計算機200から割込みプログラム152に上げられるDMA完了の割込み時に、HBA212にゲストプログラム100が教えているDMAテーブルを解析して、DMAにより更新されるゲストメモリ109の領域の先頭アドレスと、領域の大きさとを特定し、この領域の更新内容を転送先仮想計算機107のゲストメモリ141に反映できるようにするために、当該更新の内容を記録するようにしている。すなわち、割込みプログラム152は、割込みを保留する場合であっても、保留しない場合であっても、割込みがDMA完了の割込みである場合には、更新されたゲストメモリ109の領域を、EPT154に記録する(ステップS106)。更新されたゲストメモリ109の領域についてのEPT154への記録方法は、物理プロセッサ210がゲストメモリ109に書込みを行う場合における記録方法と同様であるため、後に併せて説明する。
次いで、割込みプログラム152は、ゲストプログラム100に報告すべき割込みがあるか否かを確認する(ステップS107)。例えば、上述したように、保留データテーブル156の更新データ長を保留時間で割った値が、マイグレーション用転送路の帯域よりも小さいかまたは、等しい場合には、ステップS107でゲストプログラム100に報告すべき割込みがあると判定するように認識されているので、報告すべき割込みがあると判定される。ここで、保留データテーブル156の更新データ長を保留時間で割った値が、マイグレーション用転送路の帯域よりも小さいかまたは、等しい場合とは、保留している割込みに対応するゲストメモリ109の更新されたデータのデータ量が、未反映のデータがゲストメモリ109に滞留することなく転送先物理計算機201に転送できるデータ量であることを意味している。
この結果、ゲストプログラム100に報告すべき割込みがある場合(ステップS107でYes)には、割込みプログラム152は、報告すべき割込みを示す割込みベクトルに対応するIRRテーブル158のビットを1に設定することにより、割込みの報告の要求を行う(ステップS108)。なお、割込みプログラム152は、報告すべき割込みを示す割込みベクトルに対応するIRRテーブル158のビットを1に設定する場合には、当該割込みベクトルに対応する保留割込みテーブル157のビットを0に設定する。
この結果、ステップS207において、Lプロセッサプログラム151に割込みが受信されることとなる。なお、ゲストプログラム100に報告すべき割込みがない場合(ステップS107でNo)には、ゲストプログラム100は、処理をステップS100に進める。
ここで、ゲストプログラム100からLプロセッサプログラム151に制御が移った際に、仮想プロセッサ108の割込みフラグが、割込み許可になっている場合には、Lプロセッサプログラム151が、IRRテーブル158の各ビットを確認し、ビットが1に設定されている場合には、1に設定されているビットに対応する割込みベクトルのうちの最も優先度が高い割込みベクトルに対応するISRテーブル159のビットを1に設定し、ISRテーブル159のビットを1に設定した割込みベクトルに対応するIRRテーブル158のビットを0に設定する。そして、Lプロセッサプログラム151が、ゲストプログラム100に制御を移す際に、ISRテーブル159の1に設定されているビットに対応する割込みベクトルが示す割込みに対する処理を実行するためのゲストプログラム100の割込みハンドラーに制御が移るようにする。
次に、HBA212のDMA帯域制御方法について説明する。なお、DMA帯域制御方法は、ゲストメモリ109に対する書込みの帯域を制御する方法の一例である。
図3は、実施形態に係るHBA転送処理を説明する第1の図である。図4は、実施形態に係るHBA転送処理を説明する第2の図である。
図3は、HBA212のDMA帯域制御を行う場合における各構成の関係を示し、図4は、HBA212のDMA帯域制御を行わない場合における各構成の関係を示している。
ゲストプログラム100は、SCSIコマンドをHBA212に要求する際には、要求(リクエスト)を出す前に、HBA212に対するリクエストを格納するためのリクエストキュー701のゲストメモリ109における先頭アドレスとリクエストキュー701の大きさと、をHBA212に設定する。また、ゲストプログラム100は、HBA212からの応答(レスポンス)を格納するためのレスポンスキュー702のゲストメモリ109における先頭アドレスとレスポンスキュー702の大きさと、をHBA212に設定する。
ここで、リクエストキュー701及びレスポンスキュー702について説明する。
図7は、実施形態に係るHBAのリクエストキューを説明する第1の図である。図8は、実施形態に係るHBAのレスポンスキューを説明する第1の図である。図9は、実施形態に係るHBAのリクエストキューを説明する第2の図である。図10は、実施形態に係るHBAのレスポンスキューを説明する第2の図である。
ゲストプログラム100を実行するプロセッサ210は、図7に示すように、HBA212に実行させるリクエストをリクエストキュー701の最後尾のリクエストの次の空領域に格納する。一方、HBA212は、図7に示すように、リクエストキュー701の先頭のリクエストを取得し、このリクエストに対応するデータをストレージ231から取得する処理を実行する。
また、HBA212は、リクエストを処理した結果であるレスポンスを、図8に示すように、レスポンスキュー702の最後尾のレスポンスの次の空領域に格納する。一方、ゲストプログラム100を実行するプロセッサ210は、レスポンスに対する報告を受け取っている場合には、レスポンスキュー702の先頭のレスポンスを取得する。
図3の説明に戻り、割込みプログラム152は、HBA212からレスポンスの割込みを受信すると(図2のステップS101)、このレスポンスの報告を保留すべきか否かを判定し(図2のステップS103)、その結果、報告を保留すべきと判定した場合(図2のステップS103でYes)には、保留割込みテーブル157に、レスポンスに対応する割込みベクトルを登録する(割込みテーブル157の割込みベクトルに対応するビットに1を設定する)とともに、保留データテーブル156に更新データ長と、保留時刻とを記録する。
この結果、割込みプログラム152により、図2のステップS107で、ゲストプログラム100に報告すべき割込みがあると判定されるまで、保留割込みテーブル157に登録された割込みベクトルに対応するIRR158のビットが1に設定されることがなく、ISR159のこの割込みベクトルに対応するビットが1に設定されることがない。
これにより、ゲストプログラム100を実行するプロセッサ210に対して、この割込みベクトルが示すレスポンスについての報告が行われないので、ゲストプログラム100は、レスポンスキュー702からレスポンスを取り出さない。したがって、ゲストプログラム100が取得するデータの実質的な帯域を減少することができる。
このようなレスポンスについての割込みの報告の保留回数が多くなると、図10に示すように、用意されているレスポンスキュー702がレスポンスで一杯になってしまう。この結果、HBA212は、リクエストを処理した処理結果であるレスポンスをレスポンスキュー702に格納することができなくなってしまうので、HBA212は、リクエストキュー701から新たなリクエストを取得することを停止する。
このように、HBA212がリクエストキュー701からリクエストを取得することを停止すると、この後、図9に示すように、リクエストキュー701がリクエストで一杯になってしまう。この結果、ゲストプログラム100によるリクエストが停止することとなる。
このように、DMA完了のレスポンスの報告を保留して遅らせることで、DMAの実質的な転送帯域を制御して、DMA転送によるゲストメモリ109への書込みの転送帯域を低減することができる。
一方、ステップS103の判定の結果、報告を保留すべきでないと判定した場合(図2のステップS103でNo)には、図2のステップS107で、ゲストプログラム100に報告すべき割込みがあると判定されることとなるので、図4に示すように、割込みプログラム152は、レスポンスの報告を示す割込みベクトルに対応するIRR158のビットを1に設定する。これにより、この後、ISR159のこの割込みベクトルに対応するビットが1に設定され、ゲストプログラム100にレスポンスの報告がされることとなり、ゲストプロラグム100を実行するプロセッサ210が、レスポンスキュー702の先頭のレスポンスを取得する。
図5は、実施形態に係るDMAデータ転送量および平均DMAデータ転送量の関係を説明する第1の図である。図6は、実施形態に係るDMAデータ転送量および平均DMAデータ転送量の関係を説明する第2の図である。
図5は、図4に示すように、割込みの保留制御を行っていない場合におけるDMAデータ転送量および平均DMAデータ転送量の関係を示し、図6は、図3に示すように、割込みの保留制御を行った場合におけるDMAデータ転送量および平均DMAデータ転送量の関係を示している。ここで、図5及び図6においては、横軸に時間をとり、その軸上においてHBA212による割込み(HBA INT)と、プロセッサ210によるタイマ割込み(Timer INT)との発生時点を示している。HBA INTは、リクエストを処理した後に、割込みプログラム152にレスポンスを報告する場合に発生する。タイマ割込みは、例えば、所定の時間毎に発生する。このタイマ割込みは、ゲストプログラム100に対して割込みを報告する際の契機となる。
図5及び図6においても、HBA212が1つのリクエストを処理する毎にゲストメモリ109にDMA転送するデータ転送量(DMAデータ転送量)は、同じデータ量となっている。
図5においては、割込みプログラム152がレスポンスについてのHBA INTを受けた場合に、各タイマ割込みによりレスポンスをゲストプログラム100に報告し、HBA212により次のDMA転送が行われる。したがって、単位時間当たりのDMAデータ転送量を示す平均DMAデータ転送量は、図5に示すようになる。
ここで、ライブマイグレーションを実行している場合には、ライブマイグレーション用転送路の帯域(すなわち、通信速度)よりも平均DMAデータ転送量が小さければ、ゲストメモリ109におけるDMA転送で更新されたデータの全てを、転送先物理計算機201の転送先仮想計算機107のゲストメモリ141に複製することができる。一方、平均DMAデータ転送量よりもライブマイグレーション用転送路の帯域よりも平均DMAデータ転送量が大きければ、ゲストメモリ109におけるDMA転送で更新された全てのデータを、転送先物理計算機201の転送先仮想計算機107のゲストメモリ141に複製することができず、一部のデータが転送元物理計算機200(具体的には、ゲストメモリ109)に滞留してしまうこととなる。
図6においては、割込みプログラム152がレスポンスについてのHBA INTを受けた場合に、ゲストプログラム100へのHBA INTの報告を保留する場合がある。これにより、リクエストキュー701にリクエストが溜まり、レスポンスキュー702にレスポンスが溜まることとなり、DMA転送の実行が一時的に停止される。したがって、平均DMAデータ転送量は、図6に示すように、図5の平均DMAデータ転送量よりも低くなる。これにより、割込み保留制御を行わないと、DMA転送で更新された全てのデータを、転送先物理計算機201の転送先仮想計算機107に複製することができない場合であっても、割込み保留制御を行うことにより、DMA転送で更新された全てのデータを、転送先物理計算機201の転送先仮想計算機107に適切に複製することができるようになる。
以上に、DMA転送における帯域制御方法を説明した。
次に、物理プロセッサ210によるゲストメモリ109のデータの更新時における書込みの帯域制御方法を説明する。
ライブマイグレーションでは、ゲストプログラム100、103が動作していない時間を短くすることで、ゲストプログラム100、103が停止していないように、すなわち実質的に動作しているように見せている。実施形態では、実質的に動作しているように見せるために、ゲストプログラム100の停止時間が500ms以下となるようにしている。
ゲストプログラム100の停止時間を短くしているので、ライブマイグレーション中に、ゲストプログラム100が動作することとなり、ゲストプログラム100によりゲストメモリ109の内容が書き換えられることがある。ライブマイグレーションにおいては、このように書き換えられたゲストメモリ109の内容も、転送先物理計算機201上の転送先仮想計算機107のゲストメモリ141に反映させる必要がある。
更に、ゲストプログラム100がゲストメモリ109に対して更新できないようにした後において、転送先仮想計算機107に反映させるために送信するデータ量を、少なくする必要がある。
ゲストプログラム100がゲストメモリ109に対して更新できないようにした後において送信するデータ量としては、本実施形態では、例えば、100ms以内で転送先物理計算機201に転送できる量としている。
また、ゲストメモリ109以外のLPARプログラム153の内部状態(転送元仮想計算機104を構成するためのプログラム内部で保存している変数やデータの値)の転送や、その他の割込み停止処理等は、停止時間(500ms)−ゲストメモリ109に関するデータの転送時間(100ms)=400ms以内に収まるようにしている。
図2の説明に戻り、LPARプログラム153による処理を説明する。LPARプログラム153による処理は、図2の右から2番目のフローチャートである。
転送元のLPARプログラム153は、転送元LPARムーバ101からライブマイグレーション開始指示(図2のステップS400)を受けると、ゲストメモリ109に対する書込み保護を行う。具体的には、LPARプログラム153は、転送元仮想計算機104上で動作しているゲストプログラム100がゲストメモリ109へ書込みしようとした領域が分かるように、書込み例外を物理プロセッサ210に報告し、ゲストプログラム100からLプロセッサプログラム151に制御が切り替わるようにする(ステップS300)。
ここで、物理プロセッサ210、220が管理するEPT(154、164、174、184)について説明する。
物理プロセッサ210、220は、EPT(154、164、174、184)に、仮想計算機(104、105、106、107)上で動作するプログラム(100、101、102、103)が使用するゲストメモリ(109、121、131、141)のアドレス(ゲストアドレス:プログラムが、認識しているメモリやデバイス等の番地)と、ハイパバイザ(190、191)が使用するアドレス(ハイパバイザアドレス:ハイパバイザが認識しているメモリやデバイス等の番地)との対応関係を定義する。すなわち、EPT(154、164、174、184)を用いることにより、ゲストアドレスをハイパバイザアドレスに変換することができる。
図12は、実施形態に係るEPTを説明する図である。なお、図12は、4KB単位で、ゲストアドレスと、ハイパバイザアドレスとを変換する場合におけるEPTを示している。
EPT(154、164、174、184)は、図12に示すように、複数段(例えば、4段)の複数のテーブルにより構成されている。なお、EPT154、164、174、184の構成は同様であるので、以下は、EPT154を例に説明する。EPT154は、上位段のテーブルから順に、EPT PML4テーブル302と、1以上のEPT PDPテーブル303と、1以上のEPT PDテーブル304と、1以上のEPT PTテーブル305とを有する。また、EPT154は、EPTP(extended page table pointer)301を有する。
EPTP301は、EPT PML4テーブル302が格納されている先頭ハイパバイザアドレス(ハイパバイザアドレスの12ビット目から51ビット目までのビット群のみ)を格納する。なお、ハイパバイザアドレスの52ビット目から63ビット目は0であり、0ビット目から11ビット目はオフセット(ゲストメモリ300の0ビット目から11ビット目のビット群と同じ)であるので、EPTP301に格納されたハイパバイザアドレスの12ビット目から51ビット目までのビット群から、ハイパバイザアドレスを特定することができる。
各段のテーブル(302、303、304、305)は、それぞれ1つが、例えば、4KBの大きさであり、各テーブルには、例えば、512個のエントリ(登録行)が格納される。各テーブルにおけるエントリを示すインデックスの大きさは、エントリが512個であるので、9ビットとなっている。
各テーブルの512個のエントリの内で、ハイパバイザアドレス306への変換のために使用するエントリは、ゲストアドレス300の所定の範囲に格納されているインデックスに基づいて特定される。EPT PML4テーブル302のインデックス(EPT PML4テーブルインデックス)は、ゲストアドレス300の47ビット目から39ビット目までのビット群であり、EPT PDPテーブル303のインデックス(EPT PDPテーブルインデックス)は、ゲストアドレス300の38ビット目から30ビット目までのビット群であり、EPT PDテーブル304のインデックス(EPT PDテーブルインデックス)は、ゲストアドレス300の29ビット目から21ビット目までのビット群であり、EPT PTテーブル305のインデックス(EPT PTテーブルインデックス)は、ゲストアドレス300の20ビット目から12ビット目までのビット群である。
EPT PML4テーブル302の各エントリには、当該エントリを指し示すEPT PML4テーブルインデックスを含むゲストアドレスの変換時に参照すべき、EPT PDPテーブル303の先頭ハイパバイザアドレス(ハイパバイザアドレスの12ビット目から51ビット目までのビット群)が格納されている。
また、EPT PDPテーブル303の各エントリには、当該エントリを指し示すEPT PDPテーブルインデックスを含むゲストアドレスの変換時に参照すべき、EPT PDテーブル304の先頭ハイパバイザアドレス(ハイパバイザアドレスの12ビット目から51ビット目までのビット群)が格納されている。
また、EPT PDテーブル304の各エントリには、当該エントリを指し示すEPT PDテーブルインデックスを含むゲストアドレスの変換時に参照すべき、EPT PTテーブル305の先頭ハイパバイザアドレス(ハイパバイザアドレスの12ビット目から51ビット目までのビット群)が格納されている。
図13は、実施形態に係るEPT中のEPT PTテーブルのエントリを説明する図である。
EPT PTテーブル305の各エントリには、当該エントリを指し示すEPT PTテーブルインデックスを含むゲストアドレスに対応するハイパバイザアドレス(ハイパバイザアドレスの12ビット目から51ビット目までのビット群)が格納されている。
また、EPT PTテーブル305のエントリ(EPT PTエントリ)400の1ビット目は、当該エントリが示す領域に対するデータの書込みを許可するか否かを示すビットである。このビットが0である場合には、当該エントリが示す領域は書込み保護の対象(書込み不許可)であることを意味しており、ゲストプログラム100がゲストメモリ109の対応する領域に書込みを実施しようとした際には、物理プロセッサ210に書込み例外が報告され、ゲストプログラム100からLプロセッサプログラム153に制御が移される。ただし、書込み例外を物理プロセッサ210に報告するのは、ゲストメモリ109のうち、EPT PTエントリ400で変換することのできるゲストアドレスに対応する4KBの空間(ページ)に書込みを行った場合である。図2のステップS300において、LPARプログラム153によりEPT PTエントリ400の1ビット目に0が設定される。
更に、本実施形態では、EPT PTエントリ400における、物理プロセッサ210、220が無視するEPT154の無視ビット(ignore bit)に、以下に示す情報を埋め込むようにしている。なお、無視ビットは、物理プロセッサ210、220に無視されるビットであるので、その値を1にしても、0にしても、物理プロセッサ210、220の動作に影響を及ぼさない。
ゲストアドレスには、ゲストメモリ(109、121、131、141)を示すアドレスと、HBA(212、223)やNIC(213、222)のレジスタなどのMMIO(memory mapped input output:ゲストアドレス空間に割り当てられた入出力装置)を示すアドレスとの2種類がある。
実施形態においては、MMIO領域よりもゲストメモリ領域の方が、はるかに大きな領域である。また、データ更新量の多いゲストプログラム100、103があるので、ゲストメモリ領域は、MMIO領域よりもデータの更新量が多い。そこで、本実施形態では、ゲストメモリ領域について帯域制限を行うようにしている。
EPT154には、ゲストメモリ領域と、MMIO領域とのそれぞれが割り当てられている。EPT154におけるアドレスに、どちらの領域が割り当てられているのかは、EPT154が取り扱うハイパバイザアドレスとゲストアドレスとから判定する方法も考えられる。しかしながら、本実施形態では、ゲストメモリ領域であることがEPT154の情報だけで容易且つ迅速に分かるように、EPT154のエントリにおける無視ビットを、ゲストメモリ領域であるのか、それともMMIO領域(又は、未定義領域)であるのかを示すためのビットとしている。
本実施形態では、図13に示すようにEPT PTエントリ400の62ビット目を、ゲストメモリ領域であるのか、それともMMIO領域(又は、未定義領域)であるのかを示すためのビットとしている。本実施形態では、ビットが1である場合には、ゲストメモリ領域であることを示し、0である場合には、MMIO領域(又は、未定義の領域)であることを示す。
更に、本実施形態では、EPT154のエントリの無視ビットを、ゲストプログラム100によるゲストメモリ109が示す領域への更新が転送先仮想計算機107へ反映されていないか否かを示すビットとしている。
本実施形態では、図13に示すように、EPT PTエントリ400の63ビット目を、更新が転送先仮想計算機107へ反映されているのか否かを示すビットとしている。本実施形態では、ビットが1である場合には、当該エントリに対応する領域の更新が転送先仮想計算機107に反映されていないことを示し、0である場合には、当該エントリに対応する領域の更新が反映されている、または、ライブマイグレーションを実施していないことを示す。なお、EPT PTエントリ400の63ビット目のビットは、DMA転送によりゲストメモリ109へ書込みが行われた場合にも、同様に、その書込みによる更新が転送先仮想計算機107に反映されていないことを示すために使用される。
以上、4KB単位で、ゲストアドレスと、ハイパバイザアドレスとを変換する場合を説明したが、例えば、2MB単位で、ゲストアドレスと、ハイパバイザアドレスとを変換するようにしてもよい。この場合におけるEPT154には、EPT PTテーブル305を備えなくてよい。また、EPT PDテーブル304のエントリを、以下のようにすれば良い。
図14は、実施形態に係るEPT中のEPT PDテーブルのエントリを説明する図である。図14は、2MB単位で、ゲストアドレスと、ハイパバイザアドレスとを変換する場合におけるEPT PDテーブルのエントリを示している。
EPT PDテーブル304のエントリ(EPT PDエントリ)401の7ビット目には、1が格納され、21ビット目から51ビット目までには、当該エントリを指し示すEPT PDテーブルインデックスを含むゲストアドレスに対応するハイパバイザアドレス(ハイパバイザアドレスの21ビット目から51ビット目までのビット群)が格納されている。なお、ゲストアドレスに対応するハイパバイザアドレスは、52ビット目から63ビット目は0となり、0ビット目から20ビット目はオフセット(ゲストメモリ300の0ビット目から20ビット目のビット群と同じ)となり、20ビット目から51ビット目は、EPT PDテーブル304で参照したエントリに含まれている21ビット目から51ビット目までのビット群となる。
EPT PDエントリ401の1ビット目は、エントリに対応する領域に書込みを許可するか否かを示すビットである。このビットが0である場合には、エントリに対応する領域は書込み保護の対象(書込み不許可)であることを意味しており、ゲストプログラム100がゲストメモリ109のその領域に書込みを実施した際には、物理プロセッサ210に書込み例外が報告され、ゲストプログラム100からLプロセッサプログラム153に制御が移される。ただし、書込み例外を物理プロセッサ210に報告するのは、ゲストメモリ109のうち、EPT PDエントリ401で変換することのできるゲストアドレスの2MBの空間(ページ)に書込みを行った場合である。
更に、EPT PDエントリ401の62ビット目を、ゲストメモリ領域であるのか、それともMMIO領域(又は、未定義領域)であるのかを示すためのビットとしている。本実施形態では、ビットが1である場合には、ゲストメモリ領域であることを示し、0である場合には、MMIO領域(又は、未定義の領域)であることを示す。
更に、EPT PDエントリ401の63ビット目を、エントリに対応する領域の更新が転送先仮想計算機107へ反映されているのか否かを示すビットとしている。本実施形態では、ビットが1である場合には、エントリに対応する領域の更新が反映されていないことを示し、0である場合には、エントリに対応する領域の更新が反映されている、または、ライブマイグレーションを実施していないことを示す。なお、EPT PDエントリ401の63ビット目のビットは、DMAによりゲストメモリ109へ書込みが行われた場合にも、同様に、エントリに対応する領域の更新が転送先仮想計算機107に反映されていないことを示すために使用される。
図2の説明に戻り、ステップS300でEPT154に書込み不許可設定をした後には、物理プロセッサ210(Lプロセッサプログラム151)は、ゲストアドレスと、ハイパバイザアドレスとの変換結果を一時的に記憶している記憶装置(EPT cache)を無効化する(ステップS201)。
また、ステップS300でEPT154に書込み不許可設定をした後には、LPARプログラム153は、以下に示すように、実HBA仮想ポート111と、ダミーHBA仮想ポート112との切替を行う(ステップS301)。
実HBA仮想ポート111と、ダミーHBA仮想ポート112との切替を詳細に説明する。
図17は、実施形態に係る実HBA仮想ポートの使用時における、ゲストアドレスと、ハイパバイザアドレスとの対応関係を示す図である。図18は、実施形態に係るダミーHBA仮想ポートの使用時における、ゲストアドレスと、ハイパバイザアドレスとの対応関係を示す図である。
図17に示すように、実HBA仮想ポート111を使用している際には、ゲストメモリ109には、実HBA仮想ポート111に関する制御情報を格納する実仮想ポート制御テーブル500が格納されている。また、ダミーHBA仮想ポート112に関する制御情報を格納するダミー仮想ポート制御テーブル501は、ハイパバイザメモリ211のゲストメモリ109と異なる領域に格納されている。
ここで、ステップS300でEPT154に書込み不許可設定をした後には、ゲストプログラム100がHBA212の実仮想ポート制御テーブル500へ書込みしたことを物理プロセッサ210により検出できる。
まず、LPARプログラム153は、ダミーHBA仮想ポート112の状態を、FC−SW230へログイン(login)している実HBA仮想ポート111の仮想ポートリンク状態と同じ状態にした後に、実仮想ポート制御テーブル500への書込みを検出できる状態にし、ゲストプログラム100からの書込みがない間に、実仮想ポート制御テーブル500の内容をダミー仮想ポート制御テーブル501へ全て複製する。
次いで、LPARプログラム153は、ダミー仮想ポート制御テーブル501と実仮想ポート制御テーブル500との内容が等しい間に、EPT154を書き換えて、実仮想ポート制御テーブル500のゲストアドレスに対応するハイパバイザアドレスが、図18に示すように、ダミー仮想ポート制御テーブル501のハイパバイザアドレスに対応するように切り替える。
このゲストアドレスと、ハイパバイザアドレスとの対応関係の切り替えにより、ゲストプログラム100が実仮想ポート制御テーブル500と認識しているゲストメモリ領域を、HBA212がダミー仮想ポート制御テーブル501と認識している領域に置き換えることができる。
このようにすることで、ゲストプログラム100は、実仮想ポート制御テーブル500に要求を出したと認識しているが、実際にはダミー仮想ポート制御テーブル501に要求を出すことなり、ゲストプログラム100に認識されることなく、実HBA仮想ポート111からダミーHBA仮想ポート112へデータの流れを切り替えることができる。
ここで、上記のようにハイパバイザ190がEPT154を操作することより、ポートを切り替える際には、HBA212の実仮想ポート制御テーブル500の内容と、ダミー仮想ポート制御テーブル501の内容を同じ状態にして切り替える必要がある。ゲストプログラム100により、実仮想ポート制御テーブル500へ書込みが行われると、実仮想ポート制御テーブル500の内容を、ダミー仮想ポート制御テーブル501へ複製しなおさなくてはならない。
そこで、ゲストプログラム100がゲストメモリ109への書込みの帯域制御を行うのと同様に、実仮想ポート制御テーブル500への書込みの帯域制御を行う。この書込みの帯域制御の処理を、図2を参照して説明する。
ステップS200で実行されているゲストプログラム100がゲストメモリ109に書込みを実施すると、書込み対象の領域は書込み保護(書込み不許可)とされていれば、Lプロセッサプログラム151に制御が移り、書込みが検出される(ステップS202)。
書込みを検出したLプロセッサプログラム151は、ゲストアドレスを4KB単位で管理している場合には、書込み対象の領域に対応するEPT PTエントリ400の63ビット目(ゲストアドレスを2MB単位で管理している場合には、EPT PDエントリ401の63ビット目)のビットに、書込み保護中に書込みがあったことを示す1を記録する(ステップS203)。
ステップS203の後、Lプロセッサプログラム151は、転送先物理計算機201に反映されていない領域のデータ量と、規定時間(例えば、100ms)以内にデータを転送先物理計算機201に送り出せる量とを比較する(ステップS204)。この比較結果が、反映されていない領域のデータ量の方が大きい場合には、Lプロセッサプログラム151は、この領域を書込み不許可のままにし、当該領域のゲストアドレスと、このときの時刻(例えば、tsc)を保留データテーブル156に記録する。さらに、Lプロセッサプログラム151は、自身を休止状態(プログラム内の命令を物理プロセッサ210で実行させない状態)にする(ステップS206)。
休止状態にあるLプロセッサプログラム151は、タイマによる定期的に上がる割込みやHBA212から上がる割込みなどで、起こされる(ステップS207)。割込みで起こされたLプロセッサプログラム151は、割込みを報告するために、ゲストプロセッサ100に制御を返す(ステップS200)。
ゲストプログラム100に割込みを報告する処理をした後に、ゲストプログラム100が書込み不許可領域に書込みを行うと、再びLプロセッサプログラム151に制御が渡される(ステップS202)。この後、Lプロセッサプログラム151は、今回の時刻tscと、以前に実行したステップS204で保留データテーブル156に記録しておいた時刻tscとの差を求める(ステップS204)。
この差が、4KBのデータを転送先物理計算機201へ十分転送可能な時間である場合には、Lプロセッサプログラム151は、反映されていない領域に対応するEPT PTエントリ400の1ビット目について、書込み不許可を解除して、書込み可能に変更する(ステップS205)。例えば、イーサネットスイッチ232を介した転送路を、1Gbpsの理論転送帯域を持つ転送路とする場合、40us以上であれば、4KBのデータを十分転送可能であるので、差が40us以上であれば、十分転送可能な時間であると判定する。
更に、DMAによる書込みと、ゲストプログラム100に仮想的に見せている仮想プロセッサ108の数を考慮にいれる必要がある。
本実施形態では、Lプロセッサプログラム151は、DMAによる書込み終了割込みを保留している仮想プロセッサ108の数を数え、40usに対して保留している仮想プロセッサ108の数を掛け合わせた値を算出し、算出した当該値に40usを足した値を十分転送可能な時間の基準としている。
また、割込みを保留してから十分な時間が経過していない場合においても、ゲストプログラム100がタイマ割込みの処理をしないとゲストプログラム100の時刻を狂わす原因となる可能性があるので、Lプロセッサプログラム151は、ゲストプログラム100が割込み処理中であると認識できる場合は、書込み不許可を解除してゲストプログラム100に制御を移すようにしている。
図15は、実施形態に係るゲストプログラムによるゲストメモリへの書込み処理を説明する第1の図である。図16は、実施形態に係るゲストプログラムによるゲストメモリへの書込み処理を説明する第2の図である。図15は、ゲストメモリ109への書込みの帯域制御を行っている場合の状態を示し、図16は、ゲストメモリ109への書込みの帯域制御を行っていない場合の状態を示す。
ここで、ゲストプログラム100が割込み処理中であることは、図15に示すように、データを記録していたゲストアドレスと、ゲストプログラム100からLプロセッサプログラム151に切り替わる原因を作ったゲストアドレスとが不一である場合、仮想プロセッサ108に割込み禁止状態フラグ600が設定されている場合、又はISRテーブル159の割込みベクトルに対応するビットが0でない場合から判定することができる。割込み禁止状態フラグ600は、ゲストプログラム100が設定し、フラグ(flag)が1の場合には、割込み報告が可能な状態を示し、フラグが0の場合には、割込み報告を禁止している状態を示している。割込み禁止状態フラグ600は、Lプロセッサプログラム151が保持している内部変数であり、ゲストプログラム100には、仮想プロセッサ108の内部レジスタとして仮想的に見せている。
なお、ゲストアドレステーブル155、保留割込みテーブル157、IRRテーブル158、ISRテーブル159は、ゲストプログラム100に仮想的に見せる仮想プロセッサ108の数分用意しているので、割込みを保留している仮想プロセッサ108の数の判定や、仮想プロセッサ108ごとの割込みの制御を行うことができる。
上記のように、書込みが発生した領域について書込み不許可状態から書込み可能状態にする時間を制御することで、一定時間内にゲストプログラム100がゲストメモリ109へ書き込むデータ量の帯域を制御(例えば、データ量の帯域を低減)することができる。
引き続いて、図2のステップS301以降の処理について説明する。
LPARプログラム153は、ステップS301で、使用する仮想ポートを切り替えた後に、ダミーHBA仮想ポート112のリンク状態(FC−SW230にloginし、LUへの読み書きが可能である状態など)を転送先物理計算機201に転送する前に、仮想ポートのリンク状態を転送する際には、ゲストメモリ109への書込みを検出する必要がないので、この間、ゲストメモリ109に対する書込み保護を解除する(ステップS302)。なお、この書込み保護の解除時にも、EPT154を書き換えるので、物理プロセッサ210(Lプロセッサプログラム151)はゲストアドレスと、ハイパバイザアドレスとの変換結果を一時的に記憶しているキャッシュを無効化する(ステップS201)。
仮想ポートのリンク情報を転送した後、ゲストメモリ109を転送先仮想計算機107に反映する必要があるので、LPARプログラム153は、反映できていないゲストメモリ領域を検出するために、再びEPT154の設定を変えて、ゲストメモリ領域を書込み不許可な状態(書込み保護状態)にし、ゲストプログラム100によるゲストメモリ109への更新を検知できる状態とする(ステップS304)。
次に、LPARプログラム153は、全てのゲストメモリ109のデータを転送先仮想計算機107に送り出し、次に、書き換えがあった領域、すなわち、EPT PTエントリ400又はEPT PDエントリ401の63ビット目が1になっている領域のデータを、転送先仮想計算機107に送り出す(ステップS305)。このステップS305では、LPARプログラム153は、EPT PTエントリ400又はEPT PDエントリ401の63ビット目が1であり、且つ、書込み不許可状態(すなわち、1ビット目が0である)である領域については、データを転送中に書き換えがなかったと判断できるので、EPT PTエントリ400又はEPT PDエントリ401の63ビット目を1から0に変更する。
LPARプログラム153から、ゲストメモリ109への転送要求を受けたLPARムーバ101は、ライブマイグレーションで使用する転送路(例えば、イーサネットスイッチ232を介した転送路)へデータを送信する(ステップS401)。
ステップS305でゲストメモリ109の全領域を一通り転送し終わった後に、LPARプログラム153は、転送先仮想計算機107に反映されていないデータのデータ量と、ライブマイグレーションで使用する転送路の帯域とを比較し、反映されていないデータを100ms以内に転送可能であるか否かを判定する(ステップS306)。
この結果、転送可能と判定した場合(ステップS306でYes)には、LPARプログラム153は、ゲストメモリ109からのデータ転送(メモリ転送)を終了し、転送元LPARムーバ101に、メモリ転送が終了したことを知らせる(ステップS307)。転送元LPARムーバ101は、メモリ転送終了を受け付ける(ステップS402)。
次いで、LPARプログラム153は、Lプロセッサプログラム151へ、プログラムの停止要求をする(ステップS308)。ここで、Lプロセッサプログラム151を停止するとは、Lプロセッサプログラム151を、命令の実行を行えない状態とするとともに、割込みプログラム152からの割込み要求に対しても、再びゲストプログラム100を実行させない状態とすることである。
LPARプログラム153から停止要求を受けたLプロセッサプログラム151は、停止状態に入る(ステップS208)。このように、Lプロセッサプログラム151が停止状態である間は、ゲストプログラム100も動けないので、ゲストメモリ109への更新は行われない。更に、DMAによるゲストメモリ109への書込みについても、新たなDMA転送の要求がなくなるので、HBA212などへの外部装置に出されたDMA要求に対する応答が全て報告されれば、ゲストメモリ109への書込みが行われなくなる。
このゲストメモリ109への書込みが一切なくなった状態で、LPARプログラム153は、転送先仮想計算機107に反映されていないゲストメモリ領域のデータを転送する要求を転送元LPARムーバ101に渡す(ステップS309)。ここで、ステップS309で対象とするデータには、仮想的にゲストプログラム100に見せている実HBA仮想ポート111の状態やVNIC110等のデバイス状態のデータも含まれる。このステップS309の対象とする全てのデータの転送を終えると、転送先物理計算機201には、転送元LPAR150と同じ内容の転送先LPAR180が存在することとなる。
データの転送要求を受けた転送元LPARムーバ101は、ライブマイグレーション用の転送路へデータを転送する(ステップS403)。
LPARプログラム153は、ステップS309での全てのデータの転送を終えると、データ送信完了を送信元LPARムーバ101に報告する(ステップS310)。
データ送信完了の報告を受けた送信元LPARムーバ101は、転送先物理計算機201に複製したLプロセッサプログラム181を起動させる等のLPAR起動要求を転送先LPARムーバ102に送信する(ステップS404)。このLPAR起動要求により、転送先物理計算機201には、転送先仮想計算機107が構築され、ゲストプログラム103が実行されることとなる。
転送先LPARムーバ102が、転送先のLプロセッサプログラム181の起動をかけた後に、転送元LPARムーバ101は、終了要求をLPARプログラム153に送信する。LPARプログラム153は、使用していたメモリの開放やダミーHBA仮想ポート112の使用停止などの終了処理を実行し、終了処理要求をLプロセッサプログラム151に送信し、自身を停止する(ステップS311)。Lプロセッサプログラム151は、終了処理要求を受信すると(ステップS209)、使用していたメモリの開放などの終了処理を実行し(ステップS210)、自身を停止する。
次に、転送先の物理計算機201の処理動作を説明する。
図11は、実施形態に係る転送先物理計算機上で動作するプログラムにより実行される処理のフローチャートである。
転送先物理計算機201では、転送先LPARムーバ102が転送元物理計算機200からライブマイグレーションの開始を受け取ると、LPARプログラム183に、転送先LPAR180の作成を依頼する(ステップS510)。
作成依頼を受けたLPARプログラム183は、転送先LPAR180を作成する(ステップS500)。この時点では、転送先LPAR180は、転送元LPAR150と同じ内容及び状態となっていない。すなわち、この後、転送先LPAR180がゲストプログラム103(ゲストプログラム100の複製)に提供する実HBA仮想ポート143の状態、及びゲストメモリ141の内容の全てを、転送元LPAR150がゲストプログラム100に提供していた内容及び状態と等しくするための処理が行われる。
転送先LPAR180のこれらの状態及び内容を等しくするために、転送元物理計算機200から転送路を介して送られるデータを転送先LPARムーバ102が受信し(ステップS511)、LPARプログラム183が受信したデータを、実HBA仮想ポート143の状態として反映する(ステップS501)とともに、ゲストメモリ141の内容として反映する(ステップS502)。
上述したように、転送元仮想計算機104と同一の複製とする転送先仮想計算機107を作成するために必要な全てのデータを転送先物理計算機201に送り終えると、転送元LPARムーバ101は、転送先LPARムーバ102にLPAR起動要求を投げる(ステップS404)ので、転送先LPARムーバ102は、LPAR起動要求を受信すると、LPARプログラム183に、Lプロセッサプログラム181を起動するように要求する(ステップS512)。LPARプログラム183は、転送先LPARムーバ102から起動要求を受け取ると、Lプロセッサプログラム181に開始要求を送信する(ステップS503)。ここで、Lプロセッサプログラム181は、転送先LPAR180の作成時から、プログラム停止状態(ステップS208)として待機している。
Lプロセッサプログラム181は、LPARプログラム183から開始要求を受けると、停止状態から動作を開始し、その後、ゲストプログラム103に制御を変える(ステップS200)。この後、Lプロセッサプログラム181は、転送元のLプロセッサプログラム151のステップS207と同様な処理を行う。
なお、転送先の割込みプログラム172は、転送元の割込みプログラム152における帯域制御に関わる処理以外の処理と同様な処理(ステップS100、S101、S102、S107、S108)を行う。これにより、転送先物理計算機201において、転送元仮想計算機104と同一の転送先仮想計算機107が構築されて動作し、転送先仮想計算機107がゲストプログラム101と同じゲストプログラム103を実行することとなる。これにより、転送元物理計算機200の仮想計算機が、転送先物理計算機201に移動されたこととなる。
なお、本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
100、103 ゲストプログラム、101 転送元LPARムーバ、102 転送先LPARムーバ、104 転送元仮想計算機、105 転送元シャドウ仮想計算機、106 転送先仮想計算機、107 転送先シャドウ仮想計算機、200 転送元物理計算機、201 転送先物理計算機、220 FC−SW、231 ストレージ、233 イーサネットスイッチ。

Claims (15)

  1. 第1物理計算機と、
    前記第1物理計算機に接続された第2物理計算機と
    を備え、
    前記第1物理計算機は、制御デバイスと、前記制御デバイスに接続される記憶デバイスとを有し、
    前記第1物理計算機の前記制御デバイスは、仮想計算機を構築し、前記仮想計算機上で所定のゲストプログラムを実行可能であり、
    前記記憶デバイスの一部の領域は、前記仮想計算機における記憶デバイスである仮想記憶デバイスとして用いられており、
    前記制御デバイスは、
    前記第1物理計算機の前記仮想計算機を、前記ゲストプログラムを実質的に実行させつつ、前記第2物理計算機に移動させるライブマイグレーションを実行する際に、前記仮想計算機に割り当てられた前記仮想記憶デバイスに対する一定時間におけるデータの書込み量を低減するように制御する
    計算機システム。
  2. 前記第1物理計算機は、前記記憶デバイスに対して、前記制御デバイスによらずデータを格納可能な転送デバイスを有し、
    前記制御デバイスは、
    前記転送デバイスに対して前記ゲストプログラムによるデータ取得要求を発行し、
    前記転送デバイスから前記データ取得要求に対する応答であるデータ取得応答があった場合に、前記データ取得応答があったことを前記ゲストプログラムに報告するための割込みを一時的に保留する
    請求項1に記載の計算機システム。
  3. 前記制御デバイスは、
    前記データ取得応答があったことを前記ゲストプログラムに報告するための割込みを一時的に保留した場合に、前記データ取得応答に対応する取得したデータのデータ長と、保留を行っている保留時間とに基づいて、当該データ取得応答の報告のための割込みの保留を制御する
    請求項2に記載の計算機システム。
  4. 前記制御デバイスは、
    前記データ取得応答に対応する取得したデータのデータ長と、保留を行っている保留時間とに基づいて、前記当該データ取得応答の報告のための割込みの保留を解除し、
    前記データ取得応答の報告のための割込みを実行する
    請求項3に記載の計算機システム。
  5. 前記制御デバイスは、
    前記ゲストプログラムにおいて前記データ取得要求に対するタイムアウトとなる前に、前記データ取得要求に対応する前記データ取得応答の報告のための割込みを行う
    請求項2に記載の計算機システム。
  6. 前記制御デバイスは、
    前記ライブマイグレーションの実行時の所定の時点に、前記仮想記憶デバイスを、データの書込みを禁止する書込み保護状態とする
    請求項2に記載の計算機システム。
  7. 前記制御デバイスは、
    前記仮想記憶デバイスに対する書込みデータのデータ量が所定値以下の場合に、前記仮想記憶デバイスの前記書込み保護状態を解除する
    請求項6に記載の計算機システム。
  8. 前記制御デバイスは、
    前記仮想記憶デバイスにおける更新が発生した領域を特定可能な情報を前記記憶デバイスに格納し、
    前記仮想記憶デバイスの更新された領域のデータを、前記第2物理計算機に送信する
    請求項1乃至請求項7のいずれか一項に記載の計算機システム。
  9. 前記制御デバイスは、
    前記第2物理計算機に対して、前記仮想計算機と同じ新たな仮想計算機を構築するために必要なデータの転送を完了した後に、前記新たな仮想計算機を起動させる指示を行う
    請求項8に記載の計算機システム。
  10. 制御デバイスと、前記制御デバイスに接続される記憶デバイスとを有する物理計算機上で仮想計算機を構築する仮想化機構であって、
    前記物理計算機の前記制御デバイスは、前記仮想計算機上で所定のゲストプログラムを実行可能であり、
    前記記憶デバイスの一部の領域は、前記仮想計算機における記憶デバイスである仮想記憶デバイスとして用いられており、
    前記仮想化機構は、
    前記物理計算機に、
    前記物理計算機の前記仮想計算機を、前記ゲストプログラムを実質的に実行させつつ、他の物理計算機に移動させるライブマイグレーションを実行させる際に、前記仮想計算機に割り当てられた前記仮想記憶デバイスに対する一定時間におけるデータの書込み量を低減させるように制御する
    仮想化機構。
  11. 前記物理計算機は、前記記憶デバイスに対して、前記制御デバイスによらずデータを格納可能な転送デバイスを有し、
    前記物理計算機に、
    前記転送デバイスに対して前記ゲストプログラムによるデータ取得要求を発行させ、
    前記転送デバイスから前記データ取得要求に対する応答であるデータ取得応答があった場合に、前記データ取得応答があったことを前記ゲストプログラムに報告するための割込みを一時的に保留させる
    請求項10に記載の仮想化機構。
  12. 前記物理計算機に、
    前記ライブマイグレーションの実行時の所定の時点に、前記仮想記憶デバイスを、データの書込みを禁止する書込み保護状態とさせる
    請求項10に記載の仮想化機構。
  13. 第1物理計算機と、第2物理計算機とを備える計算機システムにおける制御方法であって、
    前記第1物理計算機は、制御デバイスと、前記制御デバイスに接続される記憶デバイスとを有し、
    前記第1物理計算機の前記制御デバイスは、仮想計算機を構築し、前記仮想計算機上で所定のゲストプログラムを実行可能であり、
    前記記憶デバイスの一部の領域は、前記仮想計算機における記憶デバイスである仮想記憶デバイスとして用いられており、
    前記第1物理計算機の前記仮想計算機を、前記ゲストプログラムを実質的に実行させつつ、前記第2物理計算機に移動させるライブマイグレーションを実行する際に、前記仮想計算機に割り当てられた前記仮想記憶デバイスに対する一定時間におけるデータの書込み量を低減させるように制御する
    制御方法。
  14. 前記第1物理計算機は、前記記憶デバイスに対して、前記制御デバイスによらずデータを格納可能な転送デバイスを有し、
    前記転送デバイスに対して前記ゲストプログラムによるデータ取得要求を発行し、
    前記転送デバイスから前記データ取得要求に対する応答であるデータ取得応答があった場合に、前記データ取得応答があったことを前記ゲストプログラムに報告するための割込みを一時的に保留する
    請求項13に記載の制御方法。
  15. 前記ライブマイグレーションの実行時の所定の時点に、前記仮想記憶デバイスを、データの書込みを禁止する書込み保護状態とする
    請求項13に記載の制御方法。
JP2012127420A 2012-06-04 2012-06-04 計算機システム、仮想化機構、及び計算機システムの制御方法 Expired - Fee Related JP5658197B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012127420A JP5658197B2 (ja) 2012-06-04 2012-06-04 計算機システム、仮想化機構、及び計算機システムの制御方法
US13/908,633 US9292219B2 (en) 2012-06-04 2013-06-03 Computer system, virtualization mechanism, and control method for computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012127420A JP5658197B2 (ja) 2012-06-04 2012-06-04 計算機システム、仮想化機構、及び計算機システムの制御方法

Publications (2)

Publication Number Publication Date
JP2013250950A true JP2013250950A (ja) 2013-12-12
JP5658197B2 JP5658197B2 (ja) 2015-01-21

Family

ID=49671768

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012127420A Expired - Fee Related JP5658197B2 (ja) 2012-06-04 2012-06-04 計算機システム、仮想化機構、及び計算機システムの制御方法

Country Status (2)

Country Link
US (1) US9292219B2 (ja)
JP (1) JP5658197B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015118436A (ja) * 2013-12-17 2015-06-25 富士通株式会社 情報処理システム,制御プログラム及び制御方法
JP2016004432A (ja) * 2014-06-17 2016-01-12 富士通株式会社 仮想マシンマイグレーションプログラム、仮想マシンマイグレーションシステムおよび仮想マシンマイグレーション方法
JP2016513308A (ja) * 2013-12-31 2016-05-12 華為技術有限公司Huawei Technologies Co.,Ltd. 仮想マシンのライブマイグレーション方法、仮想マシンのメモリデータ処理方法、サーバ及び仮想マシンシステム
WO2018083789A1 (ja) * 2016-11-07 2018-05-11 株式会社日立製作所 計算機、計算機システムおよびデータ量制限方法
WO2019239778A1 (ja) * 2018-06-14 2019-12-19 日立オートモティブシステムズ株式会社 車両制御装置、割り込み情報管理方法及び割り込み情報管理プログラム

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5980335B2 (ja) 2012-08-22 2016-08-31 株式会社日立製作所 仮想計算機システム、管理計算機及び仮想計算機管理方法
KR102102168B1 (ko) * 2013-10-21 2020-04-21 한국전자통신연구원 가상 데스크탑 서비스 장치 및 방법
US9703720B2 (en) 2014-12-23 2017-07-11 Intel Corporation Method and apparatus to allow secure guest access to extended page tables
CN107005590A (zh) * 2015-01-08 2017-08-01 华为技术有限公司 容错的内容下载系统
US10061611B2 (en) * 2015-08-28 2018-08-28 Vmware, Inc. Virtual machine migration within a hybrid cloud system
WO2017049617A1 (en) * 2015-09-25 2017-03-30 Intel Corporation Techniques to select virtual machines for migration
US10452430B2 (en) * 2016-08-29 2019-10-22 Vmware, Inc. Live migration of virtual computing instances between data centers
US10235202B2 (en) 2016-11-08 2019-03-19 International Business Machines Corporation Thread interrupt offload re-prioritization
US10262144B2 (en) 2016-12-15 2019-04-16 International Business Machines Corporation Verifying proper operation of the instruction execution protection architecture
JP2019067301A (ja) * 2017-10-04 2019-04-25 株式会社日立製作所 プログラム実行装置およびプログラム実行方法
US11307980B2 (en) 2018-04-20 2022-04-19 Seagate Technology Llc Distributed data storage system with passthrough operations
US11132324B2 (en) 2018-06-18 2021-09-28 Seagate Technology, Llc Data network with container virtualization
US11422851B2 (en) * 2019-04-22 2022-08-23 EMC IP Holding Company LLC Cloning running computer systems having logical partitions in a physical computing system enclosure
US11775329B1 (en) * 2020-12-30 2023-10-03 Virtuozzo International Gmbh System and method for reducing virtual machine live migration downtime
US11593275B2 (en) 2021-06-01 2023-02-28 International Business Machines Corporation Operating system deactivation of storage block write protection absent quiescing of processors

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11022A (en) * 1854-06-06 Printing-
JP2008176482A (ja) * 2007-01-17 2008-07-31 Hitachi Ltd 仮想計算機システム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7484208B1 (en) * 2002-12-12 2009-01-27 Michael Nelson Virtual machine migration
US20080059726A1 (en) * 2006-08-31 2008-03-06 Carlos Rozas Dynamic measurement of an operating system in a virtualized system
US8191063B2 (en) * 2007-09-30 2012-05-29 Symantex Corporation Method for migrating a plurality of virtual machines by associating files and state information with a single logical container
JP5222651B2 (ja) 2008-07-30 2013-06-26 株式会社日立製作所 仮想計算機システムおよび仮想計算機システムの制御方法
US8386731B2 (en) * 2009-09-14 2013-02-26 Vmware, Inc. Method and system for optimizing live migration of persistent data of virtual machine using disk I/O heuristics
JP5499688B2 (ja) * 2009-12-23 2014-05-21 富士通株式会社 計算機システム、情報処理装置、仮想計算機運用方法及びプログラム
US8751738B2 (en) * 2010-02-08 2014-06-10 Microsoft Corporation Background migration of virtual storage
US8745204B2 (en) 2010-03-12 2014-06-03 Cisco Technology, Inc. Minimizing latency in live virtual server migration
CN102073462B (zh) * 2010-11-29 2013-04-17 华为技术有限公司 虚拟存储迁移方法、系统和虚拟机监控器
US10289684B2 (en) * 2011-05-03 2019-05-14 Vmware, Inc. Live migration of virtual machine persistent data using mirrored input-output operations

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11022A (en) * 1854-06-06 Printing-
JP2008176482A (ja) * 2007-01-17 2008-07-31 Hitachi Ltd 仮想計算機システム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSND200601291017; 高橋浩和: '"仮想マシンモニター Xen3.0解読室 第1回 Xenのモデルと構造"' オープンソースマガジン 第15巻第4号通巻第165号, 20060401, p.163-170, ソフトバンク クリエイティブ株式会社 *
JPN6014034604; 高橋浩和: '"仮想マシンモニター Xen3.0解読室 第1回 Xenのモデルと構造"' オープンソースマガジン 第15巻第4号通巻第165号, 20060401, p.163-170, ソフトバンク クリエイティブ株式会社 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015118436A (ja) * 2013-12-17 2015-06-25 富士通株式会社 情報処理システム,制御プログラム及び制御方法
US9875056B2 (en) 2013-12-17 2018-01-23 Fujitsu Limited Information processing system, control program, and control method
JP2016513308A (ja) * 2013-12-31 2016-05-12 華為技術有限公司Huawei Technologies Co.,Ltd. 仮想マシンのライブマイグレーション方法、仮想マシンのメモリデータ処理方法、サーバ及び仮想マシンシステム
US10802870B2 (en) 2013-12-31 2020-10-13 Huawei Technologies Co., Ltd. Virtual machine live migration method, virtual machine memory data processing method, server, and virtual machine system
JP2016004432A (ja) * 2014-06-17 2016-01-12 富士通株式会社 仮想マシンマイグレーションプログラム、仮想マシンマイグレーションシステムおよび仮想マシンマイグレーション方法
WO2018083789A1 (ja) * 2016-11-07 2018-05-11 株式会社日立製作所 計算機、計算機システムおよびデータ量制限方法
WO2019239778A1 (ja) * 2018-06-14 2019-12-19 日立オートモティブシステムズ株式会社 車両制御装置、割り込み情報管理方法及び割り込み情報管理プログラム

Also Published As

Publication number Publication date
US20130326177A1 (en) 2013-12-05
JP5658197B2 (ja) 2015-01-21
US9292219B2 (en) 2016-03-22

Similar Documents

Publication Publication Date Title
JP5658197B2 (ja) 計算機システム、仮想化機構、及び計算機システムの制御方法
US10678432B1 (en) User space and kernel space access to memory devices through private queues
WO2021000689A1 (zh) 虚拟机迁移的方法以及装置
JP5512833B2 (ja) ストレージの仮想化機能と容量の仮想化機能との両方を有する複数のストレージ装置を含んだストレージシステム
CN108139928B (zh) 用于在cpu核之间迁移操作的方法、计算设备和可读介质
JP6068676B2 (ja) 計算機システム及び計算機システムの制御方法
US9928185B2 (en) Information processing apparatus and computer-readable recording medium having program recorded therein
JP2004227558A (ja) 仮想化制御装置およびデータ移行制御方法
US20150370479A1 (en) Computer system, storage management computer, and storage management method
US10719471B2 (en) Storage system and backend construction method for storage system having switch that is logically partitioned into multiple partitions
US9298375B2 (en) Method and apparatus for returning reads in the presence of partial data unavailability
US11327653B2 (en) Drive box, storage system and data transfer method
US9081509B2 (en) System and method for managing a physical storage system and determining a resource migration destination of a physical storage system based on migration groups
JP6028415B2 (ja) 仮想サーバ環境のデータ移行制御装置、方法、システム
US8572347B2 (en) Storage apparatus and method of controlling storage apparatus
JP2014035767A (ja) I/oデバイス、i/o管理部及びi/oデバイスの管理方法
US9239681B2 (en) Storage subsystem and method for controlling the storage subsystem
US11016698B2 (en) Storage system that copies write data to another storage system
US20220237091A1 (en) Alerting and managing data storage system port overload due to host path failures
US20230359359A1 (en) Elastic request handling technique for optimizing workload performance
JP7118108B2 (ja) クラウドサーバ、ストレージシステム、及び計算機システム
TWI497294B (zh) 用於增加虛擬記憶體效能之電腦可讀儲存媒體、設備及電腦實施方法
WO2017163322A1 (ja) 管理計算機、および計算機システムの管理方法
US20140122635A1 (en) Computer system and data management method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140408

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140811

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140819

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141002

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141021

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141027

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: 20141118

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141127

R150 Certificate of patent or registration of utility model

Ref document number: 5658197

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees