説明

データ転送装置、計算機システム及びメモリコピー装置

【課題】計算機間のライブマイグレーションなどを行うためのメモリコピーにおいて、I/Oデバイスからのメモリ書込みがあっても、メモリコピー元とメモリコピー先の内容の一貫性を保つ。
【解決手段】計算機とI/Oデバイスを接続するデータ転送装置において、計算機とI/Oデバイス間の接続を担うI/Oスイッチと、計算機間のメモリコピーを行うメモリコピー部を持つ。前記データ転送装置は、I/Oデバイスが行うメモリ書込みを監視する。メモリ書込みの対象アドレスと、メモリコピーの進捗状況を比較し、メモリコピー済の領域に対するメモリ書込みは、前記データ転送装置によってメモリコピー先の計算機にも書込む。メモリコピー中の領域に対するメモリ書込みは、前記データ転送装置によって、メモリコピーのためのメモリ書込みとマージする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、物理計算機上で実行されているオペレーティングシステム、アプリケーションソフトウェア、ないしは、仮想計算機を、他の物理計算機へ移動させる技術に関する。
【背景技術】
【0002】
本発明者が検討したところによれば、情報システムの高信頼化、ないしは、運用管理の柔軟性向上を実現するために、情報システムを構成する第1の計算機で動作しているオペレーティングシステムやアプリケーションソフトウェアを、第2の計算機に移行させて動作させるマイグレーションと呼ばれる技術が利用されている。
【0003】
前記のマイグレーションで、第1の計算機に障害が発生した場合に、第1の計算機から第2の計算機にマイグレーションすることで処理を継続することができるため、情報システムの高信頼化が実現できる。また、第1の計算機に対する保守点検を行うために、第1の計算機を停止したいという要求があった場合に、第1の計算機から第2の計算機にマイグレーションすることで処理を停止せずに保守点検を行うことが出来るため、情報システムの運用管理の柔軟性向上を実現できる。
【0004】
さらに、近年、情報システムを構成する計算機の台数増加に伴う運用管理コスト増大と、計算機を構成するCPUのマルチコア化等による計算機の高性能化を背景として、1台のサーバを論理的に分割して仮想計算機として運用する仮想化技術が用いられている。なお、以降の説明においては、物理的な存在としての計算機を物理計算機と呼称し、物理計算機上で仮想計算機モニタ(VMM:Virtual Machine Monitor)やハイパーバイザを動作させることで、物理計算機を論理的に分割して作り出した仮想計算機と区別する。
【0005】
仮想化技術により、高性能な1台の物理計算機を、複数の仮想計算機に分割して使用できるようになったため、物理計算機を集約して台数を削減することが可能になり、情報システムの効率的な構築と運用が可能になった。この仮想計算機に対しても、物理計算機同様にマイグレーションを適用することで、情報システムの高信頼化と運用管理の柔軟性向上を実現できる。
【0006】
物理計算機のマイグレーションは、第1の物理計算機のメモリ内容を、第2の物理計算機のメモリにコピーすることで実現できる。仮想計算機のマイグレーションも同様に、第1の仮想計算機のメモリ内容を、第2の仮想計算機のメモリにコピーすることで実現できる。仮想計算機のマイグレーションの場合、第1の仮想計算機と第2の仮想計算機が同一の物理計算機に存在する場合と、異なる物理計算機に存在する場合の2種類のケースがある。
【0007】
第1の仮想計算機と第2の仮想計算機が共に第1の物理計算機上に存在する場合、マイグレーションは第1の物理計算機のメモリ内で、第1の仮想計算機に割り当てられた領域から、第2の仮想計算機に割り当てられる領域へのメモリコピーで実現できる。
【0008】
第1の仮想計算機が第1の物理計算機上に存在し、第2の仮想計算機が第2の物理計算機上に存在する場合、第1の物理計算機のメモリのうち、第1の仮想計算機に割り当てられている領域に含まれている内容を、第2の物理計算機のメモリのうち、第2の仮想計算機に割り当てられる領域にコピーすることで、マイグレーションを実現できる。
【0009】
さらに、マイグレーションに伴う情報システムのダウンタイムを削減する目的で、第1の物理計算機、ないしは、第1の仮想計算機を稼働させたままマイグレーションを行うライブマイグレーションの実現が求められている。
【0010】
しかし、ライブマイグレーションを実現するためには、以下の問題がある。まず、物理計算機のマイグレーションを事例として、問題を説明する。第1物理計算機をマイグレーション元とし、第2物理計算機をマイグレーション先とした例について検討する。
【0011】
第1の物理計算機が稼働中である場合、第1の物理計算機から第2の物理計算機へのメモリコピーと、第1の物理計算機のCPUから第1の物理計算機のメモリへのメモリライト(以降、CPU発メモリライトと称する)が同時並行的に行われる。その結果、メモリコピー完了後も、第2の物理計算機のメモリ内容には、CPU発メモリライトが反映されていない可能性がある。そのため、第1の物理計算機と第2の物理計算機のメモリ内容が一致しないため、マイグレーションが失敗してしまうことがある。
【0012】
また、第1の物理計算機が稼働中である場合、第1の物理計算機から第2の物理計算機へのメモリコピーと、第1の物理計算機に接続されているI/Oデバイスから第1の物理計算機のメモリへのメモリライト(以降、I/Oデバイス発メモリライトと称する)が同時並行的に行われる。I/Oデバイス発メモリライトは、第1物理計算機のメモリに対してのみ行われる。その結果、メモリコピー完了後も、第2の物理計算機のメモリ内容には、I/O発メモリライトが反映されていない可能性がある。そのため、第1の物理計算機と第2の物理計算機のメモリ内容が一致しないため、マイグレーションが失敗してしまうことがある。
【0013】
上述したCPU発メモリライト、及び、I/O発メモリライトによる問題は、仮想計算機のマイグレーションにおいても発生する。マイグレーション先の仮想計算機とマイグレーション元の仮想計算機が同一の物理計算機にある場合でも、異なる物理計算機にある場合でも、上述の問題が発生する。
【0014】
これらの問題に対処し、ライブマイグレーションを実現させるための技術が提案されている。
【0015】
CPU発メモリライトによってマイグレーション元とマイグレーション先のメモリ内容に相違が生じる問題に対しては、例えば非特許文献1に記載されている方法がある。非特許文献1では、マイグレーション元の仮想計算機において、マイグレーションのためのメモリコピーが行われている期間に、CPU発メモリライトが行われたメモリ領域(ページ)をdirtyなページとして記録しておく。dirtyなページは、前記メモリコピーの完了後に、マイグレーション元のメモリとマイグレーション先のメモリで内容が異なる可能性があるページである。
【0016】
そこで、前記メモリコピーが完了した後に、マイグレーション元の仮想計算機のCPUを停止させて、dirtyなページのみを再度メモリコピーする(以下、再メモリコピーと呼称する)。再メモリコピーでは、マイグレーション元の仮想計算機のCPUは停止しているため、CPU発メモリライトが新規に発生することはない。
【0017】
この方法では、マイグレーション元の仮想計算機のCPUを停止している期間、すなわち、再メモリコピーを行っている時間がダウンタイムとなる。
【0018】
I/Oデバイス発メモリライトによってマイグレーション元とマイグレーション先のメモリ内容に相違が生じる問題に対しては、例えば特許文献1に記載されている方法がある。特許文献1では、マイグレーション元の物理計算機、マイグレーション先の物理計算機、及び、I/Oデバイスの3者をI/Oスイッチを介して接続する。そして、前記メモリコピーの期間、I/Oスイッチ内でI/Oデバイス発メモリライトを抑止する。
【0019】
これにより、メモリコピーが完了するまでの間、I/Oデバイス発メモリライトがマイグレーション元の物理計算機に到着することはない。メモリコピー完了後に、I/OスイッチによってI/Oデバイスとマイグレーション先の物理計算機が接続される。その後、I/Oデバイス発メモリライトの抑止を解除することで、それ以降のI/Oデバイス発メモリライトは、マイグレーション先の物理計算機に行くことになる。
【0020】
この方法では、I/Oデバイス発メモリライトを抑止している期間、すなわちメモリコピーを行っている期間がダウンタイムとなる。
【0021】
上記したような技術を用いて、物理計算機、ないしは、仮想計算機のライブマイグレーションが実現されてきた。しかし、上述したように、CPU発メモリライト、ないしは、I/Oデバイス発メモリライトに起因するダウンタイムが存在するため、ダウンタイムのさらなる削減が求められている。
【0022】
なお、物理計算機、ないしは、仮想計算機のマイグレーションのみならず、複数の物理計算機を用いてフォールトトレラント構成を実現するような場合にも、上記と類似する問題が存在する。
【先行技術文献】
【特許文献】
【0023】
【特許文献1】特開2009−181418号公報
【特許文献2】特開2010−039685号公報
【非特許文献】
【0024】
【非特許文献1】Christopher Clark、 Keir Fraser、 Steven Hand、 Jacob Gorm Hansen、 Eric Jul、 Christian Limpach、 Ian Pratt、 Andrew Warfield、 Live migration of virtual machines、 Proceedings of the 2nd conference on Symposium on Networked Systems Design & Implementation、 p.273−286、 May 02−04、 2005.
【発明の概要】
【発明が解決しようとする課題】
【0025】
本発明は、上記背景技術に示した、ライブマイグレーションによるI/Oデバイス発メモリライトに関するものである。特許文献1に示すような従来の発明では、マイグレーションのためのメモリコピーを行っている期間、I/Oデバイス発メモリライトを抑止していた。そのため、マイグレーションの対象となる物理計算機、ないしは、仮想計算機で、I/Oデバイスとのデータ転送を必要とする処理を行っている場合、メモリコピーの時間の全てがダウンタイムとなってしまう。
【0026】
この問題に対して、本出願人は特許文献2(特願2008−200682号)において、I/Oデバイス発メモリライトを抑止せずに、マイグレーションを実現する技術を提案した。
【0027】
特許文献2では、第1の物理計算機のVMMが仮想計算機を第2の物理計算機に移動させる場合には、仮想計算機の稼働中に、仮想計算機に割り当てられた第1の物理計算機のメモリを、第2の物理計算機のメモリにコピーし、第1の物理計算機のメモリの状態を、コピー済み領域、コピー中領域、未コピー領域の何れかに分類して、I/Oスイッチに通知する。
【0028】
I/Oスイッチは、I/Oデバイス発メモリライトを受信すると、その対象アドレスがコピー済み領域、コピー中領域、未コピー領域の何れに属するかを判定する。
【0029】
I/Oデバイス発メモリライトの対象アドレスがコピー済み領域に属する場合、I/OスイッチがI/Oデバイス発メモリライトを複製し、第1の物理計算機のメモリのみならず、第2の物理計算機のメモリにも書込む。これにより、第1の物理計算機のメモリと、第2の物理計算機のメモリの内容に相違が生じることを防ぐことが出来る。
【0030】
I/Oデバイス発メモリライトの対象アドレスがコピー中領域に属する場合、I/OスイッチがI/Oデバイス発メモリライトの対象アドレスを、第1の物理計算機のVMMに通知する。メモリコピーが完了した段階では、第1の物理計算機のメモリと、第2の物理計算機のメモリの内容に相違が生じている可能性がある。そこで、第1の物理計算機のVMMは、メモリコピーが完了した後に、I/Oスイッチに対してI/Oデバイス発メモリライトを抑止させるように指示し、I/Oスイッチから通知されたアドレスを含む領域を再メモリコピー(以下、コピー中領域再メモリコピーと称する)する。コピー中領域再メモリコピーが完了した後は、第1の物理計算機のメモリと、第2の物理計算機のメモリの内容の相違は解消できている。
【0031】
I/Oデバイス発メモリライトの対象アドレスが未コピー領域に属する場合、I/Oスイッチは単にI/Oデバイス発メモリライトを第1の物理計算機に伝送する。未コピー領域は、後にメモリコピーされるため、第1の物理計算機のメモリと、第2の物理計算機のメモリの内容が相違することは無い。
【0032】
上記の方法では、ダウンタイムはコピー中領域再メモリコピーの期間となるため、特許文献1で記された方法よりダウンタイムを削減することが出来る。

