(57)【要約】【課題】共有ストレージ装置を共有する各ノード毎に、論理ユニット単位で当該ノードから論理的に切り離すかを設定することで、システムの安全を確保する。【解決手段】共有ディスク装置２０内のマッピング管理部２３０は、マッピング設定機能とマッピング解除機能とを有する。論理ユニット２２Ａ及び２２Ｂを排他使用していたノードＮ１で障害が発生したために、新たに稼働系となったノードＮ２は、ノードＮ１への論理ユニット２２Ａ及び２２Ｂの割り当てを解除させるためのマッピング解除要求７１をマッピング管理部２３０に発行する。するとマッピング管理部２３０は、ノードＮ１への論理ユニット２２Ａ及び２２Ｂの割り当てを解除する。つまりマッピング管理部２３０は、ノードＮ１からの論理ユニット２２Ａ及び２２Ｂの切り離し７２及び７３を行う。【選択図】      図１
2006106864.tif 000002
【特許請求の範囲】
【請求項１】
論理ユニットが構築される記憶領域を有する共有ストレージ装置と、
前記共有ストレージ装置を共有する複数のノードとを具備し、
前記共有ストレージ装置は、前記複数のノードの各々を対象に、論理ユニットを割り当てることで当該ノードからの当該論理ユニットへのアクセスを可能とするマッピング設定と、論理ユニットの割り当てを解除することで当該ノードからのアクセスを不可能とするマッピング解除とを行うマッピング管理手段を有し、
前記複数のノードの各々は、
相互に通信を行うことで、前記複数のノードのいずれかで障害が発生した場合に当該障害が発生したノードで実行されていた業務を引き継ぐための制御を行うクラスタ制御手段であって、対応する前記ノードが、当該ノードに割り当てられた論理ユニットに関して稼働系をなす場合に、当該論理ユニットを排他使用するための排他制御を行う排他制御手段を含むクラスタ制御手段と、
論理ユニットを排他使用していたノードで障害が発生したために、対応するノードが新たに稼働系となって当該論理ユニットを排他使用する場合、当該障害が発生したノードへの当該論理ユニットの割り当てを解除するように前記マッピング管理手段に要求するマッピング要求手段とを有する
ことを特徴とするクラスタシステム。
【請求項２】
前記マッピング管理手段は、システム起動時に、前記共有ストレージ装置の任意の論理ユニットを、前記複数のノードのうち当該論理ユニットを共有可能な全てのノードに割り当てることを特徴とする請求項１記載のクラスタシステム。
【請求項３】
前記マッピング管理手段は、通常は前記複数のノードのいずれに対しても前記マッピング設定を行わず、前記複数ノードのうち稼働系となったノードから論理ユニットの割り当てが要求された場合だけ、要求された論理ユニットを要求元のノードのみに割り当てることを特徴とする請求項１記載のクラスタシステム。
【請求項４】
前記マッピング要求手段は、論理ユニットを排他使用していたノードで障害が発生したために、当該マッピング要求手段を有するノードが新たに稼働系となって当該論理ユニットを排他使用する場合、当該障害が発生したノードへの当該論理ユニットの割り当てを解除すると共に、当該マッピング要求手段を有するノードへの当該論理ユニットの割り当てを要求することを特徴とする請求項３記載のクラスタシステム。
【請求項５】
論理ユニットが構築される記憶領域を有する共有ストレージ装置と、前記共有ストレージ装置を共有する複数のノードとを備え、前記複数のノードの間で相互に通信を行うことにより、前記複数のノードのうちのいずれかのノードで障害が発生した場合に当該障害が発生したノードで実行されていた業務を、前記複数のノードのうちの別のノードが引き継ぐことが可能なクラスタシステムに適用される共有ストレージ装置の排他制御方法であって、
システム起動時に、前記共有ストレージ装置の任意の論理ユニットを、前記複数のノードのうち当該論理ユニットを共有可能な全てのノードに前記共有ストレージ装置が割り当てるステップと、
前記論理ユニットが割り当てられたノード間で相互に通信を行うことにより、稼働系のノードが当該論理ユニットを排他使用するステップと、
前記論理ユニットを排他使用していたノードで障害が発生したために、前記複数のノードのうちの別のノードが新たに稼働系となって当該論理ユニットを排他使用する場合、当該新たに稼働系となったノードが前記共有ストレージ装置に対し、当該障害が発生したノードへの当該論理ユニットの割り当てを解除させるステップと
を具備することを特徴とするクラスタシステムに適用される共有ストレージ装置の排他制御方法。
【請求項６】
論理ユニットが構築される記憶領域を有する共有ストレージ装置と、前記共有ストレージ装置を共有する複数のノードとを備え、前記複数のノードの間で相互に通信を行うことにより、前記複数のノードのうちのいずれかのノードで障害が発生した場合に当該障害が発生したノードで実行されていた業務を、前記複数のノードのうちの別のノードが引き継ぐことが可能なクラスタシステムに適用される共有ストレージ装置の排他制御方法であって、
前記複数のノードのうち稼働系のノードが、論理ユニットを排他使用するために、前記共有ストレージ装置に対して当該論理ユニットを当該稼働系のノードに割り当てさせるステップと、
前記論理ユニットが割り当てられた稼働系ノードが当該論理ユニットを排他使用するステップと
を具備することを特徴とするクラスタシステムに適用される共有ストレージ装置の排他制御方法。
【請求項７】
前記論理ユニットを排他使用していたノードで障害が発生したために、前記複数のノードのうちの別のノードが新たに稼働系となって当該論理ユニットを排他使用する場合、当該新たに稼働系となったノードが前記共有ストレージ装置に対し、当該障害が発生したノードへの当該論理ユニットの割り当てを解除させると共に、当該論理ユニットを当該新たに稼働系となったノードに割り当てさせるステップと
を更に具備することを特徴とする請求項６記載のクラスタシステムに適用される共有ストレージ装置の排他制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のノードから共有ストレージ装置内の論理ユニットを利用するのに好適なクラスタシステム及び同システムに適用される共有ストレージ装置の排他制御方法に関する。
【背景技術】
【０００２】
複数のノード（サーバ、計算機）から共有使用されるストレージ装置は、共有ストレージ装置と呼ばれる。この種のストレージ装置はディスク装置により構成されるのが一般的である。この場合、ディスク装置は共有ディスク装置として用いられることになる。
【０００３】
共有ディスク装置を複数のノードが共有するためには、当該共有ディスク装置の排他制御が必要となる。この排他制御は、システムが動作するオペレーティングシステム（ＯＳ）やミドルウェアのソフトウェア機能を用いて実現されている（例えば、非特許文献１または２参照）。この非特許文献１または２に記載されたソフトウェア機能による排他制御は、クラスタシステムで適用されている。クラスタシステムは、稼働状態にあるノード（稼働系ノード）で障害が発生した場合に、その障害が発生したノードで実行されていたサービス（業務）を、システム内の他の計算機、例えば待機状態（ホットスイタンバイ状態）にある他の計算機（待機系計算機）に引き継がせる（フェイルオーバする）ことができる計算機システムとして知られている。ここでは、あるノードが共有ディスク装置をアクセスしている場合、他のノードからは当該共有ディスク装置をアクセスしないように、各ノード上のクラスタソフトウェアで制御される。
【０００４】
また、上記排他制御を、ＳＣＳＩ（Small Computer System Interface）規格上の機能を用いて実現することも可能である（例えば、特許文献１参照）。このＳＣＳＩ規格上の機能による排他制御では、例えばクラスタシステム内のあるノードから共有ディスク装置に対して、ＳＣＳＩ規格に準拠したディスク占有命令（Ｒｅｓｅｒｖｅコマンド）が送信された場合に、この命令を送信したノードからのアクセスのみが当該共有ディスク装置によって有効とされる。これにより、ディスク占有命令を送信したノードは、共有ディスク装置を占有（排他使用）できる。この占有（Ｒｅｓｅｒｖｅ）状態は、バスリセットまたはディスク解放命令（Ｒｅｌｅａｓｅコマンド）により解除可能である。
【０００５】
さて、共有ディスク装置が複数のノードによって共有されるシステムでは、必ずしも共有ディスク装置全体が１つのノードで占有されるとは限らず、したがって排他制御も共有ディスク装置単位で行われるとは限らない。むしろ、共有ディスク装置単位ではなく、共有ディスク装置内の任意のディスク領域に構築される、論理ユニット（またはパーティション）と呼ばれる論理ボリューム単位で、排他制御が行われることが多い。この論理ユニット（論理ボリューム）単位の排他制御も、上述のソフトウェア機能またはＳＣＳＩ規格上の機能により実現できる。
【特許文献１】特開２０００−１６３３５７号公報（段落０００５、段落００２５乃至００２９）
【非特許文献１】金子哲夫、森良哉、「クラスタソフトウェア」、東芝レビュー、Vol.54 No.12(1999)、p.18-21（特に第４．２節）
【非特許文献１】生藤芳一、笹本亨一、「高性能・高信頼ディスクアレイ装置」、東芝レビュー、Vol.54 No.12(1999)、p.22-25（特に第５節）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記したように、ソフトウェア機能による排他制御またはＳＣＳＩ規格上の機能による排他制御においては、あるノードが共有ディスク装置内の論理ユニットを占有（排他使用）している場合、他のノードから当該論理ユニットをアクセスしないように制御される。但し、論理ユニットを排他使用していない他のノードから共有ディスク装置に対して、当該論理ディスクへのアクセスが誤って要求された場合、その要求は当該共有ディスク装置で受け付けられる可能性がある。つまり、論理ユニットを排他使用していないノードの誤動作などによって、当該論理ユニットを排他使用しているノードとの間の排他制御が正常に行われなくなると、この誤動作したノードからも当該論理ユニットをアクセスすることが可能となる。
【０００７】
例えば、ソフトウェア機能による排他制御においては、論理ユニットを共有するノードの間での相互確認などにより、システムの安全を保証することができる。ところが従来技術においては、障害発生などにより論理ユニットを共有するノードがシステムから孤立して誤動作して、その誤動作したノードから当該論理ユニットへのアクセスの要求が発行されると、その要求が共有ディスク装置で受け付けられる虞がある。この場合、論理ユニットを共有し得る他の正常に動作しているノードに影響を及ぼし、システムの安全を保つことが困難になる。特に重要になるのが、共有ディスク装置上のデータであり、誤動作により共有する論理ユニット上のデータが破損する等の影響を受けることになる。
【０００８】
また、ＳＣＳＩ規格上の機能による排他制御においても、「Ｒｅｓｅｒｖｅ」状態が保持されている間はシステムの安全を保証することができる。しかし従来技術では、排他制御が正常に行われない状況において、バスリセットの発生または「Ｒｅｌｅａｓｅコマンド」の発行などにより、誤って論理ユニットの「Ｒｅｓｅｒｖｅ」状態が解除されると、システムの安全を保つことが困難になり、上述のソフトウェア機能による排他制御と同様の問題が生じる。
【０００９】
本発明は上記事情を考慮してなされたものでその目的は、共有ストレージ装置を共有する各ノード毎に、論理ユニット単位で当該ノードから論理的に切り離すかを設定することができ、これによりシステムの安全を確保することができるクラスタシステム及び同システムに適用される共有ストレージ装置の排他制御方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明の１つの観点によれば、論理ユニットが構築される記憶領域を有する共有ストレージ装置と、この共有ストレージ装置を共有する複数のノードとを備えたクラスタシステムが提供される。上記共有ストレージ装置は、上記複数のノードの各々を対象に、論理ユニットを割り当てることで当該ノードからの当該論理ユニットへのアクセスを可能とするマッピング設定と、論理ユニットの割り当てを解除することで当該ノードからのアクセスを不可能とするマッピング解除とを行うマッピング管理手段を有する。上記複数のノードの各々は、相互に通信を行うことで、上記複数のノードのいずれかで障害が発生した場合に当該障害が発生したノードで実行されていた業務を引き継ぐための制御を行うクラスタ制御手段であって、対応する上記ノードが、当該ノードに割り当てられた論理ユニットに関して稼働系をなす場合に、当該論理ユニットを排他使用するための排他制御を行う排他制御手段を含むクラスタ制御手段と、論理ユニットを排他使用していたノードで障害が発生したために、対応するノードが新たに稼働系となって当該論理ユニットを排他使用する場合、当該障害が発生したノードへの当該論理ユニットの割り当てを解除するように上記マッピング管理手段に要求するマッピング要求手段とを有する。
【００１１】
このような構成において、共有ストレージ装置に設けられたマッピング管理手段は、ノードへの論理ユニットの割り当てにより当該ノードからの当該論理ユニットへのアクセスを可能とするマッピング設定機能と、ノードへの論理ユニットの割り当てを解除することで当該ノードからのアクセスを不可能とするマッピング解除機能とを有する。そこで、論理ユニットを排他使用していたノードで障害が発生したために、新たに稼働系となって当該論理ユニットを排他使用しようとするノードは、当該障害が発生したノードへの当該論理ユニットの割り当てを解除するようにマッピング管理手段に要求する。するとマッピング管理手段は、障害が発生したノードへの当該論理ユニットの割り当てを解除する。つまりマッピング管理手段は、障害が発生したノードから、それまで当該ノードによってアクセスされていた論理ユニットを論理的に切り離す。これにより、障害が発生したノードが、例えば一過性の障害などのために直ちに復旧して、元の稼働系として動作しようとしても、割り当てを解除された論理ユニットにアクセスすることはできない。よってシステムの安全を確保することができる。
【００１２】
ここで、システム起動時に、任意の論理ユニットが、上記複数のノードのうち当該論理ユニットを共有可能な全てのノードにマッピング管理手段によって割り当てられる構成とするならば、当該論理ユニットが割り当てられたノードのうち稼働系となったノードは、他のノードとの排他制御により当該論理ユニットを占有できる。
【００１３】
また、通常は上記複数のノードのいずれに対してもマッピング設定が行われず、上記複数ノードのうち稼働系となったノードから論理ユニットの割り当てが要求された場合だけ、要求された論理ユニットがマッピング管理手段によって要求元のノードのみに割り当てられる構成とするならば、稼働系ノードに割り当てられた論理ユニットに、他のノードから不正にアクセスしようとしても、当該論理ユニットがアクセスされる虞はなく、システムの安全を確保できる。
【発明の効果】
【００１４】
本発明によれば、論理ユニットを排他使用していたノードで障害が発生したために、新たに稼働系となったノードからの要求により、障害が発生したノードから当該障害が発生したノードに割り当てられていた論理ユニットを切り離すマッピング解除操作が行われるため、障害が発生したノードがたとえ一過性の障害により直ちに復旧して、元の稼働系として動作しようとしても、マッピングが解除された論理ユニットにアクセスできず、当該論理ユニット上のデータが破損する危険を回避することができ、システムの安全を確保できる。
【００１５】
また本発明によれば、通常は論理ユニットの割り当てを行わず、新たに稼働系となったノードからの要求に応じて当該稼働系となったノードに論理ユニットが割り当てられる構成とすることにより、他のノードからの不正アクセスを防止してシステムの安全を保つことができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態につき図面を参照して説明する。  
図１は本発明の一実施形態に係るクラスタシステムの構成を示すブロック図である。図１のクラスタシステムは、２台のノード（サーバ計算機）Ｎ１及びＮ２から構成されている。ノードＮ１及びＮ２は、当該ノードＮ１及びＮ２間の通信に用いられるネットワーク等の通信路（内部通信路）１０によって相互接続されている。図１では、ノードＮ１及びＮ２とクライアント端末との間の通信に用いられる通信路（外部通信路）は省略されている。クライアント端末からのサービスの実行要求は、この外部通信路を介して図１のクラスタシステムに送信される。クラスタシステム内のノードＮｉ（ｉ＝１，２）は、クライアント端末からの要求で指定されたサービスを実行し、その実行結果を示す応答を外部通信路を介して要求元のクライアント端末に返す。なお、ノードＮ１及びＮ２間の通信と、ノードＮ１及びＮ２とクライアント端末との間の通信とが、同一の通信路を介して行われる構成であっても構わない。但し、通信路における通信トラフィックの増大を招く。
【００１７】
ノードＮ１及びＮ２は、共有ストレージ装置としての共有ディスク装置２０を共有使用する。そのため、ノードＮ１及びＮ２は、それぞれ共有ディスク装置２０と接続するためのポート１１-1及び１１-2を有している。また、共有ディスク装置２０は、ノードＮ１及びＮ２とそれぞれ接続するためのポート２１-1及び２１-2を有している。ノードＮ１及びＮ２のポート１１-1及び１１-2は、それぞれＳＣＳＩケーブル或はファイバチャネルにより共有ディスク装置２０のポート２１-1及び２１-2と接続されている。
【００１８】
共有ディスク装置２０の記憶領域には、少なくとも１つの論理ユニット、例えば２つの論理ユニット２２Ａ（ＵＮＩＴ−Ａ）及び２２Ｂ（ＵＮＩＴ−Ｂ）が構築されている。ここでは、論理ユニット２２Ａ（ＵＮＩＴ−Ａ）には論理ユニット番号０（ＬＵ＃０）が、論理ユニット２２Ｂ（ＵＮＩＴ−Ｂ）には論理ユニット番号１（ＬＵ＃１）が、それぞれ割り当てられているものとする。共有ディスク装置２０は、ノードＮ１及びＮ２からの当該共有ディスク装置２０内の論理ユニットへのアクセスを制御するコントローラ２３を有する。
【００１９】
コントローラ２３はマッピング管理部２３０を有する。マッピング管理部２３０は、ノードＮｉ（ｉ＝１，２）内の後述するマッピング要求部１３-iからの要求（マッピング設定／解除要求）に応じて、論理ユニット及び論理ユニット番号の割り当て、または割り当ての解除を行う。マッピング管理部２３０は、マッピングテーブルＴＢＬを含む。マッピングテーブルＴＢＬは、共有ディスク装置２０内の論理ユニット毎に、当該論理ユニットが割り当てられたノードのノード名と、当該論理ユニットに割り当てられた論理ユニット番号とを保持するのに用いられる。
【００２０】
図２は、マッピングテーブルＴＢＬの一例を示す。図２の例では、論理ユニット２２Ａ（ＵＮＩＴ−Ａ）及び２２Ｂ（ＵＮＩＴ−Ａ）は、いずれもノードＮ１及びＮ２の双方に割り当てられ、論理ユニット２２Ａ（ＵＮＩＴ−Ａ）及び２２Ｂ（ＵＮＩＴ−Ａ）には、それぞれ論理ユニット番号０（ＬＵ＃０）及び１（ＬＵ＃１）が割り当てられている。この場合、ノードＮ１及びＮ２の双方は、論理ユニット２２Ａ及び２２Ｂのいずれに対してもアクセス可能である。つまり、ノードＮ１またはＮ２から論理ユニット２２Ａまたは２２Ｂへのアクセス要求が発行された場合、その要求は以下に述べるように受け付けられる。
【００２１】
マッピング管理部２３０は、ノードＮ１またはＮ２からのアクセス要求に対してマッピングテーブルＴＢＬを参照し、当該ノードＮまたはＮ２に割り当てられた論理ユニットへのアクセス要求の場合だけ、要求されたアクセスを許可する。つまりマッピング管理部２３０は、論理ユニットが割り当てられたノードに対してのみ、当該論理ユニットへのアクセスを許可する。図２のマッピングテーブルＴＢＬの例では、論理ユニット２２Ａ（ＵＮＩＴ−Ａ）へのアクセスと、論理ユニット２２Ｂ（ＵＮＩＴ−Ｂ）へのアクセスとは、ノードＮ１及びＮ２のいずれからのアクセス要求に対しても許可される。但し、ノードＮ１及びＮ２の後述するディスク排他制御部１２０-1及び１２０-2による排他制御が正常に行われて、ノードＮ１及びＮ２の一方が論理ユニット２２Ａまたは２２Ｂを排他使用している状態では、ノードＮ１及びＮ２の他方からは論理ユニット２２Ａまたは２２Ｂへのアクセス要求が発行されることはない。
【００２２】
ノードＮ１及びＮ２では、それぞれクラスタ制御部１２-1及び１２-2が動作する。クラスタ制御部１２-1及び１２-2は、図１に示すように、通信路１０を介して相互に通信１００を行うことにより、障害が発生したノード（障害ノード）を検出する。ここでは、クラスタ制御部１２-1及び１２-2は、ハートビート信号と呼ばれる信号を相互に且つ定期的に送信する。クラスタ制御部１２-1及び１２-2は、ハートビート信号が予め定められた一定時間（タイムアウト時間）を超えて途絶えたことをもって、対応するクラスタ制御部が存在するノード（計算機）での障害発生を判断する。クラスタ制御部１２-1及び１２-2は、相互に通信１００を行いながら同期して一体となって動作することにより、１つの仮想的なクラスタ制御システム１２０を構成する。このクラスタ制御システム１２０は、ノードＮ１及びＮ２にまたがって存在していると考えることができる。クラスタ制御システム１２０は、ノードＮ１及びＮ２上のクラスタ制御部１２-1及び１２-2が相互に通信４０を行いながら同期して動作することにより、ノードの障害を迅速に検出することができる。クラスタ制御システム１２０は、障害が検出されたノード（つまり障害ノード）で実行されていたサービスを他のノードに引き継がせるための制御を行う。クラスタ制御部１２-1及び１２-2は、クラスタ制御用のプログラム（クラスタソフトウェア）を、それぞれノードＮ１及びＮ２が読み取り実行することにより実現される。このクラスタ制御用のプログラムは、ノードＮ１及びＮ２で読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプログラムが、ネットワークを介してダウンロード（頒布）されても構わない。
【００２３】
クラスタ制御部１２-1及び１２-2は、それぞれディスク排他制御部１２０-1及び１２０-2を有する。ディスク排他制御部１２０-1及び１２０-2は、相互の通信により、共有ディスク装置２０内の論理ユニットへのアクセスの排他制御を行う。ディスク排他制御部１２０-1及び１２０-2は、それぞれ排他制御テーブルＴＢＬ１及びＴＢＬ２を含む。排他制御テーブルＴＢＬ１及びＴＢＬ２は、対応するノードＮ１及びＮ２によって共有可能な全ての論理ユニットについて、対応するノードが当該論理ユニットにアクセスが可能か否か、或は対応するノードから当該論理ユニットが切り離されているかを示す状態情報を保持するのに用いられる。ここでは、共有ディスク装置２０内の、論理ユニット番号が０（ＬＵ＃０）の論理ユニット２２Ａ（ＵＮＩＴ−Ａ）及び論理ユニット番号が１（ＬＵ＃１）の論理ユニット２２Ｂ（ＵＮＩＴ−Ｂ）は、共にノードＮ１及びＮ２によって共有可能である。この場合、排他制御テーブルＴＢＬ１及びＴＢＬ２の内容は同一となる。
【００２４】
図３は、排他制御テーブルＴＢＬ１及びＴＢＬ２の一例を示す。図３において、記号○で表される状態情報はアクセス可（占有可）状態を、記号△で表される状態情報は排他のためのアクセス不可状態を、それぞれ示す。図３の例では、ノードＮ１は、論理ユニット番号が０（ＬＵ＃０）の論理ユニット２２Ａ（ＵＮＩＴ−Ａ）と、論理ユニット番号が１（ＬＵ＃１）の論理ユニット２２Ｂ（ＵＮＩＴ−Ｂ）とに対して、いずれもアクセスが許可される状態にあることが分かる。これに対してノードＮ２は、論理ユニット番号が０（ＬＵ＃０）の論理ユニット２２Ａ（ＵＮＩＴ−Ａ）と、論理ユニット番号が１（ＬＵ＃１）の論理ユニット２２Ｂ（ＵＮＩＴ−Ｂ）とに対して、他のノード（ここではノードＮ１）との排他のために、いずれもアクセスが許可されない状態にあることが分かる。このことは、ノードＮ１が稼働系となり、ノードＮ２が待機系となっていることを示す。但し、本実施形態では上記の説明から明らかなように、共有ディスク装置２０全体でなく、論理ユニット毎に稼働系のノードと待機系のノードを設定可能である。このため、図３の例では、論理ユニット２２Ａの使用に関して、ノードＮ１が稼働系、ノードＮ２が待機系となっており、論理ユニット２２Ｂの使用に関しても、ノードＮ１が稼働系、ノードＮ２が待機系となっているといえる。本実施形態では、この他に、ノードから論理ユニットが切り離されている状態が設定可能である。この状態（切り離し状態）は、後述するように記号×で表される。
【００２５】
再び図１を参照すると、ノードＮ１及びＮ２では、それぞれマッピング要求部１３-1及び１３-が動作する。マッピング要求部１３-1及び１３-2は、それぞれディスク排他制御部１２０-1及び１２０-2の排他制御に応じ、共有ディスク装置２０のマッピング管理部２３０に対してマッピングの設定または解除を要求する。
【００２６】
次に、本実施形態の動作について、従来技術と比較しながら、図４乃至図図７を参照して説明する。なお、図４はマッピング機能を利用した論理ユニットの排他制御を説明するための図、図５は図４の状態で稼働系のノードＮ１に障害が発生して、新たに稼働系となったノードＮ２からマッピング解除要求が発行された結果、図２の状態から更新されたマッピングテーブルＴＢＬの一例を示す図、図６はマッピングテーブルＴＢＬの更新に伴って、図３の状態から更新された排他制御テーブルＴＢＬ２の一例を示す図、図７はマッピング解除を利用した論理ユニットの排他制御を説明するための図である。
【００２７】
まず、図１のシステムでは、ノードＮ１及びＮ２は、共有ディスク装置２０の論理ユニット２２Ａ及び２２Ｂをいずれも共有可能に設定されている。通常は、ノードＮ１及びＮ２上で動作するクラスタ制御部１２-1及び１２-2が相互に通信１００を行うことで、クラスタ制御部１２-1内のディスク排他制御部１２０-1及びクラスタ制御部１２-2内のディスク排他制御部１２０-2により、共有ディスク装置２０へのアクセスに関する排他制御、更に詳細に述べるならば共有ディスク装置２０の論理ユニット２２Ａ及び２２Ｂへのアクセスに関する排他制御が実現されている。この排他制御により、論理ユニット２２Ａに関する待機系から当該論理ユニット２２Ａに対するアクセス要求が発行されるのが抑止され、論理ユニット２２Ｂに関する待機系から当該論理ユニット２２Ｂに対するアクセス要求が発行されるのが抑止される。
【００２８】
さて図１のシステムでは、論理ユニット２２Ａ（ＵＮＩＴ−Ａ）及び２２Ｂ（ＵＮＩＴ−Ｂ）に関し、いずれもノードＮ１が稼働系となり、ノードＮ２が待機系となるように設定されているものとする。この場合、稼働系のノードＮ１からは、図４において矢印４１及び４２で示すように、論理ユニット２２Ａ及び２２Ｂのいずれにもアクセスできる。これに対し、待機系のノードＮ２からは、図４に示すノードＮ１及びＮ２のディスク排他制御部１２０-1及び１２０-2の排他制御４３が正常に行われている限り、図４において矢印４４及び４５で示すように、論理ユニット２２Ａ及び２２Ｂのいずれにもアクセスできない。この状態は、図３に示す排他制御テーブルＴＢＬ１及びＴＢＬ２に反映されている。
【００２９】
このような状態で、例えばノードＮ１に障害が発生したものとする。このノードＮ１の障害は、ノードＮ１のクラスタ制御部１２-1及びノードＮ２のクラスタ制御部１２-2の間の通信１００により、クラスタ制御部１２-2によって検出される。そして、クラスタ制御部１２-2のクラスタ制御の機能により、ノードＮ２が新たに稼働系となって、共有ディスク装置２０の論理ユニットについても当該ノードＮ２からアクセスできるように排他制御が行われる。
【００３０】
このため、ノードＮ１（元の稼働系のノード）が障害発生によって完全に利用不可能な状態に陥っている場合には、従来技術でも問題は発生しない。しかし、ノードＮ１の障害が一過性である場合、当該ノードＮ１が障害から復旧して、システムから孤立した状態で利用可能な状態にまで復帰すると、稼働系ノードが、現在稼働系となっているノードＮ２と元の稼働系のノードＮ１との２つ同時に存在することになる。この場合、従来技術では、共有ディスク装置２０内の論理ユニットへのアクセスに関して排他制御が正常に行われなくなり、当該論理ユニットに対してノードＮ２とノードＮ１の両方からアクセスが可能な状態になる。この結果、ノードＮ２とノードＮ１の両方からの同時アクセスや不正データの書き込みなど、障害が発生したノードＮ１からの影響による不具合が発生し、システムの安全を確保できない。しかし本実施形態では、以下に述べるように、このような不具合の発生は防止される。
【００３１】
まず本実施形態では、図１のクラスタシステムの起動時に、ノードＮ１及びＮ２が、共有ディスク装置２０の論理ユニット２２Ａ及び２２Ｂを共有できる（アクセスし得る）ように、予め論理ユニット及び論理ユニット番号の割り当て（マッピング）が行われる。即ち、ノードＮ１には、論理ユニット２２Ａ（ＵＮＩＴ−Ａ）及び２２Ｂ（ＵＮＩＴ−Ｂ）が割り当てられる。また、ノードＮ２にも、論理ユニット２２Ａ（ＵＮＩＴ−Ａ）及び２２Ｂ（ＵＮＩＴ−Ｂ）が割り当てられる。論理ユニット２２Ａ（ＵＮＩＴ−Ａ）及び２２Ｂ（ＵＮＩＴ−Ｂ）には、それぞれ論理ユニット番号０（ＬＵ＃０）及び１（ＬＵ＃１）が割り当てられる。この割り当ては、ノードＮ１及びＮ２のうちの例えば稼働系となるノードＮ１のマッピング要求部１３-2からの設定要求に応じて、共有ディスク装置２０のマッピング管理部２３０によって行われる。
【００３２】
上述の割り当ての状態を示す情報は、図２のマッピングテーブルＴＢＬに保持される。図２のマッピングテーブルＴＢＬの例では、前記したように、論理ユニット２２Ａ（ＵＮＩＴ−Ａ）へのアクセスと、論理ユニット２２Ｂ（ＵＮＩＴ−Ｂ）へのアクセスとは、ノードＮ１及びＮ２のいずれからのアクセス要求に対しても許可される。但し、論理ユニット２２Ａまたは２２Ｂへのアクセス要求は稼働系（ここではノードＮ１）からのみ発行されるように、ノードＮ１及びＮ２のディスク排他制御部１２０-1及び１２０-2による排他制御４３（図４参照）が行われる。
【００３３】
本実施形態では、上述のように稼働系のノードＮ１に障害が発生した結果、ノードＮ２のクラスタ制御部１２-2によりノードＮ２が新たに稼働系となる場合、当該稼働系となるノードＮ２のマッピング要求部１３-2は、共有ディスク装置２０のマッピング管理部２３０に対し、図７に示すマッピング解除要求７１を発行する。このマッピング解除要求７１により、障害が発生したノードＮ１に割り当てられていた、論理ユニット２２Ａ及び２２Ｂに対するマッピングを解除することが要求される。
【００３４】
マッピング管理部２３０は、マッピング要求部１３-2からのマッピング解除要求７１を受け取ると、マッピングテーブルＴＢＬの状態を、論理ユニット２２Ａ（ＵＮＩＴ−Ａ）及び２２Ｂ（ＵＮＩＴ−Ｂ）がノードＮ１及びＮ２の双方に割り当てられていることを示す状態から、図５に示すように、ノードＮ２のみに割り当てられていることを示す状態に変更する。つまりマッピング管理部２３０は、マッピングテーブルＴＢＬを操作して、論理ユニット２２Ａ及び２２ＢのノードＮ１への割り当てを解除する。これにより、論理ユニット２２Ａ及び２２Ｂは図７において、×印７２及び７３で示されるように、ノードＮ１から切り離される。
【００３５】
マッピング要求部１３-2は、論理ユニット２２Ａ及び２２ＢのノードＮ１への割り当てが解除されたことを確認すると、その旨をディスク排他制御部１２０-2に通知する。これによりディスク排他制御部１２０-2は、排他制御テーブルＴＢＬ２を操作して、論理ユニット２２Ａ及び２２Ｂに関し、図６に示すように、ノードＮ２はアクセス可（占有可）状態（記号○で表される状態）に、ノードＮ１は切り離し状態（記号×で示される状態）に変更する。ここで、ノードＮ１が排他のためのアクセス不可状態に変更されるのではないことに注意されたい。
【００３６】
このように、新たに稼働系となるノードＮ２のマッピング要求部１３-2からの解除要求により、障害が発生した元の稼働系のノードＮ１に対する論理ユニット２２Ａ及び２２Ｂのマッピングが解除されて、当該論理ユニット２２Ａ及び２２ＢがノードＮ１から切り離される。これにより、ノードＮ１が一過性の障害から復旧して、共有ディスク装置２０を利用可能な状態にまで復帰した結果、自身が元の稼働系のままであるとして、誤ってノードＮ１から論理ユニット２２Ａまたは２２Ｂへのアクセス要求が発生したとしても、利用可能な論理ユニット２２Ａ及び２２Ｂは既に当該ノードＮ１から切り離されていることから、そのアクセス要求が共有ディスク装置２０で受け付けられる虞はない。よって、ノードＮ２とノードＮ１の両方からの同時アクセスや不正データの書き込みなど、障害が発生したノードＮ１からの悪影響を防止して、システムの安全を確保できる。一方、新たに稼働系となったノードＮ２は、図７において矢印７４及び７５で示すように、論理ユニット２２Ａ及び２２Ｂのいずれにもアクセスできる。
【００３７】
さて、ノードＮ１が障害から復旧すると、当該ノードＮ１のクラスタ制御部１２-1と現在の稼働系ノードＮ２のクラスタ制御部１２-2との間で再び通信１００が行われる。これにより、ノードＮ１上の排他制御テーブルＴＢＬ１が、ノードＮ２上の排他制御テーブルＴＢＬ２に一致させられるなど、両ノードの間で同期がとれるようになったものとする。この場合、ノードＮ１は待機系となる。すると、稼働系のノードＮ２のマッピング要求部１３-2は、ノードＮ１に論理ユニット２２Ａ及び２２Ｂを再び割り当てるためのマッピングの設定を要求する。マッピング管理部２３０は、マッピング要求部１３-2からの設定要求を受け取ると、マッピングテーブルＴＢＬの状態を、論理ユニット２２Ａ（ＵＮＩＴ−Ａ）及び２２Ｂ（ＵＮＩＴ−Ｂ）がノードＮ１及びＮ２の双方に割り当てられていることを示す状態（図２参照）に戻す。
【００３８】
［変形例］
次に上記実施形態の変形例について、図８乃至図１１を参照して説明する。なお、図８はシステム立ち上げ時のマッピングテーブルＴＢＬの一例を示す図、図９はマッピング設定後の、図８の状態から更新されたマッピングテーブルＴＢＬの一例を示す図、図１０はマッピング設定後の排他制御テーブルＴＢＬ１及びＴＢＬ２の一例を示す図、図１１はマッピング設定を利用した論理ユニットの排他制御を説明するための図である。
【００３９】
まず上記実施形態では、従来技術における排他制御との互換性を考慮して、ノードＮ１及びＮ２の双方に、稼働系と待機系との区別をすることなく、論理ユニット２２Ａ及び２２Ｂが予め（システムの起動時に）割り当てられる（つまりマッピングが行われる）構成を適用している。そして、排他制御が正常に行われなくなる虞のある、稼働系ノードの障害発生時のみ、その障害が発生したノードへの論理ユニットの割り当てを解除する構成を適用している。
【００４０】
これに対して、上記実施形態の変形例では、ノードＮ１及びＮ２に、論理ユニット２２Ａ及び２２Ｂを割り当てるマッピングが予め行われない構成を適用する。この状態では、マッピングテーブルＴＢＬの内容は図８のようになり、待機系ノード（ここではノードＮ１）からだけでなく、稼働系ノード（ここではノードＮ２）からも、論理ユニット２２Ａ及び２２Ｂにアクセスできない。そこで本変形例では、図１のシステムの立ち上げ後に、ノードＮ１のクラスタ制御部１２-1とノードＮ２のクラスタ制御部１２-2との間の通信１００で、例えばノードＮ１が稼働系として決定された段階で、稼働系ノードＮ１のマッピング要求部１３-1から共有ディスク装置２０のマッピング管理部２３０に次に述べるマッピング設定が要求される。
【００４１】
今、ノードＮ１が稼働系として決定された結果、図１１に示すように、ノードＮ１のディスク排他制御部１２０-1とノードＮ２のディスク排他制御部１２０-2との間の排他制御１１１で、稼働系のノードＮ１が論理ユニット２２Ａ及び２２Ｂを排他的に使用することとなったものとする。この場合、ノードＮ１のマッピング要求部１３-1は、共有ディスク装置２０のマッピング管理部２３０に対し、図１１に示すマッピング設定要求１１２を発行する。このマッピング設定要求１１２により、ノードＮ１に論理ユニット２２Ａ及び２２Ｂを割り当てて、当該論理ユニット２２Ａ及び２２Ｂに任意の論理ユニット番号を割り当てることで、ノードＮ１のみに当該論理ユニット２２Ａ及び２２Ｂへのアクセスを許可することができる、マッピングの設定が要求される。
【００４２】
するとマッピング管理部２３０は、マッピングテーブルＴＢＬの状態を、論理ユニット２２Ａ（ＵＮＩＴ−Ａ）及び２２Ｂ（ＵＮＩＴ−Ｂ）がいずれのノードにも割り当てられていない図８に示す状態から、図９に示すように、当該論理ユニット２２Ａ（ＵＮＩＴ−Ａ）及び２２Ｂ（ＵＮＩＴ−Ｂ）がノードＮ１のみに割り当てられていることを示す状態に変更する。
【００４３】
これにより、稼働系のノードＮ１からは、図１１において矢印１１３及び１１４で示すように、論理ユニット２２Ａ及び２２Ｂのいずれにもアクセスできる。これに対し、稼働系ノードＮ１以外には論理ディスクの割り当ては行われず、論理ユニット２２Ａ及び２２Ｂは、稼働系ノードＮ１以外のノード、つまり待機系のノードＮ２からは、図１１において×印１１５及び１１６で示すように切り離されている。したがって、待機系ノードＮ２（稼働系ノードＮ１以外のノード）から論理ユニット２２Ａまたは２２Ｂに対する不正アクセスを故意に試みたとしてもシステムの安全を確保できる。
【００４４】
さて、ノードＮ１のマッピング要求部１３-1は、論理ユニット２２Ａ及び２２Ｂが当該ノードＮ１に割り当てられたことを確認すると、その旨をディスク排他制御部１２０-1に通知する。これによりディスク排他制御部１２０-1は、排他制御テーブルＴＢＬ１を操作して、論理ユニット２２Ａ及び２２Ｂに関し、図１０に示すように、ノードＮ１はアクセス可（占有可）状態（記号○で表される状態）に、ノードＮ２は切り離し状態（記号×で示される状態）に変更（設定）する。すると、稼働系のノードＮ１のクラスタ制御部１２-1と待機系のノードＮ２のクラスタ制御部１２-2との間の通信１００により、ノードＮ２上の排他制御テーブルＴＢＬ２が、図１０に示すように、ノードＮ１上の排他制御テーブルＴＢＬ１に一致させられる。
【００４５】
この変形例において、ノードＮ１に障害が発生して、ノードＮ２が新たに稼働系となる場合には、ノードＮ２のマッピング要求部１３-2からマッピング管理部２３０に対して、障害が発生したノードＮ１に対する論理ユニット２２Ａ及び２２Ｂの当該ノードＮ１の割り当ての解除（マッピング解除）と、ノードＮ２への論理ユニット２２Ａ及び２２Ｂの割り当て（マッピング設定）とを要求すれば良い。このような状況で、上記実施形態と同様にノードＮ１の障害が一過性の障害であり、その一過性の障害から当該ノードＮ１が復旧したものとする。この場合、ノードＮ１が元の稼働系のままであるとして動作することはあり得る。しかし、ノードＮ１が新たに稼働系となったわけではないため、ノードＮ２に対する論理ユニット２２Ａ及び２２Ｂの割り当ての解除と、ノードＮ１への論理ユニット２２Ａ及び２２Ｂの割り当てとを要求する虞はない。
【００４６】
また、上記実施形態では、共有ディスク装置２０の論理ユニット２２Ａ及び２２Ｂが共に、ノードＮ１及びＮ２の一方からのみアクセス可能である場合を想定している。しかし、例えば論理ユニット２２ＡはノードＮ１からのみアクセス可能で、論理ユニット２２ＢはノードＮ２からのみアクセス可能とする設定も可能である。この場合、論理ユニット２２Ａへのアクセスに関しては、ノードＮ１が稼働系で、ノードＮ２が待機系であり、論理ユニット２２Ｂへのアクセスに関しては、ノードＮ１が待機系で、ノードＮ２が稼働系であるといえる。
【００４７】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【００４８】
【図１】本発明の一実施形態に係るクラスタシステムの構成を示すブロック図。
【図２】図１中のマッピングテーブルＴＢＬの一例を示す図。
【図３】図１中の排他制御テーブルＴＢＬ１及びＴＢＬ２の一例を示す図。
【図４】同実施形態におけるマッピング機能を利用した論理ユニットの排他制御を説明するための図。
【図５】図４の状態で稼働系のノードＮ１に障害が発生して、新たに稼働系となったノードＮ２からマッピング解除要求が発行された結果、図２の状態から更新されたマッピングテーブルＴＢＬの一例を示す図。
【図６】マッピングテーブルＴＢＬの更新に伴って、図３の状態から更新された排他制御テーブルＴＢＬ２の一例を示す図。
【図７】同実施形態におけるマッピング解除を利用した論理ユニットの排他制御を説明するための図。
【図８】上記実施形態の変形例におけるシステム立ち上げ時のマッピングテーブルＴＢＬの一例を示す図。
【図９】同変形例におけるマッピング設定後の、図８の状態から更新されたマッピングテーブルＴＢＬの一例を示す図。
【図１０】同変形例におけるマッピング設定後の排他制御テーブルＴＢＬ１及びＴＢＬ２の一例を示す図。
【図１１】同変形例におけるマッピング設定を利用した論理ユニットの排他制御を説明するための図。
【符号の説明】
【００４９】
Ｎ１，Ｎ２…ノード（計算機）、ＴＢＬ…マッピングテーブル、ＴＢＬ１，ＴＢＬ２…排他制御テーブル、１０…通信路、１２-1，１２-2…クラスタ制御部、１３-1，１３-2…マッピング要求部、２０…共有ディスク装置、２２Ａ，２２Ｂ…論理ユニット、２３…コントローラ、１２０-1，１２０-2…ディスク排他制御部、２３０…マッピング管理部。
【図１】
2006106864.tif 000003
【図２】
2006106864.tif 000004
【図３】
2006106864.tif 000005
【図４】
2006106864.tif 000006
【図５】
2006106864.tif 000007
【図６】
2006106864.tif 000008
【図７】
2006106864.tif 000009
【図８】
2006106864.tif 000010
【図９】
2006106864.tif 000011
【図１０】
2006106864.tif 000012
【図１１】
2006106864.tif 000013