(57)【要約】【課題】Ｉ／Ｏエラーに関連する診断情報を収集するための方法を開示する。【解決手段】一実施形態において、このような方法は、入出力（Ｉ／Ｏ）動作に関連するエラーを検出することを含む。方法は、エラーが再駆動され得るかどうかを決定し、再駆動され得る場合は、診断情報の収集を改善するために様々な診断機能を有効化する。方法は、次に、エラーを再現するためにエラーに関連するＩ／Ｏ動作を直ちに再駆動する。有効化された診断機能を使用して、方法は、再現されたエラーに関連する診断情報をキャプチャする。相応するシステムおよびコンピュータ・プログラム製品もまた開示される。【選択図】図６
2020522811.tif 000002
【特許請求の範囲】
【請求項１】
エラーに関連する診断情報を収集するための方法であって、
入出力（Ｉ／Ｏ）動作に関連するエラーを検出すること、
前記エラーが再駆動され得るかどうかを決定すること、
前記エラーが再駆動され得る場合は、診断情報の収集を改善するために様々な診断機能を有効化すること、
前記エラーを再現するために前記エラーに関連する前記Ｉ／Ｏ動作を直ちに再駆動すること、および
前記有効化された診断機能を使用して、前記再現されたエラーに関連する診断情報をキャプチャすること、
を含む、エラーに関連する診断情報を収集するための方法。
【請求項２】
前記診断情報をキャプチャすることは、定義済みのストレージ・エリアにおける前記診断情報をキャプチャすることを含む、請求項１に記載の方法。
【請求項３】
前記Ｉ／Ｏ動作はジョブに関連する、請求項２に記載の方法。
【請求項４】
定義済みのストレージ・エリアにおける前記診断情報をキャプチャすることは、前記ジョブのアドレス空間における前記診断情報をキャプチャすることを含む、請求項３に記載の方法。
【請求項５】
前記エラーが再駆動され得ない場合は、前記ジョブの将来の実行のために前記診断機能を有効化する、請求項１に記載の方法。
【請求項６】
前記ジョブの将来の実行をモニターすることをさらに含む、請求項５に記載の方法。
【請求項７】
前記ジョブの将来の実行を検出すると、前記診断機能を使用した前記診断情報の収集を起動する、請求項６に記載の方法。
【請求項８】
エラーに関連する診断情報を収集するためのコンピュータ・プログラム製品であって、コンピュータによって使用可能なプログラム・コードが組み込まれた非一過性コンピュータ可読ストレージ媒体を含み、前記コンピュータによって使用可能なプログラム・コードは、少なくとも１つのプロセッサによって実行されるとき、以下の、
入出力（Ｉ／Ｏ）動作に関連するエラーを検出すること、
前記エラーが再駆動され得るかどうかを決定すること、
前記エラーが再駆動され得る場合は、診断情報の収集を改善するために様々な診断機能を有効化すること、
前記エラーを再現するために前記エラーに関連する前記Ｉ／Ｏ動作を直ちに再駆動すること、および
前記有効化された診断機能を使用して、前記再現されたエラーに関連する診断情報をキャプチャすること、を実行するよう構成される、
エラーに関連する診断情報を収集するためのコンピュータ・プログラム製品。
【請求項９】
前記診断情報をキャプチャすることは、定義済みのストレージ・エリアにおける前記診断情報をキャプチャすることを含む、請求項８に記載のコンピュータ・プログラム製品。
【請求項１０】
前記Ｉ／Ｏ動作はジョブに関連する、請求項９に記載のコンピュータ・プログラム製品。
【請求項１１】
定義済みのストレージ・エリアにおける前記診断情報をキャプチャすることは、前記ジョブのアドレス空間における前記診断情報をキャプチャすることを含む、請求項１０に記載のコンピュータ・プログラム製品。
【請求項１２】
前記コンピュータによって使用可能なプログラム・コードは、前記エラーが再駆動され得ない場合は、前記ジョブの将来の実行のために前記診断機能を有効化するようさらに構成される、請求項８に記載のコンピュータ・プログラム製品。
【請求項１３】
前記コンピュータによって使用可能なプログラム・コードは、前記ジョブの将来の実行をモニターするようさらに構成される、請求項１２に記載のコンピュータ・プログラム製品。
【請求項１４】
前記コンピュータによって使用可能なプログラム・コードは、前記ジョブの将来の実行を検出すると、前記診断機能を使用した前記診断情報の収集を起動するようさらに構成される、請求項１３に記載のコンピュータ・プログラム製品。
【請求項１５】
エラーに関連する診断情報を収集するためのシステムであって、
少なくとも１つのプロセッサ、および
前記少なくとも１つのプロセッサに動作可能に結合され、前記少なくとも１つのプロセッサで実行するための命令を記憶する少なくとも１つのメモリ・デバイスを含み、前記命令は、前記少なくとも１つのプロセッサに、
入出力（Ｉ／Ｏ）動作に関連するエラーを検出すること、
前記エラーが再駆動され得るかどうかを決定すること、
前記エラーが再駆動され得る場合は、診断情報の収集を改善するために様々な診断機能を有効化すること、
前記エラーを再現するために前記エラーに関連する前記Ｉ／Ｏ動作を直ちに再駆動すること、および
前記有効化された診断機能を使用して、前記再現されたエラーに関連する診断情報をキャプチャすること、を行わせる、
エラーに関連する診断情報を収集するためのシステム。
【請求項１６】
前記診断情報をキャプチャすることは、定義済みのストレージ・エリアにおける前記診断情報をキャプチャすることを含む、請求項１５に記載のシステム。
【請求項１７】
前記Ｉ／Ｏ動作はジョブに関連する、請求項１６に記載のシステム。
【請求項１８】
定義済みのストレージ・エリアにおける前記診断情報をキャプチャすることは、前記ジョブのアドレス空間における前記診断情報をキャプチャすることを含む、請求項１７に記載のシステム。
【請求項１９】
前記命令は、前記少なくとも１つのプロセッサに、前記エラーが再駆動され得ない場合は、前記ジョブの将来の実行のために前記診断機能を有効化することをさらに行わせる、請求項１５に記載のシステム。
【請求項２０】
前記命令は、前記少なくとも１つのプロセッサに、前記ジョブの将来の実行を検出すると前記診断機能を使用した前記診断情報の収集を起動することをさらに行わせる、請求項１９に記載のシステム。
【請求項２１】
コンピュータ・プログラムであって、前記プログラムがコンピュータで実行されるとき、請求項１ないし７のいずれかに記載の方法を実行するように適合されたプログラム・コード手段を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｉ／Ｏエラーに関連する診断情報を収集するためのシステムおよび方法に関する。
【背景技術】
【０００２】
ｚ／ＯＳ（Ｒ）オペレーティング・システムにおいて、制御ブロックは、ホスト・システムの作業およびリソースを管理するために使用される。これらの制御ブロックは、内部的には実の、仮想の、またはハードのあるいはその組合せのストレージ・エリアとして表され、一般に、ホスト・システム内で発生しているイベント、アクティビティ、およびステータスに関する特定の情報を含む。ほとんどの状況において、制御ブロックは、互いにチェーニング（chain）されており、ｚ／ＯＳ（Ｒ）オペレーティング・システムの内部構造の多くのエリアにまたがることができる。制御ブロックの知識は、障害が発生したとき、ホスト・システムおよびそのステータスについての重要な情報を決定する際に役立つ。
【０００３】
入出力（Ｉ／Ｏ）要求が、ホスト・システムで実行中のアプリケーションによって生成されたとき、Ｉ／Ｏドライバは、入出力監視プログラム・ブロック（ＩＯＳＢ：I/O Supervisor Block）と呼ばれる制御ブロックを作る。ＩＯＳＢは、Ｉ／Ｏ要求を記述して、入出力監視プログラム（ＩＯＳ：Input/Output Supervisor）へとパラメータを渡し、入出力監視プログラム（ＩＯＳ）から応答を受け取る。Ｉ／Ｏエラーが発生したとき、特定のデバイスに対するデータの読み込み／書き込みにどのチャネル・プログラムが使用されたのかを特定するために、ＩＯＳＢ制御ブロックの情報がしばしば必要とされる。残念なことに、ＩＯＳＢの内容を確認するためにＳＶＣ（Ｓｕｐｅｒｖｉｓｏｒ  Ｃｏｎｔｒｏｌ）ダンプが取り込まれる頃には、ＩＯＳＢは、しばしば既に別のアプリケーションに再利用されている。その結果、ＩＯＳＢのデータは、ＳＶＣダンプが取り込まれる頃にはしばしば陳腐化しており、Ｉ／Ｏエラーの根本原因を確認するために役立たない。
【０００４】
トレース・データを収集するＳＶＣダンプのような診断ツールは、通常の動作中はオーバーヘッドを減らすためにしばしば無効化されている。したがって、トレース・データは、Ｉ／Ｏエラーが最初に発生した際には収集されない場合がある。ユーザは、診断ツールを有効化した後に、Ｉ／Ｏエラーを再現しようするかもしれないが、Ｉ／Ｏエラーはしばしば再現され得ないか、所望の診断情報を収集したい時間内には再現され得ない。このことは、Ｉ／Ｏエラーの根本原因を決定することを困難あるいは不可能にし得る。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
前述の観点から、Ｉ／Ｏエラーに関連する診断情報をより効果的に収集するシステムおよび方法が必要とされている。
【課題を解決するための手段】
【０００６】
本発明は現在の技術水準に応えて、特に、現在利用可能なシステムおよび方法によってはいまだ十分に解決されていない当技術分野の問題および必要性に応えて開発された。したがって、本発明は、Ｉ／Ｏエラーに関連する診断情報を収集するためのシステムおよび方法を提供するために開発された。好ましい実施形態による本発明の特徴および利点は、以下の説明および添付の特許請求の範囲から十分に明らかになるであろう、または以下に説明される解決策の実践によって理解されよう。
【０００７】
前述のことと一貫して、Ｉ／Ｏエラーに関連する診断情報を収集するための方法が開示される。一実施形態において、このような方法は、入出力（Ｉ／Ｏ）動作に関連するエラーを検出することを含む。方法は、エラーが再駆動され得るかどうかを決定し、再駆動され得る場合は、診断情報の収集を改善するために様々な診断機能を有効化する。方法は、次に、エラーを再現するためにエラーに関連するＩ／Ｏ動作を直ちに再駆動する。有効化された診断機能を使用して、方法は、再現されたエラーに関連する診断情報をキャプチャする。相応するシステムおよびコンピュータ・プログラム製品もまた開示され、ここに特許請求される。
【０００８】
１つの態様によれば、エラーに関連する診断情報を収集するための方法が提供され、方法は、入出力（Ｉ／Ｏ）動作に関連するエラーを検出すること、エラーが再駆動され得るかどうかを決定すること、エラーが再駆動され得る場合は、診断情報の収集を改善するために様々な診断機能を有効化すること、エラーを再現するためにエラーに関連するＩ／Ｏ動作を直ちに再駆動すること、および、有効化された診断情報を使用して、再現されたエラーに関連する診断情報をキャプチャすることを含む。
【０００９】
別の態様によれば、エラーに関連する診断情報を収集するためのコンピュータ・プログラム製品が提供され、コンピュータ・プログラム製品は、コンピュータによって使用可能なプログラム・コードが組み込まれた非一過性コンピュータ可読ストレージ・デバイスを含み、コンピュータによって使用可能なプログラム・コードは、少なくとも１つのプロセッサによって実行されるとき、以下の、入出力（Ｉ／Ｏ）動作に関連するエラーを検出すること、エラーが再駆動され得るかどうかを決定すること、エラーが再駆動され得る場合は、診断情報の収集を改善するために様々な診断機能を有効化すること、エラーを再現するためにエラーに関連するＩ／Ｏ動作を直ちに再駆動すること、および、有効化された診断機能を使用して、再現されたエラーに関連する診断情報をキャプチャすることを実行するように構成されている。
【００１０】
別の態様によれば、エラーに関連した診断情報を収集するためのシステムが提供され、システムは、少なくとも１つのプロセッサ、および少なくとも１つのプロセッサに動作可能に結合され、少なくとも１つのプロセッサで実行するための命令を記憶する少なくとも１つのメモリ・デバイスを含み、命令は、少なくとも１つのプロセッサに、入出力（Ｉ／Ｏ）動作に関連するエラーを検出すること、エラーが再駆動し得るかどうかを決定すること、エラーが再駆動され得る場合は、診断情報の収集を改善するために様々な診断機能を有効化すること、エラーを再現するためにエラーに関連するＩ／Ｏ動作を直ちに再駆動すること、および、有効化された診断情報を使用して、再現されたエラーに関連する診断情報をキャプチャすることを行わせる。
【００１１】
次に本発明の好ましい実施形態が、単に例として、以下の図面を参照して説明される。
【図面の簡単な説明】
【００１２】
【図１】本発明の好ましい実施形態によるシステムおよび方法が実施され得るネットワーク環境の一例を示す、ハイレベル・ブロック図である。
【図２】図１のネットワーク環境で使用するストレージ・システムの一例を示すハイレベル・ブロック図である。
【図３】本発明の好ましい実施形態による、様々な診断機能が無効化された状態でのＩ／Ｏエラーの発生を示すハイレベル・ブロック図である。
【図４】本発明の好ましい実施形態による、Ｉ／Ｏエラーの発生時の情報の収集を改善するために構成された情報収集モジュールを示すハイレベル・ブロック図である。
【図５】本発明の好ましい実施形態による、情報収集モジュールがどのようにして、再現されたＩ／Ｏエラーに関連する情報を集めるための診断機能を有効化するのかを示すハイレベル・ブロック図である。
【図６】本発明の好ましい実施形態による、情報収集モジュールおよび様々な関連サブモジュールを示すハイレベル・ブロック図である。
【図７】Ｉ／Ｏエラーに関連する診断情報を収集するための方法の一例を示す図である。
【発明を実施するための形態】
【００１３】
本明細書の図において一般的に説明され、例示されるように、本発明の構成品は、広く多様な異なる構成で配置、設計され得るということが容易に理解されよう。したがって、図に表されるように、以下の本発明の実施形態のより詳細な説明は、特許請求される本発明の範囲を限定することを意図するものではなく、本発明により現在企図される実施形態の特定の例の単なる代表にすぎない。現在説明されている実施形態は、全体を通して同様の部分は同様の数字で指示される、図面への参照により最もよく理解されるであろう。
【００１４】
本発明は、システム、方法、またはコンピュータ・プログラム製品あるいはその組合せとして具体化され得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を遂行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体を含んでもよい。
【００１５】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用される命令を保持し、記憶することができる有形デバイスであってよい。コンピュータ可読ストレージ媒体は、例えば、非限定的に、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイスまたは前述のものの任意の適切な組合せであってよい。より具体的なコンピュータ可読ストレージ媒体の非網羅的一覧には、以下の、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能なプログラマブル読み出し専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）ディスク、パンチ・カードまたは命令が記録された溝中の隆起構造のような機械的に符号化されたデバイス、および前述のものの任意の適切な組合せが含まれる。本明細書で使用されるコンピュータ可読ストレージ媒体は、電波または他の自由に伝播する電磁波、導波管または他の伝送媒体を通じて伝播する電磁波（例えば、光ファイバ・ケーブルを通る光パルス）、またはケーブルを通じて送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
【００１６】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれの計算／処理デバイスへと、またはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワークまたはワイヤレス・ネットワークあるいはその組合せを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光学伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはその組合せを含み得る。各計算／処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を、それぞれの計算／処理デバイスの中のコンピュータ可読ストレージ媒体に記憶のために転送する。
【００１７】
本発明の動作を遂行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはＳｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのようなオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語もしくは同様のプログラミング言語のような、従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードのいずれかであってよい。
【００１８】
コンピュータ可読プログラム命令は、スタンド・アロン型ソフトウェア・パッケージとして、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上でかつ部分的にリモート・コンピュータ上で、または全体的にリモート・コンピュータ上もしくはサーバ上で実行され得る。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）を含む任意の型のネットワークを通じてユーザのコンピュータと接続されてよく、あるいは接続は、（例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて）外部コンピュータとなされてもよい。いくつかの実施形態において、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して電子回路をカスタマイズし得る。
【００１９】
本発明の態様が、本発明の実施形態による方法、装置（システム）およびコンピュータ・プログラム製品についてのフローチャート図またはブロック図あるいはその両方を参照して、本明細書において説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実施され得るということが理解されるであろう。
【００２０】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体に記憶された命令により、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作の態様を実施する命令を含んだ製品を含むべく、コンピュータ可読ストレージ媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに特定の方式で機能するように指示するものであってもよい。
【００２１】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施するように、コンピュータによって実施されるプロセスを作り出すべくコンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の演算ステップを実行させるものであってもよい。
【００２２】
図１を参照して、ネットワーク環境１００の一例が例示される。ネットワーク環境１００は、本発明によるシステムおよび方法が実施され得る環境の一例を示すために提示される。ネットワーク環境１００は、例として提示されるがこれに限定されない。実際、本明細書に開示されるシステムおよび方法は、示されるネットワーク環境１００に加えて、広く多様な異なるネットワーク環境に適用され得る。
【００２３】
示されるとおり、ネットワーク環境１００は、ネットワーク１０４によって相互に接続された１つまたは複数のコンピュータ１０２、１０６を含む。ネットワーク１０４は、例えば、ローカル・エリア・ネットワーク（ＬＡＮ）１０４、広域ネットワーク（ＷＡＮ）１０４、インターネット１０４、イントラネット１０４などを含んでよい。特定の実施形態において、コンピュータ１０２、１０６は、クライアント・コンピュータ１０２およびサーバ・コンピュータ１０６（本明細書において「ホスト・システム」１０６とも呼ばれる）の両方を含んでよい。一般に、クライアント・コンピュータ１０２は、通信セッションを開始するのに対し、サーバ・コンピュータ１０６は、クライアント・コンピュータ１０２からの要求を待つ。特定の実施形態において、コンピュータ１０２またはサーバ１０６あるいはその両方は、１つまたは複数の内部または外部のダイレクト・アタッチト・ストレージ・システム１０９（例えば、ハードディスク・ドライブのアレイ、ソリッド・ステート・ドライブ、テープ・ドライブなど）と接続してもよい。これらのコンピュータ１０２、１０６およびダイレクト・アタッチト・ストレージ・システム１０９は、ＡＴＡ、ＳＡＴＡ、ＳＣＳＩ、ＳＡＳ、ファイバ・チャネルなどのようなプロトコルを使用して通信してもよい。
【００２４】
ネットワーク環境１００は、特定の実施形態において、サーバ１０６の背後に、ストレージ・エリア・ネットワーク（ＳＡＮ）１０８またはＬＡＮ１０８（例えば、ネットワーク・アタッチト・ストレージを使用するとき）のようなストレージ・ネットワーク１０８を含み得る。このネットワーク１０８は、サーバ１０６をハードディスクまたはソリッド・ステート・ドライブのアレイ１１０、テープ・ライブラリ１１２、個別のハードディスク・ドライブ１１４、またはソリッド・ステート・ドライブ１１４、テープ・ドライブ１１６、ＣＤ−ＲＯＭライブラリなどのような１つまたは複数のストレージ・システムと接続してもよい。ストレージ・システム１１０、１１２、１１４、１１６にアクセスするために、ホスト・システム１０６は、ホスト１０６の１つまたは複数のポートからストレージ・システム１１０、１１２、１１４、１１６の１つまたは複数のポートへの物理的接続によって通信してもよい。接続は、スイッチ、ファブリック、直接接続などによってされてよい。特定の実施形態において、サーバ１０６およびストレージ・システム１１０、１１２、１１４、１１６は、ファイバ・チャネル（ＦＣ）のようなネットワークの規格を使用して通信してもよい。
【００２５】
図２を参照して、ハードディスク・ドライブ２０４またはソリッド・ステート・ドライブ２０４あるいはその両方のアレイを含むストレージ・システム１１０の一実施形態が例示される。示されるとおり、ストレージ・システム１１０は、ストレージ・コントローラ、２００、１つまたは複数のスイッチ２０２、およびハードディスク・ドライブ２０４または（フラッシュメモリ・ベースのドライブ２０４のような）ソリッド・ステート・ドライブ２０４のような、１つまたは複数のストレージ・ドライブ２０４を含む。ストレージ・コントローラ２００は、１つまたは複数のストレージ・ドライブ２０４のデータにアクセスするために、１つまたは複数のホスト１０６（例えば、ｚ／ＯＳ（Ｒ）、ｚＶＭなどのようなオペレーティング・システムを実行するオープン・システムまたはメインフレーム・サーバ１０６あるいはその両方など）を有効化し得る。
【００２６】
選択された実施形態において、ストレージ・コントローラ２００は、１つまたは複数のサーバ２０６を含む。ストレージ・コントローラ２００は、また、ストレージ・コントローラ２００をホスト・デバイス１０６およびストレージ・デバイス２０４のそれぞれに接続するために、ホスト・アダプタ２０８およびデバイス・アダプタ２１０を含んでもよい。複数のサーバ２０６ａ、２０６ｂは、接続されたホスト１０６が常にデータを利用できることを確実にするために冗長性を提供し得る。このように、一方のサーバ２０６ａに障害が起きたとき、ホスト１０６とストレージ・デバイス２０４との間のＩ／Ｏが続けられることを確実にするため、他方のサーバ２０６ｂが、障害が起きたサーバ２０６ａのＩ／Ｏ負荷を受け取り得る。この処理は、「フェイルオーバ」と呼ばれることがある。
【００２７】
選択された実施形態において、それぞれのサーバ２０６は１つまたは複数のプロセッサ２１２およびメモリ２１４を含んでもよい。メモリ２１４は、揮発性メモリ（例えば、ＲＡＭ）ならびに、不揮発性メモリ（例えば、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ハードディスク、フラッシュメモリなど）を含んでもよい。揮発性メモリおよび不揮発性メモリは、特定の実施形態において、プロセッサ２１２で実行され、ストレージ・ドライブ２０４のデータにアクセスするために使用されるソフトウェア・モジュールを記憶し得る。これらのソフトウェア・モジュールは、ストレージ・ドライブ２０４の論理ボリュームへのすべての読み取りおよび書き込み要求を管理し得る。
【００２８】
図２に例示されたものと同様のアーキテクチャを有するストレージ・システム１１０の一例は、ＩＢＭ（Ｒ）ＤＳ８０００（ＴＭ）エンタープライズ・ストレージ・システムである。ＤＳ８０００（ＴＭ）は、継続的動作をサポートするよう設計されたディスク・ストレージを提供する、高性能で大容量のストレージ・コントローラである。しかしながら、本明細書に開示されたシステムおよび方法は、ＩＢＭ（Ｒ）ＤＳ８０００（ＴＭ）エンタープライズ・ストレージ・システム１１０による動作に限定されることなく、システム１１０に関連する製造者、商品名、または部品もしくは部品名にかかわらず、任意の同等または類似のストレージ・システム１１０でも動作し得る。さらに、本発明の１つまたは複数の実施形態の恩恵を受けるであろういかなるストレージ・システムも、本発明の範囲内に入ることになる。したがって、ＩＢＭ（Ｒ）ＤＳ８０００（ＴＭ）は、例として提示されるだけであって、これに限定することは意図されていない。
【００２９】
図３を参照して、先に言及されたように、ｚ／ＯＳ（Ｒ）のようなオペレーティング・システム３００において、制御ブロック３０２は、ｚ／ＯＳ（Ｒ）が実行されているホスト・システム１０６の作業およびリソースを管理するために使用される。これらの制御ブロック３０２は、内部的には実の、仮想の、またはハードのあるいはその組合せのストレージ・エリアとして表され、一般に、ホスト・システム１０６内で発生しているイベント、アクティビティ、およびステータスに関係する特定の情報を含む。ほとんどの状況において、制御ブロック３０２は、互いにチェーニングされており、ｚ／ＯＳ（Ｒ）オペレーティング・システムの内部構造の多くのエリアにまたがることができる。制御ブロック３０２についての知識は、障害が発生したとき、ホスト・システム１０６およびそのステータスについての重要な情報を決定する際に役立つ。
【００３０】
ストレージ・システム１１０のボリューム３０４のデータにアクセスするために、入出力（Ｉ／Ｏ）要求が、ホスト・システム１０６で実行中のアプリケーションによって生成されたとき、Ｉ／Ｏドライバは、入出力監視プログラム・ブロック（ＩＯＳＢ）と呼ばれる制御ブロック３０２を作る。ＩＯＳＢ制御ブロック３０２は、Ｉ／Ｏ要求を記述して、入出力監視プログラム（ＩＯＳ）へとパラメータを渡し、入出力監視プログラム（ＩＯＳ）から応答を受け取る。Ｉ／Ｏエラー３０６が発生したとき、特定のデバイスに対するデータの読み込み／書き込みにどのチャネル・プログラムが使用されたのかを特定するために、ＩＯＳＢ制御ブロック３０２の情報がしばしば必要とされる。残念なことに、ＩＯＳＢ制御ブロック３０２の内容を確認するためにＳＶＣ（Ｓｕｐｅｒｖｉｓｏｒ  Ｃｏｎｔｒｏｌ）ダンプが取り込まれる頃には、ＩＯＳＢ制御ブロック３０２は、しばしば既に別のアプリケーションによって再利用されている。その結果、ＩＯＳＢ制御ブロック３０２のデータは、ＳＶＣダンプが取り込まれる頃にはしばしば陳腐化しており、Ｉ／Ｏエラー３０６の根本原因を確認するために役立たない。
【００３１】
トレース・データを収集するＳＶＣダンプのような診断ツールは、通常の動作中はオーバーヘッドを減らすためにしばしば無効化されている（図３に示されるとおり）。したがって、トレース・データは、Ｉ／Ｏエラー３０６が最初に発生した際には収集されない場合がある。ユーザは、診断ツールを有効化した後に、Ｉ／Ｏエラー３０６を再現しようとするかもしれないが、Ｉ／Ｏエラー３０６はしばしば再現され得ないか、所望の診断情報を収集したい時間内に再現され得ない。このことは、Ｉ／Ｏエラー３０６の根本原因を決定することを遅らせたり、不可能にしたりする場合がある。
【００３２】
図４を参照して、Ｉ／Ｏエラー３０６に関連する診断情報をより効果的に集めるために、ホスト・システム１０６において、あるいはホスト・システム１０６に関連して、情報収集モジュール４００が提供されてもよい。一般に、情報収集モジュール４００は、Ｉ／Ｏ動作に関連して発生するＩ／Ｏエラー３０６をモニターする。図４に示されるとおり、通常の動作中、トレース機能などの診断機能は、ホスト・システム１０６またはストレージ・システム１１０あるいはその両方のオーバーヘッドを減らすために無効化されてもよい。Ｉ／Ｏエラー３０６が検出されたとき、情報収集モジュール４００は、Ｉ／Ｏエラー３０６が再駆動（つまり、Ｉ／Ｏエラー３０６を再度発生させるであろう動作を実行すること）され得るかどうかを決定し得る。
【００３３】
図５で示されるとおり、Ｉ／Ｏエラー３０６が再駆動され得る場合は、情報収集モジュール４００は、データ収集を改善するためにホスト・システム１０６またはストレージ・システム１１０あるいはその両方の様々な診断機能を有効化し、直ちにＩ／Ｏエラー３０６を引き起こしたＩ／Ｏを再駆動する。これにより、理論的には、Ｉ／Ｏエラー３０６が再発生させられる（再現されたエラー５００で示されるとおり）。診断機能が有効化されているので、情報収集モジュール４００は、有効化されていなければ収集されなかった様々なタイプの診断情報を収集することができる。例えば、ＳＶＣダンプによって生成されるようなトレース情報５０２が情報収集モジュール４００によって収集され得る。情報収集モジュール４００が、Ｉ／Ｏエラー３０６を引き起こしたＩ／Ｏを直ちに再駆動するので、制御ブロック３０２のようなデータ・ストラクチャから集められたデータは陳腐化しておらず有効であり得る。
【００３４】
上記の技術は、通常の動作中はオーバーヘッドを減らすために様々な診断機能を無効化できるという点で有利である。特定の実施形態において、Ｉ／Ｏエラー３０６が検出されたときにのみ、診断機能が有効化される。一旦Ｉ／Ｏエラー３０６が再現され、関連の診断情報が集められると、診断機能は、オーバーヘッドを減らすために再び無効化され得る。特定の実施形態において、診断機能は一定時間の後に無効化される。他の実施形態において、診断機能は所望の診断情報が集められた直後に無効化される。さらに他の実施形態において、診断機能は、選択された回数Ｉ／Ｏが再駆動された後、またはＩ／Ｏエラー３０６が再現されて診断情報が集められるまでの、どちらかが先に起こった際に無効化される。どのような場合でも、有効化された診断機能は、いくらかの時間またはある特定のイベントの後、ホスト・システム１０６またはストレージ・システム１１０あるいはその両方のオーバーヘッドを減らすために無効化されてよい。
【００３５】
図６を参照して、情報収集モジュール４００は、様々な特徴および機能を提供する様々なサブモジュールを含み得る。これらのサブモジュールは、ハードウェア、ソフトウェア、ファームウェアまたはこれらの組合せにおいて実施されてよい。サブモジュールは、例として提示されており、情報収集モジュール４００に含まれ得るサブモジュールの包括的なリストを表すことは意図されない。情報収集モジュール４００は、例示されているものよりも多いまたは少ないモジュールを含んでもよい。示されるとおり、情報収集モジュール４００は、１つまたは複数の設定モジュール６００、エラー検出モジュール６０２、チェック・モジュール６０４、再駆動決定モジュール６０６、診断有効化モジュール６０８、再駆動モジュール６１０、キャプチャ・モジュール６１２および診断無効化モジュール６１４を含む。
【００３６】
設定モジュール６００は、特定のジョブまたはアドレス空間に対する改善された情報収集をユーザが手動でオンにすることを可能にし得る。特定の実施形態において、改善された情報収集は、ユーザが、重要であるまたはエラーになりやすいと感じるジョブに対してオンにされ得る。このことが遂行され得る様々な方法がある。例えば、ユーザはパラメータ（例えば、SYS1.PARMLIBメンバ）を設定して初期プログラムロード（ＩＰＬ）の際、ジョブに対する情報収集を作動させてよく、または手動で、コンソール・コマンドを出して特定のジョブならびにアドレス空間識別子番号（ＡＳＩＤ）に関する情報収集を作動させてもよい。これら技術のいずれかを使用して、設定モジュール６００は、向上した情報収集（例えば、トレース）がアクティブになっていることを示すためにジョブの初期化時にアドレス空間制御ブロック３０２（ＡＳＣＢ）のビットをオンにし得る。
【００３７】
特定の実施形態において、設定モジュール６００は、特定のアドレス空間でデータが変更されたり、ロジックが呼び出されたり、または他のイベントが発生したりするそれぞれの際に、診断情報が収集されるように、そのアドレス空間に対する情報収集を有効化するよう構成されてもよい。この情報収集の影響は、情報が収集されるたびに、収集されるまたは保存されるデータの量を減らすことによって最小限にし得る。作業負荷のピーク時の間には情報収集をオフにし、作業負荷の少ない期間の間にはオンに戻すよう、自動化が使用されてもよい。これらのそれぞれのオプションは、SYS1.PARMLIBパラメータを介して制御され得る。
【００３８】
エラー検出モジュール６０２は、いつＩ／Ｏエラー３０６が発生したかを検出し得る。Ｉ／Ｏエラー３０６が発生したとき、チェック・モジュール６０４は、ジョブに対する情報収集が有効化されているかどうかをチェックし得る。これは、例えば、ジョブに関連するＡＳＣＢのビットをチェックすることによって遂行され得る。再駆動決定モジュール６０６はまた、Ｉ／Ｏエラー３０６が再駆動可能かどうかもチェックし得る。Ｉ／Ｏエラー３０６が再駆動可能であり、情報収集がジョブに対して有効化されていれば、診断有効化モジュール６０８は診断情報の収集を改善するために様々な診断機能を有効化し得る。例えば、診断有効化モジュール６０８は、トレース・データを収集するＳＶＣダンプのような診断ツールを有効化し得る。
【００３９】
再駆動モジュール６１０は、次に、初期Ｉ／Ｏエラー３０６を引き起こしたＩ／Ｏ動作を直ちに再駆動してもよい。理論的には、これにより、Ｉ／Ｏエラー３０６が再現される。キャプチャ・モジュール６１２は、次に、診断機能によって集められた情報をキャプチャする。特定の実施形態において、キャプチャ・モジュール６１２は、先述のSYS1.PARMLIBパラメータにおいて示される情報をキャプチャし得る。特定の実施形態において、キャプチャされ、保存されるデフォルトの情報は、最新のＩＯＳＢ制御ブロック３０２からのデータ、読み込み／書き込みされるデータの最初の１２８バイト、および読み込み／書き込みされるデータの最後の１２８バイトを含む。キャプチャ・モジュール６１２は、特定の実施形態において、Ｉ／Ｏエラー３０６が検出されたのと同じアドレス空間の定義済みのストレージ・エリアに診断情報を記憶する。
【００４０】
一旦所望の診断情報がキャプチャされると、診断無効化モジュール６１４は、診断有効化モジュール６０８によって有効化された診断機能を無効化し得る。あるいは、診断無効化モジュール６１４は、一定の時間が過ぎたとき、または、一定回数Ｉ／Ｏエラー３０６の再現が試みられた後で、診断機能を無効化してもよい。
【００４１】
特定の実施形態において、エラー検出モジュール６０２は、すべてのタイプのジョブのすべてのタイプのＩ／Ｏエラー３０６をモニターする。Ｉ／Ｏエラー３０６が再駆動可能であれば、診断有効化モジュール６０８は、診断機能を有効化し、再駆動モジュール６１０は、Ｉ／Ｏエラー３０６に関連するＩ／Ｏ動作を再駆動するであろう。これにより、理論的にはＩ／Ｏエラー３０６が再現される。キャプチャ・モジュール６１２は、次にＩ／Ｏエラー３０６に関連する診断情報をキャプチャする。特定の実施形態において、設定モジュール６００はまた、Ｉ／Ｏエラー３０６が起こったジョブに関して情報収集を作動させるためのパラメータを自動的に設定してもよい。そうするとジョブに関連するその後のいかなるＩ／Ｏエラー３０６も、情報収集を起動し得る。Ｉ／Ｏエラー３０６が再駆動可能でない場合は、ユーザの設定に応じて、情報収集はまた、そのジョブの将来の実行に関するデータを保存し始めるよう自動的に起動され得る。このことは、情報収集が同じジョブのいかなる再実行に対しても確実にアクティブであるようにするために役立つであろう。収集された情報は、Ｉ／Ｏエラー３０６の性質に関する追加的詳細を提供するであろう。多くの場合、これらの詳細によって、再現されたＩ／Ｏエラー５００による追加的なトレースまたは診断を必要とすることなく根本原因を決定することが可能となるであろう。
【００４２】
図７を参照して、Ｉ／Ｏエラー３０６に関連する診断情報を収集するための方法７００の一実施形態が例示される。示されるとおり、方法７００は、まずＩ／Ｏエラー３０６が検出されたかどうかを決定する７０２。検出されていれば、方法７００は、Ｉ／Ｏエラー３０６に関連するジョブに対して情報収集を作動させるパラメータが設定されたかどうかを決定する７０４。設定されていれば、方法７００は、Ｉ／Ｏエラー３０６が再駆動可能であるかどうかを決定する７０６。Ｉ／Ｏエラー３０６が再駆動可能であれば、方法７００は、診断情報収集を改善するために診断機能を有効化し７０８、方法７００は、初期Ｉ／Ｏエラー３０６を引き起こしたＩ／Ｏを再駆動する７１０。これにより、理論的にはＩ／Ｏエラー３０６が再現される。一旦再現されれば、方法７００は、Ｉ／Ｏエラー３０６に関連する診断情報をキャプチャする７１２。方法７００は、次に、オーバーヘッドを減らすために診断機能を無効化する７１４。
【００４３】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能性、ならびに動作を例示する。この点に関し、フローチャートまたはブロック図の各ブロックは、指定された論理関数を実施するための１つまたは複数の実行可能な命令を含むモジュール、セグメント、またはコードの部分を表し得る。いくつかの代替的実装では、ブロックに記された機能は、図に記された順とは異なって生じ得ることにも注意されたい。例えば、連続して示された２つのブロックは、実際には、含まれる機能性によって、実質的に同時に実行されてよく、または、ブロックは、ときには逆順で実行されてよい。他の実装では、所望の機能性を実現するために開示されたステップのすべては必要とされない場合がある。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、特定の機能もしくは動作を実行する、専用ハードウェア・ベースのシステムによって、または、専用ハードウェアおよびコンピュータ命令の組合せによっても実施され得るということにも注意されたい。
【符号の説明】
【００４４】
１００  ネットワーク環境
１０４  ネットワーク
１０２  クライアント・コンピュータ 
１０６  サーバ・コンピュータ
１０８  ストレージ・ネットワーク
１０９  ダイレクト・アタッチト・ストレージ・システム
１１０  アレイ
１１２  テープ・ライブラリ
１１４  ハードディスク・ドライブ、ソリッド・ステート・ドライブ
１１６  テープ・ドライブ
【図１】
2020522811.tif 000003
【図２】
2020522811.tif 000004
【図３】
2020522811.tif 000005
【図４】
2020522811.tif 000006
【図５】
2020522811.tif 000007
【図６】
2020522811.tif 000008
【図７】
2020522811.tif 000009
【手続補正書】
【提出日】令和2年6月12日(2020.6.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
エラーに関連する診断情報を収集するための方法であって、
入出力（Ｉ／Ｏ）動作に関連するエラーを検出すること、
前記エラーが再駆動され得るかどうかを決定すること、
前記エラーが再駆動され得る場合は、診断情報の収集を改善するために様々な診断機能を有効化すること、
前記エラーを再現するために前記エラーに関連する前記Ｉ／Ｏ動作を直ちに再駆動すること、および
前記有効化された診断機能を使用して、前記再現されたエラーに関連する診断情報をキャプチャすること、
を含む、エラーに関連する診断情報を収集するための方法。
【請求項２】
前記診断情報をキャプチャすることは、定義済みのストレージ・エリアにおける前記診断情報をキャプチャすることを含む、請求項１に記載の方法。
【請求項３】
前記Ｉ／Ｏ動作はジョブに関連する、請求項２に記載の方法。
【請求項４】
定義済みのストレージ・エリアにおける前記診断情報をキャプチャすることは、前記ジョブのアドレス空間における前記診断情報をキャプチャすることを含む、請求項３に記載の方法。
【請求項５】
前記エラーが再駆動され得ない場合は、前記ジョブの将来の実行のために前記診断機能を有効化する、請求項１に記載の方法。
【請求項６】
前記ジョブの将来の実行をモニターすることをさらに含む、請求項５に記載の方法。
【請求項７】
前記ジョブの将来の実行を検出すると、前記診断機能を使用した前記診断情報の収集を起動する、請求項６に記載の方法。
【請求項８】
エラーに関連する診断情報を収集するためのシステムであって、
少なくとも１つのプロセッサ、および
前記少なくとも１つのプロセッサに動作可能に結合され、前記少なくとも１つのプロセッサで実行するための命令を記憶する少なくとも１つのメモリ・デバイスを含み、前記命令は、前記少なくとも１つのプロセッサに、請求項１ないし７のいずれかに記載の方法を行わせる、
エラーに関連する診断情報を収集するためのシステム。
【請求項９】
コンピュータ・プログラムであって、前記プログラムがコンピュータで実行されるとき、請求項１ないし７のいずれかに記載の方法を実行するように適合されたプログラム・コード手段を含む、コンピュータ・プログラム。
【国際調査報告】
2020522811.tif 000010
2020522811.tif 000011