計算機システム、同期化処理方法、およびプログラム
【課題】FTCにおいて、ハードウェアの故障が発生した際、手間をかけずに迅速に多重系に復帰させる。
【解決手段】計算機100a〜c、ストレージ装置140、ネットワークスイッチ130、ストレージスイッチ170を有し、計算機100aおよび100bがI/O処理を同期して実行し、計算機100a、bでプログラム実行の二重化を行う計算機システムに、計算機100a、bのうちの一方が障害で停止した際、計算機100cを該障害で停止した計算機の交代機として設定し、計算機100cを前記2台のうちの稼働中の計算機とI/O処理を同期して実行するように、前記ネットワークスイッチ130、前記ストレージスイッチ170、およびストレージ装置170を制御するFTC制御装置160を設ける。
【解決手段】計算機100a〜c、ストレージ装置140、ネットワークスイッチ130、ストレージスイッチ170を有し、計算機100aおよび100bがI/O処理を同期して実行し、計算機100a、bでプログラム実行の二重化を行う計算機システムに、計算機100a、bのうちの一方が障害で停止した際、計算機100cを該障害で停止した計算機の交代機として設定し、計算機100cを前記2台のうちの稼働中の計算機とI/O処理を同期して実行するように、前記ネットワークスイッチ130、前記ストレージスイッチ170、およびストレージ装置170を制御するFTC制御装置160を設ける。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ハードウェアの多重化によるフォールトトレラントコンピュータの技術に関し、特にフォールトトレラントコンピュータの障害の際の復旧処理の技術に関する。
【背景技術】
【0002】
計算機処理の信頼性および可用性を向上する方式として、フォールトトレラントコンピュータ(以下「FTC」という)を利用する方法がある。FTCは、計算機を構成するハードウェアを多重化し、多重化されたハードウェアで同期を取りながら同一の処理を実施し、それぞれの処理結果の妥当性を確認しながら、最終的な処理結果の出力を実施する形態の計算機システムである。
【0003】
FTCによれば、多重化されたハードウェアの1つで障害が発生しても他のハードウェアで処理が実行されるので、ハードウェアの故障によるダウンを回避できる。これにより、計算機システムの可用性を向上できる。従来のFTCでは、複数の計算機を専用の回線で接続し、その回線を用いて、クロック信号やCPU処理のレベルで処理の進行を同期する方式が採られている。また、近年では、ネットワークによる通信が高速になったことにより、FTCを構成する計算機間の接続を汎用のネットワークとする方式が出現している。
【0004】
非特許文献1には、計算機間の処理の同期をクロック信号やCPU命令実行のレベルではなく、I/O処理(割り込み処理も含む)のタイミングで一致化する方式が開示されている。
【0005】
ところで、FTCでは、ハードウェアの故障が発生した場合、その後の信頼性を確保するために、故障部位を交換しハードウェアの多重度を回復する必要がある。多重度の回復処理は、「FTCを構成する計算機のメモリ内容の一致化」、「外部記憶装置内容の一致化」、および「同期実行の再開」からなる。そして、FTCには、ハードウェアの故障が発生した場合、多重度の回復処理(多重系への復帰)に、時間がかかるという問題がある。さらに、多重度の回復処理の中の「外部記憶装置内容の一致化処理」は、FTCが実行する本来の処理の性能を低下させることがある。
【0006】
そのため、複数の計算機をネットワークで接続してFTCを構成する方式では、ハードウェアの故障が発生した場合、迅速に多重系への復帰させることが望まれている。なお、従来のFTCは、ハードウェア障害が発生した場合、故障ハードウェアの交換や配線の変更といった、人的な作業を伴うため、復旧に手間がかかるという問題も有している。
【0007】
特許文献1には、多重度の回復処理のうち、「外部記憶装置内容の一致化」を高速化する手法が開示されている。特許文献1では、復旧作業中に発生したディスクの更新分のみをコピーすることにより、外部記憶装置の一致化を高速化している。
【0008】
一方、ストレージ技術について、複数のディスク装置を格納し、内部の構成要素を冗長化し、それ単体で高度な信頼性を提供するストレージ装置が利用可能となっている。また、1つのストレージ装置内に、外部からはディスク装置に見える論理ボリュームを構成でき、その論理ボリュームのミラーリングや、高速な複製作成機能をストレージの側で実現しているものも存在している。
【0009】
【非特許文献1】“Marathon FT Virtual Server”, [online] [2005/02/17検索]、Marathon Technologies社Weサイト、インターネット<URL:http://www.marathontechnologies.com/products/ssdatasheetdraft6-1vf.pdf>
【特許文献1】特開2000−293389号公報
【発明の開示】
【発明が解決しようとする課題】
【0010】
しかしながら、上述した非特許文献1および特許文献1は、以下の問題を有している。具体的には、非特許文献1は、計算機間で処理を同期することについて考慮しているが、障害が発生した際の多重系への復帰処理を早めることについて特に考慮されていない。また、特許文献1は、多重系への回復処理のうち、「外部記憶装置内容の一致化」以外について特に考慮されていない。また、特許文献1の手法では、復旧作業中に発生したディスクの更新量が大きくなった場合、多重度の回復処に時間がかかってしまう。すなわち、特許文献1では、FTCにおいて、ハードウェアの故障が発生した際、多重系への復帰が迅速にできないことがある。
【0011】
本発明は、上記事情に鑑みてなされたものであり、本発明の目的は、FTCにおいて、ハードウェアの故障が発生した場合に、手間をかけずに迅速に多重系への復帰させることにある。
【課題を解決するための手段】
【0012】
上記課題を解決するため、本発明の一態様は、2台の計算機と、該計算機が共通に利用する外部記憶装置と、該計算機間を接続するネットワークスイッチと、該計算機と該外部記憶装置を接続するストレージスイッチとを有し、前記2台の計算機がI/O処理を同期して実行し、該2台の計算機でプログラム実行の二重化を行う計算機システムに適用される。ここで、前記外部記憶装置は、仮想的な外部記憶装置であって、前記計算機からアクセスされる論理ボリュームを作成する手段と、前記論理ボリュームの複製を作成する複製手段と、を有している。
【0013】
そして、前記計算機システムは、前記2台の計算機のうちの一方が障害で停止した際、該障害による停止を検知し、前記2台以外の他の計算機の前記ネットワークスイッチへの接続を受付け、該他の計算機を該障害で停止した計算機の交代機として、前記2台のうちの稼働中の計算機とI/O処理を同期して実行するように、前記計算機、前記ネットワークスイッチ、前記ストレージスイッチ、および前記外部記憶装置を制御する制御手段を有し、前記制御手段は、前記2台の計算機のうちの一方が障害で停止した際、前記2台のうちの稼働中の計算機がアクセスしている論理ボリュームの複製を前記複製手段により作成するよう該外部記憶装置に指示し、該指示に応じて作成された論理ボリュームの複製を前記他の計算機からアクセスできるように前記ストレージスイッチを制御する。
【発明の効果】
【0014】
このように本発明によれば、多重系によるフォールトトレラントコンピュータ(FTC)において、ハードウェア障害が発生した場合の、多重系運転への復旧時間を短縮することができる。すなわち、本発明によれば、多重系で構成するFTCがハードウェア障害で単系運転になった場合に、高速に多重系による運転に復帰させ、単系で運転する時間を短縮し、信頼性の高いフォールトトレラントコンピュータを実現することができる。
【発明を実施するための最良の形態】
【0015】
以下、本発明の実施形態について図面を用いて説明する。
《第1実施形態》
先ず、本発明の第1実施形態について説明する。
【0016】
図1は、本発明の第1実施の形態における、フォールトトレラントコンピュータ(FTC)のハードウェア構成図である。なお、第1実施形態の説明では、3台の計算機(動作させる2台の計算機および待機用の1台の計算機)を用いる場合の例を説明するが、計算機の数は、例示に過ぎない。第1実施形態のFTCでは、少なくとも2台の計算機(動作させる2台の計算機)が設けられていればよい。
【0017】
図示するように、第1実施形態のFTCは、3台の計算機ノード100a〜cと、ネットワークスイッチ130と、ストレージ装置140と、FTC制御装置160と、ストレージスイッチ170と、を有する。計算機ノード100a〜cは、各々、ネットワークスイッチ130を介して相互に接続されている。また、各計算機ノード100a〜c(単に「ノード100a〜c」ということもある)と、ストレージ装置140とは、ストレージスイッチ170を介して相互に接続されている。FTC制御装置160は、ネットワークスイッチ130に接続されている。また、FTC制御装置160は、ストレージスイッチ170に接続されている。
【0018】
ノード100aは、各種の情報処理を実行する。ノード100aは、CPU101、メモリ102、ディスクアダプタ103、外部ネットワークアダプタ104、内部ネットワークアダプタ105、これらを接続するバス、およびバスを管理するバス制御装置106を有する。なお、残りのノード100b〜cも、ノード100aと同じ構成である。ディスクアダプタ103は、複数のノードで1つのストレージ装置140を共有可能な接続方式を用いるアダプタである。例えば、ファイバチャネルによる。外部ネットワークアダプタ104および内部ネットワークアダプタ105は、各々、ネットワークスイッチ130に接続されている。
【0019】
ネットワークスイッチ130は、複数のノード100a〜cや外部のネットワークと接続するための複数のポートを持つ。また、それらのポートをグループ分けして、グループ内のポートに接続するネットワークやノード100だけで、他から分離されたネットワークを構成できるものとする。
【0020】
FTC制御装置160は、FTCのシステム全体の制御を行う。FTC制御装置160には、CPUおよびメモリを有する計算機を用いることができる。なお、FTC制御装置160と各ノード100の内部ネットワークアダプタ105とは、ネットワークスイッチ130により分離されたネットワーク(以下、内部LAN)を構成する。そして、FTC制御装置160は、FTCの構成を制御するプログラム(後述するFTC制御プログラム210)を実行することにより、内部LAN経由でノード100、ネットワークスイッチ130、ストレージスイッチ170およびストレージ装置140を操作して、各機器間の接続を設定し、全体としてFTCの構成を設定する処理を行う。
【0021】
また、各ノード100のディスクアダプタ103は、ストレージスイッチ170を介して、ストレージ装置140に接続している。ストレージ装置140は、記憶装置となるディスク記憶装置142と、装置を制御するディスクコントローラ141とを有する。なお、図示する例では、ディスク記憶装置142を1つだけしか示していないが、ディスク装置142が複数で構成されていても良い。
【0022】
ストレージ装置140のディスクコントローラ141は、ストレージ装置140内部に複数の論理的なボリュームを構成する機能を持つ。各ノード100で実行するプログラムからは、論理ボリュームは、1つの外部記憶装置と同等に参照(アクセス)される。ディスクコントローラ141は、論理ボリュームと実際のディスク記憶装置142の領域との対応付けを管理している。また、ディスクコントローラ141は、論理ボリュームの複製を巨視的には瞬時に作成する機能(以下「スナップショット機能」という)を有している。
【0023】
また、ストレージ装置140は、ネットワークスイッチ130を介して、内部LANに接続する。ストレージ装置140は、この接続を介して(内部LANを介して)各種の設定が可能である。
【0024】
ストレージスイッチ170は、複数のノード100とストレージ装置140とを接続する複数のポートを有する。ストレージスイッチ170は、ネットワークスイッチ130と同様に、ノード100が接続するポートと、ストレージ装置140が接続するポートとを接続し、ノード100からストレージ装置140内の論理ボリュームにアクセスするためのパスを構成する。
【0025】
ストレージスイッチ170は、ネットワークスイッチ130を介して、内部LANに接続する。ストレージスイッチ170は、この接続を介して(内部LANを介して)各種の設定が可能である。
【0026】
本実施形態では、2つのノード100、例えば、ノード100aとノード100bとで二重系のFTCを構成する。残りのノード100cは、FTCを構成するノードでハードウェア障害が発生した際の、障害ノードのバックアップとして待機させておく。1つのノード100(ここでは、ノード100aおよび100bのいずれか一方)で障害が発生すると、FTC制御装置160で実行するFTC制御プログラム210が、ノード100c、ネットワークスイッチ130、ストレージ装置140、および、ストレージスイッチ170を操作して全体のネットワーク接続と論理ボリューム接続を変更し、FTCを二重系運転へ復旧する。この場合、ストレージ装置140のスナップショット機能を利用して、稼働中のノードが接続する論理ボリュームの複製を瞬時に作成し、これを交代ノードに接続することで、ディスク内容の一致化を高速に行う。
【0027】
FTC制御装置160と各ノード100では、業務を実行するアプリケーションのほかに、FTC自体を制御するプログラムも実行する。次に、これらのプログラムについて図2を用いて説明する。
【0028】
図2は、本発明の第1実施形態における、プログラムの構成を示す図である。なお、以下では、ノード100aと100bとがFTCを構成し、ノード100cは、待機状態にあるものとする。なお、各プログラムは、ノード100およびFTC制御装置160の主メモリにロードされCPUに実行されるものであるが、以下の説明ではプログラムが実行すると記す(ノード100或いはFTC制御装置160のCPUが各プログラムを実行することにより以下に示す処理は実現されるが、説明を簡略化するために、プログラムを処理主体として説明する)。なお、本実施形態では、ノード100が実行する各プログラム(アプリケーションプログラム201、OS202、仮想デバイスドライバ203、ノード制御プログラム204、およびデバイスドライバ205)は、ストレージ装置140に格納されているものとする。そして、計算機ノード100は、ストレージ装置140から上記の各プログラムをロードして実行する。
【0029】
図2では、ノード100aとノード100bとが内部ネットワークアダプタ105で内部LANを構成し、計算機ノード100aに論理ボリュームの「WVOL1」および「SYSVOL1」が接続され、さらに、ノード100bに論理ボリュームの「WVOL2」および「SYSVOL2」が接続されてFTCを構成している様子を示している。
【0030】
ノード100aでは、OS202上でアプリケーションプログラム201が実行されている。ノード100aのOS202には、ハードウェアへのアクセスを提供する仮想デバイスドライバ203がロードされる。仮想デバイスドライバ203は、実際にノード100aに接続しているI/Oアダプタを仮想化したインタフェースをOS202に提供する。仮想デバイスドライバ203は、ノード制御プログラム204と連携して、OS202、あるいは、ノード制御プログラム204からのI/O要求を処理する。I/O要求は、プログラムの実行により発生する要求と、デバイスが発生する割り込み要求を含む。なお、図示する例では、仮想デバイスドライバ203を1つだけ示したが、複数の仮想デバイスドライバが存在する。例えば、ディスク用とネットワーク用の仮想デバイスドライバが存在する。
【0031】
ノード制御プログラム204は、FTCを構成するノード(ここでは、ノード100a、100b)の処理進行の同期を取る。具体的には、ノード制御プログラム204は、仮想デバイスドライバ203からのI/O要求処理をデバイスドライバ205に渡す、あるいは、デバイスドライバ205からの割り込み要求を受け付け、仮想デバイスドライバ203に連絡する。この場合に、ノード制御プログラム204は、内部LANを通じてもう1つのノード100bで実行するノード制御プログラムと連絡しあい、2つのノード100間のI/O操作が同期して実行されるように制御する。これによって、2つのノード100aおよび100bの同期実行を実現する。
【0032】
また、ノード制御プログラム204は、2つのノード100aおよび100bの主従関係を管理する。例えば、ノード制御プログラム204間で互いの生死や運転モードの状況を含むハートビートメッセージを交換することにより、主従の関係を構築する。ノード制御プログラム204は、FTCの外部に影響を及ぼすようなI/Oの操作について、実際にI/O操作を行うかを決定する。例えば、従系側のノードからは実際のI/O操作をしない。実際のI/O操作をしない場合は、もう一方の主系のノード100との連携で、I/O処理をしているように上位の仮想デバイスドライバ203に見せかける。このような処理が必要なデバイスは、例えば、外部ネットワークアダプタ104である。
【0033】
また、ノード制御プログラム204は、FTCを構成するノード100間で同期実行を開始するための一致化処理を行う。この一致化処理は、両方のノードで同一の処理の実行を開始するように、両方のノードのメモリ内容の一致化処理と、論理ボリュームの一致化処理を含む。これらの一致化処理については、後述する。
【0034】
なお、ノード制御プログラム204は、OS202と独立して実行されるプログラムである。ノード制御プログラム204は、OS202がメモリにロードされる前にロードされ、ノード100のCPU101により実行される。デバイスドライバ205は、ノード制御プログラム204の管理下にあり、OS202からは独立している。また、OS202は、ノード制御プログラム204の管理下でロードされ、実行される。このような構成は、仮想化の技術を適用することで実現可能である。なお、ノード100bもノード100aと同じプログラムを実行している。
【0035】
FTC制御装置160は、FTCの構成を制御するFTC制御プログラム210を実行する。FTC制御プログラムは、復旧処理プログラム211、ネットワーク構成プログラム212、およびストレージ構成プログラム213を含んでいる。
【0036】
復旧処理プログラム211は、ノード100に障害が発生した際に、FTCを二重系運転へ復旧させるためのプログラムである(復旧処理プログラム211については後段で詳細に説明する)。
【0037】
ネットワーク構成プログラム212は、各ノード100の内部・外部ネットワークアダプタ104、105のネットワークへの接続を制御する。ネットワーク構成プログラム212は、ネットワークスイッチ130を操作し、内部LANを確立する。また、ネットワーク構成プログラム212は、ノード100の外部ネットワークアダプタ104を外部LAN150に接続するようにネットワークスイッチ130を制御して、FTCの対外的な接続を確立する。
【0038】
ストレージ構成プログラム213は、ノード100のディスクアダプタ103と、ストレージ装置140内の論理ボリューム間の接続を確立する。具体的には、ストレージ構成プログラム213は、ストレージスイッチ170とディスクコントローラ141とを制御して、各ノード100に論理ボリュームを接続する(例えば、ノード100aに論理ボリューム「WVOL1」および「SYSVOL1」を接続する)。
【0039】
ストレージ装置140は、論理ボリュームを提供する。図示する例は、論理ボリュームの構成の一部を示したものである。図中のカッコ内の数値は論理ボリュームを識別するIDである。論理ボリュームの構成は、後述する。
【0040】
次に、FTC制御プログラム210が管理するデータについて、図3を用いて説明する。図3は、FTC制御プログラム210により管理されるデータのデータ構造を模擬的に示した図である。なお、以下では、構成テーブル300および接続テーブル310〜330がFTC制御装置160に保持されている場合を例にするが、特にこれに限定するものではない。例えば、構成テーブル300および接続テーブル310〜330がストレージ装置140に保持されていてもかまわない。
【0041】
構成テーブル300は、各ノード100a〜c、ネットワークスイッチ130、ストレージスイッチ170、ストレージ装置140、FTC制御装置160間の接続や、ストレージ装置140内の論理ボリュームに関する管理データを記録するためのテーブルである。
【0042】
具体的には、構成テーブル300は、各項目を登録するエントリ301と、エントリ301に対応するデータを登録するためのエントリ302とを有する。
【0043】
構成テーブル300の中の「FTCノード1」および「FTCノード2」が登録されているエントリ301に対応するエントリ302には、現状のFTCを構成しているノード100を識別する情報が登録される。この例では、ノード1(node1)とノード2(node2)とでFTCを構成していることを示す。なお、本実施形態の説明では、「ノード1(node1)」がノード100aを指し、「ノード2(node2)」がノード100bを指し、「ノード3(node3)」がノード100cを指す。
【0044】
構成テーブル300の「ノード1」、「ノード2」、「ノード3」が登録されているエントリ301に対応するエントリ302には、各々、各ノード100の接続情報を保持する接続テーブル310、320、330を指定するデータが登録されている。「ノード1」が指し示す接続テーブル310には、「ノード1」に関する情報が保持されている。具体的には、接続テーブル310には、ノード1のノード名、ノード1が有する内部ネットワークアダプタ105が接続するネットワークスイッチ130のポート番号、外部ネットワークアダプタ104が接続するネットワークスイッチ130のポート番号、内部ネットワークアダプタ105に設定するネットワークアドレス、ディスクアダプタ103が接続するストレージスイッチ170のポート番号が保持されている。なお、テーブル320およびテーブル330も同様の内容の情報を保持している。
【0045】
構成テーブル300の説明に戻る。構成テーブル300の中の「FTC制御装置接続ポート」が登録されているエントリ301に対応するエントリ302には、FTC制御装置160が接続するネットワークスイッチ130のポート番号が登録されている。また、「ストレージ装置接続ポート」が登録されているエントリ301に対応するエントリ302には、ストレージ装置140が接続するストレージスイッチ170のポート番号が登録されている。「外部LAN接続ポート」が登録されているエントリ301に対応するエントリ302には、外部LAN150が接続するネットワークスイッチ130のポート番号が登録されている。
【0046】
また、構成テーブル300の「FTC制御装置アドレス」が登録されているエントリ301に対応するエントリ302には、FTC制御装置160に設定されるネットワークアドレスが登録されている。「ストレージ装置アドレス」が登録されているエントリ301に対応するエントリ302には、ストレージ装置140に設定されるネットワークアドレスが登録されている。また、「ストレージスイッチアドレス」が登録されているエントリ301に対応するエントリ302には、ストレージスイッチ170に設定されるネットワークアドレスが登録されている。
【0047】
構成テーブル300の「WVOL1」が登録されているエントリ301に対応するエントリ302には、FTCを構成するノード1(FTCノード1)が利用するOS202、仮想デバイスドライバ203、アプリケーションプログラム201やそれらの実行に必要なデータが格納されている論理ボリュームのIDが登録される。同様に、「WVOL2」が登録されているエントリ301に対応するエントリ302には、FTCを構成するノード2(FTCノード2)が利用するOS202、仮想デバイスドライバ203、アプリケーションプログラム201やそれらの実行に必要なデータが格納されている論理ボリュームのIDが登録される。この例では、FTCノード1は、IDが「1」の論理ボリュームに接続することを示す。FTCノード2は、IDが「2」の論理ボリュームに接続することを示す。ストレージ装置140にアクセスするデバイスドライバ205は、この論理ボリュームIDによって、上位層からのアクセスが適切な論理ボリュームに接続するように制御する。
【0048】
構成テーブル300の「SYSVOL1」および「SYSVOL2」が登録されているエントリ301に対応するエントリ302には、FTCを構成するノード100(FTCノード1、2)が参照するノード制御プログラム204、デバイスドライバ205を格納する論理ボリュームのIDが登録される。構成テーブル300の「SYSBK1」および「SYSBK2」が登録されているエントリ301に対応するエントリ302には、各々、「SYSVOL1」、「SYSVOL2」のバックアップを保持する論理ボリュームのIDが登録される。
【0049】
続いて、ストレージ装置140が作成する論理ボリュームの構成について、図4を用いて説明する。
【0050】
図4は、本実施形態の論理ボリュームの構成例を示した図である。
【0051】
論理ボリューム221と223(WVOL1、2)は、OS202、仮想デバイスドライバ203、アプリケーションプログラム201を含む論理ボリュームである。そして、論理ボリューム221(WVOL1)は、FTCノード1に接続される。論理ボリューム223(WVOL2)は、FTCノード2に接続される。
【0052】
論理ボリューム222、224(SYSVOL1、2)は、ノード制御プログラム204とデバイスドライバ205を含む論理ボリュームである。論理ボリューム222(SYSVOL1)は、FTCノード1に接続される。論理ボリューム224(SYSVOL2)は、FTCノード2に接続される。また、論理ボリューム222、224(SYSVOL1、2)には、それぞれ、バックアップ用の論理ボリューム225、226(SYSBK1、2)が設けられる。なお、FTC制御装置160は、ストレージ構成プログラム213を実行することにより、それぞれの論理ボリュームがテーブル300に記載のIDを持つよう、ディスクコントローラ141を設定する。
【0053】
次に、FTCの構成手順について、図5を用いて説明する。ここで、構成手順とは、ネットワークとストレージの接続を設定する手順をいうものとする。
【0054】
図5は、本発明の実施形態のFTCの構成処理の手順を示すフローチャートである。この手順は、FTCを起動する前の準備段階の手順に相当する。この構成手順は、FTC制御プログラム210内に組み込まれている。なお、以下に示す処理は、FTC制御装置160のCPUがFTC制御プログラム210を実行することにより実現されるが、説明を簡略化するために、FTC制御プログラム210を処理主体として説明する。
【0055】
まず、FTC制御プログラム210は、構成テーブル300(図4参照)から、FTCを構成するノードを示すデータを取得する(S401)。これは、テーブル300の「FTCノード1」および「FTCノード2」が登録されているエントリ301に対応付けられたエントリ302に登録されている。
【0056】
次に、FTC制御プログラム210は、論理ボリュームをFTCの構成ノードに接続する。具体的には、FTC制御プログラム210は、構成テーブル300からFTCノードに接続する論理ボリュームのID(例えば、WVOL1とSYSVOL1)、ノードのディスクアダプタ103が接続するストレージスイッチ170のポート番号、ストレージ装置140が接続するストレージスイッチ170のポート番号を取得する。そして、ノードのディスクアダプタ103が接続しているポートを、ストレージ装置140が接続するポートに接続するよう、ストレージスイッチ170を制御する。更に、FTC制御プログラム210は、構成テーブル300から取得した論理ボリュームIDによるディスクアクセスを、ストレージ装置140内の物理的なボリュームに関連付けるよう、ディスクコントローラ141を制御する。
【0057】
次に、FTC制御プログラム210は、ノードのネットワーク接続の設定を行う(S403、404)。具体的には、FTC制御プログラム210は、S403において、内部ネットワークアダプタ105を内部LANに接続するよう、ネットワークスイッチ130を制御する。また、FTC制御プログラム210は、S404において、外部ネットワークアダプタ104を外部LANに接続するよう、ネットワークスイッチ130を制御する。S403およびS404において、FTC制御プログラム210は、構成テーブル300、接続構成テーブル310、320を参照し、各ネットワークアダプタがネットワークスイッチ130のどのポートに接続しているかを取得し、各ポートと各LANの関連付けを実施する。
【0058】
最後に、FTC制御プログラム210は、FTC制御装置160を内部LANに接続する(S405)。これも、構成テーブル300に登録された情報を元に、ネットワークスイッチ130のポートとLANとの関連付けを実施する。
【0059】
以上の構成処理により、ノード100aとノード100bとがFTCとして実行可能となる。なお、FTCの起動は、まず、ノード100を起動してノード制御プログラム204を実行する。次に、ノード制御プログラム204にOS202の実行を指示する。最後に、計算機ノード100間の同期化処理を実施すると、2つの計算機ノード100は、同期したプログラム実行を開始する。
【0060】
この同期化処理は、ノード制御プログラム204に含まれている。同期化処理は、一旦、OS202の実行を中断し、2つのノード100のメモリを同じ内容とし、かつ、それぞれが接続する業務用の論理ボリューム(WVOL1,2)の内容を一致させ、それから、OS202の実行を再開する。この後、ノード制御プログラム204が、仮想デバイスドライバ203やデバイスドライバ205が発するI/O要求を横取りして、上位のOS202のI/O処理を同期化する。これにより、2つのノードが同期して実行する。
【0061】
続いて、この同期化処理の手順について、図6を用いて説明する。図6は、本発明の実施形態の同期化処理の手順を示すフローチャートである。なお、以下では、ノード1(ノード100a)とノード2(ノード100b)が実行していて(稼動していて)、且つノード1が主系として実行する場合を例にして説明する。また、以下で説明する処理は、FTC制御装置160がFTC制御プログラム210を実行することにより、或いは、ノード100が各プログラム(仮想デバイスドライバ203、ノード制御プログラム204、デバイスドライバ205)を実行することにより実現されるものである。しかし、以下では、説明を簡略化するために、各プログラム(FTC制御プログラム210、仮想デバイスドライバ203、ノード制御プログラム204、デバイスドライバ205)を処理主体として説明する。
【0062】
FTC制御プログラム210は、同期化処理を開始する際に、主系とするノード100aに同期化処理を開始するように、内部LANを介して指示する。ノード100aのノード制御プログラム204は、FTC制御プログラム210からのメッセージを受信するまでを待機している。ノード100aのノード制御プログラム204は、FTC制御プログラム210からのメッセージを受信した場合、
OS202の実行を中断して同期化処理を開始する(S501)。
【0063】
ノード100aのノード制御プログラム204は、もう一方のノードであるノード100bにメモリ一致化処理を開始する旨を、内部LANを介して連絡する(S502)。ノード100bのノード制御プログラム204は、メッセージ(メモリ一致化処理を開始する旨のメッセージ)を受信した場合、OS202の実行を中断して、メモリ内容の受信を待機する状態に遷移する(S503)。
【0064】
次に、ノード100aのノード制御プログラム204は、自身のメモリ102の内容をノード100bに送信する(S504)。なお、本ステップにおいて、ノード100aのノード制御プログラム204は、すべてのメモリ内容を送信する必要はなく、OS202、仮想デバイスドライバ203、アプリケーションプログラム201の実行に必要な部分の送信でよい。ノード100aは、メモリ内容の送信後、論理ボリューム一致化の完了通知を待機する(S505)。
【0065】
ノード100bのノード制御プログラム204は、S504にて送信されたメモリ内容を受信し、受信したメモリ内容をノード100bのメモリに格納する(S506)。
【0066】
ノード100bのノード制御プログラム204は、メモリ内容の受信が終了すると、FTC制御プログラム210に「WVOL2」の「WVOL1」との一致化を要求し(S507)、完了後、その旨をノード100aに通知する(S508)。この段階で、ノード100aとノード100bとは、同じメモリ内容と、同じ内容の論理ボリュームを持つこととなる。ノード100aのノード制御プログラム204は、同期化処理を終了し、OS202の実行を再開する(S510)。一方、ノード100bでは、ノード制御プログラム204は、実行制御を強制的にS510に移し(S509)、同期化処理を終了し、OS202の実行を再開する。この際、ノード100bのメモリは、ノード100aと同一となっているので、ノード100bは、ノード100aと同じ処理の実行を始めることになる。
【0067】
次に、論理ボリュームの一致化手順について、図7を用いて説明する。
【0068】
図7は、本発明の実施形態の論理ボリュームの一致化処理の手順を示すフローチャートである。この処理は、FTC制御プログラム210に実装される。なお、図7で示す論理ボリュームの一致化処理は、FTC制御装置160のCPUがFTC制御プログラム210を実行することにより実現されるものである。しかし以下では、説明を簡略化するために、FTC制御プログラム210を処理主体として説明する。なお、本実施の形態では、ストレージ装置140が、論理ボリュームの複製機能を有しているものとする。
【0069】
まず、FTC制御プログラム210は、作成する複製論理ボリュームと同じIDの論理ボリュームが存在している場合、そのボリュームを削除する(S601)。
【0070】
続いて、FTC制御プログラム210は、複製元論理ボリュームの、現状での
複製を作成するようにディスクコントローラ141に指示する(S602)。この場合、ストレージ装置140内では、実際のボリューム内容のコピーは発生せずに、論理的に同じ内容を持つ複製とすることが可能である。このため、この処理は、実際に内容をコピーする場合に比べて、短時間で終了する。
【0071】
そして、最後に、FTC制御プログラム210は、作成された論理ボリュームに新しいIDを設定する(S603)。例えば、「WVOL2」に相当する論理ボリュームを「WVOL1」から複製したならば、構成テーブル300から「WVOL2」の論理ボリュームIDを取得し、そのIDを設定する。図3の例ならば、IDとして「2」を設定する。
【0072】
以上の処理で、2つのノード100で、OS202とアプリケーションプログラム201が、同期して同じ処理を実行する二重系が構成される。
【0073】
次に、一方のノードがハードウェア障害で停止した場合の二重系への復旧処理手順について説明する。本実施形態では、ストレージ装置140のスナップショット機能を用いて、復旧処理の高速化を実現する。
【0074】
図8は、本発明の実施形態の復旧処理の手順を示すフローチャートである。この処理は、FTC制御装置160で実行する復旧処理プログラム211に実装され、ノード100の1つがハードウェア障害でダウンした際に実行される。ここでは、ノード100aが、ノード100bの停止を検知して、復旧手順を開始する場合を例にして説明する。
【0075】
なお、以下で示す復旧処理は、FTC制御装置160が復旧処理プログラム211を実行し、ノード100がノード制御プログラム204を実行することにより実現されるものである。しかし以下では、説明を簡略化するために、各プログラム(復旧処理プログラム211、ノード制御プログラム204)を処理主体として説明する。
【0076】
まず、ノード100aのノード制御プログラム204は、ノード100bのダウン(障害の発生)を検知すると、FTC制御装置160の復旧処理プログラム211に、二重系への復帰処理の開始を依頼する(S701)。復旧処理プログラム211は、依頼メッセージを受信し、復旧処理を開始する。
【0077】
復旧処理プログラム211は、構成テーブル300を参照して、待機中のノードを検索する。この例では、ノード100cが待機中である。そして、構成テーブル300に、このノード100cをノード100bの代替ノードとして登録する。すなわち、FTCノード2として、ノード3(ノード100c)を登録する(S702)。
【0078】
次に、復旧処理プログラム211は、FTCノード2用のシステムボリュームのバックアップ(SYSBK2)の複製を作成する。具体的には、今までのSYSVOL2論理ボリュームを削除し、SYSBK2の複製を作成し、この複製にSYSVOL2の論理ボリュームIDを設定する(S703)。
【0079】
そして、作成した論理ボリュームを、ノード100cが接続するストレージスイッチ170のポートから参照可能なように(アクセス可能なように)、ストレージスイッチ170を制御する(S704)。具体的には、ノード100cがストレージスイッチ170に接続しているポートと、ストレージ装置140のポートを接続するように設定する。
【0080】
次に、復旧処理プログラム211は、ネットワークスイッチ130を操作して、ノード100bのネットワークアダプタ104が接続しているポートをネットワークから切り離し、新たに、ノード100cが接続しているポートをネットワークスイッチ130に接続する。具体的には、ノード100cの内部ネットワークアダプタ105を内部LANに、外部ネットワークアダプタ104を外部LAN150に接続する(S705)。
【0081】
ここで、ノード100cを起動し(ステップ706)、ノード制御プログラムの起動完了を待機し、完了後にノード100aに完了を通知する。(S707)。
ノード100aのノード制御プログラム204は、ノード100cからの起動完了の通知を受信すると、同期化処理を開始する(S708)。ここでの同期化処理は、上述したS501からS510の処理である。但し、図6において、ノード100bで実行すると説明した処理は、ノード100cのノード制御プログラムが実行する。この処理の中で、WVOL1と同じ内容を持つ論理ボリュームWVOL2の作成と、メモリ一致化が実施される。これにより、ノード100cがノード100aと同期して実行を開始する。以上により、FTCを構成するノード100のハードウェア障害から二重系運転へと復帰する。
【0082】
続いて、本実施形態のおける、FTC構成を実現するのに必要な、初期設定処理について図9を用いて説明する。
【0083】
図9は、本発明の実施形態の初期設定処理の手順を示すフローチャートである。ここで、FTC制御プログラム210には、初期の論理ボリューム構成をストレージ装置140に作成する処理と、構成テーブル300を作成する処理を実現するためのプログラムを含んでいるものとする。また、以下で示す初期設定処理は、FTC制御装置160がFTC制御プログラム210を実行することにより実現されるものであるが、説明を簡略化するために、FTC制御プログラム210を処理主体として説明する。
【0084】
FTC制御プログラム210は、構成テーブル300を初期化する。まず、ノードの接続状態を保持する各ノードの接続テーブル310、320、330を作成し(S1101)、構成テーブル300のネットワーク接続、ストレージ接続に関するデータを初期化する(S1102)。なお、テーブルの内容は、ユーザの指示による。
【0085】
次に、FTC制御プログラム210は、各論理ボリュームのIDを決定し、テーブル300に記録する(S1103)。ここで決定したIDに合わせて、各種論理ボリュームを作成していく(FTC制御プログラム210は、ディスクコントローラ141を制御して、各種論理ボリュームを作成する)。
【0086】
FTC制御プログラム210は、ノード制御プログラム204とデバイスドライバ205を保持するための「SYSVOL1」、「SYSVOL2」を作成する(S1104)。
【0087】
「SYSVOL1」には、ノード制御プログラム204とデバイスドライバ205とを格納する。格納する際、いくつかの設定が必要になる。例えば、ノード制御プログラム204およびデバイスドライバ205自身が実行するのに必要となるストレージ装置140への参照は、テーブル300のSYSVOL1に設定された論理ボリュームIDで参照するようにする。また、仮想デバイスドライバ203からの参照はWVOL1に設定された論理ボリュームIDで、デバイスドライバ205がストレージを参照するように設定する。また、内部ネットワークアダプタ104のネットワークアドレスを構成テーブル300より取得して設定する。SYSVOL2も同様にして作成する。
【0088】
次に、FTC制御プログラム210は、作成したSYSVOL1、2を複製して、SYSBK1、2を作成する(S1105)。
【0089】
最後に、FTC制御プログラム210は、WVOL1、2を作成する(S1106)。WVOL1には、OS202、ノード制御プログラム204と連携するように設定された仮想デバイスドライバ203、アプリケーションプログラム201、およびこれらの実行に必要な設定情報を格納する。WVOL2は、WVOL1の複製として作成する。以上により、FTCの初期状態を設定することができる。
【0090】
このように、本発明の第1実施形態によれば、2つのノード100が参照する外部記憶装置の一致化で、外部記憶装置間のコピーが発生しないため、2つのノード100が参照するボリュームの一致化処理が短時間で完了する。また、ハードウェア故障時に備えて待機のノードをおくこと、および、FTCノード間、ストレージ装置間の接続にプログラムで制御可能なネットワークスイッチ130とストレージスイッチ170を介することで、待機ノードのFTCへの組み込みを自動化できる。
【0091】
従来のFTCでは、ハードウェアの構成要素は完全に二重化するという考え方を採用している。これに従えば、FTCでは、外部記憶装置はそれぞれのノードが持ち(すなわち、ノード毎に外部記憶装置が設けられている)、ノード間の接続は物理的に直接接続する、といった形態になる。一方、本実施形態は、ハードウェアの信頼性が向上していることを利用して、ノード間の接続、および、ノードとストレージとの間の接続にスイッチを導入している。これにより、本実施形態では、FTC構成する装置の設定を自動化できるため、設定処理の手間を低減することができる。
【0092】
なお、従来のFTCでは、ノード間を直接接続するため、待機用のノードを準備しておくことは不可能である。第1実施形態では、機器間の接続をスイッチを介すことにより、ノードを予めスイッチに接続しておき、交代する際にプログラムで接続を変更することで、FTC構成の自動復旧を実現している。そのため、第1実施形態によれば、FTCの復旧処理の手間が軽減されることになる。
【0093】
なお、第1実施形態では、論理ボリュームの一致化を、復旧の際にスナップショットを取ることとしたが、論理ボリューム(例えば、WVOL1等)のコピー(ミラーボリューム)を保持するミラーを構成して(複製を複製対象の論理ボリュームのペアとして保持しておいて)、復旧の際にこのミラーリングを解除して、ミラーボリュームを復旧用の論理ボリュームとしてもよい。
《第2実施形態》
次に、本発明の第2実施形態について説明する。第2実施の形態では、第1実施形態においてFTC制御装置160で実行していたFTC制御プログラム210を、ノード100で実行するようにしている。なお、第2実施形態の説明において、第1実施形態と同じ構成については、同じ符号を用いることとする。また、第2実施形態の説明は、第1実施形態と異なる部分を中心に説明する。
【0094】
図10は、本発明の第2実施形態のプログラム配置、および、接続構成を説明するための図である。
【0095】
図示するように、第2実施形態のFTCは、第1実施形態の構成からFTC制御装置160を除き、FTC制御装置160の機能をノード100に持たせるようにしている。すなわち、第1実施形態では、FTC制御プログラム210をFTC制御装置160においていたが、第2実施の形態では、FTCを構成するノード100a、100b、100cの各々に、FTC制御プログラム210を配置するようにしている(図9ではノード100cを図示せず)。なお、ノード100a〜c、ネットワークスイッチ130、ストレージ装置140、およびストレージスイッチ170のハードウェア構成は、図1と同じである。
【0096】
第2実施形態では、FTC制御プログラム210(復旧処理プログラム211、ネットワーク構成プログラム212、ストレージ構成プログラム213を含む)は、ノード制御プログラム204の制御下で実行するように配置する。これにより、FTC制御プログラム210は、メモリ一致化やストレージ一致化といった処理を、ノード制御の処理とは無関係に実行でき、FTCの構成制御をFTCノード自身で実現することができる。また、第2実施形態によれば、FTCの外部に制御装置を配備しない構成を実現できる。
【0097】
なお、第2実施形態では、FTCを構成するノードでFTC制御プログラム210を実行することとしたが、交換用に待機しているノード100cでFTC制御プログラムを実行するようにしても良い。この場合、予め、ノード100cの内部ネットワークアダプタが内部LANに接続するようにネットワークスイッチ130の構成を設定しておけば良い。
《第3実施形態》
続いて、本発明の第3実施形態を説明する。第3実施形態は、ネットワークスイッチ130の障害によるシステムダウンを防止するために、FTCを構成するノード100間を、ネットワークスイッチ130を介さずに直接接続するようにしたものである。なお、第3実施形態の説明において、第1実施形態と同じ構成については、同じ符号を用いることとする。また、第3実施形態の説明は、第1実施形態と異なる部分を中心に説明する。
【0098】
図11に、本発明の第3実施形態のシステム構成を示す。図示するように、第3実施形態では、ノード100aの内部ネットワークアダプタ105と、ノード100bの内部ネットワークアダプタ105とを、互いに直接接続する。また、FTC制御装置160、ストレージスイッチ170、ストレージ装置140は、ネットワークスイッチ130を介して、同一ネットワークに接続するようネットワークスイッチの構成を設定する。各ノード100a〜cの外部ネットワークアダプタ104は、ネットワークスイッチ130に接続し、外部LAN150に接続するように、ネットワークスイッチ130が構成される。
【0099】
この構成では、障害復旧の際のFTC制御プログラム210からの指示は、ネットワークスイッチ130を介して、ストレージスイッチ170、ストレージ装置140に伝えられる。なお、第3実施形態では、交代ノード100を導入する場合には、ノード間の内部LANの接続は手動で配線をしなおす必要がある。これによって、内部LANの障害によりFTCとしての同期実行が不可能となる状況を避けられる。この構成では、復旧作業に人手が必要になるが、より信頼性を向上することが可能である。
【0100】
なお、本発明は以上で説明した実施形態に限定されるものではなく、本発明の要旨の範囲内において種々の変形が可能である。例えば、上述した各実施形態では、ストレージスイッチ170とネットワークスイッチ130を1台のみ示したが、これらを冗長化することも可能である。これによれば、ノード100とスイッチ間の接続を冗長化でき、かつ、スイッチも冗長となるので、完全に障害特異点を排除することが可能である。
【0101】
また、上記第1実施形態および第2実施形態では、ネットワークスイッチ130に待機用のノード100cを接続しておく場合を例にしたが特にこれに限定するものではない。ノード100を2台にしてもよい。例えば、ノード100a、ノード100b、ネットワークスイッチ130、ストレージ装置140、FTC制御装置160、およびストレージスイッチ170を有するシステムとして構成してもよい。この場合、ノード100aとノード100bとで二重系のFTCを構成しておいて、ノード100aおよびノード100bのいずれかが故障した際、ユーザがノード100cを新たにネットワークスイッチ130に接続する。例えば、ユーザが別の場所に置かれているノード100cを持ち込み、FTCのネットワークスイッチ130に接続する。なお、この場合、ノード100cのネットワークスイッチ130への接続作業だけは手動になる。
【0102】
また、上記第2実施形態の構成において、上記第3実施形態のように、ノード100aとノード100bとをネットワークスイッチ130を介さずに直接接続するようにしてもよい。
【図面の簡単な説明】
【0103】
【図1】本発明の第1実施の形態における、フォールトトレラントコンピュータ(FTC)のハードウェア構成図である。
【図2】本発明の第1実施形態における、プログラムの構成を示す図である。
【図3】本発明の第1実施形態におけるFTC制御プログラム210により管理されるデータのデータ構造を模擬的に示した図である。
【図4】本発明の実施形態の論理ボリュームの構成例を示した図である。
【図5】本発明の実施形態のFTCの構成処理の手順を示すフローチャートである。
【図6】本発明の実施形態の同期化処理の手順を示すフローチャートである。
【図7】本発明の実施形態の論理ボリュームの一致化処理の手順を示すフローチャートである。
【図8】本発明の実施形態の復旧処理の手順を示すフローチャートである。
【図9】本発明の実施形態の初期設定処理の手順を示すフローチャートである。
【図10】本発明の第2実施形態のプログラム配置、および、接続構成を説明するための図である。
【図11】本発明の第3実施形態のシステム構成を説明するための図である。
【符号の説明】
【0104】
100…計算機ノード、101…CPU、102…メモリ、103…ディスクアダプタ、104…外部ネットワークアダプタ、105…内部ネットワークアダプタ、130…ネットワークスイッチ、140…ストレージ装置、141…ディスクコントローラ、142…ディスク記憶装置、150…外部LAN、160…FTC制御装置、170…ストレージスイッチ、201…アプリケーションプログラム、202…OS、203…仮想デバイスドライバ、204…ノード制御プログラム、205…デバイスドライバ、210…FTC制御プログラム、211…復旧処理プログラム、212…ネットワーク構成プログラム、213…ストレージ構成プログラム、221〜226…論理ボリューム、300…構成テーブル、310〜330…接続テーブル
【技術分野】
【0001】
本発明は、ハードウェアの多重化によるフォールトトレラントコンピュータの技術に関し、特にフォールトトレラントコンピュータの障害の際の復旧処理の技術に関する。
【背景技術】
【0002】
計算機処理の信頼性および可用性を向上する方式として、フォールトトレラントコンピュータ(以下「FTC」という)を利用する方法がある。FTCは、計算機を構成するハードウェアを多重化し、多重化されたハードウェアで同期を取りながら同一の処理を実施し、それぞれの処理結果の妥当性を確認しながら、最終的な処理結果の出力を実施する形態の計算機システムである。
【0003】
FTCによれば、多重化されたハードウェアの1つで障害が発生しても他のハードウェアで処理が実行されるので、ハードウェアの故障によるダウンを回避できる。これにより、計算機システムの可用性を向上できる。従来のFTCでは、複数の計算機を専用の回線で接続し、その回線を用いて、クロック信号やCPU処理のレベルで処理の進行を同期する方式が採られている。また、近年では、ネットワークによる通信が高速になったことにより、FTCを構成する計算機間の接続を汎用のネットワークとする方式が出現している。
【0004】
非特許文献1には、計算機間の処理の同期をクロック信号やCPU命令実行のレベルではなく、I/O処理(割り込み処理も含む)のタイミングで一致化する方式が開示されている。
【0005】
ところで、FTCでは、ハードウェアの故障が発生した場合、その後の信頼性を確保するために、故障部位を交換しハードウェアの多重度を回復する必要がある。多重度の回復処理は、「FTCを構成する計算機のメモリ内容の一致化」、「外部記憶装置内容の一致化」、および「同期実行の再開」からなる。そして、FTCには、ハードウェアの故障が発生した場合、多重度の回復処理(多重系への復帰)に、時間がかかるという問題がある。さらに、多重度の回復処理の中の「外部記憶装置内容の一致化処理」は、FTCが実行する本来の処理の性能を低下させることがある。
【0006】
そのため、複数の計算機をネットワークで接続してFTCを構成する方式では、ハードウェアの故障が発生した場合、迅速に多重系への復帰させることが望まれている。なお、従来のFTCは、ハードウェア障害が発生した場合、故障ハードウェアの交換や配線の変更といった、人的な作業を伴うため、復旧に手間がかかるという問題も有している。
【0007】
特許文献1には、多重度の回復処理のうち、「外部記憶装置内容の一致化」を高速化する手法が開示されている。特許文献1では、復旧作業中に発生したディスクの更新分のみをコピーすることにより、外部記憶装置の一致化を高速化している。
【0008】
一方、ストレージ技術について、複数のディスク装置を格納し、内部の構成要素を冗長化し、それ単体で高度な信頼性を提供するストレージ装置が利用可能となっている。また、1つのストレージ装置内に、外部からはディスク装置に見える論理ボリュームを構成でき、その論理ボリュームのミラーリングや、高速な複製作成機能をストレージの側で実現しているものも存在している。
【0009】
【非特許文献1】“Marathon FT Virtual Server”, [online] [2005/02/17検索]、Marathon Technologies社Weサイト、インターネット<URL:http://www.marathontechnologies.com/products/ssdatasheetdraft6-1vf.pdf>
【特許文献1】特開2000−293389号公報
【発明の開示】
【発明が解決しようとする課題】
【0010】
しかしながら、上述した非特許文献1および特許文献1は、以下の問題を有している。具体的には、非特許文献1は、計算機間で処理を同期することについて考慮しているが、障害が発生した際の多重系への復帰処理を早めることについて特に考慮されていない。また、特許文献1は、多重系への回復処理のうち、「外部記憶装置内容の一致化」以外について特に考慮されていない。また、特許文献1の手法では、復旧作業中に発生したディスクの更新量が大きくなった場合、多重度の回復処に時間がかかってしまう。すなわち、特許文献1では、FTCにおいて、ハードウェアの故障が発生した際、多重系への復帰が迅速にできないことがある。
【0011】
本発明は、上記事情に鑑みてなされたものであり、本発明の目的は、FTCにおいて、ハードウェアの故障が発生した場合に、手間をかけずに迅速に多重系への復帰させることにある。
【課題を解決するための手段】
【0012】
上記課題を解決するため、本発明の一態様は、2台の計算機と、該計算機が共通に利用する外部記憶装置と、該計算機間を接続するネットワークスイッチと、該計算機と該外部記憶装置を接続するストレージスイッチとを有し、前記2台の計算機がI/O処理を同期して実行し、該2台の計算機でプログラム実行の二重化を行う計算機システムに適用される。ここで、前記外部記憶装置は、仮想的な外部記憶装置であって、前記計算機からアクセスされる論理ボリュームを作成する手段と、前記論理ボリュームの複製を作成する複製手段と、を有している。
【0013】
そして、前記計算機システムは、前記2台の計算機のうちの一方が障害で停止した際、該障害による停止を検知し、前記2台以外の他の計算機の前記ネットワークスイッチへの接続を受付け、該他の計算機を該障害で停止した計算機の交代機として、前記2台のうちの稼働中の計算機とI/O処理を同期して実行するように、前記計算機、前記ネットワークスイッチ、前記ストレージスイッチ、および前記外部記憶装置を制御する制御手段を有し、前記制御手段は、前記2台の計算機のうちの一方が障害で停止した際、前記2台のうちの稼働中の計算機がアクセスしている論理ボリュームの複製を前記複製手段により作成するよう該外部記憶装置に指示し、該指示に応じて作成された論理ボリュームの複製を前記他の計算機からアクセスできるように前記ストレージスイッチを制御する。
【発明の効果】
【0014】
このように本発明によれば、多重系によるフォールトトレラントコンピュータ(FTC)において、ハードウェア障害が発生した場合の、多重系運転への復旧時間を短縮することができる。すなわち、本発明によれば、多重系で構成するFTCがハードウェア障害で単系運転になった場合に、高速に多重系による運転に復帰させ、単系で運転する時間を短縮し、信頼性の高いフォールトトレラントコンピュータを実現することができる。
【発明を実施するための最良の形態】
【0015】
以下、本発明の実施形態について図面を用いて説明する。
《第1実施形態》
先ず、本発明の第1実施形態について説明する。
【0016】
図1は、本発明の第1実施の形態における、フォールトトレラントコンピュータ(FTC)のハードウェア構成図である。なお、第1実施形態の説明では、3台の計算機(動作させる2台の計算機および待機用の1台の計算機)を用いる場合の例を説明するが、計算機の数は、例示に過ぎない。第1実施形態のFTCでは、少なくとも2台の計算機(動作させる2台の計算機)が設けられていればよい。
【0017】
図示するように、第1実施形態のFTCは、3台の計算機ノード100a〜cと、ネットワークスイッチ130と、ストレージ装置140と、FTC制御装置160と、ストレージスイッチ170と、を有する。計算機ノード100a〜cは、各々、ネットワークスイッチ130を介して相互に接続されている。また、各計算機ノード100a〜c(単に「ノード100a〜c」ということもある)と、ストレージ装置140とは、ストレージスイッチ170を介して相互に接続されている。FTC制御装置160は、ネットワークスイッチ130に接続されている。また、FTC制御装置160は、ストレージスイッチ170に接続されている。
【0018】
ノード100aは、各種の情報処理を実行する。ノード100aは、CPU101、メモリ102、ディスクアダプタ103、外部ネットワークアダプタ104、内部ネットワークアダプタ105、これらを接続するバス、およびバスを管理するバス制御装置106を有する。なお、残りのノード100b〜cも、ノード100aと同じ構成である。ディスクアダプタ103は、複数のノードで1つのストレージ装置140を共有可能な接続方式を用いるアダプタである。例えば、ファイバチャネルによる。外部ネットワークアダプタ104および内部ネットワークアダプタ105は、各々、ネットワークスイッチ130に接続されている。
【0019】
ネットワークスイッチ130は、複数のノード100a〜cや外部のネットワークと接続するための複数のポートを持つ。また、それらのポートをグループ分けして、グループ内のポートに接続するネットワークやノード100だけで、他から分離されたネットワークを構成できるものとする。
【0020】
FTC制御装置160は、FTCのシステム全体の制御を行う。FTC制御装置160には、CPUおよびメモリを有する計算機を用いることができる。なお、FTC制御装置160と各ノード100の内部ネットワークアダプタ105とは、ネットワークスイッチ130により分離されたネットワーク(以下、内部LAN)を構成する。そして、FTC制御装置160は、FTCの構成を制御するプログラム(後述するFTC制御プログラム210)を実行することにより、内部LAN経由でノード100、ネットワークスイッチ130、ストレージスイッチ170およびストレージ装置140を操作して、各機器間の接続を設定し、全体としてFTCの構成を設定する処理を行う。
【0021】
また、各ノード100のディスクアダプタ103は、ストレージスイッチ170を介して、ストレージ装置140に接続している。ストレージ装置140は、記憶装置となるディスク記憶装置142と、装置を制御するディスクコントローラ141とを有する。なお、図示する例では、ディスク記憶装置142を1つだけしか示していないが、ディスク装置142が複数で構成されていても良い。
【0022】
ストレージ装置140のディスクコントローラ141は、ストレージ装置140内部に複数の論理的なボリュームを構成する機能を持つ。各ノード100で実行するプログラムからは、論理ボリュームは、1つの外部記憶装置と同等に参照(アクセス)される。ディスクコントローラ141は、論理ボリュームと実際のディスク記憶装置142の領域との対応付けを管理している。また、ディスクコントローラ141は、論理ボリュームの複製を巨視的には瞬時に作成する機能(以下「スナップショット機能」という)を有している。
【0023】
また、ストレージ装置140は、ネットワークスイッチ130を介して、内部LANに接続する。ストレージ装置140は、この接続を介して(内部LANを介して)各種の設定が可能である。
【0024】
ストレージスイッチ170は、複数のノード100とストレージ装置140とを接続する複数のポートを有する。ストレージスイッチ170は、ネットワークスイッチ130と同様に、ノード100が接続するポートと、ストレージ装置140が接続するポートとを接続し、ノード100からストレージ装置140内の論理ボリュームにアクセスするためのパスを構成する。
【0025】
ストレージスイッチ170は、ネットワークスイッチ130を介して、内部LANに接続する。ストレージスイッチ170は、この接続を介して(内部LANを介して)各種の設定が可能である。
【0026】
本実施形態では、2つのノード100、例えば、ノード100aとノード100bとで二重系のFTCを構成する。残りのノード100cは、FTCを構成するノードでハードウェア障害が発生した際の、障害ノードのバックアップとして待機させておく。1つのノード100(ここでは、ノード100aおよび100bのいずれか一方)で障害が発生すると、FTC制御装置160で実行するFTC制御プログラム210が、ノード100c、ネットワークスイッチ130、ストレージ装置140、および、ストレージスイッチ170を操作して全体のネットワーク接続と論理ボリューム接続を変更し、FTCを二重系運転へ復旧する。この場合、ストレージ装置140のスナップショット機能を利用して、稼働中のノードが接続する論理ボリュームの複製を瞬時に作成し、これを交代ノードに接続することで、ディスク内容の一致化を高速に行う。
【0027】
FTC制御装置160と各ノード100では、業務を実行するアプリケーションのほかに、FTC自体を制御するプログラムも実行する。次に、これらのプログラムについて図2を用いて説明する。
【0028】
図2は、本発明の第1実施形態における、プログラムの構成を示す図である。なお、以下では、ノード100aと100bとがFTCを構成し、ノード100cは、待機状態にあるものとする。なお、各プログラムは、ノード100およびFTC制御装置160の主メモリにロードされCPUに実行されるものであるが、以下の説明ではプログラムが実行すると記す(ノード100或いはFTC制御装置160のCPUが各プログラムを実行することにより以下に示す処理は実現されるが、説明を簡略化するために、プログラムを処理主体として説明する)。なお、本実施形態では、ノード100が実行する各プログラム(アプリケーションプログラム201、OS202、仮想デバイスドライバ203、ノード制御プログラム204、およびデバイスドライバ205)は、ストレージ装置140に格納されているものとする。そして、計算機ノード100は、ストレージ装置140から上記の各プログラムをロードして実行する。
【0029】
図2では、ノード100aとノード100bとが内部ネットワークアダプタ105で内部LANを構成し、計算機ノード100aに論理ボリュームの「WVOL1」および「SYSVOL1」が接続され、さらに、ノード100bに論理ボリュームの「WVOL2」および「SYSVOL2」が接続されてFTCを構成している様子を示している。
【0030】
ノード100aでは、OS202上でアプリケーションプログラム201が実行されている。ノード100aのOS202には、ハードウェアへのアクセスを提供する仮想デバイスドライバ203がロードされる。仮想デバイスドライバ203は、実際にノード100aに接続しているI/Oアダプタを仮想化したインタフェースをOS202に提供する。仮想デバイスドライバ203は、ノード制御プログラム204と連携して、OS202、あるいは、ノード制御プログラム204からのI/O要求を処理する。I/O要求は、プログラムの実行により発生する要求と、デバイスが発生する割り込み要求を含む。なお、図示する例では、仮想デバイスドライバ203を1つだけ示したが、複数の仮想デバイスドライバが存在する。例えば、ディスク用とネットワーク用の仮想デバイスドライバが存在する。
【0031】
ノード制御プログラム204は、FTCを構成するノード(ここでは、ノード100a、100b)の処理進行の同期を取る。具体的には、ノード制御プログラム204は、仮想デバイスドライバ203からのI/O要求処理をデバイスドライバ205に渡す、あるいは、デバイスドライバ205からの割り込み要求を受け付け、仮想デバイスドライバ203に連絡する。この場合に、ノード制御プログラム204は、内部LANを通じてもう1つのノード100bで実行するノード制御プログラムと連絡しあい、2つのノード100間のI/O操作が同期して実行されるように制御する。これによって、2つのノード100aおよび100bの同期実行を実現する。
【0032】
また、ノード制御プログラム204は、2つのノード100aおよび100bの主従関係を管理する。例えば、ノード制御プログラム204間で互いの生死や運転モードの状況を含むハートビートメッセージを交換することにより、主従の関係を構築する。ノード制御プログラム204は、FTCの外部に影響を及ぼすようなI/Oの操作について、実際にI/O操作を行うかを決定する。例えば、従系側のノードからは実際のI/O操作をしない。実際のI/O操作をしない場合は、もう一方の主系のノード100との連携で、I/O処理をしているように上位の仮想デバイスドライバ203に見せかける。このような処理が必要なデバイスは、例えば、外部ネットワークアダプタ104である。
【0033】
また、ノード制御プログラム204は、FTCを構成するノード100間で同期実行を開始するための一致化処理を行う。この一致化処理は、両方のノードで同一の処理の実行を開始するように、両方のノードのメモリ内容の一致化処理と、論理ボリュームの一致化処理を含む。これらの一致化処理については、後述する。
【0034】
なお、ノード制御プログラム204は、OS202と独立して実行されるプログラムである。ノード制御プログラム204は、OS202がメモリにロードされる前にロードされ、ノード100のCPU101により実行される。デバイスドライバ205は、ノード制御プログラム204の管理下にあり、OS202からは独立している。また、OS202は、ノード制御プログラム204の管理下でロードされ、実行される。このような構成は、仮想化の技術を適用することで実現可能である。なお、ノード100bもノード100aと同じプログラムを実行している。
【0035】
FTC制御装置160は、FTCの構成を制御するFTC制御プログラム210を実行する。FTC制御プログラムは、復旧処理プログラム211、ネットワーク構成プログラム212、およびストレージ構成プログラム213を含んでいる。
【0036】
復旧処理プログラム211は、ノード100に障害が発生した際に、FTCを二重系運転へ復旧させるためのプログラムである(復旧処理プログラム211については後段で詳細に説明する)。
【0037】
ネットワーク構成プログラム212は、各ノード100の内部・外部ネットワークアダプタ104、105のネットワークへの接続を制御する。ネットワーク構成プログラム212は、ネットワークスイッチ130を操作し、内部LANを確立する。また、ネットワーク構成プログラム212は、ノード100の外部ネットワークアダプタ104を外部LAN150に接続するようにネットワークスイッチ130を制御して、FTCの対外的な接続を確立する。
【0038】
ストレージ構成プログラム213は、ノード100のディスクアダプタ103と、ストレージ装置140内の論理ボリューム間の接続を確立する。具体的には、ストレージ構成プログラム213は、ストレージスイッチ170とディスクコントローラ141とを制御して、各ノード100に論理ボリュームを接続する(例えば、ノード100aに論理ボリューム「WVOL1」および「SYSVOL1」を接続する)。
【0039】
ストレージ装置140は、論理ボリュームを提供する。図示する例は、論理ボリュームの構成の一部を示したものである。図中のカッコ内の数値は論理ボリュームを識別するIDである。論理ボリュームの構成は、後述する。
【0040】
次に、FTC制御プログラム210が管理するデータについて、図3を用いて説明する。図3は、FTC制御プログラム210により管理されるデータのデータ構造を模擬的に示した図である。なお、以下では、構成テーブル300および接続テーブル310〜330がFTC制御装置160に保持されている場合を例にするが、特にこれに限定するものではない。例えば、構成テーブル300および接続テーブル310〜330がストレージ装置140に保持されていてもかまわない。
【0041】
構成テーブル300は、各ノード100a〜c、ネットワークスイッチ130、ストレージスイッチ170、ストレージ装置140、FTC制御装置160間の接続や、ストレージ装置140内の論理ボリュームに関する管理データを記録するためのテーブルである。
【0042】
具体的には、構成テーブル300は、各項目を登録するエントリ301と、エントリ301に対応するデータを登録するためのエントリ302とを有する。
【0043】
構成テーブル300の中の「FTCノード1」および「FTCノード2」が登録されているエントリ301に対応するエントリ302には、現状のFTCを構成しているノード100を識別する情報が登録される。この例では、ノード1(node1)とノード2(node2)とでFTCを構成していることを示す。なお、本実施形態の説明では、「ノード1(node1)」がノード100aを指し、「ノード2(node2)」がノード100bを指し、「ノード3(node3)」がノード100cを指す。
【0044】
構成テーブル300の「ノード1」、「ノード2」、「ノード3」が登録されているエントリ301に対応するエントリ302には、各々、各ノード100の接続情報を保持する接続テーブル310、320、330を指定するデータが登録されている。「ノード1」が指し示す接続テーブル310には、「ノード1」に関する情報が保持されている。具体的には、接続テーブル310には、ノード1のノード名、ノード1が有する内部ネットワークアダプタ105が接続するネットワークスイッチ130のポート番号、外部ネットワークアダプタ104が接続するネットワークスイッチ130のポート番号、内部ネットワークアダプタ105に設定するネットワークアドレス、ディスクアダプタ103が接続するストレージスイッチ170のポート番号が保持されている。なお、テーブル320およびテーブル330も同様の内容の情報を保持している。
【0045】
構成テーブル300の説明に戻る。構成テーブル300の中の「FTC制御装置接続ポート」が登録されているエントリ301に対応するエントリ302には、FTC制御装置160が接続するネットワークスイッチ130のポート番号が登録されている。また、「ストレージ装置接続ポート」が登録されているエントリ301に対応するエントリ302には、ストレージ装置140が接続するストレージスイッチ170のポート番号が登録されている。「外部LAN接続ポート」が登録されているエントリ301に対応するエントリ302には、外部LAN150が接続するネットワークスイッチ130のポート番号が登録されている。
【0046】
また、構成テーブル300の「FTC制御装置アドレス」が登録されているエントリ301に対応するエントリ302には、FTC制御装置160に設定されるネットワークアドレスが登録されている。「ストレージ装置アドレス」が登録されているエントリ301に対応するエントリ302には、ストレージ装置140に設定されるネットワークアドレスが登録されている。また、「ストレージスイッチアドレス」が登録されているエントリ301に対応するエントリ302には、ストレージスイッチ170に設定されるネットワークアドレスが登録されている。
【0047】
構成テーブル300の「WVOL1」が登録されているエントリ301に対応するエントリ302には、FTCを構成するノード1(FTCノード1)が利用するOS202、仮想デバイスドライバ203、アプリケーションプログラム201やそれらの実行に必要なデータが格納されている論理ボリュームのIDが登録される。同様に、「WVOL2」が登録されているエントリ301に対応するエントリ302には、FTCを構成するノード2(FTCノード2)が利用するOS202、仮想デバイスドライバ203、アプリケーションプログラム201やそれらの実行に必要なデータが格納されている論理ボリュームのIDが登録される。この例では、FTCノード1は、IDが「1」の論理ボリュームに接続することを示す。FTCノード2は、IDが「2」の論理ボリュームに接続することを示す。ストレージ装置140にアクセスするデバイスドライバ205は、この論理ボリュームIDによって、上位層からのアクセスが適切な論理ボリュームに接続するように制御する。
【0048】
構成テーブル300の「SYSVOL1」および「SYSVOL2」が登録されているエントリ301に対応するエントリ302には、FTCを構成するノード100(FTCノード1、2)が参照するノード制御プログラム204、デバイスドライバ205を格納する論理ボリュームのIDが登録される。構成テーブル300の「SYSBK1」および「SYSBK2」が登録されているエントリ301に対応するエントリ302には、各々、「SYSVOL1」、「SYSVOL2」のバックアップを保持する論理ボリュームのIDが登録される。
【0049】
続いて、ストレージ装置140が作成する論理ボリュームの構成について、図4を用いて説明する。
【0050】
図4は、本実施形態の論理ボリュームの構成例を示した図である。
【0051】
論理ボリューム221と223(WVOL1、2)は、OS202、仮想デバイスドライバ203、アプリケーションプログラム201を含む論理ボリュームである。そして、論理ボリューム221(WVOL1)は、FTCノード1に接続される。論理ボリューム223(WVOL2)は、FTCノード2に接続される。
【0052】
論理ボリューム222、224(SYSVOL1、2)は、ノード制御プログラム204とデバイスドライバ205を含む論理ボリュームである。論理ボリューム222(SYSVOL1)は、FTCノード1に接続される。論理ボリューム224(SYSVOL2)は、FTCノード2に接続される。また、論理ボリューム222、224(SYSVOL1、2)には、それぞれ、バックアップ用の論理ボリューム225、226(SYSBK1、2)が設けられる。なお、FTC制御装置160は、ストレージ構成プログラム213を実行することにより、それぞれの論理ボリュームがテーブル300に記載のIDを持つよう、ディスクコントローラ141を設定する。
【0053】
次に、FTCの構成手順について、図5を用いて説明する。ここで、構成手順とは、ネットワークとストレージの接続を設定する手順をいうものとする。
【0054】
図5は、本発明の実施形態のFTCの構成処理の手順を示すフローチャートである。この手順は、FTCを起動する前の準備段階の手順に相当する。この構成手順は、FTC制御プログラム210内に組み込まれている。なお、以下に示す処理は、FTC制御装置160のCPUがFTC制御プログラム210を実行することにより実現されるが、説明を簡略化するために、FTC制御プログラム210を処理主体として説明する。
【0055】
まず、FTC制御プログラム210は、構成テーブル300(図4参照)から、FTCを構成するノードを示すデータを取得する(S401)。これは、テーブル300の「FTCノード1」および「FTCノード2」が登録されているエントリ301に対応付けられたエントリ302に登録されている。
【0056】
次に、FTC制御プログラム210は、論理ボリュームをFTCの構成ノードに接続する。具体的には、FTC制御プログラム210は、構成テーブル300からFTCノードに接続する論理ボリュームのID(例えば、WVOL1とSYSVOL1)、ノードのディスクアダプタ103が接続するストレージスイッチ170のポート番号、ストレージ装置140が接続するストレージスイッチ170のポート番号を取得する。そして、ノードのディスクアダプタ103が接続しているポートを、ストレージ装置140が接続するポートに接続するよう、ストレージスイッチ170を制御する。更に、FTC制御プログラム210は、構成テーブル300から取得した論理ボリュームIDによるディスクアクセスを、ストレージ装置140内の物理的なボリュームに関連付けるよう、ディスクコントローラ141を制御する。
【0057】
次に、FTC制御プログラム210は、ノードのネットワーク接続の設定を行う(S403、404)。具体的には、FTC制御プログラム210は、S403において、内部ネットワークアダプタ105を内部LANに接続するよう、ネットワークスイッチ130を制御する。また、FTC制御プログラム210は、S404において、外部ネットワークアダプタ104を外部LANに接続するよう、ネットワークスイッチ130を制御する。S403およびS404において、FTC制御プログラム210は、構成テーブル300、接続構成テーブル310、320を参照し、各ネットワークアダプタがネットワークスイッチ130のどのポートに接続しているかを取得し、各ポートと各LANの関連付けを実施する。
【0058】
最後に、FTC制御プログラム210は、FTC制御装置160を内部LANに接続する(S405)。これも、構成テーブル300に登録された情報を元に、ネットワークスイッチ130のポートとLANとの関連付けを実施する。
【0059】
以上の構成処理により、ノード100aとノード100bとがFTCとして実行可能となる。なお、FTCの起動は、まず、ノード100を起動してノード制御プログラム204を実行する。次に、ノード制御プログラム204にOS202の実行を指示する。最後に、計算機ノード100間の同期化処理を実施すると、2つの計算機ノード100は、同期したプログラム実行を開始する。
【0060】
この同期化処理は、ノード制御プログラム204に含まれている。同期化処理は、一旦、OS202の実行を中断し、2つのノード100のメモリを同じ内容とし、かつ、それぞれが接続する業務用の論理ボリューム(WVOL1,2)の内容を一致させ、それから、OS202の実行を再開する。この後、ノード制御プログラム204が、仮想デバイスドライバ203やデバイスドライバ205が発するI/O要求を横取りして、上位のOS202のI/O処理を同期化する。これにより、2つのノードが同期して実行する。
【0061】
続いて、この同期化処理の手順について、図6を用いて説明する。図6は、本発明の実施形態の同期化処理の手順を示すフローチャートである。なお、以下では、ノード1(ノード100a)とノード2(ノード100b)が実行していて(稼動していて)、且つノード1が主系として実行する場合を例にして説明する。また、以下で説明する処理は、FTC制御装置160がFTC制御プログラム210を実行することにより、或いは、ノード100が各プログラム(仮想デバイスドライバ203、ノード制御プログラム204、デバイスドライバ205)を実行することにより実現されるものである。しかし、以下では、説明を簡略化するために、各プログラム(FTC制御プログラム210、仮想デバイスドライバ203、ノード制御プログラム204、デバイスドライバ205)を処理主体として説明する。
【0062】
FTC制御プログラム210は、同期化処理を開始する際に、主系とするノード100aに同期化処理を開始するように、内部LANを介して指示する。ノード100aのノード制御プログラム204は、FTC制御プログラム210からのメッセージを受信するまでを待機している。ノード100aのノード制御プログラム204は、FTC制御プログラム210からのメッセージを受信した場合、
OS202の実行を中断して同期化処理を開始する(S501)。
【0063】
ノード100aのノード制御プログラム204は、もう一方のノードであるノード100bにメモリ一致化処理を開始する旨を、内部LANを介して連絡する(S502)。ノード100bのノード制御プログラム204は、メッセージ(メモリ一致化処理を開始する旨のメッセージ)を受信した場合、OS202の実行を中断して、メモリ内容の受信を待機する状態に遷移する(S503)。
【0064】
次に、ノード100aのノード制御プログラム204は、自身のメモリ102の内容をノード100bに送信する(S504)。なお、本ステップにおいて、ノード100aのノード制御プログラム204は、すべてのメモリ内容を送信する必要はなく、OS202、仮想デバイスドライバ203、アプリケーションプログラム201の実行に必要な部分の送信でよい。ノード100aは、メモリ内容の送信後、論理ボリューム一致化の完了通知を待機する(S505)。
【0065】
ノード100bのノード制御プログラム204は、S504にて送信されたメモリ内容を受信し、受信したメモリ内容をノード100bのメモリに格納する(S506)。
【0066】
ノード100bのノード制御プログラム204は、メモリ内容の受信が終了すると、FTC制御プログラム210に「WVOL2」の「WVOL1」との一致化を要求し(S507)、完了後、その旨をノード100aに通知する(S508)。この段階で、ノード100aとノード100bとは、同じメモリ内容と、同じ内容の論理ボリュームを持つこととなる。ノード100aのノード制御プログラム204は、同期化処理を終了し、OS202の実行を再開する(S510)。一方、ノード100bでは、ノード制御プログラム204は、実行制御を強制的にS510に移し(S509)、同期化処理を終了し、OS202の実行を再開する。この際、ノード100bのメモリは、ノード100aと同一となっているので、ノード100bは、ノード100aと同じ処理の実行を始めることになる。
【0067】
次に、論理ボリュームの一致化手順について、図7を用いて説明する。
【0068】
図7は、本発明の実施形態の論理ボリュームの一致化処理の手順を示すフローチャートである。この処理は、FTC制御プログラム210に実装される。なお、図7で示す論理ボリュームの一致化処理は、FTC制御装置160のCPUがFTC制御プログラム210を実行することにより実現されるものである。しかし以下では、説明を簡略化するために、FTC制御プログラム210を処理主体として説明する。なお、本実施の形態では、ストレージ装置140が、論理ボリュームの複製機能を有しているものとする。
【0069】
まず、FTC制御プログラム210は、作成する複製論理ボリュームと同じIDの論理ボリュームが存在している場合、そのボリュームを削除する(S601)。
【0070】
続いて、FTC制御プログラム210は、複製元論理ボリュームの、現状での
複製を作成するようにディスクコントローラ141に指示する(S602)。この場合、ストレージ装置140内では、実際のボリューム内容のコピーは発生せずに、論理的に同じ内容を持つ複製とすることが可能である。このため、この処理は、実際に内容をコピーする場合に比べて、短時間で終了する。
【0071】
そして、最後に、FTC制御プログラム210は、作成された論理ボリュームに新しいIDを設定する(S603)。例えば、「WVOL2」に相当する論理ボリュームを「WVOL1」から複製したならば、構成テーブル300から「WVOL2」の論理ボリュームIDを取得し、そのIDを設定する。図3の例ならば、IDとして「2」を設定する。
【0072】
以上の処理で、2つのノード100で、OS202とアプリケーションプログラム201が、同期して同じ処理を実行する二重系が構成される。
【0073】
次に、一方のノードがハードウェア障害で停止した場合の二重系への復旧処理手順について説明する。本実施形態では、ストレージ装置140のスナップショット機能を用いて、復旧処理の高速化を実現する。
【0074】
図8は、本発明の実施形態の復旧処理の手順を示すフローチャートである。この処理は、FTC制御装置160で実行する復旧処理プログラム211に実装され、ノード100の1つがハードウェア障害でダウンした際に実行される。ここでは、ノード100aが、ノード100bの停止を検知して、復旧手順を開始する場合を例にして説明する。
【0075】
なお、以下で示す復旧処理は、FTC制御装置160が復旧処理プログラム211を実行し、ノード100がノード制御プログラム204を実行することにより実現されるものである。しかし以下では、説明を簡略化するために、各プログラム(復旧処理プログラム211、ノード制御プログラム204)を処理主体として説明する。
【0076】
まず、ノード100aのノード制御プログラム204は、ノード100bのダウン(障害の発生)を検知すると、FTC制御装置160の復旧処理プログラム211に、二重系への復帰処理の開始を依頼する(S701)。復旧処理プログラム211は、依頼メッセージを受信し、復旧処理を開始する。
【0077】
復旧処理プログラム211は、構成テーブル300を参照して、待機中のノードを検索する。この例では、ノード100cが待機中である。そして、構成テーブル300に、このノード100cをノード100bの代替ノードとして登録する。すなわち、FTCノード2として、ノード3(ノード100c)を登録する(S702)。
【0078】
次に、復旧処理プログラム211は、FTCノード2用のシステムボリュームのバックアップ(SYSBK2)の複製を作成する。具体的には、今までのSYSVOL2論理ボリュームを削除し、SYSBK2の複製を作成し、この複製にSYSVOL2の論理ボリュームIDを設定する(S703)。
【0079】
そして、作成した論理ボリュームを、ノード100cが接続するストレージスイッチ170のポートから参照可能なように(アクセス可能なように)、ストレージスイッチ170を制御する(S704)。具体的には、ノード100cがストレージスイッチ170に接続しているポートと、ストレージ装置140のポートを接続するように設定する。
【0080】
次に、復旧処理プログラム211は、ネットワークスイッチ130を操作して、ノード100bのネットワークアダプタ104が接続しているポートをネットワークから切り離し、新たに、ノード100cが接続しているポートをネットワークスイッチ130に接続する。具体的には、ノード100cの内部ネットワークアダプタ105を内部LANに、外部ネットワークアダプタ104を外部LAN150に接続する(S705)。
【0081】
ここで、ノード100cを起動し(ステップ706)、ノード制御プログラムの起動完了を待機し、完了後にノード100aに完了を通知する。(S707)。
ノード100aのノード制御プログラム204は、ノード100cからの起動完了の通知を受信すると、同期化処理を開始する(S708)。ここでの同期化処理は、上述したS501からS510の処理である。但し、図6において、ノード100bで実行すると説明した処理は、ノード100cのノード制御プログラムが実行する。この処理の中で、WVOL1と同じ内容を持つ論理ボリュームWVOL2の作成と、メモリ一致化が実施される。これにより、ノード100cがノード100aと同期して実行を開始する。以上により、FTCを構成するノード100のハードウェア障害から二重系運転へと復帰する。
【0082】
続いて、本実施形態のおける、FTC構成を実現するのに必要な、初期設定処理について図9を用いて説明する。
【0083】
図9は、本発明の実施形態の初期設定処理の手順を示すフローチャートである。ここで、FTC制御プログラム210には、初期の論理ボリューム構成をストレージ装置140に作成する処理と、構成テーブル300を作成する処理を実現するためのプログラムを含んでいるものとする。また、以下で示す初期設定処理は、FTC制御装置160がFTC制御プログラム210を実行することにより実現されるものであるが、説明を簡略化するために、FTC制御プログラム210を処理主体として説明する。
【0084】
FTC制御プログラム210は、構成テーブル300を初期化する。まず、ノードの接続状態を保持する各ノードの接続テーブル310、320、330を作成し(S1101)、構成テーブル300のネットワーク接続、ストレージ接続に関するデータを初期化する(S1102)。なお、テーブルの内容は、ユーザの指示による。
【0085】
次に、FTC制御プログラム210は、各論理ボリュームのIDを決定し、テーブル300に記録する(S1103)。ここで決定したIDに合わせて、各種論理ボリュームを作成していく(FTC制御プログラム210は、ディスクコントローラ141を制御して、各種論理ボリュームを作成する)。
【0086】
FTC制御プログラム210は、ノード制御プログラム204とデバイスドライバ205を保持するための「SYSVOL1」、「SYSVOL2」を作成する(S1104)。
【0087】
「SYSVOL1」には、ノード制御プログラム204とデバイスドライバ205とを格納する。格納する際、いくつかの設定が必要になる。例えば、ノード制御プログラム204およびデバイスドライバ205自身が実行するのに必要となるストレージ装置140への参照は、テーブル300のSYSVOL1に設定された論理ボリュームIDで参照するようにする。また、仮想デバイスドライバ203からの参照はWVOL1に設定された論理ボリュームIDで、デバイスドライバ205がストレージを参照するように設定する。また、内部ネットワークアダプタ104のネットワークアドレスを構成テーブル300より取得して設定する。SYSVOL2も同様にして作成する。
【0088】
次に、FTC制御プログラム210は、作成したSYSVOL1、2を複製して、SYSBK1、2を作成する(S1105)。
【0089】
最後に、FTC制御プログラム210は、WVOL1、2を作成する(S1106)。WVOL1には、OS202、ノード制御プログラム204と連携するように設定された仮想デバイスドライバ203、アプリケーションプログラム201、およびこれらの実行に必要な設定情報を格納する。WVOL2は、WVOL1の複製として作成する。以上により、FTCの初期状態を設定することができる。
【0090】
このように、本発明の第1実施形態によれば、2つのノード100が参照する外部記憶装置の一致化で、外部記憶装置間のコピーが発生しないため、2つのノード100が参照するボリュームの一致化処理が短時間で完了する。また、ハードウェア故障時に備えて待機のノードをおくこと、および、FTCノード間、ストレージ装置間の接続にプログラムで制御可能なネットワークスイッチ130とストレージスイッチ170を介することで、待機ノードのFTCへの組み込みを自動化できる。
【0091】
従来のFTCでは、ハードウェアの構成要素は完全に二重化するという考え方を採用している。これに従えば、FTCでは、外部記憶装置はそれぞれのノードが持ち(すなわち、ノード毎に外部記憶装置が設けられている)、ノード間の接続は物理的に直接接続する、といった形態になる。一方、本実施形態は、ハードウェアの信頼性が向上していることを利用して、ノード間の接続、および、ノードとストレージとの間の接続にスイッチを導入している。これにより、本実施形態では、FTC構成する装置の設定を自動化できるため、設定処理の手間を低減することができる。
【0092】
なお、従来のFTCでは、ノード間を直接接続するため、待機用のノードを準備しておくことは不可能である。第1実施形態では、機器間の接続をスイッチを介すことにより、ノードを予めスイッチに接続しておき、交代する際にプログラムで接続を変更することで、FTC構成の自動復旧を実現している。そのため、第1実施形態によれば、FTCの復旧処理の手間が軽減されることになる。
【0093】
なお、第1実施形態では、論理ボリュームの一致化を、復旧の際にスナップショットを取ることとしたが、論理ボリューム(例えば、WVOL1等)のコピー(ミラーボリューム)を保持するミラーを構成して(複製を複製対象の論理ボリュームのペアとして保持しておいて)、復旧の際にこのミラーリングを解除して、ミラーボリュームを復旧用の論理ボリュームとしてもよい。
《第2実施形態》
次に、本発明の第2実施形態について説明する。第2実施の形態では、第1実施形態においてFTC制御装置160で実行していたFTC制御プログラム210を、ノード100で実行するようにしている。なお、第2実施形態の説明において、第1実施形態と同じ構成については、同じ符号を用いることとする。また、第2実施形態の説明は、第1実施形態と異なる部分を中心に説明する。
【0094】
図10は、本発明の第2実施形態のプログラム配置、および、接続構成を説明するための図である。
【0095】
図示するように、第2実施形態のFTCは、第1実施形態の構成からFTC制御装置160を除き、FTC制御装置160の機能をノード100に持たせるようにしている。すなわち、第1実施形態では、FTC制御プログラム210をFTC制御装置160においていたが、第2実施の形態では、FTCを構成するノード100a、100b、100cの各々に、FTC制御プログラム210を配置するようにしている(図9ではノード100cを図示せず)。なお、ノード100a〜c、ネットワークスイッチ130、ストレージ装置140、およびストレージスイッチ170のハードウェア構成は、図1と同じである。
【0096】
第2実施形態では、FTC制御プログラム210(復旧処理プログラム211、ネットワーク構成プログラム212、ストレージ構成プログラム213を含む)は、ノード制御プログラム204の制御下で実行するように配置する。これにより、FTC制御プログラム210は、メモリ一致化やストレージ一致化といった処理を、ノード制御の処理とは無関係に実行でき、FTCの構成制御をFTCノード自身で実現することができる。また、第2実施形態によれば、FTCの外部に制御装置を配備しない構成を実現できる。
【0097】
なお、第2実施形態では、FTCを構成するノードでFTC制御プログラム210を実行することとしたが、交換用に待機しているノード100cでFTC制御プログラムを実行するようにしても良い。この場合、予め、ノード100cの内部ネットワークアダプタが内部LANに接続するようにネットワークスイッチ130の構成を設定しておけば良い。
《第3実施形態》
続いて、本発明の第3実施形態を説明する。第3実施形態は、ネットワークスイッチ130の障害によるシステムダウンを防止するために、FTCを構成するノード100間を、ネットワークスイッチ130を介さずに直接接続するようにしたものである。なお、第3実施形態の説明において、第1実施形態と同じ構成については、同じ符号を用いることとする。また、第3実施形態の説明は、第1実施形態と異なる部分を中心に説明する。
【0098】
図11に、本発明の第3実施形態のシステム構成を示す。図示するように、第3実施形態では、ノード100aの内部ネットワークアダプタ105と、ノード100bの内部ネットワークアダプタ105とを、互いに直接接続する。また、FTC制御装置160、ストレージスイッチ170、ストレージ装置140は、ネットワークスイッチ130を介して、同一ネットワークに接続するようネットワークスイッチの構成を設定する。各ノード100a〜cの外部ネットワークアダプタ104は、ネットワークスイッチ130に接続し、外部LAN150に接続するように、ネットワークスイッチ130が構成される。
【0099】
この構成では、障害復旧の際のFTC制御プログラム210からの指示は、ネットワークスイッチ130を介して、ストレージスイッチ170、ストレージ装置140に伝えられる。なお、第3実施形態では、交代ノード100を導入する場合には、ノード間の内部LANの接続は手動で配線をしなおす必要がある。これによって、内部LANの障害によりFTCとしての同期実行が不可能となる状況を避けられる。この構成では、復旧作業に人手が必要になるが、より信頼性を向上することが可能である。
【0100】
なお、本発明は以上で説明した実施形態に限定されるものではなく、本発明の要旨の範囲内において種々の変形が可能である。例えば、上述した各実施形態では、ストレージスイッチ170とネットワークスイッチ130を1台のみ示したが、これらを冗長化することも可能である。これによれば、ノード100とスイッチ間の接続を冗長化でき、かつ、スイッチも冗長となるので、完全に障害特異点を排除することが可能である。
【0101】
また、上記第1実施形態および第2実施形態では、ネットワークスイッチ130に待機用のノード100cを接続しておく場合を例にしたが特にこれに限定するものではない。ノード100を2台にしてもよい。例えば、ノード100a、ノード100b、ネットワークスイッチ130、ストレージ装置140、FTC制御装置160、およびストレージスイッチ170を有するシステムとして構成してもよい。この場合、ノード100aとノード100bとで二重系のFTCを構成しておいて、ノード100aおよびノード100bのいずれかが故障した際、ユーザがノード100cを新たにネットワークスイッチ130に接続する。例えば、ユーザが別の場所に置かれているノード100cを持ち込み、FTCのネットワークスイッチ130に接続する。なお、この場合、ノード100cのネットワークスイッチ130への接続作業だけは手動になる。
【0102】
また、上記第2実施形態の構成において、上記第3実施形態のように、ノード100aとノード100bとをネットワークスイッチ130を介さずに直接接続するようにしてもよい。
【図面の簡単な説明】
【0103】
【図1】本発明の第1実施の形態における、フォールトトレラントコンピュータ(FTC)のハードウェア構成図である。
【図2】本発明の第1実施形態における、プログラムの構成を示す図である。
【図3】本発明の第1実施形態におけるFTC制御プログラム210により管理されるデータのデータ構造を模擬的に示した図である。
【図4】本発明の実施形態の論理ボリュームの構成例を示した図である。
【図5】本発明の実施形態のFTCの構成処理の手順を示すフローチャートである。
【図6】本発明の実施形態の同期化処理の手順を示すフローチャートである。
【図7】本発明の実施形態の論理ボリュームの一致化処理の手順を示すフローチャートである。
【図8】本発明の実施形態の復旧処理の手順を示すフローチャートである。
【図9】本発明の実施形態の初期設定処理の手順を示すフローチャートである。
【図10】本発明の第2実施形態のプログラム配置、および、接続構成を説明するための図である。
【図11】本発明の第3実施形態のシステム構成を説明するための図である。
【符号の説明】
【0104】
100…計算機ノード、101…CPU、102…メモリ、103…ディスクアダプタ、104…外部ネットワークアダプタ、105…内部ネットワークアダプタ、130…ネットワークスイッチ、140…ストレージ装置、141…ディスクコントローラ、142…ディスク記憶装置、150…外部LAN、160…FTC制御装置、170…ストレージスイッチ、201…アプリケーションプログラム、202…OS、203…仮想デバイスドライバ、204…ノード制御プログラム、205…デバイスドライバ、210…FTC制御プログラム、211…復旧処理プログラム、212…ネットワーク構成プログラム、213…ストレージ構成プログラム、221〜226…論理ボリューム、300…構成テーブル、310〜330…接続テーブル
【特許請求の範囲】
【請求項1】
2台の計算機と、該計算機が共通に利用する外部記憶装置と、該計算機間を接続するネットワークスイッチと、該計算機と該外部記憶装置を接続するストレージスイッチとを有し、前記2台の計算機がI/O処理を同期して実行し、該2台の計算機でプログラム実行の二重化を行う計算機システムにおいて、
前記外部記憶装置は、仮想的な外部記憶装置であって、前記計算機からアクセスされる論理ボリュームを作成する手段と、前記論理ボリュームの複製を作成する複製手段と、を有していて、
前記2台の計算機のうちの一方が障害で停止した際、該障害による停止を検知し、前記2台以外の他の計算機の前記ネットワークスイッチへの接続を受付け、該他の計算機を該障害で停止した計算機の交代機として、前記2台のうちの稼働中の計算機とI/O処理を同期して実行するように、前記計算機、前記ネットワークスイッチ、前記ストレージスイッチ、および前記外部記憶装置を制御する制御手段を有し、
前記制御手段は、
前記2台の計算機のうちの一方が障害で停止した際、前記2台のうちの稼働中の計算機がアクセスしている論理ボリュームの複製を前記複製手段により作成するよう該外部記憶装置に指示し、該指示に応じて作成された論理ボリュームの複製を前記他の計算機からアクセスできるように前記ストレージスイッチを制御すること
を特徴とする計算機システム。
【請求項2】
2台の計算機と、該計算機が共通に利用する外部記憶装置と、該計算機間を接続するネットワークスイッチと、該計算機と該外部記憶装置を接続するストレージスイッチとを有し、前記2台の計算機がI/O処理を同期して実行し、該2台の計算機でプログラム実行の二重化を行う計算機システムにおいて、
前記外部記憶装置は、仮想的な外部記憶装置であって、前記計算機からアクセスされる論理ボリュームを作成する手段と、前記2台の計算機がアクセスする各々の論理ボリュームを所定のタイミングで複製し、該複製(ミラーボリューム)を前記複製対象の論理ボリュームのペアとして設定して保持する手段と、を有していて、
前記2台の計算機のうちの一方が障害で停止した際、該障害による停止を検知し、前記2台以外の他の計算機の前記ネットワークスイッチへの接続を受付け、該他の計算機を該障害で停止した計算機の交代機として、前記2台のうちの稼働中の計算機とI/O処理を同期して実行するように、前記計算機、前記ネットワークスイッチ、前記ストレージスイッチ、および前記外部記憶装置を制御する制御手段を有し、
前記制御手段は、
前記2台の計算機うちの一方が障害で停止した際に、前記2台の計算機のうちの稼働中の計算機がアクセスしている論理ボリュームの複製処理を停止し、かつ該論理ボリュームのペアの設定を解除するように該外部記憶装置に指示し、該解除されミラーボリュームを前記他の計算機からアクセスできるように前記ストレージスイッチを制御すること
を特徴とする計算機システム。
【請求項3】
請求項1〜2のいずれか一項に記載の計算機システムであって、
前記計算機は、自分以外の計算機との同期処理を制御する同期制御手段を有し、
前記同期制御手段は、同期処理を開始する際、
同期実行の対象である実行中のプログラムを中断し、前記中断している間に、
同期処理を実行する計算機間のメモリ内容の一致化を行い、かつ前記論理ボリュームの再構成およびストレージスイッチの再構成処理を前記制御手段に実行させ、その後、前記中断している前記プログラムの実行を再開すること
を特徴とする計算機システム。
【請求項4】
請求項1〜3のいずれか一項に記載の計算機システムであって、
前記ネットワークスイッチには、交換用の他の計算機が予め接続されていて、
前記制御手段は、
前記障害による停止を検知した場合、前記予め接続されている交換用の他の計算機を該障害で停止した計算機の交代機として、前記稼働中の計算機とI/O処理を同期して実行するように、前記計算機、前記ネットワークスイッチ、前記ストレージスイッチ、および前記外部記憶装置を制御する復旧処理を行うこと
を特徴とする計算機システム。
【請求項5】
請求項4に記載の計算機システムであって、
前記計算機システムの各種の設定を行う専用の計算機を設け、該専用の計算機で前記復旧処理を実行すること
を特徴とする計算機システム。
【請求項6】
請求項4に記載の計算機システムであって、
前記復旧処理を、前記2台の計算機のうちの稼働中の計算機で実行すること
を特徴とする計算機システム。
【請求項7】
請求項4に記載の計算機システムであって、
前記復旧処理を、前記障害で停止した計算機に代わって二重化処理に参加する前記交換用の他の計算機で実行すること
を特徴とする計算機システム。
【請求項8】
2台の計算機と、該計算機が共通に利用する外部記憶装置とを有する計算機システムが行う同期化処理方法であって、
前記外部記憶装置は、仮想的な外部記憶装置となる論理ボリュームを提供する機能を有し、
前記2台の計算機は、相互に通信可能であって、且つネットワークを介して外部記憶装置に接続され、該ネットワークを介して、前記論理ボリュームにアクセス可能に構成されていて、
前記2台のうちの一方の計算機(計算機A)は、
同期化処理開始の要求を受付けるステップと、
前記同期化処理開始の要求を受付けた場合、稼動中のプログラムの実行を中断し、前記2台のうちの他方の計算機(計算機B)にメモリ内容の一致化処理を通知するステップと、
前記計算機Bに自身が持つメモリのメモリ内容を送信するステップと、を行い、
前記計算機Bは、
前記計算機Aからの前記一致化処理の通知を受付けた場合、稼動中のプログラムの実行を中断するステップと、
前記計算機Aからの前記メモリ内容を受信し、該受信したメモリ内容を自身が持つメモリに格納するステップと、
前記2台の計算機がアクセスする各々の論理ボリュームの内容を一致化させる処理を前記外部記憶装置に実行させるステップと、
前記論理ボリュームの内容の一致化処理が終了した場合に、該論理ボリュームの一致処理終了を前記計算機Aに通知するステップと、
前記中断しているプログラムの実行を再開するステップと、を行い、
前記計算機Aは、
前記論理ボリュームの一致処理終了の通知を受付けた場合、前記中断しているプログラムの実行を再開するステップを行うこと
を特徴とする同期化処理方法。
【請求項9】
2台の計算機と、該計算機が共通に利用する外部記憶装置と、該計算機間を接続するネットワークスイッチと、該計算機と該外部記憶装置を接続するストレージスイッチとを有し、前記2台の計算機がI/O処理を同期して実行し、該2台の計算機でプログラム実行の二重化を行う計算機システムにおいて、該計算機に障害復旧処理を実行させるプログラムであって、
前記外部記憶装置には、仮想的な外部記憶装置であって、前記計算機からアクセスされる論理ボリュームを作成する手段と、前記論理ボリュームの複製を作成する複製手段と、が設けられていて、
前記プログラムは、
前記2台の計算機のうちの一方が障害で停止した際、前記2台のうちの稼働中の計算機がアクセスしている論理ボリュームの複製を前記複製手段により作成するよう該外部記憶装置に指示するステップと、
前記2台以外の他の計算機のネットワークスイッチへの接続を受付け、該受付けた他の計算機を前記障害で停止した計算機の交代機として動作するように前記ネットワークスイッチおよび前記他の計算機を制御するステップと、
前記指示に応じて作成された論理ボリュームの複製を前記他の計算機からアクセスできるように前記ストレージスイッチを制御するステップと、を前記計算機に実行させること
を特徴とするプログラム。
【請求項10】
2台の計算機と、
前記2台の計算機が共通に利用する外部記憶装置と、
前記計算機間を接続するネットワークスイッチと、
前記計算機と前記外部記憶装置を接続するストレージスイッチとを備え、
前記2台の計算機は、各々、I/O処理を同期して実行し、該2台の計算機でプログラム実行の二重化を行い、さらに、
前記2台の計算機のうちの一方の計算機が障害で停止した際に、障害による停止を検知し、前記2台以外の他の計算機の前記ネットワークスイッチへの接続を受付け、該他の計算機を該障害で停止した計算機の交代機として、前記2台のうちの稼働中の計算機とI/O処理を同期して実行するように、前記計算機、前記ネットワークスイッチ、前記ストレージスイッチ、および前記外部記憶装置を設定する制御手段を有すること
を特徴とする計算機システム。
【請求項1】
2台の計算機と、該計算機が共通に利用する外部記憶装置と、該計算機間を接続するネットワークスイッチと、該計算機と該外部記憶装置を接続するストレージスイッチとを有し、前記2台の計算機がI/O処理を同期して実行し、該2台の計算機でプログラム実行の二重化を行う計算機システムにおいて、
前記外部記憶装置は、仮想的な外部記憶装置であって、前記計算機からアクセスされる論理ボリュームを作成する手段と、前記論理ボリュームの複製を作成する複製手段と、を有していて、
前記2台の計算機のうちの一方が障害で停止した際、該障害による停止を検知し、前記2台以外の他の計算機の前記ネットワークスイッチへの接続を受付け、該他の計算機を該障害で停止した計算機の交代機として、前記2台のうちの稼働中の計算機とI/O処理を同期して実行するように、前記計算機、前記ネットワークスイッチ、前記ストレージスイッチ、および前記外部記憶装置を制御する制御手段を有し、
前記制御手段は、
前記2台の計算機のうちの一方が障害で停止した際、前記2台のうちの稼働中の計算機がアクセスしている論理ボリュームの複製を前記複製手段により作成するよう該外部記憶装置に指示し、該指示に応じて作成された論理ボリュームの複製を前記他の計算機からアクセスできるように前記ストレージスイッチを制御すること
を特徴とする計算機システム。
【請求項2】
2台の計算機と、該計算機が共通に利用する外部記憶装置と、該計算機間を接続するネットワークスイッチと、該計算機と該外部記憶装置を接続するストレージスイッチとを有し、前記2台の計算機がI/O処理を同期して実行し、該2台の計算機でプログラム実行の二重化を行う計算機システムにおいて、
前記外部記憶装置は、仮想的な外部記憶装置であって、前記計算機からアクセスされる論理ボリュームを作成する手段と、前記2台の計算機がアクセスする各々の論理ボリュームを所定のタイミングで複製し、該複製(ミラーボリューム)を前記複製対象の論理ボリュームのペアとして設定して保持する手段と、を有していて、
前記2台の計算機のうちの一方が障害で停止した際、該障害による停止を検知し、前記2台以外の他の計算機の前記ネットワークスイッチへの接続を受付け、該他の計算機を該障害で停止した計算機の交代機として、前記2台のうちの稼働中の計算機とI/O処理を同期して実行するように、前記計算機、前記ネットワークスイッチ、前記ストレージスイッチ、および前記外部記憶装置を制御する制御手段を有し、
前記制御手段は、
前記2台の計算機うちの一方が障害で停止した際に、前記2台の計算機のうちの稼働中の計算機がアクセスしている論理ボリュームの複製処理を停止し、かつ該論理ボリュームのペアの設定を解除するように該外部記憶装置に指示し、該解除されミラーボリュームを前記他の計算機からアクセスできるように前記ストレージスイッチを制御すること
を特徴とする計算機システム。
【請求項3】
請求項1〜2のいずれか一項に記載の計算機システムであって、
前記計算機は、自分以外の計算機との同期処理を制御する同期制御手段を有し、
前記同期制御手段は、同期処理を開始する際、
同期実行の対象である実行中のプログラムを中断し、前記中断している間に、
同期処理を実行する計算機間のメモリ内容の一致化を行い、かつ前記論理ボリュームの再構成およびストレージスイッチの再構成処理を前記制御手段に実行させ、その後、前記中断している前記プログラムの実行を再開すること
を特徴とする計算機システム。
【請求項4】
請求項1〜3のいずれか一項に記載の計算機システムであって、
前記ネットワークスイッチには、交換用の他の計算機が予め接続されていて、
前記制御手段は、
前記障害による停止を検知した場合、前記予め接続されている交換用の他の計算機を該障害で停止した計算機の交代機として、前記稼働中の計算機とI/O処理を同期して実行するように、前記計算機、前記ネットワークスイッチ、前記ストレージスイッチ、および前記外部記憶装置を制御する復旧処理を行うこと
を特徴とする計算機システム。
【請求項5】
請求項4に記載の計算機システムであって、
前記計算機システムの各種の設定を行う専用の計算機を設け、該専用の計算機で前記復旧処理を実行すること
を特徴とする計算機システム。
【請求項6】
請求項4に記載の計算機システムであって、
前記復旧処理を、前記2台の計算機のうちの稼働中の計算機で実行すること
を特徴とする計算機システム。
【請求項7】
請求項4に記載の計算機システムであって、
前記復旧処理を、前記障害で停止した計算機に代わって二重化処理に参加する前記交換用の他の計算機で実行すること
を特徴とする計算機システム。
【請求項8】
2台の計算機と、該計算機が共通に利用する外部記憶装置とを有する計算機システムが行う同期化処理方法であって、
前記外部記憶装置は、仮想的な外部記憶装置となる論理ボリュームを提供する機能を有し、
前記2台の計算機は、相互に通信可能であって、且つネットワークを介して外部記憶装置に接続され、該ネットワークを介して、前記論理ボリュームにアクセス可能に構成されていて、
前記2台のうちの一方の計算機(計算機A)は、
同期化処理開始の要求を受付けるステップと、
前記同期化処理開始の要求を受付けた場合、稼動中のプログラムの実行を中断し、前記2台のうちの他方の計算機(計算機B)にメモリ内容の一致化処理を通知するステップと、
前記計算機Bに自身が持つメモリのメモリ内容を送信するステップと、を行い、
前記計算機Bは、
前記計算機Aからの前記一致化処理の通知を受付けた場合、稼動中のプログラムの実行を中断するステップと、
前記計算機Aからの前記メモリ内容を受信し、該受信したメモリ内容を自身が持つメモリに格納するステップと、
前記2台の計算機がアクセスする各々の論理ボリュームの内容を一致化させる処理を前記外部記憶装置に実行させるステップと、
前記論理ボリュームの内容の一致化処理が終了した場合に、該論理ボリュームの一致処理終了を前記計算機Aに通知するステップと、
前記中断しているプログラムの実行を再開するステップと、を行い、
前記計算機Aは、
前記論理ボリュームの一致処理終了の通知を受付けた場合、前記中断しているプログラムの実行を再開するステップを行うこと
を特徴とする同期化処理方法。
【請求項9】
2台の計算機と、該計算機が共通に利用する外部記憶装置と、該計算機間を接続するネットワークスイッチと、該計算機と該外部記憶装置を接続するストレージスイッチとを有し、前記2台の計算機がI/O処理を同期して実行し、該2台の計算機でプログラム実行の二重化を行う計算機システムにおいて、該計算機に障害復旧処理を実行させるプログラムであって、
前記外部記憶装置には、仮想的な外部記憶装置であって、前記計算機からアクセスされる論理ボリュームを作成する手段と、前記論理ボリュームの複製を作成する複製手段と、が設けられていて、
前記プログラムは、
前記2台の計算機のうちの一方が障害で停止した際、前記2台のうちの稼働中の計算機がアクセスしている論理ボリュームの複製を前記複製手段により作成するよう該外部記憶装置に指示するステップと、
前記2台以外の他の計算機のネットワークスイッチへの接続を受付け、該受付けた他の計算機を前記障害で停止した計算機の交代機として動作するように前記ネットワークスイッチおよび前記他の計算機を制御するステップと、
前記指示に応じて作成された論理ボリュームの複製を前記他の計算機からアクセスできるように前記ストレージスイッチを制御するステップと、を前記計算機に実行させること
を特徴とするプログラム。
【請求項10】
2台の計算機と、
前記2台の計算機が共通に利用する外部記憶装置と、
前記計算機間を接続するネットワークスイッチと、
前記計算機と前記外部記憶装置を接続するストレージスイッチとを備え、
前記2台の計算機は、各々、I/O処理を同期して実行し、該2台の計算機でプログラム実行の二重化を行い、さらに、
前記2台の計算機のうちの一方の計算機が障害で停止した際に、障害による停止を検知し、前記2台以外の他の計算機の前記ネットワークスイッチへの接続を受付け、該他の計算機を該障害で停止した計算機の交代機として、前記2台のうちの稼働中の計算機とI/O処理を同期して実行するように、前記計算機、前記ネットワークスイッチ、前記ストレージスイッチ、および前記外部記憶装置を設定する制御手段を有すること
を特徴とする計算機システム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2007−42001(P2007−42001A)
【公開日】平成19年2月15日(2007.2.15)
【国際特許分類】
【出願番号】特願2005−227774(P2005−227774)
【出願日】平成17年8月5日(2005.8.5)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
【公開日】平成19年2月15日(2007.2.15)
【国際特許分類】
【出願日】平成17年8月5日(2005.8.5)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
[ Back to top ]