JP5600361B2 - ハイパーバイザベースのサーバ二重化システム、その方法およびサーバ二重化コンピュータプログラムが記録された記録媒体 - Google Patents

ハイパーバイザベースのサーバ二重化システム、その方法およびサーバ二重化コンピュータプログラムが記録された記録媒体 Download PDF

Info

Publication number
JP5600361B2
JP5600361B2 JP2013013296A JP2013013296A JP5600361B2 JP 5600361 B2 JP5600361 B2 JP 5600361B2 JP 2013013296 A JP2013013296 A JP 2013013296A JP 2013013296 A JP2013013296 A JP 2013013296A JP 5600361 B2 JP5600361 B2 JP 5600361B2
Authority
JP
Japan
Prior art keywords
virtual machine
file system
hypervisor
server
primary server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013013296A
Other languages
English (en)
Other versions
JP2014093072A (ja
Inventor
光 ▲ヒュン▼ 李
宗 聲 金
Original Assignee
サムソン エスディーエス カンパニー リミテッド
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 サムソン エスディーエス カンパニー リミテッド filed Critical サムソン エスディーエス カンパニー リミテッド
Publication of JP2014093072A publication Critical patent/JP2014093072A/ja
Application granted granted Critical
Publication of JP5600361B2 publication Critical patent/JP5600361B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2038Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2041Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with more than one idle spare processing component
    • 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/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Hardware Redundancy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、サーバ二重化システム、その方法およびサーバ二重化コンピュータプログラムが記録された記録媒体に関するものである。より詳細にはハイパーバイザ(hypervisor)上に一つ以上の仮想マシン(virtual machine)が生成されたサーバを二重化することにおいて、仮想マシンのファイル入出力コールを呼び出す際、その応答速度を速めるサーバ二重化システム、その方法およびサーバ二重化コンピュータプログラムが記録された記録媒体に関するものである。
従来、サーバ二重化とは、一つのデータを共有ストレージに格納し、2台以上のサーバのうち一台でアプリケーションを駆動中に該当サーバで障害が発生すると、待機中のサーバのアプリケーションを稼動させ、サービスを引き継がせる方式を意味する。この際、障害の発生時点から待機中のサーバでのアプリケーションの稼動準備が完了する時点までの間にサービス中断が発生する問題があった。
このため、データだけではなく、CPU、メモリ、ネットワーク装置まで二重化するフォールトトレランス(Fault Tolerance、FT)技術が提供されている。データとCPUの内容まで二重化するので全てのサーバでアプリケーションを稼動させてサービスを行うことができる。このようなフォールトトレランス技術は、フォールトトレランスのためのハードウェアモジュールを利用してリアルタイムで二重化を行う方式、または、ハイパーバイザベースの二重化方式が試みられている。ハードウェアベースの二重化方式は、優れた性能を有する反面、二重化にはファームウェアレベルの制御が必要であるため、高費用のハードウェアを備えなければならない問題点があった。
図1は、従来技術によるハイパーバイザベースのフォールトトレランス技術が適用されたシステムの構成を示す図である。ハイパーバイザ技術が提供されることにより、一つの物理的なサーバに複数の仮想マシンが生成され、複数の仮想サーバを提供できるようになった。このような技術は例えば、クラウドコンピューティング分野に適用することができる。例えばクラウドコンピューティングサービスのユーザは、サービス管理者が提供する物理的なサーバ装置にユーザの必要に応じるリソースの割当を受けた仮想マシンを設けることによって、サーバ管理費用を節減することができる。このようなサービス管理者に
高可用性(High Availability:HA)のシステムを提供するため、ハイパーバイザベースのフォールトトレランス技術が提供されている。
図1に図示するように、ハイパーバイザベースのフォールトトレランス技術は、ハイパーバイザレベルで仮想資源を二重化することによって、プライマリサーバ(PRIMARY SERVER)がスタンバイサーバ(STANDBY SERVER)に二重化される効果を奏する。すなわち、ハイパーバイザベースのフォールトトレランス技術が適用されたシステムは、プライマリサーバおよびスタンバイサーバのハイパーバイザに備えられたFTモジュールが、両ハイパーバイザが管理する仮想資源を同期化する。前記仮想資源は、例えば仮想CPUのレジスタ値、仮想メモリのデータ、仮想ストレージのデータなどが含まれるとよい。
しかし、ハイパーバイザベースのフォールトトレランス技術は、仮想資源の同期化作業に時間を要するため、特に動作速度が遅いストレージ装置の同期化が必要な作業の場合、カーネルサービス関数のリターンに要する時間が長い問題点がある。これについて図2を参照して詳細に説明する。
図2は、プライマリサーバで動作する仮想マシン(Primary:VM)で動作するアプリケーションの実行中にデータ書き込みコールが呼び出される場合、ハイパーバイザベースのフォールトトレランス技術が適用されたシステムのデータ書き込みコールの実行動作を示す信号流れ図である。
先に、仮想マシン(Primary:VM)が、プライマリサーバのハイパーバイザ(Primary Hypervisor)にデータ書き込みを要請すると、プライマリサーバのハイパーバイザに備えられたFTモジュールはスタンバイサーバのハイパーバイザ(Standby Hypervisor)のFTモジュールに同期化(Sync)を要請する。スタンバイサーバのハイパーバイザは前記同期化要請信号を受け、スタンバイサーバの仮想マシン(Standby:VM)にアップデートを要請する。
スタンバイサーバの仮想マシンは、プライマリサーバの仮想マシンで動作するアプリケーションがデータ書き込みコールを呼び出したことを再演する。すなわち、スタンバイサーバの仮想マシンはスタンバイサーバのハイパーバイザにデータ書き込みを要請し、スタンバイサーバのハイパーバイザはスタンバイサーバのストレージ(Standby HDD)に実際にデータを書き込む。スタンバイサーバのストレージにデータが書き込まれた後、スタンバイサーバの仮想マシンは前記アップデートをリターンする(Update_Ack)。そして、スタンバイサーバのハイパーバイザは前記同期化要請をリターンする(Sync_Ack)。
その後、プライマリサーバのハイパーバイザはプライマリサーバのストレージにも物理的にデータを書き込む。プライマリサーバのストレージに対するデータ書き込みが完了した後に、最終的にプライマリサーバの仮想マシンからのデータ書き込みコールの呼び出しはリターンされる。
図2に図示するように、ハイパーバイザベースのFT技術が適用されたシステムは、特に低速のストレージ装置の同期化が伴われる作業の場合、速度が低減する問題点がある。
本発明が解決しようとする技術的課題は、ストレージ装置に対するデータ入出力動作速度を向上させるハイパーバイザベースのサーバ二重化システムを提供するものである。
本発明が解決しようとする他の技術的課題は、ストレージ装置に対するデータ入出力動作速度を向上させるハイパーバイザベースのサーバ二重化方法を提供するものである。
本発明が解決しようとするまた他の技術的課題は、ストレージ装置に対するデータ入出力動作速度を向上させるハイパーバイザベースのサーバ二重化方法を実行するコンピュータプログラムが記録されたコンピュータで判読可能な記憶媒体を提供するものである。
本発明が解決しようとするまた他の技術的課題は、データ入出力速度が向上した仮想マシン提供システムを提供するものである。
本発明の技術的課題は、以上で言及した技術的課題に制限されず、言及されていないまた他の技術的課題は次の記載から当業者に明確に理解され得る。
前述された技術的課題を解決するための本発明の一実施形態によるコンピュータで判読可能な記録媒体は、コンピュータプログラムを記録する。前記コンピュータプログラムは、プライマリサーバのハイパーバイザ上に第1ファイルシステム仮想マシンを生成し、前記第1ファイルシステム仮想マシンに所定のファイルシステムをインストールし、前記第1ファイルシステム仮想マシンに割当てられた仮想メモリに前記ファイルシステムに連携して動作するバッファキャッシュ(buffer cache)を配置し、ユーザの要請によって生成されるユーザ仮想マシンを前記ハイパーバイザ上に生成し、前記第1ファイルシステムの前記ファイルシステムを前記ユーザ仮想マシンが共有して使用するように設定し、前記バッファキャッシュをスタンバイサーバのハイパーバイザ上に生成された第2ファイルシステム仮想マシンのバッファキャッシュに二重化することを実行する。
本発明の他の実施形態によるハイパーバイザベースの二重化方法は、前記プライマリサーバのハイパーバイザ(hypervisor)上に生成されるユーザ仮想マシンが共有するファイルシステムを提供する第1ファイルシステム仮想マシンを生成するステップと、前記スタンバイサーバのハイパーバイザ上に二重化される前記ユーザ仮想マシンがアウトソーシングする前記ファイルシステムを提供する第2ファイルシステム仮想マシンを生成するステップ、および前記第1ファイルシステム仮想マシンが前記ファイルシステムと連携して管理するバッファキャッシュを前記第2ファイルシステム仮想マシンが前記ファイルシステムと連携して管理するバッファキャッシュに二重化するステップを含む。
本発明のまた他の実施形態によるサーバ二重化システムは、ハイパーバイザベースのフォールトトレランスモジュールを備えるハイパーバイザと第1ファイルシステム仮想マシンを含むプライマリサーバと、前記プライマリサーバのハイパーバイザに備えられたフォールトトレランスモジュールとデータを送受信して前記プライマリサーバを二重化するハイパーバイザベースのフォールトトレランスモジュールを備えるハイパーバイザを含む第1スタンバイサーバを含む。このとき、前記第1ファイルシステム仮想マシンは、前記プライマリサーバのハイパーバイザ上に生成されるユーザ仮想マシンが共有する第1ファイルシステムを提供し、前記第1ファイルシステムと連携して使用されるバッファキャッシュを前記第1ファイルシステム仮想マシンに割当てられた仮想メモリ上に配置する。また、前記第1ファイルシステム仮想マシンは、前記プライマリサーバのハイパーバイザベースのフォールトトレランスモジュールと前記スタンバイサーバのハイパーバイザベースのフォールトトレランスモジュールを利用して前記スタンバイサーバに二重化される。
本発明のまた他の実施形態によるサーバ二重化システムは、ハイパーバイザベースのフォールトトレランスモジュールを備える第1ハイパーバイザと前記第1ハイパーバイザ上に生成されたファイルシステム仮想マシンを含むプライマリファイルサーバと、ハイパーバイザベースのフォールトトレランスモジュールを備える第2ハイパーバイザと前記第2ハイパーバイザ上に生成されたユーザ仮想マシンを含むプライマリサービスサーバと、前記第1ハイパーバイザに備えられたフォールトトレランスモジュールとデータを送受信して前記プライマリファイルサーバを二重化するハイパーバイザベースのフォールトトレランスモジュールを備える第3ハイパーバイザを含むスタンバイファイルサーバと、前記第2ハイパーバイザに備えられたフォールトトレランスモジュールとデータを送受信して前記プライマリサービスサーバを二重化するハイパーバイザベースのフォールトトレランスモジュールを備える第4ハイパーバイザを含むスタンバイサービスサーバを含むことができる。このとき、前記ファイルシステム仮想マシンは、前記第2ハイパーバイザ上に生成されたユーザ仮想マシンがアウトソーシングするファイルシステムを提供し、前記ファイルシステムと連携して使用されるバッファキャッシュを前記第1ファイルシステム仮想マシンに割当てられた仮想メモリ上に配置する。前記ファイルシステム仮想マシンは、前記第1ハイパーバイザのフォールトトレランスモジュールと前記第3ハイパーバイザのフォールトトレランスモジュールを利用して前記スタンバイファイルサーバに二重化される。前記ユーザ仮想マシンは、前記第2ハイパーバイザのフォールトトレランスモジュールと前記第4ハイパーバイザのフォールトトレランスモジュールを利用して前記スタンバイサービスサーバに二重化される。
前述のような本発明によれば、ハイパーバイザ上に一つ以上の仮想マシンが生成されたサーバを二重化することにおいて、仮想マシンのファイル入出力コールの呼び出しの際、その応答速度を速める効果がある。
また、ハイパーバイザ上の資源中、最も応答速度(性能)が低いディスク作業をファイルシステム仮想マシンで統合管理することができる。すなわち、ハイパーバイザ上の全ての仮想マシンのディスクI/O作業をスケジューリングし、ボトルネック現象を除去することによって全体仮想マシンの性能を向上させる効果がある。
また、ファイルシステム仮想マシンを他の物理サーバに分離して構成する場合、ディスク性能が良い物理サーバにはファイルシステム仮想マシンを構築し、CPUおよびメモリの性能が良い物理サーバにはユーザ仮想マシンを構築して性能向上だけではなく、特性に合う製品を選択することによってコストの面でメリットが得られる効果がある。
また、一つの物理サーバに複数台の仮想マシンでフォールトトレランスソリューションを使用する環境でそれぞれの仮想マシンに互いに異なるファイルシステムを利用しながらもI/O性能を向上させる効果がある。
また、既存のハイパーバイザおよびフォールトトレランスソリューションをベースにし、大きく構成を変更しなくても本発明を実現できる効果がある。
また、低価のRAMを利用してバッファキャッシュを実現できる効果がある。
従来技術によるハイパーバイザベースのフォールトトレランスサーバ二重化システムの構成図である。 図1に図示するハイパーバイザベースのフォールトトレランスサーバ二重化システムでデータ書き込み処理の信号流れ図である。 本発明の一実施形態による仮想マシン提供システムのブロック構成図である。 図3に図示する仮想マシン提供システムでデータ書き込み処理動作を示す概念図である。 図3に図示するファイルシステム仮想マシンのブロック構成図である。 図3に図示するファイルシステム仮想マシンが二つの仮想マシンにファイルシステムを提供することを示す概念図である。 図3に図示するファイルシステム仮想マシンが二つの仮想マシンに互いに異なるファイルシステムを提供することを示す概念図である。 本発明の一実施形態によるハイパーバイザベースのサーバ二重化システムのブロック構成図である。 図8に図示するハイパーバイザベースのサーバ二重化システムでデータ書き込み処理の信号流れ図である。 本発明の他の実施形態によるハイパーバイザベースのサーバ二重化システムのブロック構成図である。 図10に図示するハイパーバイザベースのサーバ二重化システムのリカバリ(recovery)動作を説明するための概念図である。 本発明のまた他の実施形態によるハイパーバイザベースのサーバ二重化システムのブロック構成図である。 本発明の一実施形態によるハイパーバイザベースのサーバ二重化方法のフローチャートである。 本発明の一実施形態によるハイパーバイザベースのサーバ二重化方法のフローチャートである。
以下、添付する図面を参照して本発明の好ましい実施形態について詳細に説明する。本発明の利点及び特徴、これらを達成する方法は、添付する図面と共に詳細に後述する実施例を参照すると明確になるであろう。しかし、本発明は、以下で開示する実施例に限定されるものではなく、互いに異なる多様な形態で実現されるものであり、本実施例は、単に本発明の開示を完全にし、本発明が属する技術分野で通常の知識を有する者に発明の範疇を完全に知らせるために提供されるものであり、本発明は、請求項の範囲によってのみ定義される。明細書全体にかけて、同一参照符号は同一構成要素を指称する。
他に定義されなければ、本明細書で使用されるすべての用語(技術及び科学的用語を含む)は、本発明が属する技術分野で通常の知識を有する者に共通に理解できる意味で使用される。また一般的に使用される辞書に定義されている用語は、特別に定義して明らかにしない限り、理想的にまたは過度に解釈されない。
本明細書で使用された用語は、実施例について説明するためであり、本発明を制限しようとするものではない。本明細書で、単数型は特別に言及しない限り複数型も含む。明細書で使用される「含む(comprises及びcomprising)」は言及された構成要素の他、一つ以上の他の構成要素の存在または追加を排除しない。
以下、本発明の実施形態によって本発明について説明する。このとき、フローチャートの各ブロックとフローチャートの組み合わせは、コンピュータプログラムインストラクションにより実行可能なのが理解できるであろう。これらコンピュータプログラムインストラクションは、汎用コンピュータ、特殊用コンピュータまたはその他のプログラマブルデータプロセッシング装備のプロセッサに搭載されうるので、コンピュータまたはその他のプログラマブルデータプロセッシング装備のプロセッサを通じて実行されるそのインストラクションがフローチャートのブロックで説明された機能を行う手段を生成するように機構を作ることができる。これらコンピュータプログラムインストラクションは、特定方式で機能を具現化するためにコンピュータまたはその他のプログラマブルデータプロセッシング装備を指向できるコンピュータが利用可能なまたはコンピュータが判読可能なメモリに保存されることも可能である。したがって、そのコンピュータ利用可能またはコンピュータ判読可能メモリに保存されたインストラクションは、フローチャートのブロックで説明された機能を行うインストラクション手段を内包する製造品目によって生産されてもよい。コンピュータプログラムインストラクションは、コンピュータまたはその他のプログラマブルデータプロセッシング装備上に搭載することも可能なので、コンピュータまたはその他のプログラマブルデータプロセッシング装備上で一連の動作段階が実行されてコンピュータで実行されるプロセスを生成し、フローチャートのブロックで説明された機能を実行してもよい。
本明細書で使用される「部」または「モジュール」という用語はソフトウェアまたはFPGAまたはASICのようなハードウェアの構成要素を意味し、「部」または「モジュール」はある役割を果たす。しかし、「部」または「モジュール」はソフトウェアまたはハードウェアに限定される意味ではない。「部」または「モジュール」はアドレッシングできる格納媒体内で構成されてもよく、1つまたはそれ以上のプロセッサを実行させるようにも構成されてもよい。したがって、一例として「部」または「モジュール」はソフトウェア構成要素、オブジェクト指向ソフトウェア構成要素、クラス構成要素及びタスク構成要素などのように構成要素と、プロセス、関数、属性、プロシージャ、サブルーチン、プログラムコードのセグメント、ドライバ、ファームウェア、マイクロコード、回路、データ、データベース、データ構造、テーブル、アレイ、及び変数を含む。構成要素などと「部」または「モジュール」の中で提供される機能はさらに小さな類似構成要素及びモジュールに結合されてもよく、追加的な構成要素などと「部」または「モジュール」にさらに分離されてもよい。
本発明の一実施形態による仮想マシン提供システムについて、図3ないし7を参照して説明する。図3に図示するように本実施形態による仮想マシン提供システムは、一台のプライマリサーバ100形態で構成されてもよい。本実施形態による仮想マシン提供システムは、ファイルシステム仮想マシン(File System Virtual Machine、FS VM)140、ハイパーバイザ110、およびハードウェア130を含むことができる。ファイルシステム仮想マシン140およびハイパーバイザ110は、ハードウェア130上で実現されるソフトウェア構成要素であってもよい。
ファイルシステム仮想マシン140は、ハイパーバイザ110と連携して動作するシステム領域の仮想マシンである。ファイルシステム仮想マシン140は、ハイパーバイザ110を介してプライマリサーバ100のハードウェア130に含まれたリソース(131,132,133)として仮想リソース(111,112,113)の形態で提供される。ファイルシステム仮想マシン140は、ファイルシステムモジュール142を含む。ファイルシステムモジュール142は、仮想ストレージ装置111と連携して動作する。ファイルシステムモジュール142は、仮想メモリ112内に配置されたバッファキャッシュ141をファイルシステムモジュール142と連携して使用する。
ファイルシステムモジュール142は、バッファキャッシュ141をライトバックキャッシュ(write−back cache)の形態で運用することができる。例えば、ファイルシステムモジュール142は、データ書き込みコールが呼び出された場合、書き込み対象のデータを直接にストレージ装置131に物理的に格納するように要請するのではなく、書き込み対象のデータをバッファキャッシュ141にロードし、書き込み対象のデータをリターンすることができる。したがって、ファイルシステムモジュール142を使用すると、データ書き込み処理にかかる時間を短縮することができる。
バッファキャッシュ141にロードされた書き込み対象のデータは、バッファキャッシュ141のフラッシング(flushing)する時点に仮想ストレージ装置111に記録されるとよい。ハイパーバイザ110は、仮想ストレージ装置111に記録されたデータをストレージ装置131に物理的に記録する。
ユーザ仮想マシン(USER VM)120も、ハイパーバイザ110上に生成される仮想マシンである。ユーザ仮想マシン120は、ユーザの要請またはその他必要に応じて生成される仮想マシンであり、システム領域の仮想マシンのファイルシステム仮想マシン140とは異なる。例えば、プライマリサーバ100は、外部制御装置などの制御により、ユーザ仮想マシン120をハイパーバイザ110上に生成することができる。ユーザ仮想マシン120は、ハイパーバイザ110を介して、プライマリサーバ100のハードウェア130リソースのうち少なくとも一部の割り当てを受けることができる。
ユーザ仮想マシン120で実行されるユーザアプリケーションは、ユーザ仮想マシン120に割当てられた仮想リソースを利用して実行される。
本実施形態によれば、ハイパーバイザ110上に生成されるユーザ仮想マシン120は、ファイルシステム仮想マシン140に備えられたファイルシステムモジュール142をアウトソーシング(outsourcing)して使用する。例えば、ユーザ仮想マシン120は、ファイルシステム仮想マシン140に備えられたファイルシステムモジュール142をネットワークドライブなどの形態でマウント(mount)して使用することができる。
一方、ユーザ仮想マシン120はファイルシステム仮想マシン140に備えられたファイルシステムモジュール142を他のユーザ仮想マシン120と共有するとも解釈できることから、ユーザ仮想マシン120がファイルシステム仮想マシン140のファイルシステムを共有すると見ることもできる。
ファイルシステムモジュール142はバッファキャッシュ141を利用して迅速なデータ書き込み機能を提供するため、本実施形態は、生成されるユーザ仮想マシン120がファイルシステムモジュール142を使用するように強制することによって、データ書き込み速度を増加させることができる効果がある。
図4は、ファイルシステムモジュール142をアウトソーシングするユーザ仮想マシン120で実行されるユーザアプリケーション122がデータライト関数を呼び出す場合、関数がリターンされるときまでの流れを示す。
先に、ユーザアプリケーション122がデータライト関数を呼び出す場合、ファイルシステム仮想マシン140のファイルシステムモジュール142から提供する低レベルの書き込みコール(write call)が呼び出される。ファイルシステムモジュール142は書き込み対象のデータをバッファキャッシュ141にロードするだけであり、直ちに低レベルの書き込みコールをリターンする。バッファキャッシュ141は仮想メモリ112上に位置するため、バッファキャッシュ141へのローティングはメモリにロードする作業を意味する。したがって、バッファキャッシュ141に高速でデータのローティングを行うことができる。結果的に、ファイルシステムモジュール142を利用してデータを書き込むことは、ユーザ仮想マシン120がハイパーバイザ110を介して直接にデータを書き込むことに比べ、高速で行われる。
一実施形態によれば、ハイパーバイザ110上に生成されるユーザ仮想マシン120は、使用拡張性のためにファイルシステム仮想マシン140に備えられたファイルシステムモジュール142以外に別途のファイルシステムを実現して使用することもできる。
バッファキャッシュ141は、一般的な用途のキャッシング機能も果たすため、読み込まれた(read)ことがあるデータが再び読み込まれる場合、読み込み速度も増加させる効果がある。したがって、本実施形態による仮想マシン提供システム100は、ユーザ仮想マシン120のデータ入出力をファイルシステム仮想マシン140のファイルシステムモジュール142を介して一括処理することによって速度を増加させることができる効果がある。
以下、図5を参照して、ファイルシステム仮想マシン140の構成についてより詳細に説明する。
先に、ファイルシステム仮想マシン140もハイパーバイザ110上で動作する仮想マシンであるため、ファイルシステム仮想マシン140はハイパーバイザ110とのインターフェースのためのハイパーバイザインターフェース144を含む。ファイルシステム仮想マシン140はハイパーバイザインターフェース144を介してファイルシステム仮想マシン140に割当てられた仮想リソースを使用することができる。
前述したように、ファイルシステム仮想マシン140はファイルシステムモジュール142を含む。ファイルシステムモジュール142は、ファイルシステム仮想マシン140に割当てられた仮想CPUで実行されるソフトウェア構成要素であるとよい。ファイルシステムモジュール142はファイルシステム仮想マシン140に割当てられた仮想メモリ112に位置したバッファキャッシュ141と連携して動作する。
ファイルシステム仮想マシン140はバッファキャッシュマネージャ143をさらに含むことができる。バッファキャッシュマネージャ143も、ファイルシステム仮想マシン140に割当てられた仮想CPUで実行されるソフトウェア構成要素であってもよい。バッファキャッシュマネージャ143は、バッファキャッシュのフラッシングを制御することができる。例えば、バッファキャッシュマネージャ143はハイパーバイザインターフェース144からプライマリサーバ140全体の入出力動作の負荷に対するデータの提供を受け、その負荷量に基づいてフラッシングの実行可否を制御することができる。バッファキャッシュマネージャ143がバッファキャッシュのデータローティング量をさらに考慮してフラッシングの実行可否を制御することはもちろんである。
ファイルシステム仮想マシン140は、二つ以上のユーザ仮想マシン(1200,1210)にそれぞれのファイルシステムを提供することができる。
ユーザ仮想マシン(1200,1210)は各々専用ファイルシステムを持たなければならない。このような要求を満たすため、ファイルシステム仮想マシン140は、ハイパーバイザ110を介して提供された仮想ストレージ111を複数の仮想ボリューム(volume)に分割し、各仮想ボリュームにマウントされたファイルシステムをそれぞれのユーザ仮想マシン(1200,1210)に提供することができる。
図6に図示するように、ユーザ仮想マシンA1200は、仮想ボリュームA1110にマウントされたファイルシステム1420をアウトソーシングし、ユーザ仮想マシンB1210は仮想ボリュームB1111にマウントされたファイルシステム1421をアウトソーシングすることができる。
図6に図示するように、仮想ボリュームA1110および仮想ボリュームB1111は互いに重ならない格納領域を有する。すなわち、ファイルシステム仮想マシン140はユーザ仮想マシンA1200およびユーザ仮想マシンB1210に互いにデータ入出力の影響を受けない独立的な仮想ストレージボリュームを提供する。
図6には2個のユーザ仮想マシンのみを図示するが、実施形態により一つ以上のユーザ仮想マシンがさらに生成されてもよく、ユーザ仮想マシンが新たに生成される度に残余仮想ストレージにボリュームが割り当てられ、割当てられたボリューム上に新規ファイルシステムがマウントされ、新たに生成されたユーザ仮想マシンにアウトソーシングの形態で提供されてもよい。
一方、本実施形態によるファイルシステム仮想マシン140は、互いに異なる種類のファイルシステムを提供することもできる。図7に図示するように、ユーザ仮想マシンA1200は、仮想ボリュームA1110上にマウントされたファイルシステムXをアウトソーシングし、ユーザ仮想マシンB1210は仮想ボリュームB1111上にマウントされたファイルシステムYをアウトソーシングすることができる。例えば、ファイルシステム仮想マシン140はFAT32,NTFS、ext2,raiserFS、ext3などの公知されたファイルシステムのうち一つ以上を使用することができる。
以下、本発明の他の実施形態によるハイパーバイザベースのサーバ二重化システムについて図8ないし9を参照して説明する。
図8に図示するように、本実施形態によるハイパーバイザベースのサーバ二重化システムは、プライマリサーバ100およびスタンバイサーバ200を含み構成されるとよい。スタンバイサーバ200は、プライマリサーバ100に障害が発生しても安全な環境で動作しなければならないため、他のラック(Rack)に設置されるか、または他のサーバの運用場所に位置する方が好ましい。
図8に図示するプライマリサーバ100は、図3ないし7を参照して説明したプライマリサーバ100に基づく構成であるため、以下で説明するような追加構成を有する。すなわち、本実施形態によるハイパーバイザベースのサーバ二重化システムに含まれたプライマリサーバ100は、図3ないし7を参照して説明したプライマリサーバ100の構成および動作をそのまま実行するが、これに加えて二重化に関する動作を実行する。
先ず、追加構成は、ハイパーバイザ110がフォールトトレランスモジュール114をさらに含む。プライマリサーバ100のフォールトトレランスモジュール114はスタンバイサーバ200のフォールトトレランスモジュール214とプライマリサーバ100およびスタンバイサーバ200それぞれのネットワークインターネットカード(134,234)を介して連動してプライマリサーバ100の仮想リソース(111,112,113)がスタンバイサーバの仮想リソース(211,212,213)に二重化されるようにする。
次に、バッファキャッシュマネージャ143が追加機能を実行する。バッファキャッシュマネージャ143は、バッファキャッシュ141のフラッシュに関する制御の他にも、バッファキャッシュ141にロードされたデータにアップデートが発生した場合、ハイパーバイザインターフェース144および仮想マシンインターフェース115を介してプライマリサーバ100のフォールトトレランスモジュール114にアップデートを要請する機能を追加して実行する。
図9を参照して、本実施形態によるハイパーバイザベースのサーバ二重化システムがプライマリサーバ100のユーザ仮想マシン120で実行されるユーザアプリケーション122が要請したデータ書き込み動作を処理する。以下ではその手順について説明する。
先に、ユーザアプリケーション122が呼び出したデータライト関数はファイルシステム仮想マシン140に転送され、ファイルシステムモジュール142はバッファキャッシュ141に書き込み対象のデータをロードする。ローティングは、バッファキャッシュ141領域として指定されたメモリ領域に書き込み対象のデータをロード(load)することであるとよい。バッファキャッシュマネージャ143はバッファキャッシュ141をモニタリングしてローティングを感知するか、またはファイルシステムモジュール142からローティングの通知を受けることができる。
バッファキャッシュマネージャ143は、ローティングを感知するか、または通知を受けると、ハイパーバイザインターフェース144および仮想マシンインターフェース115を介してプライマリサーバ100のフォールトトレランスモジュール114にロードされた書き込み対象のデータのアップデートを要請することができる。
要請を受けたプライマリサーバ100のフォールトトレランスモジュール114は、スタンバイサーバ200のフォールトトレランスモジュール214に同期化を要請し、スタンバイサーバ200のフォールトトレランスモジュールは仮想メモリ112のバッファキャッシュ141領域に含まれたデータのアップデート分を反映させる方式によりプライマリサーバ100のバッファキャッシュ141にロードされたデータをスタンバイサーバ200のバッファキャッシュ241に二重化する。
二重化が完了すると、スタンバイサーバ200のフォールトトレランスモジュール214、プライマリサーバ100のフォールトトレランスモジュール114、プライマリサーバ100のファイルシステムモジュール142を経てプライマリサーバ100のユーザ仮想マシン120で実行されるユーザアプリケーション122に再びコントロールが返還される。
本実施形態によれば、プライマリサーバ100およびスタンバイサーバ200で二回だけバッファキャッシュにデータをロードすれば良いため、データ書き込みを迅速に実行できる効果がある。また、プライマリサーバ100のバッファキャッシュ141に書き込み対象のデータがロードされ次第、スタンバイサーバ200のバッファキャッシュ241にも書き込み対象のデータがロードされ、バッファキャッシュ(141,241)にロードされた書き込み対象のデータはバッファキャッシュマネージャ(143,243)が適切な時点にストレージ装置(131,231)に物理的な書き込みをするため、プライマリサーバ100のストレージ装置131に格納されたデータが安全にスタンバイサーバ200のストレージ装置231にも格納される効果がある。
図10は、本発明の他の実施形態によるハイパーバイザベースのサーバ二重化システムのブロック構成図である。図10に図示するように、本実施形態によるハイパーバイザベースのサーバ二重化システムはプライマリサーバ100、第1スタンバイサーバ200および第2スタンバイサーバ300を含む。すなわち、図10に図示するシステムは、図9に図示するシステムに比べ、一つのスタンバイサーバ300をさらに含む。通常は、プライマリサーバ100のリソースは、第1スタンバイサーバ200に二重化され、また第2スタンバイサーバ300にも二重化される。第2スタンバイサーバ300は、プライマリサーバ100を二重化するか、または第1スタンバイサーバ200を二重化することができる。すなわち、第2スタンバイサーバ300は、プライマリサーバ100のハイパーバイザ110に備えられたフォールトトレランスモジュール114とデータを送受信してプライマリサーバ100を二重化するか、または第1スタンバイサーバ200のハイパーバイザ210に備えられたフォールトトレランスモジュール214とデータを送受信して第1スタンバイサーバ200を二重化するハイパーバイザベースのフォールトトレランスモジュールを備えるハイパーバイザを含むことができる。
図11は、図10に図示するハイパーバイザベースのサーバ二重化システムのリカバリ動作を説明するための概念図である。図11に図示するように、プライマリサーバ100に障害が発生した場合、第1スタンバイサーバ200はプライマリサーバ100を復元する動作を実行し、復元する間には第2スタンバイサーバ300がサービスを提供することによって、端末400はプライマリサーバ100に障害が発生しても速度低下やサービス中断が起こらず、サービスの提供を受けることができる。すなわち、プライマリサーバ100に障害が発生する場合、プライマリサーバ100のユーザ仮想マシン全体120を非活性化し、第2スタンバイサーバ300のユーザ仮想マシン320全体を活性化し、第1スタンバイサーバ200をプライマリサーバ100に二重化することができる。
図12は本発明のまた他の実施形態によるハイパーバイザベースのサーバ二重化システムのブロック構成図である。図12に図示するように、本実施形態によるハイパーバイザベースのサーバ二重化システムは、ユーザ仮想マシン120と分離されたサーバ装置にファイルシステム仮想マシン140を有することができる。ユーザ仮想マシン120と分離されたサーバ装置にファイルシステム仮想マシン140を有する場合、ユーザ仮想マシン120のリソース消費にファイルシステム仮想マシン140が影響を受けないことにより、データ入出力性能が低下することを防止できる。
本実施形態によるハイパーバイザベースのサーバ二重化システムは、プライマリサービスサーバ1000、プライマリファイルサーバ1500、スタンバイサービスサーバ2000およびスタンバイファイルサーバ2500を含むことができる。ユーザ仮想マシン120とファイルサーバ仮想マシン140が高速で通信を行い、データ入出力速度が低減されないように、プライマリサービスサーバ1000およびプライマリファイルサーバ1500は、所定のビット伝送速度を保障するケーブルを介して連結され、スタンバイサービスサーバ2000およびスタンバイファイルサーバ2500も、所定のビット伝送速度を保障するケーブルを介して連結された方が好ましい。
プライマリファイルサーバ1500は、ハイパーバイザベースのフォールトトレランスモジュールを備えるハイパーバイザ110と、ハイパーバイザ110上に生成されたファイルシステム仮想マシン140を含む。
プライマリサービスサーバ1000は、ハイパーバイザベースのフォールトトレランスモジュールを備えるハイパーバイザ110と、ハイパーバイザ110上に生成されたユーザ仮想マシン120を含む。
スタンバイファイルサーバ2500は、プライマリファイルサーバ1500のハイパーバイザ110に備えられたフォールトトレランスモジュールとデータを送受信し、プライマリファイルサーバ1500を二重化するハイパーバイザベースのフォールトトレランスモジュールを備えるハイパーバイザ110を含む。
スタンバイサービスサーバ2000は、プライマリサービスサーバ1000のハイパーバイザ110に備えられたフォールトトレランスモジュールとデータを送受信し、プライマリサービスサーバ1000を二重化するハイパーバイザベースのフォールトトレランスモジュールを備えるハイパーバイザ110を含む。
このとき、ファイルシステム仮想マシン140は、プライマリサービスサーバ1000のハイパーバイザ110上に生成されたユーザ仮想マシン120がアウトソーシングするファイルシステム142を提供し、ファイルシステム142と連携して使用されるバッファキャッシュをファイルシステム仮想マシン140に割当てられた仮想メモリ上に配置する。また、ファイルシステム仮想マシン140は、プライマリファイルシステムサーバ1500のハイパーバイザ110のフォールトトレランスモジュールとスタンバイファイルシステムサーバ2500のハイパーバイザ110のフォールトトレランスモジュールを利用してスタンバイファイルサーバ2500に二重化される。また、プライマリサービスサーバ1000のユーザ仮想マシン120は、プライマリサービスサーバ1000のハイパーバイザ110のフォールトトレランスモジュールとスタンバイサービスサーバ2000のハイパーバイザ110のフォールトトレランスモジュールを利用して、スタンバイサービスサーバ2000に二重化される。
図13ないし14は、本発明の一実施形態によるハイパーバイザベースのサーバ二重化方法のフローチャートである。
先に、図13は本実施形態によるハイパーバイザベースのサーバ二重化方法が実行されるように初期化をする方法を示すフローチャートである。
先に、ファイルシステムが使用するリソースに対する情報の入力を受ける(S102)。例えば、使用するCPUコアの数、メモリサイズ、ストレージサイズなどの情報を入力することができる。
次に、リソースに対する情報によってプライマリサーバのハイパーバイザ上にファイルシステム仮想マシンを生成する(S104)。一実施形態によれば、プライマリサーバのハイパーバイザ上に生成されたファイルシステム仮想マシンに対してリソースに対する情報によってリソースを割り当てる。
ファイルシステム仮想マシンに割当てられた仮想メモリの少なくとも一部をバッファキャッシュとして使用する(S106)。例えば、ファイルシステム仮想マシンに割当てられた仮想メモリの既に指定された住所領域をバッファキャッシュ領域として割り当てることができる。一実施形態によれば、ファイルシステム仮想マシンに割当てられた仮想メモリサイズ中、所定比率による格納領域をバッファキャッシュ領域として割り当てることができる。他の実施形態によれば、リソースに対する情報にバッファキャッシュ領域サイズに対する情報も含まれてもよく、バッファキャッシュ領域はリソースに対する情報によって割り当てることもできる。また他の実施形態によれば、バッファキャッシュのサイズは、プライマリサーバ上に生成されたユーザ仮想マシンの数に応じて自動調整されてもよい。また他の実施形態によれば、バッファキャッシュのサイズは、プライマリサーバ上に生成されたユーザ仮想マシン全体が呼び出すデータ書き込みコールの呼び出し量に応じて自動調整されてもよい。
次に、ファイルシステム仮想マシンにバッファキャッシュマネージャを実行する(S108)。前述したように、バッファキャッシュマネージャはバッファキャッシュにロードされたデータがスタンバイサーバに二重化されるようにハイパーバイザのフォールトトレランスモジュールに要請する。
次に、プライマリサーバのファイルシステム仮想マシンをスタンバイサーバに二重化する。ファイルシステム仮想マシンの二重化はプライマリサーバのフォールトトレランスモジュールおよびスタンバイサーバのフォールトトレランスモジュールを利用することができる。
次に、新規ユーザ仮想マシンの生成要請がある場合(S110)、新規ユーザ仮想マシンをプライマリサーバのハイパーバイザ上に生成する(S112)。
次に、ユーザ仮想マシンがファイルシステム仮想マシンのファイルシステムをアウトソーシングするように設定する(S114)。例えば、ユーザ仮想マシンにユーザ仮想マシンに割当てられた仮想ボリュームにマウントされたファイルシステム仮想マシンのファイルシステムを設置するか、またはユーザ仮想マシンにユーザ仮想マシンが提供するネットワークドライブを連結することができる。
次に、図14を参照してプライマリサーバのファイルシステム仮想マシンが提供するファイルシステムをアウトソーシングするプライマリサーバのユーザ仮想マシンがデータ書き込みを実行し、書き込み対象のデータが二重化されることについて説明する。
一実施形態によれば、プライマリサーバのファイルシステム仮想マシンのバッファキャッシュをプライマリサーバのハイパーバイザのフォールトトレランスモジュールおよびスタンバイサーバのハイパーバイザのフォールトトレランスモジュールを利用して第2ファイルシステム仮想マシンのバッファキャッシュに二重化することによって、書き込み対象のデータを二重化することができる。
一実施形態によれば、プライマリサーバに生成されたファイルシステム仮想マシンをスタンバイサーバに二重化することによっても、書き込み対象のデータを二重化することができる。
プライマリサーバのユーザ仮想マシンがデータ書き込みコールを呼び出す場合(S116)、ファイルシステム仮想マシンのファイルシステムモジュールにも低レベル書き込みコールが呼び出される。低レベル書き込みコールは書き込み対象のデータをファイルシステム仮想マシンのバッファキャッシュにロードする(S118)。
ローティングを感知したファイルシステム仮想マシンのバッファキャッシュマネージャはプライマリサーバのハイパーバイザにアップデートを要請し(S120)、プライマリサーバのハイパーバイザはスタンバイサーバのハイパーバイザに同期化を要請する(S122)。また、スタンバイサーバのハイパーバイザはスタンバイサーバのバッファキャッシュに書き込み対象のデータをロードする(S124)。スタンバイサーバのバッファキャッシュに書き込み対象のデータのローティングが完了次第、同期化要請およびプライマリサーバのファイルシステム上の低レベルライト関数がリターン(S126)することにより、プライマリサーバのユーザ仮想マシンはコントロールを取り戻すようになり(S128)、次の動作を実行する。
ファイルシステム仮想マシンは、バッファキャッシュへの書き込み対象のデータをロードした後、プライマリサーバのI/Oの発生量およびバッファキャッシュの使用量のうち少なくとも一つを基準にして、バッファキャッシュにロードされたデータがフラッシュするようにプライマリサーバのハイパーバイザに要請することができる。
図13ないし図14には図示していないが、ファイルシステム仮想マシンはバッファキャッシュにロードされた書き込み対象のデータがストレージ装置にフラッシュされ、物理的に書き込みされる前に失われる場合、これを感知してサービスがスタンバイサーバを介して提供されるようにしてもよい。例えば、プライマリサーバのバッファキャッシュにロードされたデータがストレージ装置に格納される前に失われた場合、プライマリサーバのハイパーバイザ上に生成されたユーザ仮想マシンの状態を非活性化し、スタンバイサーバのハイパーバイザ上に生成されたユーザ仮想マシンの状態を活性化することができる。
本発明は、またコンピュータで判読可能な記録媒体にコンピュータが判読可能なコードとして実現することが可能である。コンピュータが判読可能な記録媒体はコンピュータシステムによって判読可能なデータが格納される全ての種類の記録装置を含む。コンピュータが判読可能な記録媒体の例としては、ROM、RAM、CD−ROM、磁気テープ、フロッピー(登録商標)ディスク、光データ記憶装置などがあり、またキャリアウェーブ(例えば、インターネット介して伝送すること)の形態で実現されることも含む。またコンピュータが判読可能な記録媒体はネットワークで接続されたコンピュータシステムに分散され、分散方式でコンピュータが判読可能なコードが格納され、実行される。
本発明のまた他の実施形態によるハイパーバイザベースの二重化方法は、スタンバイサーバのファイルシステム仮想マシンをプライマリサーバのファイルシステム仮想マシンを二重化することによって生成することではなく、スタンバイサーバのファイルシステム仮想マシンも初期化の際に生成することを含んでもよい。本実施形態はファイルシステム仮想マシンの二重化の際に発生したエラーによって、スタンバイサーバにファイルシステム仮想マシンが正しく生成されないことを防止して、二重化を安全に設定することができる効果がある。以下、本実施形態による二重化方法について説明する。
先に、プライマリサーバのハイパーバイザ上に生成されるユーザ仮想マシンがアウトソーシングするファイルシステムを提供する第1ファイルシステム仮想マシンを生成する。
次に、スタンバイサーバのハイパーバイザ上に二重化されるユーザ仮想マシンがアウトソーシングするファイルシステムを提供する第2ファイルシステム仮想マシンを生成する。
次に、第1ファイルシステム仮想マシンがファイルシステムと連携して管理するバッファキャッシュを第2ファイルシステム仮想マシンがファイルシステムと連携して管理するバッファキャッシュに二重化する。前述したように、プライマリサーバのハイパーバイザおよびスタンバイサーバのハイパーバイザはハイパーバイザベースのフォールトトレランスモジュールを備えるものであり、二重化することは、第1ファイルシステム仮想マシンのバッファキャッシュをプライマリサーバのハイパーバイザのフォールトトレランスモジュールおよびスタンバイサーバのハイパーバイザのフォールトトレランスモジュールを利用して第2ファイルシステム仮想マシンに二重化することを意味する。
バッファキャッシュは第1ファイルシステム仮想マシンと第2ファイルシステム仮想マシンがそれぞれの仮想メモリ上に配置されるものであるとよい。このとき、プライマリサーバのハイパーバイザおよびスタンバイサーバのハイパーバイザはハイパーバイザベースのフォールトトレランスモジュールを備えるものであり、二重化することは、プライマリサーバのハイパーバイザのフォールトトレランスモジュールが第1ファイルシステム仮想マシンの仮想メモリをスタンバイサーバのハイパーバイザのフォールトトレランスモジュールを利用して第2ファイルシステム仮想マシンの仮想メモリに二重化することによってバッファキャッシュを二重化することを意味する。
また、本実施形態による二重化方法は、第1ファイルシステム仮想マシンのバッファキャッシュにロードされたデータがフラッシュする前に失われたことを感知した場合、プライマリサーバのハイパーバイザ上に生成されたユーザ仮想マシンの状態を非活性化し、スタンバイサーバのハイパーバイザ上に生成されたユーザ仮想マシンの状態を活性化するステップをさらに含み得る。
以上添付する図面を参照して、本発明の実施形態について説明したが、本発明が属する技術分野で通常の知識を有する者は、本発明がその技術的思想や必須の特徴を変更しない範囲で他の具体的な形態で実施できることを理解することができる。したがって、上記実施形態は全ての面で例示的なものであり、限定的なものではないと理解しなければならない。
プライマリサーバ 100
ユーザ仮想マシン 120
ファイルシステム仮想マシン 140
ハイパーバイザ 110
プライマリサーバハードウェア 130

Claims (16)

  1. プライマリサーバのハイパーバイザ上に第1ファイルシステム仮想マシンを生成させ、前記第1ファイルシステム仮想マシンに所定のファイルシステムをインストールさせ、前記第1ファイルシステム仮想マシンに割当てられた仮想メモリに前記ファイルシステムに連携して動作するバッファキャッシュを配置させる処理を前記プライマリサーバに実行させ、
    ユーザ仮想マシンを前記ハイパーバイザ上に生成させ、前記第1ファイルシステム仮想マシンの前記ファイルシステムを前記ユーザ仮想マシンが共有して使用するように設定させる処理を前記プライマリサーバに実行させ
    前記バッファキャッシュをスタンバイサーバのハイパーバイザ上に生成された第2ファイルシステム仮想マシンのバッファキャッシュに二重化することを前記プライマリサーバに実行させる、コンピュータプログラムが記録されたコンピュータで判読可能な記録媒体。
  2. 前記第1ファイルシステム仮想マシンが前記バッファキャッシュをライトバック(write−back)方式により管理することを前記プライマリサーバにさらに実行させる、請求項1に記載のコンピュータプログラムが記録されたコンピュータで判読可能な記録媒体。
  3. 前記第2ファイルシステム仮想マシンは、
    前記第1ファイルシステム仮想マシンを前記スタンバイサーバに二重化することによって生成されることを特徴とする、請求項1に記載のコンピュータプログラムが記録されたコンピュータで判読可能な記録媒体。
  4. 前記バッファキャッシュを配置させることを前記プライマリサーバに実行させる際に、
    前記ファイルシステムに割り当てられるリソースに対する情報の入力を受け、
    前記リソースに対する情報によって前記第1ファイルシステム仮想マシンにリソースを割り当てることを前記プライマリサーバにさらに実行させる、請求項1に記載のコンピュータプログラムが記録されたコンピュータで判読可能な記録媒体。
  5. 前記バッファキャッシュを配置させることを前記プライマリサーバに実行させる際に
    前記リソースに対する情報によって前記プライマリサーバの前記第1ファイルシステム仮想マシンに割当てられた仮想メモリのサイズ中、所定比率による格納領域を前記バッファキャッシュに割り当てることを前記プライマリサーバにさらに実行させる、請求項4に記載のコンピュータプログラムが記録されたコンピュータで判読可能な記録媒体。
  6. 前記プライマリサーバのハイパーバイザおよび前記スタンバイサーバのハイパーバイザは、各々ハイパーバイザベースのフォールトトレランスモジュールを備えるものであり、
    前記二重化することを前記プライマリサーバに実行させる際に、前記第1ファイルシステム仮想マシンのバッファキャッシュを前記第2ファイルシステム仮想マシンのバッファキャッシュに二重化することを前記プライマリサーバのハイパーバイザのフォールトトレランスモジュールに実行させる、請求項1に記載のコンピュータプログラムが記録されたコンピュータで判読可能な記録媒体。
  7. 前記二重化することを前記プライマリサーバに実行させる際に、
    前記ユーザ仮想マシンからデータ書き込みコールが呼び出された場合、書き込み対象のデータを前記第1ファイルシステム仮想マシンのバッファキャッシュにロードさせる処理を前記プライマリサーバに実行させ
    前記書き込み対象のデータを前記プライマリサーバのハイパーバイザのフォールトトレランスモジュールおよび前記スタンバイサーバのハイパーバイザのフォールトトレランスモジュールを経由し、前記第2ファイルシステム仮想マシンのバッファキャッシュにロードする処理を前記プライマリサーバ及び前記スタンバイサーバに実行させ
    前記第2ファイルシステム仮想マシンのバッファキャッシュにロードが完了した場合、
    前記データ書き込みコールをリターンする処理を前記スタンバイサーバに実行させる、請求項6に記載のコンピュータプログラムが記録されたコンピュータで判読可能な記録媒体。
  8. 前記二重化することを前記プライマリサーバに実行させる際に、前記プライマリサーバに生成された前記ファイルシステム仮想マシンを前記スタンバイサーバに二重化することを前記スタンバイサーバに実行させる、請求項1に記載のコンピュータプログラムが記録されたコンピュータで判読可能な記録媒体。
  9. 前記プライマリサーバ上に生成されたユーザ仮想マシンの数に応じて前記バッファキャッシュのサイズを調整することを前記プライマリサーバにさらに実行させる、請求項1に記載のコンピュータプログラムが記録されたコンピュータで判読可能な記録媒体。
  10. 前記プライマリサーバ上に生成されたユーザ仮想マシン全体が呼び出すデータ書き込みコールの呼び出し量に応じて前記バッファキャッシュのサイズを調整することを前記プライマリサーバにさらに実行させる、請求項1に記載のコンピュータプログラムが記録されたコンピュータで判読可能な記録媒体。
  11. 前記第1ファイルシステム仮想マシンが前記プライマリサーバのI/O発生量およびバッファキャッシュ使用量のうち少なくとも一つを基準として前記バッファキャッシュにロードされたデータがフラッシュするように前記プライマリサーバのハイパーバイザに要請することを前記プライマリサーバにさらに実行させる、請求項1に記載のコンピュータプログラムが記録されたコンピュータで判読可能な記録媒体。
  12. プライマリサーバを前記プライマリサーバのフォールトトレランスパートナーであるスタンバイサーバに二重化する方法において、
    前記プライマリサーバのハイパーバイザ上に生成されるユーザ仮想マシンがアウトソーシングするファイルシステムを提供する第1ファイルシステム仮想マシンを、前記プライマリサーバが生成するステップと、
    前記スタンバイサーバのハイパーバイザ上に二重化される前記ユーザ仮想マシンがアウトソーシングする前記ファイルシステムを提供する第2ファイルシステム仮想マシンを、前記スタンバイサーバが生成するステップ、および
    前記第1ファイルシステム仮想マシンが前記ファイルシステムと連携して管理するバッファキャッシュ(buffer cache)を前記第2ファイルシステム仮想マシンが前記ファイルシステムと連携して管理するバッファキャッシュに二重化することを、前記プライマリサーバが実行するステップを含むハイパーバイザベースの二重化方法。
  13. 前記プライマリサーバのハイパーバイザおよび前記スタンバイサーバのハイパーバイザはハイパーバイザベースのフォールトトレランスモジュールを備えるものであり、
    前記二重化することを前記プライマリサーバが実行するステップは、前記プライマリサーバのハイパーバイザのフォールトトレランスモジュールが前記第1ファイルシステム仮想マシンのバッファキャッシュを前記第2ファイルシステム仮想マシンに二重化するステップを含む、請求項12に記載のハイパーバイザベースの二重化方法。
  14. 前記第1ファイルシステム仮想マシンと第2ファイルシステム仮想マシンがそれぞれの仮想メモリ上に前記バッファキャッシュを配置するステップをさらに含む請求項12に記載のハイパーバイザベースの二重化方法。
  15. 前記プライマリサーバのハイパーバイザおよび前記スタンバイサーバのハイパーバイザはハイパーバイザベースのフォールトトレランスモジュールを備えるものであり、
    前記二重化することを前記プライマリサーバが実行するステップは、
    前記プライマリサーバのハイパーバイザのフォールトトレランスモジュールが前記第1ファイルシステム仮想マシンの仮想メモリを前記スタンバイサーバのハイパーバイザのフォールトトレランスモジュールを利用して前記第2ファイルシステム仮想マシンの仮想メモリに二重化することによって前記バッファキャッシュを二重化するステップを含む請求項14に記載のハイパーバイザベースの二重化方法。
  16. 前記第1ファイルシステム仮想マシンのバッファキャッシュにロードされたデータがフラッシュする前に失われたことを前記プライマリサーバが感知するステップと、
    前記プライマリサーバのハイパーバイザ上に生成されたユーザ仮想マシンの状態を前記プライマリサーバが非活性化し、前記スタンバイサーバのハイパーバイザ上に生成されたユーザ仮想マシンの状態を前記スタンバイサーバが活性化するステップをさらに含む請求項14に記載のハイパーバイザベースの二重化方法。
JP2013013296A 2012-10-31 2013-01-28 ハイパーバイザベースのサーバ二重化システム、その方法およびサーバ二重化コンピュータプログラムが記録された記録媒体 Expired - Fee Related JP5600361B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020120122393A KR101471879B1 (ko) 2012-10-31 2012-10-31 하이퍼바이저 기반 서버 이중화 시스템, 그 방법 및 서버 이중화 컴퓨터 프로그램이 기록된 기록매체
KR10-2012-0122393 2012-10-31

Publications (2)

Publication Number Publication Date
JP2014093072A JP2014093072A (ja) 2014-05-19
JP5600361B2 true JP5600361B2 (ja) 2014-10-01

Family

ID=47740799

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013013296A Expired - Fee Related JP5600361B2 (ja) 2012-10-31 2013-01-28 ハイパーバイザベースのサーバ二重化システム、その方法およびサーバ二重化コンピュータプログラムが記録された記録媒体

Country Status (5)

Country Link
US (2) US8997098B2 (ja)
EP (1) EP2728478A1 (ja)
JP (1) JP5600361B2 (ja)
KR (1) KR101471879B1 (ja)
CN (1) CN103793258B (ja)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150317175A1 (en) * 2012-11-19 2015-11-05 Hitachi Systems, Ltd. Virtual machine synchronization system
US9842053B2 (en) * 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US9639384B2 (en) * 2013-08-20 2017-05-02 Vmware, Inc. Method and system for fast provisioning of virtual desktop
KR101558047B1 (ko) * 2013-09-09 2015-10-06 삼성에스디에스 주식회사 클러스터 시스템 및 클러스터 시스템에서 서비스 가용성을 제공하기 위한 방법
JP6198858B2 (ja) * 2014-02-17 2017-09-20 株式会社日立製作所 計算機、及び、ハイパバイザによる資源スケジューリング方法
EP3140734B1 (en) 2014-05-09 2020-04-08 Nutanix, Inc. Mechanism for providing external access to a secured networked virtualization environment
US10044795B2 (en) 2014-07-11 2018-08-07 Vmware Inc. Methods and apparatus for rack deployments for virtual computing environments
CN105511798B (zh) * 2014-09-24 2018-07-24 中国电信股份有限公司 虚拟机缓存资源管理方法和系统
US10635423B2 (en) 2015-06-30 2020-04-28 Vmware, Inc. Methods and apparatus for software lifecycle management of a virtual computing environment
US10474486B2 (en) * 2015-06-30 2019-11-12 Veritas Technologies Llc Data access accelerator
US10558480B2 (en) 2015-09-10 2020-02-11 Veritas Technologies Llc Optimizing access to production data
US10037276B1 (en) * 2015-11-04 2018-07-31 Veritas Technologies Llc Systems and methods for accelerating access to data by pre-warming the cache for virtual machines
US10831465B2 (en) 2016-02-12 2020-11-10 Nutanix, Inc. Virtualized file server distribution across clusters
US11218418B2 (en) 2016-05-20 2022-01-04 Nutanix, Inc. Scalable leadership election in a multi-processing computing environment
KR101727059B1 (ko) * 2016-08-17 2017-04-14 맹상영 복수개의 서버를 선택적으로 이용하는 클라우드 콘솔 제공 시스템 및 제공 방법
US10250473B2 (en) * 2016-11-29 2019-04-02 Red Hat Israel, Ltd. Recovery from a networking backend disconnect
US11568073B2 (en) 2016-12-02 2023-01-31 Nutanix, Inc. Handling permissions for virtualized file servers
US10728090B2 (en) * 2016-12-02 2020-07-28 Nutanix, Inc. Configuring network segmentation for a virtualization environment
US11562034B2 (en) 2016-12-02 2023-01-24 Nutanix, Inc. Transparent referrals for distributed file servers
US10824455B2 (en) 2016-12-02 2020-11-03 Nutanix, Inc. Virtualized server systems and methods including load balancing for virtualized file servers
US11294777B2 (en) 2016-12-05 2022-04-05 Nutanix, Inc. Disaster recovery for distributed file servers, including metadata fixers
US11281484B2 (en) 2016-12-06 2022-03-22 Nutanix, Inc. Virtualized server systems and methods including scaling of file system virtual machines
US11288239B2 (en) 2016-12-06 2022-03-29 Nutanix, Inc. Cloning virtualized file servers
US10613708B2 (en) * 2017-02-24 2020-04-07 Red Hat Israel, Ltd. Cloning a hypervisor
US10083091B1 (en) * 2017-03-22 2018-09-25 International Business Machines Corporation Memory resident storage recovery during computer system failure
CN107479992A (zh) * 2017-09-01 2017-12-15 郑州云海信息技术有限公司 一种业务处理方法及装置
KR102427323B1 (ko) * 2017-11-08 2022-08-01 삼성전자주식회사 반도체 메모리 모듈, 반도체 메모리 시스템, 그리고 반도체 메모리 모듈을 액세스하는 액세스 방법
US11086826B2 (en) 2018-04-30 2021-08-10 Nutanix, Inc. Virtualized server systems and methods including domain joining techniques
US11194680B2 (en) 2018-07-20 2021-12-07 Nutanix, Inc. Two node clusters recovery on a failure
US10901721B2 (en) 2018-09-20 2021-01-26 Vmware, Inc. Methods and apparatus for version aliasing mechanisms and cumulative upgrades for software lifecycle management
US11770447B2 (en) 2018-10-31 2023-09-26 Nutanix, Inc. Managing high-availability file servers
US11677624B2 (en) * 2019-04-12 2023-06-13 Red Hat, Inc. Configuration of a server in view of a number of clients connected to the server
US11768809B2 (en) 2020-05-08 2023-09-26 Nutanix, Inc. Managing incremental snapshots for fast leader node bring-up
US12131192B2 (en) 2021-03-18 2024-10-29 Nutanix, Inc. Scope-based distributed lock infrastructure for virtualized file server
US12117972B2 (en) 2021-08-19 2024-10-15 Nutanix, Inc. File server managers and systems for managing virtualized file servers
US20230066137A1 (en) 2021-08-19 2023-03-02 Nutanix, Inc. User interfaces for disaster recovery of distributed file servers

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4267421B2 (ja) * 2003-10-24 2009-05-27 株式会社日立製作所 リモートサイト及び/又はローカルサイトのストレージシステム及びリモートサイトストレージシステムのファイル参照方法
JP4227035B2 (ja) * 2004-02-03 2009-02-18 株式会社日立製作所 計算機システム、管理装置、ストレージ装置及びコンピュータ装置
US20070050767A1 (en) * 2005-08-31 2007-03-01 Grobman Steven L Method, apparatus and system for a virtual diskless client architecture
KR100825721B1 (ko) * 2005-12-08 2008-04-29 한국전자통신연구원 객체 기반 스토리지 시스템에서 사용자 파일 관리자 내의시간 기반 캐쉬 일관성 유지 시스템 및 방법
US8041987B2 (en) 2008-11-10 2011-10-18 International Business Machines Corporation Dynamic physical and virtual multipath I/O
US8352482B2 (en) * 2009-07-21 2013-01-08 Vmware, Inc. System and method for replicating disk images in a cloud computing based virtual machine file system
JP5124551B2 (ja) * 2009-09-30 2013-01-23 株式会社日立製作所 ボリューム割り当てを管理する計算機システム及びボリューム割り当て管理方法
CN102033755A (zh) 2009-09-30 2011-04-27 国际商业机器公司 用于运行虚拟机镜像的方法和系统
US9069596B2 (en) 2009-11-17 2015-06-30 International Business Machines Corporation Hypervisor file system
JP5427011B2 (ja) * 2009-12-17 2014-02-26 株式会社日立製作所 仮想ハードディスクの管理サーバおよび管理方法、管理プログラム
US8145945B2 (en) 2010-01-04 2012-03-27 Avaya Inc. Packet mirroring between primary and secondary virtualized software images for improved system failover performance
US8751738B2 (en) * 2010-02-08 2014-06-10 Microsoft Corporation Background migration of virtual storage
US9442748B2 (en) * 2010-03-17 2016-09-13 Zerto, Ltd. Multi-RPO data protection
US9411517B2 (en) * 2010-08-30 2016-08-09 Vmware, Inc. System software interfaces for space-optimized block devices
US9239765B2 (en) * 2010-08-31 2016-01-19 Avaya Inc. Application triggered state migration via hypervisor
CA2867302A1 (en) * 2012-03-14 2013-09-19 Convergent .Io Technologies Inc. Systems, methods and devices for management of virtual memory systems

Also Published As

Publication number Publication date
EP2728478A1 (en) 2014-05-07
US20140123138A1 (en) 2014-05-01
JP2014093072A (ja) 2014-05-19
US20150178119A1 (en) 2015-06-25
US9317320B2 (en) 2016-04-19
KR20140055451A (ko) 2014-05-09
KR101471879B1 (ko) 2014-12-11
CN103793258A (zh) 2014-05-14
US8997098B2 (en) 2015-03-31
CN103793258B (zh) 2017-05-03

Similar Documents

Publication Publication Date Title
JP5600361B2 (ja) ハイパーバイザベースのサーバ二重化システム、その方法およびサーバ二重化コンピュータプログラムが記録された記録媒体
JP6438104B2 (ja) クラスタメンバーシップ管理における分断耐性
US9671967B2 (en) Method and system for implementing a distributed operations log
US11144399B1 (en) Managing storage device errors during processing of inflight input/output requests
US10838829B2 (en) Method and apparatus for loading data from a mirror server and a non-transitory computer readable storage medium
US8122212B2 (en) Method and apparatus for logical volume management for virtual machine environment
US8086808B2 (en) Method and system for migration between physical and virtual systems
JP5254601B2 (ja) 資源回復するための方法、情報処理システムおよびコンピュータ・プログラム
WO2012009064A2 (en) Virtual machine aware replication method and system
US11422893B2 (en) Storage system spanning multiple failure domains
US10114754B1 (en) Techniques for space reservation in a storage environment
US10965616B2 (en) Nonstop computing fabric arrangements
CA3129984A1 (en) Method and system for accessing distributed block storage system in user mode
JP5966466B2 (ja) バックアップ制御方法、および情報処理装置
US8924442B2 (en) Method and system for implementing high availability storage on thinly provisioned arrays

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140513

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140724

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140815

R150 Certificate of patent or registration of utility model

Ref document number: 5600361

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees