JP6540334B2 - システム、情報処理装置、および情報処理方法 - Google Patents

システム、情報処理装置、および情報処理方法 Download PDF

Info

Publication number
JP6540334B2
JP6540334B2 JP2015150165A JP2015150165A JP6540334B2 JP 6540334 B2 JP6540334 B2 JP 6540334B2 JP 2015150165 A JP2015150165 A JP 2015150165A JP 2015150165 A JP2015150165 A JP 2015150165A JP 6540334 B2 JP6540334 B2 JP 6540334B2
Authority
JP
Japan
Prior art keywords
information
error
memory
address
migration
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015150165A
Other languages
English (en)
Other versions
JP2017033113A (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 JP2015150165A priority Critical patent/JP6540334B2/ja
Priority to US15/216,753 priority patent/US10176035B2/en
Publication of JP2017033113A publication Critical patent/JP2017033113A/ja
Application granted granted Critical
Publication of JP6540334B2 publication Critical patent/JP6540334B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0712Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a virtual computing platform, e.g. logically partitioned systems
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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

Description

本発明は、システム、情報処理装置、および情報処理方法に関する。
従来、異なるハードウェア資源間で、仮想マシンを移動するマイグレーションという技術がある。また、実データに対して冗長ビットを付加して記憶することにより、実データを読み込んだ際に実データの一部のビットが誤っても、誤ったビットが特定ビット数以内であれば冗長ビットを用いて誤りを復元する訂正技術がある。関連する先行技術として、複製元の第1メモリへのアクセス中に生じたエラーが第1メモリで生じたものならば複製先のメモリにアクセス要求を再試行し、第1メモリで生じたものでなければ訂正不可なメモリエラーを通知するものがある。
特開2011−134327号公報 特開2010−39987号公報
しかしながら、従来技術では、仮想マシンの移動元の装置においてマイグレーション対象の仮想マシンの情報から誤り訂正できない誤りが検出された際に、マイグレーションを継続することが実質的に不可能である。例えば、誤り訂正できない誤りは元データを復元することができないため、移動先の装置において、元データとは異なるエラーデータを仮想マシンが参照した結果、データ破壊という不具合を起こすことがある。従って、誤り訂正できない誤りが検出されると、データ保全のため、マイグレーションを異常終了することになる。
1つの側面では、本発明は、マイグレーションを継続させつつ、仮想マシンの移動先の装置において、移動先の装置で発生した誤り訂正できない誤りに対する動作とは区別した動作を行うことができるシステム、情報処理装置、および情報処理方法を提供することを目的とする。
本発明の一側面によれば、第1の装置と第2の装置とが接続されるシステムにおいて、第1の装置は、第2の装置への仮想マシンのマイグレーションに際して第1の装置のメモリのうち仮想マシンに割り当てられた記憶領域から誤り訂正できない誤りが検出された場合に、誤り訂正できない誤りが検出された第1のアドレスを示す故障情報を、第2の装置に通知し、第2の装置は、第1の装置から故障情報を受信した場合、故障情報が示す第1のアドレスのデータのコピー先となる第2の装置のメモリの第2のアドレスのデータに誤り訂正できない誤りが含まれることを示す識別子として、第2の装置で発生した誤り訂正できない誤りが含まれることを示す第1の識別子とは値が異なる第2の識別子を、第2のアドレスに対応付けて第2の装置のメモリに書き込むシステム、情報処理装置、および情報処理方法が提案される。
本発明の一態様によれば、マイグレーションを継続させつつ、仮想マシンの移動先の装置において、移動先の装置で発生した誤り訂正できない誤りに対する動作とは区別した動作を行うことができる。
また、誤り訂正できない誤りが検出されたとしても、マイグレーションを成功させることができる。また、移動先の装置において、ソフト指示である誤り訂正できない誤りを含むデータへのライトアクセスの場合やソフト指示である誤り訂正できない誤りを含むデータを使用しない場合に、移動先ドメインの動作を継続させることができる。また、業務を停止することなく故障部品を交換することができる。
図1は、実施の形態1にかかるシステム100の動作例を示す説明図である。 図2は、システム100に含まれるハードウェアの一例を示す説明図である。 図3は、システム100の機能構成例を示すブロック図である。 図4は、マイグレーション時の制御フローおよびデータフローの一例を示す説明図である。 図5は、故障情報111の一例を示す説明図である。 図6は、エラーIDの種別の一例を示す説明図である。 図7は、移動先ドメインmd_dstにおけるリードアクセス実行時の動作の一例を示す説明図である。 図8は、移動先ドメインmd_dstにおけるライトアクセス実行時の動作の一例を示す説明図である。 図9は、システム100におけるマイグレーションシーケンスの一例を示す説明図(その1)である。 図10は、システム100におけるマイグレーションシーケンスの一例を示す説明図(その2)である。 図11は、移動元の仮想化管理ソフトにおけるマイグレーション処理手順の一例を示すフローチャートである。 図12は、ドメイン情報読み込み処理手順の一例を示すフローチャートである。 図13は、移動先の仮想化管理ソフトにおけるマイグレーション処理手順の一例を示すフローチャートである。 図14は、ドメイン情報書き込み処理手順の一例を示すフローチャートである。 図15は、UE設定処理手順の一例を示すフローチャートである。 図16は、マイグレーション後のアクセス処理手順の一例を示すフローチャートである。 図17は、情報処理装置1701の構成例を示すブロック図である。 図18は、情報処理装置1701における活性ボード切り離し動作の一例を示す説明図である。 図19は、情報処理装置1701におけるマイグレーションシーケンスの一例を示す説明図である。 図20は、メモリ使用状態ごとのドメインの運用継続可否を示す説明図である。
以下に図面を参照して、開示のシステム、情報処理装置、および情報処理方法の実施の形態を詳細に説明する。
(実施の形態1の説明)
図1は、実施の形態1にかかるシステム100の動作例を示す説明図である。実施の形態1では、仮想マシンを異なる装置に移動する動作であるマイグレーションについて説明する。システム100に含まれる情報処理装置101#A、#Bは、仮想マシンを制御するコンピュータである。情報処理装置101#A、#Bは、LAN(Local Area Network)、WAN(Wide Area Network)、インターネット等のネットワーク102により接続される。ここで、以下の図示および説明において、符号に「#A」がついたものは情報処理装置101#Aに関するものであり、符号に「#B」がついたものは情報処理装置101#Bに関するものである。
具体的には、情報処理装置101#A、#Bは、仮想マシンのハードウェア資源となる仮想マシンに割り当てるCPU(Central Processing Unit)や、揮発性のメモリを管理して、仮想マシンを利用するユーザに提供する。情報処理装置101#A、#Bは、例えば、サーバである。
仮想マシンは、ハードウェア資源を用いて仮想的に作成されたコンピュータシステムである。仮想マシンは、仮想的に作成したコンピュータシステムであればどのようなものでもよく、例えば、他のコンピュータにサービスやデータを提供するサーバでもよいし、サーバによるサービスやデータの提供を受けるコンピュータでもよい。以下、仮想マシンを、「ドメイン」と呼称する。ドメインを作成するハードウェア資源は、情報処理装置101#A、#Bのハードウェアでもよいし、情報処理装置101に接続可能な他の装置のハードウェアでもよい。以下の説明では、ドメインを作成するハードウェア資源は、情報処理装置101#A、#Bのハードウェアであるとする。
ドメインを制御するプログラムとしては、ハイパーバイザがある。ハイパーバイザは、ハードウェアを直接制御する機能を持ち、ファームウェア層で、仮想化マシンアーキテクチャーを提供するプログラムである。
ここで、ドメインに関連する技術として、ドメインの業務量の増減やドメインを作成するハードウェアの故障発生時の保守作業時に、稼働中のドメインの運用を継続したまま、ドメインを他のハードウェアに移動させるライブマイグレーション(Live Migration)と呼ばれる技術がある。以下、ライブマイグレーションを、単に、「マイグレーション」と記載する。そして、移動元となるドメインを、「移動元ドメイン」と呼称する。また、移動先となるドメインを、「移動先ドメイン」と呼称する。
また、移動元の装置上で動作するハイパーバイザを「移動元ハイパーバイザ」と呼称する場合がある。さらに、移動先の装置上で動作するハイパーバイザを「移動先ハイパーバイザ」と呼称する場合がある。図1の例では、情報処理装置101#Aが移動元の装置であり、情報処理装置101#Bが移動先の装置であるとする。従って、図1の例では、情報処理装置101#A上で動作するハイパーバイザ103#Aが、移動元ハイパーバイザとなる。また、情報処理装置101#B上で動作するハイパーバイザ103#Bが、移動先ハイパーバイザとなる。
マイグレーションを行う際には、ドメインの移動元の装置のメモリのうち移動元ドメインに割り当てられた記憶領域のデータを読み出して、読み出したデータを、移動先の装置のメモリのうち移動先ドメインに割り当てられた記憶領域に書き込むことになる。ここで、移動元ドメインが使用しているデータは、動的に変化するものである。例えば、移動元ドメインが使用しているデータは、移動元ドメイン上で動作するOS(Operating System)やアプリケーションソフトウェアの計算途中の情報である。
そして、移動元の装置のメモリのうち移動元ドメインに割り当てられた記憶領域のデータを読み込むと、ECC(Error Check and Correct)マルチビットエラー等の誤り訂正できない誤り(Uncorrectable Error:UE)を検出することがある。ここで、メモリで発生する誤りについて説明する。メモリは、様々な要因でエラーが起こり得る。例えば、物理的にメモリが故障している際に、エラーが起こる。または、メモリ内において、ビットを保持するメモリセルがコンデンサである場合、読み込みが集中すると、エラーが起こる可能性がある。具体的な理由としては、読み込みを何度も行うと、コンデンサの電荷が失われてしまい、メモリセルが記憶するビットが反転するためである。また、メモリセルがアルファ線や中性子線を受けると、メモリセルが記憶するビットが反転することがある。また、メモリ自身が正常であっても、CPUからメモリまでの経路が故障していることにより、エラーが起こる場合もある。
また、メモリで発生する誤りはいつ発生するかわからないものであり、マイグレーション時にハイパーバイザが初めて誤りを検出する場合もあるし、マイグレーションの前に、OSが既に誤りを検出している場合もある。
次に、誤りについて、誤り訂正できる誤り(Correctable Error:CE)と、UEとについて説明する。ECC機能を有するメモリは、実データに対して冗長ビットを付加しており、実データと冗長ビットを用いて、誤りのビットがあるか、誤りのビットがあるならば実データ内のどのビットであるかを求める。冗長ビットの符号化方法としては、例えば、BCH符号、リード・ソロモン符号、ハフマン符号等がある。各符号化方法において、誤りのビットを検出した際に、誤り訂正できるビット数以内であれば、CEとなり、誤り訂正できるビット数を超えた場合、UEとなる。そして、誤り訂正できるビット数は、各符号化方法において、実データのビット数と冗長ビットのビット数との関係より決まるものである。
ここで、符号化方法として、2重誤り訂正が可能なBCH符号である場合を例にして説明する。実データと冗長ビットとに対して復号を行うと、誤りのビットがない、1つの誤ったビットの位置、2つの誤ったビットのそれぞれの位置、誤りのビットの位置は不明だが3つ以上の誤ったビットがある、のうちのいずれか1つの情報を得ることができる。この場合では、1つの誤ったビットの位置、または、2つの誤ったビットのそれぞれの位置の情報が得られた場合、CEを検出したことになる。また、誤りのビットの位置は不明だが3つ以上の誤ったビットがあるという情報が得られた場合、UEを検出したことになる。
しかしながら、移動元の装置においてマイグレーション対象の仮想マシンの情報からUEが検出された際に、マイグレーションを継続することが実質的に不可能である。例えば、UEは元データを復元することができないため、移動先の装置において、元データとは異なるエラーデータを仮想マシンが参照した結果、データ破壊という不具合を起こすことがある。従って、UEが検出されると、データ保全のため、マイグレーションを異常終了することになる。
また、移動元の装置においてUEが検出された際に、エラーデータをUEを含むものとして設定することで、マイグレーションを継続させつつ、データ破壊を避けることが考えられる。しかしながら、この場合、移動先の装置において、エラーデータにアクセスして発生するUEと、移動先の装置が故障して発生するUEとが区別できない。従って、移動先の装置においてエラーデータにアクセスしてUEが発生した場合、移動先の装置が故障していないにも関わらず、移動先の装置が故障したと誤認識し、移動先の装置が故障した際の動作を行うことになる。
また、移動元ドメインの情報を格納するメモリは、次に示す使用状況のいずれかとなる。1つ目のメモリの使用状況は、マイグレーション対象のドメインが使用中であり、マイグレーション後に読み込むという状況である。2つ目のメモリの使用状況は、マイグレーション対象のドメインが使用中であり、マイグレーション後に書き込むという状況である。3つ目のメモリの使用状況は、マイグレーション対象のドメインが現在未使用であり、マイグレーション後に使用する可能性がある状況である。4つ目のメモリの使用状況は、過去にメモリ上にエラーが発生しており、使用不可とした状況である。マイグレーションを行う際に、ハイパーバイザがUEを検出しても、UEが発生した領域が、上述した4つの状況のいずれであるかは、ハイパーバイザからは判断できない。
そこで、ドメインの移動元の装置は、移動元の装置のメモリのうち移動元ドメインに割り当てられた記憶領域からUEが検出された場合に、UEが検出された第1のアドレスを示す故障情報を移動先の装置に送信する。ここで、第1のアドレスは、移動元の装置のメモリのうちUEとなったデータが格納されている記憶領域のアドレスである。そして、移動先の装置は、故障情報が示す第1のアドレスのデータのコピー先となる移動先の装置のメモリのアドレスである第2のアドレスを特定する。そして、移動先の装置は、特定した第2のアドレスと対応付けて、第2のアドレスのデータが移動元の装置でUEが発生し正しくないことを示す第2の識別子を、移動先の装置のメモリに書き込む。ここで、第2の識別子は、UEを示す識別子であり、かつ、自装置で発生したUEを示す第1の識別子とは異なる識別子である。例えば、第1の識別子は、自装置のメモリやCPU、I/Oで故障し、UEであることを示す識別子である。これに対し、第2の識別子は、自装置で発生したUEではなく、ソフトによる指示によりUEであることを示す識別子である。第1、第2の識別子のより具体的な例については、図6で説明する。
図1を用いて、システム100の動作を説明する。図1では、ドメインの移動元の装置として情報処理装置101#Aで動作中の移動元ドメインmd_srcを、移動先の装置として情報処理装置101#Bにマイグレーションする。ここで、図1では、情報処理装置101#A上で動作するソフトウェアとして、制御ドメイン104#Aと、移動元ドメインmd_srcと、仮想化管理ソフト105#Aとが示される。また、図1では、情報処理装置101#B上で動作するソフトウェアとして、制御ドメイン104#Bと、仮想化管理ソフト105#Bと、移動元ドメインmd_srcの移動後に動作する移動先ドメインmd_dstとが示される。図1で示す状態は、マイグレーション前の状態を示しており、移動先ドメインmd_dstはまだ動作していない。図1では、動作していないドメインを点線で示す。
制御ドメイン104は、ハイパーバイザ103上で動作するOSである。仮想化管理ソフト105は、制御ドメイン104上で動作し、情報処理装置101のリソースを管理しており、情報処理装置101内のドメインの管理を行う。また、仮想化管理ソフト105は、ドメインの管理の一つとして、情報処理装置101の間においてマイグレーションを行う。
図1では、情報処理装置101#Bに送信予定の移動元ドメインmd_srcの情報として、情報d1〜d5があることを示す。ここで、情報d3は、UEを含む情報であるとする。図1では、UEを、墨塗りで示す。情報d3が読み込まれ、壊れた情報d3をそのまま使用すると、データ破壊を起こす可能性がある。
そのため、仮想化管理ソフト105#Aは、情報d3が読み込まれた結果、UEが検出されたと判断した場合に、UEを含む情報d3のアドレスを第1のアドレスとして、第1のアドレスを示す故障情報111を仮想化管理ソフト105#Bに送信する。故障情報111の内容としては、故障情報111がUEであることを示す識別情報と、第1のアドレスである。さらに、故障情報111の内容としては、UEが発生した移動元の装置を識別する識別情報が含まれてもよい。故障情報111の具体例は、図5で示す。ここで、UEを含む情報となった情報d3を検出する実行主体は、ハイパーバイザ103#Aである。
故障情報111を受信した仮想化管理ソフト105#Bは、ハイパーバイザ103#BにUE挿入依頼を行う。UE挿入依頼を受けたハイパーバイザ103#Bは、故障情報111が示す第1のアドレスを変換することにより第2のアドレスを特定する。具体的な変換例については、図4で説明する。そして、ハイパーバイザ103#Bは、UE挿入として、第2の識別子を第2のアドレスに対応付けて情報処理装置101#Bに書き込む。図1では、網掛けを付与した領域が、第2の識別子であることを示す。
書き込みの具体例としては、ハイパーバイザ103#Bは、第2の識別子を設定するレジスタに、第2のアドレスを書き込む。また、ハイパーバイザ103#Bは、第2のアドレスにアクセスされた際にTrap検出を行うように情報処理装置101#Bのハードウェアの設定を行う。これにより、ドメイン移動後にメモリアクセスで異常検出し、異常検出要因が上記ハイパーバイザによる設定であった場合、情報処理装置101#Bは、Trapの要因を示すTrap要因レジスタに第2の識別子を格納するようになる。また、情報処理装置101#Bは、第2のアドレスにリードアクセスされた際にTrapによりCPUがソフトウェアに通知するようになる。マイグレーション後において、メモリにアクセスした際の動作については、図16で説明する。
マイグレーション後、情報処理装置101#Bは、異常があった場合またはTrapの発生時に、Trap要因レジスタに第2の識別子が格納されていれば、自装置のハードウェアが故障したものではないことを判断することができる。例えば、情報処理装置101#Bは、ライトアクセス異常の原因が上記ハイパーバイザによる設定であった場合、Trap要因レジスタに第2の識別子が格納されていれば、第2の識別子を消去する。また、情報処理装置101#Bは、リードアクセスによりTrapが発生した場合、Trap要因レジスタに第2の識別子が格納されていれば、リードアクセスの発生元のソフトウェアを中断させる。例えば、情報処理装置101#Bは、リードアクセスの発生元のソフトウェアがユーザプログラムであれば、リードアクセスの発生元のユーザプログラムを異常終了させる。また、情報処理装置101#Bは、リードアクセスの発生元のソフトウェアがカーネルであれば、カーネルパニックを発生させて、カーネルを含むドメインを強制終了させる。ここで、カーネルとは、OSの中核となるソフトウェアである。
故障情報111が送信されることにより、情報処理装置101#Bは、UEが情報処理装置101#B以外で発生した誤りであり、情報処理装置101#Bのハードウェアが故障したものではないことを判断することができる。また、第2の識別子を情報処理装置101#Bのメモリに書き込むことにより、データ破壊を起こす可能性があるデータが記憶されたアドレスを特定できるので、情報処理装置101#Bは、データ破壊の問題を避けることができる。また、情報処理装置101#Bは、Trapが発生してTrap要因レジスタに第2の識別子が格納されている際に、情報処理装置101#Bのハードウェアで発生したUEに対する動作とは区別した動作を行うことができる。次に、システム100に含まれるハードウェア構成例について図2を用いて説明する。
図2は、システム100に含まれるハードウェアの一例を示す説明図である。情報処理装置101#A、#Bは、同一のハードウェアを有する。なお、情報処理装置101#A、#Bが有するハードウェアは、まったく同じでなくてもよい。次に、情報処理装置101のハードウェアについて説明する。
情報処理装置101は、1つ以上のCPU211と1つ以上のメモリ212とを有する。図2に示す情報処理装置101#A、#Bは、それぞれ、複数のCPU211と複数のメモリ212とを有する。
CPU211は、情報処理装置101の全体の制御を司る演算処理装置である。ここで、CPU211は、1つ以上のコアを有する。また、CPU211は、メモリ212へのアクセスを制御するメモリコントローラを有する。ここで、メモリコントローラは、情報処理装置101内であってCPU211の外にあってもよい。また、CPU211は、LANに接続するI/O(Input/Output)インターフェースを有する。
メモリ212は、CPU211のワークエリアとして使用される揮発性メモリである。メモリ212は、例えば、ECC機能付きのDIMM(Dual Inline Memory Module)である。
また、図2では示していないが、システム100は、不揮発性の記憶装置として、HDD(Hard Disk Drive)やSSD(Solid State Drive)を有する。システム100が不揮発性の記憶装置を1つ有し、複数の情報処理装置101は、1つの不揮発性の記憶装置を共有して利用する。または、情報処理装置101のそれぞれが、不揮発性の記憶装置を有してもよい。
また、システム100の管理者が、情報処理装置101を直接操作する場合、情報処理装置101は、ディスプレイ、キーボード、マウスといったハードウェアを有してもよい。
(システム100の機能構成例)
図3は、システム100の機能構成例を示すブロック図である。情報処理装置101#A、#Bは、制御部301を有する。そして、制御部301は、送信部302と、通知部303と、書込部304と、アクセス処理部305とを有する。制御部301は、記憶装置に記憶されたプログラムをCPU211が実行することにより、各部の機能を実現する。ここで、送信部302と通知部303とは、ハイパーバイザ103と、仮想化管理ソフト105により実現される機能である。また、書込部304とアクセス処理部305とは、ハイパーバイザ103により実現される機能である。また、記憶装置とは、例えば、HDDやSSDなどである。また、各部の処理結果は、CPU211のレジスタや、CPU211のキャッシュメモリ、メモリ212、HDD等に格納される。図3で示す状態は、マイグレーション前の状態を示しており、移動先ドメインmd_dstはまだ動作していない。図3では、動作していないドメインを点線で示す。
送信部302は、移動先の装置に、移動元ドメインmd_srcの情報を送信する。移動元ドメインmd_srcの情報は、例えば、マイグレーション中に動作する移動元ドメインmd_src上で動作するソフトウェアの計算途中の情報である。また、送信部302は、マイグレーションに際して、UE発生時のデータは正しいデータではないため、仮情報を送信してもよい。仮情報は、UEを含む情報と同一のデータサイズであればどのようなデータでもよい。例えば、仮情報は、全てのビットが0のデータや、全てのビットが1のデータ等である。また、仮情報は、故障情報111の一部を含んでいてもよい。ここで、仮情報を移動先の装置に送信しない場合には、移動先の装置は、第2のアドレスが示す記憶領域に何も書かなくてもよい。ここで、第1のアドレスは、図1の説明で記載したように、移動元の装置のメモリのうちUEとなったデータが格納されている記憶領域のアドレスである。また、第2のアドレスは、図1の説明で記載したように、故障情報111が示す第1のアドレスのデータのコピー先となる移動先の装置のメモリのアドレスである。図3で示す例では、斜線の網掛けを付与した情報dxが、UEを含む情報d3に対応する仮情報となる。
通知部303は、移動元ドメインmd_srcの情報のうち、UEを含む情報が検出された場合に、UEが検出された第1のアドレスを示す故障情報111を移動先の装置に通知する。また、故障情報111は、誤りが移動元の装置において発生した誤りであることを識別させ、かつ、仮情報が移動先においても故障個所のデータが利用不可な情報であることを示すものでもよい。
書込部304は、故障情報111が示す第1のアドレスのデータのコピー先となる移動先の装置の第2のアドレスに対応付けて、ソフトウェアが意図的に使用不可とみなした第2の識別子を、移動先のCPU211のレジスタに書き込む。書き込みを受けると、移動先のCPU211は、ソフトウェアが意図的に使用不可とみなした第2の識別子をメモリに格納する。
マイグレーション完了後に、アクセスを受けてCPU211#Bが、第2の識別子に対応付けられた第2のアドレスへのライトアクセスの場合は上書きを行い、第2の識別子を消去する。
マイグレーション完了後に、アクセス処理部305は、第2の識別子に基づいて第2のアドレスにリードアクセスが発生したことを検出した場合、リードアクセスの発生元のソフトウェアを中断させる。例えば、アクセス処理部305は、リードアクセスの発生元がユーザプログラムであれば、ユーザプログラムを異常終了させる。また、リードアクセスの発生元がカーネルであれば、アクセス処理部305は、カーネルを含むドメインをパニックさせて強制終了させる。
図4は、マイグレーション時の制御フローおよびデータフローの一例を示す説明図である。ハイパーバイザ103は、ドメイン情報転送部431と、エラー検出部432と、エラー設定部433とを有する。各部の動作については、下記に説明する。また、仮想化管理ソフト105は、ドメイン情報格納部441と故障情報格納部442とを有する。
図4では、移動元ドメインmd_srcは、メモリ212#A_2を使用しており、移動先ドメインmd_dstには、メモリ212#B_2が確保されている。図4で示す状態は、マイグレーション前の状態を示しており、移動先ドメインmd_dstはまだ動作していない。図4では、動作していないドメインを点線で示す。
図4を用いて、マイグレーションの制御フローおよびデータフローを説明する。ここで、図4では、制御フローを実線の矢印で示し、データフローを破線の矢印で示す。図4の(1)で示す処理として、仮想化管理ソフト105#Aは、ハイパーバイザ103#Aに、移動元ドメインmd_srcのドメイン情報転送部431#Aに、移動元ドメインmd_srcの情報の読み込みを依頼する。
マイグレーションを開始すると、まず、仮想化管理ソフト105#Aは、ブロック単位でメモリ212#A_2を全て転送する。また、仮想化管理ソフト105#Aは、転送中に移動元ドメインmd_srcのドメインが更新したメモリ212#A_2内の個所を転送する処理を繰り返し、メモリ212#A_2とメモリ212#B_2との差分を少なくする。そして、仮想化管理ソフト105#Aは、移動元ドメインmd_srcを一瞬停止させ、少なくなった差分を転送する。少なくなった差分を転送した後、仮想化管理ソフト105#Bは、移動先ドメインmd_dstの動作を開始させる。以下、一回に転送するデータを、「部分情報」と呼称する。
依頼を受けたドメイン情報転送部431#Aは、図4の(2)で示す処理として、メモリ212#A_2から移動元ドメインmd_srcの部分情報を読み込む。そして、読み込み時にエラーがあった際、ドメイン情報転送部431#Aは、図4の(3)で示す処理として、Trapを受けることにより、故障を検出する。
故障を検出しなかった場合、ドメイン情報転送部431#Aは、図4の(4)で示す処理として、読み出した部分情報451を、仮想化管理ソフト105#Aのドメイン情報格納部441#Aに格納する。
故障を検出した場合、ドメイン情報転送部431#Aは、図4の(5)で示す処理として、Trap要因レジスタを参照して故障したメモリのアドレス・データサイズ・故障の種別を取得し、ハイパーバイザ103#Aのエラー検出部432#Aに通知する。故障したメモリのアドレス・データサイズ・故障の種類の通知を受けたエラー検出部432#Aは、図4の(6)で示す処理として、故障情報111を仮想化管理ソフト105#Aの故障情報格納部442#Aに格納する。故障情報111の一例を、図5で示す。また、故障の種別の一例を、図6で示す。
また、エラー検出部432#Aは、図4の(7)で示す処理として、仮情報を仮想化管理ソフト105#Aのドメイン情報格納部441#Aに格納する。以下、仮情報も部分情報451に含まれるものとする。
ここで、ドメインの情報は、メモリ212上では、物理アドレスを用いて管理される。一方、仮想化管理ソフト105は、各ドメインで独立なリアルアドレスを用いて情報を管理する。そして、ある部分情報のリアルアドレスは、移動元ドメインmd_srcと移動先ドメインmd_dstとで同一となる。一方、ある部分情報の物理アドレスは、メモリ212#A_2とメモリ212#B_2とでは異なる値となる可能性がある。
物理アドレスからリアルアドレスへの変換処理や、リアルアドレスから物理アドレスへの変換処理は、ハイパーバイザ103によって行われてもよいし、仮想化管理ソフト105によって行われてもよい。また、情報処理装置101#Aは、ハイパーバイザ103#Aによって物理アドレスからリアルアドレスへの変換処理を行い、情報処理装置101#Bは、仮想化管理ソフト105#Bによってリアルアドレスから物理アドレスへの変換処理を行ってもよい。または、情報処理装置101#Aは、仮想化管理ソフト105#Aによって物理アドレスからリアルアドレスへの変換処理を行い、情報処理装置101#Bは、ハイパーバイザ103#Bによってリアルアドレスから物理アドレスへの変換処理を行ってもよい。本実施の形態では、それぞれの変換処理は、ハイパーバイザ103によって行われるものとする。
仮想化管理ソフト105#Aは、図4の(8)で示す処理として、ドメイン情報格納部441#Aに格納された部分情報451を、情報処理装置101#Bに送信する。情報処理装置101#Bは、受信した部分情報451を、仮想化管理ソフト105#Bのドメイン情報格納部441#Bに格納する。また、仮想化管理ソフト105#Aは、図4の(9)で示す処理として、故障情報格納部442#Aに格納された故障情報111を、情報処理装置101#Bに送信する。情報処理装置101#Bは、受信した故障情報111を、仮想化管理ソフト105#Bの故障情報格納部442#Bに格納する。
仮想化管理ソフト105#Bは、図4の(10)で示す処理として、ドメイン情報格納部441#Bに格納した部分情報451をハイパーバイザ103#Bに送信する。部分情報451を受信したハイパーバイザ103#Bは、図4の(11)で示す処理として、部分情報451をメモリ212#B_2に書き込む。また、仮想化管理ソフト105#Bは、図4の(12)で示す処理として、故障情報格納部442#Bに格納した故障情報111をハイパーバイザ103#Bに送信する。
故障情報111を受信したハイパーバイザ103#Bのエラー設定部433#Bは、図4の(13)で示す処理として、受信した故障情報111に対応するリアルアドレスを、物理アドレスに変換し、UEを挿入するレジスタに、変換した物理アドレスを書き込む。CPU211#Bは、変換した物理アドレスを、レジスタからメモリ212#Bに書き込む。具体的には、CPU211#Bは、レジスタに書かれた物理アドレスの個所が壊れているとマークをつけ、メモリ212#Bに図6に示すエラーID=4を入れておく。CPU211#Bは、アクセスがあった時に壊れているという認識ができ、メモリ212#B内にエラーIDがあるのでそれをTrap要因レジスタに格納する。なお、CPU211#Bは、変換した物理アドレスを、メモリ212#Bを制御するメモリコントローラに書き込んでもよい。
図5は、故障情報111の一例を示す説明図である。図5に示す表501の1レコードが故障情報111となる。故障情報111は、アドレスと、データサイズと、タイプという項目を有する。アドレス項目には、故障となったメモリのアドレスが格納される。ここで、アドレス項目には、故障となったメモリの物理アドレスが格納される場合もあるし、故障となったメモリのリアルアドレスが格納される場合もある。例えば、図4の(9)で示す処理で送受信される故障情報111のアドレスは、リアルアドレスとなる。また、本実施の形態では、リアルアドレスと物理アドレスとの変換処理がハイパーバイザ103によって行われるものとした。従って、例えば、読み込みを行った際に故障検出した場合、ハイパーバイザ103#Aは、故障となった読み込み先のメモリ212#A_2の物理アドレスからリアルアドレスに変換する。
データサイズ項目には、メモリのデータサイズが格納される。表501で示すように、データサイズは、それぞれで異なるものとなる可能性がある。タイプ項目には、誤り訂正可能か否かを示す種別が格納される。表501で示すUEとは、誤り訂正できない誤りの故障が発生したことを示す。
図6は、エラーIDの種別の一例を示す説明図である。図6で示す表601は、故障の種別となるエラーIDの一覧を示す。エラーID=0は、故障が発生していないことを示すIDである。エラーID=1は、メモリ内で故障したことを示すIDである。エラーID=2は、I/Oで故障したことを示すIDである。エラーID=3は、CPU211内で故障したことを示すIDである。エラーID=4は、ソフトによる指示であることを示すIDである。エラーID=1〜3であるUEが、図1で説明した第1の識別子に相当する。また、エラーID=4であるUEが、図1で説明した第2の識別子に相当する。
ここで、マイグレーション完了後において、移動先ドメインmd_dstでエラーID=4を設定した物理アドレスにアクセスした際に、メモリ212#B_2は正常であるため、メモリ212#B_2の保守は不要である。次に、アクセスの具体例として、マイグレーション完了後において、移動先ドメインmd_dstにおける読み込み実行時の動作の一例を、図7を用いて説明する。また、マイグレーション完了後において、移動先ドメインmd_dstにおける書き込み実行時の動作の一例を、図8を用いて説明する。
図7は、移動先ドメインmd_dstにおけるリードアクセス実行時の動作の一例を示す説明図である。図7に示す表701は、メモリ212#B_2の物理アドレスと、物理アドレスに対応するエラーIDの値と、物理アドレスに対応する記憶領域で記憶するデータとをまとめたものである。例えば、物理アドレス「0x00000000」には、故障が発生しておらず、データ「A」が記憶されている。また、表701が示すように、物理アドレス「0x00000018」に対してエラーID=4が設定されている。
図7で示すように、アドレス0x00000018のリードアクセス実行中にTrapを検出したとする。このとき、ハイパーバイザ103#Bは、実行中の処理を中断させる。ここで、UE検出がソフト指示によるものと特定し、ハードウェアは故障を通知しない。
図8は、移動先ドメインmd_dstにおけるライトアクセス実行時の動作の一例を示す説明図である。図8で示すように、ライトアクセス実行時にソフトウェアにTrapは上がらない。CPU211は、物理アドレス「0x00000018」に対するエラーIDを0に設定するとともに、UEを消去する。
図9は、システム100におけるマイグレーションシーケンスの一例を示す説明図(その1)である。また、図10は、システム100におけるマイグレーションシーケンスの一例を示す説明図(その2)である。マイグレーションを行う前の状態において、メモリ212#A_2は、部分情報451となるデータA、B、C、…、D、E、F、…、G、H、I、…を記憶していたとする。仮想化管理ソフト105#Aは、部分情報451の読み込み依頼をハイパーバイザ103#Aに送信する(ステップS901)。
部分情報451の読み込み依頼を受信したハイパーバイザ103#Aは、部分情報451となるデータA、B、C、…をメモリ212#A_2から読み込む(ステップS902)。そして、ハイパーバイザ103#Aは、部分情報451となるデータA、B、C、…を仮想化管理ソフト105#Aに送信する(ステップS903)。そして、仮想化管理ソフト105#Aは、ネットワーク102経由で、部分情報451となるデータA、B、C、…を情報処理装置101#Bに送信する(ステップS904)。また、仮想化管理ソフト105#Aは、故障情報111の通知有無を確認する(ステップS905)。ステップS905の例では、仮想化管理ソフト105#Aは、故障情報111の通知がなかったとして、故障情報111に対する処理は行わない。
部分情報451となるデータA、B、C、…を受信した仮想化管理ソフト105#Bは、部分情報451となるデータA、B、C、…を、ハイパーバイザ103#Bに送信する(ステップS906)。部分情報451となるデータA、B、C、…を受信したハイパーバイザ103#Bは、部分情報451となるデータA、B、C、…をメモリ212#B_2に書き込む(ステップS907)。
ステップS905の後、移動元ドメインmd_srcの情報のうちまだ情報処理装置101#Bに送信していないものがあるとして、仮想化管理ソフト105#Aは、部分情報451の読み込み依頼をハイパーバイザ103#Aに送信する(ステップS1001)。部分情報451の読み込み依頼を受信したハイパーバイザ103#Aは、部分情報451となるデータD、F、…をメモリ212#A_2から読み込む(ステップS1002)。ステップS1002の途中において、故障によるTrapを検出した場合、ハイパーバイザ103#Aは、エラー処理として、Trap要因レジスタを参照して故障したメモリのアドレス・データサイズ・故障の種別を取得する(ステップS1003)。
そして、ハイパーバイザ103#Aは、タイプUEとなる故障情報111を仮想化管理ソフト105#Aに送信する(ステップS1004)。また、ハイパーバイザ103#Aは、部分情報451となるデータD、X、F、…を仮想化管理ソフト105#Aに送信する(ステップS1005)。ここで、データXは、読み出せなかったデータEに対する仮情報である。
部分情報451となるデータD、X、F、…を受信した仮想化管理ソフト105#Aは、ネットワーク102経由で、部分情報451となるデータD、X、F、…を情報処理装置101#Bに送信する(ステップS1006)。また、仮想化管理ソフト105#Aは、故障情報111の通知有無を確認する(ステップS1007)。ステップS1007の例では、仮想化管理ソフト105#Aは、故障情報111の通知があったとして、タイプUEであり、仮情報がデータXとなる故障情報111を、ネットワーク102経由で情報処理装置101#Bに送信する(ステップS1008)。
部分情報451となるデータD、X、F、…を受信した仮想化管理ソフト105#Bは、部分情報451となるデータD、X、F、…を、ハイパーバイザ103#Bに送信する(ステップS1009)。部分情報451となるデータD、X、F、…を受信したハイパーバイザ103#Bは、部分情報451となるデータD、X、F、…をメモリ212#B_2に書き込む(ステップS1010)。
また、タイプUEであり、仮情報がデータXとなる故障情報111を受信した仮想化管理ソフト105#Bは、故障情報111をハイパーバイザ103#Bに送信する(ステップS1011)。故障情報111を受信したハイパーバイザ103#Bは、故障情報111から特定されるデータXのアドレスを、CPU211#BのUEを設定するレジスタに書き込む。また、CPU211#Bは、データXのアドレスにアクセスされた際にTrap検出を行うようにハードウェアの設定を行う(ステップS1012)。
ステップS1008の後、移動元ドメインmd_srcの情報のうちまだ情報処理装置101#Bに送信していないものがあるとして、仮想化管理ソフト105#Aは、部分情報451の読み込み依頼をハイパーバイザ103#Aに送信する(ステップS1013)。部分情報451の読み込み依頼を受信したハイパーバイザ103#Aは、部分情報451となるデータG、H、I、…をメモリ212#A_2から読み込む(ステップS1014)。
以降、移動元ドメインmd_srcの情報の全てを情報処理装置101#Bに送信するまで、仮想化管理ソフト105#Aは、部分情報451の読み込み依頼をハイパーバイザ103#Aに送信する。次に、システム100が実行するマイグレーション処理を、図11〜図16を用いて説明する。
図11は、移動元の仮想化管理ソフトにおけるマイグレーション処理手順の一例を示すフローチャートである。移動元の仮想化管理ソフトにおけるマイグレーション処理は、マイグレーション時に仮想化管理ソフト105#Aが実行する処理である。
仮想化管理ソフト105#Aは、ハイパーバイザ103#Aに、移動元ドメインmd_srcの部分情報451の読み込み依頼を送信する(ステップS1101)。ハイパーバイザ103#Aが、図12で示すドメイン情報読み込み処理を実行する。仮想化管理ソフト105#Aは、ハイパーバイザ103#Aからの応答を待ち受ける。
図12に示すステップS1203、ステップS1210の処理によってハイパーバイザ103#Aから部分情報451を受信した仮想化管理ソフト105#Aは、ハイパーバイザ103#Aから受信した部分情報451を、仮想化管理ソフト105#Bに送信する(ステップS1102)。次に、仮想化管理ソフト105#Aは、図12に示すステップS1209の処理によって、故障情報111が通知されていないか否かを判断する(ステップS1103)。故障情報111が通知されていた場合(ステップS1103:No)、仮想化管理ソフト105#Aは、仮想化管理ソフト105#Bに故障情報111を通知する(ステップS1104)。
ステップS1104の処理終了後、または、故障情報111が通知されていない場合(ステップS1103:Yes)、仮想化管理ソフト105#Aは、移動元ドメインmd_srcの情報を全て送信したか否かを判断する(ステップS1105)。移動元ドメインmd_srcの情報のうち送信していない情報がある場合(ステップS1105:No)、仮想化管理ソフト105#Aは、ステップS1101の処理に移行する。
一方、移動元ドメインmd_srcの情報を全て送信した場合(ステップS1105:Yes)、仮想化管理ソフト105#Aは、仮想化管理ソフト105#Bに送信完了を通知する(ステップS1106)。ステップS1106の処理終了後、仮想化管理ソフト105#Aは、移動元の仮想化管理ソフトにおけるマイグレーション処理を終了する。移動元の仮想化管理ソフトにおけるマイグレーション処理を実行することにより、仮想化管理ソフト105#Aは、移動元ドメインmd_srcの情報を仮想化管理ソフト105#Bに送信する。
図12は、ドメイン情報読み込み処理手順の一例を示すフローチャートである。ドメイン情報読み込み処理は、移動元ドメインmd_srcの情報を読み込む処理である。
ハイパーバイザ103#Aは、移動元ドメインmd_srcの部分情報451を読み込む(ステップS1201)。そして、ハイパーバイザ103#Aは、異常なTrap検出がないか否かを判断する(ステップS1202)。異常なTrap検出がない場合(ステップS1202:Yes)、ハイパーバイザ103#Aは、読み込んだ部分情報451を、仮想化管理ソフト105#Aに送信する(ステップS1203)。
一方、異常なTrap検出がある場合(ステップS1202:No)、ハイパーバイザ103#Aは、Trap要因レジスタを読み込む(ステップS1204)。そして、ハイパーバイザ103#Aは、UEによるTrapか否かを判断する(ステップS1205)。UEによるTrapでない場合(ステップS1205:No)、ハイパーバイザ103#Aは、その他のTrap処理を実行する(ステップS1206)。そして、ハイパーバイザ103#Aは、ドメイン情報読み込み処理を異常終了させる。
UEによるTrapである場合(ステップS1205:Yes)、ハイパーバイザ103#Aは、エラーIDがソフト指示か否かを判断する(ステップS1207)。エラーIDがソフト指示でない場合(ステップS1207:No)、ハイパーバイザ103#Aは、故障個所交換通知を行う(ステップS1208)。
ステップS1208の処理について、例えば、ハイパーバイザ103#Aは、Trap要因レジスタに格納された物理アドレスに対応するDIMMの交換通知を行う。Trap発生時の要因がソフト指示によるものの場合、メモリ212の情報は不具合を起こす可能性があるものであるが、メモリ212そのものは故障していない。このように、ステップS1207、S1208の処理により、ハイパーバイザ103#Aは、故障していないメモリ212に対する交換通知を行うという事実と異なった通知をしないで済むことができる。
ステップS1208の処理終了後、または、エラーIDがソフト指示である場合(ステップS1207:Yes)、ハイパーバイザ103#Aは、仮想化管理ソフト105#Aに故障情報111を通知する(ステップS1209)。そして、ハイパーバイザ103#Aは、仮想化管理ソフト105#Aに仮情報を通知する(ステップS1210)。
ステップS1203、または、ステップS1210の処理終了後、ハイパーバイザ103#Aは、メモリ212#A_2のブロックを全て送信したか否かを判断する(ステップS1211)。まだ送信していない場合(ステップS1211:No)、ハイパーバイザ103#Aは、ステップS1201の処理に移行する。一方、メモリ212#A_2のブロックを全て送信した場合(ステップS1211:Yes)、ハイパーバイザ103#Aは、ドメイン情報読み込み処理を終了する。ドメイン情報読み込み処理を実行することにより、ハイパーバイザ103#Aは、移動元ドメインmd_srcの情報を仮想化管理ソフト105#Aに送信する。
図13は、移動先の仮想化管理ソフトにおけるマイグレーション処理手順の一例を示すフローチャートである。移動先の仮想化管理ソフトにおけるマイグレーション処理は、マイグレーション時に仮想化管理ソフト105#Bが実行する処理である。
仮想化管理ソフト105#Bは、図11に示すステップS1102の処理によって仮想化管理ソフト105#Aから部分情報451を受信する(ステップS1301)。そして、仮想化管理ソフト105#Bは、ハイパーバイザ103#Bに、部分情報451の書き込み依頼を行う(ステップS1302)。
次に、仮想化管理ソフト105#Bは、図11に示すステップS1104の処理によって仮想化管理ソフト105#Bに故障情報111が通知されていないか否かを判断する(ステップS1303)。故障情報111が通知されていた場合(ステップS1303:No)、仮想化管理ソフト105#Bは、ハイパーバイザ103#BにUE設定依頼を通知する(ステップS1304)。ハイパーバイザ103#Bは、UE設定依頼を受けると、図15に示すUE設定処理を行う。また、UE設定依頼には、故障情報111が含まれる。
ステップS1304の処理終了後、または、故障情報111が通知されていない場合(ステップS1303:Yes)、仮想化管理ソフト105#Bは、送信完了が通知されたか否かを判断する(ステップS1305)。送信完了が通知されていない場合(ステップS1305:No)、仮想化管理ソフト105#Bは、ステップS1301の処理に移行する。一方、送信完了が通知された場合(ステップS1305:Yes)、仮想化管理ソフト105#Bは、移動先の仮想化管理ソフトにおける移動元ドメインmd_srcの情報の転送が完了する。
図14は、ドメイン情報書き込み処理手順の一例を示すフローチャートである。ドメイン情報書き込み処理は、移動元ドメインmd_srcの情報を書き込む処理である。ここで、ドメイン情報書き込み処理は、図4で示したドメイン情報転送部431#Bにより依頼される。以下の説明では、ドメイン情報書き込み処理をハイパーバイザ103#Bが行うものとして説明する。
ハイパーバイザ103#Bは、メモリ212#B_2に部分情報451を書き込む(ステップS1401)。そして、ハイパーバイザ103#Bは、仮想化管理ソフト105#Bから依頼のあったデータ全てを書き込んだか否かを判断する(ステップS1402)。まだ書き込んでいない情報がある場合(ステップS1402:No)、ハイパーバイザ103#Bは、ステップS1401の処理に移行する。一方、仮想化管理ソフト105#Bから依頼のあったデータ全てを書き込んだ場合(ステップS1402:Yes)、ハイパーバイザ103#Bは、ドメイン情報書き込み処理を終了する。
図15は、UE設定処理手順の一例を示すフローチャートである。UE設定処理は、移動元のUE発生個所に対してUEを設定する処理である。ここで、UE設定処理は、図4で示したエラー設定部433#Bにより実行される。以下の説明では、UE設定処理をハイパーバイザ103#Bが行うものとして説明する。
ハイパーバイザ103#Bは、受信した故障情報111に対応する移動元のUE発生個所のリアルアドレスを、物理アドレスに変換する(ステップS1501)。次に、ハイパーバイザ103#Bは、エラーID=4をCPU211#Bのレジスタに設定する(ステップS1502)。そのあと、CPU211#Bが、該当個所にエラーID=4を設定する。設定する領域は、メモリ212内にある場合もあるし、メモリ212を制御するメモリコントローラ内にある場合もある。
そして、ハイパーバイザ103#Bは、変換した物理アドレスにアクセスされた際にTrapが発生するように情報処理装置101#Bのハードウェアに設定する(ステップS1503)。具体的には、CPU211#Bのレジスタに物理アドレスを設定すると、CPU211#Bは、エラーID=4と合わせて設定する。これにより、変換した物理アドレスにリードアクセスした際に、Trapが発生し、Trap要因レジスタにエラーID=4が格納される。
ステップS1503の処理終了後、ハイパーバイザ103#Bは、UE設定処理を終了する。また、変換した物理アドレスへのライトアクセスで上書きできない場合に、Trap要因レジスタにエラーID=4が格納される。
図16は、マイグレーション後のアクセス処理手順の一例を示すフローチャートである。マイグレーション後のメモリアクセスが発生した際の処理である。図16で示すように、ステップS1601〜S1606の処理は、CPU211#Bが行う処理であり、ステップS1607〜S1611の処理は、ハイパーバイザ103#Bが行う処理である。マイグレーション後は、通常通りアプリケーションソフトウェアが動作しており、Trapが発生すると、ハイパーバイザ103#Bが検出する。アプリケーションソフトウェア動作中の通常のメモリアクセスではハイパーバイザ103#Bは何もしない。
CPU211#Bは、異常なしか否かを判断する(ステップS1601)。異常なしである場合(ステップS1601:Yes)、CPU211#Bは、通常のメモリアクセスとなり、マイグレーション後のアクセス処理を完了する。
異常があった場合(ステップS1601:No)、CPU211#Bは、メモリアクセスがライトアクセスであり、かつエラーIDが4か否かを判断する(ステップS1602)。なお、ステップS1601:Noについて、異常があった場合とは、CPU211#Bが、データ化けを検出した場合や、故障しているとマークされた箇所を検出した場合である。
メモリアクセスがライトアクセスかつエラーIDが4である場合(ステップS1602:Yes)、CPU211#Bは、書き込み先アドレスに対応するエラーIDを“0”に設定する(ステップS1603)。次に、CPU211#Bは、UE設定を消去する(ステップS1604)。そして、CPU211#Bは、データ書き込み処理を行う(ステップS1605)。ステップS1605の処理終了後、CPU211#Bは、マイグレーション後のアクセス処理を完了する。
メモリアクセスがリードアクセスである、またはエラーIDが4でない場合(ステップS1602:No)、CPU211#Bは、ハイパーバイザ103#BにTrapを上げる(ステップS1606)。Trapが発生した場合、ハイパーバイザ103#Bは、Trap要因レジスタを読み込む(ステップS1607)。次に、ハイパーバイザ103#Bは、発生したTrapがUEによるTrapか否かを判断する(ステップS1608)。
発生したTrapがUEによるTrapである場合(ステップS1608:Yes)、ハイパーバイザ103#Bは、エラーIDが4であるか否かを判断する(ステップS1609)。エラーIDが4でない場合(ステップS1609:No)、ハイパーバイザ103#Bは、故障個所交換通知を行う(ステップS1610)。また、UEでないTrapである場合(ステップS1608:No)、ハイパーバイザ103#Bは、その他のTrap処理を実行する(ステップS1611)。
エラーIDが4である場合(ステップS1609:Yes)、または、ステップS1610かステップS1611の処理終了後、ハイパーバイザ103#Bは、アプリケーションソフトウェアやOSからのアクセスを異常終了させる。なお、図15で示したフローチャートにおいて、異常があった場合、CPU211#Bは、ハイパーバイザ103#BにTrapを上げ、ライトアクセスかつエラーID=4となる場合の処理についてもハイパーバイザ103#Bが行ってもよい。
マイグレーション後のアクセス処理を実行することにより、CPU211#Bは、エラーID=4であり、UEとなるエラーが起きても、ライトアクセスであれば、運用を続行することができる。また、ハイパーバイザ103#Bは、エラーID=4であり、UEとなるエラーが起きた際に、リードアクセスであれば、ユーザプログラムの実行中にエラーを検出した場合には、ユーザプログラムを異常終了させる。また、ハイパーバイザ103#Bは、エラーID=4であり、UEとなるエラーが起きた際に、リードアクセスであれば、カーネルの実行中に検出した場合には、カーネルパニックを発生させる。
以上説明したように、情報処理装置101#AがUEを含む誤り情報を検出した場合に、故障情報111を情報処理装置101#Bに通知し、情報処理装置101#Bは、故障情報111に対応するアドレスにエラーID=4であるUEを書き込む。これにより、情報処理装置101#Bは、UEが情報処理装置101#Aにおいて発生した誤りであり、情報処理装置101#Bのハードウェアが故障したものではないことを判断することができる。また、情報処理装置101#Bは、情報処理装置101#Bのハードウェアが故障したものではないため、UEを含む情報を有する記憶領域への書き込みは問題なく行えると判断することができる。
また、情報処理装置101#Aは、移動元ドメインmd_srcに割り当てられた記憶領域に記憶されている移動元ドメインmd_src上で動作するソフトウェアの計算途中の情報を、移動先の装置に送信してもよい。これにより、マイグレーション完了後、情報処理装置101#Bは、移動先ドメインmd_dst上で動作するソフトウェアを、計算途中の状態から動作させることができる。
また、マイグレーション完了後、情報処理装置101#Bは、ライトアクセスにより異常があった場合、Trap要因レジスタにエラーIDがソフト指示であるUEが格納されていれば、エラーIDがソフト指示であるUEを消去し、処理を継続させる。これにより、情報処理装置101#Bは、移動先ドメインmd_dstの運用を継続させることができる。また、マイグレーション完了後、情報処理装置101#Bは、リードアクセスによりTrapが発生した場合、Trap要因レジスタにエラーIDがソフト指示であるUEが格納されていれば、リードアクセスの発生元のソフトウェアを中断させる。例えば、情報処理装置101#Bは、リードアクセスの発生元のソフトウェアがユーザプログラムであれば、リードアクセスの発生元のユーザプログラムを異常終了させる。この場合、情報処理装置101#Bは、リードアクセスの発生元のソフトウェア以外のソフトウェアの動作を継続させることができる。
また、情報処理装置101#Aは、UEを含む情報に対応する仮情報を情報処理装置101#Bに送信してもよい。これにより、情報処理装置101#Aは、移動元の装置のメモリのうち移動元ドメインmd_srcに割り当てられた記憶領域のデータと仮情報とをまとめて、ひとまとまりの連続したアドレスの情報として送信できるため、効率的に送信することができる。
また、システム100は、UEが検出されたとしても、マイグレーションを成功させることができる。また、システム100は、移動先ドメインmd_dstにおいて、ソフト指示であるUEを含むデータへのライトアクセスの場合やソフト指示であるUEを含むデータを使用しない場合に、移動先ドメインmd_dstの動作を継続させることができる。
また、ライブマイグレーションに適用して、ハードウェアの故障が発生したメモリを使用しているドメインを、正常な別のコンピュータシステムに移動させることができるため、システム100は、業務を停止することなく故障部品の交換が可能となる。
(実施の形態2の説明)
次に、実施の形態2では、稼働中のドメインの運用を継続したまま、一部のハードウェア資源を切り離したり、または追加したりするダイナミック・リコンフィギュレイション(Dynamic Reconfiguration)と呼ばれる技術に、マイグレーションを適用した例について説明する。実施の形態2では、1つのボードを1つの情報処理装置とみなして、ボードの間でドメインを移動させる。ここで、実施の形態2において、実施の形態1において説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。
図17は、情報処理装置1701の構成例を示すブロック図である。情報処理装置1701は、2つのボード1711#0、1を有する。ボード1711#0、1は、ダイナミック・リコンフィギュレイションとして、情報処理装置1701を実行中であっても動的に切り離すことが可能である。また、情報処理装置1701は、3つ以上のボード1711を有してもよい。以下、動的にボードを切り離すことを、「活性ボード切り離し」と呼称する。
ボード1711は、1つ以上のCPU211と1つ以上のメモリ212とを有する。図17に示すボード1711#0、1は、それぞれ、複数のCPU211と複数のメモリ212とを有する。ボード1711#0、1は内部のインターフェースにより接続され、一方のボード1711のCPU211が、もう一方のボード1711のメモリ212にアクセス可能である。
図18は、情報処理装置1701における活性ボード切り離し動作の一例を示す説明図である。図18では、マイグレーションを含む活性ボード切り離し動作の一例を示す。ここで、ボード1711#0に含まれるCPU211上と、ボード1711#1に含まれるCPU211上とで、それぞれ、ハイパーバイザ103が動作する。そして、ボード1711#0に含まれるCPU211と、ボード1711#1に含まれるCPU211とのうちのいずれか一方のCPU上で、制御ドメイン104と、仮想化管理ソフト105が動作する。図18では、ボード1711#1に含まれるCPU211上で、制御ドメイン104と、仮想化管理ソフト105とが動作する。
そして、ボード1711#1におけるハイパーバイザ103をマスタハイパーバイザ1721とし、ボード1711#0におけるハイパーバイザ103をスレーブハイパーバイザ1722とする。実施の形態2では、スレーブハイパーバイザ1722上で実行する移動元ドメインmd_srcを、マスタハイパーバイザ1721上で実行する移動先ドメインmd_dstにマイグレーションするものとする。ここで、移動元ドメインmd_srcは、ボード1711#0のメモリ212#0を使用しており、移動先ドメインmd_dstには、ボード1711#1のメモリ212#1が確保されている。
図18の(1)で示す動作として、情報処理装置1701は、移動元ドメインmd_srcを移動先ドメインmd_dstとしてマイグレーションする。そして、マイグレーション完了後、図18の(2)で示す動作として、情報処理装置1701の管理者は、ボード1711#0を切り離す。
次に、図18に示した情報処理装置1701におけるマイグレーションシーケンスの一例を、図19を用いて説明する。
図19は、情報処理装置1701におけるマイグレーションシーケンスの一例を示す説明図である。マイグレーションを行う前の状態において、メモリ212#0は、部分情報451となるデータA、B、C、…、D、E、F、…、G、H、I、…を記憶していたとする。仮想化管理ソフト105は、マイグレーションリクエストを、移動元ドメインmd_srcを実行するスレーブハイパーバイザ1722に通知する(ステップS1901)。
マイグレーションリクエストを受けたスレーブハイパーバイザ1722は、移動元ドメインmd_srcの部分情報451となるデータA、B、C、…をメモリ212#0から読み込む(ステップS1902)。そして、スレーブハイパーバイザ1722は、部分情報451となるデータA、B、C、…をマスタハイパーバイザ1721に送信する(ステップS1903)。部分情報451となるデータA、B、C、…を受信したマスタハイパーバイザ1721は、部分情報451となるデータA、B、C、…をメモリ212#1に書き込む(ステップS1904)。
ステップS1903の後、引き続き、スレーブハイパーバイザ1722は、移動元ドメインmd_srcの部分情報451となるデータD、F、…をメモリ212#0から読み込む(ステップS1905)。ステップS1905の途中において、故障によるTrapを検出した場合、スレーブハイパーバイザ1722は、エラー処理として、Trap要因レジスタを参照して故障したメモリのアドレス・データサイズ・故障の種別を取得する(ステップS1906)。
そして、スレーブハイパーバイザ1722は、タイプUEであり、仮情報がデータXとなる故障情報111をマスタハイパーバイザ1721に送信する(ステップS1907)。また、スレーブハイパーバイザ1722は、部分情報451となるデータD、X、F、…をマスタハイパーバイザ1721に送信する(ステップS1908)。ここで、データXは、読み出せなかったデータEに対する仮情報である。
部分情報451となるデータD、X、F、…を受信したマスタハイパーバイザ1721は、部分情報451となるデータD、X、F、…をメモリ212#1に書き込む(ステップS1909)。故障情報111を受信したマスタハイパーバイザ1721は、故障情報111から特定されるデータXのアドレスを、CPU211#1のUEを設定するレジスタに書き込む。また、CPU211#1は、データXのアドレスにアクセスされた際にTrap検出を行うようにハードウェアの設定を行う(ステップS1910)。
ステップS1908の後、引き続き、スレーブハイパーバイザ1722は、移動元ドメインmd_srcの部分情報451となるデータG、H、I、…をメモリ212#0から読み込む(ステップS1911)。以降、移動元ドメインmd_srcの情報の全てをマスタハイパーバイザ1721に送信するまで、スレーブハイパーバイザ1722は、移動元ドメインmd_srcの部分情報451をメモリから読み込む。
実施の形態2におけるフローチャートについては、実施の形態1におけるフローチャートとほぼ同一であるため、説明および図示を省略する。
次に、実施の形態1、2によってマイグレーションする際における、メモリ使用状態ごとのドメインの運用継続可否について、図20を用いて説明する。
図20は、メモリ使用状態ごとのドメインの運用継続可否を示す説明図である。図20では、移動元ドメインmd_srcに割り当てられたメモリ212の使用状態ごとの運用継続可否について説明する。
メモリ212の使用状態としては、使用中、未使用、使用不可のうちのいずれかの状態に分類される。使用中の状態とは、メモリ212を割り当てられた移動元ドメインが使用中の状態である。具体的には、使用中の状態にあるメモリの領域として、図20で示すように、これから読み込まれる(A)の領域と、これから書き込まれる(B)の領域とがある。未使用の状態とは、図20で示す(C)の領域であり、メモリ212を割り当てられた移動元ドメインが使用していない状態である。使用不可の状態とは、図20で示す(D)の領域であり、過去にメモリ上にエラーが発生しており、メモリ212を割り当てられた移動元ドメインが使用不可に設定した状態である。
実施の形態1、2にかかる情報処理装置は、UEが発生した際に、メモリの状態が使用中、未使用、使用不可のいずれの状態であっても、マイグレーションを継続することができる。
そして、移動先ドメインmd_dstが、使用中の状態にある領域に書き込まれた仮情報を上書きする際には、使用中の状態にある領域に書き込まれた仮情報は読み込まれることがない。従って、マイグレーションの処理において使用中の状態にある領域の情報を複製しても、移動先ドメインmd_dstが仮情報を読み込むことをしなければ不具合が発生しない。
ここで、より詳細な例を用いて、使用中の状態にある領域について説明する。例えば、移動元ドメインmd_srcが、メモリ212#A_2内に記憶されている第1の変数の値と、メモリ212#A_2内に記憶されている第2の変数の値とを入れ替える入れ替え処理を行うとする。さらに、移動元ドメインmd_srcは、メモリ212#A_2内の第3の変数を値の退避用の変数として用いて入れ替え処理を行うとする。そして、入れ替え処理は、第1の変数の値を第3の変数に退避し、次に、第2変数の値を第1の変数に書き込み、そして、第3の変数の値を第2の変数に書き込むことで完了するものとする。ここで、移動元ドメインmd_srcが、第1の変数の値を第3の変数に退避した後、マイグレーションが行われたとする。さらに、マイグレーション時に、第1の変数の値にUEが含まれたとする。
この場合、マイグレーション時における第1の変数は、第1の変数の値を第3の変数に退避した後では書き込まれる処理が行われるため、図20で示した(B)の領域となり、実施の形態1、2にかかる情報処理装置は、マイグレーションを継続することができる。また、第2の変数の値を第1の変数に書き込むことにより、第1の変数に書き込まれた仮情報を上書きすることになる。このように、マイグレーション後に、第1の変数に書き込まれた仮情報を読み込むことをしないため、不具合が発生しない。
未使用の状態にある領域について、移動先ドメインmd_dstは、使用する際に領域を初期化する。すなわち、未使用の状態にある領域に書き込まれた仮情報は読み込まれることがない。従って、未使用の状態にある領域の情報を複製しても不具合が発生しない。
また、使用不可の状態にある領域は、移動元ドメインmd_srcで使用不可であるため、移動先ドメインmd_dstも使用不可となる。すなわち、使用不可の状態にある領域に書き込まれた仮情報が読み込まれることはない。従って、使用不可の状態にある領域の情報を複製しても不具合が発生しない。
以上説明したように、情報処理装置1701によれば、情報処理装置101と同等の効果が得られる。また、ダイナミック・リコンフィギュレイションに適用して、ハードウェアの故障が発生したメモリを使用するドメインを、正常な別のメモリを使用するように移動させることができ、業務を停止することなく故障部品の交換が可能となる。例えば、ボード1711#0上のCPUが、20個のドメインを実行しているとする。そして、マイグレーション時に、20個のドメインのうちの1個のドメインの情報に、メモリによるUEが発生したとする。この場合、ボード1711#0上のCPUは、20個のドメイン全てをマイグレーションすることができる。移動先となるボード1711#1において、UEが発生した1個のドメインは運用が停止する可能性はあるが、残り19個のドメインは運用を継続することができる。
また、情報処理装置は、移動先に送信予定のドメインが使用するメモリから誤り訂正できない誤りを含む情報が検出されると、誤り訂正できない誤りが移動元において発生した誤りであることを識別させる識別情報を移動先に通知する。これにより、ドメインの移動時に誤り訂正できない誤りが検出された際のドメインの動作の不具合の発生を抑制できる。
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本情報処理プログラムは、ハードディスク、フレキシブルディスク、CD−ROM(Compact Disc−Read Only Memory)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本情報処理プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態1、2に関し、さらに以下の付記を開示する。
(付記1)第1の装置と第2の装置とが接続されるシステムにおいて、
前記第1の装置は、
前記第2の装置への仮想マシンのマイグレーションに際して前記第1の装置のメモリのうち前記仮想マシンに割り当てられた記憶領域から誤り訂正できない誤りが検出された場合に、誤り訂正できない誤りが検出された第1のアドレスを示す故障情報を、前記第2の装置に通知し、
前記第2の装置は、
前記第1の装置から前記故障情報を受信した場合、前記故障情報が示す前記第1のアドレスのデータのコピー先となる前記第2の装置のメモリの第2のアドレスのデータに誤り訂正できない誤りが含まれることを示す識別子として、前記第2の装置で発生した誤り訂正できない誤りが含まれることを示す第1の識別子とは値が異なる第2の識別子を、前記第2のアドレスに対応付けて前記第2の装置のメモリに書き込む
ことを特徴とするシステム。
(付記2)前記仮想マシンは、マイグレーションに際して前記第1の装置上で動作しており、
前記第1の装置は、
前記第2の装置への仮想マシンのマイグレーションに際して、前記第1の装置のメモリのうち前記仮想マシンに割り当てられた記憶領域に記憶されている前記仮想マシン上で動作するソフトウェアの計算途中の情報を、前記第2の装置に送信することを特徴とする付記1に記載のシステム。
(付記3)前記第2の装置は、
前記第2の識別子に基づいて前記第2のアドレスにライトアクセスが発生したことを検出した場合、前記第2の識別子を消去し、
前記第2の識別子に基づいて前記第2のアドレスにリードアクセスが発生したことを検出した場合、前記リードアクセスの発生元のソフトウェアを中断させることを特徴とする付記1または2に記載のシステム。
(付記4)自装置と接続された他装置への仮想マシンのマイグレーションに際して自装置のメモリのうち前記仮想マシンに割り当てられた記憶領域から誤り訂正できない誤りが検出された場合に、誤り訂正できない誤りが検出された第1のアドレスを示す故障情報を、前記他装置に通知する
ことを特徴とする情報処理装置。
(付記5)自装置への仮想マシンのマイグレーションに際して自装置と接続された他装置から、誤り訂正できない誤りが検出された第1のアドレスを示す故障情報を受信した場合、前記故障情報が示す前記第1のアドレスのデータのコピー先となる自装置のメモリの第2のアドレスのデータに誤り訂正できない誤りが含まれることを示す識別子として、自装置で発生した誤り訂正できない誤りが含まれることを示す第1の識別子とは値が異なる第2の識別子を、前記第2のアドレスに対応付けて自装置のメモリに書き込む
ことを特徴とする情報処理装置。
(付記6)仮想マシンのマイグレーションに際してマイグレーション先に送信予定の前記仮想マシンの情報のうち、誤り訂正できない誤りを含む情報が検出された場合に、前記誤りがマイグレーション元において発生した誤りであることを識別させる識別情報を前記マイグレーション先に通知する
ことを特徴とする情報処理装置。
(付記7)前記情報処理装置は、前記マイグレーションに際して、前記誤りを含む前記情報に対応する仮情報を前記マイグレーション先に送信することで前記マイグレーションを実行する
ことを特徴とする付記6に記載の情報処理装置。
(付記8)前記識別情報は、前記誤りが前記マイグレーション元において発生した誤りであることを識別させ、かつ、前記仮情報が前記マイグレーション先において利用不可な情報であることを識別させる識別情報である
ことを特徴とする付記7に記載の情報処理装置。
(付記9)前記仮想マシンは、前記識別情報に従って、前記マイグレーション先において実行される
ことを特徴とする付記6〜8のいずれか1項に記載の情報処理装置。
(付記10)第1の装置と第2の装置とが接続されるシステムにおける情報処理方法において、
前記第1の装置は、
前記第2の装置への仮想マシンのマイグレーションに際して前記第1の装置のメモリのうち前記仮想マシンに割り当てられた記憶領域から誤り訂正できない誤りが検出された場合に、誤り訂正できない誤りが検出された第1のアドレスを示す故障情報を、前記第2の装置に通知し、
前記第2の装置は、
前記第1の装置から前記故障情報を受信した場合、前記故障情報が示す前記第1のアドレスのデータのコピー先となる前記第2の装置のメモリの第2のアドレスのデータに誤り訂正できない誤りが含まれることを示す識別子として、前記第2の装置で発生した誤り訂正できない誤りが含まれることを示す第1の識別子とは値が異なる第2の識別子を、前記第2のアドレスに対応付けて前記第2の装置のメモリに書き込む
ことを特徴とする情報処理方法。
(付記11)コンピュータが、
仮想マシンのマイグレーションに際してマイグレーション先に送信予定の前記仮想マシンの情報のうち、誤り訂正できない誤りを含む情報が検出されたか否かを判断し、
前記誤りを含む前記情報が検出されたと判断した場合に、前記誤りがマイグレーション元において発生した誤りであることを識別させる識別情報を前記マイグレーション先に通知する
処理を実行することを特徴とする情報処理方法。
(付記12)コンピュータに、
仮想マシンのマイグレーションに際してマイグレーション先に送信予定の前記仮想マシンの情報のうち、誤り訂正できない誤りを含む情報が検出されたか否かを判断し、
前記誤りを含む前記情報が検出されたと判断した場合に、前記誤りがマイグレーション元において発生した誤りであることを識別させる識別情報を前記マイグレーション先に通知する
処理を実行させることを特徴とする情報処理プログラム。
md_src 移動元ドメイン
md_dst 移動先ドメイン
100 システム
101#A、#B 情報処理装置
103 ハイパーバイザ
111 故障情報
211 CPU
212 メモリ
301 制御部
302 送信部
303 通知部
304 書込部
305 アクセス処理部
1701 情報処理装置

Claims (5)

  1. 第1の装置と第2の装置とが接続されるシステムにおいて、
    前記第1の装置は、
    前記第2の装置への仮想マシンのマイグレーションに際して前記第1の装置のメモリのうち前記仮想マシンに割り当てられた記憶領域から誤り訂正できない誤りが検出された場合に、誤り訂正できない誤りが検出された第1のアドレスを示す故障情報を、前記第2の装置に通知し、
    前記第2の装置は、
    前記第1の装置から前記故障情報を受信した場合、前記故障情報が示す前記第1のアドレスのデータのコピー先となる前記第2の装置のメモリの第2のアドレスのデータに誤り訂正できない誤りが含まれることを示す識別子として、前記第2の装置で発生した誤り訂正できない誤りが含まれることを示す第1の識別子とは値が異なる第2の識別子を、前記第2のアドレスに対応付けて前記第2の装置のメモリに書き込む
    ことを特徴とするシステム。
  2. 前記仮想マシンは、マイグレーションに際して前記第1の装置上で動作しており、
    前記第1の装置は、
    前記第2の装置への仮想マシンのマイグレーションに際して、前記第1の装置のメモリのうち前記仮想マシンに割り当てられた記憶領域に記憶されている前記仮想マシン上で動作するソフトウェアの計算途中の情報を、前記第2の装置に送信することを特徴とする請求項1に記載のシステム。
  3. 前記第2の装置は、
    前記第2の識別子に基づいて前記第2のアドレスにライトアクセスが発生したことを検出した場合、前記第2の識別子を消去し、
    前記第2の識別子に基づいて前記第2のアドレスにリードアクセスが発生したことを検出した場合、前記リードアクセスの発生元のソフトウェアを中断させることを特徴とする請求項1または2に記載のシステム。
  4. 自装置への仮想マシンのマイグレーションに際して自装置と接続された他装置から、誤り訂正できない誤りが検出された第1のアドレスを示す故障情報を受信した場合、前記故障情報が示す前記第1のアドレスのデータのコピー先となる自装置のメモリの第2のアドレスのデータに誤り訂正できない誤りが含まれることを示す識別子として、自装置で発生した誤り訂正できない誤りが含まれることを示す第1の識別子とは値が異なる第2の識別子を、前記第2のアドレスに対応付けて自装置のメモリに書き込む
    ことを特徴とする情報処理装置。
  5. 第1の装置と第2の装置とが接続されるシステムにおける情報処理方法において、
    前記第1の装置は、
    前記第2の装置への仮想マシンのマイグレーションに際して前記第1の装置のメモリのうち前記仮想マシンに割り当てられた記憶領域から誤り訂正できない誤りが検出された場合に、誤り訂正できない誤りが検出された第1のアドレスを示す故障情報を、前記第2の装置に通知し、
    前記第2の装置は、
    前記第1の装置から前記故障情報を受信した場合、前記故障情報が示す前記第1のアドレスのデータのコピー先となる前記第2の装置のメモリの第2のアドレスのデータに誤り訂正できない誤りが含まれることを示す識別子として、前記第2の装置で発生した誤り訂正できない誤りが含まれることを示す第1の識別子とは値が異なる第2の識別子を、前記第2のアドレスに対応付けて前記第2の装置のメモリに書き込む
    ことを特徴とする情報処理方法。
JP2015150165A 2015-07-29 2015-07-29 システム、情報処理装置、および情報処理方法 Active JP6540334B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015150165A JP6540334B2 (ja) 2015-07-29 2015-07-29 システム、情報処理装置、および情報処理方法
US15/216,753 US10176035B2 (en) 2015-07-29 2016-07-22 System, information processing device, and non-transitory medium for storing program for migration of virtual machine

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015150165A JP6540334B2 (ja) 2015-07-29 2015-07-29 システム、情報処理装置、および情報処理方法

Publications (2)

Publication Number Publication Date
JP2017033113A JP2017033113A (ja) 2017-02-09
JP6540334B2 true JP6540334B2 (ja) 2019-07-10

Family

ID=57886006

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015150165A Active JP6540334B2 (ja) 2015-07-29 2015-07-29 システム、情報処理装置、および情報処理方法

Country Status (2)

Country Link
US (1) US10176035B2 (ja)
JP (1) JP6540334B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10545777B2 (en) * 2016-11-08 2020-01-28 International Business Machines Corporation Generating a virtual machines relocation protocol
US10509696B1 (en) * 2017-08-16 2019-12-17 Amazon Technologies, Inc. Error detection and mitigation during data migrations
US11169870B2 (en) * 2020-01-15 2021-11-09 Vmware, Inc. Managing the migration of virtual machines in the presence of uncorrectable memory errors
US11544153B2 (en) * 2020-03-12 2023-01-03 International Business Machines Corporation Memory error handling during and/or immediately after a virtual machine migration
US11586513B2 (en) 2020-11-17 2023-02-21 Google Llc Live migrating virtual machines to a target host upon fatal memory errors

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010039987A (ja) 2008-08-08 2010-02-18 Hitachi Ltd 計算機システム、ハードウェア障害の処理方法及びプログラム
US8407516B2 (en) 2009-12-23 2013-03-26 Intel Corporation Controlling memory redundancy in a system
US9047251B2 (en) * 2010-12-20 2015-06-02 Citrix Systems, Inc. Systems and methods for implementing connection mirroring in a multi-core system
JP5831858B2 (ja) * 2012-08-24 2015-12-09 株式会社日立製作所 計算機及びメモリ検査方法
JP6036506B2 (ja) * 2013-04-15 2016-11-30 富士通株式会社 障害影響範囲を特定するためのプログラム及び情報処理装置
US9442811B2 (en) * 2014-04-29 2016-09-13 Vmware, Inc. Emulating a stretched storage device using a shared replicated storage device
US9146769B1 (en) * 2015-04-02 2015-09-29 Shiva Shankar Systems and methods for copying a source machine to a target virtual machine

Also Published As

Publication number Publication date
JP2017033113A (ja) 2017-02-09
US10176035B2 (en) 2019-01-08
US20170031745A1 (en) 2017-02-02

Similar Documents

Publication Publication Date Title
US11163472B2 (en) Method and system for managing storage system
DK3179359T3 (en) PROCEDURE FOR SENDING DATA, PROCEDURE FOR RECEIVING DATA AND STORAGE UNIT
US9588856B2 (en) Restoring redundancy in a storage group when a storage device in the storage group fails
JP6540334B2 (ja) システム、情報処理装置、および情報処理方法
US8468133B2 (en) Workload learning in data replication environments
US11099953B2 (en) Automatic data healing using a storage controller
US7975171B2 (en) Automated file recovery based on subsystem error detection results
US20130339784A1 (en) Error recovery in redundant storage systems
JP2014530393A (ja) 不揮発性媒体のダーティー領域追跡
WO2011057885A1 (en) Method and apparatus for failover of redundant disk controllers
US9690651B2 (en) Controlling a redundant array of independent disks (RAID) that includes a read only flash data storage device
JP2007334593A (ja) Raidコントローラおよびraid装置
US10503620B1 (en) Parity log with delta bitmap
WO2020103512A1 (zh) 一种存储系统中的数据重构方法和装置
JP4491330B2 (ja) ディスクアレイ装置とそのデータのリカバリ方法およびデータリカバリプログラム
US11226746B2 (en) Automatic data healing by I/O
US9430485B2 (en) Information processor and backup method
US20190317861A1 (en) High availability state machine and recovery
US20090177916A1 (en) Storage system, controller of storage system, control method of storage system
JP2022017212A (ja) エフェメラルストレージに対するデータ復元のためのシステム及び装置
US10013171B2 (en) Reducing stress on RAIDS under rebuild
US9952805B2 (en) Storage system and data write method using a logical volume to either store data successfully onto a first memory or send a failure response to a server computer if the storage attempt fails
CN109343986B (zh) 处理内存故障的方法与计算机系统
JP2012194867A (ja) ストレージ装置および制御装置
JP2016162261A (ja) 情報処理装置、情報処理システム、および制御プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180413

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190226

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190426

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190527

R150 Certificate of patent or registration of utility model

Ref document number: 6540334

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150