(57)【要約】【課題】ＯＳにエラーが発生した場合、ソフトウェアによるミラーリングを継続する。【解決手段】計算機システムは、複数台のディスク装置が接続され、データ書込み時に書込みデータに関する書込み情報を取得する書込み情報取得部と、書込み情報に識別情報を付加しＲＡＭ上に保存する識別情報付加部と、書込みデータを複数台のディスク装置に書込むミラーリング処理部と、該計算機システムのＯＳにエラーが発生したときに動作し、ミラーリング処理部の実行を停止するシステム障害処理部と、システム障害処理部から起動される、ＲＡＭ上のデータを複数台のディスク装置にダンプするダンプ処理部と、ダンプ処理部からの書込み命令に応答して、識別情報を基に書込み情報を検出する書込み情報検出部と、書込み情報検出部が検出した書込み情報に対応して書込みデータを複数のディスク装置に書込むデータ一致化部を具備する。【選択図】図１
2014081884.tif 000002
【特許請求の範囲】
【請求項１】
複数台のディスク装置が接続された計算機システムであって、データ書込み時に書込みデータに関する書込み情報を取得する書込み情報取得部と、前記書込み情報に識別情報を付加しＲＡＭ上に保存する識別情報付加部と、前記書込みデータを前記複数台のディスク装置に書込むミラーリング処理部と、該計算機システムのＯＳにエラーが発生したときに動作し、前記ミラーリング処理部の実行を停止するシステム障害処理部と、前記システム障害処理部から起動される、前記ＲＡＭ上のデータを前記複数台のディスク装置にダンプするダンプ処理部と、前記ダンプ処理部からの書込み命令に応答して、前記識別情報を基に前記書込み情報を検出する書込み情報検出部と、前記書込み情報検出部が検出した前記書込み情報に対応して前記書込みデータを前記複数のディスク装置に書込むデータ一致化部を具備することを特徴とする計算機システム。
【請求項２】
複数台のディスク装置が接続された計算機システムであって、データ書込み時に書込みデータに関する書込み情報を取得する書込み情報取得部と、前記書込み情報に識別情報を付加しＲＡＭ上に保存する識別情報付加部と、前記書込みデータを前記複数台のディスク装置に書込むミラーリング処理部と、該計算機システムのＯＳにエラーが発生したときに動作し、前記ミラーリング処理部の実行を停止するシステム障害処理部と、前記システム障害処理部から起動される、前記ＲＡＭ上のデータを前記複数台のディスク装置にダンプするダンプ処理部と、前記ダンプ処理部の処理完了後に、前記識別情報を基に前記書込み情報を検出する書込み情報検出部と、前記書込み情報検出部が検出した前記書込み情報に対応して前記書込みデータを前記複数のディスク装置に書込むデータ一致化部を具備することを特徴とする計算機システム。
【請求項３】
前記ダンプ処理部の処理完了後の、前記書込み情報検出部と前記データ一致化部の処理は、該計算機システムの再起動時に実行されることを特徴とする請求項２記載の計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システム障害発生に対応する計算機システムに関し、特にシステム障害発生時にもソフトウェアミラーリングの処理を継続する計算機システムに関する。
【背景技術】
【０００２】
信頼性や可用性が高く求められる計算機システムでは、従来から、データの冗長性を保つ方法として、ハードディスクなどの記録装置を多重に接続し、同じデータを複数の記録装置に記録（ミラーリング）する方法等がある。ミラーリングの方法としてディスクアレイ装置のような特別なハードウェアを使用せず、ソフトウェアによるミラーリングがある。特にソフトウェアによるミラーリングはハードウェアによるミラーリングより安価に冗長構成を構築できるため、多くのローカルサーバなどで利用され始めている。それに伴い、ハードウェアによるミラーリングに劣っていた機能や性能の差を埋める工夫がなされてきている（例えば特許文献１参照）。
【０００３】
一方、一般のオペレーティングシステム（Operating System、以下、ＯＳと称する）では、ハードウェアの障害やＯＳ自身の論理矛盾やバグを検出し、計算機システムの処理を停止させる場合がある。このような場合、信頼性や可用性が高く求められる計算機システムでは、ＯＳ自身の論理矛盾やバグの原因となる障害をすばやく解決することが求められている。この要求に応える機能として、メモリダンプを実施する機能がある。この機能はシステム障害発生時のＲＡＭ（Random Access Memory）上のデータを採取し、ハードディスクなどの補助記憶装置にメモリダンプファイルとして保存する。この機能により生成されたメモリダンプファイルには、障害発生時のメモリ内容が保持されているため、このファイルを解析することによりＯＳで発生していた障害の原因特定を行うことができる。メモリダンプ機能はＯＳが自身の論理矛盾やバグを認知した場合に動作する他、ＯＳのハングアップが発生した場合等に外部装置からＣＰＵに対してNon−Maskable Interrupt（以下、ＮＭＩと称する）を発行することによりメモリダンプ機能を動作させることも可能である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−８８７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般的なＯＳ上で動作するソフトウェアとしてミラーリングを行なう場合、ＯＳに動作継続不可能な致命的なエラーが発生すると、ディスクへの書込み処理の最中であってもＯＳのシステム障害処理部が動作する。システム障害処理部は他の動作に割り込んで動作するため、ミラーリングの処理は中断され、ディスク装置間のデータの整合性を保証できない状態になってしまう。そのためソフトウェアによるミラーリングでは、ＯＳに動作継続不可能な致命的なエラーが発生すると、エラー発生後のＯＳ起動時にはデータの整合性を保証するため、ミラーリングを解除し、縮退動作しなければならないという課題があった。
【０００６】
また、プログラムがハングアップした原因を解析する目的で、サーバーなどに取り付けられているダンプスイッチなどを押下した場合、ＣＰＵに対して割込信号が入るため、前述のエラーが発生した場合と同様の状態になってしまう。これによりハードウェアには障害が発生していないにも関わらず、ミラーリングが解除されてしまうという課題もあった。
【課題を解決するための手段】
【０００７】
開示する計算機システムは、複数台のディスク装置が接続され、データ書込み時に書込みデータに関する書込み情報を取得する書込み情報取得部と、書込み情報に識別情報を付加しＲＡＭ上に保存する識別情報付加部と、書込みデータを複数台のディスク装置に書込むミラーリング処理部と、該計算機システムのＯＳにエラーが発生したときに動作し、ミラーリング処理部の実行を停止するシステム障害処理部と、システム障害処理部から起動される、ＲＡＭ上のデータを複数台のディスク装置にダンプするダンプ処理部と、ダンプ処理部からの書込み命令に応答して、識別情報を基に書込み情報を検出する書込み情報検出部と、書込み情報検出部が検出した書込み情報に対応して書込みデータを複数のディスク装置に書込むデータ一致化部を具備する。
【０００８】
開示する計算機システムの他の態様は、ダンプ処理部の処理完了後に、識別情報を基に書込み情報を検出する書込み情報検出部と、書込み情報検出部が検出した書込み情報に対応して書込みデータを複数のディスク装置に書込むデータ一致化部を具備する。
【発明の効果】
【０００９】
本発明によれば、ＯＳに動作継続不可能な致命的なエラーが発生した場合、ソフトウェアによるミラーリングであっても縮退動作することなくミラーリングを継続することができる。
【図面の簡単な説明】
【００１０】
【図１】計算機システムの構成図である。
【図２】通常稼働時の処理を示すフローチャートである。
【図３】ＲＡＭ上のデータの配置を示す構成図である。
【図４】システム障害発生時の処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
本発明の一実施例を図１から図４により説明する。図１は本実施例の計算機システム１００の構成図である。
【００１２】
（計算機システムの構成）
計算機システム１００は、ＯＳやアプリケーションを動作させるＣＰＵ（Central Processing Unit：中央制御ユニット）２００と、ＲＡＭ３００、ＯＳやアプリケーションなどのデータが記録されている第１のディスク装置４１０および第２のディスク装置４２０（併せて以下、複数のディスク装置と称する）から構成される。複数のディスク装置はディスクアレイ装置のような特別なハードウェアを有することなく接続されており、ＯＳ上で動作するソフトウェア（デバイスドライバ）によりミラーリングされている。なお本実施例ではディスク装置は２台となっているが、２台以上のディスク装置であってもよい。
【００１３】
ＣＰＵ２００では、システム障害処理部２１０、ダンプ処理部２２０、データ書込み部２３０が動作する。システム障害処理部２１０とダンプ処理部２２０はＯＳの機能として実装され、データ書込み部２３０はデバイスドライバとして実装される。データ書込み部２３０は、更に書込み情報取得部２３１、識別情報付加部２３２、書込み情報検出部２３３、データ一致化部２３４、ミラーリング処理部２３５によって構成されており、データ書込み部２３０により複数のディスク装置への書込みやディスク装置への書込み状態の管理を行なっている。ＣＰＵ２００で動作するプログラムの詳細については、以降で説明する。
【００１４】
ＲＡＭ３００上にはＯＳの動作に必要なデータの他に、書込み情報取得部２３１および識別情報付加部２３２によって生成された、識別情報３１０と書込み情報３２０が保存されている。
【００１５】
（通常稼動時の処理の流れ）
次に通常稼動時の処理の流れについて図２のフローチャートを用いて説明する。
データ書込み部２３０がＯＳやアプリケーション（以下、上位プログラムと称す）からディスク装置へのデータの書込み命令を受けると、書込み情報取得部２３１は、書込むデータに関する情報を書込み情報３２０として取得する（Ｓ２１）。識別情報付加部２３２により書込み情報３２０に識別情報３１０を付加し（ステップＳ２２）、ＲＡＭ３００上に保存する（Ｓ２３）。識別情報３１０は、ＲＡＭ３００上で他に同一の値が見つからないような固有値（例えば固有名詞）などであり、所定の規則に従った値とする。識別情報付加部２３２が、書込み情報３２０に識別情報３１０を付加し、保存するＲＡＭ３００上の領域はあらかじめ定められた領域であるので、識別情報３１０はその領域内で同一の値が見つからなければよい。書込み情報３２０は書込み命令がある度に更新し、ＲＡＭ３００上には常に書込み中または最後に書込みが完了したデータの書込み情報が保存されている。その後、ミラーリング処理部２３５により複数のディスク装置に同じデータを書込む（ステップＳ２４）。通常稼動時は以上の処理を上位プログラムから書込み命令がある度に行なう。
【００１６】
ここで、識別情報３１０と書込み情報３２０の構成例を、図３を用いて詳細に説明する。
ＲＡＭ３００上から書込み情報３２０を検索するための情報として、識別情報３１０は書込み情報３２０の直前に配置する。これにより、ＲＡＭ３００上から書込み情報３２０の開始位置を特定することができる。書込み情報３２０は書込むデータのＲＡＭ３００上の開始アドレス、データサイズ、書込み先のディスク装置のＬＢＡ（Logical Block Addressing）番号により構成されている。
【００１７】
書込むデータのＲＡＭ３００上の開始アドレスではなく、書込むデータをそのままコピーしておいても良いが、アドレスのみを記録することでのＲＡＭのリソースとデータをコピーするための時間を軽減することができる。
【００１８】
ミラーリング処理部２３５による複数のディスク装置への同じデータの書込みは、第１のディスク装置４１０の指定されたＬＢＡ番号に対応する領域へのデータの書き込み後に、第２のディスク装置４２０の指定されたＬＢＡ番号に対応する領域へデータを書き込む。
【００１９】
以上のようなフォーマットを設定することで書込むデータと書込み先を特定することができる。
【００２０】
（システム障害発生時の処理の流れ）
次にＯＳに動作継続不可能な致命的なエラーが発生した場合、またはＮＭＩが発行された場合（併せて以下、システム障害発生時と称する）の処理について図４のフローチャートを用いて説明する。
【００２１】
システム障害発生時、ＯＳに備わっているシステム障害処理部２１０が呼びだされる（ステップＳ４１）。システム障害処理部２１０は、システム障害発生時に実行中の処理より優先して動作するため、システム障害発生時に実行中の処理は停止される。実行中のミラーリング処理部２３５もシステム障害発生時には処理が停止される。システム障害処理部２１０では、システム障害発生時のハードウェアのレジスタ情報などを取得し、ＲＡＭ３００上の所定の領域に書き込み後、ダンプ処理部２２０を呼び出す（ステップＳ４２）。ダンプ処理部２２０ではＲＡＭ３００上のデータを複数のディスク装置の特定の領域にダンプするため、データ書込み部２３０に順次書込み命令を発行する（ステップＳ４３）。ダンプ処理部２２０からＲＡＭ３００上のデータを書き込むよう命令を受けたデータ書込み部２３０は書込み情報検出部２３３にて、書込み命令があったデータの中から、通常稼働時に保存してあった識別情報３１０を検索する（ステップＳ４４）。識別情報３１０が検出されなかった場合（ステップＳ４５のＮＯ）はダンプ処理部２２０の指示に従い、複数のディスク装置にダンプデータを書込む（ステップＳ４８）。書込み情報検出部２３３にて、所定の規則に従った値である識別情報３１０を検出した場合（ステップＳ４５のＹＥＳ）、データ一致化部２３４は識別情報３１０に付随する書込み情報３２０から、システム障害発生時に書込み中であったデータと書込み先のアドレスを特定し（ステップＳ４６）、複数のディスク装置の特定したアドレス部分に書込み途中であったデータを書込む（ステップＳ４７）。データ一致化部２３５によりデータの書込みが終了した後は、複数のディスク装置に記録されているデータは一致している状態となる。次にダンプ処理部２２０から書込み命令をされていた、識別情報３１０および書込み情報３２０を含むデータを今までと同様複数のディスク装置に書込む（ステップＳ４８）。
その後は、ダンプ処理部２２０からの指示に従い、複数のディスク装置への書込みをダンプが完了するまで継続する（ステップＳ３９）。
【００２２】
以上の処理を行なうことにより、システム障害発生後の再起動時には複数のディスク装置のデータは一致しており、ミラーリングされた状態でシステムの運用を継続することができる。
【００２３】
図４のフローチャートによる処理は、ダンプ処理部２２０による書込み命令に応答して、データ書込み部２３０の書込み情報検出部２３３が書込み命令があったデータの中から、識別情報３１０を検索し、識別情報を検出したならば、データ一致化部２３４は書込み途中であったデータを複数のディスク装置の特定したアドレス部分に書込む。言い換えると、データ一致化部２３４は、システム障害発生に伴って処理を停止したミラーリング処理部２３５の処理を継続することにより、複数のディスク装置のデータの一致化を図っている。
【００２４】
一方、図４のフローチャートによる処理を次のように変えても良い。ダンプ処理部２２０による書込み命令(ステップ４３)に応答して、データ書込み部２３０は、識別情報３１０および書込み情報３２０を含むダンプデータを複数のディスク装置に書込む（ステップ４８）処理をダンプ処理が完了するまで繰り返す(ステップ４９)。この後で、書込み情報検出部２３３が識別情報３１０を検索する。この検索は、識別情報付加部２３２が、書込み情報３２０に識別情報３１０を付加し、保存する、あらかじめ定められたＲＡＭ３００上の領域を対象とし、識別情報を検出したならば、データ一致化部２３４は、書き込み先アドレスを特定し(ステップ４６)、書込み途中であったデータを複数のディスク装置の特定したアドレス部分に書込む(ステップ４７)。識別情報３１０を検出できなくなるまで、ステップ４６およびステップ４７を繰り返すことにより、複数のディスク装置のデータを一致させることができる。
【００２５】
この方法では、ダンプ処理が完了してからデータ一致化部２３４の処理を実行するので、ダンプ処理後に何らかの原因でＲＡＭ３００上のデータが消失または破壊されたとしても、複数のディスク装置にはダンプデータとしてＲＡＭ３００上のデータが存在するので、このダンプデータを対象として、書込み情報検出部２３３およびデータ一致化部２３４による処理を実行することにより、複数のディスク装置のデータを一致させることができる。書込み情報検出部２３３およびデータ一致化部２３４による処理は、ディスク装置のダンプデータを直接対象にして実行しても良いが、ＲＡＭ３００上にダンプデータを再現して、実行しても良い。このようにダンプデータを対象にして実行する場合は、ＲＡＭ３００上のデータが消失または破壊されていても良いので、システム障害発生後に計算機システムを再起動する際に実行しても複数のディスク装置のデータを一致させることができる。
【００２６】
以上の実施形態によれば、ＯＳに動作継続不可能な致命的なエラーが発生した場合、ソフトウェアによるミラーリングであっても縮退動作することなくミラーリングを継続することができる。
【符号の説明】
【００２７】
１００…計算機システム、２００…ＣＰＵ、２１０…システム障害処理部、２２０…ダンプ処理部、２３０…データ書込み部、２３１…書込み情報取得部、２３２…識別情報付加部、２３３…書込み情報検出部、２３４…データ一致化部、２３５…ミラーリング処理部、３００…ＲＡＭ、３１０…識別情報、３２０…書込み情報、４１０…第１のディスク装置、４２０…第２のディスク装置。
【図１】
2014081884.tif 000003
【図２】
2014081884.tif 000004
【図３】
2014081884.tif 000005
【図４】
2014081884.tif 000006