JP2008234604A - クラスタシステム及びプログラム - Google Patents

クラスタシステム及びプログラム Download PDF

Info

Publication number
JP2008234604A
JP2008234604A JP2007077420A JP2007077420A JP2008234604A JP 2008234604 A JP2008234604 A JP 2008234604A JP 2007077420 A JP2007077420 A JP 2007077420A JP 2007077420 A JP2007077420 A JP 2007077420A JP 2008234604 A JP2008234604 A JP 2008234604A
Authority
JP
Japan
Prior art keywords
server machine
server
operation state
area
cluster
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.)
Granted
Application number
JP2007077420A
Other languages
English (en)
Other versions
JP4468395B2 (ja
Inventor
Koji Muramatsu
孝治 村松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Solutions Corp
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 Toshiba Corp, Toshiba Solutions Corp filed Critical Toshiba Corp
Priority to JP2007077420A priority Critical patent/JP4468395B2/ja
Publication of JP2008234604A publication Critical patent/JP2008234604A/ja
Application granted granted Critical
Publication of JP4468395B2 publication Critical patent/JP4468395B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)
  • Hardware Redundancy (AREA)

Abstract

【課題】リザーブ排他が可能であり、フェールオーバが発生した場合であっても、データ破損が発生せず、共有ディスク装置内のデータの整合を図るクラスタシステムを提供する。
【解決手段】共有ディスク装置30は、マスター領域30と、マスター領域へのアクセス権を管理する管理領域17とを備える。クラスタソフト12(#A)は、クラスタソフト12(#B)と定期的に通信し、クラスタソフト12(#B)の生存状態を確認し、自己が稼動系の場合には、サーバマシン10(#A)上でアプリケーションを動作させる。稼動系にあるクラスタソフト12(#B)が生存していないと判定された場合には、自己を待機系から稼動系に変更しサーバマシン10(#A)上でアプリケーションを動作させる。待機系から稼動系に変更された場合、フィルタドライバ21(#A)は、サーバマシン10(#A)にアクセス権が与えられるように管理領域17の内容を変更する。
【選択図】 図1

Description

本発明は、複数のサーバマシンと共有ディスク装置とから構成されるクラスタシステム及びプログラムに関し、特に、フェールオーバが発生した場合であっても、共有ディスク装置内のデータの整合を図ることが可能なクラスタシステム及びプログラムに関する。
例えば、非特許文献1で開示されているDNCWARE(登録商標)ClusterPerfect(登録商標)等に代表されるクラスタシステムでは、図12に示すように、稼動系のサーバマシン10(#A)と待機系のサーバマシン10(#B)とが設けられ、稼動系のサーバマシン10(#A)がアプリケーション11(#A)を実行し、(i)に示すように、実行結果であるデータを共有ディスク装置13に書き込む。その間、(ii)に示すように、稼動系のサーバマシン10(#A)のクラスタソフト12(#A)と待機系のサーバマシン10(#B)のクラスタソフト12(#B)とは、通信路14を経由して、ハートビートa(非特許文献2参照)と呼ばれる所定のパケット交換をし続け、互いの生存を通知し合う。
そして、待機系のサーバマシン10(#B)がハートビートaの断絶を検出した場合に、(iii)に示すように、待機系のサーバマシン10(#B)で同一のアプリケーション11(#B)を起動させることでアプリケーション処理を継続させる、所謂フェールオーバbが一般に行われている。
ハートビートaが断絶する理由としては主に以下がある。
(1)稼動系のサーバマシン10(#A)のダウン。
(2)通信路14の障害。
(3)稼動系のサーバマシン10(#A)におけるCPU高負荷等による一時的なスローダウンの発生。
上記(1)の場合であれば、単純に待機系のサーバマシン10(#B)にフェールオーバbすれば良いが、上記(2)及び(3)の場合には稼動系のサーバマシン10(#A)が処理を継続するため、フェールオーバbしてしまうと以下に示すような不都合が生じる。
すなわち、図12に示すように、複数台のサーバマシン10(#A,#B)が同一の共有ディスク装置13に接続された状態でクラスタ構成を組む場合、上記(2)及び(3)が原因のハートビートaの断絶によりフェールオーバbが行われると、図13に示すように、稼動系のサーバマシン10(#A)と待機系のサーバマシン10(#B)との両系が共有ディスク装置13内の同一のデータ領域15に書き込みを行う可能性があり、その場合、共有ディスク装置13内のデータの整合性が失われ、データが破壊されてしまう恐れがある。
このため、従来のクラスタシステムでも、この不都合に対する対策が幾つか施されている。以下、この対策を施した従来技術を2つ紹介する。
第1の従来技術は、上記(1)乃至(3)に対処するものであり、SCSI仕様として定義されているリザーブ排他機能が使用され、1つのLU(Logical Unit)につきI/O(readやwrite)を発行可能なサーバが1つに絞られている。つまり、図14の(i)に示すようにハートビートa切れが検出され、(ii)に示すように待機系のサーバマシン10(#B)にフェールオーバbする際、(iii)に示すように待機系のサーバマシン10(#B)が共有ディスク装置13内の対象LUをリザーブし、(iv)に示すように稼動系のサーバマシン10(#A)がそれ以上対象LUに書き込みを行うのを防いでから、アプリケーション11(#B)を起動し、(v)に示すように共有ディスク装置13への書き込みを行うようにしている。
第2の従来技術は、上記(1)及び(2)に対処するものであり、図15に示すように、QUORUM用領域17と呼ばれる特殊なLUを共有ディスク装置13内に設け、(iii)に示すように、クラスタを構成するサーバマシン10(#A,#B)からその時々の現在時刻を定期的に書き込むことで、(i)に示すハートビートa以外にサーバマシン10(#A,#B)の状態を監視する。
第2の従来技術によれば、通信路14の障害が理由で待機系のサーバマシン10(#B)がハートビートa断絶を確認した場合でも、待機系のサーバマシン10(#B)がQUORUM用領域17を参照する。QUORUM用領域17は、ディスクI/Oのパス経由のために、通信路14に障害があっても参照可能であるので、稼動系のサーバマシン10(#A)が現在時刻のwriteを継続していることを確認することができ、稼動系のサーバマシン10(#A)がダウンしていないことを知ることができる。
東芝レビュー Vol.54 No.12(1999)、18〜21ページ Solstice HA 1.3User’s Guide、 25−1〜25−5ページ、 1997年4月、 Sun microsystems
しかしながら、このような従来のクラスタシステムでは、以下のような問題がある。
まず、第1の従来技術の場合、図14の(iii)及び(iv)に示すようなリザーブ排他が可能な否かは、共有ディスク装置13や、そのマルチパスドライバ(図示せず)の実装に依存するという問題がある。そのため、新しい共有ディスク装置13やそのマルチパスドライバに対応するためには、毎回検証することが必要になる。また、共有ディスク装置13やそのマルチパスドライバによって、細かな制限事項が付きがちである。例えば、ある共有ディスク装置13では、ディスクI/Oの物理的なパスが多重化されている環境で片パス障害が起きると、リザーブが維持されない状態に陥ってしまい、排他できなくなってしまう。
また、第2の従来技術の場合、例えば、図16に示すように、(i)稼動系のサーバマシン10(#A)がwrite中にCPU高負荷に陥りスローダウンしてしまった場合には、(ii)待機系のサーバマシン10(#B)はハートビートa切れを検出し、稼動系のサーバマシン10(#A)がダウンしたと思ってしまい、(iii)フェールオーバbを実施してしまう。これにより、(iv)待機系のサーバマシン10(#B)は、QUORUM用領域17に現在時刻を書き込むとともに、(v)アプリケーションデータ用領域18のデータ領域15にデータをwriteする。
一方、(vi)稼動系のサーバマシン10(#A)も停止した訳ではないので、(vii)復帰直後から、QUORUM用領域17に現在時刻を書き込むとともに、アプリケーションデータ用領域18のデータ領域15へのデータのwriteを継続する。
このように、稼動系のサーバマシン10(#A)がスローダウンから復帰した直後に、両サーバから同じLUへの書き込みが行われ、データ破壊が発生する可能性があるという問題がある。
本発明はこのような事情に鑑みてなされたものであり、複数のサーバマシンと共有ディスク装置とから構成されたクラスタシステムにおいて、共有ディスク装置やそのマルチパスドライバの実装に依存せずにリザーブ排他が可能であり、かつ、フェールオーバが発生した場合であっても、複数のサーバマシンの書き込みによるデータ破損を発生させることなく、共有ディスク装置内のデータの整合を図ることが可能なクラスタシステム及びプログラムを提供することを目的とする。
上記の目的を達成するために、本発明では、以下のような手段を講じる。
すなわち、請求項1の発明は、複数のサーバマシンと、複数のサーバマシンに接続された共有ディスク装置とから構成されるクラスタシステムであって、共有ディスク装置は、各サーバマシン上でそれぞれ動作する同一のアプリケーションのデータを格納するマスター領域と、各サーバマシン毎のマスター領域へのアクセス権を管理する管理領域とを備え、各サーバマシンは、動作状態変更手段と、マスター領域アクセス手段とをそれぞれ備えている。
そして、各動作状態変更手段は、動作状態として、稼動系と待機系との少なくとも2つを持ち、異なるサーバマシンに備えられた他の動作状態変更手段と互いに定期的に通信することによって、通信相手の動作状態変更手段の生存状態を確認し、動作状態が稼動系にある場合には、自己が属するサーバマシン上でアプリケーションを動作させる一方、動作状態が待機系にある場合には、自己が属するサーバマシン上でアプリケーションを動作させず、更に、生存状態の確認の結果、稼動系にある通信相手の動作状態変更手段が生存していないと判定された場合には、自己の動作状態を待機系から稼動系に変更し、自己が属するサーバマシン上でアプリケーションを動作させることが可能である。
また、各マスター領域アクセス手段は、同じサーバマシンに属する動作状態変更手段の動作状態が待機系から稼動系に変更された場合には、該サーバマシンにアクセス権が与えられるように管理領域の内容を変更する。各マスター領域アクセス手段は更に、同じサーバマシンに属する動作状態変更手段の動作状態が稼動系になった後は、該サーバマシンの上位からのI/O命令を待ち、I/O命令があった場合にはI/O命令を下位に受け渡し、I/O命令に対する処理が正常に完了した旨が下位から返ってきた場合にはその旨を上位に返し、正常に完了した旨が下位から返ってこない場合には管理領域を参照し、アクセス権が該サーバマシンに与えられているのであればI/O命令を下位に再度受け渡し、アクセス権が該サーバマシンに与えられていなければ、予め定めたエラー処理を行う。
請求項2の発明は、マスター領域アクセス手段を、ホストバスアダプタカードによって実現することを特徴とする請求項1のクラスタシステムである。
請求項3の発明は、複数のサーバマシンと、複数のサーバマシンに接続された共有ディスク装置とから構成されるクラスタシステムに適用されるプログラムである。ここで、共有ディスク装置は、各サーバマシン上でそれぞれ動作する同一のアプリケーションのデータを格納するマスター領域と、各サーバマシン毎のマスター領域へのアクセス権を管理する管理領域とを備え、各サーバマシンは、動作状態変更手段と、マスター領域アクセス手段とをそれぞれ備え、各動作状態変更手段は、動作状態として、稼動系と待機系との少なくとも2つを持つ。
そして、このプログラムは、異なるサーバマシンに備えられた他の動作状態変更手段と互いに定期的に通信することによって、通信相手の動作状態変更手段の生存状態を確認する機能、各動作状態変更手段が、稼動系にある場合には、自己が属するサーバマシン上でアプリケーションを動作させる一方、待機系にある場合には、自己が属するサーバマシン上でアプリケーションを動作させない機能、生存状態の確認の結果、稼動系にある通信相手の動作状態変更手段が生存していないと判定され、かつ自己の動作状態が待機系にある場合には、各動作状態変更手段が、自己の動作状態を待機系から稼動系に変更し、自己が属するサーバマシン上でアプリケーションを動作させる機能、各マスター領域アクセス手段が、同じサーバマシンに属する動作状態変更手段の動作状態が待機系から稼動系に変更された場合には、該サーバマシンにアクセス権が与えられるように管理領域の内容を変更する機能、各マスター領域アクセス手段が更に、同じサーバマシンに属する動作状態変更手段の動作状態が稼動系になった後は、該サーバマシンの上位からのI/O命令を待ち、I/O命令があった場合にはI/O命令を下位に受け渡し、I/O命令に対する処理が正常に完了した旨が下位から返ってきた場合にはその旨を上位に返し、正常に完了した旨が下位から返ってこない場合には管理領域を参照し、アクセス権が該サーバマシンに与えられているのであればI/O命令を下位に再度受け渡し、アクセス権が該サーバマシンに与えられていなければ、予め定めたエラー処理を行う機能をコンピュータに実現させる。
本発明によれば、複数のサーバマシンと共有ディスク装置とから構成されたクラスタシステムにおいて、共有ディスク装置やそのマルチパスドライバの実装に依存せずにリザーブ排他が可能であり、かつ、フェールオーバが発生した場合であっても、複数のサーバマシンの書き込みによるデータ破損を発生させることなく、共有ディスク装置内のデータの整合を図ることが可能なクラスタシステム及びプログラムを実現することができる。
以下に、本発明を実施するための最良の形態について図面を参照しながら説明する。
なお、以下の各実施の形態の説明に用いる図中の符号は、図12乃至図16と同一部分については同一符号を付して示し、重複説明を省略する。
(第1の実施の形態)
図1は、第1の実施の形態に係るクラスタシステムの構成例を示す機能ブロック図である。
すなわち、本実施の形態に係るクラスタシステムは、複数のサーバマシン(ここでは、一例として2つのサーバマシン10(#A,#B)を示す)と、これらサーバマシン10(#A,#B)に接続された共有ディスク装置13とから構成されたクラスタシステムである。ここでは、仮に、初期状態として、サーバマシン10(#A)が稼動系、サーバマシン10(#B)が待機系であるとする。各サーバマシン10(#A,#B)はそれぞれ、各サーバマシン10(#A,#B)上でそれぞれ動作するアプリケーション11(#A,#B)、クラスタソフト12(#A,#B)、マルチパスドライバ20(#A,#B)、フィルタドライバ21(#A,#B)、ホストバスアダプタ(HBA)ドライバ22(#A,#B)を備えている。マルチパスドライバ20は、アプリケーション11の下位に、フィルタドライバ21は、マルチパスドライバ20の下位に、HBAドライバ22は、フィルタドライバの下位にそれぞれ配置して設けられる。なお、フィルタドライバ21とHBAドライバ22とを同一モジュールで実現するようにしても良い。更に、各HBAドライバ22には、共有ディスク装置13と通信するための複数のHBAカード220(#1〜#n)がそれぞれ装着されている。そして、フィルタドライバ21の持つ機能を、HBAカード220に実装させるようにしても良い。
アプリケーション11は、主にサーバアプリケーションを想定しており、本実施の形態では、データベースサーバであるとする。
共有ディスク装置13は、各サーバマシン10(#A,#B)それぞれとFC(Fiber Channel)ケーブル23(#A,#B)で接続されており、QUORUM用領域17とマスター領域30とを備えている。それぞれを異なるLUに分けても良いし、異なるパーティションに分けても良い。これについては、第2の実施の形態で説明する。そして、各LUは、イニシエータ(本実施の形態の場合はHBAカード220)が発行するバスリセットにより、ユニットアテンション状態となる。また、共有ディスク装置13は、イニシエータ毎にユニットアテンション状態を保持し、各イニシエータからアクセスがあるまで状態を保持し続ける。その後、イニシエータからアクセスがあったら、データ書き込みをせずにチェックコンディションを返す。
図2は、サーバマシン10(#A,#B)と共有ディスク装置13、特にQUORUM用領域17との関連性を詳細に示す概念図である。したがって、図2ではサーバマシン10(#A,#B)の構成を簡略して示している。
図2に示すようにQUORUM用領域17は、各サーバマシン10(#A,#B)うちどのサーバマシン10がマスター領域30へのアクセス権を持っているかを管理するアクセス権管理領域170を備えている。図2に示す例では、サーバマシン10(#A)がアクセス権を持ち、サーバマシン10(#B)がアクセス権を持っていないことを示している。アクセス権の指定及び変更は、後述するようにフィルタドライバ21が行う。
マスター領域30は、各サーバマシン10(#A,#B)上でそれぞれ動作する同一のアプリケーション11(#A,#B)のデータを格納する領域である。
再び図1に示すように、各クラスタソフト12は、動作状態として、稼動系と待機系との少なくとも2つを持つ。そして、稼動系の場合、自己が属するサーバマシン10(例えば、クラスタソフト12(#A)の場合であれば、サーバマシン10(#A))上でアプリケーション11を動作させる。一方、待機系にある場合には、自己が属するサーバマシン10(例えば、クラスタソフト12(#B)の場合であれば、サーバマシン10(#B))上でアプリケーション11を動作させない。また、異なるサーバマシン10(例えば、サーバマシン10(#A))に備えられた他のクラスタソフト12(クラスタソフト12(#A))と互いに定期的に通信することによって、通信相手のクラスタソフト12(クラスタソフト12(#A))の生存状態を確認する。そして、図3に示すように自己(クラスタソフト12(#B))が待機系にある場合、稼動系にある通信相手のクラスタソフト12(クラスタソフト12(#A))が生存していないと判定された場合(T1)には、自己(クラスタソフト12(#B))の動作状態を待機系から稼動系に変更する(T2)。
これにあわせて、フィルタドライバ21(フィルタドライバ21(#B))は、自己が属するサーバマシン10(サーバマシン10(#B))がアクセス権を持ち、通信相手のクラスタソフト12(クラスタソフト12(#A))が属するサーバマシン10(サーバマシン10(#A))がアクセス権を持たないようにアクセス権管理領域170の内容を変更する(T3)。図3に示す例は、今までアクセス権を持っていたサーバマシン10(#A)がアクセス権を失い(○→×)、代わって、アクセス権を持っていなかったサーバマシン10(#B)がアクセス権を持つ(×→○)ように変更される状態を示している。続いて、クラスタソフト12(#B)は、共有ディスク装置13にバスリセットを送信する。これにより、サーバマシン10(#A)からの次のI/O命令がエラーで返るようになる(T4)。
ここで、フィルタドライバ21は、同じサーバマシン10に属するクラスタソフト12の動作状態が稼動系になった後は、該サーバマシン10の上位からのI/O命令を待つ。そして、I/O命令があった場合にはI/O命令を下位に受け渡し、このI/O命令に対する処理が正常に完了した旨が下位から返ってきた場合にはその旨を上位に返す。一方、正常に完了した旨が下位から返ってこない場合には、アクセス権管理領域170を参照し、自己が属するサーバマシン10にアクセス権が与えられているのであればI/O命令を下位に再度受け渡し、アクセス権が与えられていないのであれば、自己が属するサーバマシン10のクラスタソフト12の動作状態が稼動系ではないことを把握し、予め定めたエラー処理を行う(T5、T6)。
このように、アクセス権を持つサーバマシン10だけが、マスター領域30にアクセス可能となり、アプリケーション11を動作させ、そのデータをマスター領域30に書き込むことが可能となる。一方、アクセス権を持たないサーバマシン10は、マスター領域30にアクセスすることができない。
次に、本実施の形態に係るクラスタシステムの動作について説明する。ただし、初期状態として、サーバマシン10(#A)とサーバマシン10(#B)との間ではクラスタソフト12(#A,#B)同士がハートビートを交換し、互いの生存が確認できており、サーバマシン10(#A,#B)ともに、QUORUM用領域17とマスター領域30は上位から見えない(フィルタドライバがフェンスオフ)状態になっており、サーバマシン10(#A,#B)ともにアプリケーション11(#A,#B)は起動していないものとする。
まず、図4に示すフローチャートを用いて、サーバマシン10(#A)を稼動系に設定する場合におけるクラスタソフト12(#A)による処理の流れを説明する。
まず、ユーザ操作により、サーバマシン10(#A)を稼動系にせよとの通知が、サーバマシン10(#A)のクラスタソフト12(#A)に届く(S1)。次に、クラスタソフト12(#A)によって、サーバマシン10(#A)にアクセス権が与えられるようにアクセス権管理領域170が設定される(S2)。すると、クラスタソフト12(#A)によって、フィルタドライバ21(#A)に稼動系となったことが通知される(S3)。その後、サーバマシン10(#A)のフィルタドライバ21(#A)によって、上位からマスター領域30が見える状態にされる(S4)。そして、サーバマシン10(#A)のクラスタソフト12(#A)によって、アプリケーション11(#A)が起動される(S5)。
次に、図5のフローチャートを用いて、サーバマシン10(#A)を稼動系に設定した後のフィルタドライバ21(#A)による処理の流れを説明する。
まず、サーバマシン10(#A)のフィルタドライバ21(#A)が上位からのI/O入力を待つ(S11)。そして、I/O入力がなされると、なされたI/O入力の種別が判定される。なされたI/O入力がマスター領域30への命令であれば(S12:Yes)ステップS13へ、そうでなければ(S12:No)ステップS20へそれぞれ進む。
ステップS13では、アクセス権管理領域170を参照する(S13)。そして、サーバマシン10(#A)がアクセス権を持っているのであれば(S13:Yes)、サーバマシン10(#A)のフィルタドライバ21(#A)が下位に命令を渡す(S14)。そして、このI/O命令に対する処理が正常に完了した旨が下位から返ってきた場合には(S15:Good)その旨を上位に返す(S16)。
一方、正常に完了した旨が下位から返ってこない場合(S15:Check Condition)には、アクセス権管理領域170を参照する(S17)。そして、サーバマシン10(#A)がアクセス権を持っているのであれば(S18:Yes)、ステップS14に戻ってI/O命令を下位に再度受け渡し、アクセス権を持っていないのであれば(S18:No)、自己が属するサーバマシン10のクラスタソフト12の動作状態が稼動系ではないことを把握し、ステップS19に進み、予め定めたエラー処理を行う(S19)。
また、ステップS15において、正常に完了した旨が下位から返ってきた訳でも、返ってこない訳でもない場合(S15:その他)、また、ステップS13において、アクセス権を持っていない場合(S13:No)にもステップS19に進む。
ステップS20では、下位のHBAドライバ22にそのまま処理を渡し(S20)、その後、返り値をそのまま上位へリターンする(S21)。
次に、図6に示すフローチャートと、図7に示す概念図とを用いて、サーバマシン10(#B)がハートビート切れを検出し、フェールオーバするときのサーバマシン10(#B)のクラスタソフト12(#B)による処理の流れを説明する。
まず、サーバマシン10(#B)のクラスタソフト12(#B)は、サーバマシン10(#A)が、図7中のXに示すようにwrite中にスローダウンすることによってハートビート切れを検出する(S31)と、アクセス権管理領域170において、サーバマシン10(#A)からサーバマシン10(#B)にアクセス権が変更される(S32)。
次に、クラスタソフト12(#B)が、HBAドライバ22(#B)に対してバスリセットを発行し、これにより、マスター領域30がユニットアテンション状態になる(S33)。続いて、クラスタソフト12(#B)によって、フィルタドライバ21(#B)にサーバマシン10(#B)が稼動系になったことが通知される(S34)。その後、サーバマシン10(#B)のフィルタドライバ21(#B)によって、上位からマスター領域30が見える状態にされる(S35)。そして、サーバマシン10(#B)のクラスタソフト12(#B)によって、アプリケーション11(#B)が起動される(S36)。
なお、スローダウンしたサーバマシン10(#A)は、何れの場合であっても、しばらくした後に復帰するものとする。しかしながら、復帰後、マスター領域30に対してwriteを試みるものの、チェックコンディションYが返されるため、図5のフローチャートに従い、これ以降、マスター領域30へデータを書き込まなくなる。これにより、両系同時書き込みによるデータ破壊を防ぐことができる。
このようなクラスタシステムは、例えば磁気ディスク等の記録媒体に記録されたプログラムや、インターネット等の通信ネットワークを介してダウンロードしたプログラムを読み込み、このプログラムによって動作が制御されるサーバマシン10によって実現される。
また、このプログラムは、サーバマシン10に実行させることができるものであって、例えば磁気ディスク(フロッピー(登録商標)ディスク、ハ一ドディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリ等の記録媒体に格納し、またインターネット等の通信媒体により伝送して頒布することもできる。
なお、記録媒体に格納されるプログラムは、サーバマシン10に実行させるソフトウェア手段(実行プログラムのみならずテーブルやデータ構造も含む)をサーバマシン10内に構成させる設定プログラムをも含む。
また、このプログラムは、記録媒体から、あるいは通信媒体からサーバマシン10に読み込まれると、サーバマシン10を動作させることによって上述した処理を実行させる。
上述したように、本実施の形態に係るクラスタシステムにおいては、上記のような作用により、共有ディスク装置13への依存性が少なく、また、共有ディスク装置13上のデータフォーマットが汎用的であるようなソフトウェア排他を実現できる。また、稼動系サーバマシン10のダウン、通信路14の障害、稼動系サーバマシン10でのCPU高負荷等による一時的なスローダウンの発生の何れの原因でハートビート断絶が起こった場合であっても、マスター領域30のへの両系同時書き込みによるデータ破壊を防ぐことができる。
また、フィルタドライバ21をマルチパスドライバ20の下位に配置しているので、マルチパスドライバ20の実装に依存せずに上記作用効果を奏することができる。
更に、フィルタドライバ21とHBAドライバ22とを同一モジュールにすれば、HBAドライバ22のみで上記作用効果を奏することができる。
更にまた、フィルタドライバ21の持つ機能を、HBAカード220に実装させることによって、HBAカード220のみで上記作用効果を奏することができる。
(第2の実施の形態)
第2の実施の形態に係るクラスタシステムは、第1の実施の形態に係るクラスタシステムの変形例であるので、第1の実施の形態と同一部位については同一符番で示して重複説明を省略し、異なる点について説明する。
図8は、本実施の形態における図2に対応する概念図である。
すなわち、本実施の形態に係るクラスタシステムでは、共有ディスク装置13のマスター領域30に、複数のLU31を備えている。図8では、一例として2つのLU31(#1,#2)を示しているが、もちろん2つに限られるものではない。
そして、アクセス権管理領域170は、これらLU31(#1,#2)のそれぞれに対するアクセス権を設定できるようになっている。
このようなクラスタシステムにおいて、(1)第1のアプリケーションに対してはサーバマシン10(#B)が稼動系で、サーバマシン10(#A)が待機系となっており、(2)第2のアプリケーションに対してはサーバマシン10(#A)が稼動系で、サーバマシン10(#B)が待機系となっている状態を想定する。
上記(1)の場合、ハートビート切れが生じると、サーバマシン10(#A)のクラスタソフト12(#A)がそれを検出し、フィルタドライバ21(#A)がLU31(#2)のアクセス権を奪ってリセットを発行する。これ以降、サーバマシン10(#B)によるLU31(#2)へのアクセスはエラーとなる。
上記(2)の場合、ハートビート切れが生じると、サーバマシン10(#B)のクラスタソフト12(#B)がそれを検出し、フィルタドライバ21(#B)がLU31(#1)のアクセス権を奪ってリセットを発行する。これ以降、サーバマシン10(#A)によるLU31(#1)へのアクセスはエラーとなる。
上記(1)の場合のハートビート切れ、又は(2)の場合のハートビート切れのうちの何れか一方が起きる場合は、第1の実施の形態と同様である。
一方、上記(1)の場合のハートビート切れと、上記(2)の場合のハートビート切れとの両方が同時に起きた場合であって、更に、リセットが各LU31(#1,#2)毎に発行できる場合であれば、上記(1)の場合のハートビート切れ後の処理の流れと、上記(2)の場合のハートビート切れ後の処理の流れとは独立した事象となるため、同様に第1の実施の形態と同様である。
一方、上記(1)の場合のハートビート切れと、上記(2)の場合のハートビート切れとの両方が同時に起きた場合であって、更に、リセットがLU31(#1,#2)に跨って発行される場合、リセットが2度発行されるため、フィルタドライバ21はアクセス権の同期を2回行うことになる。しかしながら、同期回数が増えるデメリットは、フィルタドライバ21におけるリトライ回数が増える程度であり、信頼性の面で問題となることはない。
したがって、本実施の形態に係るクラスタシステムのように、共有ディスク装置13のマスター領域30に複数のLU31を備え、かつ複数のアプリケーションがそれぞれ何れかのサーバマシン10を稼動系として動作するような構成においても、第1の実施の形態に係るクラスタシステムと同様の作用効果を奏することができる。
(第3の実施の形態)
本実施の形態では、仮想マシン環境を利用したクラスタシステムについて説明する。
この仮想マシン環境を利用したクラスタシステムは、第1の実施の形態に係るクラスタシステムの変形例であり、例えば図9のブロック図に示すように、物理マシン100上に複数の仮想マシン102が用意され、仮想マシンモニタ101が、これら複数の仮想マシン102を制御する。更に、各仮想マシン102は、各仮想マシン102上でそれぞれ動くゲストOS 104と称されるOSと、ゲストOS 104上に配置されたフィルタドライバ106及びクラスタソフト108を備えている。更に各仮想マシン102は同一のアプリケーション110を備えている。
図9は、一例として物理マシン100内に2つの仮想マシン102(#1,#2)を設けた例を示している。また、フィルタドライバ106及びクラスタソフト108の構成は、第1の実施の形態におけるフィルタドライバ21及びクラスタソフト12と同じである。
また、共有ディスク装置13は、3つの仮想ディスク130(#0,#1,#2)を備えており、仮想ディスク130(#0)はQUORUM用領域として、仮想ディスク130(#1,#2)は図1のマスター領域30に相当するデータ用として使用される。なお、本実施の形態は、このように仮想ディスクとする場合に限定されることはなく、LUをそのまま使用することもできる。
図10は、仮想マシン環境を利用したクラスタシステムの別の構成例を示す図であり、複数の物理マシン100を備え、各物理マシン100がそれぞれ1つの仮想マシン102のみを備えている点が図9の構成と異なっている。
図11は、仮想マシン環境を利用したクラスタシステムの更に別の構成例を示す図であり、仮想マシン102(#1)と物理マシン100(#2)とを混在させて本発明のクラスタシステムを構築した例である。
以上、図9及び図10にその一例を示すように、仮想マシン環境を利用した場合であっても、物理マシンの代わりに仮想マシン、LUの代わりに仮想ディスクとなるだけであり、第1及び第2の実施の形態に係るクラスタシステムと本質的に同じ機能を有するクラスタシステムを構築することが可能となる。
また、図11にその一例を示すように、物理マシンと仮想マシンとを混在させた場合であっても、第1及び第2の実施の形態に係るクラスタシステムと本質的に同じ機能を有するクラスタシステムを構築することが可能となる。
以上、本発明を実施するための最良の形態について、添付図面を参照しながら説明したが、本発明はかかる構成に限定されない。特許請求の範囲の発明された技術的思想の範疇において、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の技術的範囲に属するものと了解される。
例えば、上記実施の形態では、2台のサーバマシン10(#A,#B)によって構成されるクラスタシステムを例に説明したが、当業者であれば、本発明のクラスタシステムは、2台のサーバマシン10に限定されるものではなく、3台以上のサーバマシン10からなるクラスタシステムにも同様に適用可能であることが理解されよう。
第1の実施の形態に係るクラスタシステムの構成例を示す機能ブロック図。 サーバマシンと共有ディスク装置との関連性を詳細に示す概念図。 サーバマシンと共有ディスク装置との関連性を詳細に示す概念図。 サーバマシンを稼動系に設定する場合におけるクラスタソフトによる処理の流れを示すフローチャート。 サーバマシンを稼動系に設定した後のフィルタドライバによる処理の流れを示すフローチャート。 サーバマシンがハートビート切れを検出し、フェールオーバするときのサーバマシンのクラスタソフトによる処理の流れを示すフローチャート。 サーバマシンがハートビート切れを検出し、フェールオーバするときのサーバマシンのクラスタソフトによる処理と、サーバマシンにフェールオーバ後のフィルタドライバによる処理の流れを示す概念図。 第2の実施の形態に係るクラスタシステムにおけるサーバマシンと共有ディスク装置との関連性を詳細に示す概念図 仮想マシン環境を利用したクラスタシステムの構成例を示す機能ブロック図。 仮想マシン環境を利用したクラスタシステムの別の構成例を示す機能ブロック図。 仮想マシン環境を利用したクラスタシステムの更に別の構成例を示す機能ブロック図。 従来技術のクラスタシステムによるフェールオーバを説明するための概念図。 従来技術のクラスタシステムによるフェールオーバ時に生じるデータ破壊を説明するための概念図。 リザーブ排他機能を用いた従来技術のクラスタシステムによるフェールオーバを説明するための概念図。 QUORUMを用いた従来技術のクラスタシステムによるフェールオーバを説明するための概念図。 QUORUMを用いた従来技術のクラスタシステムによるフェールオーバ時に生じるデータ破壊を説明するための概念図。
符号の説明
a…ハートビート、b…フェールオーバ、10…サーバマシン、11…アプリケーション、12…クラスタソフト、13…共有ディスク装置、14…通信路、15…データ領域、17…QUORUM用領域、18…アプリケーションデータ用領域、20…マルチパスドライバ、21…フィルタドライバ、22…ホストバスアダプタドライバ、23…FCケーブル、30…マスター領域、31…LU、100…物理マシン、101…仮想マシンモニタ、102…仮想マシン、106…フィルタドライバ、108…クラスタソフト、110…アプリケーション、130…仮想ディスク、170…アクセス権管理領域、220…HBAカード

Claims (3)

  1. 複数のサーバマシンと、前記複数のサーバマシンに接続された共有ディスク装置とから構成されるクラスタシステムであって、
    前記共有ディスク装置は、前記各サーバマシン上でそれぞれ動作する同一のアプリケーションのデータを格納するマスター領域と、前記各サーバマシン毎の前記マスター領域へのアクセス権を管理する管理領域とを備え、
    前記各サーバマシンは、動作状態変更手段と、マスター領域アクセス手段とをそれぞれ備え、
    前記各動作状態変更手段は、動作状態として、稼動系と待機系との少なくとも2つを持ち、異なるサーバマシンに備えられた他の動作状態変更手段と互いに定期的に通信することによって、通信相手の動作状態変更手段の生存状態を確認し、自己が前記動作状態が稼動系にある場合には、自己が属するサーバマシン上で前記アプリケーションを動作させる一方、前記動作状態が待機系にある場合には、自己が属するサーバマシン上で前記アプリケーションを動作させず、更に、前記生存状態の確認の結果、稼動系にある前記通信相手の動作状態変更手段が生存していないと判定された場合には、自己の動作状態を待機系から稼動系に変更し、自己が属するサーバマシン上で前記アプリケーションを動作させることが可能であり、
    前記各マスター領域アクセス手段は、同じサーバマシンに属する動作状態変更手段の動作状態が前記待機系から前記稼動系に変更された場合には、該サーバマシンに前記アクセス権が与えられるように前記管理領域の内容を変更し、
    前記各マスター領域アクセス手段は更に、同じサーバマシンに属する動作状態変更手段の動作状態が前記稼動系になった後は、該サーバマシンの上位からのI/O命令を待ち、前記I/O命令があった場合には前記I/O命令を下位に受け渡し、前記I/O命令に対する処理が正常に完了した旨が下位から返ってきた場合にはその旨を上位に返し、正常に完了した旨が下位から返ってこない場合には前記管理領域を参照し、前記アクセス権が該サーバマシンに与えられているのであれば前記I/O命令を下位に再度受け渡し、前記アクセス権が該サーバマシンに与えられていなければ、予め定めたエラー処理を行うことを特徴とするクラスタシステム。
  2. 前記マスター領域アクセス手段を、ホストバスアダプタカードによって実現することを特徴とする請求項1のクラスタシステム。
  3. 複数のサーバマシンと、前記複数のサーバマシンに接続された共有ディスク装置とから構成されるクラスタシステムに適用されるプログラムであって、
    前記共有ディスク装置は、前記各サーバマシン上でそれぞれ動作する同一のアプリケーションのデータを格納するマスター領域と、前記各サーバマシン毎の前記マスター領域へのアクセス権を管理する管理領域とを備え、
    前記各サーバマシンは、動作状態変更手段と、マスター領域アクセス手段とをそれぞれ備え、
    前記各動作状態変更手段が、動作状態として、稼動系と待機系との少なくとも2つを持ち、異なるサーバマシンに備えられた他の動作状態変更手段と互いに定期的に通信することによって、通信相手の動作状態変更手段の生存状態を確認する機能、
    前記各動作状態変更手段が、前記稼動系にある場合には、自己が属するサーバマシン上で前記アプリケーションを動作させる一方、前記待機系にある場合には、自己が属するサーバマシン上で前記アプリケーションを動作させない機能、
    前記生存状態の確認の結果、稼動系にある前記通信相手の動作状態変更手段が生存していないと判定され、かつ自己の動作状態が待機系にある場合には、前記各動作状態変更手段が、自己の動作状態を待機系から稼動系に変更し、自己が属するサーバマシン上で前記アプリケーションを動作させる機能、
    前記各マスター領域アクセス手段が、同じサーバマシンに属する動作状態変更手段の動作状態が前記待機系から前記稼動系に変更された場合には、該サーバマシンに前記アクセス権が与えられるように前記管理領域の内容を変更する機能、
    前記各マスター領域アクセス手段が更に、同じサーバマシンに属する動作状態変更手段の動作状態が前記稼動系になった後は、該サーバマシンの上位からのI/O命令を待ち、前記I/O命令があった場合には前記I/O命令を下位に受け渡し、前記I/O命令に対する処理が正常に完了した旨が下位から返ってきた場合にはその旨を上位に返し、正常に完了した旨が下位から返ってこない場合には前記管理領域を参照し、前記アクセス権が該サーバマシンに与えられているのであれば前記I/O命令を下位に再度受け渡し、前記アクセス権が該サーバマシンに与えられていなければ、予め定めたエラー処理を行う機能
    をコンピュータに実現させるためのプログラム。
JP2007077420A 2007-03-23 2007-03-23 クラスタシステム及びプログラム Active JP4468395B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007077420A JP4468395B2 (ja) 2007-03-23 2007-03-23 クラスタシステム及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007077420A JP4468395B2 (ja) 2007-03-23 2007-03-23 クラスタシステム及びプログラム

Publications (2)

Publication Number Publication Date
JP2008234604A true JP2008234604A (ja) 2008-10-02
JP4468395B2 JP4468395B2 (ja) 2010-05-26

Family

ID=39907261

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007077420A Active JP4468395B2 (ja) 2007-03-23 2007-03-23 クラスタシステム及びプログラム

Country Status (1)

Country Link
JP (1) JP4468395B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017090164A1 (ja) * 2015-11-26 2017-06-01 三菱電機株式会社 制御装置
CN110321579A (zh) * 2018-03-30 2019-10-11 波音公司 用于可操作环境的虚拟化航空电子系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003085026A (ja) * 2001-09-14 2003-03-20 Nec Corp 共有リソース排他制御方式および方法
JP2006504186A (ja) * 2002-10-21 2006-02-02 エミュレックス・デザイン・アンド・マニュファクチュアリング・コーポレーション 複数の伝送路フェイルオーバー、フェイルバックおよび負荷分散を備えるシステム
JP2006189963A (ja) * 2004-12-28 2006-07-20 Hitachi Ltd ストレージアクセス制御方法、クラスタシステム、パス接続スイッチおよびストレージアクセス制御プログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003085026A (ja) * 2001-09-14 2003-03-20 Nec Corp 共有リソース排他制御方式および方法
JP2006504186A (ja) * 2002-10-21 2006-02-02 エミュレックス・デザイン・アンド・マニュファクチュアリング・コーポレーション 複数の伝送路フェイルオーバー、フェイルバックおよび負荷分散を備えるシステム
JP2006189963A (ja) * 2004-12-28 2006-07-20 Hitachi Ltd ストレージアクセス制御方法、クラスタシステム、パス接続スイッチおよびストレージアクセス制御プログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017090164A1 (ja) * 2015-11-26 2017-06-01 三菱電機株式会社 制御装置
CN110321579A (zh) * 2018-03-30 2019-10-11 波音公司 用于可操作环境的虚拟化航空电子系统
JP2019185749A (ja) * 2018-03-30 2019-10-24 ザ・ボーイング・カンパニーTheBoeing Company 運用環境用の仮想化されたアビオニクスシステム
JP7427366B2 (ja) 2018-03-30 2024-02-05 ザ・ボーイング・カンパニー 運用環境用の仮想化されたアビオニクスシステム

Also Published As

Publication number Publication date
JP4468395B2 (ja) 2010-05-26

Similar Documents

Publication Publication Date Title
EP1860560B1 (en) Storage control method and system for performing backup and/or restoration
US20150032928A1 (en) Optimized redundant high availability sas topology
US20090150629A1 (en) Storage management device, storage system control device, storage medium storing storage management program, and storage system
US11573737B2 (en) Method and apparatus for performing disk management of all flash array server
CN103840961A (zh) 双机热备份系统
US7146526B2 (en) Data I/O system using a plurality of mirror volumes
US20050234916A1 (en) Method, apparatus and program storage device for providing control to a networked storage architecture
US11409471B2 (en) Method and apparatus for performing data access management of all flash array server
JP2000181887A5 (ja)
CN106331166A (zh) 一种存储资源的访问方法及装置
JP2009026091A (ja) 接続管理プログラム、接続管理方法および情報処理装置
US11636012B2 (en) Method and apparatus for performing node information exchange management of all flash array server
JP4468395B2 (ja) クラスタシステム及びプログラム
JP2006260141A (ja) 記憶システムの制御方法、記憶システム、記憶制御装置、記憶システムの制御プログラム、情報処理システム
JP6012479B2 (ja) 情報処理システム、制御方法および制御プログラム
JP2021033782A (ja) リモートコピーシステム
JP2007274255A (ja) 冗長構成システム及びノード
US11809293B2 (en) Storage node failure detection based on register values for an all flash array server
JP7209784B1 (ja) 冗長化システム及び冗長化方法
US11366618B2 (en) All flash array server and control method thereof
JP5002296B2 (ja) クラスタシステム及びプログラム
JP2013239117A (ja) コンピュータ、データ格納方法、データ格納プログラム及び情報処理システム
KR101130850B1 (ko) 체크포인트 제어장치 및 방법
JP2004005113A (ja) 複数の実計算機上で動作する仮想計算機システム及びその制御方法
JP2011238290A (ja) 障害管理装置及びプログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090316

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090324

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100224

R150 Certificate of patent or registration of utility model

Ref document number: 4468395

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130305

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140305

Year of fee payment: 4

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350