JP6165964B2 - 計算機 - Google Patents
計算機 Download PDFInfo
- Publication number
- JP6165964B2 JP6165964B2 JP2016506043A JP2016506043A JP6165964B2 JP 6165964 B2 JP6165964 B2 JP 6165964B2 JP 2016506043 A JP2016506043 A JP 2016506043A JP 2016506043 A JP2016506043 A JP 2016506043A JP 6165964 B2 JP6165964 B2 JP 6165964B2
- Authority
- JP
- Japan
- Prior art keywords
- operating system
- cache memory
- virtual
- data
- memory area
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 claims description 119
- 238000013507 mapping Methods 0.000 claims description 55
- 238000001514 detection method Methods 0.000 claims description 5
- 238000013523 data management Methods 0.000 claims 12
- 230000008569 process Effects 0.000 description 76
- 238000012545 processing Methods 0.000 description 62
- 230000004044 response Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 238000012546 transfer Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 238000001994 activation Methods 0.000 description 7
- 230000001174 ascending effect Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000001152 differential interference contrast microscopy Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1451—Management of the data involved in backup or backup restore by selection of backup contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/805—Real-time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/815—Virtual
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/82—Solving problems relating to consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Power Sources (AREA)
- Retry When Errors Occur (AREA)
Description
本発明は、マルチOS技術および仮想マシン技術が適用された計算機におけるキャッシュデータのバックアップ技術およびリストア技術に関する。
クライアント装置が、Ethernet等で構成されたLANで接続されたファイルサーバ、データベースサーバ、等のサーバ装置とデータのリード/ライトを行い、かつ、サーバ装置がバックエンドとして、Fibre Channel等で構成されたSANで接続されたストレージ装置とデータのリード/ライトを行うシステムにおいて、ストレージ装置と各サーバ装置には、一般に、システムパフォーマンスの向上等の観点から、キャッシュメモリが搭載されている。キャッシュメモリは、典型的には、DRAM等の揮発性メモリから構成される、システムメモリ上に配置する。例えば、大容量のHDDを搭載した大規模なストレージ装置は、数〜数十ギガバイトオーダの大容量のキャッシュメモリを実装し、その稼動中、そこにアプリケーションデータをキャッシュしながら、フロントエンド装置に対するI/Oアクセス要求に応答する。
このような装置は、キャッシュメモリ上の膨大な量のデータが消失することを防止するため、不意の電源遮断時には二次電源であるバッテリから電源を一時的に供給し、HDDよりも高速にアクセス可能なSSD等のNVRAM(不揮発性メモリ)にバックアップする。さらに、マルチプロセッサで構成されている装置の場合、バッテリ動作中の消費電力を抑えるため、1つのプロセッサだけに給電し、そのプロセッサだけがキャッシュメモリのバックアップ動作をする、といった工夫がされている。
また、近年、物理計算機上のハードウェアリソースを有効に活用するために、一台の物理計算機上で二つ以上のOS(オペレーティングシステム)を起動する技術が注目されている(例えば、特許文献1および特許文献2参照)。
特許文献1には、「マルチオペレーティングシステム計算機は、優先度が設定された複数のタスクを優先度順に実行する第1のOS(オペレーティングシステム)と、前記第1のOSと異なる第2のOSとを動作OSとして交互に動作させるマルチオペレーティングシステム計算機であって、前記第1のOSが動作OSとして動作しているときに前記複数のタスクのうち所定の優先度が設定された所定のタスクであって動作OSの切替え契機を特定するための切替え契機タスクとして用いられるタスクが実行された場合に、動作OSを前記第1のOSから前記第2のOSに切り替えるOS切替え部」を備えることが記載されている。
また、特許文献2には、「第1のOSと第2のOSとの少なくとも2つのOSを起動するマルチOS起動装置において、(1)メモリ領域を有し、前記メモリ領域に対してメモリ空間が定義される1次記憶部と、(2)セカンドブートローダと、前記第2のOSとを記憶する2次記憶部と、(3)CPUに対する制御情報を示すコンテキストであって前記第1のOS用のコンテキストである第1のコンテキストで動作する前記第1のOSのもとで動作するファーストブートローダを前記第1のコンテキストで動作中の前記第1のOSのもとで動作させることにより、前記第1のOSが管理する第1のメモリ空間として前記第1のコンテキストにより前記1次記憶装置に対して定義された前記1次記憶部のメモリ領域に前記2次記憶部から前記セカンドブートローダと前記第2のOSとを前記ファーストブートローダにロードさせるOS実行部と、(4)前記第1のメモリ空間として定義されたメモリ領域にロードされた前記セカンドブートローダを前記第1のコンテキストで動作中の前記第1のOSのもとで実行することにより前記第2のOSが管理する第2のメモリ空間として定義されるメモリ領域と前記セカンドブートローダ及び前記第2のOSがロードされたメモリ領域とを含む第3のメモリ空間を前記1次記憶部に対して定義する前記セカンドブートローダ用のコンテキストを前記セカンドブートローダに生成させると共に生成された前記セカンドブートローダ用のコンテキストへ前記第1のコンテキストから切り替えさせ、前記セカンドブートローダ用のコンテキストのもとで前記セカンドブートローダを実行することにより前記第3のメモリ空間に含まれる前記第2のメモリ空間として定義された前記1次記憶部のメモリ領域に前記ファーストブートローダによって前記1次記憶部のメモリ領域にロードされた前記第2のOSを前記セカンドブートローダにロードさせると共に前記第2のOS用のコンテキストを生成させ、生成された前記第2のOS用のコンテキストへ前記セカンドブートローダ用のコンテキストから切り替えさせ、前記第2のOS用のコンテキストのもとで前記セカンドブートローダに前記第2のOSの起動を実行させるローダ実行部と」を備えることが記載されている。
このマルチOS技術を利用し、第1のOS(第1のホストOS)としてストレージ制御OSを搭載し、第2のOS(第2のホストOS)として仮想マシンモニタ(VMM)を搭載し、さらに仮想マシンモニタ上の複数の仮想マシン(VM1〜VMn)上のOS(ゲストOS1〜ゲストOSn)としてサーバ制御OSを搭載することで、省スペース化・低価格化が期待できる。また、従来SANを介して行っていたI/Oデータのリード/ライトを、第1のホストOS−ゲストOS間共有メモリを介して行うようにすることで、I/Oデータのリード/ライト性能の向上も期待できる。
マルチOS技術および仮想マシン技術を用いて、一つのハードウェア(計算機)上に複数のホストOSを搭載し、かつ、少なくとも一つのホストOS上に複数のゲストOSが稼動する計算機システムにおいて、不意の電源遮断が発生した場合に、消費電力を抑え、かつ、ホストOSおよびゲストOSに関連するデータをNVRAM等にバックアップできる方法が必要である。
例えば、一つの計算機上に、第1のホストOS(ストレージ制御OS)、および、複数のゲストOS(サーバ制御OS)が稼動する第2のホストOS(VMM)を搭載した計算機システムにおいて、以下のような要求に応える必要がある。すなわち、計算機システムにおいて、不意の電源遮断が発生した場合、第1のホストOSが使用する一つのプロセッサだけを用いて、第1のホストOS自身に割り当てられたキャッシュメモリに格納されるデータに加え、各ゲストOSに割り当てられたキャッシュメモリに格納されるデータも含めてNVRAMにバックアップしたいとの要求が考えられる。
(1)しかし、各ゲストOSは第2のホストOSによって管理されているため、第1のホストOSは、各ゲストOSに割り当てられるキャッシュメモリが物理アドレス空間のどこに配置されているかを把握できない。そのため、従来技術では、第1のホストOSが、各ゲストOSに割り当てられたキャッシュメモリのデータをNVRAM等にバックアップすることができない。
(2)また、電源の遮断状態から復旧して、計算機システムの再起動後に、第1のホストOSは、各ゲストOSに割り当てられたキャッシュメモリに、NVRAMにバックアップされたデータをリストアする必要がある。しかし、計算機システムの再起動後、物理アドレス空間における、各ゲストOSに割り当てられるキャッシュメモリの配置は、再起動前の配置とは異なっている可能性がある。そのため、第1のホストOSは、各ゲストOSに割り当てられたキャッシュメモリの配置を把握できないため、各ゲストOSのバックアップデータを適切にリストアすることができない。
本発明は、複数のホストOSを搭載し、少なくとも一つのホストOS上に複数のゲストOSが稼動する計算機システムにおいて、一つのホストOSが、当該ホストOSのキャッシュメモリに格納されるデータ、および他のホストOS上で稼動する各ゲストOSに割り当てられたキャッシュメモリに格納されるデータをバックアップするための方法を提供することを目的とする。
また、本発明は、各ゲストOSに割り当てられたキャッシュメモリの物理アドレス空間における配置が再起動の前後で変化する場合であっても、各ゲストOSのバックアップデータを適切にリストアするための方法を提供することを目的とする。
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、複数のオペレーティングシステムが稼働する計算機であって、前記計算機は、物理リソースとして、プロセッサ、前記プロセッサに接続される揮発性メモリ、前記プロセッサに接続される不揮発性メモリ、および前記プロセッサに接続されるI/Oデバイスを備え、前記複数のオペレーティングシステムは、第1のオペレーティングシステムと、複数の仮想計算機を生成する第2のオペレーティングシステムと、を含み、前記第1のオペレーティングシステムは、前記プロセッサが論理的に分割された第1の論理プロセッサ、前記揮発性メモリが論理的に分割された第1の論理揮発性メモリ、および前記I/Oデバイスが論理的に分割された第1論理I/Oデバイスを含む第1の論理リソース上で稼働し、前記計算機の電源の遮断を検出する電源遮断検出部を有し、前記第2のオペレーティングシステムは、前記プロセッサが論理的に分割された第2のプロセッサ、前記揮発性メモリが論理的に分割された第2の論理揮発性メモリ、前記I/Oデバイスが論理的に分割された第2のI/Oデバイスを含む第2の論理リソース上で稼働し、前記複数の仮想計算機の各々では、第3のオペレーティングシステムが稼動し、前記第1のオペレーティングシステムは、当該第1のオペレーティングシステムの起動時に、前記第1の論理揮発性メモリに、一時的にデータを格納する第1のキャッシュメモリ領域を確保し、前記第1のオペレーティングシステムが管理する前記第1の論理揮発性メモリの物理アドレス空間における前記第1のキャッシュメモリ領域の位置を示す第1の配置情報を生成し、前記第2のオペレーティングシステムは、少なくとも一つの仮想計算機を生成して、前記少なくとも一つの仮想計算機上で前記第3のオペレーティングシステムを起動し、前記第3のオペレーティングシステムは、前記少なくとも一つの仮想計算機に割り当てられた仮想メモリに、第2のキャッシュメモリ領域を確保し、前記第2のオペレーティングシステムは、当該第2のオペレーティングシステムが管理する前記第2の論理揮発性メモリの物理アドレス空間における前記第2のキャッシュメモリ領域の位置を示す第2の配置情報を生成し、前記第1のオペレーティングシステムは、前記計算機の電源の遮断が検出された場合に、前記第1の配置情報に基づいて、前記第1のキャッシュメモリ領域に格納される第1のデータを取得し、前記第1のデータを前記不揮発性メモリに格納し、前記第2の配置情報を取得し、前記第2の配置情報に基づいて、前記第2のキャッシュメモリ領域に格納される第2のデータを前記第2の論理揮発性メモリから取得し、前記第2のデータを前記不揮発性メモリに格納することを特徴とする。
本発明によれば、第1のオペレーティングシステムは、電源の遮断が検出された場合に、アドレス変換処理等を実行することなく、第1のオペレーティングシステムのキャッシュデータおよび第3のオペレーティングシステムのキャッシュデータを素早くバックアップすることができる。
前述した以外の課題、構成および効果は、以下の実施形態の説明によって明らかにされる。
以下、図面を用いて実施例について説明する。まず、図1を用いて本発明の概要について説明する。
図1は、本発明の概要を説明するブロック図である。ここでは、物理計算機10および外部ストレージ装置20から構成される計算機システムを例に本発明の概要について説明する。
物理計算機10は、第1のホストOS251および第2のホストOS252の二つのホストOSを搭載する。後述するように、第1のホストOS251および第2のホストOS252のそれぞれには、物理計算機10が備えるハードウェアリソースが論理的に分割されたリソース(分割ハードウェアリソース)が割り当てられる。図1では、第1のホストOS251には、第1の分割VRAM221、NVRAM130、および電源部150が分割ハードウェアリソースとして割り当てられる。
図1に示す例では、第1のホストOS251は、外部ストレージ装置20に対するデータリード処理およびデータライト処理を制御するストレージ制御OSであり、第2のホストOS252は、複数の仮想計算機を制御するVMM(Virtual Machine Monitor)であるものとする。VMMは、複数のVM(Virtual Machine)を生成し、生成されたVM上にゲストOS400を稼動させる。
前述したようなシステム構成では、データリードおよびデータライトの性能を向上させるために、第1のホストOS251に割り当てられた第1の分割VRAM221の一部の記憶領域をHOS_VCM(ホストOS用の揮発性キャッシュメモリ)230として確保する。また、ゲストOS400として、例えば、ファイルサーバ、データベースサーバ等のサーバ制御OSを稼動させる場合、データリードおよびデータライトの性能を向上させるために、ゲストOS400に割り当てられた仮想VRAM410の一部の記憶領域をGOS_VCM(ゲストOS用の揮発性キャッシュメモリ)420として確保する。
本発明では、電源部150によって電源の遮断が検出された場合、第1のホストOS251が、HOS_VCM230に格納されるデータをHOS_NVCM(ホストOS用の不揮発性キャッシュメモリ)710としてNVRAM130にバックアップする。また、第1のホストOS251は、物理アドレス空間におけるGOS_VCM420のアドレスを特定し、GOS_VCM420に格納されるデータをGOS_NVCM720(ゲストOS用の不揮発性キャッシュメモリ)にバックアップする。
また、本発明では、物理計算機10における電源の障害が復旧し、物理計算機10が再起動する場合に、第1のホストOS251は、新たに確保されたHOS_VCM230に、HOS_NVCM710に格納されるデータをリストアする。また、第1のホストOS251は、第2のホストOS252およびゲストOS400と連携して、新たに割り当てられた仮想VRAM410上のGOS_VCM420に、GOS_NVCM720に格納されるデータをリストアする。
図2は、本発明の実施例1の計算機システムの物理ハードウェア構成の一例を示す説明図である。
本実施例の計算機システムは、物理計算機10、および外部ストレージ装置20から構成される。物理計算機10は、外部ストレージ装置20と直接、または、ネットワークを介して接続される。ネットワークとしては、FC(Fibre Channel)で構成されたSAN等が考えられる。なお、物理計算機10は、装置内部にストレージ装置を備えていてもよい。
物理計算機10は、プロセッサ110、VRAM(Volatile Random Access Memory)120、NVRAM(Non−Volatile Random Access Memory)130、I/Oデバイス140、および電源部150を備える。
プロセッサ110は、VRAM120に格納されるプログラムを実行する。プロセッサ110は、複数のCPUコア111を有する。プロセッサ110がプログラムを実行することによって、OS等の機能が実現される。以下、プロセッサ110を主体に処理を説明する場合、当該プログラムがプロセッサ110によって実行されていることを示す。
VRAM120は、揮発性の記憶素子から構成される記憶媒体である。VRAM120は、プロセッサ110によって実行されるプログラムおよび当該プログラムの実行に必要な情報を格納する。また、VRAM120は、各プログラムのワークエリアを含む。
NVRAM130は、不揮発性の記憶素子から構成される記憶媒体である。NVRAM130は、物理計算機10内で動作する各種ファームウェアのプログラムコード等を格納する。また、NVRAM130は、不意に電源の遮断が発生した場合に、一時的にデータを格納するための記憶領域も含む。なお、NVRAM130の記憶容量は、外部ストレージ装置より小さいが、物理計算機10から高速にアクセスが可能である。NVRAM130は、例えば、SSD(Solid State Drive)等の記憶媒体が考えられる。本実施例では、不揮発性の記憶媒体としてNVRAM130を用いているが、その他の不揮発性の記憶媒体を用いてもよい。
I/Oデバイス140は、外部装置と接続することによって、外部から情報を入力し、外部に情報を出力するためのデバイスである。I/Oデバイス140は、例えば、NIC、FC HBA等が考えられる。図2には、I/Oデバイス140として、四つのNIC141、および四つのFC HBA142を示している。なお、一つのNIC141または一つのFC HBA142が一つのI/Oデバイス140に対応する。
電源部150は、物理計算機10の電源を制御する。電源部150は、電源遮断検出部151およびバッテリ電源152を有する。電源遮断検出部151は、不意の電源の遮断を監視し、電源の遮断が検出された場合に、バッテリ電源152から給電するように制御する。
外部ストレージ装置20は、OSのプログラム、OS上で動作する各種アプリケーションのプログラムコード、およびアプリケーションが扱うデータ等を格納する。また、外部ストレージ装置20は、OSがページインおよびページアウトをサポートするものである場合、VRAM120に格納されるデータを一時的な退避するための記憶領域を提供する。外部ストレージ装置20は、複数の記憶媒体を備える。記憶媒体は、例えば、HDD(Hard Disk Drive)等の記憶媒体が考えられる。図2では、外部ストレージ装置20は、記憶媒体として四つのHDD190を備える。
なお、物理計算機10は、複数のストレージ装置、およびコントローラを備えるストレージシステムと接続されてもよい。
図3は、本発明の実施例1の計算機システムの論理構成の一例を示す説明図である。
本実施例の計算機システムでは、マルチOS技術を用いて、物理計算機10のハードウェアが、第1の分割H/W(ハードウェア)201、第2の分割H/W(ハードウェア)202、および共有H/W(ハードウェア)203の三つに論理に分割される。
第1の分割H/W201上では第1のホストOS251が起動され、第2の分割H/W202上で第2のホストOS252が起動される。第1の分割H/W201は第1のホストOS251によって占有的に使用され、第2の分割H/W202は第2のホストOS252によって占有的に使用される。
第1の分割H/W201は、第1の分割プロセッサ211、第1の分割VRAM221、NVRAM130、第1の分割I/Oデバイス241、および電源部150を含む。
第1の分割プロセッサ211は、プロセッサ110が有する四つのCPUコア111のうち、二つのCPUコア111が割り当てられた論理的なプロセッサである。第1の分割VRAM221は、VRAM120の一部の記憶領域が割り当てられた論理的なVRAMである。図2に示すように、第1の分割VRAM221の一部の記憶領域は、HOS_VCM230として確保される。
第1の分割プロセッサ211に割り当てられたCPUコア111および第1の分割VRAM221に割り当てられた記憶領域は、第2の分割H/W202上で稼動する第2のホストOS252から使用されないように制御される。例えば、第1の分割VRAM221に割り当てられた記憶領域は、第2のホストOS252のHVA(ホスト仮想アドレス)空間にはマップされない。
また、物理計算機10が備える一部のI/Oデバイス140が第1の分割I/Oデバイス241として割り当てられる。また、NVRAM130および電源部150は、第1の分割H/W201が占有するように割り当てられる。
第2の分割H/W202は、第2の分割プロセッサ212、第2の分割VRAM222、および第2の分割I/Oデバイス242を含む。
第2の分割プロセッサ212は、プロセッサ110が有する四つのCPUコア111のうち、二つのCPUコア111が割り当てられた論理的なプロセッサである。第2の分割VRAM222は、VRAM120の一部の記憶領域が割り当てられた論理的なVRAMである。また、物理計算機10が備える一部のI/Oデバイス140が第2の分割I/Oデバイス242として割り当てられる。
共有H/W203は、第1のホストOS251および第2のホストOS252のいずれもが使用可能なハードウェアである。本実施例では、共有H/W203は、VRAM120の一部の記憶領域が割り当てられた共有VRAM223を含む。共有VRAM223に割り当てられた記憶領域は、第1のホストOS251のHVA空間および第2のホストOS252のHVA空間のそれぞれにマップされる。すなわち、第1のホストOS251および第2のホストOS252のそれぞれが、共有VRAM223にアクセスすることができる。
本実施例の第1のホストOS251は、ストレージ制御OSに対応する。ストレージ制御OSは、外部ストレージ装置20に対するデータリード処理およびデータライト処理を制御する。
第1のホストOS251は、一般的なOSが有するメモリのアドレス空間を管理する機能を有しており、第1の分割VRAM221のHPA(ホスト物理アドレス)空間とHVA空間との間のマッピングを管理する。ここで、第1の分割VRAM221のHPA空間は、第1のホストOS251が管理する第1の分割VRAMの物理的な位置を示すアドレス空間であり、第1の分割VRAM221のHVA空間は、第1のホストOS251によってアプリケーション等に割り当てられる仮想的なメモリの位置を示すアドレス空間である。
また、本実施例では、第1のホストOS251は、VCMとNVCMとの間のバックアップ処理およびリストア処理を実行する。以下の説明では、VCMとNVCMとの間のバックアップ処理およびリストア処理を、単に、バックアップ処理およびリストア処理とも記載する。
本実施例の第2のホストOS252は、VMMに対応する。VMMは、仮想マシン技術を用いて、第2の分割H/W202の一部を割り当てることによって複数のVM300を生成し、生成された各VM300上でゲストOS400を稼動させる。
VMMは、VM300に割り当てられた仮想VRAM410のGPA(ゲスト物理アドレス)空間と、第2の分割VRAM222のHPA空間との間のマッピングを管理する。ここで、仮想VRAM410のGPA空間は、ゲストOS400によって管理される仮想VRAM410の物理的な位置を示すアドレス空間であり、第2の分割VRAM222のHPA空間は、第2のホストOS252によって管理される第2の分割VRAM222の物理的な位置を示すアドレス空間である。
ゲストOS400が稼動するVM300には、仮想VRAM410が割り当てられる。また、ゲストOS400には、図示しない仮想プロセッサおよび仮想I/Oデバイス等が割り当てられる。
ゲストOS400は、仮想VRAM410を物理的なVRAMとして認識する。ゲストOS400は、一般的なOSが有するメモリのアドレス空間を管理する機能を有しており、仮想VRAM410のGPA空間とGVA(ゲスト仮想アドレス)空間との間のマッピングを管理する。ここで、仮想VRAM410のGVA空間は、ゲストOS400によってアプリケーション等に割り当てられる仮想的なメモリの位置を示すアドレス空間である。
図4Aは、本発明の実施例1のVRAM120に格納される情報を示す説明図である。図4Bは、本発明の実施例1のNVRAM130に格納される情報を示す説明図である。ここでは、バックアップ処理およびリストア処理に必要な情報を中心に説明する。
VRAM120の物理アドレス空間は、第1の分割VRAM221に割り当てられる記憶領域、第2の分割VRAM222に割り当てられる記憶領域、および共有VRAM223に割り当てられる記憶領域の三つの記憶領域に論理的に分割される。なお、図4Aでは、VRAM120の物理アドレス空間が、アドレスが連続するように三つの記憶領域に分割されているが、分割方法はこれに限定されない。
第1の分割VRAM221は、第1のホストOS251によって管理される。第1のホストOS251は、第1の分割VRAM221の一部の記憶領域を、HOS_VCM230として確保する。第1の分割VRAM221には、バックアップ処理およびリストア処理に必要な情報として、HVA−HPAマッピング情報240およびHOS_VCM HPA空間配置情報250が格納される。
HVA−HPAマッピング情報240は、第1のホストOS251が管理するHPA空間とHVA空間との間のマッピングを管理する情報である。HVA−HPAマッピング情報240は、第1のホストOS251によって生成される。HVA−HPAマッピング情報240は、一般的には、ページテーブルと呼ばれるものに対応する。ここで、HPAは、第1の分割VRAM221の物理的なアドレスである。HVAは、第1のホストOS251および第1のホストOS251上で動作するアプリケーションが使用する仮想的なアドレスである。
HOS_VCM HPA空間配置情報250は、第1のホストOS251が管理するHPA空間におけるHOS_VCM230の配置を示す情報である。HOS_VCM HPA空間配置情報250は、第1のホストOS251によって生成される。HOS_VCM230には、通常、物理アドレスが不連続な複数の記憶領域が割り当てられる。そのため、HOS_VCM HPA空間配置情報250は、HOS_VCM230に割り当てられた一つの記憶領域の物理的な先頭アドレス、およびサイズが対応付けられたエントリを複数含む。
第2のホストOS252は、第2のホストOS252自身を第2の分割VRAM222の一部の記憶領域に配置する。また、第2のホストOS252は、第2の分割VRAM222の一部を仮想VRAM410としてVM300に割り当てる。
第2のホストOS252が配置される記憶領域には、バックアップ処理およびリストア処理に必要な情報として、GPA−HPAマッピング情報500が格納される。
GPA−HPAマッピング情報500は、ゲストOS400が管理するGPA空間と第2のホストOS252が管理するHPA空間との間のマッピングを管理する情報である。GPA−HPAマッピング情報500は、第2のホストOS252によって生成される。第2のホストOS252(VMM)がIntel VT−xテクノロジを利用する場合、GPA−HPAマッピング情報500は、EPT(拡張ページテーブル)と呼ばれるものに対応する。ここで、GPAは、VM300が物理的なVRAMとして認識する仮想VRAM410の物理的なアドレスである。GPA−HPAマッピング情報500については、図5を用いて後述する。
仮想VRAM410の一部の記憶領域は、GOS_VCM420として確保される。また、仮想VRAM410は、バックアップ処理およびリストア処理に必要な情報として、GVA−GPAマッピング情報430およびGOS_VCM GPA空間配置情報440を格納する。
GVA−GPAマッピング情報430は、ゲストOS400が管理するGVA空間とGPA空間との間のマッピングを管理する情報である。GVA−GPAマッピング情報430は、ゲストOS400によって生成される。GVA−GPAマッピング情報430は、HVA−HPAマッピング情報240と同様、一般的に、ページテーブルと呼ばれるものである。ここで、GVAは、ゲストOS400およびゲストOS400上で動作するアプリケーションが使用する仮想的なアドレスである。GVA−GPAマッピング情報430については、図6を用いて後述する。
GOS_VCM GPA空間配置情報440は、ゲストOS400が管理するGPA空間におけるGOS_VCM420の配置を示す情報である。GOS_VCM GPA空間配置情報440は、ゲストOS400によって生成される。GOS_VCM GPA空間配置情報440については、図7を用いて後述する。
共有VRAM223は、バックアップ処理およびリストア処理に必要な情報として、GOS_VCM HPA空間配置情報600を格納する。GOS_VCM HPA空間配置情報600は、第2のホストOS252が管理するHPA空間におけるGOS_VCM420の配置を示す情報である。GOS_VCM HPA空間配置情報600は、第2のホストOS252によって生成される。GOS_VCM HPA空間配置情報600については、図8を用いて後述する。
NVRAM130の一部の記憶領域は、HOS_NVCM710およびGOS_NVCM720として確保される。また、NVRAM130は、バックアップ処理およびリストア処理に必要な情報としてNVCM NVA管理情報700を格納する。
NVCM NVA管理情報700は、HOS_NVCM710およびGOS_NVCM720として確保された記憶領域のNVRAM130のアドレス(NVA)を管理する情報である。NVCM NVA管理情報700については、図9を用いて後述する。
図5は、本発明の実施例1のGPA−HPAマッピング情報500の一例を示す説明図である。
GPA−HPAマッピング情報500には、ゲストOS400によって管理されるGPA空間における一つの記憶領域(例えばページ)に対して一つのエントリが登録される。GPA−HPAマッピング情報500に登録されるエントリは、GPA501、HPA502、およびサイズ503を含む。
GPA501は、GPA空間における一つの記憶領域の先頭アドレスである。HPA502は、GPA501に対応する記憶領域に割り当てられる、HPA空間における一つの記憶領域の先頭アドレスである。サイズ503は、GPA501に対応する一つの記憶領域の大きさである。
図6は、本発明の実施例1のGVA−GPAマッピング情報430の一例を示す説明図である。
GVA−GPAマッピング情報430には、ゲストOS400によって管理されるGVA空間における一つの記憶領域(例えばページ)に対して一つのエントリが登録される。GVA−GPAマッピング情報430に登録されるエントリは、GVA431、GPA432、およびサイズ433を含む。
GVA431は、GVA空間における一つの記憶領域の先頭アドレスである。GPA432は、GVA431に対応する記憶領域に割り当てられる、GPA空間における一つの記憶領域の先頭アドレスである。サイズ433は、GVA431に対応する一つの記憶領域の大きさである。
図7は、本発明の実施例1のGOS_VCM GPA空間配置情報440の一例を示す説明図である。
GOS_VCM GPA空間配置情報440には、GOS_VCM420を構成する一つの記憶領域群(例えばブロック)に対して一つのエントリが登録される。ここで、記憶領域群は、アドレスが連続する複数の記憶領域(ページ)を示す。GOS_VCM GPA空間配置情報440に登録されるエントリは、ID441、GPA442、およびサイズ443を含む。
ID441は、GOS_VCM GPA空間配置情報440に登録されるエントリを一意に識別するための識別子である。GPA442は、ゲストOS400によって管理されるGPA空間におけるGOS_VCM420を構成する一つの記憶領域群の先頭アドレスである。サイズ443は、GPA442に対応する一つの記憶領域群の大きさである。
図8は、本発明の実施例1のGOS_VCM HPA空間配置情報600の一例を示す説明図である。
GOS_VCM HPA空間配置情報600には、GOS_VCM420を構成する一つの記憶領域群(例えばブロック)に対して一つのエントリが登録される。GOS_VCM HPA空間配置情報600は、ID601、HPA602、およびサイズ603を含む。
ID601は、GOS_VCM HPA空間配置情報600に登録されるエントリを一意に識別するための識別子である。HPA602は、VMMによって管理されるHPA空間におけるGOS_VCM420を構成する一つの記憶領域群の先頭アドレスである。サイズ603は、HPA602に対応する一つの記憶領域群の大きさである。
図9は、本発明の実施例1のNVCM NVA管理情報700の一例を示す説明図である。
NVCM NVA管理情報700には、HOS_NVCM710、また、GOS_NVCM720毎に一つのエントリが登録される。NVCM NVA管理情報700に登録されるエントリは、OS_ID701、NVA702、およびサイズ703を含む。
OS_ID701は、NVCM NVA管理情報700に登録されるエントリを一意に識別するための識別子である。NVA702は、HOS_NVCM710またはGOS_NVCM720に対応する記憶領域の先頭アドレスである。サイズ703は、NVA702に対応する記憶領域の大きさである。
図10は、本発明の実施例1の計算機システムの起動処理の概要を説明するフローチャートである。
物理計算機10に電源が投入されると、まず、第1のホストOS251の起動処理が開始される(ステップS100)。具体的には、以下のような処理が実行される。
電源投入後、一つのCPUコア111が、外部ストレージ装置20等からブートローダを読み出し、第1の分割VRAM221にブートローダをロードする。さらに、CPUコア111は、ロードされたブートローダを実行する。
ブートローダは、予め設定されたリソース定義情報(図示省略)に基づいて、VRAM120に共有VRAM223を設定し、共有VRAM223にリソース定義情報を書き込む。
ブートローダは、リソース定義情報に基づいて、第1の分割VRAM221に第1のホストOS251のイメージを書き込み、第1のホストOS251を起動する。以下、第1のホストOS251は、リソース定義情報に基づいて、第1の分割H/W201を用いて起動する。第1のホストOS251の起動処理の詳細については、図11を用いて後述する。
なお、第1のホストOS251の起動方法はこれに限定されず、他の公知の方法を用いて起動してもよい。以上が、ステップS100の処理の説明である。
次に、第1のホストOS251は、電源遮断後の再起動処理であるか否かを判定する(ステップS101)。
例えば、電源部150が、電源遮断を検出した場合に、電源遮断が検出されたことを示す情報をNVRAM130に設定する方法等が考えられる。この場合、第1のホストOS251は、NVRAM130に当該情報が設定されているか否かを判定する。なお、前述した判定方法は一例であって、これに限定されない。例えば、第1のホストOS251は、NVRAM130のHOS_NVCM710にバックアップデータが格納されている場合、電源遮断後の再起動処理であると判定する方法も考えられる。
電源遮断後の再起動処理でないと判定された場合、第1のホストOS251は、第2のホストOS252の起動処理を開始する(ステップS102)。
具体的には、第1のホストOS251は、リソース定義情報に基づいて、第2の分割VRAM222に第2のホストOS252のイメージを書き込み、起動させる。以下、第2のホストOS252は、リソース定義情報に基づいて、第2の分割H/W202を用いて起動する。第2のホストOS252の起動処理の詳細については、図12を用いて後述する。
次に、第2のホストOS252は、ゲストOS400の起動処理を開始する(ステップS103)。ゲストOS400の起動処理の詳細については、図13を用いて後述する。
その後、第1のホストOS251は、ゲストOS400の起動処理が完了した後、通常の業務を実行すると共に、電源の監視処理を開始する。第1のホストOS251は、電源遮断を検出したか否かを判定する(ステップS109)。
電源遮断が検出されない場合、第1のホストOS251は、電源の監視処理を継続する。一方、電源遮断が検出された場合、第1のホストOS251は、バックアップ処理を開始する(ステップS110)。第1のホストOS251は、バックアップ処理が完了した後、物理計算機10への給電を停止する。バックアップ処理の詳細については、図15を用いて後述する。
ステップS101において、電源遮断後の再起動処理であると判定された場合、第1のホストOS251は、第1のホストOS251のリストア処理を実行する(ステップS105)。
具体的には、第1のホストOS251は、NVCM NVA管理情報700及び新たに生成されたHOS_VCM HPA空間配置情報250に基づいて、第1の分割VRAM221に、HOS_NVCM710に格納されるデータをリストアする。なお、第1のホストOS251のリストア処理については、図16を用いて後述する。
次に、第1のホストOS251は、第2のホストOS252の起動処理を開始する(ステップS106)。ステップS106の処理はステップS102の処理と同一の処理である。
次に、第2のホストOS252は、ゲストOS400の起動処理を実行する(ステップS107)。ステップS107の処理は、ステップS103の処理と同一の処理である。
ゲストOS400は、ゲストOS400が再起動したことを検知し、第1のホストOS251および第2のホストOS252と連携してゲストOS400のリストア処理を実行する(ステップS108)。その後、第1のホストOS251は、ゲストOS400のリストア処理が完了した後、通常の業務を実行すると共に、電源の監視処理を開始する。第1のホストOS251は、電源遮断を検出したか否かを判定する(ステップS109)。ステップS109以下の処理はすでに説明したため省略する。
ゲストOS400のリストア処理では、仮想VRAM410にGOS_NVCM720に格納されたデータがリストアされる。ゲストOS400のリストア処理については、図17A、図17Bおよび図17Cを用いて後述する。
なお、ゲストOS400が再起動したことを検知する方法としては、以下のような方法が考えられる。ゲストOS400は、起動後、GOS_NVCM720にアクセスし、当該GOS_NVCM720にデータが格納されているか否かを判定する。GOS_NVCM720にデータが格納されている場合、ゲストOS400は、ゲストOS400が再起動したと判定する。
他の方法としては、ゲストOS400が、シャットダウン時に原因を特定するログを取得し、起動後に当該ログに基づいて、ゲストOS400が再起動したか否かを判定する。また、他の方法としては、第2のホストOS252が、ゲストOS400の起動処理において、ゲストOS400を起動させた後に、ゲストOS400が再起動した旨を通知する方法も考えられる。なお、前述した判定方法は一例であって、本発明はこれに限定されない。
図11は、本発明の実施例1の第1のホストOS251の起動処理の詳細を説明するフローチャートである。第1のホストOS251は、第1の分割プロセッサ211を用いて第1のホストOS251の起動処理を実行する。
第1のホストOS251は、HVA−HPAマッピング情報240を生成する(ステップS200)。HVA−HPAマッピング情報240の生成方法は公知のものであるため説明を省略する。
第1のホストOS251は、第1の分割VRAM221上に、HOS_VCM用の記憶領域を確保する(ステップS201)。具体的には、第1のホストOS251は、HVA空間のアドレスが連続する記憶領域を、HOS_VCM用の記憶領域として確保する。
第1のホストOS251は、ページインおよびページアウトが有効であるか否かを判定する(ステップS202)。
ページインおよびページアウトが有効でないと判定された場合、第1のホストOS251は、ステップS204に進む。
ページインおよびページアウトが有効であると判定された場合、第1のホストOS251は、HOS_VCM用に確保された記憶領域に格納されるデータが、スワップファイルとして追い出されないように、当該記憶領域をピン留めする(ステップS203)。
第1のホストOS251は、HOS_VCM HPA空間配置情報250を生成し(ステップS204)、処理を終了する。具体的には、以下のような処理が実行される。
第1のホストOS251は、HOS_VCM用に確保された記憶領域のHVAに基づいてHVA−HPAマッピング情報240を参照し、HOS_VCM用に確保された記憶領域を構成するHPA空間の複数の記憶領域群を特定する。
第1のホストOS251は、HOS_VCM HPA空間配置情報250に特定された各記憶領域群に対応するエントリを追加する。また、第1のホストOS251は、各エントリに各記憶領域群の先頭アドレス(HPA)およびサイズを設定する。
第1のホストOS251は、複数の記憶領域群の各々のHVAの順番にしたがって、HOS_VCM HPA空間配置情報250のエントリを並び替える。例えば、第1のホストOS251は、HVAの昇順または降順にエントリを並び替える。
第1のホストOS251は、HOS_VCM HPA空間配置情報250の上のエントリから昇順にIDを付与する。これによって、GOS_VCM HPA空間配置情報600と同様の情報が生成される。以上がステップS204の処理の説明である。
図12は、本発明の実施例1の第2のホストOS252の起動処理の詳細を説明するフローチャートである。第2のホストOS252は、第2の分割プロセッサ212を用いて第2のホストOS252の起動処理を実行する。
第2のホストOS252は、まず、初期化処理を実行する(ステップS300)。VMMの初期化処理は、公知の処理であるためここでは省略する。第2のホストOS252は、初期化処理が完了した後、VM300を生成する(ステップS301)。VMの生成処理は公知の処理であるためここでは説明を省略する。
第2のホストOS252は、生成されたVM300に対応するGPA−HPAマッピング情報500を生成する(ステップS302)。GPA−HPAマッピング情報500の生成処理は、公知の処理であるため説明を省略する。なお、第2のホストOS252は、VM300の識別情報と対応付けて、GPA−HPAマッピング情報500を管理する。
第2のホストOS252は、VM300を起動する(ステップS303)。さらに、起動したVM300は、ゲストOS400の起動処理を開始する。ゲストOS400の起動処理については、図13を用いて後述する。
第2のホストOS252は、ゲストOS400からGOS_VCM GPA空間配置情報440の格納場所を示す通知を受信したか否かを判定する(ステップS304)。
ゲストOS400から通知を受信していないと判定された場合、第2のホストOS252は、ゲストOS400から通知を受信するまで待ち続ける。
ゲストOS400から通知を受信したと判定された場合、第2のホストOS252は、VM300に対応するGOS_VCM HPA空間配置情報600を生成する(ステップS305)。具体的には、以下のような処理が実行される。
第2のホストOS252は、ゲストOS400から受信した通知に含まれるGPAに基づいてGPA−HPAマッピング情報500を参照し、仮想VRAM410に格納されるGOS_VCM GPA空間配置情報440を読み出す。第2のホストOS252は、GOS_VCM GPA空間配置情報440から一つのエントリを選択する。ここでは、ID441が小さい順にエントリが選択されるものとする。
第2のホストOS252は、選択されたエントリのGPA442に基づいて、GPA−HPAマッピング情報500を参照し、GPA501がGPA442と一致するエントリを検索する。すなわち、第2のホストOS252が管理するHPA空間における、GOS_VCM420を構成する記憶領域のアドレスが特定される。
第2のホストOS252は、GOS_VCM HPA空間配置情報600にエントリを生成し、ID601に昇順の識別番号を設定する。また、第2のホストOS252は、生成されたエントリのHPA602に、検索されたエントリのHPA502に格納されるアドレスを設定し、さらに、サイズ603に、選択されたエントリのサイズ443に格納される値を設定する。
以下、GOS_VCM GPA空間配置情報440の全てのエントリに対して同様の処理が実行される。これによって、VM300に対応するGOS_VCM HPA空間配置情報600が生成される。以上が、ステップS305の処理の説明である。
次に、第2のホストOS252は、ゲストOS400からの通知に対する応答を当該ゲストOS400に送信し(ステップS306)、処理を終了する。なお、複数のゲストOS400を起動する場合、一つのゲストOS400に対して、ステップS301からステップS305までの処理が繰り返し実行される。
図13は、本発明の実施例1のゲストOS400の起動処理の一例を説明するフローチャートである。
ゲストOS400は、GVA−GPAマッピング情報430を生成する(ステップS400)。GVA−GPAマッピング情報430の生成方法は公知のものであるため説明を省略する。
ゲストOS400は、仮想VRAM410上に、GOS_VCM用の記憶領域を確保する(ステップS401)。具体的には、ゲストOS400は、GVA空間のアドレスが連続する記憶領域を、GOS_VCM用の記憶領域として確保する。
ゲストOS400は、ページインおよびページアウトが有効であるか否かを判定する(ステップS402)。
ページインおよびページアウトが有効でないと判定された場合、ゲストOS400は、ステップS404に進む。
ページインおよびページアウトが有効であると判定された場合、ゲストOS400は、GOS_VCM420用に確保された記憶領域に格納されるデータが、スワップファイルとして追い出されないように、当該記憶領域をピン留めする(ステップS403)。
ゲストOS400は、GOS_VCM GPA空間配置情報440を生成し(ステップS404)、第2のホストOS252にGOS_VCM GPA空間配置情報440の格納場所を示す通知を第2のホストOS252に送信する(ステップS405)。具体的には、以下のような処理が実行される。
ゲストOS400は、GOS_VCM用に確保された記憶領域のGVAに基づいてGVA−GPAマッピング情報430を参照し、GOS_VCM用に確保された記憶領域を構成するGPA空間の複数の記憶領域群を特定する。
ゲストOS400は、GOS_VCM GPA空間配置情報440に特定された各記憶領域群に対応するエントリを追加する。また、ゲストOS400は、各エントリのGPA442およびサイズ443に、各記憶領域群の先頭アドレス(GPA)およびサイズを設定する。
ゲストOS400は、GOS_VCM GPA空間配置情報440の複数のエントリをGPA442の順番にしたがって並び替える。例えば、ゲストOS400は、GPAの昇順または降順にエントリを並び替える。
ゲストOS400は、GOS_VCM GPA空間配置情報440の上のエントリから昇順にIDを付与する。これによって、GOS_VCM HPA空間配置情報600が生成される。ゲストOS400は、GOS_VCM HPA空間配置情報600が格納されるGPA空間のアドレス(GPA)を第2のホストOS252に通知する。以上がステップS404およびステップS405の処理の説明である。
ゲストOS400は、第2のホストOS252から応答を受信したか否かを判定する(ステップS406)。
第2のホストOS252から応答を受信していないと判定された場合、ゲストOS400は、第2のホストOS252から応答を受信するまで待ち続ける。一方、第2のホストOS252から応答を受信したと判定された場合、ゲストOS400は、処理を終了する。これ以後、ゲストOS400は、通常の処理を実行する。
ここで、図14を用いて、GOS_VCM GPA空間配置情報440およびGOS_VCM HPA空間配置情報600の技術的な特徴について説明する。図14は、本発明の実施例1におけるGOS_VCM420のGVA空間における配置、GPA空間における配置、およびHPA空間における配置の一例を示す説明図である。
(1)図11から図13を用いて説明したように、第1のホストOS251は、起動する度に、HPA空間とHVA空間との間のマッピングを生成し、HOS_VCM230に割り当てる記憶領域としてHVA空間のアドレスが連続する記憶領域を確保する。また、ゲストOS400は、起動する度に、GPA空間とGVA空間との間のマッピングを生成し、GOS_VCM420に割り当てる記憶領域としてGVA空間のアドレスが連続する記憶領域を確保する。
前述したように、HPA空間とHVA空間との間のマッピング関係、およびGPA空間とGVA空間との間のマッピング関係は物理計算機10が起動する度に変化する可能性が高い。そのため、HOS_VCM230に割り当てられるHPA空間の記憶領域、およびGOS_VCM420に割り当てられるGPA空間の記憶領域が変化する可能性がある。
したがって、第1のホストOS251は、HOS_VCM230およびGOS_VCM420のそれぞれに格納されるデータを高速にバックアップするために、HOS_VCM230の第1のホストOS251が管理するHPA空間における配置、およびGOS_VCM420の第2のホストOS252が管理するHPA空間における配置を把握する必要がある。
しかし、前述したように、第1のホストOS251が管理するHPA空間におけるHOS_VCM230の配置、および第2のホストOS252が管理するHPA空間におけるGOS_VCM420の配置は、物理計算機10が起動する度に異なる。
したがって、第1のホストOS251が、電源の遮断を検出し、バックアップ処理を開始するときに、第1のホストOS251が管理するHPA空間におけるHOS_VCM230の配置を把握するためには、HVA−HPAマッピング情報240を参照して、HOS_VCM230の配置を把握する必要がある。また、第1のホストOS251は、第2のホストOS252が管理するHPA空間におけるGOS_VCM420の配置を把握するためには、第2のホストOS252と通信を行う必要がある。
そのため、バックアップするためのデータを把握するために多くの処理を実行する必要があり、短時間かつ消費電力を抑えたバックアップ処理を実現することが困難である。
そこで、本実施例では、第1のホストOS251が、起動時に、第1のホストOS251が管理するHPA空間におけるHOS_VCM230の配置を示すHOS_VCM HPA空間配置情報250を生成する。また、第2のホストOS252は、起動時に、ゲストOS400と連携して、第2のホストOS252が管理するHPA空間におけるGOS_VCM420の配置を示すGOS_VCM HPA空間配置情報600を生成する。
これによって、第1のホストOS251は、バックアップすべきデータが格納される記憶領域を容易にかつ迅速に把握できるため、短時間かつ消費電力を抑えたバックアップ処理を実現することができる。
(2)図14に示すGOS_VCM420は、ゲストOS400が管理するGPA空間では三つの記憶領域群、すなわち、ブロック1(801)、ブロック2(802)およびブロック3(803)にマップされる。さらに、ゲストOS400が管理するGPA空間のブロック1(801)は、第2のホストOS252が管理するHPA空間ではブロック1(901)にマップされ、ゲストOS400が管理するGPA空間のブロック2(802)は、第2のホストOS252が管理するHPA空間のブロック2(902)およびブロック3(903)にマップされ、さらに、ゲストOS400が管理するGPA空間のブロック3は、第2のホストOS252が管理するHPA空間のブロック4(904)にマップされる。したがって、GOS_VCM420は、第2のホストOS252が管理するHPA空間のアドレスが不連続な記憶領域群が割り当てられていることが分かる。
ゲストOS400が管理するGVA空間におけるGOS_VCM420の配置関係を保持するようにバックアップを行うことによって、リストア処理時に、電源が遮断される直前と同一の状態を復元できる。
そこで、ゲストOS400は、ゲストOS400が管理するGPA空間の三つのブロックのエントリが、ゲストOS400が管理するGVA空間の連続した記憶領域の配置となるように並べられたGOS_VCM GPA空間配置情報440を生成する(ステップS404)。また、第2のホストOS252は、HPA空間の四つのブロックのエントリが、ゲストOS400が管理するGVA空間の連続したアドレス順となるように並べられたGOS_VCM HPA空間配置情報600を生成する。
第1のホストOS251は、後述するように、GOS_VCM HPA空間配置情報600のエントリ順にデータを読み出し、GOS_NVCM720に当該データを書き込むことによって、ゲストOS400が管理するGVA空間の連続したGOS_VCM420のイメージデータと同一の状態で、GOS_NVCM720にデータが格納される。
なお、HOS_VCM HPA空間配置情報250についても同様の技術的な特徴がある。
次に、バックアップ処理およびリストア処理の詳細について説明する。
図15は、本発明の実施例1のバックアップ処理の一例を説明するフローチャートである。
第1のホストOS251は、電源の遮断が検出されると、NVCM NVA管理情報700を参照して、HOS_NVCM710のアドレス(NVA)を取得する(ステップS500)。すなわち、第1のホストOS251は、HOS_VCM230に格納されるデータを保存するHOS_NVCM710の先頭アドレスを特定する。
第1のホストOS251は、第1の分割VRAM221に格納されるHOS_VCM HPA空間配置情報250を参照し、HOS_VCM230に格納されるデータをHOS_NVCM710にバックアップする(ステップS501)。具体的には、以下のような処理が実行される。
第1のホストOS251は、HOS_VCM HPA空間配置情報250のエントリを上から順に選択する。第1のホストOS251は、選択されたエントリに対応するデータを書き込むHOS_NVCM710のアドレスを決定する。
一番上のエントリの場合、ステップS500において取得されたNVAがデータを書き込むHOS_NVCM710のアドレスとして決定される。それ以降のエントリの場合、第1のホストOS251は、前回決定されたアドレスと、前回書き込まれたデータのサイズとからデータを書き込むHOS_NVCM710のアドレスを決定する。
第1のホストOS251は、HOS_VCM230からデータを読み出し、HOS_NVCM710に当該データを格納する。このとき、DMA転送を用いて、HOS_VCM230からHOS_NVCM710にデータが書き込まれる。DMA転送では、選択されたエントリに格納されるHPA、および決定されたアドレスが用いられる。以上がステップS501の処理の説明である。
次に、第1のホストOS251は、NVCM NVA管理情報700を参照して、処理対象のゲストOS400を選択する(ステップS502)。
ここでは、第1のホストOS251は、NVCM NVA管理情報700の上のエントリから順に処理対象のゲストOS400を選択するものとする。このとき、第1のホストOS251は、選択されたエントリのNVA702を取得する。また、第1のホストOS251は、選択されたエントリのOS_ID701に基づいて共有VRAM223から、処理対象のゲストOS400に対応するGOS_VCM HPA空間配置情報600を取得する。
第1のホストOS251は、選択されたGOS_VCM420に格納されるデータをGOS_NVCM720にバックアップする(ステップS503)。具体的には、以下のような処理が実行される。
第1のホストOS251は、取得されたGOS_VCM HPA空間配置情報600のエントリを一つ選択する。ここでは、上のエントリから順に選択される。第1のホストOS251は、選択されたエントリのHPA602に対応するデータを書き込むGOS_NVCM720のアドレスを決定する。アドレスの決定方法はステップS501と同一の方法を用いればよい。
第1のホストOS251は、選択されたエントリのHPA602およびサイズ603に基づいてGOS_VCM420からデータを読み出し、GOS_NVCM720に読み出されたデータを格納する。このとき、DMA転送を用いて、GOS_VCM420からGOS_NVCM720にデータが書き込まれる。DMA転送では、選択されたエントリに格納されるHPA602およびサイズ603、並びに決定されたアドレスが用いられる。
なお、GOS_VCM420は、第2の分割VRAM222に含まれるため、第1のホストOS251は、通常、アクセスを行わない。しかし、バックアップ処理およびリストア処理の実行時には、第1のホストOS251が、一時的に第2の分割VRAM222にアクセスできるように設定する。他の方法としては、第1のホストOS251が、第2のホストOS252に読み出し命令を発行する方法も考えられる。
本実施例では、第1のホストOS251が、GOS_VCM HPA空間配置情報600のエントリ順にGOS_VCM420に格納されるデータをGOS_NVCM720に格納する。したがって、図14に示すように、GOS_NVCM720に格納されるデータはGOS_VCM420と同様に連続したイメージデータとなっている。以上がステップS503の処理の説明である。
次に、第1のホストOS251は、全てのゲストOS400について処理が完了したか否かを判定する(ステップS504)。すなわち、NVCM NVA管理情報700に登録される全てのゲストOS400のエントリについて処理が完了したか否かが判定される。
全てのゲストOS400について処理が完了していないと判定された場合、第1のホストOS251はステップS502に戻り、新たなゲストOS400に対して同様の処理を実行する。
全てのゲストOS400について処理が完了したと判定された場合、第1のホストOS251は、処理を終了する。
図16は、本発明の実施例1の第1のホストOS251のリストア処理を説明するフローチャートである。
第1のホストOS251は、第1のホストOS251の起動処理が終了した後、リストア処理を開始する。第1のホストOS251は、NVCM NVA管理情報700を参照して、HOS_NVCM710のアドレス(NVA)を取得する(ステップS600)。すなわち、第1のホストOS251は、バックアップデータを読み出すHOS_NVCM710の先頭アドレスを特定する。
第1のホストOS251は、第1の分割VRAM221に格納されるHOS_VCM HPA空間配置情報250を参照し、HOS_NVCM710に格納されるデータをHOS_VCM230にリストアし(ステップS601)、処理を終了する。具体的には、以下のような処理が実行される。
第1のホストOS251は、HOS_VCM HPA空間配置情報250のエントリを上から順に選択する。第1のホストOS251は、選択されたエントリのサイズを取得する。第1のホストOS251は、HOS_NVCM710からデータを読み出すアドレスを決定する。
一番上のエントリの場合、ステップS600において取得されたNVAがデータを読み出すHOS_NVCM710のアドレスとして決定される。それ以降のエントリの場合、第1のホストOS251は、前回決定されたアドレスと、前回読み出されたデータのサイズとからデータを読み出すHOS_NVCM710のアドレスを決定する。
第1のホストOS251は、HOS_NVCM710から選択されたエントリのサイズ分のデータを読み出し、HOS_VCM230に当該データを格納する。このとき、DMA転送を用いて、HOS_NVCM710からHOS_VCM230にデータが書き込まれる。DMA転送では、選択されたエントリに格納されるHPAおよびサイズ、並びに決定されたアドレスが用いられる。以上がステップS601の処理の説明である。
ここで、ステップS601において参照されるHOS_VCM HPA空間配置情報250は、再起動後に生成されたものである。再起動後、HOS_VCM230として確保される記憶領域が変化した場合、バックアップ処理において参照されたHOS_VCM HPA空間配置情報250とは内容が異なっている。
図17A、図17B、および図17Cは、本発明の実施例1のゲストOS400のリストア処理を説明するフローチャートである。図18は、本発明の実施例1におけるGOS_VCM420のGVA空間における配置、GPA空間における配置、およびHPA空間における配置の一例を示す説明図である。
ゲストOS400は、ゲストOS400の起動処理が終了した後、第2のホストOS252に、GOS_VCM420へのデータのリストア要求を送信する(ステップS700)。その後、ゲストOS400は、第2のホストOS252から応答を受信したか否かを判定する(ステップS701)。
第2のホストOS252から応答を受信していないと判定された場合、ゲストOS400は、第2のホストOS252から応答を受信するまで待ち続ける。第2のホストOS252から応答を受信したと判定された場合、ゲストOS400は、処理を終了する。
第2のホストOS252は、ゲストOS400からGOS_VCM420へのデータのリストア要求を受信すると(ステップS800)、第1のホストOS251に、当該GOS_VCM420へのデータのリストア要求を転送する(ステップS801)。なお、当該リストア要求には、ゲストOS400の識別子が含まれる。
その後、第2のホストOS252は、第1のホストOS251から応答を受信したか否かを判定する(ステップS802)。第1のホストOS251から応答を受信していないと判定された場合、第2のホストOS252は、第1のホストOS251から応答を受信するまで待ち続ける。
第1のホストOS251から応答を受信したと判定された場合、第2のホストOS252は、ゲストOS400に応答を送信し(ステップS803)、処理を終了する。
第1のホストOS251は、第2のホストOS252からGOS_VCM420へのデータのリストア要求を受信すると(ステップS900)、リストア要求に含まれるゲストOS400の識別子に基づいてNVCM NVA管理情報700を参照し、ゲストOS400に対応するGOS_NVCM720のアドレス(NVA)を取得する(ステップS901)。
第1のホストOS251は、共有VRAM223に格納されるGOS_VCM HPA空間配置情報600を参照し、GOS_NVCM720に格納されるデータをGOS_VCM420にリストアし(ステップS902)、その後、第2のホストOS252に応答を送信し(ステップS903)、処理を終了する。具体的には、以下のような処理が実行される。
第1のホストOS251は、GOS_VCM HPA空間配置情報600の上のエントリから順に選択する。第1のホストOS251は、選択されたエントリのサイズ703を取得する。第1のホストOS251は、GOS_NVCM720からデータを読み出すアドレスを決定する。
一番上のエントリの場合、ステップS901において取得されたNVAがデータを読み出すGOS_NVCM720のアドレスである。それ以降のエントリの場合、第1のホストOS251は、前回決定されたアドレスと、前回読み出されたデータのサイズ703とからデータを読み出すGOS_NVCM720のアドレスを決定する。
第1のホストOS251は、GOS_NVCM720から選択されたエントリのサイズ703分のデータを読み出し、GOS_VCM420に当該データを格納する。このとき、DMA転送を用いて、GOS_NVCM720からGOS_VCM420にデータが書き込まれる。DMA転送では、選択されたエントリに格納されるNVA702およびサイズ703、並びに決定されたGOS_NVCM720のアドレスが用いられる。以上がステップS902の処理の説明である。
ここで、ステップS902において参照されるGOS_VCM HPA空間配置情報600は、再起動後に生成されたものである。再起動後、GOS_VCM420として確保された記憶領域が変化した場合、バックアップ処理において参照されたGOS_VCM HPA空間配置情報600とは内容が異なっている。
GOS_VCM HPA空間配置情報600は、ゲストOS400が管理するGVA上のアドレス順にエントリが並び替えられている。したがって、第1のホストOS251が、GOS_VCM HPA空間配置情報600のエントリ順に、GOS_VCM420にデータをリストアすることによって、図18に示すように、GOS_VCM420に格納されるデータは、GOS_VCM420には再起動前と同様に、GVA空間のアドレスが連続したイメージデータとしてリストアされる。すなわち、電源の遮断が発生する前と同一のメモリ状態を復元することができる。
なお、GOS_VCM420は、第2の分割VRAM222に含まれるため、第1のホストOS251は、通常、第2の分割VRAM222にはアクセスを行わない。しかし、バックアップ処理およびリストア処理の実行時には、第1のホストOS251が、共有VRAM223に対して、GOS_NVCM720から一時的に第2の分割VRAM222にアクセスできるように設定する。他の方法としては、第1のホストOS251が、第2のホストOS252に読み出し命令を発行する方法も考えられる。共有VRAM223にGOS_NVCM720から読み出されたデータを書き込み、第2のホストOS252に当該データの書き込み命令を発行する方法も考えられる。
複数のゲストOS400が再起動する場合、一つのゲストOS400に対して、図17Aから図17Cに示す処理が繰り返し実行される。
本発明によればバックアップ処理では以下のような効果を得られる。
物理計算機10の起動時に、バックアップ処理およびリストア処理に必要なメモリ空間のアドレス変換処理が実行される。すなわち、第1のホストOS251が、第1のホストOSが管理するHPA空間におけるHOS_VCM230の配置を示すHOS_VCM HPA空間配置情報250を生成し、また、第2のホストOS252(VMM)が、第2のホストOS252が管理するHPA空間におけるGOS_VCM420の配置を示すGOS_VCM HPA空間配置情報600を生成する。
これによって、第1のホストOS251は、電源の遮断が検出された場合に、HOS_VCM HPA空間配置情報250を参照することによって、HOS_VCM230に格納されるデータを容易にかつ迅速にバックアップすることができ、また、GOS_VCM HPA空間配置情報600を参照することによって、各ゲストOS400のGOS_VCM420に格納されるデータを容易にかつ迅速にバックアップすることができる。
そのため、第1のホストOS251は、バッテリ電源152の電力を用いてバックアップ処理を実行する場合に、複雑なアドレス変換処理を行うことなく、短期間に、かつ、消費電力を抑えたVCMのデータのバックアップを実現することができる。
また、HOS_VCM HPA空間配置情報250およびGOS_VCM HPA空間配置情報600では、ゲストOS400が管理するGVA空間のアドレスが連続するようにエントリが並べられている。
そのため、第1のホストOS251は、HOS_VCM HPA空間配置情報250のエントリ順にHOS_VCM230に格納されるデータをHOS_NVCM710にバックアップすることによって、第1のホストOS251が管理するHVA空間におけるHOS_VCM230に格納されるデータを、電源遮断時の状態でバックアップできる。また、第1のホストOS251は、GOS_VCM HPA空間配置情報600のエントリ順にGOS_VCM420に格納されるデータをGOS_NVCM720にバックアップすることによって、ゲストOS400が管理するGVA空間におけるGOS_VCM420に格納されるデータを、電源遮断時の状態でバックアップできる。
本発明によればリストア処理では以下のような効果を得られる。
バックアップ処理と同様に、第1のホストOS251は、HOS_VCM HPA空間配置情報250を参照することによって、HOS_NVCM710に格納されるデータを容易にかつ迅速にHOS_VCM230にリストアすることができ、また、GOS_VCM HPA空間配置情報600を参照することによって、GOS_NVCM720に格納されるデータを容易にかつ迅速にGOS_VCM420にリストアすることができる。
また、バックアップ処理と同様に、第1のホストOS251は、HOS_VCM HPA空間配置情報250のエントリ順にHOS_NVCM710に格納されるデータをHOS_VCM230にリストアすることによって、電源遮断時の状態のHOS_VCM230のデータを復元できる。また、第1のホストOS251は、GOS_VCM HPA空間配置情報600のエントリ順にGOS_NVCM720に格納されるデータをGOS_VCM420にリストアすることによって、電源遮断時の状態のGOS_VCM420のデータを復元できる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、およびそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD−ROM、DVD−ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Java等の広範囲のプログラムまたはスクリプト言語で実装できる。
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段またはCD−RW、CD−R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
Claims (10)
- 複数のオペレーティングシステムが稼働する計算機であって、
前記計算機は、物理リソースとして、プロセッサ、前記プロセッサに接続される揮発性メモリ、前記プロセッサに接続される不揮発性メモリ、および前記プロセッサに接続されるI/Oデバイスを備え、
前記複数のオペレーティングシステムは、第1のオペレーティングシステムと、複数の仮想計算機を生成する第2のオペレーティングシステムと、を含み、
前記第1のオペレーティングシステムは、
前記プロセッサが論理的に分割された第1の論理プロセッサ、前記揮発性メモリが論理的に分割された第1の論理揮発性メモリ、および前記I/Oデバイスが論理的に分割された第1論理I/Oデバイスを含む第1の論理リソース上で稼働し、
前記計算機の電源の遮断を検出する電源遮断検出部を有し、
前記第2のオペレーティングシステムは、前記プロセッサが論理的に分割された第2の論理プロセッサ、前記揮発性メモリが論理的に分割された第2の論理揮発性メモリ、前記I/Oデバイスが論理的に分割された第2の論理I/Oデバイスを含む第2の論理リソース上で稼働し、
前記複数の仮想計算機の各々では、第3のオペレーティングシステムが稼動し、
前記第1のオペレーティングシステムは、
当該第1のオペレーティングシステムの起動時に、前記第1の論理揮発性メモリに、一時的にデータを格納する第1のキャッシュメモリ領域を確保し、
前記第1のオペレーティングシステムが管理する前記第1の論理揮発性メモリの物理アドレス空間における前記第1のキャッシュメモリ領域の位置を示す第1の配置情報を生成し、
前記第2のオペレーティングシステムは、
少なくとも一つの仮想計算機を生成して、前記少なくとも一つの仮想計算機上で前記第3のオペレーティングシステムを起動し、
前記第3のオペレーティングシステムは、前記少なくとも一つの仮想計算機に割り当てられた仮想メモリに、第2のキャッシュメモリ領域を確保し、
前記第2のオペレーティングシステムは、当該第2のオペレーティングシステムが管理する前記第2の論理揮発性メモリの物理アドレス空間における前記第2のキャッシュメモリ領域の位置を示す第2の配置情報を生成し、
前記第1のオペレーティングシステムは、
前記計算機の電源の遮断が検出された場合に、前記第1の配置情報に基づいて、前記第1のキャッシュメモリ領域に格納される第1のデータを取得し、
前記第1のデータを前記不揮発性メモリに格納し、
前記第2の配置情報を取得し、
前記第2の配置情報に基づいて、前記第2のキャッシュメモリ領域に格納される第2のデータを前記第2の論理揮発性メモリから取得し、
前記第2のデータを前記不揮発性メモリに格納することを特徴とする計算機。 - 請求項1に記載の計算機であって、
前記第1のオペレーティングシステムは、
前記計算機が再起動した場合に、前記第1の論理揮発性メモリに、新たに前記第1のキャッシュメモリ領域を確保し、
新たに前記第1の配置情報を生成し、
前記不揮発性メモリに格納される前記第1のデータを取得し、
前記新たに生成された第1の配置情報に基づいて、前記新たに確保された第1のキャッシュメモリ領域に前記第1のデータをリストアし、
前記第2のオペレーティングシステムは、
前記計算機が再起動した場合に、新たに前記少なくとも一つの仮想計算機を生成して、前記新たに生成された少なくとも一つの仮想計算機上で前記第3のオペレーティングシステムを起動し、
前記第3のオペレーティングシステムは、前記新たに生成された少なくとも一つの仮想計算機に新たに割り当てられた仮想メモリに、新たに前記第2のキャッシュメモリ領域を確保し、
前記第2のオペレーティングシステムは、新たに前記第2の配置情報を生成し、
前記第1のオペレーティングシステムに、前記少なくとも一つの仮想計算機上で稼動する第3のオペレーティングシステムの前記第2のデータのリストア要求を送信し、
前記第1のオペレーティングシステムは、
前記不揮発性メモリから、前記少なくとも一つの仮想計算機に対応する前記第2のデータを取得し、
前記新たに生成された第2の配置情報を取得し、
前記新たに生成された第2の配置情報に基づいて、前記新たに確保された第2のキャッシュメモリ領域に前記第2のデータをリストアすることを特徴とする計算機。 - 請求項2に記載の計算機であって、
前記第2のオペレーティングシステムは、
前記少なくとも一つの仮想計算機を生成する場合に、前記第2のオペレーティングシステムが管理する物理アドレス空間と、前記第3のオペレーティングシステムが管理する物理アドレス空間との間のマッピング関係を管理する第1のマッピング情報を生成し、
前記第3のオペレーティングシステムは、
前記第3のオペレーティングシステムが管理する物理アドレス空間と、前記第3のオペレーティングシステムが管理する仮想アドレス空間との間の対応関係を管理する第2のマッピング情報を生成し、
前記第3のオペレーティングシステムが管理する仮想アドレス空間で連続する記憶領域を前記第2のキャッシュメモリ領域として確保し、
前記第2のマッピング情報に基づいて、前記第3のオペレーティングシステムが管理する仮想メモリの物理アドレス空間における前記第2のキャッシュメモリ領域を構成する複数の記憶領域の位置を特定し、
前記第3のオペレーティングシステムが管理する仮想メモリの物理アドレス空間における前記特定された複数の記憶領域の各々の物理アドレスを含むエントリを複数生成し、
前記第3のオペレーティングシステムが管理する仮想アドレス空間における前記第2のキャッシュメモリ領域のアドレス順に、前記生成された複数のエントリを並び替えることによって、前記第3のオペレーティングシステムが管理する前記仮想メモリの物理アドレス空間における前記第2のキャッシュメモリ領域の位置を示す第3の配置情報を生成し、
前記第2のオペレーティングシステムは、
前記第2の配置情報を生成する場合に、前記第3の配置情報および前記第1のマッピング情報に基づいて、前記第2のオペレーティングシステムが管理する第2の論理揮発性メモリの物理アドレス空間における前記第2のキャッシュメモリ領域を構成する複数の記憶領域の位置を特定し、
前記第2のオペレーティングシステムが管理する第2の論理揮発性メモリの物理アドレス空間における前記特定された複数の記憶領域の各々の物理アドレスを含むエントリを複数生成し、
前記第3のオペレーティングシステムが管理する仮想アドレス空間における前記第2のキャッシュメモリ領域のアドレス順に、前記生成された複数のエントリを並び替えることによって、前記第2の配置情報を生成することを特徴とする計算機。 - 請求項3に記載の計算機であって、
前記第1のオペレーティングシステムは、前記仮想メモリに格納される前記第2のデータをバックアップする場合に、前記仮想メモリにおける前記第3のオペレーティングシステムが管理する前記仮想アドレス空間におけるアドレス順に、前記第2のデータを前記不揮発性メモリに格納することを特徴とする計算機。 - 請求項4に記載の計算機であって、
前記不揮発性メモリは、アドレスが連続する記憶領域から構成される前記第1のデータを格納する第1の不揮発性キャッシュメモリ領域、およびアドレスが連続する記憶領域から構成される前記少なくとも一つの仮想計算機の前記第2のデータを格納する第2の不揮発性キャッシュメモリ領域を含み、
前記第1のオペレーティングシステムは、
前記第1の配置情報のエントリ順に、前記第1のキャッシュメモリ領域を構成する記憶領域に格納されるデータを読み出し、
前記第1の不揮発性キャッシュメモリ領域のアドレス順に、前記第1のキャッシュメモリ領域を構成する記憶領域から読み出されたデータを格納し、
前記第2の配置情報のエントリ順に、前記第2のキャッシュメモリ領域を構成する記憶領域に格納されるデータを読み出し、
前記第2の不揮発性キャッシュメモリ領域のアドレス順に、前記第2のキャッシュメモリ領域を構成する記憶領域から読み出されたデータを格納することを特徴とする計算機。 - 複数のオペレーティングシステムが稼働する計算機におけるキャッシュデータ管理方法であって、
前記計算機は、物理リソースとして、プロセッサ、前記プロセッサに接続される揮発性メモリ、前記プロセッサに接続される不揮発性メモリ、および前記プロセッサに接続されるI/Oデバイスを備え、
前記複数のオペレーティングシステムは、第1のオペレーティングシステムと、複数の仮想計算機を生成する第2のオペレーティングシステムと、を含み、
前記第1のオペレーティングシステムは、
前記プロセッサが論理的に分割された第1の論理プロセッサ、前記揮発性メモリが論理的に分割された第1の論理揮発性メモリ、および前記I/Oデバイスが論理的に分割された第1論理I/Oデバイスを含む第1の論理リソース上で稼働し、
前記計算機の電源の遮断を検出する電源遮断検出部を有し、
前記第2のオペレーティングシステムは、前記プロセッサが論理的に分割された第2の論理プロセッサ、前記揮発性メモリが論理的に分割された第2の論理揮発性メモリ、前記I/Oデバイスが論理的に分割された第2の論理I/Oデバイスを含む第2の論理リソース上で稼働し、
前記複数の仮想計算機の各々では、第3のオペレーティングシステムが稼動し、
前記キャッシュデータ管理方法は、
前記第1のオペレーティングシステムが、当該第1のオペレーティングシステムの起動時に、前記第1の論理揮発性メモリに、一時的にデータを格納する第1のキャッシュメモリ領域を確保する第1のステップと、
前記第1のオペレーティングシステムが、前記第1のオペレーティングシステムが管理する前記第1の論理揮発性メモリの物理アドレス空間における前記第1のキャッシュメモリ領域の位置を示す第1の配置情報を生成する第2のステップと、
前記第2のオペレーティングシステムが、少なくとも一つの仮想計算機を生成して、前記少なくとも一つの仮想計算機上で前記第3のオペレーティングシステムを起動する第3のステップと、
前記第3のオペレーティングシステムが、前記少なくとも一つの仮想計算機に割り当てられた仮想メモリに、第2のキャッシュメモリ領域を確保する第4のステップと、
前記第2のオペレーティングシステムが、当該第2のオペレーティングシステムが管理する前記第2の論理揮発性メモリの物理アドレス空間における前記第2のキャッシュメモリ領域の位置を示す第2の配置情報を生成する第5のステップと、
前記第1のオペレーティングシステムが、前記計算機の電源の遮断が検出された場合に、前記第1の配置情報に基づいて、前記第1のキャッシュメモリ領域に格納される第1のデータを取得し、前記不揮発性メモリに前記第1のデータを格納する第6のステップと、
前記第1のオペレーティングシステムが、前記第2の配置情報を取得する第7のステップと、
前記第1のオペレーティングシステムが、前記第2の配置情報に基づいて、前記第2のキャッシュメモリ領域に格納される第2のデータを前記第2の論理揮発性メモリから取得し、前記不揮発性メモリに前記第2のデータを格納する第8のステップと、を含むことを特徴とするキャッシュデータ管理方法。 - 請求項6に記載のキャッシュデータ管理方法であって、
前記キャッシュデータ管理方法は、
前記第1のオペレーティングシステムが、前記計算機が再起動した場合に、前記第1の論理揮発性メモリに、新たに前記第1のキャッシュメモリ領域を確保する第9のステップと、
前記第1のオペレーティングシステムが、新たに前記第1の配置情報を生成する第10のステップと、
前記第1のオペレーティングシステムが、前記不揮発性メモリに格納される前記第1のデータを取得する第11のステップと、
前記第1のオペレーティングシステムが、前記新たに生成された第1の配置情報に基づいて、前記新たに確保された第1のキャッシュメモリ領域に前記第1のデータをリストアする第12のステップと、
前記第2のオペレーティングシステムが、前記計算機が再起動した場合に、新たに前記少なくとも一つの仮想計算機を生成して、前記新たに生成された少なくとも一つの仮想計算機上で前記第3のオペレーティングシステムを起動する第13のステップと、
前記第3のオペレーティングシステムが、前記新たに生成された少なくとも一つの仮想計算機に新たに割り当てられた仮想メモリに、新たに前記第2のキャッシュメモリ領域を確保する第14のステップと、
前記第2のオペレーティングシステムが、新たに前記第2の配置情報を生成する第15のステップと、
前記第2のオペレーティングシステムが、前記第1のオペレーティングシステムに、前記少なくとも一つの仮想計算機上で稼動する第3のオペレーティングシステムの前記第2のデータのリストア要求を送信する第16のステップと、
前記第1のオペレーティングシステムが、前記不揮発性メモリから、前記少なくとも一つの仮想計算機に対応する前記第2のデータを取得する第17のステップと、
前記第1のオペレーティングシステムが、前記新たに生成された第2の配置情報を取得する第18のステップと、
前記第1のオペレーティングシステムが、前記新たに生成された第2の配置情報に基づいて、前記新たに確保された第2のキャッシュメモリ領域に前記第2のデータをリストアする第19のステップと、を含むことを特徴とするキャッシュデータ管理方法。 - 請求項7に記載のキャッシュデータ管理方法であって、
前記第3のステップおよび前記第13のステップは、前記第2のオペレーティングシステムが、前記第2のオペレーティングシステムが管理する物理アドレス空間と、前記第3のオペレーティングシステムが管理する物理アドレス空間との間のマッピング関係を管理する第1のマッピング情報を生成するステップを含み、
前記第4のステップおよび前記第14のステップは、
前記第3のオペレーティングシステムが、前記第3のオペレーティングシステムが管理する物理アドレス空間と、前記第3のオペレーティングシステムが管理する仮想アドレス空間との間の対応関係を管理する第2のマッピング情報を生成するステップと、
前記第3のオペレーティングシステムが、前記第3のオペレーティングシステムが管理する仮想アドレス空間で連続する記憶領域を前記第2のキャッシュメモリ領域として確保するステップと、
前記第3のオペレーティングシステムが、前記第2のマッピング情報に基づいて、前記第3のオペレーティングシステムが管理する仮想メモリの物理アドレス空間における前記第2のキャッシュメモリ領域を構成する複数の記憶領域の位置を特定するステップと、
前記第3のオペレーティングシステムが、前記第3のオペレーティングシステムが管理する仮想メモリの物理アドレス空間における前記特定された複数の記憶領域の各々の物理アドレスを含むエントリを複数生成するステップと、
前記第3のオペレーティングシステムが、前記第3のオペレーティングシステムが管理する仮想アドレス空間における前記第2のキャッシュメモリ領域のアドレス順に、前記生成された複数のエントリを並び替えることによって、前記第3のオペレーティングシステムが管理する前記仮想メモリの物理アドレス空間における前記第2のキャッシュメモリ領域の位置を示す第3の配置情報を生成するステップと、を含み、
前記第5のステップおよび前記第15のステップは、
前記第2のオペレーティングシステムが、前記第3の配置情報および前記第1のマッピング情報に基づいて、前記第2のオペレーティングシステムが管理する第2の論理揮発性メモリの物理アドレス空間における前記第2のキャッシュメモリ領域を構成する複数の記憶領域の位置を特定するステップと、
前記第2のオペレーティングシステムが、前記第2のオペレーティングシステムが管理する第2の論理揮発性メモリの物理アドレス空間における前記特定された複数の記憶領域の各々の物理アドレスを含むエントリを複数生成するステップと、
前記第2のオペレーティングシステムが、前記第3のオペレーティングシステムが管理する仮想アドレス空間における前記第2のキャッシュメモリ領域のアドレス順に、前記生成された複数のエントリを並び替えることによって、前記第2の配置情報を生成するステップと、を含むことを特徴とするキャッシュデータ管理方法。 - 請求項8に記載のキャッシュデータ管理方法であって、
前記第10のステップでは、前記第1のオペレーティングシステムが、前記仮想メモリにおける前記第3のオペレーティングシステムが管理する前記仮想アドレス空間におけるアドレス順に、前記第2のデータを前記不揮発性メモリに格納することを特徴とするキャッシュデータ管理方法。 - 請求項9に記載のキャッシュデータ管理方法であって、
前記不揮発性メモリは、アドレスが連続する記憶領域から構成される前記第1のデータを格納する第1の不揮発性キャッシュメモリ領域、およびアドレスが連続する記憶領域から構成される前記少なくとも一つの仮想計算機の前記第2のデータを格納する第2の不揮発性キャッシュメモリ領域を含み、
前記第6のステップは、
前記第1のオペレーティングシステムが、前記第1の配置情報のエントリ順に、前記第1のキャッシュメモリ領域を構成する記憶領域に格納されるデータを読み出すステップと、
前記第1のオペレーティングシステムが、前記第1の不揮発性キャッシュメモリ領域のアドレス順に、前記第1のキャッシュメモリ領域を構成する記憶領域から読み出されたデータを格納するステップと、を含み、
前記第8のステップは、
前記第1のオペレーティングシステムが、前記第2の配置情報のエントリ順に、前記第2のキャッシュメモリ領域を構成する記憶領域に格納されるデータを読み出すステップと、
前記第1のオペレーティングシステムが、前記第2の不揮発性キャッシュメモリ領域のアドレス順に、前記第2のキャッシュメモリ領域を構成する記憶領域から読み出されたデータを格納するステップと、を含むことを特徴とするキャッシュデータ管理方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2014/055878 WO2015132941A1 (ja) | 2014-03-07 | 2014-03-07 | 計算機 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2015132941A1 JPWO2015132941A1 (ja) | 2017-03-30 |
JP6165964B2 true JP6165964B2 (ja) | 2017-07-19 |
Family
ID=54054776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016506043A Expired - Fee Related JP6165964B2 (ja) | 2014-03-07 | 2014-03-07 | 計算機 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9977740B2 (ja) |
JP (1) | JP6165964B2 (ja) |
WO (1) | WO2015132941A1 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3182134A1 (en) * | 2015-12-18 | 2017-06-21 | Roche Diagnostics GmbH | Method for restoring settings of an instrument for processing a sample or a reagent, and system comprising an instrument for processing a sample or reagent |
JP6776436B2 (ja) * | 2017-02-24 | 2020-10-28 | 株式会社東芝 | 制御装置 |
US10623565B2 (en) | 2018-02-09 | 2020-04-14 | Afiniti Europe Technologies Limited | Techniques for behavioral pairing in a contact center system |
WO2020157950A1 (ja) * | 2019-02-01 | 2020-08-06 | 三菱電機株式会社 | 情報処理装置、バックアップ方法、リストア方法およびプログラム |
US11972034B1 (en) | 2020-10-29 | 2024-04-30 | Amazon Technologies, Inc. | Hardware-assisted obscuring of cache access patterns |
JP2023037883A (ja) | 2021-09-06 | 2023-03-16 | キオクシア株式会社 | 情報処理装置 |
US11755496B1 (en) | 2021-12-10 | 2023-09-12 | Amazon Technologies, Inc. | Memory de-duplication using physical memory aliases |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3546678B2 (ja) | 1997-09-12 | 2004-07-28 | 株式会社日立製作所 | マルチos構成方法 |
US20060136765A1 (en) * | 2004-12-03 | 2006-06-22 | Poisner David L | Prevention of data loss due to power failure |
US8060683B2 (en) * | 2004-12-17 | 2011-11-15 | International Business Machines Corporation | System, method and program to preserve a cache of a virtual machine |
US8375386B2 (en) * | 2005-06-29 | 2013-02-12 | Microsoft Corporation | Failure management for a virtualized computing environment |
US8607009B2 (en) * | 2006-07-13 | 2013-12-10 | Microsoft Corporation | Concurrent virtual machine snapshots and restore |
JP2008276646A (ja) * | 2007-05-02 | 2008-11-13 | Hitachi Ltd | ストレージ装置及びストレージ装置におけるデータの管理方法 |
JP2009075759A (ja) * | 2007-09-19 | 2009-04-09 | Hitachi Ltd | ストレージ装置及びストレージ装置におけるデータの管理方法 |
US8209686B2 (en) * | 2008-02-12 | 2012-06-26 | International Business Machines Corporation | Saving unsaved user process data in one or more logical partitions of a computing system |
KR101288700B1 (ko) | 2008-03-14 | 2013-08-23 | 미쓰비시덴키 가부시키가이샤 | 멀티 오퍼레이팅 시스템(os) 기동 장치, 컴퓨터 판독 가능한 기록 매체 및 멀티 os 기동 방법 |
DK2270818T3 (da) * | 2008-03-19 | 2020-06-15 | Asahi Chemical Ind | Polyelektrolyt og fremgangsmåde til fremstilling af polyelektrolytten |
US8671258B2 (en) * | 2009-03-27 | 2014-03-11 | Lsi Corporation | Storage system logical block address de-allocation management |
US20110202728A1 (en) * | 2010-02-17 | 2011-08-18 | Lsi Corporation | Methods and apparatus for managing cache persistence in a storage system using multiple virtual machines |
JP5484117B2 (ja) * | 2010-02-17 | 2014-05-07 | 株式会社日立製作所 | ハイパーバイザ及びサーバ装置 |
US9804874B2 (en) * | 2011-04-20 | 2017-10-31 | Microsoft Technology Licensing, Llc | Consolidation of idle virtual machines on idle logical processors |
US9875115B2 (en) * | 2013-12-20 | 2018-01-23 | Microsoft Technology Licensing, Llc | Memory-preserving reboot |
-
2014
- 2014-03-07 US US15/114,114 patent/US9977740B2/en active Active
- 2014-03-07 WO PCT/JP2014/055878 patent/WO2015132941A1/ja active Application Filing
- 2014-03-07 JP JP2016506043A patent/JP6165964B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20170004081A1 (en) | 2017-01-05 |
WO2015132941A1 (ja) | 2015-09-11 |
US9977740B2 (en) | 2018-05-22 |
JPWO2015132941A1 (ja) | 2017-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6165964B2 (ja) | 計算機 | |
JP6458146B2 (ja) | 計算機及びメモリ領域管理方法 | |
JP4923990B2 (ja) | フェイルオーバ方法、およびその計算機システム。 | |
US9396029B2 (en) | Storage system and method for allocating resource | |
JP6029550B2 (ja) | 計算機の制御方法及び計算機 | |
JP4961319B2 (ja) | 仮想ボリュームにおける仮想領域に動的に実領域を割り当てるストレージシステム | |
US20120246644A1 (en) | Virtual computer system and controlling method of virtual computer | |
US8954706B2 (en) | Storage apparatus, computer system, and control method for storage apparatus | |
US20130290596A1 (en) | Hybrid in-heap out-of-heap ballooning for java virtual machines | |
KR20070100367A (ko) | 하나의 가상 머신에서 다른 가상 머신으로 메모리를동적으로 재할당하기 위한 방법, 장치 및 시스템 | |
US10956189B2 (en) | Methods for managing virtualized remote direct memory access devices | |
US10289563B2 (en) | Efficient reclamation of pre-allocated direct memory access (DMA) memory | |
JP5786955B2 (ja) | メモリ縮退方法及び情報処理装置 | |
US11593170B2 (en) | Flexible reverse ballooning for nested virtual machines | |
CN110300960B (zh) | 信息***、管理程序和信息***的程序更换方法 | |
US8566541B2 (en) | Storage system storing electronic modules applied to electronic objects common to several computers, and storage control method for the same | |
US11256585B2 (en) | Storage system | |
JP2022034455A (ja) | 計算機システムおよび管理方法 | |
WO2015122007A1 (ja) | 計算機、及び、ハイパバイザによる資源スケジューリング方法 | |
JP5557612B2 (ja) | 計算機及び転送プログラム | |
JP5334048B2 (ja) | メモリ装置および計算機 | |
JPWO2014196083A1 (ja) | 計算機システム及び制御方法 | |
JP6035993B2 (ja) | 情報処理装置、装置管理方法および装置管理プログラム | |
US20190004956A1 (en) | Computer system and cache management method for computer system | |
US20140208023A1 (en) | Storage system and control method for storage system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20170530 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170621 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6165964 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |