(57)【特許請求の範囲】
【請求項１】
第１の装置と第２の装置とが接続されるシステムにおいて、
前記第１の装置は、
前記第２の装置への仮想マシンのマイグレーションに際して前記第１の装置のメモリのうち前記仮想マシンに割り当てられた記憶領域から誤り訂正できない誤りが検出された場合に、誤り訂正できない誤りが検出された第１のアドレスを示す故障情報を、前記第２の装置に通知し、
前記第２の装置は、
前記第１の装置から前記故障情報を受信した場合、前記故障情報が示す前記第１のアドレスのデータのコピー先となる前記第２の装置のメモリの第２のアドレスのデータに誤り訂正できない誤りが含まれることを示す識別子として、前記第２の装置で発生した誤り訂正できない誤りが含まれることを示す第１の識別子とは値が異なる第２の識別子を、前記第２のアドレスに対応付けて前記第２の装置のメモリに書き込む
ことを特徴とするシステム。
【請求項２】
前記仮想マシンは、マイグレーションに際して前記第１の装置上で動作しており、
前記第１の装置は、
前記第２の装置への仮想マシンのマイグレーションに際して、前記第１の装置のメモリのうち前記仮想マシンに割り当てられた記憶領域に記憶されている前記仮想マシン上で動作するソフトウェアの計算途中の情報を、前記第２の装置に送信することを特徴とする請求項１に記載のシステム。
【請求項３】
前記第２の装置は、
前記第２の識別子に基づいて前記第２のアドレスにライトアクセスが発生したことを検出した場合、前記第２の識別子を消去し、
前記第２の識別子に基づいて前記第２のアドレスにリードアクセスが発生したことを検出した場合、前記リードアクセスの発生元のソフトウェアを中断させることを特徴とする請求項１または２に記載のシステム。
【請求項４】
自装置への仮想マシンのマイグレーションに際して自装置と接続された他装置から、誤り訂正できない誤りが検出された第１のアドレスを示す故障情報を受信した場合、前記故障情報が示す前記第１のアドレスのデータのコピー先となる自装置のメモリの第２のアドレスのデータに誤り訂正できない誤りが含まれることを示す識別子として、自装置で発生した誤り訂正できない誤りが含まれることを示す第１の識別子とは値が異なる第２の識別子を、前記第２のアドレスに対応付けて自装置のメモリに書き込む
ことを特徴とする情報処理装置。
【請求項５】
第１の装置と第２の装置とが接続されるシステムにおける情報処理方法において、
前記第１の装置は、
前記第２の装置への仮想マシンのマイグレーションに際して前記第１の装置のメモリのうち前記仮想マシンに割り当てられた記憶領域から誤り訂正できない誤りが検出された場合に、誤り訂正できない誤りが検出された第１のアドレスを示す故障情報を、前記第２の装置に通知し、
前記第２の装置は、
前記第１の装置から前記故障情報を受信した場合、前記故障情報が示す前記第１のアドレスのデータのコピー先となる前記第２の装置のメモリの第２のアドレスのデータに誤り訂正できない誤りが含まれることを示す識別子として、前記第２の装置で発生した誤り訂正できない誤りが含まれることを示す第１の識別子とは値が異なる第２の識別子を、前記第２のアドレスに対応付けて前記第２の装置のメモリに書き込む
ことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システム、情報処理装置、および情報処理方法に関する。
【背景技術】
【０００２】
従来、異なるハードウェア資源間で、仮想マシンを移動するマイグレーションという技術がある。また、実データに対して冗長ビットを付加して記憶することにより、実データを読み込んだ際に実データの一部のビットが誤っても、誤ったビットが特定ビット数以内であれば冗長ビットを用いて誤りを復元する訂正技術がある。関連する先行技術として、複製元の第１メモリへのアクセス中に生じたエラーが第１メモリで生じたものならば複製先のメモリにアクセス要求を再試行し、第１メモリで生じたものでなければ訂正不可なメモリエラーを通知するものがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１３４３２７号公報
【特許文献２】特開２０１０−３９９８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術では、仮想マシンの移動元の装置においてマイグレーション対象の仮想マシンの情報から誤り訂正できない誤りが検出された際に、マイグレーションを継続することが実質的に不可能である。例えば、誤り訂正できない誤りは元データを復元することができないため、移動先の装置において、元データとは異なるエラーデータを仮想マシンが参照した結果、データ破壊という不具合を起こすことがある。従って、誤り訂正できない誤りが検出されると、データ保全のため、マイグレーションを異常終了することになる。
【０００５】
１つの側面では、本発明は、マイグレーションを継続させつつ、仮想マシンの移動先の装置において、移動先の装置で発生した誤り訂正できない誤りに対する動作とは区別した動作を行うことができるシステム、情報処理装置、および情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面によれば、第１の装置と第２の装置とが接続されるシステムにおいて、第１の装置は、第２の装置への仮想マシンのマイグレーションに際して第１の装置のメモリのうち仮想マシンに割り当てられた記憶領域から誤り訂正できない誤りが検出された場合に、誤り訂正できない誤りが検出された第１のアドレスを示す故障情報を、第２の装置に通知し、第２の装置は、第１の装置から故障情報を受信した場合、故障情報が示す第１のアドレスのデータのコピー先となる第２の装置のメモリの第２のアドレスのデータに誤り訂正できない誤りが含まれることを示す識別子として、第２の装置で発生した誤り訂正できない誤りが含まれることを示す第１の識別子とは値が異なる第２の識別子を、第２のアドレスに対応付けて第２の装置のメモリに書き込むシステム、情報処理装置、および情報処理方法が提案される。
【発明の効果】
【０００７】
本発明の一態様によれば、マイグレーションを継続させつつ、仮想マシンの移動先の装置において、移動先の装置で発生した誤り訂正できない誤りに対する動作とは区別した動作を行うことができる。
【０００８】
また、誤り訂正できない誤りが検出されたとしても、マイグレーションを成功させることができる。また、移動先の装置において、ソフト指示である誤り訂正できない誤りを含むデータへのライトアクセスの場合やソフト指示である誤り訂正できない誤りを含むデータを使用しない場合に、移動先ドメインの動作を継続させることができる。また、業務を停止することなく故障部品を交換することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態１にかかるシステム１００の動作例を示す説明図である。
【図２】図２は、システム１００に含まれるハードウェアの一例を示す説明図である。
【図３】図３は、システム１００の機能構成例を示すブロック図である。
【図４】図４は、マイグレーション時の制御フローおよびデータフローの一例を示す説明図である。
【図５】図５は、故障情報１１１の一例を示す説明図である。
【図６】図６は、エラーＩＤの種別の一例を示す説明図である。
【図７】図７は、移動先ドメインｍｄ＿ｄｓｔにおけるリードアクセス実行時の動作の一例を示す説明図である。
【図８】図８は、移動先ドメインｍｄ＿ｄｓｔにおけるライトアクセス実行時の動作の一例を示す説明図である。
【図９】図９は、システム１００におけるマイグレーションシーケンスの一例を示す説明図（その１）である。
【図１０】図１０は、システム１００におけるマイグレーションシーケンスの一例を示す説明図（その２）である。
【図１１】図１１は、移動元の仮想化管理ソフトにおけるマイグレーション処理手順の一例を示すフローチャートである。
【図１２】図１２は、ドメイン情報読み込み処理手順の一例を示すフローチャートである。
【図１３】図１３は、移動先の仮想化管理ソフトにおけるマイグレーション処理手順の一例を示すフローチャートである。
【図１４】図１４は、ドメイン情報書き込み処理手順の一例を示すフローチャートである。
【図１５】図１５は、ＵＥ設定処理手順の一例を示すフローチャートである。
【図１６】図１６は、マイグレーション後のアクセス処理手順の一例を示すフローチャートである。
【図１７】図１７は、情報処理装置１７０１の構成例を示すブロック図である。
【図１８】図１８は、情報処理装置１７０１における活性ボード切り離し動作の一例を示す説明図である。
【図１９】図１９は、情報処理装置１７０１におけるマイグレーションシーケンスの一例を示す説明図である。
【図２０】図２０は、メモリ使用状態ごとのドメインの運用継続可否を示す説明図である。
【発明を実施するための形態】
【００１０】
以下に図面を参照して、開示のシステム、情報処理装置、および情報処理方法の実施の形態を詳細に説明する。
【００１１】
（実施の形態１の説明）
図１は、実施の形態１にかかるシステム１００の動作例を示す説明図である。実施の形態１では、仮想マシンを異なる装置に移動する動作であるマイグレーションについて説明する。システム１００に含まれる情報処理装置１０１＃Ａ、＃Ｂは、仮想マシンを制御するコンピュータである。情報処理装置１０１＃Ａ、＃Ｂは、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット等のネットワーク１０２により接続される。ここで、以下の図示および説明において、符号に「＃Ａ」がついたものは情報処理装置１０１＃Ａに関するものであり、符号に「＃Ｂ」がついたものは情報処理装置１０１＃Ｂに関するものである。
【００１２】
具体的には、情報処理装置１０１＃Ａ、＃Ｂは、仮想マシンのハードウェア資源となる仮想マシンに割り当てるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）や、揮発性のメモリを管理して、仮想マシンを利用するユーザに提供する。情報処理装置１０１＃Ａ、＃Ｂは、例えば、サーバである。
【００１３】
仮想マシンは、ハードウェア資源を用いて仮想的に作成されたコンピュータシステムである。仮想マシンは、仮想的に作成したコンピュータシステムであればどのようなものでもよく、例えば、他のコンピュータにサービスやデータを提供するサーバでもよいし、サーバによるサービスやデータの提供を受けるコンピュータでもよい。以下、仮想マシンを、「ドメイン」と呼称する。ドメインを作成するハードウェア資源は、情報処理装置１０１＃Ａ、＃Ｂのハードウェアでもよいし、情報処理装置１０１に接続可能な他の装置のハードウェアでもよい。以下の説明では、ドメインを作成するハードウェア資源は、情報処理装置１０１＃Ａ、＃Ｂのハードウェアであるとする。
【００１４】
ドメインを制御するプログラムとしては、ハイパーバイザがある。ハイパーバイザは、ハードウェアを直接制御する機能を持ち、ファームウェア層で、仮想化マシンアーキテクチャーを提供するプログラムである。
【００１５】
ここで、ドメインに関連する技術として、ドメインの業務量の増減やドメインを作成するハードウェアの故障発生時の保守作業時に、稼働中のドメインの運用を継続したまま、ドメインを他のハードウェアに移動させるライブマイグレーション（Ｌｉｖｅ  Ｍｉｇｒａｔｉｏｎ）と呼ばれる技術がある。以下、ライブマイグレーションを、単に、「マイグレーション」と記載する。そして、移動元となるドメインを、「移動元ドメイン」と呼称する。また、移動先となるドメインを、「移動先ドメイン」と呼称する。
【００１６】
また、移動元の装置上で動作するハイパーバイザを「移動元ハイパーバイザ」と呼称する場合がある。さらに、移動先の装置上で動作するハイパーバイザを「移動先ハイパーバイザ」と呼称する場合がある。図１の例では、情報処理装置１０１＃Ａが移動元の装置であり、情報処理装置１０１＃Ｂが移動先の装置であるとする。従って、図１の例では、情報処理装置１０１＃Ａ上で動作するハイパーバイザ１０３＃Ａが、移動元ハイパーバイザとなる。また、情報処理装置１０１＃Ｂ上で動作するハイパーバイザ１０３＃Ｂが、移動先ハイパーバイザとなる。
【００１７】
マイグレーションを行う際には、ドメインの移動元の装置のメモリのうち移動元ドメインに割り当てられた記憶領域のデータを読み出して、読み出したデータを、移動先の装置のメモリのうち移動先ドメインに割り当てられた記憶領域に書き込むことになる。ここで、移動元ドメインが使用しているデータは、動的に変化するものである。例えば、移動元ドメインが使用しているデータは、移動元ドメイン上で動作するＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）やアプリケーションソフトウェアの計算途中の情報である。
【００１８】
そして、移動元の装置のメモリのうち移動元ドメインに割り当てられた記憶領域のデータを読み込むと、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔ）マルチビットエラー等の誤り訂正できない誤り（Ｕｎｃｏｒｒｅｃｔａｂｌｅ  Ｅｒｒｏｒ：ＵＥ）を検出することがある。ここで、メモリで発生する誤りについて説明する。メモリは、様々な要因でエラーが起こり得る。例えば、物理的にメモリが故障している際に、エラーが起こる。または、メモリ内において、ビットを保持するメモリセルがコンデンサである場合、読み込みが集中すると、エラーが起こる可能性がある。具体的な理由としては、読み込みを何度も行うと、コンデンサの電荷が失われてしまい、メモリセルが記憶するビットが反転するためである。また、メモリセルがアルファ線や中性子線を受けると、メモリセルが記憶するビットが反転することがある。また、メモリ自身が正常であっても、ＣＰＵからメモリまでの経路が故障していることにより、エラーが起こる場合もある。
【００１９】
また、メモリで発生する誤りはいつ発生するかわからないものであり、マイグレーション時にハイパーバイザが初めて誤りを検出する場合もあるし、マイグレーションの前に、ＯＳが既に誤りを検出している場合もある。
【００２０】
次に、誤りについて、誤り訂正できる誤り（Ｃｏｒｒｅｃｔａｂｌｅ  Ｅｒｒｏｒ：ＣＥ）と、ＵＥとについて説明する。ＥＣＣ機能を有するメモリは、実データに対して冗長ビットを付加しており、実データと冗長ビットを用いて、誤りのビットがあるか、誤りのビットがあるならば実データ内のどのビットであるかを求める。冗長ビットの符号化方法としては、例えば、ＢＣＨ符号、リード・ソロモン符号、ハフマン符号等がある。各符号化方法において、誤りのビットを検出した際に、誤り訂正できるビット数以内であれば、ＣＥとなり、誤り訂正できるビット数を超えた場合、ＵＥとなる。そして、誤り訂正できるビット数は、各符号化方法において、実データのビット数と冗長ビットのビット数との関係より決まるものである。
【００２１】
ここで、符号化方法として、２重誤り訂正が可能なＢＣＨ符号である場合を例にして説明する。実データと冗長ビットとに対して復号を行うと、誤りのビットがない、１つの誤ったビットの位置、２つの誤ったビットのそれぞれの位置、誤りのビットの位置は不明だが３つ以上の誤ったビットがある、のうちのいずれか１つの情報を得ることができる。この場合では、１つの誤ったビットの位置、または、２つの誤ったビットのそれぞれの位置の情報が得られた場合、ＣＥを検出したことになる。また、誤りのビットの位置は不明だが３つ以上の誤ったビットがあるという情報が得られた場合、ＵＥを検出したことになる。
【００２２】
しかしながら、移動元の装置においてマイグレーション対象の仮想マシンの情報からＵＥが検出された際に、マイグレーションを継続することが実質的に不可能である。例えば、ＵＥは元データを復元することができないため、移動先の装置において、元データとは異なるエラーデータを仮想マシンが参照した結果、データ破壊という不具合を起こすことがある。従って、ＵＥが検出されると、データ保全のため、マイグレーションを異常終了することになる。
【００２３】
また、移動元の装置においてＵＥが検出された際に、エラーデータをＵＥを含むものとして設定することで、マイグレーションを継続させつつ、データ破壊を避けることが考えられる。しかしながら、この場合、移動先の装置において、エラーデータにアクセスして発生するＵＥと、移動先の装置が故障して発生するＵＥとが区別できない。従って、移動先の装置においてエラーデータにアクセスしてＵＥが発生した場合、移動先の装置が故障していないにも関わらず、移動先の装置が故障したと誤認識し、移動先の装置が故障した際の動作を行うことになる。
【００２４】
また、移動元ドメインの情報を格納するメモリは、次に示す使用状況のいずれかとなる。１つ目のメモリの使用状況は、マイグレーション対象のドメインが使用中であり、マイグレーション後に読み込むという状況である。２つ目のメモリの使用状況は、マイグレーション対象のドメインが使用中であり、マイグレーション後に書き込むという状況である。３つ目のメモリの使用状況は、マイグレーション対象のドメインが現在未使用であり、マイグレーション後に使用する可能性がある状況である。４つ目のメモリの使用状況は、過去にメモリ上にエラーが発生しており、使用不可とした状況である。マイグレーションを行う際に、ハイパーバイザがＵＥを検出しても、ＵＥが発生した領域が、上述した４つの状況のいずれであるかは、ハイパーバイザからは判断できない。
【００２５】
そこで、ドメインの移動元の装置は、移動元の装置のメモリのうち移動元ドメインに割り当てられた記憶領域からＵＥが検出された場合に、ＵＥが検出された第１のアドレスを示す故障情報を移動先の装置に送信する。ここで、第１のアドレスは、移動元の装置のメモリのうちＵＥとなったデータが格納されている記憶領域のアドレスである。そして、移動先の装置は、故障情報が示す第１のアドレスのデータのコピー先となる移動先の装置のメモリのアドレスである第２のアドレスを特定する。そして、移動先の装置は、特定した第２のアドレスと対応付けて、第２のアドレスのデータが移動元の装置でＵＥが発生し正しくないことを示す第２の識別子を、移動先の装置のメモリに書き込む。ここで、第２の識別子は、ＵＥを示す識別子であり、かつ、自装置で発生したＵＥを示す第１の識別子とは異なる識別子である。例えば、第１の識別子は、自装置のメモリやＣＰＵ、Ｉ／Ｏで故障し、ＵＥであることを示す識別子である。これに対し、第２の識別子は、自装置で発生したＵＥではなく、ソフトによる指示によりＵＥであることを示す識別子である。第１、第２の識別子のより具体的な例については、図６で説明する。
【００２６】
図１を用いて、システム１００の動作を説明する。図１では、ドメインの移動元の装置として情報処理装置１０１＃Ａで動作中の移動元ドメインｍｄ＿ｓｒｃを、移動先の装置として情報処理装置１０１＃Ｂにマイグレーションする。ここで、図１では、情報処理装置１０１＃Ａ上で動作するソフトウェアとして、制御ドメイン１０４＃Ａと、移動元ドメインｍｄ＿ｓｒｃと、仮想化管理ソフト１０５＃Ａとが示される。また、図１では、情報処理装置１０１＃Ｂ上で動作するソフトウェアとして、制御ドメイン１０４＃Ｂと、仮想化管理ソフト１０５＃Ｂと、移動元ドメインｍｄ＿ｓｒｃの移動後に動作する移動先ドメインｍｄ＿ｄｓｔとが示される。図１で示す状態は、マイグレーション前の状態を示しており、移動先ドメインｍｄ＿ｄｓｔはまだ動作していない。図１では、動作していないドメインを点線で示す。
【００２７】
制御ドメイン１０４は、ハイパーバイザ１０３上で動作するＯＳである。仮想化管理ソフト１０５は、制御ドメイン１０４上で動作し、情報処理装置１０１のリソースを管理しており、情報処理装置１０１内のドメインの管理を行う。また、仮想化管理ソフト１０５は、ドメインの管理の一つとして、情報処理装置１０１の間においてマイグレーションを行う。
【００２８】
図１では、情報処理装置１０１＃Ｂに送信予定の移動元ドメインｍｄ＿ｓｒｃの情報として、情報ｄ１〜ｄ５があることを示す。ここで、情報ｄ３は、ＵＥを含む情報であるとする。図１では、ＵＥを、墨塗りで示す。情報ｄ３が読み込まれ、壊れた情報ｄ３をそのまま使用すると、データ破壊を起こす可能性がある。
【００２９】
そのため、仮想化管理ソフト１０５＃Ａは、情報ｄ３が読み込まれた結果、ＵＥが検出されたと判断した場合に、ＵＥを含む情報ｄ３のアドレスを第１のアドレスとして、第１のアドレスを示す故障情報１１１を仮想化管理ソフト１０５＃Ｂに送信する。故障情報１１１の内容としては、故障情報１１１がＵＥであることを示す識別情報と、第１のアドレスである。さらに、故障情報１１１の内容としては、ＵＥが発生した移動元の装置を識別する識別情報が含まれてもよい。故障情報１１１の具体例は、図５で示す。ここで、ＵＥを含む情報となった情報ｄ３を検出する実行主体は、ハイパーバイザ１０３＃Ａである。
【００３０】
故障情報１１１を受信した仮想化管理ソフト１０５＃Ｂは、ハイパーバイザ１０３＃ＢにＵＥ挿入依頼を行う。ＵＥ挿入依頼を受けたハイパーバイザ１０３＃Ｂは、故障情報１１１が示す第１のアドレスを変換することにより第２のアドレスを特定する。具体的な変換例については、図４で説明する。そして、ハイパーバイザ１０３＃Ｂは、ＵＥ挿入として、第２の識別子を第２のアドレスに対応付けて情報処理装置１０１＃Ｂに書き込む。図１では、網掛けを付与した領域が、第２の識別子であることを示す。
【００３１】
書き込みの具体例としては、ハイパーバイザ１０３＃Ｂは、第２の識別子を設定するレジスタに、第２のアドレスを書き込む。また、ハイパーバイザ１０３＃Ｂは、第２のアドレスにアクセスされた際にＴｒａｐ検出を行うように情報処理装置１０１＃Ｂのハードウェアの設定を行う。これにより、ドメイン移動後にメモリアクセスで異常検出し、異常検出要因が上記ハイパーバイザによる設定であった場合、情報処理装置１０１＃Ｂは、Ｔｒａｐの要因を示すＴｒａｐ要因レジスタに第２の識別子を格納するようになる。また、情報処理装置１０１＃Ｂは、第２のアドレスにリードアクセスされた際にＴｒａｐによりＣＰＵがソフトウェアに通知するようになる。マイグレーション後において、メモリにアクセスした際の動作については、図１６で説明する。
【００３２】
マイグレーション後、情報処理装置１０１＃Ｂは、異常があった場合またはＴｒａｐの発生時に、Ｔｒａｐ要因レジスタに第２の識別子が格納されていれば、自装置のハードウェアが故障したものではないことを判断することができる。例えば、情報処理装置１０１＃Ｂは、ライトアクセス異常の原因が上記ハイパーバイザによる設定であった場合、Ｔｒａｐ要因レジスタに第２の識別子が格納されていれば、第２の識別子を消去する。また、情報処理装置１０１＃Ｂは、リードアクセスによりＴｒａｐが発生した場合、Ｔｒａｐ要因レジスタに第２の識別子が格納されていれば、リードアクセスの発生元のソフトウェアを中断させる。例えば、情報処理装置１０１＃Ｂは、リードアクセスの発生元のソフトウェアがユーザプログラムであれば、リードアクセスの発生元のユーザプログラムを異常終了させる。また、情報処理装置１０１＃Ｂは、リードアクセスの発生元のソフトウェアがカーネルであれば、カーネルパニックを発生させて、カーネルを含むドメインを強制終了させる。ここで、カーネルとは、ＯＳの中核となるソフトウェアである。
【００３３】
故障情報１１１が送信されることにより、情報処理装置１０１＃Ｂは、ＵＥが情報処理装置１０１＃Ｂ以外で発生した誤りであり、情報処理装置１０１＃Ｂのハードウェアが故障したものではないことを判断することができる。また、第２の識別子を情報処理装置１０１＃Ｂのメモリに書き込むことにより、データ破壊を起こす可能性があるデータが記憶されたアドレスを特定できるので、情報処理装置１０１＃Ｂは、データ破壊の問題を避けることができる。また、情報処理装置１０１＃Ｂは、Ｔｒａｐが発生してＴｒａｐ要因レジスタに第２の識別子が格納されている際に、情報処理装置１０１＃Ｂのハードウェアで発生したＵＥに対する動作とは区別した動作を行うことができる。次に、システム１００に含まれるハードウェア構成例について図２を用いて説明する。
【００３４】
図２は、システム１００に含まれるハードウェアの一例を示す説明図である。情報処理装置１０１＃Ａ、＃Ｂは、同一のハードウェアを有する。なお、情報処理装置１０１＃Ａ、＃Ｂが有するハードウェアは、まったく同じでなくてもよい。次に、情報処理装置１０１のハードウェアについて説明する。
【００３５】
情報処理装置１０１は、１つ以上のＣＰＵ２１１と１つ以上のメモリ２１２とを有する。図２に示す情報処理装置１０１＃Ａ、＃Ｂは、それぞれ、複数のＣＰＵ２１１と複数のメモリ２１２とを有する。
【００３６】
ＣＰＵ２１１は、情報処理装置１０１の全体の制御を司る演算処理装置である。ここで、ＣＰＵ２１１は、１つ以上のコアを有する。また、ＣＰＵ２１１は、メモリ２１２へのアクセスを制御するメモリコントローラを有する。ここで、メモリコントローラは、情報処理装置１０１内であってＣＰＵ２１１の外にあってもよい。また、ＣＰＵ２１１は、ＬＡＮに接続するＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）インターフェースを有する。
【００３７】
メモリ２１２は、ＣＰＵ２１１のワークエリアとして使用される揮発性メモリである。メモリ２１２は、例えば、ＥＣＣ機能付きのＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）である。
【００３８】
また、図２では示していないが、システム１００は、不揮発性の記憶装置として、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を有する。システム１００が不揮発性の記憶装置を１つ有し、複数の情報処理装置１０１は、１つの不揮発性の記憶装置を共有して利用する。または、情報処理装置１０１のそれぞれが、不揮発性の記憶装置を有してもよい。
【００３９】
また、システム１００の管理者が、情報処理装置１０１を直接操作する場合、情報処理装置１０１は、ディスプレイ、キーボード、マウスといったハードウェアを有してもよい。
【００４０】
（システム１００の機能構成例）
図３は、システム１００の機能構成例を示すブロック図である。情報処理装置１０１＃Ａ、＃Ｂは、制御部３０１を有する。そして、制御部３０１は、送信部３０２と、通知部３０３と、書込部３０４と、アクセス処理部３０５とを有する。制御部３０１は、記憶装置に記憶されたプログラムをＣＰＵ２１１が実行することにより、各部の機能を実現する。ここで、送信部３０２と通知部３０３とは、ハイパーバイザ１０３と、仮想化管理ソフト１０５により実現される機能である。また、書込部３０４とアクセス処理部３０５とは、ハイパーバイザ１０３により実現される機能である。また、記憶装置とは、例えば、ＨＤＤやＳＳＤなどである。また、各部の処理結果は、ＣＰＵ２１１のレジスタや、ＣＰＵ２１１のキャッシュメモリ、メモリ２１２、ＨＤＤ等に格納される。図３で示す状態は、マイグレーション前の状態を示しており、移動先ドメインｍｄ＿ｄｓｔはまだ動作していない。図３では、動作していないドメインを点線で示す。
【００４１】
送信部３０２は、移動先の装置に、移動元ドメインｍｄ＿ｓｒｃの情報を送信する。移動元ドメインｍｄ＿ｓｒｃの情報は、例えば、マイグレーション中に動作する移動元ドメインｍｄ＿ｓｒｃ上で動作するソフトウェアの計算途中の情報である。また、送信部３０２は、マイグレーションに際して、ＵＥ発生時のデータは正しいデータではないため、仮情報を送信してもよい。仮情報は、ＵＥを含む情報と同一のデータサイズであればどのようなデータでもよい。例えば、仮情報は、全てのビットが０のデータや、全てのビットが１のデータ等である。また、仮情報は、故障情報１１１の一部を含んでいてもよい。ここで、仮情報を移動先の装置に送信しない場合には、移動先の装置は、第２のアドレスが示す記憶領域に何も書かなくてもよい。ここで、第１のアドレスは、図１の説明で記載したように、移動元の装置のメモリのうちＵＥとなったデータが格納されている記憶領域のアドレスである。また、第２のアドレスは、図１の説明で記載したように、故障情報１１１が示す第１のアドレスのデータのコピー先となる移動先の装置のメモリのアドレスである。図３で示す例では、斜線の網掛けを付与した情報ｄｘが、ＵＥを含む情報ｄ３に対応する仮情報となる。
【００４２】
通知部３０３は、移動元ドメインｍｄ＿ｓｒｃの情報のうち、ＵＥを含む情報が検出された場合に、ＵＥが検出された第１のアドレスを示す故障情報１１１を移動先の装置に通知する。また、故障情報１１１は、誤りが移動元の装置において発生した誤りであることを識別させ、かつ、仮情報が移動先においても故障個所のデータが利用不可な情報であることを示すものでもよい。
【００４３】
書込部３０４は、故障情報１１１が示す第１のアドレスのデータのコピー先となる移動先の装置の第２のアドレスに対応付けて、ソフトウェアが意図的に使用不可とみなした第２の識別子を、移動先のＣＰＵ２１１のレジスタに書き込む。書き込みを受けると、移動先のＣＰＵ２１１は、ソフトウェアが意図的に使用不可とみなした第２の識別子をメモリに格納する。
【００４４】
マイグレーション完了後に、アクセスを受けてＣＰＵ２１１＃Ｂが、第２の識別子に対応付けられた第２のアドレスへのライトアクセスの場合は上書きを行い、第２の識別子を消去する。
【００４５】
マイグレーション完了後に、アクセス処理部３０５は、第２の識別子に基づいて第２のアドレスにリードアクセスが発生したことを検出した場合、リードアクセスの発生元のソフトウェアを中断させる。例えば、アクセス処理部３０５は、リードアクセスの発生元がユーザプログラムであれば、ユーザプログラムを異常終了させる。また、リードアクセスの発生元がカーネルであれば、アクセス処理部３０５は、カーネルを含むドメインをパニックさせて強制終了させる。
【００４６】
図４は、マイグレーション時の制御フローおよびデータフローの一例を示す説明図である。ハイパーバイザ１０３は、ドメイン情報転送部４３１と、エラー検出部４３２と、エラー設定部４３３とを有する。各部の動作については、下記に説明する。また、仮想化管理ソフト１０５は、ドメイン情報格納部４４１と故障情報格納部４４２とを有する。
【００４７】
図４では、移動元ドメインｍｄ＿ｓｒｃは、メモリ２１２＃Ａ＿２を使用しており、移動先ドメインｍｄ＿ｄｓｔには、メモリ２１２＃Ｂ＿２が確保されている。図４で示す状態は、マイグレーション前の状態を示しており、移動先ドメインｍｄ＿ｄｓｔはまだ動作していない。図４では、動作していないドメインを点線で示す。
【００４８】
図４を用いて、マイグレーションの制御フローおよびデータフローを説明する。ここで、図４では、制御フローを実線の矢印で示し、データフローを破線の矢印で示す。図４の（１）で示す処理として、仮想化管理ソフト１０５＃Ａは、ハイパーバイザ１０３＃Ａに、移動元ドメインｍｄ＿ｓｒｃのドメイン情報転送部４３１＃Ａに、移動元ドメインｍｄ＿ｓｒｃの情報の読み込みを依頼する。
【００４９】
マイグレーションを開始すると、まず、仮想化管理ソフト１０５＃Ａは、ブロック単位でメモリ２１２＃Ａ＿２を全て転送する。また、仮想化管理ソフト１０５＃Ａは、転送中に移動元ドメインｍｄ＿ｓｒｃのドメインが更新したメモリ２１２＃Ａ＿２内の個所を転送する処理を繰り返し、メモリ２１２＃Ａ＿２とメモリ２１２＃Ｂ＿２との差分を少なくする。そして、仮想化管理ソフト１０５＃Ａは、移動元ドメインｍｄ＿ｓｒｃを一瞬停止させ、少なくなった差分を転送する。少なくなった差分を転送した後、仮想化管理ソフト１０５＃Ｂは、移動先ドメインｍｄ＿ｄｓｔの動作を開始させる。以下、一回に転送するデータを、「部分情報」と呼称する。
【００５０】
依頼を受けたドメイン情報転送部４３１＃Ａは、図４の（２）で示す処理として、メモリ２１２＃Ａ＿２から移動元ドメインｍｄ＿ｓｒｃの部分情報を読み込む。そして、読み込み時にエラーがあった際、ドメイン情報転送部４３１＃Ａは、図４の（３）で示す処理として、Ｔｒａｐを受けることにより、故障を検出する。
【００５１】
故障を検出しなかった場合、ドメイン情報転送部４３１＃Ａは、図４の（４）で示す処理として、読み出した部分情報４５１を、仮想化管理ソフト１０５＃Ａのドメイン情報格納部４４１＃Ａに格納する。
【００５２】
故障を検出した場合、ドメイン情報転送部４３１＃Ａは、図４の（５）で示す処理として、Ｔｒａｐ要因レジスタを参照して故障したメモリのアドレス・データサイズ・故障の種別を取得し、ハイパーバイザ１０３＃Ａのエラー検出部４３２＃Ａに通知する。故障したメモリのアドレス・データサイズ・故障の種類の通知を受けたエラー検出部４３２＃Ａは、図４の（６）で示す処理として、故障情報１１１を仮想化管理ソフト１０５＃Ａの故障情報格納部４４２＃Ａに格納する。故障情報１１１の一例を、図５で示す。また、故障の種別の一例を、図６で示す。
【００５３】
また、エラー検出部４３２＃Ａは、図４の（７）で示す処理として、仮情報を仮想化管理ソフト１０５＃Ａのドメイン情報格納部４４１＃Ａに格納する。以下、仮情報も部分情報４５１に含まれるものとする。
【００５４】
ここで、ドメインの情報は、メモリ２１２上では、物理アドレスを用いて管理される。一方、仮想化管理ソフト１０５は、各ドメインで独立なリアルアドレスを用いて情報を管理する。そして、ある部分情報のリアルアドレスは、移動元ドメインｍｄ＿ｓｒｃと移動先ドメインｍｄ＿ｄｓｔとで同一となる。一方、ある部分情報の物理アドレスは、メモリ２１２＃Ａ＿２とメモリ２１２＃Ｂ＿２とでは異なる値となる可能性がある。
【００５５】
物理アドレスからリアルアドレスへの変換処理や、リアルアドレスから物理アドレスへの変換処理は、ハイパーバイザ１０３によって行われてもよいし、仮想化管理ソフト１０５によって行われてもよい。また、情報処理装置１０１＃Ａは、ハイパーバイザ１０３＃Ａによって物理アドレスからリアルアドレスへの変換処理を行い、情報処理装置１０１＃Ｂは、仮想化管理ソフト１０５＃Ｂによってリアルアドレスから物理アドレスへの変換処理を行ってもよい。または、情報処理装置１０１＃Ａは、仮想化管理ソフト１０５＃Ａによって物理アドレスからリアルアドレスへの変換処理を行い、情報処理装置１０１＃Ｂは、ハイパーバイザ１０３＃Ｂによってリアルアドレスから物理アドレスへの変換処理を行ってもよい。本実施の形態では、それぞれの変換処理は、ハイパーバイザ１０３によって行われるものとする。
【００５６】
仮想化管理ソフト１０５＃Ａは、図４の（８）で示す処理として、ドメイン情報格納部４４１＃Ａに格納された部分情報４５１を、情報処理装置１０１＃Ｂに送信する。情報処理装置１０１＃Ｂは、受信した部分情報４５１を、仮想化管理ソフト１０５＃Ｂのドメイン情報格納部４４１＃Ｂに格納する。また、仮想化管理ソフト１０５＃Ａは、図４の（９）で示す処理として、故障情報格納部４４２＃Ａに格納された故障情報１１１を、情報処理装置１０１＃Ｂに送信する。情報処理装置１０１＃Ｂは、受信した故障情報１１１を、仮想化管理ソフト１０５＃Ｂの故障情報格納部４４２＃Ｂに格納する。
【００５７】
仮想化管理ソフト１０５＃Ｂは、図４の（１０）で示す処理として、ドメイン情報格納部４４１＃Ｂに格納した部分情報４５１をハイパーバイザ１０３＃Ｂに送信する。部分情報４５１を受信したハイパーバイザ１０３＃Ｂは、図４の（１１）で示す処理として、部分情報４５１をメモリ２１２＃Ｂ＿２に書き込む。また、仮想化管理ソフト１０５＃Ｂは、図４の（１２）で示す処理として、故障情報格納部４４２＃Ｂに格納した故障情報１１１をハイパーバイザ１０３＃Ｂに送信する。
【００５８】
故障情報１１１を受信したハイパーバイザ１０３＃Ｂのエラー設定部４３３＃Ｂは、図４の（１３）で示す処理として、受信した故障情報１１１に対応するリアルアドレスを、物理アドレスに変換し、ＵＥを挿入するレジスタに、変換した物理アドレスを書き込む。ＣＰＵ２１１＃Ｂは、変換した物理アドレスを、レジスタからメモリ２１２＃Ｂに書き込む。具体的には、ＣＰＵ２１１＃Ｂは、レジスタに書かれた物理アドレスの個所が壊れているとマークをつけ、メモリ２１２＃Ｂに図６に示すエラーＩＤ＝４を入れておく。ＣＰＵ２１１＃Ｂは、アクセスがあった時に壊れているという認識ができ、メモリ２１２＃Ｂ内にエラーＩＤがあるのでそれをＴｒａｐ要因レジスタに格納する。なお、ＣＰＵ２１１＃Ｂは、変換した物理アドレスを、メモリ２１２＃Ｂを制御するメモリコントローラに書き込んでもよい。
【００５９】
図５は、故障情報１１１の一例を示す説明図である。図５に示す表５０１の１レコードが故障情報１１１となる。故障情報１１１は、アドレスと、データサイズと、タイプという項目を有する。アドレス項目には、故障となったメモリのアドレスが格納される。ここで、アドレス項目には、故障となったメモリの物理アドレスが格納される場合もあるし、故障となったメモリのリアルアドレスが格納される場合もある。例えば、図４の（９）で示す処理で送受信される故障情報１１１のアドレスは、リアルアドレスとなる。また、本実施の形態では、リアルアドレスと物理アドレスとの変換処理がハイパーバイザ１０３によって行われるものとした。従って、例えば、読み込みを行った際に故障検出した場合、ハイパーバイザ１０３＃Ａは、故障となった読み込み先のメモリ２１２＃Ａ＿２の物理アドレスからリアルアドレスに変換する。
【００６０】
データサイズ項目には、メモリのデータサイズが格納される。表５０１で示すように、データサイズは、それぞれで異なるものとなる可能性がある。タイプ項目には、誤り訂正可能か否かを示す種別が格納される。表５０１で示すＵＥとは、誤り訂正できない誤りの故障が発生したことを示す。
【００６１】
図６は、エラーＩＤの種別の一例を示す説明図である。図６で示す表６０１は、故障の種別となるエラーＩＤの一覧を示す。エラーＩＤ＝０は、故障が発生していないことを示すＩＤである。エラーＩＤ＝１は、メモリ内で故障したことを示すＩＤである。エラーＩＤ＝２は、Ｉ／Ｏで故障したことを示すＩＤである。エラーＩＤ＝３は、ＣＰＵ２１１内で故障したことを示すＩＤである。エラーＩＤ＝４は、ソフトによる指示であることを示すＩＤである。エラーＩＤ＝１〜３であるＵＥが、図１で説明した第１の識別子に相当する。また、エラーＩＤ＝４であるＵＥが、図１で説明した第２の識別子に相当する。
【００６２】
ここで、マイグレーション完了後において、移動先ドメインｍｄ＿ｄｓｔでエラーＩＤ＝４を設定した物理アドレスにアクセスした際に、メモリ２１２＃Ｂ＿２は正常であるため、メモリ２１２＃Ｂ＿２の保守は不要である。次に、アクセスの具体例として、マイグレーション完了後において、移動先ドメインｍｄ＿ｄｓｔにおける読み込み実行時の動作の一例を、図７を用いて説明する。また、マイグレーション完了後において、移動先ドメインｍｄ＿ｄｓｔにおける書き込み実行時の動作の一例を、図８を用いて説明する。
【００６３】
図７は、移動先ドメインｍｄ＿ｄｓｔにおけるリードアクセス実行時の動作の一例を示す説明図である。図７に示す表７０１は、メモリ２１２＃Ｂ＿２の物理アドレスと、物理アドレスに対応するエラーＩＤの値と、物理アドレスに対応する記憶領域で記憶するデータとをまとめたものである。例えば、物理アドレス「０ｘ００００００００」には、故障が発生しておらず、データ「Ａ」が記憶されている。また、表７０１が示すように、物理アドレス「０ｘ００００００１８」に対してエラーＩＤ＝４が設定されている。
【００６４】
図７で示すように、アドレス０ｘ００００００１８のリードアクセス実行中にＴｒａｐを検出したとする。このとき、ハイパーバイザ１０３＃Ｂは、実行中の処理を中断させる。ここで、ＵＥ検出がソフト指示によるものと特定し、ハードウェアは故障を通知しない。
【００６５】
図８は、移動先ドメインｍｄ＿ｄｓｔにおけるライトアクセス実行時の動作の一例を示す説明図である。図８で示すように、ライトアクセス実行時にソフトウェアにＴｒａｐは上がらない。ＣＰＵ２１１は、物理アドレス「０ｘ００００００１８」に対するエラーＩＤを０に設定するとともに、ＵＥを消去する。
【００６６】
図９は、システム１００におけるマイグレーションシーケンスの一例を示す説明図（その１）である。また、図１０は、システム１００におけるマイグレーションシーケンスの一例を示す説明図（その２）である。マイグレーションを行う前の状態において、メモリ２１２＃Ａ＿２は、部分情報４５１となるデータＡ、Ｂ、Ｃ、…、Ｄ、Ｅ、Ｆ、…、Ｇ、Ｈ、Ｉ、…を記憶していたとする。仮想化管理ソフト１０５＃Ａは、部分情報４５１の読み込み依頼をハイパーバイザ１０３＃Ａに送信する（ステップＳ９０１）。
【００６７】
部分情報４５１の読み込み依頼を受信したハイパーバイザ１０３＃Ａは、部分情報４５１となるデータＡ、Ｂ、Ｃ、…をメモリ２１２＃Ａ＿２から読み込む（ステップＳ９０２）。そして、ハイパーバイザ１０３＃Ａは、部分情報４５１となるデータＡ、Ｂ、Ｃ、…を仮想化管理ソフト１０５＃Ａに送信する（ステップＳ９０３）。そして、仮想化管理ソフト１０５＃Ａは、ネットワーク１０２経由で、部分情報４５１となるデータＡ、Ｂ、Ｃ、…を情報処理装置１０１＃Ｂに送信する（ステップＳ９０４）。また、仮想化管理ソフト１０５＃Ａは、故障情報１１１の通知有無を確認する（ステップＳ９０５）。ステップＳ９０５の例では、仮想化管理ソフト１０５＃Ａは、故障情報１１１の通知がなかったとして、故障情報１１１に対する処理は行わない。
【００６８】
部分情報４５１となるデータＡ、Ｂ、Ｃ、…を受信した仮想化管理ソフト１０５＃Ｂは、部分情報４５１となるデータＡ、Ｂ、Ｃ、…を、ハイパーバイザ１０３＃Ｂに送信する（ステップＳ９０６）。部分情報４５１となるデータＡ、Ｂ、Ｃ、…を受信したハイパーバイザ１０３＃Ｂは、部分情報４５１となるデータＡ、Ｂ、Ｃ、…をメモリ２１２＃Ｂ＿２に書き込む（ステップＳ９０７）。
【００６９】
ステップＳ９０５の後、移動元ドメインｍｄ＿ｓｒｃの情報のうちまだ情報処理装置１０１＃Ｂに送信していないものがあるとして、仮想化管理ソフト１０５＃Ａは、部分情報４５１の読み込み依頼をハイパーバイザ１０３＃Ａに送信する（ステップＳ１００１）。部分情報４５１の読み込み依頼を受信したハイパーバイザ１０３＃Ａは、部分情報４５１となるデータＤ、Ｆ、…をメモリ２１２＃Ａ＿２から読み込む（ステップＳ１００２）。ステップＳ１００２の途中において、故障によるＴｒａｐを検出した場合、ハイパーバイザ１０３＃Ａは、エラー処理として、Ｔｒａｐ要因レジスタを参照して故障したメモリのアドレス・データサイズ・故障の種別を取得する（ステップＳ１００３）。
【００７０】
そして、ハイパーバイザ１０３＃Ａは、タイプＵＥとなる故障情報１１１を仮想化管理ソフト１０５＃Ａに送信する（ステップＳ１００４）。また、ハイパーバイザ１０３＃Ａは、部分情報４５１となるデータＤ、Ｘ、Ｆ、…を仮想化管理ソフト１０５＃Ａに送信する（ステップＳ１００５）。ここで、データＸは、読み出せなかったデータＥに対する仮情報である。
【００７１】
部分情報４５１となるデータＤ、Ｘ、Ｆ、…を受信した仮想化管理ソフト１０５＃Ａは、ネットワーク１０２経由で、部分情報４５１となるデータＤ、Ｘ、Ｆ、…を情報処理装置１０１＃Ｂに送信する（ステップＳ１００６）。また、仮想化管理ソフト１０５＃Ａは、故障情報１１１の通知有無を確認する（ステップＳ１００７）。ステップＳ１００７の例では、仮想化管理ソフト１０５＃Ａは、故障情報１１１の通知があったとして、タイプＵＥであり、仮情報がデータＸとなる故障情報１１１を、ネットワーク１０２経由で情報処理装置１０１＃Ｂに送信する（ステップＳ１００８）。
【００７２】
部分情報４５１となるデータＤ、Ｘ、Ｆ、…を受信した仮想化管理ソフト１０５＃Ｂは、部分情報４５１となるデータＤ、Ｘ、Ｆ、…を、ハイパーバイザ１０３＃Ｂに送信する（ステップＳ１００９）。部分情報４５１となるデータＤ、Ｘ、Ｆ、…を受信したハイパーバイザ１０３＃Ｂは、部分情報４５１となるデータＤ、Ｘ、Ｆ、…をメモリ２１２＃Ｂ＿２に書き込む（ステップＳ１０１０）。
【００７３】
また、タイプＵＥであり、仮情報がデータＸとなる故障情報１１１を受信した仮想化管理ソフト１０５＃Ｂは、故障情報１１１をハイパーバイザ１０３＃Ｂに送信する（ステップＳ１０１１）。故障情報１１１を受信したハイパーバイザ１０３＃Ｂは、故障情報１１１から特定されるデータＸのアドレスを、ＣＰＵ２１１＃ＢのＵＥを設定するレジスタに書き込む。また、ＣＰＵ２１１＃Ｂは、データＸのアドレスにアクセスされた際にＴｒａｐ検出を行うようにハードウェアの設定を行う（ステップＳ１０１２）。
【００７４】
ステップＳ１００８の後、移動元ドメインｍｄ＿ｓｒｃの情報のうちまだ情報処理装置１０１＃Ｂに送信していないものがあるとして、仮想化管理ソフト１０５＃Ａは、部分情報４５１の読み込み依頼をハイパーバイザ１０３＃Ａに送信する（ステップＳ１０１３）。部分情報４５１の読み込み依頼を受信したハイパーバイザ１０３＃Ａは、部分情報４５１となるデータＧ、Ｈ、Ｉ、…をメモリ２１２＃Ａ＿２から読み込む（ステップＳ１０１４）。
【００７５】
以降、移動元ドメインｍｄ＿ｓｒｃの情報の全てを情報処理装置１０１＃Ｂに送信するまで、仮想化管理ソフト１０５＃Ａは、部分情報４５１の読み込み依頼をハイパーバイザ１０３＃Ａに送信する。次に、システム１００が実行するマイグレーション処理を、図１１〜図１６を用いて説明する。
【００７６】
図１１は、移動元の仮想化管理ソフトにおけるマイグレーション処理手順の一例を示すフローチャートである。移動元の仮想化管理ソフトにおけるマイグレーション処理は、マイグレーション時に仮想化管理ソフト１０５＃Ａが実行する処理である。
【００７７】
仮想化管理ソフト１０５＃Ａは、ハイパーバイザ１０３＃Ａに、移動元ドメインｍｄ＿ｓｒｃの部分情報４５１の読み込み依頼を送信する（ステップＳ１１０１）。ハイパーバイザ１０３＃Ａが、図１２で示すドメイン情報読み込み処理を実行する。仮想化管理ソフト１０５＃Ａは、ハイパーバイザ１０３＃Ａからの応答を待ち受ける。
【００７８】
図１２に示すステップＳ１２０３、ステップＳ１２１０の処理によってハイパーバイザ１０３＃Ａから部分情報４５１を受信した仮想化管理ソフト１０５＃Ａは、ハイパーバイザ１０３＃Ａから受信した部分情報４５１を、仮想化管理ソフト１０５＃Ｂに送信する（ステップＳ１１０２）。次に、仮想化管理ソフト１０５＃Ａは、図１２に示すステップＳ１２０９の処理によって、故障情報１１１が通知されていないか否かを判断する（ステップＳ１１０３）。故障情報１１１が通知されていた場合（ステップＳ１１０３：Ｎｏ）、仮想化管理ソフト１０５＃Ａは、仮想化管理ソフト１０５＃Ｂに故障情報１１１を通知する（ステップＳ１１０４）。
【００７９】
ステップＳ１１０４の処理終了後、または、故障情報１１１が通知されていない場合（ステップＳ１１０３：Ｙｅｓ）、仮想化管理ソフト１０５＃Ａは、移動元ドメインｍｄ＿ｓｒｃの情報を全て送信したか否かを判断する（ステップＳ１１０５）。移動元ドメインｍｄ＿ｓｒｃの情報のうち送信していない情報がある場合（ステップＳ１１０５：Ｎｏ）、仮想化管理ソフト１０５＃Ａは、ステップＳ１１０１の処理に移行する。
【００８０】
一方、移動元ドメインｍｄ＿ｓｒｃの情報を全て送信した場合（ステップＳ１１０５：Ｙｅｓ）、仮想化管理ソフト１０５＃Ａは、仮想化管理ソフト１０５＃Ｂに送信完了を通知する（ステップＳ１１０６）。ステップＳ１１０６の処理終了後、仮想化管理ソフト１０５＃Ａは、移動元の仮想化管理ソフトにおけるマイグレーション処理を終了する。移動元の仮想化管理ソフトにおけるマイグレーション処理を実行することにより、仮想化管理ソフト１０５＃Ａは、移動元ドメインｍｄ＿ｓｒｃの情報を仮想化管理ソフト１０５＃Ｂに送信する。
【００８１】
図１２は、ドメイン情報読み込み処理手順の一例を示すフローチャートである。ドメイン情報読み込み処理は、移動元ドメインｍｄ＿ｓｒｃの情報を読み込む処理である。
【００８２】
ハイパーバイザ１０３＃Ａは、移動元ドメインｍｄ＿ｓｒｃの部分情報４５１を読み込む（ステップＳ１２０１）。そして、ハイパーバイザ１０３＃Ａは、異常なＴｒａｐ検出がないか否かを判断する（ステップＳ１２０２）。異常なＴｒａｐ検出がない場合（ステップＳ１２０２：Ｙｅｓ）、ハイパーバイザ１０３＃Ａは、読み込んだ部分情報４５１を、仮想化管理ソフト１０５＃Ａに送信する（ステップＳ１２０３）。
【００８３】
一方、異常なＴｒａｐ検出がある場合（ステップＳ１２０２：Ｎｏ）、ハイパーバイザ１０３＃Ａは、Ｔｒａｐ要因レジスタを読み込む（ステップＳ１２０４）。そして、ハイパーバイザ１０３＃Ａは、ＵＥによるＴｒａｐか否かを判断する（ステップＳ１２０５）。ＵＥによるＴｒａｐでない場合（ステップＳ１２０５：Ｎｏ）、ハイパーバイザ１０３＃Ａは、その他のＴｒａｐ処理を実行する（ステップＳ１２０６）。そして、ハイパーバイザ１０３＃Ａは、ドメイン情報読み込み処理を異常終了させる。
【００８４】
ＵＥによるＴｒａｐである場合（ステップＳ１２０５：Ｙｅｓ）、ハイパーバイザ１０３＃Ａは、エラーＩＤがソフト指示か否かを判断する（ステップＳ１２０７）。エラーＩＤがソフト指示でない場合（ステップＳ１２０７：Ｎｏ）、ハイパーバイザ１０３＃Ａは、故障個所交換通知を行う（ステップＳ１２０８）。
【００８５】
ステップＳ１２０８の処理について、例えば、ハイパーバイザ１０３＃Ａは、Ｔｒａｐ要因レジスタに格納された物理アドレスに対応するＤＩＭＭの交換通知を行う。Ｔｒａｐ発生時の要因がソフト指示によるものの場合、メモリ２１２の情報は不具合を起こす可能性があるものであるが、メモリ２１２そのものは故障していない。このように、ステップＳ１２０７、Ｓ１２０８の処理により、ハイパーバイザ１０３＃Ａは、故障していないメモリ２１２に対する交換通知を行うという事実と異なった通知をしないで済むことができる。
【００８６】
ステップＳ１２０８の処理終了後、または、エラーＩＤがソフト指示である場合（ステップＳ１２０７：Ｙｅｓ）、ハイパーバイザ１０３＃Ａは、仮想化管理ソフト１０５＃Ａに故障情報１１１を通知する（ステップＳ１２０９）。そして、ハイパーバイザ１０３＃Ａは、仮想化管理ソフト１０５＃Ａに仮情報を通知する（ステップＳ１２１０）。
【００８７】
ステップＳ１２０３、または、ステップＳ１２１０の処理終了後、ハイパーバイザ１０３＃Ａは、メモリ２１２＃Ａ＿２のブロックを全て送信したか否かを判断する（ステップＳ１２１１）。まだ送信していない場合（ステップＳ１２１１：Ｎｏ）、ハイパーバイザ１０３＃Ａは、ステップＳ１２０１の処理に移行する。一方、メモリ２１２＃Ａ＿２のブロックを全て送信した場合（ステップＳ１２１１：Ｙｅｓ）、ハイパーバイザ１０３＃Ａは、ドメイン情報読み込み処理を終了する。ドメイン情報読み込み処理を実行することにより、ハイパーバイザ１０３＃Ａは、移動元ドメインｍｄ＿ｓｒｃの情報を仮想化管理ソフト１０５＃Ａに送信する。
【００８８】
図１３は、移動先の仮想化管理ソフトにおけるマイグレーション処理手順の一例を示すフローチャートである。移動先の仮想化管理ソフトにおけるマイグレーション処理は、マイグレーション時に仮想化管理ソフト１０５＃Ｂが実行する処理である。
【００８９】
仮想化管理ソフト１０５＃Ｂは、図１１に示すステップＳ１１０２の処理によって仮想化管理ソフト１０５＃Ａから部分情報４５１を受信する（ステップＳ１３０１）。そして、仮想化管理ソフト１０５＃Ｂは、ハイパーバイザ１０３＃Ｂに、部分情報４５１の書き込み依頼を行う（ステップＳ１３０２）。
【００９０】
次に、仮想化管理ソフト１０５＃Ｂは、図１１に示すステップＳ１１０４の処理によって仮想化管理ソフト１０５＃Ｂに故障情報１１１が通知されていないか否かを判断する（ステップＳ１３０３）。故障情報１１１が通知されていた場合（ステップＳ１３０３：Ｎｏ）、仮想化管理ソフト１０５＃Ｂは、ハイパーバイザ１０３＃ＢにＵＥ設定依頼を通知する（ステップＳ１３０４）。ハイパーバイザ１０３＃Ｂは、ＵＥ設定依頼を受けると、図１５に示すＵＥ設定処理を行う。また、ＵＥ設定依頼には、故障情報１１１が含まれる。
【００９１】
ステップＳ１３０４の処理終了後、または、故障情報１１１が通知されていない場合（ステップＳ１３０３：Ｙｅｓ）、仮想化管理ソフト１０５＃Ｂは、送信完了が通知されたか否かを判断する（ステップＳ１３０５）。送信完了が通知されていない場合（ステップＳ１３０５：Ｎｏ）、仮想化管理ソフト１０５＃Ｂは、ステップＳ１３０１の処理に移行する。一方、送信完了が通知された場合（ステップＳ１３０５：Ｙｅｓ）、仮想化管理ソフト１０５＃Ｂは、移動先の仮想化管理ソフトにおける移動元ドメインｍｄ＿ｓｒｃの情報の転送が完了する。
【００９２】
図１４は、ドメイン情報書き込み処理手順の一例を示すフローチャートである。ドメイン情報書き込み処理は、移動元ドメインｍｄ＿ｓｒｃの情報を書き込む処理である。ここで、ドメイン情報書き込み処理は、図４で示したドメイン情報転送部４３１＃Ｂにより依頼される。以下の説明では、ドメイン情報書き込み処理をハイパーバイザ１０３＃Ｂが行うものとして説明する。
【００９３】
ハイパーバイザ１０３＃Ｂは、メモリ２１２＃Ｂ＿２に部分情報４５１を書き込む（ステップＳ１４０１）。そして、ハイパーバイザ１０３＃Ｂは、仮想化管理ソフト１０５＃Ｂから依頼のあったデータ全てを書き込んだか否かを判断する（ステップＳ１４０２）。まだ書き込んでいない情報がある場合（ステップＳ１４０２：Ｎｏ）、ハイパーバイザ１０３＃Ｂは、ステップＳ１４０１の処理に移行する。一方、仮想化管理ソフト１０５＃Ｂから依頼のあったデータ全てを書き込んだ場合（ステップＳ１４０２：Ｙｅｓ）、ハイパーバイザ１０３＃Ｂは、ドメイン情報書き込み処理を終了する。
【００９４】
図１５は、ＵＥ設定処理手順の一例を示すフローチャートである。ＵＥ設定処理は、移動元のＵＥ発生個所に対してＵＥを設定する処理である。ここで、ＵＥ設定処理は、図４で示したエラー設定部４３３＃Ｂにより実行される。以下の説明では、ＵＥ設定処理をハイパーバイザ１０３＃Ｂが行うものとして説明する。
【００９５】
ハイパーバイザ１０３＃Ｂは、受信した故障情報１１１に対応する移動元のＵＥ発生個所のリアルアドレスを、物理アドレスに変換する（ステップＳ１５０１）。次に、ハイパーバイザ１０３＃Ｂは、エラーＩＤ＝４をＣＰＵ２１１＃Ｂのレジスタに設定する（ステップＳ１５０２）。そのあと、ＣＰＵ２１１＃Ｂが、該当個所にエラーＩＤ＝４を設定する。設定する領域は、メモリ２１２内にある場合もあるし、メモリ２１２を制御するメモリコントローラ内にある場合もある。
【００９６】
そして、ハイパーバイザ１０３＃Ｂは、変換した物理アドレスにアクセスされた際にＴｒａｐが発生するように情報処理装置１０１＃Ｂのハードウェアに設定する（ステップＳ１５０３）。具体的には、ＣＰＵ２１１＃Ｂのレジスタに物理アドレスを設定すると、ＣＰＵ２１１＃Ｂは、エラーＩＤ＝４と合わせて設定する。これにより、変換した物理アドレスにリードアクセスした際に、Ｔｒａｐが発生し、Ｔｒａｐ要因レジスタにエラーＩＤ＝４が格納される。
【００９７】
ステップＳ１５０３の処理終了後、ハイパーバイザ１０３＃Ｂは、ＵＥ設定処理を終了する。また、変換した物理アドレスへのライトアクセスで上書きできない場合に、Ｔｒａｐ要因レジスタにエラーＩＤ＝４が格納される。
【００９８】
図１６は、マイグレーション後のアクセス処理手順の一例を示すフローチャートである。マイグレーション後のメモリアクセスが発生した際の処理である。図１６で示すように、ステップＳ１６０１〜Ｓ１６０６の処理は、ＣＰＵ２１１＃Ｂが行う処理であり、ステップＳ１６０７〜Ｓ１６１１の処理は、ハイパーバイザ１０３＃Ｂが行う処理である。マイグレーション後は、通常通りアプリケーションソフトウェアが動作しており、Ｔｒａｐが発生すると、ハイパーバイザ１０３＃Ｂが検出する。アプリケーションソフトウェア動作中の通常のメモリアクセスではハイパーバイザ１０３＃Ｂは何もしない。
【００９９】
ＣＰＵ２１１＃Ｂは、異常なしか否かを判断する（ステップＳ１６０１）。異常なしである場合（ステップＳ１６０１：Ｙｅｓ）、ＣＰＵ２１１＃Ｂは、通常のメモリアクセスとなり、マイグレーション後のアクセス処理を完了する。
【０１００】
異常があった場合（ステップＳ１６０１：Ｎｏ）、ＣＰＵ２１１＃Ｂは、メモリアクセスがライトアクセスであり、かつエラーＩＤが４か否かを判断する（ステップＳ１６０２）。なお、ステップＳ１６０１：Ｎｏについて、異常があった場合とは、ＣＰＵ２１１＃Ｂが、データ化けを検出した場合や、故障しているとマークされた箇所を検出した場合である。
【０１０１】
メモリアクセスがライトアクセスかつエラーＩＤが４である場合（ステップＳ１６０２：Ｙｅｓ）、ＣＰＵ２１１＃Ｂは、書き込み先アドレスに対応するエラーＩＤを“０”に設定する（ステップＳ１６０３）。次に、ＣＰＵ２１１＃Ｂは、ＵＥ設定を消去する（ステップＳ１６０４）。そして、ＣＰＵ２１１＃Ｂは、データ書き込み処理を行う（ステップＳ１６０５）。ステップＳ１６０５の処理終了後、ＣＰＵ２１１＃Ｂは、マイグレーション後のアクセス処理を完了する。
【０１０２】
メモリアクセスがリードアクセスである、またはエラーＩＤが４でない場合（ステップＳ１６０２：Ｎｏ）、ＣＰＵ２１１＃Ｂは、ハイパーバイザ１０３＃ＢにＴｒａｐを上げる（ステップＳ１６０６）。Ｔｒａｐが発生した場合、ハイパーバイザ１０３＃Ｂは、Ｔｒａｐ要因レジスタを読み込む（ステップＳ１６０７）。次に、ハイパーバイザ１０３＃Ｂは、発生したＴｒａｐがＵＥによるＴｒａｐか否かを判断する（ステップＳ１６０８）。
【０１０３】
発生したＴｒａｐがＵＥによるＴｒａｐである場合（ステップＳ１６０８：Ｙｅｓ）、ハイパーバイザ１０３＃Ｂは、エラーＩＤが４であるか否かを判断する（ステップＳ１６０９）。エラーＩＤが４でない場合（ステップＳ１６０９：Ｎｏ）、ハイパーバイザ１０３＃Ｂは、故障個所交換通知を行う（ステップＳ１６１０）。また、ＵＥでないＴｒａｐである場合（ステップＳ１６０８：Ｎｏ）、ハイパーバイザ１０３＃Ｂは、その他のＴｒａｐ処理を実行する（ステップＳ１６１１）。
【０１０４】
エラーＩＤが４である場合（ステップＳ１６０９：Ｙｅｓ）、または、ステップＳ１６１０かステップＳ１６１１の処理終了後、ハイパーバイザ１０３＃Ｂは、アプリケーションソフトウェアやＯＳからのアクセスを異常終了させる。なお、図１５で示したフローチャートにおいて、異常があった場合、ＣＰＵ２１１＃Ｂは、ハイパーバイザ１０３＃ＢにＴｒａｐを上げ、ライトアクセスかつエラーＩＤ＝４となる場合の処理についてもハイパーバイザ１０３＃Ｂが行ってもよい。
【０１０５】
マイグレーション後のアクセス処理を実行することにより、ＣＰＵ２１１＃Ｂは、エラーＩＤ＝４であり、ＵＥとなるエラーが起きても、ライトアクセスであれば、運用を続行することができる。また、ハイパーバイザ１０３＃Ｂは、エラーＩＤ＝４であり、ＵＥとなるエラーが起きた際に、リードアクセスであれば、ユーザプログラムの実行中にエラーを検出した場合には、ユーザプログラムを異常終了させる。また、ハイパーバイザ１０３＃Ｂは、エラーＩＤ＝４であり、ＵＥとなるエラーが起きた際に、リードアクセスであれば、カーネルの実行中に検出した場合には、カーネルパニックを発生させる。
【０１０６】
以上説明したように、情報処理装置１０１＃ＡがＵＥを含む誤り情報を検出した場合に、故障情報１１１を情報処理装置１０１＃Ｂに通知し、情報処理装置１０１＃Ｂは、故障情報１１１に対応するアドレスにエラーＩＤ＝４であるＵＥを書き込む。これにより、情報処理装置１０１＃Ｂは、ＵＥが情報処理装置１０１＃Ａにおいて発生した誤りであり、情報処理装置１０１＃Ｂのハードウェアが故障したものではないことを判断することができる。また、情報処理装置１０１＃Ｂは、情報処理装置１０１＃Ｂのハードウェアが故障したものではないため、ＵＥを含む情報を有する記憶領域への書き込みは問題なく行えると判断することができる。
【０１０７】
また、情報処理装置１０１＃Ａは、移動元ドメインｍｄ＿ｓｒｃに割り当てられた記憶領域に記憶されている移動元ドメインｍｄ＿ｓｒｃ上で動作するソフトウェアの計算途中の情報を、移動先の装置に送信してもよい。これにより、マイグレーション完了後、情報処理装置１０１＃Ｂは、移動先ドメインｍｄ＿ｄｓｔ上で動作するソフトウェアを、計算途中の状態から動作させることができる。
【０１０８】
また、マイグレーション完了後、情報処理装置１０１＃Ｂは、ライトアクセスにより異常があった場合、Ｔｒａｐ要因レジスタにエラーＩＤがソフト指示であるＵＥが格納されていれば、エラーＩＤがソフト指示であるＵＥを消去し、処理を継続させる。これにより、情報処理装置１０１＃Ｂは、移動先ドメインｍｄ＿ｄｓｔの運用を継続させることができる。また、マイグレーション完了後、情報処理装置１０１＃Ｂは、リードアクセスによりＴｒａｐが発生した場合、Ｔｒａｐ要因レジスタにエラーＩＤがソフト指示であるＵＥが格納されていれば、リードアクセスの発生元のソフトウェアを中断させる。例えば、情報処理装置１０１＃Ｂは、リードアクセスの発生元のソフトウェアがユーザプログラムであれば、リードアクセスの発生元のユーザプログラムを異常終了させる。この場合、情報処理装置１０１＃Ｂは、リードアクセスの発生元のソフトウェア以外のソフトウェアの動作を継続させることができる。
【０１０９】
また、情報処理装置１０１＃Ａは、ＵＥを含む情報に対応する仮情報を情報処理装置１０１＃Ｂに送信してもよい。これにより、情報処理装置１０１＃Ａは、移動元の装置のメモリのうち移動元ドメインｍｄ＿ｓｒｃに割り当てられた記憶領域のデータと仮情報とをまとめて、ひとまとまりの連続したアドレスの情報として送信できるため、効率的に送信することができる。
【０１１０】
また、システム１００は、ＵＥが検出されたとしても、マイグレーションを成功させることができる。また、システム１００は、移動先ドメインｍｄ＿ｄｓｔにおいて、ソフト指示であるＵＥを含むデータへのライトアクセスの場合やソフト指示であるＵＥを含むデータを使用しない場合に、移動先ドメインｍｄ＿ｄｓｔの動作を継続させることができる。
【０１１１】
また、ライブマイグレーションに適用して、ハードウェアの故障が発生したメモリを使用しているドメインを、正常な別のコンピュータシステムに移動させることができるため、システム１００は、業務を停止することなく故障部品の交換が可能となる。
【０１１２】
（実施の形態２の説明）
次に、実施の形態２では、稼働中のドメインの運用を継続したまま、一部のハードウェア資源を切り離したり、または追加したりするダイナミック・リコンフィギュレイション（Ｄｙｎａｍｉｃ  Ｒｅｃｏｎｆｉｇｕｒａｔｉｏｎ）と呼ばれる技術に、マイグレーションを適用した例について説明する。実施の形態２では、１つのボードを１つの情報処理装置とみなして、ボードの間でドメインを移動させる。ここで、実施の形態２において、実施の形態１において説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。
【０１１３】
図１７は、情報処理装置１７０１の構成例を示すブロック図である。情報処理装置１７０１は、２つのボード１７１１＃０、１を有する。ボード１７１１＃０、１は、ダイナミック・リコンフィギュレイションとして、情報処理装置１７０１を実行中であっても動的に切り離すことが可能である。また、情報処理装置１７０１は、３つ以上のボード１７１１を有してもよい。以下、動的にボードを切り離すことを、「活性ボード切り離し」と呼称する。
【０１１４】
ボード１７１１は、１つ以上のＣＰＵ２１１と１つ以上のメモリ２１２とを有する。図１７に示すボード１７１１＃０、１は、それぞれ、複数のＣＰＵ２１１と複数のメモリ２１２とを有する。ボード１７１１＃０、１は内部のインターフェースにより接続され、一方のボード１７１１のＣＰＵ２１１が、もう一方のボード１７１１のメモリ２１２にアクセス可能である。
【０１１５】
図１８は、情報処理装置１７０１における活性ボード切り離し動作の一例を示す説明図である。図１８では、マイグレーションを含む活性ボード切り離し動作の一例を示す。ここで、ボード１７１１＃０に含まれるＣＰＵ２１１上と、ボード１７１１＃１に含まれるＣＰＵ２１１上とで、それぞれ、ハイパーバイザ１０３が動作する。そして、ボード１７１１＃０に含まれるＣＰＵ２１１と、ボード１７１１＃１に含まれるＣＰＵ２１１とのうちのいずれか一方のＣＰＵ上で、制御ドメイン１０４と、仮想化管理ソフト１０５が動作する。図１８では、ボード１７１１＃１に含まれるＣＰＵ２１１上で、制御ドメイン１０４と、仮想化管理ソフト１０５とが動作する。
【０１１６】
そして、ボード１７１１＃１におけるハイパーバイザ１０３をマスタハイパーバイザ１７２１とし、ボード１７１１＃０におけるハイパーバイザ１０３をスレーブハイパーバイザ１７２２とする。実施の形態２では、スレーブハイパーバイザ１７２２上で実行する移動元ドメインｍｄ＿ｓｒｃを、マスタハイパーバイザ１７２１上で実行する移動先ドメインｍｄ＿ｄｓｔにマイグレーションするものとする。ここで、移動元ドメインｍｄ＿ｓｒｃは、ボード１７１１＃０のメモリ２１２＃０を使用しており、移動先ドメインｍｄ＿ｄｓｔには、ボード１７１１＃１のメモリ２１２＃１が確保されている。
【０１１７】
図１８の（１）で示す動作として、情報処理装置１７０１は、移動元ドメインｍｄ＿ｓｒｃを移動先ドメインｍｄ＿ｄｓｔとしてマイグレーションする。そして、マイグレーション完了後、図１８の（２）で示す動作として、情報処理装置１７０１の管理者は、ボード１７１１＃０を切り離す。
【０１１８】
次に、図１８に示した情報処理装置１７０１におけるマイグレーションシーケンスの一例を、図１９を用いて説明する。
【０１１９】
図１９は、情報処理装置１７０１におけるマイグレーションシーケンスの一例を示す説明図である。マイグレーションを行う前の状態において、メモリ２１２＃０は、部分情報４５１となるデータＡ、Ｂ、Ｃ、…、Ｄ、Ｅ、Ｆ、…、Ｇ、Ｈ、Ｉ、…を記憶していたとする。仮想化管理ソフト１０５は、マイグレーションリクエストを、移動元ドメインｍｄ＿ｓｒｃを実行するスレーブハイパーバイザ１７２２に通知する（ステップＳ１９０１）。
【０１２０】
マイグレーションリクエストを受けたスレーブハイパーバイザ１７２２は、移動元ドメインｍｄ＿ｓｒｃの部分情報４５１となるデータＡ、Ｂ、Ｃ、…をメモリ２１２＃０から読み込む（ステップＳ１９０２）。そして、スレーブハイパーバイザ１７２２は、部分情報４５１となるデータＡ、Ｂ、Ｃ、…をマスタハイパーバイザ１７２１に送信する（ステップＳ１９０３）。部分情報４５１となるデータＡ、Ｂ、Ｃ、…を受信したマスタハイパーバイザ１７２１は、部分情報４５１となるデータＡ、Ｂ、Ｃ、…をメモリ２１２＃１に書き込む（ステップＳ１９０４）。
【０１２１】
ステップＳ１９０３の後、引き続き、スレーブハイパーバイザ１７２２は、移動元ドメインｍｄ＿ｓｒｃの部分情報４５１となるデータＤ、Ｆ、…をメモリ２１２＃０から読み込む（ステップＳ１９０５）。ステップＳ１９０５の途中において、故障によるＴｒａｐを検出した場合、スレーブハイパーバイザ１７２２は、エラー処理として、Ｔｒａｐ要因レジスタを参照して故障したメモリのアドレス・データサイズ・故障の種別を取得する（ステップＳ１９０６）。
【０１２２】
そして、スレーブハイパーバイザ１７２２は、タイプＵＥであり、仮情報がデータＸとなる故障情報１１１をマスタハイパーバイザ１７２１に送信する（ステップＳ１９０７）。また、スレーブハイパーバイザ１７２２は、部分情報４５１となるデータＤ、Ｘ、Ｆ、…をマスタハイパーバイザ１７２１に送信する（ステップＳ１９０８）。ここで、データＸは、読み出せなかったデータＥに対する仮情報である。
【０１２３】
部分情報４５１となるデータＤ、Ｘ、Ｆ、…を受信したマスタハイパーバイザ１７２１は、部分情報４５１となるデータＤ、Ｘ、Ｆ、…をメモリ２１２＃１に書き込む（ステップＳ１９０９）。故障情報１１１を受信したマスタハイパーバイザ１７２１は、故障情報１１１から特定されるデータＸのアドレスを、ＣＰＵ２１１＃１のＵＥを設定するレジスタに書き込む。また、ＣＰＵ２１１＃１は、データＸのアドレスにアクセスされた際にＴｒａｐ検出を行うようにハードウェアの設定を行う（ステップＳ１９１０）。
【０１２４】
ステップＳ１９０８の後、引き続き、スレーブハイパーバイザ１７２２は、移動元ドメインｍｄ＿ｓｒｃの部分情報４５１となるデータＧ、Ｈ、Ｉ、…をメモリ２１２＃０から読み込む（ステップＳ１９１１）。以降、移動元ドメインｍｄ＿ｓｒｃの情報の全てをマスタハイパーバイザ１７２１に送信するまで、スレーブハイパーバイザ１７２２は、移動元ドメインｍｄ＿ｓｒｃの部分情報４５１をメモリから読み込む。
【０１２５】
実施の形態２におけるフローチャートについては、実施の形態１におけるフローチャートとほぼ同一であるため、説明および図示を省略する。
【０１２６】
次に、実施の形態１、２によってマイグレーションする際における、メモリ使用状態ごとのドメインの運用継続可否について、図２０を用いて説明する。
【０１２７】
図２０は、メモリ使用状態ごとのドメインの運用継続可否を示す説明図である。図２０では、移動元ドメインｍｄ＿ｓｒｃに割り当てられたメモリ２１２の使用状態ごとの運用継続可否について説明する。
【０１２８】
メモリ２１２の使用状態としては、使用中、未使用、使用不可のうちのいずれかの状態に分類される。使用中の状態とは、メモリ２１２を割り当てられた移動元ドメインが使用中の状態である。具体的には、使用中の状態にあるメモリの領域として、図２０で示すように、これから読み込まれる（Ａ）の領域と、これから書き込まれる（Ｂ）の領域とがある。未使用の状態とは、図２０で示す（Ｃ）の領域であり、メモリ２１２を割り当てられた移動元ドメインが使用していない状態である。使用不可の状態とは、図２０で示す（Ｄ）の領域であり、過去にメモリ上にエラーが発生しており、メモリ２１２を割り当てられた移動元ドメインが使用不可に設定した状態である。
【０１２９】
実施の形態１、２にかかる情報処理装置は、ＵＥが発生した際に、メモリの状態が使用中、未使用、使用不可のいずれの状態であっても、マイグレーションを継続することができる。
【０１３０】
そして、移動先ドメインｍｄ＿ｄｓｔが、使用中の状態にある領域に書き込まれた仮情報を上書きする際には、使用中の状態にある領域に書き込まれた仮情報は読み込まれることがない。従って、マイグレーションの処理において使用中の状態にある領域の情報を複製しても、移動先ドメインｍｄ＿ｄｓｔが仮情報を読み込むことをしなければ不具合が発生しない。
【０１３１】
ここで、より詳細な例を用いて、使用中の状態にある領域について説明する。例えば、移動元ドメインｍｄ＿ｓｒｃが、メモリ２１２＃Ａ＿２内に記憶されている第１の変数の値と、メモリ２１２＃Ａ＿２内に記憶されている第２の変数の値とを入れ替える入れ替え処理を行うとする。さらに、移動元ドメインｍｄ＿ｓｒｃは、メモリ２１２＃Ａ＿２内の第３の変数を値の退避用の変数として用いて入れ替え処理を行うとする。そして、入れ替え処理は、第１の変数の値を第３の変数に退避し、次に、第２変数の値を第１の変数に書き込み、そして、第３の変数の値を第２の変数に書き込むことで完了するものとする。ここで、移動元ドメインｍｄ＿ｓｒｃが、第１の変数の値を第３の変数に退避した後、マイグレーションが行われたとする。さらに、マイグレーション時に、第１の変数の値にＵＥが含まれたとする。
【０１３２】
この場合、マイグレーション時における第１の変数は、第１の変数の値を第３の変数に退避した後では書き込まれる処理が行われるため、図２０で示した（Ｂ）の領域となり、実施の形態１、２にかかる情報処理装置は、マイグレーションを継続することができる。また、第２の変数の値を第１の変数に書き込むことにより、第１の変数に書き込まれた仮情報を上書きすることになる。このように、マイグレーション後に、第１の変数に書き込まれた仮情報を読み込むことをしないため、不具合が発生しない。
【０１３３】
未使用の状態にある領域について、移動先ドメインｍｄ＿ｄｓｔは、使用する際に領域を初期化する。すなわち、未使用の状態にある領域に書き込まれた仮情報は読み込まれることがない。従って、未使用の状態にある領域の情報を複製しても不具合が発生しない。
【０１３４】
また、使用不可の状態にある領域は、移動元ドメインｍｄ＿ｓｒｃで使用不可であるため、移動先ドメインｍｄ＿ｄｓｔも使用不可となる。すなわち、使用不可の状態にある領域に書き込まれた仮情報が読み込まれることはない。従って、使用不可の状態にある領域の情報を複製しても不具合が発生しない。
【０１３５】
以上説明したように、情報処理装置１７０１によれば、情報処理装置１０１と同等の効果が得られる。また、ダイナミック・リコンフィギュレイションに適用して、ハードウェアの故障が発生したメモリを使用するドメインを、正常な別のメモリを使用するように移動させることができ、業務を停止することなく故障部品の交換が可能となる。例えば、ボード１７１１＃０上のＣＰＵが、２０個のドメインを実行しているとする。そして、マイグレーション時に、２０個のドメインのうちの１個のドメインの情報に、メモリによるＵＥが発生したとする。この場合、ボード１７１１＃０上のＣＰＵは、２０個のドメイン全てをマイグレーションすることができる。移動先となるボード１７１１＃１において、ＵＥが発生した１個のドメインは運用が停止する可能性はあるが、残り１９個のドメインは運用を継続することができる。
【０１３６】
また、情報処理装置は、移動先に送信予定のドメインが使用するメモリから誤り訂正できない誤りを含む情報が検出されると、誤り訂正できない誤りが移動元において発生した誤りであることを識別させる識別情報を移動先に通知する。これにより、ドメインの移動時に誤り訂正できない誤りが検出された際のドメインの動作の不具合の発生を抑制できる。
【０１３７】
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本情報処理プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本情報処理プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１３８】
上述した実施の形態１、２に関し、さらに以下の付記を開示する。
【０１３９】
（付記１）第１の装置と第２の装置とが接続されるシステムにおいて、
前記第１の装置は、
前記第２の装置への仮想マシンのマイグレーションに際して前記第１の装置のメモリのうち前記仮想マシンに割り当てられた記憶領域から誤り訂正できない誤りが検出された場合に、誤り訂正できない誤りが検出された第１のアドレスを示す故障情報を、前記第２の装置に通知し、
前記第２の装置は、
前記第１の装置から前記故障情報を受信した場合、前記故障情報が示す前記第１のアドレスのデータのコピー先となる前記第２の装置のメモリの第２のアドレスのデータに誤り訂正できない誤りが含まれることを示す識別子として、前記第２の装置で発生した誤り訂正できない誤りが含まれることを示す第１の識別子とは値が異なる第２の識別子を、前記第２のアドレスに対応付けて前記第２の装置のメモリに書き込む
ことを特徴とするシステム。
【０１４０】
（付記２）前記仮想マシンは、マイグレーションに際して前記第１の装置上で動作しており、
前記第１の装置は、
前記第２の装置への仮想マシンのマイグレーションに際して、前記第１の装置のメモリのうち前記仮想マシンに割り当てられた記憶領域に記憶されている前記仮想マシン上で動作するソフトウェアの計算途中の情報を、前記第２の装置に送信することを特徴とする付記１に記載のシステム。
【０１４１】
（付記３）前記第２の装置は、
前記第２の識別子に基づいて前記第２のアドレスにライトアクセスが発生したことを検出した場合、前記第２の識別子を消去し、
前記第２の識別子に基づいて前記第２のアドレスにリードアクセスが発生したことを検出した場合、前記リードアクセスの発生元のソフトウェアを中断させることを特徴とする付記１または２に記載のシステム。
【０１４２】
（付記４）自装置と接続された他装置への仮想マシンのマイグレーションに際して自装置のメモリのうち前記仮想マシンに割り当てられた記憶領域から誤り訂正できない誤りが検出された場合に、誤り訂正できない誤りが検出された第１のアドレスを示す故障情報を、前記他装置に通知する
ことを特徴とする情報処理装置。
【０１４３】
（付記５）自装置への仮想マシンのマイグレーションに際して自装置と接続された他装置から、誤り訂正できない誤りが検出された第１のアドレスを示す故障情報を受信した場合、前記故障情報が示す前記第１のアドレスのデータのコピー先となる自装置のメモリの第２のアドレスのデータに誤り訂正できない誤りが含まれることを示す識別子として、自装置で発生した誤り訂正できない誤りが含まれることを示す第１の識別子とは値が異なる第２の識別子を、前記第２のアドレスに対応付けて自装置のメモリに書き込む
ことを特徴とする情報処理装置。
【０１４４】
（付記６）仮想マシンのマイグレーションに際してマイグレーション先に送信予定の前記仮想マシンの情報のうち、誤り訂正できない誤りを含む情報が検出された場合に、前記誤りがマイグレーション元において発生した誤りであることを識別させる識別情報を前記マイグレーション先に通知する
ことを特徴とする情報処理装置。
【０１４５】
（付記７）前記情報処理装置は、前記マイグレーションに際して、前記誤りを含む前記情報に対応する仮情報を前記マイグレーション先に送信することで前記マイグレーションを実行する
ことを特徴とする付記６に記載の情報処理装置。
【０１４６】
（付記８）前記識別情報は、前記誤りが前記マイグレーション元において発生した誤りであることを識別させ、かつ、前記仮情報が前記マイグレーション先において利用不可な情報であることを識別させる識別情報である
ことを特徴とする付記７に記載の情報処理装置。
【０１４７】
（付記９）前記仮想マシンは、前記識別情報に従って、前記マイグレーション先において実行される
ことを特徴とする付記６〜８のいずれか１項に記載の情報処理装置。
【０１４８】
（付記１０）第１の装置と第２の装置とが接続されるシステムにおける情報処理方法において、
前記第１の装置は、
前記第２の装置への仮想マシンのマイグレーションに際して前記第１の装置のメモリのうち前記仮想マシンに割り当てられた記憶領域から誤り訂正できない誤りが検出された場合に、誤り訂正できない誤りが検出された第１のアドレスを示す故障情報を、前記第２の装置に通知し、
前記第２の装置は、
前記第１の装置から前記故障情報を受信した場合、前記故障情報が示す前記第１のアドレスのデータのコピー先となる前記第２の装置のメモリの第２のアドレスのデータに誤り訂正できない誤りが含まれることを示す識別子として、前記第２の装置で発生した誤り訂正できない誤りが含まれることを示す第１の識別子とは値が異なる第２の識別子を、前記第２のアドレスに対応付けて前記第２の装置のメモリに書き込む
ことを特徴とする情報処理方法。
【０１４９】
（付記１１）コンピュータが、
仮想マシンのマイグレーションに際してマイグレーション先に送信予定の前記仮想マシンの情報のうち、誤り訂正できない誤りを含む情報が検出されたか否かを判断し、
前記誤りを含む前記情報が検出されたと判断した場合に、前記誤りがマイグレーション元において発生した誤りであることを識別させる識別情報を前記マイグレーション先に通知する
処理を実行することを特徴とする情報処理方法。
【０１５０】
（付記１２）コンピュータに、
仮想マシンのマイグレーションに際してマイグレーション先に送信予定の前記仮想マシンの情報のうち、誤り訂正できない誤りを含む情報が検出されたか否かを判断し、
前記誤りを含む前記情報が検出されたと判断した場合に、前記誤りがマイグレーション元において発生した誤りであることを識別させる識別情報を前記マイグレーション先に通知する
処理を実行させることを特徴とする情報処理プログラム。
【符号の説明】
【０１５１】
ｍｄ＿ｓｒｃ  移動元ドメイン
ｍｄ＿ｄｓｔ  移動先ドメイン
１００  システム
１０１＃Ａ、＃Ｂ  情報処理装置
１０３  ハイパーバイザ
１１１  故障情報
２１１  ＣＰＵ
２１２  メモリ
３０１  制御部
３０２  送信部
３０３  通知部
３０４  書込部
３０５  アクセス処理部
１７０１  情報処理装置
【図１】
0006540334.tif 000002
【図２】
0006540334.tif 000003
【図３】
0006540334.tif 000004
【図４】
0006540334.tif 000005
【図５】
0006540334.tif 000006
【図６】
0006540334.tif 000007
【図７】
0006540334.tif 000008
【図８】
0006540334.tif 000009
【図９】
0006540334.tif 000010
【図１０】
0006540334.tif 000011
【図１１】
0006540334.tif 000012
【図１２】
0006540334.tif 000013
【図１３】
0006540334.tif 000014
【図１４】
0006540334.tif 000015
【図１５】
0006540334.tif 000016
【図１６】
0006540334.tif 000017
【図１７】
0006540334.tif 000018
【図１８】
0006540334.tif 000019
【図１９】
0006540334.tif 000020
【図２０】
0006540334.tif 000021