(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0015】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。
【0017】
図1は、本発明の第一の実施形態の計算機システムの構成を示すブロック図である。
【0018】
本実施形態の計算機システムは、計算機101A及び計算機101Bから構成される。計算機101A及び計算機101Bは、ネットワーク180を介して互いに接続される。ネットワーク180は、例えば、LAN(Local Area Network)が考えられる。ただし、本発明は、ネットワーク180の接続形式に限定されない。以下、計算機101A及び計算機101Bを区別しない場合、計算機101と記載する。
【0019】
本実施形態では、計算機101A及び計算機101Bが備える記憶媒体を用いて共有ストレージを構成する。また、計算機101Aは、共有ストレージを用いてサービスを提供する主系計算機として稼動し、計算機101Bは計算機101Aに障害が発生した場合にサービスを継続する副系計算機として稼動するものとする。なお、
図1では、計算機101が2台であるが、3台以上あってもよい。
【0020】
まず、計算機101のハードウェア構成について説明する。
【0021】
計算機101Aは、プロセッサ102A、メモリ103A、ストレージインタフェース104A、ディスク装置105A及びネットワークインタフェース106Aを備える。
【0022】
プロセッサ102Aは、メモリ103Aに格納されるプログラムを実行する。プロセッサ102Aがプログラムを実行することによって、計算機101Aの機能を実現できる。以下、プログラムを主語に処理を説明する場合、プロセッサ102Aによってプログラムが実行されていることを示す。
【0023】
メモリ103Aは、プロセッサ102Aが実行するプログラム及び当該プログラムを実行するために必要なデータを格納する。メモリ103Aは、例えば、DRAMのような半導体メモリが考えられ、ディスク装置105Aに比べ高速にアクセスすることができる。メモリ103Aに格納されるプログラム及びデータについては後述する。
【0024】
ストレージインタフェース104Aは、大容量のデータを格納可能なディスク装置105Aに接続するためのインタフェースである。
【0025】
ディスク装置105Aは、所定のサービスに必要な情報(例えば、ファイルデータ)を格納する。ディスク装置105Aは、例えば、HDD(Hard Disk Drive)が考えられる。
【0026】
なお、ディスク装置105以外のSSD(Solid State Drive)等の記憶媒体であってよい。また、ディスク装置105Aは、複数あってもよい。また、ディスク装置105Aは計算機101Aに外付けされた形式でもよい。
【0027】
ネットワークインタフェース106Aは、ネットワーク180を介して他の装置と接続するためのインタフェースである。
【0028】
なお、計算機101Aは、メモリ103A及びディスク装置105A以外に、OS(Operating System)等の情報を格納する記憶装置を備えていてもよい。
【0029】
計算機101Bのハードウェア構成は計算機101Aと同一であるため説明を省略する。
【0030】
次に、計算機101のソフトウェア構成について説明する。
【0031】
計算機101Aのメモリ103Aには、サービス提供部150、冗長化処理部151A、ディスクドライバ部152A、ネットワークディスクドライバ部153A、副系選択部154、構成設定部155A及び構成回復部156Aを実現するプログラムが格納される。
【0032】
サービス提供部150は、共有ストレージを用いて所定のサービスを提供する。サービス提供部150は、サービスの提供時に共有ストレージに対するアクセス要求を出力する。
【0033】
冗長化処理部151Aは、共有ストレージに対するアクセス要求を受信し、当該アクセス要求に対応するアクセス処理を実行する。具体的には、冗長化処理部151Aは、ディスクドライバ部152A及びネットワークディスクドライバ部153Bに対してアクセス要求を出力する。冗長化処理部151Aが実行する処理の詳細は、
図4を用いて後述する。冗長化処理部151Aは、例えば、OSが備えるソフトウェアRAID機能によって実現することができる。
【0034】
ディスクドライバ部152Aは、冗長化処理部151Aから出力されたアクセス要求に基づいて、共有ストレージを構成するディスク装置105Aにアクセスする。
【0035】
ネットワークディスクドライバ部153Aは、ネットワーク180を介して、共有ストレージを構成するディスク装置105Bにアクセスする。具体的には、ネットワークディスクドライバ部153Aは、ネットワークディスクドライバ部153Bにアクセス要求を送信する。
【0036】
副系選択部154は、計算機システムに含まれる複数の計算機101から副系計算機となる計算機101を選択する。副系選択部154が実行する処理の詳細は、
図3を用いて後述する。
【0037】
構成設定部155Aは、主系計算機として稼動するために必要な情報を設定する。構成設定部155Aが実行する処理の詳細は、
図2を用いて後述する。
【0038】
構成回復部156Aは、計算機101Aに障害が発生した場合に、当該障害を回復するための処理を実行する。構成回復部156Aが実行する処理の詳細は、
図9を用いて後述する。
【0039】
なお、メモリ103Aに格納されるプログラムは、ディスク装置105A又は外部の装置(図示省略)に格納されていてもよい。この場合、ディスク装置105Aから各プログラムが読み出され、又は、ネットワーク180を介して外部の装置から各プログラムが読み出され、メモリ103Aに格納される。
【0040】
計算機101Bのメモリ103Bには、障害制御部170、代替サービス提供部171、冗長化処理部151B、ディスクドライバ部152B、ネットワークディスクドライバ部153B、構成設定部155B、及び構成回復部156Bを実現するプログラムが格納される。
【0041】
障害制御部170は、主系計算機として稼動する計算機101Aの動作を監視し、計算機101Aの障害を検知した場合に、計算機101Bがサービスを継続するための処理を実行する。障害制御部170が実行する処理の詳細は、
図6を用いて後述する。
【0042】
代替サービス提供部171は、障害が発生した計算機101Aの代わりにサービスを提供する。
【0043】
冗長化処理部151Bは、冗長化処理部151Aと同一のものであり、代替サービス提供部171から出力されたアクセス要求を受信し、共有ストレージに対するアクセス処理を実行する。ディスクドライバ部152Bは、ディスクドライバ部152Bと同一のものである。冗長化処理部151Bが実行する処理の詳細は、
図8を用いて後述する。
【0044】
ネットワークディスクドライバ部153Bは、ネットワークディスクドライバ部153Aから受信したアクセス要求に基づいて、ディスクドライバ部152Bに対してアクセス要求を出力する。これによって、共有ストレージを構成するディスク装置105Bへのアクセスを実現できる。また、ネットワークディスクドライバ部153Bは、ネットワーク180を介して、共有ストレージを構成するディスク装置105Aにアクセスする。
【0045】
構成設定部155Bは、副系計算機として稼動するために必要な情報を設定する。構成設定部155Bが実行する処理の詳細は、
図5及び
図7を用いて後述する。
【0046】
構成回復部156Bは、主系計算機の障害が回復した後に、再び副系計算機として稼動するための処理を実行する。構成回復部156Bが実行する処理の詳細は、
図10を用いて後述する。
【0047】
なお、メモリ103Bに格納されるプログラムは、ディスク装置105B又は外部の装置(図示省略)に格納されていてもよい。この場合、ディスク装置105Bから各プログラムが読み出され、又は、ネットワーク180を介して外部の装置から各プログラムが読み出され、メモリ103Bに格納される。
【0048】
また、構成設定部155A及び構成設定部155Bは、同一の機能を提供するプログラムであり、主系計算機の設定処理及び副系計算機の設定処理を実行することができる。構成回復部156A及び構成回復部156Bは、同一の機能を提供するプログラムであり、主系計算機の回復処理及び副系計算機の回復処理を実行することができる。
【0049】
以下、ディスクドライバ部152A及びディスクドライバ部152Bを区別しない場合、ディスクドライバ部152と記載し、ネットワークディスクドライバ部153A及びネットワークディスクドライバ部153Bを区別しない場合、ネットワークディスクドライバ部153と記載する。また、構成設定部155A及び構成設定部155Bを区別しない場合、構成設定部155と記載し、構成回復部156A及び構成回復部156Bを区別しない場合、構成回復部156と記載する。
【0050】
以下、各構成の処理について説明する。まず、
図2〜
図5を用いて、主系計算機及び副系計算機の設定方法について説明する。
【0051】
図2は、本発明の第一の実施形態における構成設定部155A(主系)が実行する処理を説明したフローチャートである。
【0052】
構成設定部155Aは、計算機システムの管理者からの指示を受信すると処理を開始する(ステップS201)。このとき、当該指示には、計算機システム内の計算機101の総数と構成設定部155Aが実行される計算機101Aの識別番号が含まれる。
【0053】
例えば、
図1の例では、計算機101の総数は「2」、計算機101Aの識別番号は「1」、計算機101Bの識別番号が「2」となる。
【0054】
構成設定部155Aは、副系選択部154を呼び出す(ステップS202)。呼び出された副系選択部154が後述する処理(
図3参照)を実行することによって、副系計算機となる計算機101を決定することができる。このとき、構成設定部155Aは、副系選択部154から副系計算機となる計算機101の識別情報を取得する。
【0055】
計算機101の識別情報は、計算機システム内において計算機101を一意に識別できる情報であればよく、例えば、計算機101のコンピュータ名、MACアドレス及びIPアドレス等が考えられる。
【0056】
構成設定部155Aは、ネットワークディスクドライバ部153Aに対して副系計算機が備えるネットワークディスクドライバ部153と接続するよう指示する(ステップS203)。
図1に示す例では、ネットワークディスクドライバ部153Aは、ネットワークディスクドライバ部153Bと接続するように指示される。これによって、ネットワークディスクドライバ部153Aは、ネットワークディスクドライバ部153Bにアクセス要求を送信することができる。
【0057】
構成設定部155Aは、冗長化処理部151Aに論理デバイス(共有ストレージ)の生成を指示する(ステップS204)。ここで、論理デバイスとは、サービス提供部150が一つのディスク装置として認識可能な論理的なディスク装置である。本発明では、複数の計算機101が有するディスク装置105が有する記憶領域から生成される論理デバイスが、共有ストレージとして用いられる。
【0058】
これによって、ディスク装置105A及びディスク装置105Bが有する記憶領域から論理デバイスが生成される。また、ディスクドライバ部152A及びネットワークディスクドライバ部153Aのそれぞれに同一の書込要求を出力される。そのため、論理デバイスへの書込処理では、ディスク装置105A及びディスク装置105Bのそれぞれにデータが書き込まれる。前述のようにデータが、異なるディスク装置105に格納されるため、主系計算機に障害が発生しても副系計算機のディスク装置105に格納されるデータを用いてサービスを継続することができる。
【0059】
なお、論理デバイス上には、分散共有ファイルシステムを構築することができる。共有ファイルシステム上に配置されたファイルには、すべての計算機101が同じようにアクセスできる。
【0060】
構成設定部155Aは、サービス提供部150に論理デバイスにアクセスするように指示し、処理を終了する(ステップS205、ステップS206)。具体的には、構成設定部155Aは、サービスに用いる記憶領域として論理デバイスの識別情報を通知する。これによってサービス提供部150は、論理デバイスに対してアクセス要求を出力する。
【0061】
図3は、本発明の第一の実施形態における副系選択部154が実行する処理を説明するフローチャートである。
【0062】
副系選択部154は、構成設定部155Aから呼び出されると処理を開始する(ステップS301)。なお、副系選択部154は、呼び出されるときに計算機システムを構成する計算機101の総数と、構成設定部155Aを実行する計算機101の識別番号とを構成設定部155Aから受け取る。
【0063】
副系選択部154は、自身の識別番号が計算機システムを構成する計算機101に割り当てられた識別番号のうち、最大の識別番号であるか否かを判定する(ステップS302)。例えば、副系選択部154は、自身の識別番号が計算機101の総数と同一であるか否かを判定する。自身の識別番号が計算機101の総数と同一である場合には、自身の識別番号が最大の識別番号であると判定される。
【0064】
自身の識別番号が最大であると判定された場合、副系選択部154は、最小の識別番号(例えば、識別番号が「1」)の計算機101を副系計算機に選択し、ステップS305に進む(ステップS303)。
【0065】
自身の識別番号が最大でないと判定された場合、副系選択部154は、自身の識別番号に「1」を加算した識別番号の計算機101を副系計算機に選択し、ステップS305に進む(ステップS304)。
【0066】
副系選択部154は、副系計算機として選択された計算機101の識別情報を取得し、処理を終了する(ステップS305、ステップS306)。
【0067】
例えば、予め、識別番号と識別情報とを対応づけたデータを準備しておき、副系選択部154が、副系計算機の識別番号に基づいて当該データを参照することによって識別情報を取得する方法が考えられる。
【0068】
なお、副系計算機の選択方法は、
図3に示すものに限定されず、計算機101のリソース量、使用率等に基づいて選択する方法であってもよい。また、2台以上の副系計算機を選択する場合、副系計算機として選択された計算機101の識別番号を新たな入力として
図3に示す処理を繰り返し実行すればよい。
【0069】
図4は、本発明の第一の実施形態における冗長化処理部151A(主系)が実行する処理を説明するフローチャートである。
【0070】
冗長化処理部151Aは、構成設定部155Aから論理デバイスの生成指示を受信すると処理を開始する(ステップS401)。冗長化処理部151Aは、副系計算機の識別情報を取得する(ステップS402)。
【0071】
冗長化処理部151Aは、主系計算機のディスク装置105及び副系計算機のディスク装置105を統合して論理デバイスを生成する(ステップS403)。
図1に示す例では、ディスク装置105A及びディスク装置105Bが統合された論理デバイスが生成される。
【0072】
冗長化処理部151Aは、論理デバイスと各ディスク装置105とを対応づけた冗長化情報を生成する(ステップS404)。冗長化情報は、少なくとも、論理デバイスの識別情報及びディスク装置105の識別情報を含む。なお、冗長化情報は、計算機101の識別情報等その他の情報を含んでいてもよい。
【0073】
冗長化処理部151Aは、冗長化情報を各ディスク装置105へ書き込み、処理を終了する(ステップS405、ステップS406)。
図1に示す例では、冗長化処理部151Aは、ディスクドライバ部152A及びネットワークディスクドライバ部153Aのそれぞれに冗長化情報の書込要求を出力する。これによって、共有ストレージ、すなわち、論理デバイスを構成するディスク装置105A及びディスク装置105Bに冗長化情報が格納される。
【0074】
図5は、本発明の第一の実施形態における構成設定部155B(副系)が実行する処理を説明するフローチャートである。
【0075】
構成設定部155Bは、計算機システムの管理者からの指示を受信すると処理を開始する(ステップS501)。なお、構成設定部155Bの処理は、構成設定部155Aの処理よりも前に実行される。
【0076】
構成設定部155Bは、ネットワークディスクドライバ部153Bに対して、他の計算機101から自身のディスク装置105へのアクセスを許可するよう設定し、処理を終了する(ステップS502、ステップS503)。
図1に示す例では、計算機101Aからディスク装置105Bへのアクセスが許可される。構成設定部155Bが実行する処理によって、計算機101Aがディスク装置105Bにアクセス可能となり、論理デバイスを構成する記憶領域を提供することが可能となる。
【0077】
以上が、共有ストレージの構成時に実行される処理である。
図2〜
図5の処理が終了した後、サービス提供部150は、論理デバイスを用いて所定のサービスを提供する。
【0078】
このとき、冗長化処理部151は、サービス提供部150から論理デバイスへの書込要求を受信すると、ディスク装置105Aから冗長化情報を読み出し、当該冗長化情報に基づいて、ディスク装置105A及びディスク装置105Bのそれぞれにデータを書き込む。なお、読み出された冗長化情報は、メモリ103Aに一時的に格納される。これによって、論理デバイスへのアクセス時にディスク装置105へのI/O発生を低減することができる。
【0079】
また、冗長化処理部151は、サービス提供部150から論理デバイスへの読出要求を受信すると、冗長化情報を参照して、ディスク装置105Aからデータを読み出す。
【0080】
次に、
図6〜
図8を用いて、主系計算機として稼動する計算機101Aに障害が発生した場合に実行される処理について説明する。
【0081】
図6は、本発明の第一の実施形態における障害制御部170が実行する処理を説明するフローチャートである。
【0082】
障害制御部170は、周期的に、主系計算機を監視しており、主系計算機の障害を検知すると処理を開始する(ステップS601)。
図1に示す例では、障害制御部170は、主系計算機として稼動する計算機101Aを監視し、計算機101Aの障害を検知すると処理を開始する。
【0083】
監視方法としては、ネットワーク180を介した通信を監視する方法などが考えられる。ただし、本発明は、主系計算機の障害検出方法に限定されない。
【0084】
なお、副系計算機が複数ある場合には、予め、副系計算機に優先順位を与えておき、優先順位が高い副系計算機が主導的に処理を実行するように構成すればよい。
【0085】
障害制御部170は、ネットワークディスクドライバ部153Bに対して、論理デバイスを構成する他の計算機101からディスク装置105へのアクセスを禁止するように指示する(ステップS602)。副系計算機が2台以上ある場合には、主系計算機だけではなく他の副系計算機からのアクセスも禁止される。
図1に示す例では、計算機101Aからディスク装置105Bへのアクセスが禁止される。
【0086】
障害制御部170は、構成設定部155Bを呼び出す(ステップS603)。障害制御部170は、構成設定部155Bからの処理完了の通知を待つ。構成設定部155Bが実行する処理の詳細は、
図7を用いて後述する。
【0087】
その後、障害制御部170は、代替サービス提供部171の処理の開始を指示して、処理を終了する(ステップS604、ステップS605)。
【0088】
以上の処理によって、代替サービス提供部171が、サービス提供部150に代わってサービスを継続することができる。
【0089】
ステップS602では、計算機101Aからディスク装置105Bへのアクセスを禁止している。これは、計算機101Aが予期せず再び動作を始めた場合に、代替サービス提供部171及びサービス提供部150からディスク装置105Bへのアクセスが衝突してデータが失われる危険を回避するためである。
【0090】
図7は、本発明の第一の実施形態における構成設定部155B(副系)が、障害発生時に実行する処理を説明するフローチャートである。
【0091】
構成設定部155Bは、障害制御部170から読み出されると処理を開始する(ステップS701)。構成設定部155Bは、ネットワークディスクドライバ部153Bに対して他の副系計算機が備えるネットワークディスクドライバ部153Bと接続するよう指示する(ステップS702)。これによって、ネットワークディスクドライバ部153Bは、他の副系計算機のネットワークディスクドライバ部153にアクセス要求を送信することができる。
【0092】
なお、副系計算機はすでに選択されているため、ステップS202に対応する処理は省略される。また、構成設定部155Bは、冗長化情報を参照することによって他の副系計算機を特定することができる。
【0093】
構成設定部155Bは、冗長化処理部151Bに論理デバイス(共有ストレージ)の生成を指示する(ステップS703)。
図1に示す例では、計算機101Bが備えるディスク装置105Bから論理デバイスが生成される。
【0094】
構成設定部155Bは、代替サービス提供部171に新たに生成された論理デバイスにアクセスするように指示して、処理を終了する(ステップS704、ステップS705)。
【0095】
図8は、本発明の第一の実施形態における冗長化処理部151B(副系)が実行する処理を説明するフローチャートである。
【0096】
冗長化処理部151Bは、構成設定部155Bから読み出されると処理を開始する(ステップS801)。冗長化処理部151Bは、副系計算機の識別情報を取得する(ステップS802)。ステップS802の処理は、ステップS402と同一の処理である。
【0097】
冗長化処理部151Bは、副系計算機のディスク装置105を統合して論理デバイスを生成する(ステップS803)。
【0098】
ステップS803の処理はステップS403と異なり、主系計算機のディスク装置105を除いたディスク装置105から論理デバイスが生成される。すなわち、副系計算機のディスク装置105のみから論理デバイスが生成される。
【0099】
図1に示す例では、ディスク装置105Bのみから論理デバイスが生成される。
【0100】
冗長化処理部151Bは、論理デバイスと各ディスク装置105とを対応づけた冗長化情報を生成する(ステップS804)。ステップS804の処理は、ステップS404と同一の処理である。
【0101】
冗長化処理部151Bは、冗長化情報を各ディスク装置105へ書き込み、処理を終了する(ステップS805、ステップS806)。
図1に示す例では、冗長化処理部151Bは、ネットワークディスクドライバ部153Bに冗長化情報の書込要求を出力する。これによって、論理デバイスを構成するディスク装置105Bに冗長化情報が格納される。
【0102】
なお、新たに生成された論理デバイスの識別情報は、最初に生成された論理デバイスの識別情報と同一となるように設定する。これによって、障害発生前と同一の動作環境の下サービスを継続することができる。ただし、異なる論理デバイスの識別情報が設定されてもよい。
【0103】
本実施形態では、前述した処理によって耐障害性を高める効果がある。通常、冗長化処理部151Bは、書込要求を受信した場合、ディスク装置105に格納される冗長化情報を読み出して、論理デバイスを構成するディスク装置105を特定する。さらに、冗長化処理部151Bは、特定された全てのディスク装置105に同一のデータを書き込む。
【0104】
しかし、主系計算機として稼働する計算機101に障害が発生すると、論理デバイスを構成する主系計算機のディスク装置105を利用できない状態となる。そのため、冗長化処理部151Bは、論理デバイスにエラーが発生しており、論理デバイスを利用できないと判定する。したがって、冗長化処理部151Bは、論理デバイスを構成する複数のディスク装置105にデータを書き込むことができない。すなわち、データの冗長化が実現できない。
【0105】
そこで、本実施形態では、障害制御部170から呼び出された冗長化処理部151Bが、主系計算機のディスク装置105を除く他のディスク装置105を用いて新たに論理デバイスを構築する。これによって、冗長化処理部151Bは、代替サービス提供部171から書込要求を受信した場合に、複数のディスク装置105にデータを書き込むことができる。
【0106】
また、
図1に示すように、論理デバイスを構成するディスク装置105が1台のみであっても、代替サービス提供部171からは論理デバイスに障害が発生しているとは認識されずにサービスを継続することができるという効果がある。
【0107】
図9は、本発明の第一の実施形態における構成回復部156A(主系)が実行する処理を説明するフローチャートである。
【0108】
構成回復部156Aは、障害が回復した計算機101Aが再起動した後、計算機システムの管理者から処理開始の指示を受信すると処理を開始する(ステップS901)。構成回復部156Aは、副系計算機の構成回復部156Bを呼び出す(ステップS902)。これによって、代替サービス提供部171からサービス提供部150へサービスを引き継ぐための処理(
図10参照)が実行される。
【0109】
構成回復部156Aは、ネットワークディスクドライバ部153Aに対して副系計算機が備えるネットワークディスクドライバ部153Bと接続するよう指示する(ステップS903)。ステップS903の処理は、ステップS203と同一の処理である。ステップS903の処理によって、計算機101Aは論理デバイスへアクセスが可能となる。
【0110】
構成回復部156Aは、冗長化処理部151Aに対して、副系計算機から冗長化情報の取得を指示する(ステップS904)。当該指示を受信した冗長化処理部151Aは、ネットワークディスクドライバ部153Aに、副系計算機から冗長化情報を取得するためのアクセス要求を出力する。
【0111】
ステップS904では、ステップ803において生成された新たな論理デバイスの冗長化構成が読み出される。これによって、冗長化構成を維持したままサービスを継続することができる。
【0112】
図1に示す例では、論理デバイスを構成するディスク装置105Bが一個であるためデータの二重化はできないが、論理デバイスに障害が発生しているとは認識されることなくサービスを継続することができるという効果がある。
【0113】
構成回復部156Aは、サービス提供部150に論理デバイスにアクセスするように指示し、さらに、サービスの開始を指示する(ステップS905)。ステップS905の処理は、ステップS205と同一の処理である。
【0114】
構成回復部156Aは、冗長化処理部151Aに対してディスク装置105Aを管理下に置くよう指示する、すなわち、論理デバイスの再構成を指示する(ステップS906)。
【0115】
当該指示を受信した冗長化処理部151Aは、
図4に示す処理と同様の処理を実行する。具体的には、ステップS403では、冗長化処理部151Aは、主系計算機のディスク装置105及び副系計算機のディスク装置105の全てを用いて論理ディスクを生成する。すなわち、障害が発生する前と同一の構成の論理デバイスが生成される。また、ステップS405では、冗長化処理部151Aは、主系計算機のディスク装置105及び副系計算機のディスク装置105のそれぞれに冗長化情報を書き込む。なお、この時点では、論理デバイスを構成する主系計算機のディスク装置105にはデータが反映されていない。
【0116】
以上の処理によって、障害発生前の論理デバイスの構成を回復することができる。
図1に示す例では、ステップS706の処理によって、データの二重書き込みが可能となる。
【0117】
構成回復部156Aは、論理デバイスが生成された後、冗長化処理部151Aに、副系計算機のディスク装置105に格納されるデータを主系計算機のディスク装置105にコピーするように指示し、処理を終了する(ステップS907、ステップS908)。
【0118】
当該指示を受信した冗長化処理部151Aは、ネットワークディスクドライバ部153Aに対してアクセス要求(読出要求)を出力する。これによって、副系計算機のディスク装置105からデータを取得することができる。また、冗長化処理部151Aは、ディスクドライバ部152Aに対して、取得されたデータのアクセス要求(書込要求)を出力する。これによって、主系計算機のディスク装置105にデータが書き込まれる。
【0119】
ステップS907の処理によって、論理デバイスを構成する全てのディスク装置に同一のデータが反映される。すなわち、主系計算機が停止している間に代替サービス提供部171によって論理デバイスに書き込まれたデータが主系計算機のディスク装置105に書き込まれる。
【0120】
図10は、本発明の第一の実施形態における構成回復部156B(副系)が実行する処理を説明するフローチャートである。
【0121】
構成回復部156Bは、構成回復部156Aから呼び出されると処理を開始する(ステップS1001)。構成回復部156Bは、代替サービス提供部171を停止する(ステップS1002)。
【0122】
構成回復部156Bは、ネットワークディスクドライバ部153Bに対して、計算機101Aからディスク装置105Bへのアクセスを許可するよう設定し、処理を終了する(ステップS1003、ステップS1004)。
【0123】
以上の処理によって、他の計算機101からネットワークディスクドライバ部153Bへのアクセスを再開させ、計算機101Aからのアクセスが可能となる。
【0124】
なお、計算機101Bに障害が発生した場合、計算機101Bの再起動後に構成設定部155Bを起動させる。これによって、ネットワークディスクドライバ部153Aからネットワークディスクドライバ部153Bへのアクセスを回復できる。その後、冗長化処理部151Aが、自動的にディスク装置105Aから105Bへデータをコピーする。
【0125】
第一の実施形態では、計算機101Aがサービスを提供する主系計算機、計算機101Bが副系計算機であるものとして説明したが、一例であって、それぞれの計算機101が同一の構成を備えてもよい。これによって、お互いが他方の副系計算機となれるような構成が可能となる。
【0126】
第一の実施形態によれば、複数の計算機のディスク装置を用いて共有ストレージを構成した場合に、いずれかの計算機に障害が発生しても、副系計算機の代替サービス提供部171は、共有ストレージを用いてサービスを継続することができる。すなわち、副系計算機の代替サービス提供部171は、共有ストレージの冗長化構成が維持されているものと認識することができる。
【0127】
これによって、専用のストレージシステムを用いることなく、一般的な計算機を用いて共有ストレージを構築することができ、また、障害への耐性も確保することができる。
【0129】
第二の実施形態について説明する。第二の実施形態では、具体的な装置構成を用いて実際のシステム構築例を説明する。
【0130】
以下、第一の実施形態との差異を中心に説明する。
【0131】
図11は、本発明の第二の実施形態の計算機システムの構成を示したブロック図である。
【0132】
計算機システムの構成は、第一の実施形態と同一であるため説明を省略する。
【0133】
第二の実施形態では、計算機101のハードウェア構成が一部異なる。具体的には、第二の実施形態では、ネットワークインタフェース106A、106Bがイーサネットコントローラ1101A、1101Bとなる(イーサネットは登録商標、以下同じ。)。その他のハードウェア構成は、第一の実施形態と同一であるため説明を省略する。
【0134】
また第二の実施形態では、各計算機101が備えるソフトウェア構成が異なる。具体的には、第二の実施形態では、冗長化処理部151A、151BはOSが備えるソフトウェアRAID機能部1111A、1111Bとなり、ネットワークディスクドライバ部153AはiSCSIイニシエータ1112となり、ネットワークディスクドライバ部153BはiSCSIターゲット1113となる。また、計算機101Bは、ネットワーク180を介した計算機101からのアクセスを制御する構成としてネットワークフィルタ部1114を備える。
【0135】
構成設定部155Aの処理は、以下の点が異なる。ステップS202では、構成設定部155Aは、副系計算機の名称を取得する。また、ステップS203では、構成設定部155Aは、取得された副系計算機の名称をIPv4のアドレス又はIPv6のアドレスに変換し、変換されたアドレスを用いてiSCSIターゲット1113に接続するように指示する。その他の処理は、第一の実施形態と同一である。
【0136】
障害制御部170の処理は、以下の点が異なる。
【0137】
ステップS602では、障害制御部170は、iSCSIターゲット1113を停止させ、又は、ネットワークフィルタ部1114に対してiSCSIターゲット1113に送信されたTCP/IPプロトコルのパケットを破棄するように指示する。その他の処理は、第一の実施形態と同一である。
【0138】
構成回復部156Bの処理は、以下の点が異なる。
【0139】
ステップS803では、構成回復部156Bが、iSCSIターゲット1113を再開させ、又は、ネットワークフィルタ部1114に対してiSCSIターゲット1113に送信されるTCP/IPプロトコルのパケットの破棄を中止するように指示する。その他の処理は、第一の実施形態と同一である。
【0140】
第二の実施形態によれば、ソフトウェアRAID、iSCSIターゲット、iSCSIイニシエータ及びイーサネットを用いて、安価に共有ストレージを構築することができる。
【0141】
なお、本発明は前述した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、前述した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加、削除、置換をすることが可能である。
【0142】
また、前述の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によってハードウェアを用いて実現してもよい。また、前述の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによってソフトウェアを用いて実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、HDD及びSSD等の記録装置、又は、ICカード、SDカード及びDVD等の記録媒体に格納することができる。また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。