しかしながら、上記した特許文献2では、コピー中領域に対するI/Oデバイス発メモリライトが多いと、ダウンタイムが長くなってしまうという問題がある。また、ダウンタイムの長さが、I/Oデバイス発メモリライトの対象アドレスと量に依存してしまうため、ダウンタイムの長さを予測することが困難であるという問題もある。
【0033】
また、上記特許文献2では、移動元の第1の物理計算機のVMMがコピー済み領域、コピー中領域、未コピー領域を分類しなければならない。そのため、既存のVMMをそのまま用いることができない、という問題があった。
【0034】
上記の問題に鑑みて、本発明では、第1の物理計算機のメモリの内容を、第2の物理計算機のメモリにコピーし、I/Oデバイス発メモリライトを抑止せず、かつ、I/Oデバイス発メモリライトに起因する再メモリコピーを不要にする方法、ないしは、装置を、VMMの介在無しに提供することを目的とする。
【0035】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【0036】
上記の課題を解決するために、本発明では、データ転送装置において、I/Oデバイス発のメモリライトの対象アドレスと、メモリコピーを行っているアドレスを比較して、前記対象アドレスがメモリコピー済の領域に属するものであるか、メモリコピー前の領域に属するものであるのかを判定する。前記対象アドレスがメモリコピー中の領域に属する場合には、メモリコピーを構成するより詳細な処理の進捗状況を検査することで、メモリコピー前、ないしは、メモリコピー済に分類する。
【0037】
具体的には、データ転送装置によるメモリコピーは、メモリコピー元の物理計算機に対するメモリリード要求を発行し、それに対応するメモリリード応答が到着するのを待ち、前記メモリリード応答が到着したら、前記メモリリード応答に含まれるデータを、メモリコピー先に物理計算機に対してメモリライト要求を発行することで書込む。一度にメモリリード要求、ないしは、メモリライト要求できるデータ量には、一般的には制限があるため、これらの処理を、アドレスを更新しながら進めていくことで、メモリコピーを実現する。
【0038】
前記対象アドレスが、メモリコピー中の領域に属する場合に、当該メモリコピー中の領域に対して、まだメモリリード要求を発行していない場合には、メモリコピー前と見做す。また、メモリライト要求を既に発行した後である場合には、メモリコピー済と見做す。
【0039】
メモリコピー前の領域に対するI/Oデバイス発メモリライトは、単にメモリコピー元の物理計算機に対して転送する。メモリコピー済の領域に対するI/Oデバイス発メモリライトは、メモリコピー元の物理計算機と、メモリコピー先の物理計算機の両方に対して転送する。これにより、メモリコピー中に、メモリコピー前の領域、及び、メモリコピー済の領域に対するI/Oデバイス発メモリライトが発生しても、メモリコピー先の物理計算機のメモリと、メモリコピー元の物理計算機のメモリの内容の一貫性を保つことが出来る。
【0040】
メモリリード要求を既に発行したが、メモリリード応答の受け取りを待っている段階、ないしは、メモリリード応答を既に受け取ったが、まだメモリライト要求は発行していないという段階である場合には、I/Oデバイス発メモリライトとメモリコピーのマージ、ないしは、メモリコピーの完了待ち、のいずれかによって、上記の課題を解決する。
【0041】
I/Oデバイス発メモリライトとメモリコピーのマージを以下に説明する。
【0042】
メモリコピーのためのメモリリード要求を既に発行し、メモリリード応答を待っている場合には、メモリリード応答を受け取るまで待つ。そして、受け取ったメモリリード応答に含まれるデータに、I/Oデバイス発メモリライトに含まれるデータを上書きし、そのデータをメモリライト要求によってメモリコピー先の物理計算機に書込む。
【0043】
メモリコピーの完了待ちを以下に説明する。メモリコピーのためのメモリリード要求を既に発行し、メモリリード応答を待っている場合には、メモリリード応答を受け取るまで待つ。そして、受け取ったメモリリード応答に含まれるデータを、メモリコピー先の物理計算機にメモリライト要求で書き込んだ後に、I/Oデバイス発メモリライトを複製し、メモリコピー先の物理計算機にも転送する。
【0044】
好ましい例によれば、本発明に係るデータ転送装置は、上記の処理を実現するために、第1のメモリを備えた第1の計算機と接続される第1のインタフェースと、第2のメモリを備えた第2の計算機と接続される第2のインタフェースと、I/Oデバイスと接続される第3のインタフェースと、前記第1のインタフェースと、第2のインタフェース及び第3のインタフェースを接続するI/Oスイッチと、前記第1の計算機の第1のメモリからデータを読み出すための第1のメモリリード要求を発行し、前記第1のメモリリード要求に対応する第1のメモリリード応答に含まれるデータを受け付けて、前記第2の計算機の第2のメモリに前記受け付けたデータを書込むための第1のメモリライト要求を発行するメモリコピー部と、を有することを特徴とするデータ転送装置として構成される。
【発明の効果】
【0045】
本発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下の通りである。
【0046】
本発明によれば、第1の物理計算機の第1のメモリを、第2の物理計算機の第2のメモリにコピーするメモリコピーにおいて、メモリコピーの期間中に第1の物理計算機の第1のメモリに対して、I/Oデバイス発メモリライトがある場合にも、第1の物理計算機の第1のメモリ内容と、第2の物理計算機の第2のメモリ内容の相違が生じないように、メモリコピーを進めることができる。
【0047】
よって、本発明は上記により、第1の物理計算機の第1のメモリを、第2の物理計算機の第2のメモリにコピーし、I/Oデバイス発メモリライトを抑止せず、かつ、I/Oデバイス発メモリライトに起因する再メモリコピーを不要にする方法、ないしは、装置をVMMの介在無しに提供することができる。
【0048】
これにより、第1の物理計算機から第2の物理計算機へのライブマイグレーションにおいて、I/Oデバイス発メモリライトを原因とするダウンタイムを0にすることが可能である。また、上記の効果は、第1の物理計算機上の第1の仮想計算機を、第2の物理計算機上の第2の仮想計算機にマイグレーションする場合にも同様である。また、第1の物理計算機上の第1の仮想計算機を、同じ第1の物理計算機上の第2の仮想計算機にマイグレーションする場合も同様である。
【図面の簡単な説明】
【0049】
【図1A】本発明の第1の実施の形態における情報システムの構成を示すブロック図である。
【図1B】本発明の第1の実施の形態におけるデータ転送装置の詳細を示すブロック図である。
【図2】データ転送装置のメモリコピー状態管理レジスタの構成を示す構成図である。
【図3】データ転送装置のマージ部における処理を示す概念図である。
【図4】データ転送装置のマージ部の構成を示すブロック図である。
【図5】データ転送装置のメモリコピー設定レジスタの構成を示す構成図である。
【図6】本発明の第1の実施の形態において、データ転送装置のメモリコピー制御部により実施される第1の処理を示すフローチャートである。
【図7】本発明の第1の実施の形態において、データ転送装置のメモリコピー制御部により実施される第2の処理を示すフローチャートである。
【図8】本発明の第1の実施の形態において、データ転送装置のメモリコピー制御部により実施される第3の処理を示すフローチャートである。
【図9】本発明の第1の実施の形態において、データ転送装置のメモリコピー制御部により実施される第4の処理を示すフローチャートである。
【図10】本発明の第2の実施の形態において、データ転送装置のメモリコピー制御部により実施される第1の処理を示すフローチャートである。
【図11A】本発明の第3の実施の形態における情報システムの構成を示すブロック図である。
【図11B】本発明の第3の実施の形態におけるデータ転送装置の内部構成を示すブロック図である。
【図12】本発明の第3の実施の形態におけるデータ転送装置のメモリコピー部の構成を示すブロック図である。
【図13】本発明の第1の実施の形態におけるメモリコピーの処理を示す説明図である。
【図14】本発明の第1の実施の形態におけるメモリコピーの処理を示す説明図である。
【図15】本発明の第1の実施の形態におけるメモリコピーの処理を示す説明図である。
【図16】本発明の第1の実施の形態におけるI/Oスイッチ設定レジスタの構成の一例を示す構成図である。
【図17a】本発明の第1の実施の形態におけるI/Oスイッチ設定レジスタの構成の一例を示す構成図で、マイグレーション前の状態を示す。
【図17b】本発明の第1の実施の形態におけるI/Oスイッチのポート間の接続関係を示す構成図で、マイグレーション前の状態を示す。
【図18a】本発明の第1の実施の形態におけるI/Oスイッチ設定レジスタの構成の一例を示す構成図で、マイグレーション後の状態を示す。
【図18b】本発明の第1の実施の形態におけるI/Oスイッチのポート間の接続関係を示す構成図で、マイグレーション後の状態を示す。
【図19A】本発明の第4の実施の形態における情報システムの構成を示すブロック図である。
【図19B】本発明の第4の実施の形態におけるデータ転送装置の詳細を示すブロック図である。
【図20】本発明の第1の実施の形態における管理サーバの構成を示すブロック図である。
【発明を実施するための形態】
【0050】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、同一の符号の繰り返しの説明は省略する。
【0051】
<第1の実施の形態>
図1A、図1Bに、本発明の第1の実施の形態における情報システムの構成図を示す。図1A、図1Bの情報システム(計算機システム)は物理計算機150A、150B、I/Oデバイス160、及び、データ転送装置100から構成される。
【0052】
物理計算機150A、150Bはそれぞれ、CPU(またはプロセッサ)151A、151B、メモリ152A、152B、メモリコントローラ153A、153B、I/Oハブ154A、154Bから構成される。
【0053】
CPU151A、151B上ではオペレーティングシステムやアプリケーションソフトウェアが処理する。また、CPU151A、151B上でVMMやハイパーバイザを実行させることで、物理計算機を1つ、ないしは、複数の仮想計算機として利用することができる。なお、VMMやハイパーバイザ等の仮想化制御部上の論理区画に生成された仮想計算機は、オペレーティングシステム及びアプリケーションソフトウェアを実行する仮想サーバが提供される。また、物理計算機150A上で、直接オペレーティングシステム及びアプリケーションソフトウェアを実行してもよく、この場合には物理サーバが提供される。
【0054】
CPU151A、151Bは、その上で稼動しているオペレーティングシステム、アプリケーション、ないしは、仮想計算機の要求に応じて、メモリ152A、152Bにデータを書込む(背景技術の説明においてCPU発メモリライトと称した処理である)。
【0055】
CPU151A、151Bは、メモリコントローラ153A、153Bを介在して、メモリ152A、152Bのデータを読み書きする。CPU151A、151Bは、上記オペレーティングシステム、アプリケーションまたはVMMないしハイパーバイザをメモリ15A、152Bにロードして実行する。
【0056】
物理計算機150A、150Bには、ネットワークやストレージとの接続のために、ネットワークインタフェースアダプタ(NIC)やストレージアダプタなどのI/Oデバイス160を接続して利用する。
【0057】
物理計算機150A、150BとI/Oデバイスの接続は、業界標準規格で定められたI/Oインタフェースを用いることが一般的である。例えば、今日ではPCI−SIGが規定するPCI ExpressがI/Oインタフェースとして広範に用いられている。
【0058】
本実施の形態では、PCI Expressを事例として説明を行うが、PCI、PCI−X、ないしは、その他のI/Oインタフェースでも同様の構成、処理とすることができる。
【0059】
I/Oハブ154A、154Bは物理計算機150A、150BにPCI Expressのポート155A、155Bを提供する。PCI Expressは、データ転送をパケット形式で行うので、ポート155A、155Bは、図中S155AR及びS155BRの示すようにパケットを送信し、S155AT及びS155BTの示すようにパケットを受信する。また、I/Oハブ154A、154Bは物理計算機150A、150Bを管理ネットワーク1300に接続するためのネットワークインタフェースを備える。
【0060】
I/Oデバイス160はポート161から、各物理計算機150A、150Bのポート155A、155Bに向けてメモリライト要求パケット、ないしは、メモリリード要求パケットを発行する。
【0061】
I/Oハブ154A、154Bはメモリライト要求パケットを受け取ると、メモリライト要求パケットに含まれているデータを、メモリ152A、152B上に書込む。なお、書込み先のアドレスや、データ長はパケットに含まれている。
【0062】
I/Oハブ154A、154Bはメモリリード要求パケットを受け取ると、メモリ152A、152Bからデータを読出して、メモリリード応答パケットとしてI/Oデバイスに返却する。なお、読出し対象のアドレスや、データ長はパケットに含まれている。
【0063】
PCI Expressでは、メモリライト要求パケット、ないしは、メモリリード要求パケットにおいて、32bit、ないしは、64bitでアドレスを指定することが出来る。本実施の形態においては、近年の物理計算機において64bitのアドレスが多く利用されていることに鑑みて、64bitでアドレスを指定するものとして説明する。
【0064】
図1A、図1Bには記載していないが、I/Oデバイス160がレジスタを有している場合、CPU151A、151Bは、I/Oハブ154A、154Bを介して、I/Oデバイス160が有しているレジスタを読み書きすることが出来る。
【0065】
この場合、I/Oデバイス160が有しているレジスタは、物理計算機150A、150Bのメモリマップに割り当てられている。これをメモリマップドI/O(Memory Mapped Input/Output)と称する(以降、MMIOと略記する)。
【0066】
CPU151A、151BはMMIOに対してロード命令、ストア命令を発行することで、I/Oデバイス上のレジスタを読み書きすることが出来る。CPUからロード命令、ないしは、ストア命令が発行されると、I/Oハブ154A、154Bが、I/Oデバイス160のポート161に向けてメモリライト要求パケット、ないしは、メモリリード要求パケットを発行する。
【0067】
I/Oデバイス160は、メモリライト要求パケットを受け取ったら、書込み対象アドレスに対応するレジスタにデータを書込む。同様に、メモリリード要求パケットを受け取ったら、読出し対象アドレスに対応するレジスタからデータを読出し、メモリリード応答パケットをポート155A、155Bに向けて返送する。
【0068】
本実施形態におけるデータ転送装置100は、物理計算機150A、150BとI/Oデバイス160の間に配置されて、物理計算機150A、150BのI/Oハブ154A、154BとI/Oデバイス160の間のパケットの転送を制御する。データ転送装置100は、I/Oスイッチ110、マイグレーション対象I/Oデバイス設定レジスタ101、メモリコピー制御部(メモリコピー装置)120、メモリライト要求パケット生成部130、メモリリード要求パケット生成部131、メモリリード応答パケット受付部132、マージ部133、セレクタ134、ポート180、パケット複製部181、パケット解析部182から構成される。
【0069】
物理計算機150AがI/O処理を行う場合、物理計算機150AにI/Oデバイス160を直接接続して利用することが一般的である。しかし、物理計算機150Aないしはその上で稼動している仮想計算機を、物理計算機150Bないしはその上で稼動している仮想計算機にマイグレーションするためには、物理計算機150Aと物理計算機150Bの間でI/Oデバイス160を切替えて利用する必要がある。このI/Oデバイス160のホストとなる物理計算機の切替えを実現するために、データ転送装置100はI/Oスイッチ110を備える。
【0070】
なお、上記のように、マイグレーションに際して、マイグレーション元の物理計算機から、マイグレーション先の物理計算機に切り替えを必要とするI/Oデバイスを、以下ではマイグレーション対象I/Oデバイスと称する。
【0071】
I/Oスイッチ110は複数のポート111、112、113、114、115を有しており、ポート間でパケットを転送する。図1A、図1Bの構成では、物理計算機150Aがポート111に、物理計算機150Bがポート112に接続されている。I/Oデバイス160は、途中にパケット複製部181を介在して、ポート113に接続されている。本実施形態において、各ポートは、PCI Expressのインタフェースに準拠している例を示す。
【0072】
PCI Expressの場合、I/Oスイッチ110の各ポート間のルーティングは、物理計算機150A、150Bを頂点とするツリー状のトポロジを形成する。すなわち、物理計算機150Aを頂点とする第1のツリーと、物理計算機150Bを頂点とする第2のツリーが、I/Oスイッチ110内のルーティングにより形成される。
【0073】
I/Oスイッチ110で行われるルーティングの設定は、I/Oスイッチ110が有するI/Oスイッチ設定レジスタ116で行う。I/Oスイッチ設定レジスタ116は、物理計算機150A、150BからMMIO、ないしは、その他の手段で設定される。また、物理計算機150A、150B以外の計算機から設定されても良い。本実施形態では、例えば、図1A、図1Bで示すように、ネットワーク1300を介して物理計算機150A、150B及びデータ転送装置100に接続された管理サーバ1400でI/Oスイッチ110を含むデータ転送装置100の設定と、マイグレーションの制御が行われる。管理サーバ1400は、物理計算機150A、150Bと同様にCPUやメモリ等を備えており、図20で示すように、I/Oスイッチ110を含むデータ転送装置100の制御を行うスイッチ制御部1272と、マイグレーションの制御を行うマイグレーション制御部1271が実行される。また、移動元の物理計算機150Aは、オペレーティングシステム1260Aとアプリケーション1270Aが実行されてサーバAを稼動させる。
【0074】
管理サーバ1400のスイッチ制御部1272は、物理計算機150A、150BとI/Oデバイス160等、I/Oスイッチ110の各ポート間の接続を設定する。また、マイグレーション制御部1271は、物理計算機150AのサーバAを物理計算機150Bに移動してサーバA’として生成する。
【0075】
これら、マイグレーション制御部1271、スイッチ制御部1272からの指令は、管理ネットワーク1300を介して物理計算機150A、150B及びデータ転送装置100に通知される。なお、本実施形態では、マイグレーション対象の決定等については、公知又は周知の技術を用いることができるので、ここでは詳述しない。
【0076】
マイグレーション前、すなわち、物理計算機150Aを用いて処理(例えば、サービスの提供等)を行う場合には、第1のツリーにポート113を所属させるように、I/Oスイッチ設定レジスタ116に設定する。そして、マイグレーション完了後、すなわち、物理計算機150Bを用いて処理を行う場合には、第2のツリーにポート113を所属させるように、I/Oスイッチ設定レジスタ116に設定する。これらのI/Oスイッチ設定レジスタ116の設定は、図20の管理サーバ1400で実行されるスイッチ制御部1272が実施する。
【0077】
物理計算機150Aから物理計算機150Bへのマイグレーションは、マイグレーション制御部1271の指令に基づいて、メモリ152Aの内容をメモリ152Bにコピーすることで行う。
【0078】
なお、物理計算機150A上の仮想計算機から、物理計算機150B上の仮想計算機へのマイグレーションの場合も、物理計算機150Aのメモリ152A内で当該仮想計算機に割り当てられている領域を、物理計算機150Bのメモリ152B内で当該仮想計算機に割り当てられる領域にコピーすることで行う。
【0079】
物理計算機150A上で稼動するオペレーティングシステム、アプリケーションソフトウェア、ないしは、仮想計算機には、一般的にページと呼ばれる単位でメモリ領域が割り当てられている。また、ページサイズは4KB、ないしは、それより大きい2の冪乗のサイズであることが多い。また、ページの先頭アドレスは、ページサイズのアラインに沿わせることが多い。すなわち、ページサイズが4KBであれば、ページの先頭アドレスの下位12bitは常に0である。
【0080】
PCI Expressの場合、単一のメモリライト要求パケット、ないしは、メモリリード要求パケットで読み書きを要求できるサイズは、最大でも4KBである。また、PCI Expressでは、単一のメモリライト要求パケット、ないしは、メモリリード要求パケットで4KBアラインを跨る要求を行うことは出来ない。
【0081】
よって、本実施の形態においては、PCI Expressを用いた実施の形態を示すために、4KBのページ単位でメモリコピーを行うことで、マイグレーションを行う。
【0082】
すなわち、物理計算機間のマイグレーションと、物理計算機を跨る仮想計算機間のマイグレーションは、いずれもページ単位でのメモリコピーを繰り返すという点で、処理が同じである。よって、以降の説明では、物理計算機間のマイグレーションを代表の事例として取り上げる。
【0083】
なお、同一物理計算機内での仮想計算機間のマイグレーションの処理については後述する。
【0084】
データ転送装置100のポート180は、I/Oデバイス160の有するポート161と接続される。ポート180は、I/Oスイッチ110のポート113からI/Oデバイス160に向けて発行される各種のパケットS113Rを、I/Oデバイス160にパケットS161Rとして送る。また、I/Oデバイス160から発行される各種のパケットS161Tを、パケットS180としてパケット複製部181に送る。
【0085】
メモリコピー制御部120は、データ転送装置100がマイグレーションのためのメモリコピーを行うための制御を担う。メモリコピー制御部120は、メモリコピー設定レジスタ121、メモリコピー状態管理レジスタ123、及び、アドレス判定部125を備えている。
【0086】
メモリコピー設定レジスタ121は、物理計算機150A、150Bによって、MMIO、ないしは、その他の手段で設定される。また、物理計算機150A、150B以外の計算機(例えば、管理サーバ1400)から設定されても良い。
【0087】
メモリコピー設定レジスタ121は、メモリコピーを行うメモリ152A、152Bの領域を指定する情報を保持する。領域を指定する情報としては、例えば、領域の先頭を示すアドレスと、領域の大きさを示すサイズの組合せがある。他の一例としては、領域の先頭を示すアドレスと、領域の終端を示すアドレスの組合せがある。
【0088】
また、メモリコピー設定レジスタ121は、物理計算機150A、150B、ないしは、その他の計算機から、メモリコピー開始の要求を受け付ける。本実施形態では、管理サーバ1400のマイグレーション制御部1271が、メモリコピー開始の要求をデータ転送装置100に指令する。
【0089】
メモリコピー設定レジスタ121に設定するアドレスは、物理アドレス(後述するゲスト物理アドレスと特に区別するために、ホスト物理アドレスと呼称することがある)、ないしは、仮想アドレスのいずれでも良い。また、仮想計算機のマイグレーションを行う場合には、仮想計算機のゲスト物理アドレス、ないしは、ゲスト仮想アドレスでも良い。仮想アドレス、ゲスト物理アドレス、及び、ゲスト仮想アドレスでは、ホスト物理アドレスへのアドレス変換が必要となる。
【0090】
アドレス変換を行うための機構は、例えばIntelのVT−d(Virtualization Technology for Directed I/O)や、AMDのIOMMUがある。これらの機構は、物理計算機150A、150Bが備える。
【0091】
または、PCI−SIGによって規定されたATS(Address Translation Services)のように、アドレス変換機構をデータ転送装置100内に備えても良い。
【0092】
メモリコピー状態管理レジスタ123は、メモリコピーの進捗状況を保持するレジスタであり、メモリコピー制御部120が内部的に使用する。
【0093】
メモリライト要求パケット生成部130は、メモリコピー制御部120からの要求信号S130があった時に、セレクタ134から供給されるデータS134Dを、メモリ152A、ないしは、メモリ152Bに書込むための、メモリライト要求パケットS115Tを発行する。アドレス、及び、データのサイズは要求信号S130に含まれている。
【0094】
メモリライト要求パケット生成部130は、I/Oスイッチ110のポート115に接続される。そのため、メモリライト要求パケットS115Tによって、メモリ152A、ないしは、メモリ152Bのどちらに書込まれるかは、ポート115が属するツリーによって決まる。ポート115が第1のツリーに属している場合には、メモリライト要求パケットS115Tがメモリ152Aに書込まれる。ポート115が第2のツリーに属している場合には、メモリライト要求パケットS115Tがメモリ152Bに書込まれる。
【0095】
物理計算機150AのサーバAを物理計算機150Bへ移動する際には、ポート115は、前記第2のツリー、すなわちマイグレーション先である物理計算機150Bが頂点となるツリーに属している。また、前記の事例とは逆に、物理計算機150Bから物理計算機150Aへのマイグレーションを行う場合には、ポート115は前記第1のツリー、すなわちマイグレーション先である物理計算機150Aが頂点となるツリーに属する。
【0096】
メモリリード要求パケット生成部131は、メモリコピー制御部120からの要求信号S131によって、メモリリード要求パケットS114Tを発行する。アドレス、及び、データのサイズは要求信号S131に含まれている。
【0097】
メモリリード要求パケット生成部131は、ポート114に接続される。そのため、メモリ152A、ないしは、メモリ152Bのどちらにリード要求されるかは、ポート114が属するツリーによって決まる。ポート114が第1のツリーに属している場合には、メモリ152Aにリード要求が通知される。ポート114が第2のツリーに属している場合には、メモリ152Bにリード要求が通知される。
【0098】
前記メモリリード要求パケットS114Tに対応する応答であるメモリリード応答パケットは、前記メモリリード要求パケットを発行したポートと同じポート114に到着する。そこで、ポート114にメモリリード応答パケット受付部132を接続して、前記メモリリード応答パケットS114Rを受け取る。
【0099】
メモリリード応答パケット受付部132は、メモリリード応答パケットS114Rを受け取ったことを、受付通知信号S132Nでメモリコピー制御部120に通知する。また、前記メモリリード応答パケットに含まれるデータS132Dは、マージ部133とセレクタ134にそれぞれ送信される。
【0100】
物理計算機150AのサーバAを物理計算機150Bへ移動する際には、ポート114は、前記第1のツリー、すなわちマイグレーション元である物理計算機150Aが頂点となるツリーに属している。また、前記の事例とは逆に、物理計算機150Bから物理計算機150Aへのマイグレーションを行う場合には、ポート114は前記第2のツリー、すなわちマイグレーション元である物理計算機150Bが頂点となるツリーに属する。
【0101】
マイグレーション対象I/Oデバイス設定レジスタ101は、マイグレーション対象のI/Oデバイスを識別する識別子を、少なくとも1個以上保持するレジスタである。本レジスタは、物理計算機150A、150BからMMIO、ないしは、その他の手段で設定される。また、管理サーバ1400等の物理計算機150A、150B以外の計算機から設定されても良い。
【0102】
PCI Expressでは、Bus番号(8bit)、Device番号(5bit)、及び、Function番号(3bit)の3種の番号を組にしたRequester ID(合計16bit、以下RIDと略記する)というI/Oデバイスに固有な識別子が定義されている。よって、マイグレーション対象レジスタ101では、マイグレーション対象のI/OデバイスのRIDを識別子として保持する。
【0103】
マイグレーション対象レジスタ101が保持しているRID情報S101は、パケット複製部181に送られる。
【0104】
パケット複製部181は、I/Oデバイス160から発行されてポート180から転送されたパケットS180がメモリライト要求パケットである時に、パケットS180のRIDと、マイグレーション対象レジスタ101から得たRID情報S101を比較する。
【0105】
RIDが一致するパケットに関しては、マイグレーション対象のI/Oデバイスからのパケットであると判定する。この場合、パケット複製部181は、パケットS180を、パケットS113T、パケットS181Tの2個に複製する。パケットS113Tはポート113に送られる。パケットS181Tは、パケット解析部182に送られる。また、パケット複製部181は、パケットを複製したことを、パケット複製通知信号S181Nとして、メモリコピー制御部120に通知する。
【0106】
パケット複製部181は、パケットS180のRIDと、マイグレーション対象レジスタ101から得たRID情報S101が一致しないパケットに関しては、パケットS180を、複製せずにパケットS113Tとして、ポート113にのみ送る。
【0107】
パケット解析部182は、パケット複製部181から送られてきたメモリライト要求パケットS181Tを解析して、データS182D、アドレスS182A、及び、データ長S182Lに分解する。
【0108】
マージ部133は、図3に示すように、データS132Dに、データS182Dを上書きしたデータS133Dをセレクタ134に送る。
【0109】
データS132Dは、4KBアラインに沿った4KBデータである。データS182Dは、4KB以下のデータであり、4KBアラインを超えることは無い。図3の例では、データS182Dは256Byteのデータ長である。
【0110】
セレクタ134は、メモリコピー制御部120からのセレクト信号S134によって、データS182D、データS133D、及び、データS132Dのうち、1つを選択して、データS134Dとしてメモリライト要求パケット生成部130に送る。
【0111】
図16に、I/Oスイッチ設定レジスタ116の構成の一例を示す。また、I/Oスイッチ設定レジスタ116の設定例と、その設定によって構成されるI/Oスイッチ110のポート間のツリーの例を図17a、図17b、図18a、図18bに示す。
【0112】
図16はI/Oスイッチ設定レジスタ116の構成の一例である。I/Oスイッチ設定レジスタ116は、図示したような記憶領域を有するレジスタとして構成できる。この例では、第1のツリーから第4のツリーまで、合計4個のツリーに対して、それぞれ6個のエントリがあり、合計で24個のレジスタとして構成できる。また、各レジスタは、I/Oスイッチ110が有するポートを識別するポート番号、ないしは、何れのポートも属さないことを示す情報を保持することができる。
【0113】
本実施の形態のデータ転送装置100のI/Oスイッチ110では、ポート111、112、113、114、115の5個のポートを有している。これに加えて、何れのポートも属さないことを示す情報を表現できれば良いので、6種類の情報が表現できれば良い。よって、前記した各レジスタは、それぞれ3bitあれば実装することができる。
【0114】
図17aに、マイグレーション前のI/Oスイッチ設定レジスタ116の設定例を示す。この設定によって、I/Oスイッチ110では図17bに示すようなツリーが構成される。
【0115】
図18aに、マイグレーション後のI/Oスイッチ設定レジスタ116の設定例を示す。この設定によって、I/Oスイッチ110では図18bに示すようなツリーが形成される。
【0116】
図2にメモリコピー状態管理レジスタ123の詳細な構成の一例を示す。メモリコピー状態管理レジスタ123は、メモリコピーアドレス設定レジスタ201、及び、メモリコピー進行状況フラグ210から構成されている。
【0117】
メモリコピーアドレス設定レジスタ201は、メモリコピーのためにメモリリード、及び、メモリライトを行うメモリ上の領域の先頭を示すアドレスを保持する。
【0118】
メモリコピー進行状況フラグ210は、メモリコピーを実現するためのより細かい処理の進捗状況を保持する。メモリコピー進行状況フラグ210は、メモリコピー中フラグ211、メモリリード要求発行フラグ212、メモリリード応答受付フラグ213、メモリライト要求発行フラグ214から構成されている。
【0119】
メモリコピー中フラグ211は、メモリコピーを行っているか否か(メモリコピー中であるか)を保持する。
【0120】
メモリリード要求発行フラグ212は、メモリコピーアドレス設定レジスタ201で示されているメモリ領域に対して、メモリリード要求パケット生成部131がメモリリード要求パケットS114Tを発行したか否かを保持する。
【0121】
メモリリード応答受付フラグ213は、メモリコピーアドレス設定レジスタ201で示されているメモリ領域に対して発行した前記メモリリード要求パケットS114Tに対応するメモリリード応答パケットS114Rを、メモリリード応答パケット受付部132が受付完了したか否かを保持する。
【0122】
メモリライト要求発行フラグ214は、メモリコピーアドレス設定レジスタ201で示されているメモリ領域に対して、メモリライト要求パケット生成部130がメモリライト要求パケットS115Tを発行したか否かを保持する。
【0123】
図5にメモリコピー設定レジスタ121の詳細な構成の一例を示す。図5の例では、メモリコピー設定レジスタ121は、メモリコピー先頭アドレス設定レジスタ501、メモリコピー領域サイズ設定レジスタ503、メモリコピー開始要求ドアベル504から構成される。
【0124】
メモリコピー先頭アドレス設定レジスタ501は、64bitアドレスを記憶するレジスタである。前述した通り、4KBページ単位でメモリコピーを行うので、64bitアドレスの下位12bitは常に0である。よって、このレジスタを構成する上では、上位52bitのみフリップフロップ等の記憶素子を実装し、下位12bitは0に固定的に結線して良い。
【0125】
メモリコピー領域サイズ設定レジスタ503は、メモリコピーを行う領域のサイズを指定する、64bitのレジスタである。前述した通り、4KBページ単位でメモリコピーを行うため、メモリコピーを行うページ数と見做しても構わない。よって、前述したメモリコピー先頭アドレス設定レジスタ501と同様に、下位12bitが0であるため、上位52bitのみのレジスタとして実装できる。
【0126】
また、メモリコピー領域サイズ設定レジスタ503の記憶内容を64bitの数値として解釈すると、0〜{(2^64)−1}の値しか表現できず、64bitのメモリ空間すべてをメモリコピーする場合、すなわち(2^64)Bの領域を指定できない。そこで、0を(2^64)と読み替えることで、1B〜(2^64)Bのサイズを表現できるようにする。但し、前述したとおり4KBページ単位のコピーであるため、4KB〜(2^64)Bの範囲にある4KBの整数倍のサイズを指定できることになる。
【0127】
メモリコピー開始要求ドアベル504は、物理計算機150A、150B、ないしは、管理サーバ1400等の他の計算機が、メモリコピーの開始を指示するためのレジスタである。メモリコピー開始要求ドアベル504が前記計算機によって読み出されると、読み出しを契機にしてメモリコピーが開始される。そして、メモリコピーを正常に開始できたことを示すデータを、読出し結果として前記計算機に返す。また、既にメモリコピーが開始されているのにも拘わらず、メモリコピー開始要求ドアベル504が前記計算機によって読みだされた場合、エラーを示すデータを読出し結果として前記計算機に返す。
【0128】
図4は、図3の処理を実現するためのマージ部133の構成を示している。マージ部133は、セレクタ401D、セレクタ401A、マージ制御部402、バッファ403、アドレス定数405を有する。
【0129】
バッファ403は、4KBの記憶容量を有するメモリである。アドレス定数405は、12bitのアドレス000h(16進数表記)をアドレスS405Aとして供給する。
【0130】
セレクタ401Dは、セレクト信号S402によって、データS132DとデータS182Dのうち、1つを選択して、データS401Dとして、バッファ403に送る。
【0131】
セレクタ401Aは、セレクタ信号S402によって、アドレスS405AとアドレスS182Aのうち、1つを選択して、アドレスS401Aとして、バッファ403に送る。アドレスS405Aは前述した通り12bitのアドレスである。アドレスS182Aは64bitのアドレスであるため、そのうち下位12bitのみをバッファ403に送る。
【0132】
マージ制御部402は、図3に示した処理を実現するために、図4で示した各部を制御する。制御の流れを以下に示す。
【0133】
まず、マージ制御部402は、セレクト信号S402によって、セレクタ401DにデータS132Dを選択させる。また、セレクタ401Aには、アドレスS405Aを選択させる。その後、マージ制御部402はライト要求信号S403によって、バッファにデータS401Dの書込みを要求する。
【0134】
この書込みによって、メモリリード応答パケット受付部132から出力された4KBのデータS132Dが、4KBのバッファ403の先頭から末尾にかけて書込まれる。
【0135】
次に、マージ制御部402は、セレクト信号S402によって、セレクタ401DにはデータS182Dを選択させる。また、セレクタ401Aには、アドレスS182Aを選択させる。その後、マージ制御部402はライト要求信号S403によって、バッファにデータS401Dの書込みを要求する。
【0136】
この書込みによって、図3の例を引用すると、パケット解析部182から出力された256BのデータS182Dが、バッファ403に上書きされる。バッファ403に供給されているアドレスは、アドレスS182Aのうち、下位12bitである。すなわち、図3の例を引用すると、アドレス4000 0000 0000 0300h(16進数表記)のうち、下位12bitである300hである。これは、4KBのバッファ403のうち、先頭から768Bを経た後の位置を示している。
【0137】
このようにして、図3に示されているマージ処理が、図4で示したマージ部の構成要素によって実現できる。なお、マージされたデータ、すなわち上記の処理を経た後にバッファ403に記録されているデータは、データS133Dとして出力される。
【0138】
以下に、メモリコピー制御部120で行われる処理の詳細を、図6、及び、図7を用いて説明する。図7ではメモリコピーの処理を示す。そして、図6では、メモリコピー中に、マイグレーションの対象となっているI/Oデバイスから、メモリライト要求パケットが発行され、パケット複製部により複製された時に、メモリコピー制御部120が行うべき処理を示す。
【0139】
メモリコピー制御部120は、初期状態ではメモリコピーを開始していない。よって、メモリコピー中フラグ211は、初期状態では0(停止中)である。
【0140】
メモリコピー停止中の期間は、メモリコピー制御部120は特に処理を行わないので、I/Oデバイス160が発行したメモリライト要求パケットは、メモリ152Aにのみ書込まれる。
【0141】
また、メモリコピー停止中の期間は、パケット複製部181は、パケットS180を、パケットS113Tにスルーさせるだけでも良い。
【0142】
メモリコピー開始要求ドアベル504の読み出しによって、メモリコピーの開始が要求された場合、メモリコピー制御部120は、図7に示す処理を開始する。
【0143】
ステップ701では、メモリコピー制御部120がメモリコピー進行状況フラグ210を設定する。メモリコピーを開始するので、メモリコピー中フラグ211に1(コピー中)を設定する。また、メモリコピー制御部120はメモリリード要求発行フラグ212を0(発行未)、メモリリード応答受付フラグ213を0(受付未)、メモリライト要求発行フラグ214を0(発行未)にそれぞれ初期化する。
【0144】
ステップ702では、メモリコピー制御部120がメモリコピー先頭アドレス設定レジスタ501に記録されている64bitアドレスを、メモリコピーアドレス設定レジスタ201にコピーする。これ以降、メモリコピーは、メモリコピーアドレス設定レジスタ201を更新しながら行われる。
【0145】
ステップ703では、メモリコピー制御部120はセレクト信号S134を用いて、セレクタ134にデータS132Dを選択させる。これにより、メモリリード応答パケット受付部132が出力する4KBのデータS132Dが、データS134Dとしてメモリライト要求パケット生成部130に入力される(但し、この時点ではメモリリード応答パケットをまだ受け付けていないので、データS132Dは有効なデータではない)。
【0146】
ステップ704では、メモリコピー制御部120はメモリコピーアドレス設定レジスタ201に記録されているアドレスから、4KBのデータを読み出すためのメモリリード要求パケットの発行を、要求信号S131でメモリリード要求パケット生成部131に要求する。また、この処理により、メモリコピーアドレス設定レジスタ201で示されているアドレスに対して、メモリリード要求パケットを発行した(発行済)ことになるので、メモリリード要求発行フラグ212に1(発行済)を設定する。
【0147】
ステップ705では、ステップ704で発行したメモリリード要求パケットに対応するメモリリード応答パケットが、メモリリード応答パケット受付部132に到着したことを示す、メモリリード応答パケット到着通知S132Nを待つ。メモリリード応答パケット到着通知S132Nを受信することによって、メモリコピーアドレス設定レジスタ201で示されているアドレスに関して、メモリリード応答パケットを受け取った(受付済)ことになるので、メモリコピー制御部120はメモリリード応答受付フラグ213に1(受付済)を設定する。
【0148】
ステップ706では、メモリコピー制御部120がメモリコピーアドレス設定レジスタ201に記録されているアドレスに対して、4KBのデータS134Dを書込むためのメモリライト要求パケットの発行を、要求信号S130でメモリライト要求パケット生成部130に要求する。また、この処理により、メモリコピーアドレス設定レジスタ201で示されているアドレスに対して、メモリライト要求パケットを発行した(発行済)ことになるので、メモリコピー制御部120はメモリライト要求発行フラグ214に1(発行済)を設定する。
【0149】
ステップ703でセレクタ134はデータS132Dを選択しており、ステップ705でメモリリード応答パケットの到着を待っているので、ステップ706が実行される時点では、メモリリード応答パケットに含まれる4KBのデータS132Dが、データS134Dとして出力されている。
【0150】
ステップ703からステップ706までの過程で、マイグレーション元のメモリを構成する1ページ(4KB)を、マイグレーション先のメモリにコピーすることができた。そこで、ステップ707では、次のページをコピーするために、メモリコピーアドレス設定レジスタ201を更新する。
【0151】
ステップ707では、メモリコピー制御部120がメモリコピーアドレス設定レジスタ201に4K(10進数表記で4096、16進数表記で1000h)を加算する。また、メモリコピーアドレス設定レジスタ201の更新に合わせて、メモリリード要求発行フラグ212を0(発行未)、メモリリード応答受付フラグ213を0(受付未)、及び、メモリライト要求発行フラグ214を1(発行未)にそれぞれ設定する。
【0152】
ステップ708では、メモリコピー制御部120がメモリコピー設定レジスタ121で指定されたメモリ領域を全てコピーし終わったか否かを判定する。ステップ708の段階では、メモリコピーアドレス設定レジスタ201には、次にコピーするページの先頭アドレスが記録されている。メモリコピー設定レジスタ121では、メモリコピー先頭アドレス設定レジスタ501とメモリコピー領域サイズ設定レジスタ503の組み合わせで、メモリ領域を示している。
【0153】
メモリコピー先頭アドレス設定レジスタ501に記録されているアドレスと、メモリコピー領域サイズ設定レジスタ503に記録されているサイズの和は、メモリ領域の最後のアドレスから1番地進んだところを示している。そこで、メモリコピー制御部120は、
(メモリコピー先頭アドレス設定レジスタ501+メモリコピー領域サイズ設定レジスタ503)>メモリコピーアドレス設定レジスタ201
が真である時には、メモリコピー設定レジスタ121で指定されたメモリ領域を全てコピーし終わっていないと判定して、ステップ703に戻って、コピーを継続する。偽である時には、全てコピーし終わったと判定して、ステップ709へ進む。
【0154】
ステップ709では、メモリコピーが完了したので、メモリコピー制御部120はメモリコピー中フラグ211に0(停止中)を設定してメモリコピーを終了する。
【0155】
次に、パケット複製部181から、パケット複製通知信号S181Nを、メモリコピー制御部120が受け取った時の処理を述べる。
【0156】
パケット複製通知信号S181Nを受け取った時、メモリコピーを行っていない、すなわち、メモリコピー中フラグ211が0(停止中)であれば、メモリコピー制御部120は特に処理を行わない。また、パケット複製部181は、パケットの複製に先だって、メモリコピー状態管理レジスタ123のメモリコピー中フラグ211を参照し、0(停止中)であれば複製を行わなくても良い。
【0157】
パケット複製通知信号S181Nを受け取った時、メモリコピーを行っている、すなわち、メモリコピー中フラグ211が1(コピー中)であれば、メモリコピー制御部120は、アドレス判定部125に対してアドレスS182Aが、メモリコピー済の領域、メモリコピー中の領域、メモリコピー前の領域のいずれに属するものなのかの判定を要求する。ここで、アドレスS182Aは、前記パケット複製通知信号S181Nによって複製が通知されたメモリライト要求パケットS181Tを、パケット解析部182が解析して得たものである。
【0158】
次に、アドレス判定部125の処理を、図6を用いて詳細に説明する。アドレス判定部125は、パケット複製部181が複製したメモリライト要求パケットS181Tを、パケット解析部182が解析して得られたアドレスS182Aと、メモリコピーアドレス設定レジスタ201に記録されているアドレスの比較を行う。また、アドレス判定部125はメモリコピー進行状況フラグ210のフラグを判定する。
【0159】
ステップ601では、アドレス判定部125がアドレスS182Aの上位52bitが、メモリコピーアドレス設定レジスタ201の上位52bitより大きいか否かを判定する。判定結果が真であれば、メモリライト要求パケットS181Tは、メモリコピーが行われる前のページに対するものである(ステップ611でメモリコピー前と判定する)。判定結果が偽であれば、ステップ602へ移る。
【0160】
ステップ602では、アドレス判定部125はアドレスS182Aの上位52bitが、メモリコピーアドレス設定レジスタ201の上位52bitより小さいか否かを判定する。判定結果が真であれば、メモリライト要求パケットS181Tは、メモリコピーが既に行われたページに対するものである(ステップ613でメモリコピー済と判定する)。判定結果が偽であれば、ステップ603に移る。
【0161】
ステップ603では、アドレス判定部125はメモリリード要求発行フラグ212を参照して、メモリリード要求パケットが発行済(1)であるか否かを判定する。メモリリード要求パケットが発行済(1)である場合には、ステップ604へ移行する。メモリリード要求パケットを発行する前(0)であった時には、まだメモリコピーが行われていないものと見做して、ステップ611でメモリコピー前と判定する。
【0162】
ステップ604では、アドレス判定部125がメモリリード応答受付フラグ213を参照して、メモリリード応答パケットを受付済(1)であるか否かを判定する。判定結果がメモリリード応答パケットを受付済(1)である場合には、ステップ605へ移行する。まだメモリリード応答パケットを受け付けていない(0)場合には、アドレス判定部125は受付済(1)になるまで待つ。
【0163】
ステップ605では、アドレス判定部125がメモリライト要求発行フラグ214を参照して、メモリライト要求パケットが発行済(1)であるか否かを判定する。判定結果がメモリライト要求パケットの発行済(1)である場合には、既にメモリコピーが行われたものとみなして、ステップ613でメモリコピー済と判定する。判定結果が、メモリリード要求パケットを発行する前(0)であった時には、ステップ612でメモリコピー中と判定する。
【0164】
次に、ステップ611、612、613でメモリコピー前、メモリコピー中、メモリコピー済と判定された後に、メモリコピー制御部120が行う処理を、図8、及び、図9を元に説明する。また、メモリコピー制御部120の処理によって行われる処理を、図13、図14、及び、図15を元に説明する。
【0165】
図6のステップ611でメモリコピー前と判定された場合、メモリライト要求パケットS181Tは、メモリコピーが行われる前のページに対するものであるから、メモリコピー制御部120は特に何も行わない。よって、図13に示すように、I/Oデバイス160が発行したメモリライト要求パケットS161Tが、単にメモリ152Aに書込まれるだけである。
【0166】
図6のステップ613でメモリコピー済と判定された場合、メモリライト要求パケットS181Tは、メモリコピーが既に行われたページに対するものであるから、メモリコピー制御部120は、メモリライト要求パケットS181Tを、メモリコピー先のメモリにも書込む。
【0167】
そのために、メモリコピー制御部120は、ステップ613でメモリコピー済と判定された場合に、図8で示す処理を行う。
【0168】
ステップ801において、メモリコピー制御部120は、図7で示したメモリコピーを一時停止する。
【0169】
ステップ802において、メモリコピー制御部120は、セレクト信号S134を介して、セレクタ134にデータS182Dを選択させる。このデータS182Dは、メモリライト要求パケットS181Tに含まれるデータである。
【0170】
ステップ803において、メモリコピー制御部120は、メモリライト要求パケット生成部130に、メモリライト要求パケットの発行を、要求信号S130で要求する。メモリライト要求パケットの対象アドレスはアドレスS182A、転送長はデータ長S182Lとする。なお、データはステップ802で選択されたデータS182Dが、データS134Dとしてメモリライト要求パケット生成部130に供給されている。
【0171】
ステップ803で発行されるメモリライト要求パケットは、前記メモリライト要求パケットS181Tと、同じ対象アドレス、同じデータ、及び、同じデータ長のものである。よって、メモリライト要求パケットS181Tを、メモリコピー元のメモリとメモリコピー先のメモリの両方に書込んだことに等しい。
【0172】
以上の処理で、図14に示すように、メモリコピー制御部120は、メモリライト要求パケットS181Tを、メモリコピー先のメモリ152Bにも書込むことが出来る。
【0173】
その後、ステップ801で一時停止したメモリコピーを再開するために、ステップ804、及び、ステップ805を実行する。ステップ804では、セレクタ134の選択をステップ802以前の状態に戻す。すなわち、セレクト信号S134によって、セレクタ134にデータS132Dを選択させる。その後、メモリコピー制御部120は、ステップ805で、一時停止していた図7のメモリコピーを再開する。
【0174】
ステップ612でメモリコピー中と判定された場合、メモリライト要求パケットS181Tが対象としているページを読み出したメモリリード応答パケットS114Rが、メモリリード応答パケット受付部132に到着している。そこで、メモリコピー制御部120は、メモリライト要求パケットS181Tを、メモリコピーのためのメモリライトにマージして、メモリコピー先のメモリにも書込む。
【0175】
そのために、メモリコピー制御部120は、ステップ612でメモリコピー中と判定された場合に、図9で示す処理を行う。
【0176】
ステップ901において、メモリコピー制御部120は、図7で示したメモリコピーを一時停止する。メモリコピー中と判定される条件から、ステップ705を実行後、ステップ706を実行前の状態で一時停止することになる。
【0177】
ステップ902において、メモリコピー制御部120は、セレクト信号S134を介して、セレクタ134にデータS133Dを選択させる。このデータS133Dは、メモリライト要求パケットS181Tに含まれるデータS182Dと、メモリリード応答パケットS114Rに含まれるデータS132Dをマージしたものである。
【0178】
ステップ903において、メモリコピー制御部120は、図7で示したメモリコピーを再開する。これにより、図7のステップ706が実行され、メモリコピーのためのメモリライト要求パケットに、I/Oデバイス発メモリライト要求パケットがマージされて、メモリコピー先のメモリに書込まれる。
【0179】
上記した、図9の処理、及び、図7の処理が複合して行われる処理を、図15に示す。図15に示すように、メモリコピー中の領域に対してI/Oデバイス160がメモリライト要求パケットを発行した場合でも、メモリ152A、及び、メモリ152Bの内容に相違が生じないようにすることが、本発明の一実施の形態であるデータ転送装置100で可能になっている。
【0180】
なお、同一物理計算機内での仮想計算機間のマイグレーションに関しても、上記と同様の処理で実現できる。物理計算機150Aの上で処理する仮想計算機の間でマイグレーションを行う場合、I/Oスイッチ設定レジスタ116には、物理計算機150Aを頂点とする第1のツリーに、ポート113、114、115を所属させる。
【0181】
また、上記の実施の形態では、メモリコピーを行う上で、メモリコピー元とメモリコピー先のアドレスが同一であると見做していたが、同一物理計算機内での仮想計算機間のマイグレーションの場合、当然のことながら、メモリコピー元とメモリコピー先のホスト物理アドレスは異なる。そこで、同一物理計算機内での仮想計算機間のマイグレーションの場合には、上述したようなアドレス変換機構が必要となる。そして、メモリコピー先頭アドレス設定レジスタ501には、ホスト物理アドレスではなく、ゲスト物理アドレスを設定する。
【0182】
もしくは、メモリコピー元のアドレスと、メモリコピー先のアドレスを別に保持する構成にしても良い。この場合、メモリコピー先頭アドレス設定レジスタ501、メモリコピーアドレス設定レジスタ201が、それぞれ、メモリコピー元のアドレスを保持するためのレジスタと、メモリコピー先のアドレスを保持するためのレジスタの2系統必要になる。
【0183】
<第2の実施の形態>
次に、本発明の第2の実施の形態を説明する。図10は、本発明の第2の実施の形態において、データ転送装置のメモリコピー制御部により実施される処理を示すフローチャートである。第2の実施の形態は、第1の実施の形態において、図6で示したメモリコピー制御部120の処理の内、アドレス判定部125の処理が異なる形態である。
【0184】
アドレス判定部125の処理以外は、第1の実施の形態と同じであるため、説明を省略する。また、アドレス判定部125の処理が変わることにより、第1の実施の形態で示したデータ転送装置100のうち、マージ部133は使われなくなるため、第2の実施の形態では、マージ部133を省いてデータ転送装置100を構成しても良い。
【0185】
本発明の第2の実施の形態におけるアドレス判定部125の処理を、図10を用いて説明する。
【0186】
図10に示すアドレス判定部125の処理では、メモリコピー中と判定されるべき状況で、メモリコピー済と判定できるようになるまで待機することが、第1の実施の形態である図6と異なる。
【0187】
ステップ1001、1002、1003、1004はそれぞれ、図6のステップ601、602、603、604と同じであるので説明を省略する。また、ステップ1011でメモリコピー前と判定された際の処理は、第1の実施の形態と同様である。ステップ1013でメモリコピー済と判定された際の処理に関しても、第1の実施の形態と同様である。
【0188】
図10では、ステップ1005において、メモリライト要求発行フラグ214を参照して、メモリライト要求パケットが発行済(1)であるか否かを判定する。メモリライト要求パケットが発行済(1)である場合には、既にメモリコピーが行われたものとみなして、ステップ1013でメモリコピー済と判定する。メモリリード要求パケットを発行する前(0)であった時には、発行済(1)になるまで待つ。
【0189】
これにより、アドレス判定部125では、メモリライト要求パケットが発行前の場合には、メモリライト要求パケットが発行済(1)となるまで待機することで、前記第1実施形態のようなメモリコピー中との判定は行われず、メモリコピー前、ないしは、メモリコピー済との判定しか行われない。メモリコピー中と判定した場合に、第1の実施の形態においては図15で示した処理が行われていたが、第2の実施の形態においては、前記ステップ1005で行われる待ちによって、図15で示した処理を行うべきところを、図14で示した処理で代替することができる。
【0190】
本実施の形態は、第1の実施の形態と比較して、マージ部133が不要となるため、データ転送装置100をLSI等に実装する場合の物量制約がある場合に、有効な実施の形態となる。
【0191】
<第3の実施の形態>
次に、本発明の第3の実施の形態を説明する。第1の実施の形態、ないしは、第2の実施の形態において、2台の物理計算機150A、150Bと、1台のI/Oデバイス160で実施の形態を説明していた。また、前記第1または第2の実施形態では、マイグレーション元の物理計算機とマイグレーション先の物理計算機の2台の物理計算機を1組として数えると、同時に1組のマイグレーションを行うデータ転送装置100の例を示した。
【0192】
第3の実施の形態では、第1の実施の形態、ないしは、第2の実施の形態を拡張し、任意の台数の物理計算機と、任意の台数のI/Oデバイスで実施する形態を示す。また、第3の実施の形態では、任意の複数組のマイグレーションを同時に行うための実施の形態を示す。
【0193】
図11A、図11Bに示すデータ転送装置1100は、マイグレーション対象I/Oデバイス設定レジスタ1101、マイグレーション対象物理計算機設定レジスタ1102、I/Oスイッチ1110、メモリコピー部1120X、1120Y、セレクタ1130TX、1130NX、1130TY、1130NY、パケット複製部1140A、1140B、1140C、1140D、及びI/Oスイッチ設定レジスタ1116によって構成される。
【0194】
図11A、図11Bでは、4台の物理計算機1150A、1150B、1150C、1150Dで実施した形態を示しているが、これは任意の台数に拡張することが可能である。その場合には、ポート1111A、1111B、1111C、1111D、パケット複製部1140A、1140B、1140C、1140Dを、物理計算機の台数に応じて増やす必要がある。また、セレクタ1130TX、1130NX、1130TY、1130NYの入力数も、パケット複製部の増加に応じて増やす必要がある。
【0195】
また、図11A、図11Bでは4台のI/Oデバイス1160A、1160B、1160C、1160Dで実施した形態となっている。これに関しても、任意の台数に拡張することが可能である。その場合には、ポート1113A、1113B、1113C、1113Dを、I/Oデバイスの台数に応じて増やす必要がある。
【0196】
図11A、図11Bのデータ転送装置1100が同時にマイグレーションすることができる組数は、メモリコピー部1120X、1120Yの数によって決まる。図11Bの例では、メモリコピー部1120X、1120Yの2個であるため、同時にマイグレーションできるのは2組である。また、メモリコピー部の個数を増やして、同時にマイグレーションできる組数をさらに増加させる場合には、セレクタ1130TX、1130NX、1130TY、1130NY、ポート1114X、1115X、1114Y、1115Yもそれに応じて増やす必要がある。
【0197】
物理計算機1150A、1150B、1150C、1150Dは、既に説明した物理計算機150A、150Bと同様のものであるため説明を省略する。
【0198】
パケット複製部1140A、1140B、1140C、1140Dは、既に説明したパケット複製部181と同様のものであるため説明を省略する。
【0199】
I/Oスイッチ1110は、I/Oスイッチ110のポート数を増やしたものであるが、基本的な処理は前記第1の実施の形態と共通しているので、説明を省略する。また、I/Oスイッチ1110が有するI/Oスイッチ設定レジスタ1116も同様に、第1の実施の形態で説明した構成に類似する。
【0200】
メモリコピー部1120X、1120Yは、1組のマイグレーションを行うために必要な構成部材を1つのメモリコピー部として纏めたものである。メモリコピー部1120X、1120Yの構成は図12に示す。なお、メモリコピー部1120X、1120Yの総称はメモリコピー部1200とする。
【0201】
図12に示すメモリコピー部1200は、図11Bのメモリコピー部1120X、1120Yそれぞれに対して共通の構成である。なお、図11BのS1114XR、S1114YRは、図12ではS1220Rに対応する。図11BのS1114XT、S1114YTは、図12ではS1220Tに対応する。図11BのS1115XT、S1115YTは、図12ではS1230Tに対応する。図11BのS1130TX、S1130TYは、図12ではS1210Tに対応する。図11BのS1130NX、S1130NYは、図12ではS1210Nに対応する。
【0202】
メモリコピー部1200を構成する部材は、第1の実施の形態で示したデータ転送装置100のメモリコピー制御部120と共通である。図12では、図1Bと共通の部材に対しては、図1Bと共通の符号を付しているので、第1の実施の形態での説明を参照されたい。
【0203】
図11A、図11Bでは、複数のI/Oデバイス1160A、1160B、1160C、1160Dをマイグレーション対象I/Oデバイスとするために、パケット複製部1140A、1140B、1140C、1140Dを、I/Oスイッチ1110と物理計算機1150A、1150B、1150C、1150Dの間に設ける。その理由を以下に説明する。
【0204】
例えば、I/Oデバイス1160A、1160B、1160C、1160Dがそれぞれ同時並行的に物理計算機1150Aに対してパケットを発行する場合、I/Oスイッチ1110はポート1113A、1113B、1113C、1113Dに入力されたパケットを調停し、ポート1111Aから出力する。この調停の規則はI/Oインタフェースの規格では定められておらず、I/Oスイッチの実装依存であることが多い。本実施の形態で用いているPCI Expressの場合も、複数のI/Oデバイスからのパケットを調停する規則は定義されていない。
【0205】
特に、I/Oデバイス1160A、1160B、1160C、1160Dから、同じアドレスに対するメモリライト要求パケットが発行される時、上述した調停の順序が重要となる。例えば、調停の結果、I/Oデバイス1160Dから発行されたメモリライト要求パケットが最後にポート1111Aに出力された場合、メモリ上にはI/Oデバイス1160Dによる書込みが残ることになる。
【0206】
そのため、パケット複製部1140A、1140B、1140C、1140Dは、I/Oスイッチ1110によって調停された後のメモリライト要求パケットを複製する。そのために、パケット複製部1140A、1140B、1140C、1140Dを、I/Oスイッチ1110と物理計算機1150A、1150B、1150C、1150Dの間に設けている。
【0207】
なお、その他の実施の形態として、I/Oスイッチ1110と同じ調停を行うアービタを設けることで、第1の実施の形態と同様に、パケット複製部1140A〜1140DをI/Oスイッチ1110とI/Oデバイス1160A〜1160Dの間に設けることも可能ではある。例えば、データ転送装置1100をLSI等へ実装する上で、配置や配線の制約から上述したようにI/Oスイッチ1110と物理計算機1150A、1150B、1150C、1150Dの間にパケット複製部1140A、1140B、1140C、1140Dを設けることが困難である場合には、このような構成を取っても良い。
【0208】
マイグレーション対象I/Oデバイス設定レジスタ1101は、第1の実施の形態で示したマイグレーション対象I/Oデバイス設定レジスタ101と同様に、マイグレーション対象のI/Oデバイスを識別する識別子を保持するレジスタである。本実施の形態においては、4個のパケット複製部1140A、1140B、1140C、1140Dがあり、それぞれに対して少なくとも1つ以上のマイグレーション対象のI/OデバイスのRIDを識別子として保持する。
【0209】
マイグレーション対象物理計算機設定レジスタ1102は、メモリコピー部1120X、1120Yがそれぞれ担当するマイグレーション先物理計算機と、マイグレーション元物理計算機が接続されているポートを示す識別情報が記録されている。例えば、メモリコピー部1120Xが物理計算機1150Aから物理計算機1150Bへのマイグレーションを担当し、メモリコピー部1120Yが物理計算機1150Cから物理計算機1150Dへのマイグレーションを担当する場合、マイグレーション対象物理計算機設定レジスタには、メモリコピー部1120Xの担当するマイグレーション元はポート1111A、マイグレーション先は1111B、メモリコピー部1120Yの担当するマイグレーション元はポート1111C、マイグレーション先はポート1111Dであるというように設定される。
【0210】
マイグレーション対象物理計算機設定レジスタ1102の設定内容S1102に基づいて、セレクタ1130TX、1130NX、1130TY、1130NYは、それぞれが接続されているメモリコピー部1120X、1120Yが担うべきマイグレーション元計算機のポートに対応するパケットと受付通知信号を選択する。
【0211】
例えば、上記の設定例の場合、セレクタ1130TXは、ポート1111Aに対応するパケット複製部1140Aからの出力であるパケットS1140ATを選択する。また、セレクタ1130NXは、パケット複製部1140Aからのパケット複製通知信号S1140ANを選択する。
【0212】
また、I/Oスイッチ1110で行われるルーティングは、第1の実施の形態、及び、第2の実施の形態と同様に、I/Oスイッチ1110が有するI/Oスイッチ設定レジスタ1116で設定されるが、メモリコピー部1120X、1120Yのルーティングに関しては、I/Oスイッチ1110が設定内容S1102を参照して決定しても良い。
【0213】
<第4の実施の形態>
図19A、図19Bは、本発明の第4の実施の形態における情報システムの構成を示すブロック図である。第4の実施の形態では、前記第1の実施の形態または第2の実施の形態に示した物理計算機150A、150Bで仮想計算機を実行した場合にマイグレーションを行う例を示す。
【0214】
図19Aにおいて、物理計算機150A、150Bは、前記第1の実施の形態と同一のハードウェアで、仮想化制御部としてのVMM1740A、1740Bを稼動させ、VMM1740A、1740B上でゲストOS1744A、1745A、1744B、1745Bを実行する仮想計算機1742A、1743A、1742B、1743Bを提供する点が前記第1または第2の実施の形態と相違する。
【0215】
また、前記第1の実施の形態の図1A、図1Bに示した管理サーバ1400に代わって、VMM1740A、1740Bを制御して仮想計算機のマイグレーションを実施するマイグレーション管理部1791を実行する装置管理部1790を備える点が、第1または第2の実施の形態と相違する。
【0216】
VMM1740A、1740Bは、物理計算機150A、150Bの計算機資源を分割または仮想化して仮想計算機1742A、1743A、1742B、1743Bに提供する。各VMM1740A、1740Bは、装置管理部1790のマイグレーション管理部1791からの指令を受け付けてマイグレーションを実行するエージェントとしてのマイグレーション制御部1741A、1741Bを備える。
【0217】
VMM1740A、1740Bのマイグレーション制御部1741A、1741Bは、マイグレーション管理部1791からの要求によって、マイグレーションのためのメモリコピーの準備(メモリ領域の確保、仮想計算機へのCPU資源割当停止、など)を行い、メモリコピー設定レジスタ121のメモリコピー開始要求ドアベル504を読み込んで、マイグレーションの開始をデータ転送装置100に指令する。
【0218】
なお、装置管理部1790は、CPUとメモリ及び管理ネットワークのインタフェースを備えた管理計算機であり、例えば、SVP(Service Processor)として実装することができる。装置管理部1790は、所定の条件や所定のタイミングなどでマイグレーションの開始をVMM1740A、1740Bに指令する。このため、装置管理部1790と物理計算機150A、150B及びデータ転送装置100は管理ネットワークS1793A、S1793Bで接続される。管理ネットワークは、例えば、物理計算機150A、150Bがブレードサーバなどの場合では、シャシ内のブレード(物理計算機)と、シャシ内のSVPを接続する内部のネットワークで構成される。
【0219】
なお、装置管理部1790がマイグレーションを指令する所定の条件は、例えば、物理計算機150A、150Bの管理者またはユーザがマイグレーションを指令したとき、などである。
【0220】
データ転送装置100は、装置管理部(SVP)1790が、データ転送装置100内の各レジスタ(I/Oスイッチ設定レジスタ116、マイグレーション対象I/Oデバイス設定レジスタ101)を設定するためのインタフェースS1794を備える。このインタフェースS1794は、例えば、PCI Expressのようなインタフェースでもよいし、データ転送量が少ない(単にレジスタを設定するだけ)ので、I2Cなどのより簡易なインタフェースで構成してもよい。また、データ転送装置100内の各レジスタの設定は、マイグレーション制御部1741A、1741Bを経由して、各レジスタを設定させるように構成してもよい。この場合、上記インタフェースS1794を省略することができる。
【0221】
次に、仮想化環境におけるマイグレーションについて説明する。
【0222】
物理計算機150A、150Bの管理者またはユーザは、装置管理部1790のマイグレーション管理部1791に、マイグレーション元サーバ、マイグレーション先サーバ、マイグレーション対象I/Oデバイスを指定して、マイグレーション開始を要求する。
【0223】
マイグレーション管理部1791は、インタフェースS1794経由で、I/Oスイッチ設定レジスタ116とマイグレーション対象I/Oデバイス設定レジスタ101を設定する。その後、マイグレーション管理部1791は、管理ネットワークS1793A及びS1793B経由でVMM1740A、1740B内のマイグレーション制御部1741A、1741Bにマイグレーションの開始を指令する。
【0224】
装置管理部1790は、管理者またはユーザが指定したマイグレーション元サーバ、マイグレーション先サーバから、I/Oスイッチ設定レジスタ116の設定内容を決定してデータ転送装置100に指令する。また、装置管理部1790は、管理者またはユーザが指定したマイグレーション対象I/Oデバイスから、マイグレーション対象I/Oデバイス設定レジスタ101の設定内容を決定してデータ転送装置100に指令する。
【0225】
以降の説明は、マイグレーション制御部1741A側がマイグレーション元、1741B側がマイグレーション先として説明する。
【0226】
マイグレーション先のマイグレーション制御部1741Bは、マイグレーション先となる仮想計算機を用意し、CPU及びメモリ領域を確保する。
【0227】
マイグレーション元のマイグレーション制御部1741Aは、マイグレーション元となる仮想計算機へのCPU資源の割当を停止する。この処理は、マイグレーション元のCPU151Aからメモリライトが発せられるのを防ぐためである。但し、CPU資源の割当を停止せず、CPU151Aがメモリライトした箇所をマイグレーション制御部1741Aなどが記録しておいて、後で再コピーしてもよい。
【0228】
その後、マイグレーション制御部1741Aは、データ転送装置100のメモリコピー設定レジスタ121に所定のパラメータを設定して、メモリコピーを開始させる。
【0229】
メモリコピーの処理は前記第1または第2の実施の形態と同様である。ただし、物理計算機150A上の仮想計算機1742Aから、物理計算機150B上の仮想計算機1742Bへのマイグレーションの場合では、物理計算機150Aのメモリ152A内でマイグレーション元の仮想計算機1742Aに割り当てられている領域を、物理計算機150Bのメモリ152B内でマイグレーション先の仮想計算機に割り当てられる領域にコピーすることで行う点が、前記第1または第2の実施の形態と異なる。その他については、前記第1または第2の実施の形態と同様である。
【0230】
以上により、仮想化環境においても、I/Oデバイス160からマイグレーション元の仮想計算機1742Aのメモリ152Aの領域に対してメモリライト要求があったときに、データ転送装置100から物理計算機150Aの仮想計算機1742Aに対してメモリコピーのためのメモリリード要求が発行されており、かつ、マイグレーション先の物理計算機150Bの仮想計算機1742Bにメモリ書込み要求が発行される前であれば、I/Oデバイス160からのメモリライト要求のデータと、メモリ152Aからのメモリリード要求の応答である仮想計算機1742Aの領域のデータとをデータ転送装置100がマージして、マイグレーション先の仮想計算機1742Bの領域のメモリ152Bに書き込むことができる。これにより、前記従来例のようにI/Oデバイス160からのメモリライト要求を抑止することなくマイグレーションのためのメモリコピーを継続することが可能となって、前記従来例のような再メモリコピーを不要にすることで、より高速にマイグレーションを実現することが可能となる。また、仮想計算機1742Aに対してメモリコピーのためのメモリリード要求が発行されており、かつ、マイグレーション先の物理計算機150Bの仮想計算機1742Bにメモリ書込み要求が発行される前であれば、メモリコピーのためのメモリリード要求に対する応答を受信するまで待機する。これにより、仮想化環境においても、マイグレーション中にI/Oデバイス160からのメモリライト要求を抑止することなく、また、前記従来例のようなdirtyなページが発生しないことを保証でき、信頼性を保ちながらライブマイグレーションを実現できるのである。
【0231】
そして、前記従来例のようにVMMがマイグレーション対象のメモリ領域について、コピー済み領域、コピー中領域、未コピー領域を分類する必要がないので、既存のVMMを利用することができ、計算機システムの構成を簡易にすることができる。
【0232】
I/Oデバイス160からマイグレーション元の仮想計算機1742Aのメモリ152Aの領域に対してメモリライト要求があったときに、当該メモリ152Aの領域のデータをマイグレーション先の仮想計算機1742Bのメモリ152Bの領域へ書込み要求の発行が完了していた場合には、I/Oデバイス160からのメモリライト要求をマイグレーション先へ複製して書き込む。このとき、データ転送装置100は、マイグレーション先へのメモリ書込みを、複製されたI/Oデバイス160からのメモリライト要求が、発行済みのメモリコピーによるメモリ152Bへのメモリライト要求を追い越すことを防止するため、同じポート115から発行する。これにより、I/Oデバイス160からのメモリライト要求と、マイグレーションのメモリライト要求をI/Oスイッチ110の同一ポートから発行することにより、前記従来例のようなdirtyなページが発生しないことを保証できる。
【0233】
なお、上記各実施の形態においては、パケット複製部181とメモリコピー制御部120を分離した構成を示したが、メモリコピー制御部120内にパケット複製部181を含めるようにしてもよい。
【0234】
以上、本発明者によってなされた発明を、実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【産業上の利用可能性】
【0235】
以上のように、本発明は、複数の物理計算機とI/Oデバイス間のデータ転送を行い、物理計算機間でマイグレーションを行うデータ転送装置あるいはI/Oスイッチに適用することができる。また、本発明は複数の物理計算機とI/Oデバイスに接続されたデータ転送装置を介してマイグレーションを行う計算機システムに適用することができ、特にライブマイグレーションを行う計算機システムに好適である。
【符号の説明】
【0236】
100 データ転送装置
101 マイグレーション対象I/Oデバイス設定レジスタ
110 I/Oスイッチ
111、112、113、114、115 ポート
116 I/Oスイッチ設定レジスタ
120 メモリコピー制御部
121 メモリコピー設定レジスタ
123 メモリコピー状態管理レジスタ
125 アドレス判定部
130 メモリライト要求パケット生成部
131 メモリリード要求パケット生成部
132 メモリリード応答パケット受付部
133 マージ部
134 セレクタ
150A、150B 物理計算機
155A、155B ポート
160 I/Oデバイス
161 ポート
180 ポート
181 パケット複製部
182 パケット解析部
1100 データ転送装置
1101 マイグレーション対象I/Oデバイス設定レジスタ
1102 マイグレーション対象物理計算機設定レジスタ
1110 I/Oスイッチ
1111A、1111B、1111C、1111D、1113A、1113B、1113C、1113D、1114X、1114Y、1115X、1115Y ポート
1116 I/Oスイッチ設定レジスタ
1120X、1120Y メモリコピー部
1130TX、1130NX、1130TY、1130NY セレクタ
1140A、1140B、1140C、1140D パケット複製部
1150A、1150B、1150C、1150D 物理計算機
1200 メモリコピー部

【特許請求の範囲】
【請求項1】
第1のメモリを備えた第1の計算機と接続される第1のインタフェースと、
第2のメモリを備えた第2の計算機と接続される第2のインタフェースと、
I/Oデバイスと接続される第3のインタフェースと、
前記第1のインタフェースと、第2のインタフェース及び第3のインタフェースを接続するI/Oスイッチと、
前記第1の計算機の第1のメモリからデータを読み出すための第1のメモリリード要求を発行し、前記第1のメモリリード要求に対応する第1のメモリリード応答に含まれるデータを受け付けて、前記第2の計算機の第2のメモリに前記受け付けたデータを書込むための第1のメモリライト要求を発行するメモリコピー部と、
を有することを特徴とするデータ転送装置。
【請求項2】
請求項1に記載のデータ転送装置であって、
前記メモリコピー部は、
前記第1のメモリリード要求に含まれる前記第1のメモリの対象アドレスを保持するアドレス設定レジスタと、
前記第1のメモリリード要求を発行したことを記憶するメモリリード要求発行フラグと、
前記第1のメモリリード応答を受付けたことを記憶するメモリリード応答受付フラグと、
前記第1のメモリライト要求を発行したことを記憶するメモリライト要求発行フラグと、を有し、
前記データ転送装置は、
前記第3のインタフェースを介して前記データ転送装置に入力された第2のメモリライト要求を受け付けて、前記第2のメモリライト要求の対象アドレスと、前記アドレス設定レジスタの保持するアドレスとを比較し、前記メモリリード要求発行フラグと、前記メモリリード応答受付フラグ及びメモリライト要求発行フラグを検査することで、前記第2のメモリライト要求の対象アドレスが、前記第1のメモリのメモリコピー前の領域に属するものであるか、前記第1のメモリのメモリコピー中の領域に属するものであるか、前記第1のメモリのメモリコピー済の領域に属するものであるかのいずれかを判定する、アドレス判定部をさらに有することを特徴とするデータ転送装置。
【請求項3】
請求項2に記載のデータ転送装置であって、
前記第1のメモリリード応答に含まれるデータに対して、前記第2のメモリライト要求に含まれるデータを上書きするマージ部をさらに有し、
前記メモリコピー部は、
前記第2のメモリライト要求が入力されて、前記アドレス判定部がメモリコピー済の領域に属するものと判定したときに、前記第2のメモリライト要求を複製して前記第2のインタフェースに出力し、前記アドレス判定部がメモリコピー中の領域に属するものと判定したときに、前記マージ部より出力されたデータによって第3のメモリライト要求を生成して前記第2のインタフェースに出力することを特徴とするデータ転送装置。
【請求項4】
請求項2に記載のデータ転送装置であって、
前記メモリコピー部は、
前記第2のメモリライト要求が入力されて、前記アドレス判定部がメモリコピー済の領域に属するものと判定したときに、前記第2のメモリライト要求を複製して前記第2のインタフェースに出力し、前記アドレス判定部がメモリコピー中の領域に属するものと判定したときに、当該領域のメモリコピーが完了し、メモリコピー済になるまで待機した後に、前記第2のメモリライト要求を複製して前記第2のインタフェースに出力することを特徴とするデータ転送装置。
【請求項5】
請求項2ないし請求項4のいずれかひとつに記載のデータ転送装置であって、
前記データ転送装置は、
前記第3のインタフェースを複数備えて複数のI/Oデバイスを接続し、
前記複数の第3のインタフェースから入力されるメモリライト要求、メモリリード要求またはメモリリード応答を調停して、前記第1のインタフェースまたは前記第2のインタフェースに出力するための調停部をさらに有し、
前記調停部によって調停されたメモリライト要求を、前記第2のメモリライト要求とすることを特徴とするデータ転送装置。
【請求項6】
請求項5に記載のデータ転送装置であって、
前記I/Oスイッチが前記調停部を有することを特徴とするデータ転送装置。
【請求項7】
請求項6に記載のデータ転送装置であって、
前記I/Oスイッチと同一の調停を行う第2の調停部を有し、
前記第2の調停部の出力するメモリライト要求を、前記第2のメモリライト要求とすることを特徴とするデータ転送装置。
【請求項8】
請求項1ないし請求項7のいずれかひとつに記載のデータ転送装置であって、
前記第1ないし第3のインタフェースは、PCI、PCI−X及びPCI Expressのうちのいずれかひとつであることを特徴とするデータ転送装置。
【請求項9】
請求項1ないし請求項7のいずれかひとつに記載のデータ転送装置であって、
前記第1ないし第3のインタフェースは、パケットによりデータを伝送することを特徴するデータ転送装置。
【請求項10】
第1のプロセッサと第1のメモリを備えた第1の計算機と、
第2のプロセッサと第2のメモリを備えた第2の計算機と、
前記第1の計算機と第2の計算機とI/Oデバイスを接続するデータ転送装置と、
を備えた計算機システムにおいて、
前記データ転送装置は、
前記第1の計算機と接続される第1のインタフェースと、
前記第2の計算機と接続される第2のインタフェースと、
前記I/Oデバイスと接続される第3のインタフェースと、
前記第1のインタフェースと、第2のインタフェース及び第3のインタフェースを接続するI/Oスイッチと、
前記第1の計算機の第1のメモリからデータを読み出すための第1のメモリリード要求を発行し、前記第1のメモリリード要求に対応する第1のメモリリード応答に含まれるデータを受け付けて、前記第2の計算機の第2のメモリに前記受け付けたデータを書込むための第1のメモリライト要求を発行するメモリコピー部と、
を有することを特徴とする計算機システム。
【請求項11】
第1の計算機の第1のメモリの内容を第1のメモリリード要求により読出し、
前記第1のメモリリード要求に対応する第1のメモリリード応答を受け付けて、
前記第1のメモリリード応答を第2の計算機の第2のメモリに書込むメモリコピー装置において、
前記第1のメモリリード要求に含まれる前記第1のメモリの対象アドレスと、前記第1のメモリリード要求の発行状態と、前記第1のメモリリード要求に対応する第1のメモリリード応答の状態と、第1のメモリライト要求の発行状態を監視する状態管理部と、
前記第3のインタフェースを介して入力された第2のメモリライト要求を受け付けて、前記第2のメモリライト要求の対象アドレスと、前記アドレス設定レジスタの保持するアドレスとを比較し、前記前記第2のメモリライト要求の対象アドレスが、前記アドレス設定レジスタのアドレスに該当するか否かを判定するときには、
前記状態管理部の第1のメモリリード要求の発行状態と、前記第1のメモリリード要求に対応する第1のメモリリード応答の状態と、第1のメモリライト要求の発行状態とから、前記第2のメモリライト要求の対象アドレスが、前記第1のメモリのメモリコピー前の領域と、前記第1のメモリのメモリコピー中の領域と、前記第1のメモリのメモリコピー済の領域と、のいずれかを判定するアドレス判定部と、
を有することを特徴とするメモリコピー装置。
【請求項12】
請求項11に記載のメモリコピー装置であって、
前記状態管理部は、
前記第1のメモリリード要求の対象アドレスを保持するアドレス記憶領域と、
前記第1のメモリリード要求を発行したことを記憶するメモリリード要求発行フラグと、
前記第1のメモリリード応答を受付けたことを記憶するメモリリード応答受付フラグと、
前記第1のメモリライト要求を発行したことを記憶するメモリライト要求発行フラグと、を有し、
前記アドレス判定部は、
I/Oデバイスが発行した第2のメモリライト要求を受け付けて、前記第2のメモリライト要求の対象アドレスと、前記アドレス記憶領域の保持するアドレスを比較し、メモリリード要求発行フラグと、メモリリード応答受付フラグ及びメモリライト要求発行フラグを検査することで、前記第2のメモリライト要求の対象アドレスが、前記第1のメモリのメモリコピー前の領域に属するものであるか、前記第1のメモリのメモリコピー中の領域に属するものであるか、前記第1のメモリのメモリコピー済の領域に属するものであるかを判定することを特徴とするメモリコピー装置。
【請求項13】
請求項11に記載のメモリコピー装置であって、
前記メモリコピー済の領域に属するものと判定したときに、前記第2のメモリライト要求を複製し、
前記メモリコピー中の領域に属するものと判定したときに、前記第2のメモリライト要求に含まれるデータを、前記第1のメモリリード応答に含まれるデータに上書きすることを特徴とするメモリコピー装置。
【請求項14】
請求項11に記載のメモリコピー装置であって、
前記メモリコピー済の領域に属するものと判定したときに、前記第2のメモリライト要求を複製し、
前記メモリコピー中の領域に属するものと判定したときに、当該領域のメモリコピーが完了し、メモリコピー済になるまで待機することを特徴とするメモリコピー装置。
【請求項15】
請求項1に記載のデータ転送装置であって、
前記メモリコピー部は、
前記第1のメモリリード要求に含まれる前記第1のメモリの対象アドレスと、前記第1のメモリリード要求の発行状態と、前記第1のメモリリード要求に対応する第1のメモリリード応答の状態と、第1のメモリライト要求の発行状態を監視する状態管理部と、
前記第3のインタフェースを介して入力された第2のメモリライト要求を受け付けて、前記第2のメモリライト要求の対象アドレスと、前記アドレス設定レジスタの保持するアドレスとを比較し、前記前記第2のメモリライト要求の対象アドレスが、前記アドレス設定レジスタのアドレスに該当するときには、前記状態管理部の第1のメモリリード要求の発行状態と、前記第1のメモリリード要求に対応する第1のメモリリード応答の状態と、第1のメモリライト要求の発行状態とから、前記第2のメモリライト要求の対象アドレスが、前記第1のメモリのメモリコピー前の領域と、前記第1のメモリのメモリコピー中の領域と、前記第1のメモリのメモリコピー済の領域と、のいずれかを判定するアドレス判定部と、をさらに有することを特徴とするデータ転送装置。

【図1A】
image rotate

【図1B】
image rotate

【図2】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11A】
image rotate

【図11B】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17a】
image rotate

【図17b】
image rotate

【図18a】
image rotate

【図18b】
image rotate

【図19A】
image rotate

【図19B】
image rotate

【図20】
image rotate

【図3】
image rotate


【公開番号】特開2011−221945(P2011−221945A)
【公開日】平成23年11月4日(2011.11.4)
【国際特許分類】
【出願番号】特願2010−93049(P2010−93049)
【出願日】平成22年4月14日(2010.4.14)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】