JP5742387B2 - 情報処理システム、及びi/oスイッチ装置 - Google Patents

情報処理システム、及びi/oスイッチ装置 Download PDF

Info

Publication number
JP5742387B2
JP5742387B2 JP2011079786A JP2011079786A JP5742387B2 JP 5742387 B2 JP5742387 B2 JP 5742387B2 JP 2011079786 A JP2011079786 A JP 2011079786A JP 2011079786 A JP2011079786 A JP 2011079786A JP 5742387 B2 JP5742387 B2 JP 5742387B2
Authority
JP
Japan
Prior art keywords
virtual machine
pci
information processing
computer
switch
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.)
Expired - Fee Related
Application number
JP2011079786A
Other languages
English (en)
Other versions
JP2012215987A (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
Priority to JP2011079786A priority Critical patent/JP5742387B2/ja
Priority to US13/431,017 priority patent/US8966480B2/en
Publication of JP2012215987A publication Critical patent/JP2012215987A/ja
Application granted granted Critical
Publication of JP5742387B2 publication Critical patent/JP5742387B2/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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2017Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where memory access, memory control or I/O control functionality is redundant
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/122Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware performs an I/O function other than control of data transfer
    • 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
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration

Landscapes

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

Description

本発明は、稼働中の仮想マシンをコンピュータ間で移行させる技術に関する。
近年、コンピュータの仮想化技術の一つである仮想マシン(VM:Virtual Machine)は、コンピュータシステムに広く採用されている。この仮想マシンでは、コンピュータのハードウェア(リソース)が仮想化され、仮想化したハードウェア上で異なるプログラムが動作可能となる。それにより、仮想マシンは個々に完全に独立した形で動作する。このことから、仮想マシンを用いることで、一台のコンピュータを複数のサーバとして動作させることができる。
仮想マシンは、コンピュータ上で動作する仮想マシンモニタにより作成され、その仮想マシンモニタによってハードウェアが割り当てられる。仮想マシンのI/O(Input/Output)、つまりハードウェアへのアクセスは、仮想マシンモニタを介して行われる。仮想マシンモニタを介することにより、ハードウェアへのアクセス速度、特にコンピュータに接続された、そのコンピュータとの間でデータの入出力を行うI/Oデバイスへのアクセス速度は低下する。このことから、最近では、I/O性能を向上させる手段として、I/Oデバイスを仮想マシンに対して直接割り当てる直接I/O(Direct I/O)と呼ばれる技術がハードウェア機能として実装されてきている。このI/Oデバイスは以降「PCI(Peripheral Component Interconnect)デバイス」と呼ぶことにする。
直接I/Oは、仮想マシン内の物理アドレス空間とコンピュータの物理アドレス空間との間で、DMA転送におけるアドレス変換(DMA Remapping:DMAリマッピング)を行うハードウェア(直接I/Oハードウェア)を用いて、仮想マシンとPCIデバイス間で直接DMA(Direct Memory Access)転送を行う。PCIデバイスの設定に係わるPCIコンフィグレーション空間や、デバイス割り込みの伝達等は、仮想マシンモニタによってエミュレーションされて仮想マシンに提供される。その結果、仮想マシンは、実際のPCIデバイスが直接接続されているように扱うことができる。
仮想マシンの仮想化技術には、或るコンピュータで稼働中の仮想マシンを稼働状態のまま他のコンピュータに移行する、ライブマイグレーションと呼ばれる技術がある。ライブマイグレーションは、例えば、運用管理上の負荷分散や障害対策等において用いられている。ライブマイグレーションでは、仮想マシンの移行前後において、仮想マシン内におけるCPUやハードウェアレジスタの状態、メモリ内容、I/O転送の状態等の全てが一致していなければならない。
通常、仮想マシンが直接I/OでPCIデバイスを使用している場合、その仮想マシンをライブマイグレーションすることはできない。これは、移行元のコンピュータで使用されていたPCIデバイスは、移行先のコンピュータには接続されていないのが普通だからである。
最近では、複数のコンピュータが一つのPCIデバイスへの接続を共有することができるI/Oスイッチ(以降「PCIスイッチ」)を用いることにより、PCIスイッチに接続したコンピュータ間で、直接I/Oを使用している仮想マシンをライブマイグレーションすることが提唱されている。ここでいう「共有」とは、必ずしも同時に使用できるということではない。PCIスイッチ内の接続関係の切り替えにより、物理的な配線を変更することなく、PCIデバイスの接続先のコンピュータを変更可能であることをさす。なお、PCIスイッチを用いたPCIデバイスの共有に関しては、MR−IOV(Multi Root I/O Virtualization)という規格がPCI−SIGによって策定されている。
上記PCIスイッチを接続したコンピュータ間での直接I/Oを使用している仮想マシンのライブマイグレーションは、従来、以下の3つの手順により行われる。
・Pre-Copyフェーズ
移行先のコンピュータ上に停止した状態の仮想マシンを作成し、移行元のコンピュータ上で稼働中の仮想マシンのメモリ内容を移行先のコンピュータに転送し、作成した仮想マシンにコピーする。
・Stop-and-Copyフェーズ
メモリ内容の転送量がある閾値を超えたら、移行元コンピュータ上で仮想マシンを一時停止する。一時停止中に、残りのメモリ内容及び転送開始後に変更されたメモリ内容、CPU状態、エミュレーションしているハードウェアの状態などを移行先コンピュータに転送する。PCIスイッチにおいて、移行元コンピュータから直接I/Oで使用中のPCIデバイスとの接続を切断し、移行先コンピュータに接続し、直接I/Oで使用可能にする。
・Activationフェーズ
移行先コンピュータにおいて、Stop-and-Copyフェーズで転送された内容を、作成した仮想マシンに反映して、その仮想マシンを再開させる。移動元の仮想マシンは破棄される。
上記Stop-and-Copyフェーズにおいて、移行元コンピュータとPCIデバイスとの接続を切断するのは、複数のコンピュータで同一のPCIコンフィグレーション空間を割り当てることができないからである。このため、ライブマイグレーションの対象とする仮想マシンは、移行元コンピュータとPCIデバイスとの接続を切断してから、移行先コンピュータで仮想マシンを再開させるまでの間、停止することとなる。
この停止期間内では、移行元のコンピュータ及び移行先のコンピュータにおけるPCIデバイスの切断、接続のホットプラグ処理、PCIスイッチからの接続、切断通知後は、BIOSなどのファームウェアによるPCIデバイスのコンフィグレーション処理、仮想マシンモニタによる直接I/Oの設定処理、などが行われる。このため、直接I/Oを使用しない仮想マシンのライブマイグレーションでは仮想マシンの停止時間は数10msから200ms程度であるのに対し、直接I/Oを使用する仮想マシンのライブマイグレーションでは停止時間はさらに数100ms程度、長くなる。
停止時間が長くなると、サービスの提供に用いる仮想マシンでは、タイムアウトなどが生じることにより、サービスの質を低下させる可能性がある。ライブマイグレーションは、上記のように、運用管理上の負荷分散や障害対策等のために行われることが多い。このことも考慮すれば、直接I/Oを使用する仮想マシンのライブマイグレーションに伴う停止時間はより短くすることが重要である。
特開2010−39685号公報 特開2009−181418号公報 特開2009−217608号公報 国際公開WO2010/116402 特開2008−46722号公報
「Intel (R) Virtualization Technology for Directed I/O Architecture Specification Rev 1.2」、http://download.intel.com/technology/computing/vptech/Intel(r)_VT_for_Direct_IO.pdf)
本発明は、直接I/Oを使用する仮想マシンのライブマイグレーションに伴う停止時間をより短くするための技術を提供することを目的とする。
本発明を適用した1システムは、仮想マシンが作成される第1の情報処理装置と、前記第1の情報処理装置で作成された仮想マシンを移行可能な第2の情報処理装置と、前記第1の情報処理装置、及び前記第2の情報処理装置との間でデータの入出力を行うことが可能なI/Oデバイスと、前記I/Oデバイスと前記第1の情報処理装置、或いは前記第2の情報処理装置との間でデータの入出力を中継するI/Oスイッチ装置と、前記I/Oデバイスのエミュレーションを行うエミュレーションと、前記第1の情報処理装置で稼働中前記仮想マシンを停止させるまでの間、前記第1の情報処理装置前記I/Oデバイスに接続させ、且つ前記第2の情報処理装置前記エミュレーションに接続させると共に、前記第1の情報処理装置上の前記仮想マシンを停止させた後、前記第2の情報処理装置前記I/Oデバイスに接続させる接続切替と、前記I/Oスイッチ装置に設けられており、前記エミュレーション部がエミュレーションを行っているI/Oデバイスのコンフィグレーション空間情報を該I/Oデバイスから取得して前記エミュレーション部へ転送する転送部と、を具備する。
本発明を適用した場合には、直接I/Oを使用する仮想マシンのライブマイグレーションに伴う停止時間をより短くすることができる。
本実施形態によるコンピュータシステムの構成を説明する図である。 デバイスエミュレータ、切替回路、及び接続管理部の接続切替部の動作を説明する図である。 直接I/Oハードウェアを使用する仮想マシンのライブマイグレーションを行う場合に、移行元コンピュータ、移行先コンピュータがそれぞれ実行する処理を表すフローチャートである。
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
図1は、本実施形態によるコンピュータシステムの構成を説明する図である。この図1に表す構成例は、本実施形態によるコンピュータシステムに必要な最小限の構成要素を用いて構築されたものである。そのコンピュータシステムは、2台のコンピュータ(物理的な計算機)1(1−1〜1−2)、I/OデバイスであるPCIデバイス2、2台のコンピュータ1とPCIデバイス2間のデータの入出力を中継するI/OスイッチであるPCIスイッチ3を備えている。
コンピュータ1−1、1−2間は、通信路4によって接続されている。PCIスイッチ3は、コンピュータとの接続用に上流ポート31を備え、PCIデバイス2との接続用に下流ポート32を備えている。図1では、PCIスイッチ3は、4個の上流ポート31−1〜31−4を備えると共に、4個の下流ポート32−1〜32−4を備えている。各コンピュータ1−1、1−2と上流ポート31との接続はケーブル5により行われる。
PCIスイッチ3は、各コンピュータ1−1、1−2とPCIスイッチ設定通信路6により接続されている。このPCIスイッチ設定通信路6は、例えばLAN(Local Area Network)といった通信ネットワークである。本実施形態によるI/Oスイッチは、PCIスイッチ3として実現されている。
各コンピュータ1−1、1−2上には、複数の仮想マシン11(11−1〜11−n)が作成されている。各コンピュータ1−1、1−2上で動作するプログラムである仮想マシンモニタ12は、自身が実行されるコンピュータ1−1或いは1−2のハードウェア群13の上に、オペレータの指示(仮想マシン定義ファイル)に応じて、複数の仮想的なハードウェア環境を構築し、仮想マシン11を作成する。ハードウェア群13は、割り当てられたPCIデバイス2を表す情報であるPCIコンフィグレーション空間が格納された制御レジスタ13a、仮想マシン11がPCIデバイス2に直接的にアクセスするための直接I/Oハードウェア(HW)13b、CPU(Central Processing Unit)13c、メモリモジュール13d、ネットワークカード(図1中「Net」と表記)13e、スロット13f等を含む。直接I/Oハードウェア13bによるPCIデバイス2へのアクセスは、制御レジスタ13aを参照して行われる。上記PCIコンフィグレーション空間は、PCIデバイス2のPCIコンフィグレジスタ21にも格納されている。
仮想マシンモニタ12は、直接I/O、つまり直接I/Oハードウェア13bを用いたPCIデバイス2へのアクセスに対応するための直接I/O機能12b、仮想マシン11毎にPCIデバイス2のリソース(アドレス空間)の割り当てを管理するPCIリソース管理機能12cを備えている。各機能12b、12cは、仮想マシンモニタ12に搭載されたサブプログラムである。
仮想マシンモニタ12は、直接I/Oを使用する仮想マシン11のライブマイグレーションに対応している。仮想マシンモニタ12の移行プログラム12aは、そのライブマイグレーションを実現させるサブプログラムであり、スイッチ管理機能12dをサブプログラムとして備えている。このスイッチ管理機能12dは、直接I/Oを使用する仮想マシン1のライブマイグレーションを行う場合に、PCIスイッチ3の管理を行うためのものである。その管理の詳細については後述する。
PCIスイッチ3は、それぞれ4個の上流ポート31、下流ポート32の他に、上流ポート32毎に設けられたPCIブリッジ33、各PCIブリッジ33と各下流ポート32間に配置された切替回路34、デバイスエミュレータ35、及び接続管理部36を備える。
各PCIブリッジ33は、対応する上流ポート31を介したデータの送受信を中継する。切替回路34は、PCIブリッジ33(上流ポート31)と下流ポート32の間の接続関係を任意に切り替えることが可能な回路である。デバイスエミュレータ35は、下流デバイス32に接続されたPCIデバイス2をエミュレートする。PCIデバイス2をエミュレートするために、PCIコンフィグレーションレジスタ35aを備えている。このPCIコンフィグレーションレジスタ35aに格納すべきPCIデバイス2のPCIコンフィグレーション空間は、切替回路34のコンフィグレーションレジスタ転送部34aがそのPCIデバイス2から取得し、デバイスエミュレータ35に出力される。
接続管理部36は、切替回路34におけるPCIブリッジ33(上流ポート31)と下流ポート32の間の接続関係を管理し、デバイスエミュレータ35を制御する。このため、接続管理部36は、接続切替部36a、エミュレータ制御部36bを備えている。
図2は、デバイスエミュレータ35、切替回路34、及び接続切替部36aの動作を説明する図である。ここで図2を参照し、デバイスエミュレータ35、切替回路34、及び接続切替部36aの動作について具体的に説明する。
図2に表すように、切替回路34は、対応付けられたPCIブリッジ33がa接点に接続されたスイッチ34bを備えている。各スイッチ34bは、a接点をb接点、及びc接点の何れかに接続させるものであり、b接点は切替スイッチ34cに接続させている。この切替スイッチ34cは、スイッチ34b毎に、そのスイッチ34bを接続すべき下流ポート32に接続させるものである。それにより、各スイッチ34bがa接点とb接点を接続させている状況では、上流ポート31と下流ポート32の接続関係は切替スイッチ34cによって管理される。
各スイッチ34bのc接点には、エミュレータ35bが接続されている。各エミュレータ35bは、デバイスエミュレータ35によって提供される疑似PCIデバイスである。各エミュレータ35bは、それがc接点に接続されたスイッチ34bのb接点が切替スイッチ34cによって接続される下流ポート32のPCIデバイス2をエミュレートする。
各スイッチ34bのc接点に接続されたエミュレータ35bを実現させるか否か、及び実現させるべきPCIデバイス2は、接続管理部36のエミュレータ制御部36bからデバイスエミュレータ35に通知される。それにより、デバイスエミュレータ35は、スイッチ34b毎に、エミュレートすべきPCIデバイス2のエミュレートを行う。
接続管理部36の接続切替部36aは、切替スイッチ34cにおける接続関係の設定の他に、各スイッチ34bのa接点を接続させる接点の切り替えを行う。その切り替えは、エミュレータ制御部36bのデバイスエミュレータ35への指示に応じて、スイッチ34b毎に行われる。
デバイスエミュレータ35によるエミュレートは、直接I/Oハードウェア13bを使用する仮想マシン11のライブマイグレーションのために行われる。例えば移行させる仮想マシン11が稼動している移行元コンピュータがコンピュータ1−1、移行先コンピュータがコンピュータ1−2であり、その仮想マシン11が直接I/Oハードウェア13bを用いてアクセスするのが図1に表すようにPCIスイッチ3の下流ポート32−1に接続されたPCIデバイスであると仮定する。その仮定では、接続管理部36の接続切替部36aは、上流ポート31−1のPCIブリッジ33にa接点が接続されたスイッチ34bではそのa接点とb接点を接続させ、上流ポート31−2のPCIブリッジ33にa接点が接続されたスイッチ34bではそのa接点とc接点を接続させる(図2)。接続管理部36のエミュレート制御部36bは、デバイスエミュレータ35に、下流ポート32−1に接続されたPCIデバイス2のなかでエミュレートを実行すべきPCIデバイス2を指定して実行させる。そのようにして、コンピュータ1−1ではPCIデバイス2へのアクセスを可能とさせ、コンピュータ1−2ではエミュレートされたPCIデバイス2との間の通信を可能とさせる。
このようなことから、本実施形態では、移行元コンピュータ1上で移行させるべき仮想マシン11を停止させる前に、移行先コンピュータ1上で作成した仮想マシン11をPCIデバイス2と接続させるホットプラグ処理を完了させることができる。また、移行先コンピュータ1でのPCIデバイス2のコンフィグレーション処理、仮想マシンモニタ12による直接I/Oハードウェア13bの設定処理も、移行元コンピュータ1上の仮想マシン11を停止する前に完了させる。この結果、移行元コンピュータ1上の仮想マシン11を停止させた後に、それらの処理を行う従来と比較して、移行させる仮想マシン11の停止時間を大幅に短縮させることができる。
上記のようなライブマイグレーションの実現のために、本実施形態では、PCIスイッチ3に、PCIデバイス2のエミュレーション機能(デバイスエミュレータ35、エミュレータ制御部36b)、そのエミュレーション機能とPCIデバイス2の間の接続切替機能(切替回路34、接続切替部36a)を搭載させている。それにより、PCIスイッチ3は、直接I/Oを使用する仮想マシン11の移行先となるコンピュータ1に、その仮想マシン11が直接的にアクセスするPCIデバイス2との接続処理を実行可能な環境を提供する。例えば、移行先となるコンピュータ1がPCIコンフィグレーションレジスタ35aに設定したコンフィグレーション情報を、PCIコンフィグレーションレジスタ21へコンフィグレーションレジスタ転送部34aが転送する。このようにしているのは、PCIスイッチ3にそれらの機能を搭載させることにより、装置間での通信を抑え、仮想マシンの停止時間、更にはライブマイグレーションに要する時間をより短くさせるためである。
上記のようなライブマイグレーションは、移行元コンピュータ1、移行先コンピュータ1のそれぞれに搭載された仮想マシンモニタ12の移行プログラム12aによって実現される。上記接続管理部36の接続切替部36a、エミュレータ制御部36bの動作は、移行元コンピュータ1の移行プログラム12aのスイッチ管理機能12dによって実現される。その実現のためにスイッチ管理機能12dは、PCIスイッチ3に対し、例えばエミュレートを実行すべきPCIデバイス2を表す情報、移行先のコンピュータ1を表す情報等の必要な情報を通知する。
図3は、直接I/Oハードウェア13bを使用する仮想マシンのライブマイグレーションを行う場合に、移行元コンピュータ1、移行先コンピュータ1がそれぞれ実行する処理を表すフローチャートである。次に、図3を参照して、移行元コンピュータ1、移行先コンピュータ1がそれぞれ実行する処理について詳細に説明する。移行元コンピュータ1、移行先コンピュータ1の図3に表す処理は、移行元コンピュータ1、移行先コンピュータ1にそれぞれ搭載された1つ以上のCPU13cが仮想マシンモニタ12を実行することで実現される。
図3にフローチャートを表す処理の説明では、理解を容易とするために、移行させる仮想マシン11が稼動している移行元コンピュータはコンピュータ1−1、移行先コンピュータはコンピュータ1−2と想定する。また、その仮想マシン11が直接的にアクセスするPCIデバイス2はPCIスイッチ3の下流ポート32−1に接続され、コンピュータ1−1、1−2はそれぞれ、PCIスイッチ3の上流ポート31−1、31−2に接続されていると想定する。
先ず、コンピュータ1−1の仮想マシンモニタ12は、オペレータのライブマイグレーションの指示により、移行プログラム12aを起動させる。起動された移行プログラム12aは、移行先のコンピュータ1−2に、通信路4を介して、仮想マシン11の移行処理を開始する旨を通知する(S101)。移行先のコンピュータ1−2の仮想マシンモニタ12は、その通知を受信すると、移行プログラム12aを起動させる(S201)。
上記通知を送信したコンピュータ1−1の移行プログラム12aは、移行対象の仮想マシン11が直接的にアクセスPCIデバイス2の情報(図3中「デバイス情報」と表記)等を取得し(S102)、取得した情報、仮想マシン11の使用メモリ量、その定義ファイルの内容等を、通信路4を介してコンピュータ1−2に送信する(S103)。コンピュータ1−2の移行プログラム12aは、コンピュータ1−1からそれらの情報を受信するのを待って(S202)、移行対象とする仮想マシン11を作成する(S203)。作成した仮想マシン11は停止状態とされる。
コンピュータ1−1の移行プログラム12aは、次に、PCIスイッチ設定通信路6を介して、PCIスイッチ3に、PCIデバイス2のエミュレーションを指示し(S104)、更にエミュレーションによるPCIデバイス2のコンピュータ1−2への接続を指示する(S105)。それらの指示は、スイッチ管理機能12dにより行われる。その指示を行った後に、移行プログラム12aは、通信路4を介して、コンピュータ1−2にPCIデバイス2との接続を指示する(S105)。
PCIスイッチ3の接続管理部36は、コンピュータ1−1からの指示に従い、デバイスエミュレータ35にPCIデバイス2のエミュレーションを開始させ、上流ポート31−2のPCIブリッジ33にa接点が接続されたスイッチ34bを制御して、そのスイッチ34bのa接点とc接点を接続させる。このエミュレーションを開始する前に、デバイスエミュレータ35は、切替回路34のコンフィグレーションレジスタ転送部34aから、PCIデバイス2のPCIコンフィグレーション空間を取得し、PCIコンフィグレーションレジスタ35aに格納する。このエミュレーションの開始、上記スイッチ34bの切替制御により、エミュレーションによるPCIデバイス2とコンピュータ1−2との間で通信が可能な状態となる。その状態に移行した後、コンピュータ1−2の移行プログラム12aは、ケーブル5を介したPCIデバイス2へのアクセスにより接続処理を行う。その接続処理には、上記ホットプラグ処理、PCIデバイス2のコンフィグレーション処理、直接I/Oハードウェア13bの設定処理が含まれる。コンピュータ1−2の移行プログラム12aは、そのような接続処理を行った後、接続の完了をコンピュータ1−1に通知する(以上S204)。
コンピュータ1−2上に作成された仮想マシン11は、接続処理を実行した段階では動作させていない。このため、エミュレーションによるPCIデバイス2に対して、仮想マシン11のゲストOS(オペレーティングシステム)上のデバイスドライバによるアクセスは発生しない。この結果、コンピュータ1−2の移行プログラム12aは、PCIデバイス2がエミュレーションによるものか否かに係わらず、接続処理を実行することができる。
コンピュータ1−1の移行プログラム12aは、コンピュータ1−2からの接続完了の通知を受信すると、稼働中の仮想マシン11の状態を記録するために、当該仮想マシン11のページテーブルの変更と、仮想マシン11のハードウェア機能をエミュレーションするデバイスモデルのI/O転送の監視を開始する。続いて、直接I/OによるPCIデバイス2との間のDMA転送の監視を行うよう、PCIスイッチ3に対して指示を行う(S106)。これらは、周知の技術を用いて行われる。このような監視は、コンピュータ1−2からの接続完了の通知を待って行わなくとも良い。
コンピュータ1−1の移行プログラム12aは、このような監視を開始した後、仮想マシン11のメモリ内容(ページ)を、コンピュータ1−2に転送する(S107)。コンピュータ1−2の移行プログラム12aは、転送されたページを受信すると(S205)、作成した仮想マシン11のメモリ空間に受信したページをコピーし、仮想マシン11のページテーブルの作成を行う(S206)。
このコンピュータ1−1の移行プログラム12aによるページの転送は、転送量が一定量を超えるまで繰り返し行われる。そのページの転送が行われる度に、コンピュータ1−2の移行プログラム12aによる対応が行われる。
コンピュータ1−1の移行プログラム12aは、メモリ転送量が一定量を超えたら、移行対象の仮想マシンを一時停止する(S108)、次に移行プログラム12aは、PCIスイッチ3に対して、PCIデバイスとコンピュータ1−1間のDMA転送を停止するよう指示し、それまでのPCIデバイスとコンピュータ1−1間のDMA転送により変更されたページの一覧をPCIスイッチ3から取得する(S109)。その後、移行プログラム12aのスイッチ管理機能12dは、PCIスイッチ3に対して、デバイスエミュレータ35とPCIデバイスの切り替えを指示する(S110)。
スイッチ管理機能12dの指示により、PCIスイッチ3の接続管理部36の接続切替部36aは、切替回路34において上流ポート31−1のPCIブリッジ33にa接点が接続されたスイッチ34bを制御して、そのスイッチ34bのa接点とc接点を接続させる。また、接続切替部36aは、上流ポート31−2のPCIブリッジ33にa接点が接続されたスイッチ34bを制御して、そのスイッチ34bのa接点とb接点を接続させ、切替スイッチ34cを制御して、そのb接点を下流ポート32−1に接続させる。この結果、コンピュータ1−1はPCIスイッチ3のデバイスエミュレータ35と接続され、コンピュータ1−2はPCIスイッチ3を介してPCIデバイス2と接続される。なお、この切り替えでは、PCIスイッチ3からコンピュータ1−2に対して、PCIデバイス2の接続・切断の通知は行われず、コンピュータ1−2にその切り替えは関知されない。コンピュータ1−2にはPCIデバイス2が継続して接続されていると認識される。
上記PCIスイッチ3における切替処理の後、コンピュータ1−1の移行プログラム12aは、コンピュータ1−2に対して、変更されたページ、上記監視により得られたCPU13c及びデバイスモデルの状態を送信する(S111)。コンピュータ1−2の移行プログラム12aは、変更されたページ、CPU13c及びデバイスモデルの状態を受信すると、受信したこれらの内容を仮想マシン11に反映し(S207)、それらの受信をPCIスイッチ3における接続切り替えの完了通知と見なして仮想マシン11を再開させ、その再開をコンピュータ1−1に通知する(S208)。
仮想マシン11の再開時、コンピュータ1−2はPCIスイッチ3を介してPCIデバイス2と接続されている。このため、仮想マシン11は、移行元のコンピュータ1−1のときと同様に、直接I/Oにより、PCIデバイス2を利用することができる。このことから、コンピュータ1−2の移行プログラム12aは、仮想マシン11の再開をコンピュータ1−1に通知することにより、仮想マシン11の移行に係わる処理を終了する。
コンピュータ1−1の移行プログラム12aは、コンピュータ1−2から仮想マシン11の再開通知を受信すると、移行対象の仮想マシン11を削除する(S112)。次に移行プログラム12aのスイッチ管理機能12dは、PCIスイッチ3に指示して、コンピュータ1−1とデバイスエミュレータ35の接続を切断させ、PCIデバイス2のエミュレーションを終了させる(S113)。そのような切断処理をPCIスイッチ3に行わせた後、コンピュータ1−1の移行プログラム12aは、仮想マシン11の移行に係わる処理を完了する。
スイッチ管理機能12dの指示により、PCIスイッチ3の接続管理部36のエミュレータ制御部36bは、デバイスエミュレータ35によるエミュレーションを終了させる。このとき、コンピュータ1−1はデバイスエミュレータ35と接続されているため、切替回路34のコンピュータ1−1と接続されたスイッチ34b、切替スイッチ34cに対する制御は不要である。このことから、接続切替部36aは動作させなくとも良い。
なお、本実施形態では、PCIスイッチ3に接続管理部36及びデバイスエミュレータ35を搭載させているが、これら接続管理部36及びデバイスエミュレータ35の少なくとも一方を、コンピュータシステムを構成するPCIスイッチ3とは別の装置に搭載させても良い。また、コンピュータ1−1、1−2とは別の装置にライブマイグレーションを管理させ、その別の装置にPCIスイッチ3への指示を行わせるようにしても良い。このようなことから、本発明の適用は様々な変形が可能である。
1、1−1、1−2 コンピュータ
2 PCIデバイス
3 PCIスイッチ
11、11−1〜11−n 仮想マシン
12 仮想マシンモニタ
12a 移行プログラム
12d スイッチ管理機能
13 ハードウェア群
34 切替回路
34a スイッチ
34c 切替スイッチ
35 デバイスエミュレータ
36 接続管理部
36a 接続切替部
36b エミュレータ制御部

Claims (4)

  1. 仮想マシンが作成される第1の情報処理装置と、
    前記第1の情報処理装置で作成された仮想マシンを移行可能な第2の情報処理装置と、
    前記第1の情報処理装置、及び前記第2の情報処理装置との間でデータの入出力を行うことが可能なI/Oデバイスと、
    前記I/Oデバイスと前記第1の情報処理装置、或いは前記第2の情報処理装置との間でデータの入出力を中継するI/Oスイッチ装置と、
    前記I/Oデバイスのエミュレーションを行うエミュレーションと、
    前記第1の情報処理装置で稼働中の前記仮想マシンを停止させるまでの間、前記第1の情報処理装置を前記I/Oデバイスに接続させ、且つ前記第2の情報処理装置を前記エミュレーションに接続させると共に、前記第1の情報処理装置上の前記仮想マシンを停止させた後、前記第2の情報処理装置を前記I/Oデバイスに接続させる接続切替と、
    前記I/Oスイッチ装置に設けられており、前記エミュレーション部がエミュレーションを行っているI/Oデバイスのコンフィグレーション空間情報を該I/Oデバイスから取得して前記エミュレーション部へ転送する転送部と、
    を具備することを特徴とする情報処理システム。
  2. 前記エミュレーション、及び前記接続切替は、前記第1の情報処理装置からの指示により、前記I/Oスイッチ装置を用いて実現される、
    ことを特徴とする請求項1記載の情報処理システム。
  3. 前記第1の情報処理装置は、前記I/Oスイッチ装置を用いて前記エミュレーション、及び前記接続切替を実現させた後、前記接続切替により、前記仮想マシンを作成して停止させた後の前記第2の情報処理装置を前記エミュレーションに接続させる、
    ことを特徴とする請求項2記載の情報処理システム。
  4. 複数の情報処理装置、及び複数のI/Oデバイスを接続可能なI/Oスイッチ装置において、
    前記複数のI/Oデバイスのなかで指定されたI/Oデバイスのエミュレーションを行うエミュレーションと、
    前記複数の情報処理装置の接続先を、前記エミュレーションと、該エミュレーションがエミュレーションを行っているI/Oデバイスとの間で切り替え可能な接続切替と、
    前記エミュレーション部がエミュレーションを行っているI/Oデバイスのコンフィグレーション空間情報を該I/Oデバイスから取得して前記エミュレーション部へ転送する転送部と、
    を具備することを特徴とするI/Oスイッチ装置
JP2011079786A 2011-03-31 2011-03-31 情報処理システム、及びi/oスイッチ装置 Expired - Fee Related JP5742387B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011079786A JP5742387B2 (ja) 2011-03-31 2011-03-31 情報処理システム、及びi/oスイッチ装置
US13/431,017 US8966480B2 (en) 2011-03-31 2012-03-27 System for migrating a virtual machine between computers

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011079786A JP5742387B2 (ja) 2011-03-31 2011-03-31 情報処理システム、及びi/oスイッチ装置

Publications (2)

Publication Number Publication Date
JP2012215987A JP2012215987A (ja) 2012-11-08
JP5742387B2 true JP5742387B2 (ja) 2015-07-01

Family

ID=46929056

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011079786A Expired - Fee Related JP5742387B2 (ja) 2011-03-31 2011-03-31 情報処理システム、及びi/oスイッチ装置

Country Status (2)

Country Link
US (1) US8966480B2 (ja)
JP (1) JP5742387B2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5401679B2 (ja) * 2009-02-19 2014-01-29 株式会社日立製作所 計算機システム、管理方法及び管理サーバ
JP6089835B2 (ja) * 2013-03-19 2017-03-08 富士通株式会社 情報処理装置及び制御方法
US9720712B2 (en) * 2013-06-03 2017-08-01 Red Hat Israel, Ltd. Physical/virtual device failover with a shared backend
US9699093B2 (en) * 2013-06-12 2017-07-04 Dell Products L.P. Migration of virtual machine based on proximity to peripheral device in NUMA environment
US9448827B1 (en) * 2013-12-13 2016-09-20 Amazon Technologies, Inc. Stub domain for request servicing
US9411765B2 (en) * 2013-12-20 2016-08-09 Qualcomm Incorporated Methods of using a peripheral component interconnect express (PCIE) device in a virtual environment
US11487566B2 (en) * 2016-06-28 2022-11-01 Vmware, Inc. Cross-cloud provider virtual machine migration
US10162770B2 (en) * 2016-06-30 2018-12-25 Intel Corporation Virtual machine migration in rack scale systems
US11044175B2 (en) * 2016-10-25 2021-06-22 International Business Machines Corporation Hybrid cloud broker with static and dynamic capability matching
US10509758B1 (en) * 2017-09-28 2019-12-17 Amazon Technologies, Inc. Emulated switch with hot-plugging
US11922211B2 (en) * 2020-12-16 2024-03-05 Vmware, Inc. System and method for cross-architecture trusted execution environment migration
US11775329B1 (en) * 2020-12-30 2023-10-03 Virtuozzo International Gmbh System and method for reducing virtual machine live migration downtime

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4810349B2 (ja) 2006-08-11 2011-11-09 日本電気株式会社 I/o装置及び方法
US7743389B2 (en) * 2007-11-06 2010-06-22 Vmware, Inc. Selecting between pass-through and emulation in a virtual machine environment
JP5116497B2 (ja) * 2008-01-31 2013-01-09 株式会社日立製作所 情報処理システム、i/oスイッチ及びi/oパスの交替処理方法
JP5028304B2 (ja) 2008-03-11 2012-09-19 株式会社日立製作所 仮想計算機システム及びその制御方法
JP5251188B2 (ja) * 2008-03-18 2013-07-31 富士通株式会社 情報処理装置、情報処理装置の制御方法及びコンピュータプログラム
JP5262404B2 (ja) 2008-08-04 2013-08-14 株式会社日立製作所 複合型計算機及び複合型計算機の制御方法
WO2010116402A1 (ja) 2009-03-30 2010-10-14 富士通株式会社 情報処理装置
JP5218252B2 (ja) * 2009-04-24 2013-06-26 富士通株式会社 バススイッチ,コンピュータシステム及びコンピュータシステムの管理方法
US8271704B2 (en) * 2009-06-16 2012-09-18 International Business Machines Corporation Status information saving among multiple computers
JP5541117B2 (ja) * 2010-11-26 2014-07-09 富士通株式会社 仮想マシン移行システム、仮想マシン移行プログラム、及び仮想マシン移行方法

Also Published As

Publication number Publication date
US20120254866A1 (en) 2012-10-04
US8966480B2 (en) 2015-02-24
JP2012215987A (ja) 2012-11-08

Similar Documents

Publication Publication Date Title
JP5742387B2 (ja) 情報処理システム、及びi/oスイッチ装置
JP5018252B2 (ja) デバイス割り当て変更方法
TWI511048B (zh) 多主機上單根輸入/輸出虛擬化虛擬功能共享的方法及系統
EP3985504B1 (en) Virtual machine migration
JP4995015B2 (ja) 仮想計算機の実行可否検査方法
US7484029B2 (en) Method, apparatus, and computer usable program code for migrating virtual adapters from source physical adapters to destination physical adapters
JP5222651B2 (ja) 仮想計算機システムおよび仮想計算機システムの制御方法
CN110858157A (zh) 在可扩展i/o虚拟化(s-iov)架构中的虚拟设备的实时迁移
US9804873B2 (en) Guest management of devices assigned to a virtual machine
US8739156B2 (en) Method for securing the execution of virtual machines
CN113312143B (zh) 云计算系统、命令处理方法及虚拟化仿真装置
GB2525003A (en) Data Processing Systems
EP4053706A1 (en) Cross address-space bridging
US8402461B2 (en) Switching between direct mode and indirect mode for virtual machine I/O requests
US11467776B1 (en) System supporting virtualization of SR-IOV capable devices
CN113312141B (zh) 用于卸载串行端口模拟的计算机系统、存储介质和方法
JP2023532077A (ja) システム及び割り込み処理方法
Guay et al. Early experiences with live migration of SR-IOV enabled InfiniBand
US20120066676A1 (en) Disabling circuitry from initiating modification, at least in part, of state-associated information
WO2017026931A1 (en) Implementing input/output in a virtualized environment
CN118331687B (zh) 用户态半虚拟化数据路径加速方法、设备、集群以及介质
Gordon et al. Lifting and Dropping VMs to Dynamically Transition Between Time-and Space-sharing for Large-Scale HPC Systems
CN117520215A (zh) 一种缺页处理方法和相关设备
CN116263691A (zh) 裸金属服务器云服务热迁移方法和装置
Pfefferle vVerbs: a paravirtual subsystem for RDMA-capable network interfaces

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140926

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141014

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141208

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150420

R150 Certificate of patent or registration of utility model

Ref document number: 5742387

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees