(57)【要約】【課題】ＦＴＣにおいて、ハードウェアの故障が発生した際、手間をかけずに迅速に多重系に復帰させる。【解決手段】計算機１００ａ〜ｃ、ストレージ装置１４０、ネットワークスイッチ１３０、ストレージスイッチ１７０を有し、計算機１００ａおよび１００ｂがI/O処理を同期して実行し、計算機１００ａ、ｂでプログラム実行の二重化を行う計算機システムに、計算機１００ａ、ｂのうちの一方が障害で停止した際、計算機１００ｃを該障害で停止した計算機の交代機として設定し、計算機１００ｃを前記２台のうちの稼働中の計算機とI/O処理を同期して実行するように、前記ネットワークスイッチ１３０、前記ストレージスイッチ１７０、およびストレージ装置１７０を制御するＦＴＣ制御装置１６０を設ける。【選択図】図１
2007042001.tif 000002
【特許請求の範囲】
【請求項１】
２台の計算機と、該計算機が共通に利用する外部記憶装置と、該計算機間を接続するネットワークスイッチと、該計算機と該外部記憶装置を接続するストレージスイッチとを有し、前記２台の計算機がI/O処理を同期して実行し、該２台の計算機でプログラム実行の二重化を行う計算機システムにおいて、
前記外部記憶装置は、仮想的な外部記憶装置であって、前記計算機からアクセスされる論理ボリュームを作成する手段と、前記論理ボリュームの複製を作成する複製手段と、を有していて、
前記２台の計算機のうちの一方が障害で停止した際、該障害による停止を検知し、前記２台以外の他の計算機の前記ネットワークスイッチへの接続を受付け、該他の計算機を該障害で停止した計算機の交代機として、前記２台のうちの稼働中の計算機とI/O処理を同期して実行するように、前記計算機、前記ネットワークスイッチ、前記ストレージスイッチ、および前記外部記憶装置を制御する制御手段を有し、
前記制御手段は、
前記２台の計算機のうちの一方が障害で停止した際、前記２台のうちの稼働中の計算機がアクセスしている論理ボリュームの複製を前記複製手段により作成するよう該外部記憶装置に指示し、該指示に応じて作成された論理ボリュームの複製を前記他の計算機からアクセスできるように前記ストレージスイッチを制御すること
を特徴とする計算機システム。
【請求項２】
２台の計算機と、該計算機が共通に利用する外部記憶装置と、該計算機間を接続するネットワークスイッチと、該計算機と該外部記憶装置を接続するストレージスイッチとを有し、前記２台の計算機がI/O処理を同期して実行し、該２台の計算機でプログラム実行の二重化を行う計算機システムにおいて、
前記外部記憶装置は、仮想的な外部記憶装置であって、前記計算機からアクセスされる論理ボリュームを作成する手段と、前記２台の計算機がアクセスする各々の論理ボリュームを所定のタイミングで複製し、該複製（ミラーボリューム）を前記複製対象の論理ボリュームのペアとして設定して保持する手段と、を有していて、
前記２台の計算機のうちの一方が障害で停止した際、該障害による停止を検知し、前記２台以外の他の計算機の前記ネットワークスイッチへの接続を受付け、該他の計算機を該障害で停止した計算機の交代機として、前記２台のうちの稼働中の計算機とI/O処理を同期して実行するように、前記計算機、前記ネットワークスイッチ、前記ストレージスイッチ、および前記外部記憶装置を制御する制御手段を有し、
前記制御手段は、
前記２台の計算機うちの一方が障害で停止した際に、前記２台の計算機のうちの稼働中の計算機がアクセスしている論理ボリュームの複製処理を停止し、かつ該論理ボリュームのペアの設定を解除するように該外部記憶装置に指示し、該解除されミラーボリュームを前記他の計算機からアクセスできるように前記ストレージスイッチを制御すること
を特徴とする計算機システム。
【請求項３】
請求項１〜２のいずれか一項に記載の計算機システムであって、
前記計算機は、自分以外の計算機との同期処理を制御する同期制御手段を有し、
前記同期制御手段は、同期処理を開始する際、
同期実行の対象である実行中のプログラムを中断し、前記中断している間に、
同期処理を実行する計算機間のメモリ内容の一致化を行い、かつ前記論理ボリュームの再構成およびストレージスイッチの再構成処理を前記制御手段に実行させ、その後、前記中断している前記プログラムの実行を再開すること
を特徴とする計算機システム。
【請求項４】
請求項１〜３のいずれか一項に記載の計算機システムであって、
前記ネットワークスイッチには、交換用の他の計算機が予め接続されていて、
前記制御手段は、
前記障害による停止を検知した場合、前記予め接続されている交換用の他の計算機を該障害で停止した計算機の交代機として、前記稼働中の計算機とI/O処理を同期して実行するように、前記計算機、前記ネットワークスイッチ、前記ストレージスイッチ、および前記外部記憶装置を制御する復旧処理を行うこと
を特徴とする計算機システム。
【請求項５】
請求項４に記載の計算機システムであって、
前記計算機システムの各種の設定を行う専用の計算機を設け、該専用の計算機で前記復旧処理を実行すること
を特徴とする計算機システム。
【請求項６】
請求項４に記載の計算機システムであって、
前記復旧処理を、前記２台の計算機のうちの稼働中の計算機で実行すること
を特徴とする計算機システム。
【請求項７】
請求項４に記載の計算機システムであって、
前記復旧処理を、前記障害で停止した計算機に代わって二重化処理に参加する前記交換用の他の計算機で実行すること
を特徴とする計算機システム。
【請求項８】
２台の計算機と、該計算機が共通に利用する外部記憶装置とを有する計算機システムが行う同期化処理方法であって、
前記外部記憶装置は、仮想的な外部記憶装置となる論理ボリュームを提供する機能を有し、
前記２台の計算機は、相互に通信可能であって、且つネットワークを介して外部記憶装置に接続され、該ネットワークを介して、前記論理ボリュームにアクセス可能に構成されていて、
前記２台のうちの一方の計算機（計算機Ａ）は、
同期化処理開始の要求を受付けるステップと、
前記同期化処理開始の要求を受付けた場合、稼動中のプログラムの実行を中断し、前記２台のうちの他方の計算機（計算機Ｂ）にメモリ内容の一致化処理を通知するステップと、
前記計算機Ｂに自身が持つメモリのメモリ内容を送信するステップと、を行い、
前記計算機Ｂは、
前記計算機Ａからの前記一致化処理の通知を受付けた場合、稼動中のプログラムの実行を中断するステップと、
前記計算機Ａからの前記メモリ内容を受信し、該受信したメモリ内容を自身が持つメモリに格納するステップと、
前記２台の計算機がアクセスする各々の論理ボリュームの内容を一致化させる処理を前記外部記憶装置に実行させるステップと、
前記論理ボリュームの内容の一致化処理が終了した場合に、該論理ボリュームの一致処理終了を前記計算機Ａに通知するステップと、
前記中断しているプログラムの実行を再開するステップと、を行い、
前記計算機Ａは、
前記論理ボリュームの一致処理終了の通知を受付けた場合、前記中断しているプログラムの実行を再開するステップを行うこと
を特徴とする同期化処理方法。
【請求項９】
２台の計算機と、該計算機が共通に利用する外部記憶装置と、該計算機間を接続するネットワークスイッチと、該計算機と該外部記憶装置を接続するストレージスイッチとを有し、前記２台の計算機がI/O処理を同期して実行し、該２台の計算機でプログラム実行の二重化を行う計算機システムにおいて、該計算機に障害復旧処理を実行させるプログラムであって、
前記外部記憶装置には、仮想的な外部記憶装置であって、前記計算機からアクセスされる論理ボリュームを作成する手段と、前記論理ボリュームの複製を作成する複製手段と、が設けられていて、
前記プログラムは、
前記２台の計算機のうちの一方が障害で停止した際、前記２台のうちの稼働中の計算機がアクセスしている論理ボリュームの複製を前記複製手段により作成するよう該外部記憶装置に指示するステップと、
前記２台以外の他の計算機のネットワークスイッチへの接続を受付け、該受付けた他の計算機を前記障害で停止した計算機の交代機として動作するように前記ネットワークスイッチおよび前記他の計算機を制御するステップと、
前記指示に応じて作成された論理ボリュームの複製を前記他の計算機からアクセスできるように前記ストレージスイッチを制御するステップと、を前記計算機に実行させること
を特徴とするプログラム。
【請求項１０】
２台の計算機と、
前記２台の計算機が共通に利用する外部記憶装置と、
前記計算機間を接続するネットワークスイッチと、
前記計算機と前記外部記憶装置を接続するストレージスイッチとを備え、
前記２台の計算機は、各々、I/O処理を同期して実行し、該２台の計算機でプログラム実行の二重化を行い、さらに、
前記２台の計算機のうちの一方の計算機が障害で停止した際に、障害による停止を検知し、前記２台以外の他の計算機の前記ネットワークスイッチへの接続を受付け、該他の計算機を該障害で停止した計算機の交代機として、前記２台のうちの稼働中の計算機とI/O処理を同期して実行するように、前記計算機、前記ネットワークスイッチ、前記ストレージスイッチ、および前記外部記憶装置を設定する制御手段を有すること
を特徴とする計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェアの多重化によるフォールトトレラントコンピュータの技術に関し、特にフォールトトレラントコンピュータの障害の際の復旧処理の技術に関する。
【背景技術】
【０００２】
計算機処理の信頼性および可用性を向上する方式として、フォールトトレラントコンピュータ（以下「ＦＴＣ」という）を利用する方法がある。ＦＴＣは、計算機を構成するハードウェアを多重化し、多重化されたハードウェアで同期を取りながら同一の処理を実施し、それぞれの処理結果の妥当性を確認しながら、最終的な処理結果の出力を実施する形態の計算機システムである。
【０００３】
ＦＴＣによれば、多重化されたハードウェアの１つで障害が発生しても他のハードウェアで処理が実行されるので、ハードウェアの故障によるダウンを回避できる。これにより、計算機システムの可用性を向上できる。従来のＦＴＣでは、複数の計算機を専用の回線で接続し、その回線を用いて、クロック信号やＣＰＵ処理のレベルで処理の進行を同期する方式が採られている。また、近年では、ネットワークによる通信が高速になったことにより、ＦＴＣを構成する計算機間の接続を汎用のネットワークとする方式が出現している。
【０００４】
非特許文献１には、計算機間の処理の同期をクロック信号やＣＰＵ命令実行のレベルではなく、Ｉ／Ｏ処理（割り込み処理も含む）のタイミングで一致化する方式が開示されている。
【０００５】
ところで、ＦＴＣでは、ハードウェアの故障が発生した場合、その後の信頼性を確保するために、故障部位を交換しハードウェアの多重度を回復する必要がある。多重度の回復処理は、「ＦＴＣを構成する計算機のメモリ内容の一致化」、「外部記憶装置内容の一致化」、および「同期実行の再開」からなる。そして、ＦＴＣには、ハードウェアの故障が発生した場合、多重度の回復処理（多重系への復帰）に、時間がかかるという問題がある。さらに、多重度の回復処理の中の「外部記憶装置内容の一致化処理」は、ＦＴＣが実行する本来の処理の性能を低下させることがある。
【０００６】
そのため、複数の計算機をネットワークで接続してＦＴＣを構成する方式では、ハードウェアの故障が発生した場合、迅速に多重系への復帰させることが望まれている。なお、従来のＦＴＣは、ハードウェア障害が発生した場合、故障ハードウェアの交換や配線の変更といった、人的な作業を伴うため、復旧に手間がかかるという問題も有している。
【０００７】
特許文献１には、多重度の回復処理のうち、「外部記憶装置内容の一致化」を高速化する手法が開示されている。特許文献１では、復旧作業中に発生したディスクの更新分のみをコピーすることにより、外部記憶装置の一致化を高速化している。
【０００８】
一方、ストレージ技術について、複数のディスク装置を格納し、内部の構成要素を冗長化し、それ単体で高度な信頼性を提供するストレージ装置が利用可能となっている。また、１つのストレージ装置内に、外部からはディスク装置に見える論理ボリュームを構成でき、その論理ボリュームのミラーリングや、高速な複製作成機能をストレージの側で実現しているものも存在している。
【０００９】
【非特許文献１】“Marathon FT Virtual Server”, [online] [2005/02/17検索]、Marathon Technologies社Weサイト、インターネット<URL:http://www.marathontechnologies.com/products/ssdatasheetdraft6-1vf.pdf>
【特許文献１】特開２０００−２９３３８９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、上述した非特許文献１および特許文献１は、以下の問題を有している。具体的には、非特許文献１は、計算機間で処理を同期することについて考慮しているが、障害が発生した際の多重系への復帰処理を早めることについて特に考慮されていない。また、特許文献１は、多重系への回復処理のうち、「外部記憶装置内容の一致化」以外について特に考慮されていない。また、特許文献１の手法では、復旧作業中に発生したディスクの更新量が大きくなった場合、多重度の回復処に時間がかかってしまう。すなわち、特許文献１では、ＦＴＣにおいて、ハードウェアの故障が発生した際、多重系への復帰が迅速にできないことがある。
【００１１】
本発明は、上記事情に鑑みてなされたものであり、本発明の目的は、ＦＴＣにおいて、ハードウェアの故障が発生した場合に、手間をかけずに迅速に多重系への復帰させることにある。
【課題を解決するための手段】
【００１２】
上記課題を解決するため、本発明の一態様は、２台の計算機と、該計算機が共通に利用する外部記憶装置と、該計算機間を接続するネットワークスイッチと、該計算機と該外部記憶装置を接続するストレージスイッチとを有し、前記２台の計算機がI/O処理を同期して実行し、該２台の計算機でプログラム実行の二重化を行う計算機システムに適用される。ここで、前記外部記憶装置は、仮想的な外部記憶装置であって、前記計算機からアクセスされる論理ボリュームを作成する手段と、前記論理ボリュームの複製を作成する複製手段と、を有している。
【００１３】
そして、前記計算機システムは、前記２台の計算機のうちの一方が障害で停止した際、該障害による停止を検知し、前記２台以外の他の計算機の前記ネットワークスイッチへの接続を受付け、該他の計算機を該障害で停止した計算機の交代機として、前記２台のうちの稼働中の計算機とI/O処理を同期して実行するように、前記計算機、前記ネットワークスイッチ、前記ストレージスイッチ、および前記外部記憶装置を制御する制御手段を有し、前記制御手段は、前記２台の計算機のうちの一方が障害で停止した際、前記２台のうちの稼働中の計算機がアクセスしている論理ボリュームの複製を前記複製手段により作成するよう該外部記憶装置に指示し、該指示に応じて作成された論理ボリュームの複製を前記他の計算機からアクセスできるように前記ストレージスイッチを制御する。
【発明の効果】
【００１４】
このように本発明によれば、多重系によるフォールトトレラントコンピュータ（ＦＴＣ）において、ハードウェア障害が発生した場合の、多重系運転への復旧時間を短縮することができる。すなわち、本発明によれば、多重系で構成するＦＴＣがハードウェア障害で単系運転になった場合に、高速に多重系による運転に復帰させ、単系で運転する時間を短縮し、信頼性の高いフォールトトレラントコンピュータを実現することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施形態について図面を用いて説明する。
《第１実施形態》
先ず、本発明の第１実施形態について説明する。
【００１６】
図１は、本発明の第１実施の形態における、フォールトトレラントコンピュータ（ＦＴＣ）のハードウェア構成図である。なお、第１実施形態の説明では、３台の計算機（動作させる２台の計算機および待機用の１台の計算機）を用いる場合の例を説明するが、計算機の数は、例示に過ぎない。第１実施形態のＦＴＣでは、少なくとも２台の計算機（動作させる２台の計算機）が設けられていればよい。
【００１７】
図示するように、第１実施形態のＦＴＣは、３台の計算機ノード１００ａ〜ｃと、ネットワークスイッチ１３０と、ストレージ装置１４０と、ＦＴＣ制御装置１６０と、ストレージスイッチ１７０と、を有する。計算機ノード１００ａ〜ｃは、各々、ネットワークスイッチ１３０を介して相互に接続されている。また、各計算機ノード１００ａ〜ｃ（単に「ノード１００ａ〜ｃ」ということもある）と、ストレージ装置１４０とは、ストレージスイッチ１７０を介して相互に接続されている。ＦＴＣ制御装置１６０は、ネットワークスイッチ１３０に接続されている。また、ＦＴＣ制御装置１６０は、ストレージスイッチ１７０に接続されている。
【００１８】
ノード１００ａは、各種の情報処理を実行する。ノード１００ａは、ＣＰＵ１０１、メモリ１０２、ディスクアダプタ１０３、外部ネットワークアダプタ１０４、内部ネットワークアダプタ１０５、これらを接続するバス、およびバスを管理するバス制御装置１０６を有する。なお、残りのノード１００ｂ〜ｃも、ノード１００ａと同じ構成である。ディスクアダプタ１０３は、複数のノードで１つのストレージ装置１４０を共有可能な接続方式を用いるアダプタである。例えば、ファイバチャネルによる。外部ネットワークアダプタ１０４および内部ネットワークアダプタ１０５は、各々、ネットワークスイッチ１３０に接続されている。
【００１９】
ネットワークスイッチ１３０は、複数のノード１００ａ〜ｃや外部のネットワークと接続するための複数のポートを持つ。また、それらのポートをグループ分けして、グループ内のポートに接続するネットワークやノード１００だけで、他から分離されたネットワークを構成できるものとする。
【００２０】
ＦＴＣ制御装置１６０は、ＦＴＣのシステム全体の制御を行う。ＦＴＣ制御装置１６０には、ＣＰＵおよびメモリを有する計算機を用いることができる。なお、ＦＴＣ制御装置１６０と各ノード１００の内部ネットワークアダプタ１０５とは、ネットワークスイッチ１３０により分離されたネットワーク（以下、内部ＬＡＮ）を構成する。そして、ＦＴＣ制御装置１６０は、ＦＴＣの構成を制御するプログラム（後述するＦＴＣ制御プログラム２１０）を実行することにより、内部ＬＡＮ経由でノード１００、ネットワークスイッチ１３０、ストレージスイッチ１７０およびストレージ装置１４０を操作して、各機器間の接続を設定し、全体としてＦＴＣの構成を設定する処理を行う。
【００２１】
また、各ノード１００のディスクアダプタ１０３は、ストレージスイッチ１７０を介して、ストレージ装置１４０に接続している。ストレージ装置１４０は、記憶装置となるディスク記憶装置１４２と、装置を制御するディスクコントローラ１４１とを有する。なお、図示する例では、ディスク記憶装置１４２を１つだけしか示していないが、ディスク装置１４２が複数で構成されていても良い。
【００２２】
ストレージ装置１４０のディスクコントローラ１４１は、ストレージ装置１４０内部に複数の論理的なボリュームを構成する機能を持つ。各ノード１００で実行するプログラムからは、論理ボリュームは、１つの外部記憶装置と同等に参照（アクセス）される。ディスクコントローラ１４１は、論理ボリュームと実際のディスク記憶装置１４２の領域との対応付けを管理している。また、ディスクコントローラ１４１は、論理ボリュームの複製を巨視的には瞬時に作成する機能（以下「スナップショット機能」という）を有している。
【００２３】
また、ストレージ装置１４０は、ネットワークスイッチ１３０を介して、内部ＬＡＮに接続する。ストレージ装置１４０は、この接続を介して（内部ＬＡＮを介して）各種の設定が可能である。
【００２４】
ストレージスイッチ１７０は、複数のノード１００とストレージ装置１４０とを接続する複数のポートを有する。ストレージスイッチ１７０は、ネットワークスイッチ１３０と同様に、ノード１００が接続するポートと、ストレージ装置１４０が接続するポートとを接続し、ノード１００からストレージ装置１４０内の論理ボリュームにアクセスするためのパスを構成する。
【００２５】
ストレージスイッチ１７０は、ネットワークスイッチ１３０を介して、内部ＬＡＮに接続する。ストレージスイッチ１７０は、この接続を介して（内部ＬＡＮを介して）各種の設定が可能である。
【００２６】
本実施形態では、２つのノード１００、例えば、ノード１００ａとノード１００ｂとで二重系のＦＴＣを構成する。残りのノード１００ｃは、ＦＴＣを構成するノードでハードウェア障害が発生した際の、障害ノードのバックアップとして待機させておく。１つのノード１００（ここでは、ノード１００ａおよび１００ｂのいずれか一方）で障害が発生すると、ＦＴＣ制御装置１６０で実行するＦＴＣ制御プログラム２１０が、ノード１００ｃ、ネットワークスイッチ１３０、ストレージ装置１４０、および、ストレージスイッチ１７０を操作して全体のネットワーク接続と論理ボリューム接続を変更し、ＦＴＣを二重系運転へ復旧する。この場合、ストレージ装置１４０のスナップショット機能を利用して、稼働中のノードが接続する論理ボリュームの複製を瞬時に作成し、これを交代ノードに接続することで、ディスク内容の一致化を高速に行う。
【００２７】
ＦＴＣ制御装置１６０と各ノード１００では、業務を実行するアプリケーションのほかに、ＦＴＣ自体を制御するプログラムも実行する。次に、これらのプログラムについて図２を用いて説明する。
【００２８】
図２は、本発明の第1実施形態における、プログラムの構成を示す図である。なお、以下では、ノード１００ａと１００ｂとがＦＴＣを構成し、ノード１００ｃは、待機状態にあるものとする。なお、各プログラムは、ノード１００およびＦＴＣ制御装置１６０の主メモリにロードされＣＰＵに実行されるものであるが、以下の説明ではプログラムが実行すると記す（ノード１００或いはＦＴＣ制御装置１６０のＣＰＵが各プログラムを実行することにより以下に示す処理は実現されるが、説明を簡略化するために、プログラムを処理主体として説明する）。なお、本実施形態では、ノード１００が実行する各プログラム（アプリケーションプログラム２０１、ＯＳ２０２、仮想デバイスドライバ２０３、ノード制御プログラム２０４、およびデバイスドライバ２０５）は、ストレージ装置１４０に格納されているものとする。そして、計算機ノード１００は、ストレージ装置１４０から上記の各プログラムをロードして実行する。
【００２９】
図２では、ノード１００ａとノード１００ｂとが内部ネットワークアダプタ１０５で内部ＬＡＮを構成し、計算機ノード１００ａに論理ボリュームの「ＷＶＯＬ１」および「ＳＹＳＶＯＬ１」が接続され、さらに、ノード１００ｂに論理ボリュームの「ＷＶＯＬ２」および「ＳＹＳＶＯＬ２」が接続されてＦＴＣを構成している様子を示している。
【００３０】
ノード１００ａでは、ＯＳ２０２上でアプリケーションプログラム２０１が実行されている。ノード１００ａのＯＳ２０２には、ハードウェアへのアクセスを提供する仮想デバイスドライバ２０３がロードされる。仮想デバイスドライバ２０３は、実際にノード１００ａに接続しているＩ／Ｏアダプタを仮想化したインタフェースをＯＳ２０２に提供する。仮想デバイスドライバ２０３は、ノード制御プログラム２０４と連携して、ＯＳ２０２、あるいは、ノード制御プログラム２０４からのＩ／Ｏ要求を処理する。Ｉ／Ｏ要求は、プログラムの実行により発生する要求と、デバイスが発生する割り込み要求を含む。なお、図示する例では、仮想デバイスドライバ２０３を１つだけ示したが、複数の仮想デバイスドライバが存在する。例えば、ディスク用とネットワーク用の仮想デバイスドライバが存在する。
【００３１】
ノード制御プログラム２０４は、ＦＴＣを構成するノード（ここでは、ノード１００ａ、１００ｂ）の処理進行の同期を取る。具体的には、ノード制御プログラム２０４は、仮想デバイスドライバ２０３からのＩ／Ｏ要求処理をデバイスドライバ２０５に渡す、あるいは、デバイスドライバ２０５からの割り込み要求を受け付け、仮想デバイスドライバ２０３に連絡する。この場合に、ノード制御プログラム２０４は、内部ＬＡＮを通じてもう１つのノード１００ｂで実行するノード制御プログラムと連絡しあい、２つのノード１００間のＩ／Ｏ操作が同期して実行されるように制御する。これによって、２つのノード１００ａおよび１００ｂの同期実行を実現する。
【００３２】
また、ノード制御プログラム２０４は、２つのノード１００ａおよび１００ｂの主従関係を管理する。例えば、ノード制御プログラム２０４間で互いの生死や運転モードの状況を含むハートビートメッセージを交換することにより、主従の関係を構築する。ノード制御プログラム２０４は、ＦＴＣの外部に影響を及ぼすようなＩ／Ｏの操作について、実際にＩ／Ｏ操作を行うかを決定する。例えば、従系側のノードからは実際のＩ／Ｏ操作をしない。実際のＩ／Ｏ操作をしない場合は、もう一方の主系のノード１００との連携で、Ｉ／Ｏ処理をしているように上位の仮想デバイスドライバ２０３に見せかける。このような処理が必要なデバイスは、例えば、外部ネットワークアダプタ１０４である。
【００３３】
また、ノード制御プログラム２０４は、ＦＴＣを構成するノード１００間で同期実行を開始するための一致化処理を行う。この一致化処理は、両方のノードで同一の処理の実行を開始するように、両方のノードのメモリ内容の一致化処理と、論理ボリュームの一致化処理を含む。これらの一致化処理については、後述する。
【００３４】
なお、ノード制御プログラム２０４は、ＯＳ２０２と独立して実行されるプログラムである。ノード制御プログラム２０４は、ＯＳ２０２がメモリにロードされる前にロードされ、ノード１００のＣＰＵ１０１により実行される。デバイスドライバ２０５は、ノード制御プログラム２０４の管理下にあり、ＯＳ２０２からは独立している。また、ＯＳ２０２は、ノード制御プログラム２０４の管理下でロードされ、実行される。このような構成は、仮想化の技術を適用することで実現可能である。なお、ノード１００ｂもノード１００ａと同じプログラムを実行している。
【００３５】
ＦＴＣ制御装置１６０は、ＦＴＣの構成を制御するＦＴＣ制御プログラム２１０を実行する。ＦＴＣ制御プログラムは、復旧処理プログラム２１１、ネットワーク構成プログラム２１２、およびストレージ構成プログラム２１３を含んでいる。
【００３６】
復旧処理プログラム２１１は、ノード１００に障害が発生した際に、ＦＴＣを二重系運転へ復旧させるためのプログラムである（復旧処理プログラム２１１については後段で詳細に説明する）。
【００３７】
ネットワーク構成プログラム２１２は、各ノード１００の内部・外部ネットワークアダプタ１０４、１０５のネットワークへの接続を制御する。ネットワーク構成プログラム２１２は、ネットワークスイッチ１３０を操作し、内部ＬＡＮを確立する。また、ネットワーク構成プログラム２１２は、ノード１００の外部ネットワークアダプタ１０４を外部ＬＡＮ１５０に接続するようにネットワークスイッチ１３０を制御して、ＦＴＣの対外的な接続を確立する。
【００３８】
ストレージ構成プログラム２１３は、ノード１００のディスクアダプタ１０３と、ストレージ装置１４０内の論理ボリューム間の接続を確立する。具体的には、ストレージ構成プログラム２１３は、ストレージスイッチ１７０とディスクコントローラ１４１とを制御して、各ノード１００に論理ボリュームを接続する（例えば、ノード１００ａに論理ボリューム「ＷＶＯＬ１」および「ＳＹＳＶＯＬ１」を接続する）。
【００３９】
ストレージ装置１４０は、論理ボリュームを提供する。図示する例は、論理ボリュームの構成の一部を示したものである。図中のカッコ内の数値は論理ボリュームを識別するＩＤである。論理ボリュームの構成は、後述する。
【００４０】
次に、ＦＴＣ制御プログラム２１０が管理するデータについて、図３を用いて説明する。図３は、ＦＴＣ制御プログラム２１０により管理されるデータのデータ構造を模擬的に示した図である。なお、以下では、構成テーブル３００および接続テーブル３１０〜３３０がＦＴＣ制御装置１６０に保持されている場合を例にするが、特にこれに限定するものではない。例えば、構成テーブル３００および接続テーブル３１０〜３３０がストレージ装置１４０に保持されていてもかまわない。
【００４１】
構成テーブル３００は、各ノード１００ａ〜ｃ、ネットワークスイッチ１３０、ストレージスイッチ１７０、ストレージ装置１４０、ＦＴＣ制御装置１６０間の接続や、ストレージ装置１４０内の論理ボリュームに関する管理データを記録するためのテーブルである。
【００４２】
具体的には、構成テーブル３００は、各項目を登録するエントリ３０１と、エントリ３０１に対応するデータを登録するためのエントリ３０２とを有する。
【００４３】
構成テーブル３００の中の「ＦＴＣノード１」および「ＦＴＣノード２」が登録されているエントリ３０１に対応するエントリ３０２には、現状のＦＴＣを構成しているノード１００を識別する情報が登録される。この例では、ノード１(node1)とノード２(node2)とでＦＴＣを構成していることを示す。なお、本実施形態の説明では、「ノード１(node1)」がノード１００ａを指し、「ノード２(node2)」がノード１００ｂを指し、「ノード３(node3)」がノード１００ｃを指す。
【００４４】
構成テーブル３００の「ノード１」、「ノード２」、「ノード３」が登録されているエントリ３０１に対応するエントリ３０２には、各々、各ノード１００の接続情報を保持する接続テーブル３１０、３２０、３３０を指定するデータが登録されている。「ノード１」が指し示す接続テーブル３１０には、「ノード１」に関する情報が保持されている。具体的には、接続テーブル３１０には、ノード１のノード名、ノード１が有する内部ネットワークアダプタ１０５が接続するネットワークスイッチ１３０のポート番号、外部ネットワークアダプタ１０４が接続するネットワークスイッチ１３０のポート番号、内部ネットワークアダプタ１０５に設定するネットワークアドレス、ディスクアダプタ１０３が接続するストレージスイッチ１７０のポート番号が保持されている。なお、テーブル３２０およびテーブル３３０も同様の内容の情報を保持している。
【００４５】
構成テーブル３００の説明に戻る。構成テーブル３００の中の「ＦＴＣ制御装置接続ポート」が登録されているエントリ３０１に対応するエントリ３０２には、ＦＴＣ制御装置１６０が接続するネットワークスイッチ１３０のポート番号が登録されている。また、「ストレージ装置接続ポート」が登録されているエントリ３０１に対応するエントリ３０２には、ストレージ装置１４０が接続するストレージスイッチ１７０のポート番号が登録されている。「外部ＬＡＮ接続ポート」が登録されているエントリ３０１に対応するエントリ３０２には、外部ＬＡＮ１５０が接続するネットワークスイッチ１３０のポート番号が登録されている。
【００４６】
また、構成テーブル３００の「ＦＴＣ制御装置アドレス」が登録されているエントリ３０１に対応するエントリ３０２には、ＦＴＣ制御装置１６０に設定されるネットワークアドレスが登録されている。「ストレージ装置アドレス」が登録されているエントリ３０１に対応するエントリ３０２には、ストレージ装置１４０に設定されるネットワークアドレスが登録されている。また、「ストレージスイッチアドレス」が登録されているエントリ３０１に対応するエントリ３０２には、ストレージスイッチ１７０に設定されるネットワークアドレスが登録されている。
【００４７】
構成テーブル３００の「ＷＶＯＬ１」が登録されているエントリ３０１に対応するエントリ３０２には、ＦＴＣを構成するノード１（ＦＴＣノード１）が利用するＯＳ２０２、仮想デバイスドライバ２０３、アプリケーションプログラム２０１やそれらの実行に必要なデータが格納されている論理ボリュームのＩＤが登録される。同様に、「ＷＶＯＬ２」が登録されているエントリ３０１に対応するエントリ３０２には、ＦＴＣを構成するノード２（ＦＴＣノード２）が利用するＯＳ２０２、仮想デバイスドライバ２０３、アプリケーションプログラム２０１やそれらの実行に必要なデータが格納されている論理ボリュームのＩＤが登録される。この例では、ＦＴＣノード１は、ＩＤが「１」の論理ボリュームに接続することを示す。ＦＴＣノード２は、ＩＤが「２」の論理ボリュームに接続することを示す。ストレージ装置１４０にアクセスするデバイスドライバ２０５は、この論理ボリュームＩＤによって、上位層からのアクセスが適切な論理ボリュームに接続するように制御する。
【００４８】
構成テーブル３００の「ＳＹＳＶＯＬ１」および「ＳＹＳＶＯＬ２」が登録されているエントリ３０１に対応するエントリ３０２には、ＦＴＣを構成するノード１００（ＦＴＣノード１、２）が参照するノード制御プログラム２０４、デバイスドライバ２０５を格納する論理ボリュームのＩＤが登録される。構成テーブル３００の「ＳＹＳＢＫ１」および「ＳＹＳＢＫ２」が登録されているエントリ３０１に対応するエントリ３０２には、各々、「ＳＹＳＶＯＬ１」、「ＳＹＳＶＯＬ２」のバックアップを保持する論理ボリュームのＩＤが登録される。
【００４９】
続いて、ストレージ装置１４０が作成する論理ボリュームの構成について、図４を用いて説明する。
【００５０】
図４は、本実施形態の論理ボリュームの構成例を示した図である。
【００５１】
論理ボリューム２２１と２２３（ＷＶＯＬ１、２）は、ＯＳ２０２、仮想デバイスドライバ２０３、アプリケーションプログラム２０１を含む論理ボリュームである。そして、論理ボリューム２２１（ＷＶＯＬ１）は、ＦＴＣノード１に接続される。論理ボリューム２２３（ＷＶＯＬ２）は、ＦＴＣノード２に接続される。
【００５２】
論理ボリューム２２２、２２４（ＳＹＳＶＯＬ１、２）は、ノード制御プログラム２０４とデバイスドライバ２０５を含む論理ボリュームである。論理ボリューム２２２（ＳＹＳＶＯＬ１）は、ＦＴＣノード１に接続される。論理ボリューム２２４（ＳＹＳＶＯＬ２）は、ＦＴＣノード２に接続される。また、論理ボリューム２２２、２２４（ＳＹＳＶＯＬ１、２）には、それぞれ、バックアップ用の論理ボリューム２２５、２２６（ＳＹＳＢＫ１、２）が設けられる。なお、ＦＴＣ制御装置１６０は、ストレージ構成プログラム２１３を実行することにより、それぞれの論理ボリュームがテーブル３００に記載のＩＤを持つよう、ディスクコントローラ１４１を設定する。
【００５３】
次に、ＦＴＣの構成手順について、図５を用いて説明する。ここで、構成手順とは、ネットワークとストレージの接続を設定する手順をいうものとする。
【００５４】
図５は、本発明の実施形態のＦＴＣの構成処理の手順を示すフローチャートである。この手順は、ＦＴＣを起動する前の準備段階の手順に相当する。この構成手順は、ＦＴＣ制御プログラム２１０内に組み込まれている。なお、以下に示す処理は、ＦＴＣ制御装置１６０のＣＰＵがＦＴＣ制御プログラム２１０を実行することにより実現されるが、説明を簡略化するために、ＦＴＣ制御プログラム２１０を処理主体として説明する。
【００５５】
まず、ＦＴＣ制御プログラム２１０は、構成テーブル３００（図４参照）から、ＦＴＣを構成するノードを示すデータを取得する（Ｓ４０１）。これは、テーブル３００の「ＦＴＣノード１」および「ＦＴＣノード２」が登録されているエントリ３０１に対応付けられたエントリ３０２に登録されている。
【００５６】
次に、ＦＴＣ制御プログラム２１０は、論理ボリュームをＦＴＣの構成ノードに接続する。具体的には、ＦＴＣ制御プログラム２１０は、構成テーブル３００からＦＴＣノードに接続する論理ボリュームのＩＤ（例えば、ＷＶＯＬ１とＳＹＳＶＯＬ１）、ノードのディスクアダプタ１０３が接続するストレージスイッチ１７０のポート番号、ストレージ装置１４０が接続するストレージスイッチ１７０のポート番号を取得する。そして、ノードのディスクアダプタ１０３が接続しているポートを、ストレージ装置１４０が接続するポートに接続するよう、ストレージスイッチ１７０を制御する。更に、ＦＴＣ制御プログラム２１０は、構成テーブル３００から取得した論理ボリュームＩＤによるディスクアクセスを、ストレージ装置１４０内の物理的なボリュームに関連付けるよう、ディスクコントローラ１４１を制御する。
【００５７】
次に、ＦＴＣ制御プログラム２１０は、ノードのネットワーク接続の設定を行う（Ｓ４０３、４０４）。具体的には、ＦＴＣ制御プログラム２１０は、Ｓ４０３において、内部ネットワークアダプタ１０５を内部ＬＡＮに接続するよう、ネットワークスイッチ１３０を制御する。また、ＦＴＣ制御プログラム２１０は、Ｓ４０４において、外部ネットワークアダプタ１０４を外部ＬＡＮに接続するよう、ネットワークスイッチ１３０を制御する。Ｓ４０３およびＳ４０４において、ＦＴＣ制御プログラム２１０は、構成テーブル３００、接続構成テーブル３１０、３２０を参照し、各ネットワークアダプタがネットワークスイッチ１３０のどのポートに接続しているかを取得し、各ポートと各ＬＡＮの関連付けを実施する。
【００５８】
最後に、ＦＴＣ制御プログラム２１０は、ＦＴＣ制御装置１６０を内部ＬＡＮに接続する（Ｓ４０５）。これも、構成テーブル３００に登録された情報を元に、ネットワークスイッチ１３０のポートとＬＡＮとの関連付けを実施する。
【００５９】
以上の構成処理により、ノード１００ａとノード１００ｂとがＦＴＣとして実行可能となる。なお、ＦＴＣの起動は、まず、ノード１００を起動してノード制御プログラム２０４を実行する。次に、ノード制御プログラム２０４にＯＳ２０２の実行を指示する。最後に、計算機ノード１００間の同期化処理を実施すると、２つの計算機ノード１００は、同期したプログラム実行を開始する。
【００６０】
この同期化処理は、ノード制御プログラム２０４に含まれている。同期化処理は、一旦、ＯＳ２０２の実行を中断し、２つのノード１００のメモリを同じ内容とし、かつ、それぞれが接続する業務用の論理ボリューム（ＷＶＯＬ１，２）の内容を一致させ、それから、ＯＳ２０２の実行を再開する。この後、ノード制御プログラム２０４が、仮想デバイスドライバ２０３やデバイスドライバ２０５が発するI/O要求を横取りして、上位のＯＳ２０２のI/O処理を同期化する。これにより、２つのノードが同期して実行する。
【００６１】
続いて、この同期化処理の手順について、図６を用いて説明する。図６は、本発明の実施形態の同期化処理の手順を示すフローチャートである。なお、以下では、ノード１（ノード１００ａ）とノード２（ノード１００ｂ）が実行していて（稼動していて）、且つノード１が主系として実行する場合を例にして説明する。また、以下で説明する処理は、ＦＴＣ制御装置１６０がＦＴＣ制御プログラム２１０を実行することにより、或いは、ノード１００が各プログラム（仮想デバイスドライバ２０３、ノード制御プログラム２０４、デバイスドライバ２０５）を実行することにより実現されるものである。しかし、以下では、説明を簡略化するために、各プログラム（ＦＴＣ制御プログラム２１０、仮想デバイスドライバ２０３、ノード制御プログラム２０４、デバイスドライバ２０５）を処理主体として説明する。
【００６２】
ＦＴＣ制御プログラム２１０は、同期化処理を開始する際に、主系とするノード１００ａに同期化処理を開始するように、内部ＬＡＮを介して指示する。ノード１００ａのノード制御プログラム２０４は、ＦＴＣ制御プログラム２１０からのメッセージを受信するまでを待機している。ノード１００ａのノード制御プログラム２０４は、ＦＴＣ制御プログラム２１０からのメッセージを受信した場合、
ＯＳ２０２の実行を中断して同期化処理を開始する（Ｓ５０１）。
【００６３】
ノード１００ａのノード制御プログラム２０４は、もう一方のノードであるノード１００ｂにメモリ一致化処理を開始する旨を、内部ＬＡＮを介して連絡する（Ｓ５０２）。ノード１００ｂのノード制御プログラム２０４は、メッセージ（メモリ一致化処理を開始する旨のメッセージ）を受信した場合、ＯＳ２０２の実行を中断して、メモリ内容の受信を待機する状態に遷移する（Ｓ５０３）。
【００６４】
次に、ノード１００ａのノード制御プログラム２０４は、自身のメモリ１０２の内容をノード１００ｂに送信する（Ｓ５０４）。なお、本ステップにおいて、ノード１００ａのノード制御プログラム２０４は、すべてのメモリ内容を送信する必要はなく、ＯＳ２０２、仮想デバイスドライバ２０３、アプリケーションプログラム２０１の実行に必要な部分の送信でよい。ノード１００ａは、メモリ内容の送信後、論理ボリューム一致化の完了通知を待機する（Ｓ５０５）。
【００６５】
ノード１００ｂのノード制御プログラム２０４は、Ｓ５０４にて送信されたメモリ内容を受信し、受信したメモリ内容をノード１００ｂのメモリに格納する（Ｓ５０６）。
【００６６】
ノード１００ｂのノード制御プログラム２０４は、メモリ内容の受信が終了すると、ＦＴＣ制御プログラム２１０に「ＷＶＯＬ２」の「ＷＶＯＬ１」との一致化を要求し（Ｓ５０７）、完了後、その旨をノード１００ａに通知する（Ｓ５０８）。この段階で、ノード１００ａとノード１００ｂとは、同じメモリ内容と、同じ内容の論理ボリュームを持つこととなる。ノード１００ａのノード制御プログラム２０４は、同期化処理を終了し、ＯＳ２０２の実行を再開する（Ｓ５１０）。一方、ノード１００ｂでは、ノード制御プログラム２０４は、実行制御を強制的にＳ５１０に移し（Ｓ５０９）、同期化処理を終了し、ＯＳ２０２の実行を再開する。この際、ノード１００ｂのメモリは、ノード１００ａと同一となっているので、ノード１００ｂは、ノード１００ａと同じ処理の実行を始めることになる。
【００６７】
次に、論理ボリュームの一致化手順について、図７を用いて説明する。
【００６８】
図７は、本発明の実施形態の論理ボリュームの一致化処理の手順を示すフローチャートである。この処理は、ＦＴＣ制御プログラム２１０に実装される。なお、図７で示す論理ボリュームの一致化処理は、ＦＴＣ制御装置１６０のＣＰＵがＦＴＣ制御プログラム２１０を実行することにより実現されるものである。しかし以下では、説明を簡略化するために、ＦＴＣ制御プログラム２１０を処理主体として説明する。なお、本実施の形態では、ストレージ装置１４０が、論理ボリュームの複製機能を有しているものとする。
【００６９】
まず、ＦＴＣ制御プログラム２１０は、作成する複製論理ボリュームと同じＩＤの論理ボリュームが存在している場合、そのボリュームを削除する（Ｓ６０１）。
【００７０】
続いて、ＦＴＣ制御プログラム２１０は、複製元論理ボリュームの、現状での
複製を作成するようにディスクコントローラ１４１に指示する（Ｓ６０２）。この場合、ストレージ装置１４０内では、実際のボリューム内容のコピーは発生せずに、論理的に同じ内容を持つ複製とすることが可能である。このため、この処理は、実際に内容をコピーする場合に比べて、短時間で終了する。
【００７１】
そして、最後に、ＦＴＣ制御プログラム２１０は、作成された論理ボリュームに新しいＩＤを設定する（Ｓ６０３）。例えば、「ＷＶＯＬ２」に相当する論理ボリュームを「ＷＶＯＬ１」から複製したならば、構成テーブル３００から「ＷＶＯＬ２」の論理ボリュームＩＤを取得し、そのＩＤを設定する。図３の例ならば、ＩＤとして「２」を設定する。
【００７２】
以上の処理で、２つのノード１００で、ＯＳ２０２とアプリケーションプログラム２０１が、同期して同じ処理を実行する二重系が構成される。
【００７３】
次に、一方のノードがハードウェア障害で停止した場合の二重系への復旧処理手順について説明する。本実施形態では、ストレージ装置１４０のスナップショット機能を用いて、復旧処理の高速化を実現する。
【００７４】
図８は、本発明の実施形態の復旧処理の手順を示すフローチャートである。この処理は、ＦＴＣ制御装置１６０で実行する復旧処理プログラム２１１に実装され、ノード１００の１つがハードウェア障害でダウンした際に実行される。ここでは、ノード１００ａが、ノード１００ｂの停止を検知して、復旧手順を開始する場合を例にして説明する。
【００７５】
なお、以下で示す復旧処理は、ＦＴＣ制御装置１６０が復旧処理プログラム２１１を実行し、ノード１００がノード制御プログラム２０４を実行することにより実現されるものである。しかし以下では、説明を簡略化するために、各プログラム（復旧処理プログラム２１１、ノード制御プログラム２０４）を処理主体として説明する。
【００７６】
まず、ノード１００ａのノード制御プログラム２０４は、ノード１００ｂのダウン（障害の発生）を検知すると、ＦＴＣ制御装置１６０の復旧処理プログラム２１１に、二重系への復帰処理の開始を依頼する（Ｓ７０１）。復旧処理プログラム２１１は、依頼メッセージを受信し、復旧処理を開始する。
【００７７】
復旧処理プログラム２１１は、構成テーブル３００を参照して、待機中のノードを検索する。この例では、ノード１００ｃが待機中である。そして、構成テーブル３００に、このノード１００ｃをノード１００ｂの代替ノードとして登録する。すなわち、ＦＴＣノード２として、ノード３（ノード１００ｃ）を登録する（Ｓ７０２）。
【００７８】
次に、復旧処理プログラム２１１は、ＦＴＣノード２用のシステムボリュームのバックアップ（ＳＹＳＢＫ２）の複製を作成する。具体的には、今までのＳＹＳＶＯＬ２論理ボリュームを削除し、ＳＹＳＢＫ２の複製を作成し、この複製にＳＹＳＶＯＬ２の論理ボリュームＩＤを設定する（Ｓ７０３）。
【００７９】
そして、作成した論理ボリュームを、ノード１００ｃが接続するストレージスイッチ１７０のポートから参照可能なように（アクセス可能なように）、ストレージスイッチ１７０を制御する（Ｓ７０４）。具体的には、ノード１００ｃがストレージスイッチ１７０に接続しているポートと、ストレージ装置１４０のポートを接続するように設定する。
【００８０】
次に、復旧処理プログラム２１１は、ネットワークスイッチ１３０を操作して、ノード１００ｂのネットワークアダプタ１０４が接続しているポートをネットワークから切り離し、新たに、ノード１００ｃが接続しているポートをネットワークスイッチ１３０に接続する。具体的には、ノード１００ｃの内部ネットワークアダプタ１０５を内部ＬＡＮに、外部ネットワークアダプタ１０４を外部ＬＡＮ１５０に接続する（Ｓ７０５）。
【００８１】
ここで、ノード１００ｃを起動し（ステップ７０６）、ノード制御プログラムの起動完了を待機し、完了後にノード１００ａに完了を通知する。（Ｓ７０７）。
ノード１００ａのノード制御プログラム２０４は、ノード１００ｃからの起動完了の通知を受信すると、同期化処理を開始する（Ｓ７０８）。ここでの同期化処理は、上述したＳ５０１からＳ５１０の処理である。但し、図６において、ノード１００ｂで実行すると説明した処理は、ノード１００ｃのノード制御プログラムが実行する。この処理の中で、ＷＶＯＬ１と同じ内容を持つ論理ボリュームＷＶＯＬ２の作成と、メモリ一致化が実施される。これにより、ノード１００ｃがノード１００ａと同期して実行を開始する。以上により、ＦＴＣを構成するノード１００のハードウェア障害から二重系運転へと復帰する。
【００８２】
続いて、本実施形態のおける、ＦＴＣ構成を実現するのに必要な、初期設定処理について図９を用いて説明する。
【００８３】
図９は、本発明の実施形態の初期設定処理の手順を示すフローチャートである。ここで、ＦＴＣ制御プログラム２１０には、初期の論理ボリューム構成をストレージ装置１４０に作成する処理と、構成テーブル３００を作成する処理を実現するためのプログラムを含んでいるものとする。また、以下で示す初期設定処理は、ＦＴＣ制御装置１６０がＦＴＣ制御プログラム２１０を実行することにより実現されるものであるが、説明を簡略化するために、ＦＴＣ制御プログラム２１０を処理主体として説明する。
【００８４】
ＦＴＣ制御プログラム２１０は、構成テーブル３００を初期化する。まず、ノードの接続状態を保持する各ノードの接続テーブル３１０、３２０、３３０を作成し（Ｓ１１０１）、構成テーブル３００のネットワーク接続、ストレージ接続に関するデータを初期化する（Ｓ１１０２）。なお、テーブルの内容は、ユーザの指示による。
【００８５】
次に、ＦＴＣ制御プログラム２１０は、各論理ボリュームのＩＤを決定し、テーブル３００に記録する（Ｓ１１０３）。ここで決定したＩＤに合わせて、各種論理ボリュームを作成していく（ＦＴＣ制御プログラム２１０は、ディスクコントローラ１４１を制御して、各種論理ボリュームを作成する）。
【００８６】
ＦＴＣ制御プログラム２１０は、ノード制御プログラム２０４とデバイスドライバ２０５を保持するための「ＳＹＳＶＯＬ１」、「ＳＹＳＶＯＬ２」を作成する（Ｓ１１０４）。
【００８７】
「ＳＹＳＶＯＬ１」には、ノード制御プログラム２０４とデバイスドライバ２０５とを格納する。格納する際、いくつかの設定が必要になる。例えば、ノード制御プログラム２０４およびデバイスドライバ２０５自身が実行するのに必要となるストレージ装置１４０への参照は、テーブル３００のＳＹＳＶＯＬ１に設定された論理ボリュームＩＤで参照するようにする。また、仮想デバイスドライバ２０３からの参照はＷＶＯＬ１に設定された論理ボリュームＩＤで、デバイスドライバ２０５がストレージを参照するように設定する。また、内部ネットワークアダプタ１０４のネットワークアドレスを構成テーブル３００より取得して設定する。ＳＹＳＶＯＬ２も同様にして作成する。
【００８８】
次に、ＦＴＣ制御プログラム２１０は、作成したＳＹＳＶＯＬ１、２を複製して、ＳＹＳＢＫ１、２を作成する（Ｓ１１０５）。
【００８９】
最後に、ＦＴＣ制御プログラム２１０は、ＷＶＯＬ１、２を作成する（Ｓ１１０６）。ＷＶＯＬ１には、ＯＳ２０２、ノード制御プログラム２０４と連携するように設定された仮想デバイスドライバ２０３、アプリケーションプログラム２０１、およびこれらの実行に必要な設定情報を格納する。ＷＶＯＬ２は、ＷＶＯＬ１の複製として作成する。以上により、ＦＴＣの初期状態を設定することができる。
【００９０】
このように、本発明の第１実施形態によれば、２つのノード１００が参照する外部記憶装置の一致化で、外部記憶装置間のコピーが発生しないため、２つのノード１００が参照するボリュームの一致化処理が短時間で完了する。また、ハードウェア故障時に備えて待機のノードをおくこと、および、ＦＴＣノード間、ストレージ装置間の接続にプログラムで制御可能なネットワークスイッチ１３０とストレージスイッチ１７０を介することで、待機ノードのＦＴＣへの組み込みを自動化できる。
【００９１】
従来のＦＴＣでは、ハードウェアの構成要素は完全に二重化するという考え方を採用している。これに従えば、ＦＴＣでは、外部記憶装置はそれぞれのノードが持ち（すなわち、ノード毎に外部記憶装置が設けられている）、ノード間の接続は物理的に直接接続する、といった形態になる。一方、本実施形態は、ハードウェアの信頼性が向上していることを利用して、ノード間の接続、および、ノードとストレージとの間の接続にスイッチを導入している。これにより、本実施形態では、ＦＴＣ構成する装置の設定を自動化できるため、設定処理の手間を低減することができる。
【００９２】
なお、従来のＦＴＣでは、ノード間を直接接続するため、待機用のノードを準備しておくことは不可能である。第１実施形態では、機器間の接続をスイッチを介すことにより、ノードを予めスイッチに接続しておき、交代する際にプログラムで接続を変更することで、ＦＴＣ構成の自動復旧を実現している。そのため、第１実施形態によれば、ＦＴＣの復旧処理の手間が軽減されることになる。
【００９３】
なお、第１実施形態では、論理ボリュームの一致化を、復旧の際にスナップショットを取ることとしたが、論理ボリューム（例えば、ＷＶＯＬ１等）のコピー（ミラーボリューム）を保持するミラーを構成して（複製を複製対象の論理ボリュームのペアとして保持しておいて）、復旧の際にこのミラーリングを解除して、ミラーボリュームを復旧用の論理ボリュームとしてもよい。
《第２実施形態》
次に、本発明の第２実施形態について説明する。第２実施の形態では、第１実施形態においてＦＴＣ制御装置１６０で実行していたＦＴＣ制御プログラム２１０を、ノード１００で実行するようにしている。なお、第２実施形態の説明において、第１実施形態と同じ構成については、同じ符号を用いることとする。また、第２実施形態の説明は、第１実施形態と異なる部分を中心に説明する。
【００９４】
図１０は、本発明の第２実施形態のプログラム配置、および、接続構成を説明するための図である。
【００９５】
図示するように、第２実施形態のＦＴＣは、第１実施形態の構成からＦＴＣ制御装置１６０を除き、ＦＴＣ制御装置１６０の機能をノード１００に持たせるようにしている。すなわち、第１実施形態では、ＦＴＣ制御プログラム２１０をＦＴＣ制御装置１６０においていたが、第２実施の形態では、ＦＴＣを構成するノード１００ａ、１００ｂ、１００ｃの各々に、ＦＴＣ制御プログラム２１０を配置するようにしている（図９ではノード１００ｃを図示せず）。なお、ノード１００ａ〜ｃ、ネットワークスイッチ１３０、ストレージ装置１４０、およびストレージスイッチ１７０のハードウェア構成は、図１と同じである。
【００９６】
第２実施形態では、ＦＴＣ制御プログラム２１０（復旧処理プログラム２１１、ネットワーク構成プログラム２１２、ストレージ構成プログラム２１３を含む）は、ノード制御プログラム２０４の制御下で実行するように配置する。これにより、ＦＴＣ制御プログラム２１０は、メモリ一致化やストレージ一致化といった処理を、ノード制御の処理とは無関係に実行でき、ＦＴＣの構成制御をＦＴＣノード自身で実現することができる。また、第２実施形態によれば、ＦＴＣの外部に制御装置を配備しない構成を実現できる。
【００９７】
なお、第２実施形態では、ＦＴＣを構成するノードでＦＴＣ制御プログラム２１０を実行することとしたが、交換用に待機しているノード１００ｃでＦＴＣ制御プログラムを実行するようにしても良い。この場合、予め、ノード１００ｃの内部ネットワークアダプタが内部ＬＡＮに接続するようにネットワークスイッチ１３０の構成を設定しておけば良い。
《第３実施形態》
続いて、本発明の第３実施形態を説明する。第３実施形態は、ネットワークスイッチ１３０の障害によるシステムダウンを防止するために、ＦＴＣを構成するノード１００間を、ネットワークスイッチ１３０を介さずに直接接続するようにしたものである。なお、第３実施形態の説明において、第１実施形態と同じ構成については、同じ符号を用いることとする。また、第３実施形態の説明は、第１実施形態と異なる部分を中心に説明する。
【００９８】
図１１に、本発明の第３実施形態のシステム構成を示す。図示するように、第３実施形態では、ノード１００ａの内部ネットワークアダプタ１０５と、ノード１００ｂの内部ネットワークアダプタ１０５とを、互いに直接接続する。また、ＦＴＣ制御装置１６０、ストレージスイッチ１７０、ストレージ装置１４０は、ネットワークスイッチ１３０を介して、同一ネットワークに接続するようネットワークスイッチの構成を設定する。各ノード１００ａ〜ｃの外部ネットワークアダプタ１０４は、ネットワークスイッチ１３０に接続し、外部ＬＡＮ１５０に接続するように、ネットワークスイッチ１３０が構成される。
【００９９】
この構成では、障害復旧の際のＦＴＣ制御プログラム２１０からの指示は、ネットワークスイッチ１３０を介して、ストレージスイッチ１７０、ストレージ装置１４０に伝えられる。なお、第３実施形態では、交代ノード１００を導入する場合には、ノード間の内部ＬＡＮの接続は手動で配線をしなおす必要がある。これによって、内部ＬＡＮの障害によりＦＴＣとしての同期実行が不可能となる状況を避けられる。この構成では、復旧作業に人手が必要になるが、より信頼性を向上することが可能である。
【０１００】
なお、本発明は以上で説明した実施形態に限定されるものではなく、本発明の要旨の範囲内において種々の変形が可能である。例えば、上述した各実施形態では、ストレージスイッチ１７０とネットワークスイッチ１３０を１台のみ示したが、これらを冗長化することも可能である。これによれば、ノード１００とスイッチ間の接続を冗長化でき、かつ、スイッチも冗長となるので、完全に障害特異点を排除することが可能である。
【０１０１】
また、上記第１実施形態および第２実施形態では、ネットワークスイッチ１３０に待機用のノード１００ｃを接続しておく場合を例にしたが特にこれに限定するものではない。ノード１００を２台にしてもよい。例えば、ノード１００ａ、ノード１００ｂ、ネットワークスイッチ１３０、ストレージ装置１４０、ＦＴＣ制御装置１６０、およびストレージスイッチ１７０を有するシステムとして構成してもよい。この場合、ノード１００ａとノード１００ｂとで二重系のＦＴＣを構成しておいて、ノード１００ａおよびノード１００ｂのいずれかが故障した際、ユーザがノード１００ｃを新たにネットワークスイッチ１３０に接続する。例えば、ユーザが別の場所に置かれているノード１００ｃを持ち込み、ＦＴＣのネットワークスイッチ１３０に接続する。なお、この場合、ノード１００ｃのネットワークスイッチ１３０への接続作業だけは手動になる。
【０１０２】
また、上記第２実施形態の構成において、上記第３実施形態のように、ノード１００ａとノード１００ｂとをネットワークスイッチ１３０を介さずに直接接続するようにしてもよい。
【図面の簡単な説明】
【０１０３】
【図１】本発明の第１実施の形態における、フォールトトレラントコンピュータ（ＦＴＣ）のハードウェア構成図である。
【図２】本発明の第1実施形態における、プログラムの構成を示す図である。
【図３】本発明の第1実施形態におけるＦＴＣ制御プログラム２１０により管理されるデータのデータ構造を模擬的に示した図である。
【図４】本発明の実施形態の論理ボリュームの構成例を示した図である。
【図５】本発明の実施形態のＦＴＣの構成処理の手順を示すフローチャートである。
【図６】本発明の実施形態の同期化処理の手順を示すフローチャートである。
【図７】本発明の実施形態の論理ボリュームの一致化処理の手順を示すフローチャートである。
【図８】本発明の実施形態の復旧処理の手順を示すフローチャートである。
【図９】本発明の実施形態の初期設定処理の手順を示すフローチャートである。
【図１０】本発明の第２実施形態のプログラム配置、および、接続構成を説明するための図である。
【図１１】本発明の第３実施形態のシステム構成を説明するための図である。
【符号の説明】
【０１０４】
１００…計算機ノード、１０１…ＣＰＵ、１０２…メモリ、１０３…ディスクアダプタ、１０４…外部ネットワークアダプタ、１０５…内部ネットワークアダプタ、１３０…ネットワークスイッチ、１４０…ストレージ装置、１４１…ディスクコントローラ、１４２…ディスク記憶装置、１５０…外部ＬＡＮ、１６０…ＦＴＣ制御装置、１７０…ストレージスイッチ、２０１…アプリケーションプログラム、２０２…ＯＳ、２０３…仮想デバイスドライバ、２０４…ノード制御プログラム、２０５…デバイスドライバ、２１０…ＦＴＣ制御プログラム、２１１…復旧処理プログラム、２１２…ネットワーク構成プログラム、２１３…ストレージ構成プログラム、２２１〜２２６…論理ボリューム、３００…構成テーブル、３１０〜３３０…接続テーブル
【図１】
2007042001.tif 000003
【図２】
2007042001.tif 000004
【図３】
2007042001.tif 000005
【図４】
2007042001.tif 000006
【図５】
2007042001.tif 000007
【図６】
2007042001.tif 000008
【図７】
2007042001.tif 000009
【図８】
2007042001.tif 000010
【図９】
2007042001.tif 000011
【図１０】
2007042001.tif 000012
【図１１】
2007042001.tif 000013