(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-16
(45)【発行日】2023-10-24
(54)【発明の名称】情報処理装置及び情報処理プログラム
(51)【国際特許分類】
G06F 11/36 20060101AFI20231017BHJP
【FI】
G06F11/36 168
(21)【出願番号】P 2019159596
(22)【出願日】2019-09-02
【審査請求日】2022-05-17
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】湯本 隆広
(72)【発明者】
【氏名】小宮山 英彦
(72)【発明者】
【氏名】伴 全
(72)【発明者】
【氏名】竹内 順
【審査官】渡辺 順哉
(56)【参考文献】
【文献】特開2018-163595(JP,A)
【文献】特開2016-040651(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/07-11/36
(57)【特許請求の範囲】
【請求項1】
複数のネットワークタスクの処理を実行するタスク実行部と、
前記タスク実行部による所定のネットワークタスクの処理時間を取得する取得部と、
前記取得部により取得された前記処理時間
の最大値、平均値及び最頻値のいずれか一つもしくは複数を各前記ネットワークタスクに対する遅延時間の基礎値として算出する基礎値算出部と、
前記基礎値算出部により算出された前記基礎値の中から、予め決められた前記基礎値の優先順位にしたがって前記基礎値を選択し、選択した前記基礎値を基に、前記所定のネットワークタスクに対する遅延時間
として複数の異なる個別遅延時間を前記基礎値毎に生成する遅延時間生成部と、
前記遅延時間生成部により生成された前記
個別遅延時間にしたがい前記所定のネットワークタスクの処理時間が遅延するように複数の前記ネットワークタスクの処理を前記タスク実行部に実行させる
処理を、前記個別遅延時間毎に繰り返す制御部と
を備えたことを特徴とする情報処理装置。
【請求項2】
前記制御部は、前記最大値、前記平均値、前記最頻値の順の前記優先順位を有することを特徴とする請求項
1に記載の情報処理装置。
【請求項3】
前記遅延時間生成部は、複数の異なる生成方法を用いて、前記生成方法毎に前記遅延時間を生成し、
前記制御部は、前記遅延時間にしたがい前記所定のネットワークタスクの処理時間が遅延するように複数の前記ネットワークタスクの処理を前記タスク実行部に前記生成方法毎に実行させる
ことを特徴とする請求項1
又は2に記載の情報処理装置。
【請求項4】
前記タスク実行部は、各前記ネットワークタスクに対して処理の実行に用いる識別番号を確保し、確保した前記識別番号を用いて各前記ネットワークタスクの処理を実行し、処理が完了すると前記識別番号を解放し、
前記取得部は、前記タスク実行部による前記所定のネットワークタスクに対する前記識別番号の確保にかかる時間又は解放にかかる時間のいずれか一方もしくは双方を前記処理時間として取得することを特徴とする請求項1
~3のいずれか一つに記載の情報処理装置。
【請求項5】
複数のネットワークタスクの処理を実行し、
所定のネットワークタスクの処理時間を取得し、
取得した前記処理時間
の最大値、平均値及び最頻値のいずれか一つもしくは複数を各前記ネットワークタスクに対する遅延時間の基礎値として算出し、
算出した前記基礎値の中から、予め決められた前記基礎値の優先順位にしたがって前記基礎値を選択し、選択した前記基礎値を基に、前記所定のネットワークタスクに対する遅延時間
として複数の異なる個別遅延時間を前記基礎値毎に生成し、
生成した前記遅延時間にしたがい前記所定のネットワークタスクの処理時間が遅延するように複数の前記ネットワークタスクの処理
の実行を、前記個別遅延時間毎に繰り返す
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置及び情報処理プログラムに関する。
【背景技術】
【0002】
ストレージ装置は、接続されたサーバからネットワークを通じて指示を受信して、その結果を応答する。また、ストレージ装置は、複数のネットワークタスクを管理可能であり、サーバ毎に別のタスクを起動して各サーバからの指示を処理する。
【0003】
そして、ストレージ装置は、ネットワークタスクを動作させる場合、以下の処理を行う。例えば、ストレージ装置は、通信を行う前にネットワークタスク毎にFile Descriptor(FD)番号と呼ばれるユニークな番号を取得する。ストレージ装置は、FD番号を取得した後にネットワークタスクの処理が可能となる。そして、ストレージ装置は、ネットワークタスクの処理が完了するとFD番号を解放する。ストレージ装置は、解放したFD番号を、他のネットワークタスクに対して獲得することができる。ただし、FD番号が解放されるまでは、ストレージ装置は、ネットワークタスク毎に重複しないようにFD番号を管理する。
【0004】
例えば、ストレージ装置は、ネットワークタスクAのFD番号として1を獲得する。そして、ネットワークタスクAの処理完了後、ストレージ装置は、1のFD番号を解放する。その後、ストレージ装置は、他のネットワークタスクBのFD番号として1を獲得する。このようなネットワークタスクの処理におけるFD番号の獲得から解放までの時間は、ストレージ装置の負荷状態により変動する。
【0005】
ここで、ストレージ装置の稼働中、ネットワークタスクA及びネットワークタスクBの双方が動作する状態で、ネットワークタスクBがネットワークエラーとなり、通信が一時的に途絶える事象が発生する場合がある。この原因の1つとして、ストレージ装置が、ネットワークタスクAのFD番号の二重解放により、ネットワークタスクBに獲得したFD番号を誤って解放してしまうことが考えられる。この場合、ネットワークタスクBの処理実行時に、ネットワークタスクBにFD番号が割り当たっていないため、ストレージ装置は、異常が発生したと判定して処理を終了する。そのため、通信が途絶えてしまう。
【0006】
ただし、ネットワークタスクAに関して二重解放処理を行った際に、指定したFD番号が他のネットワークタスクに使用されていない場合、システムの動作の安定性を保証するため、ストレージ装置は、エラーログを残して正常状態を保つ。この場合、ストレージ装置は、OS(Operating System)による強制的なダウンを伴うパニック処理は実行しない。
【0007】
このような二重解放により障害が発生した場合に、その原因を特定するため、再現試験が行われる。ネットワークタスクの処理のためのFD番号などの資源の獲得及び解放に関する障害調査は、例えば、以下の手順で行われる。
【0008】
まず、調査用に資源管理データ採取を行うファームウェアが作成される。このファームウェアにより、資源の獲得及び解放処理に管理記録処理が追加される。以下では、この管理記録処理をトレースと呼ぶ。ファームウェアは、トレースを行う場合、処理性能を考慮してメモリ上に一定領域を確保してテーブルの形式で情報を保存する。この場合、ファームウェアは、テーブルのサイズを抑えるため、テーブルをサイクリックに使用する。
【0009】
即時性のあるデータを取るために、障害調査を行うストレージ装置は、異常が発生した場合にパニック処理を実行する。そして、トレースにより作成されたテーブルの内容は、パニック処理が発生した際に保存されるダンプ情報に格納される。その後、障害調査を行う作業者は、パニック処理により生成されたダンプ情報の解析を行い、障害発生時の事象を特定する。この時点で障害発生の原因と考えられる該当箇所が見つからない場合、障害発生の原因と考えられる該当箇所が見つかるまで以上の処理が繰り返し実行される。
【0010】
なお、障害調査の技術として、原因を突き止めるためのアプリケーションにより問題が発生した時の状態をログとして収集させ、収集したログを用いて問題発生時の状態を再現する従来技術がある。また、トレース情報を調査用データとして保持させ、試験用環境に調査用データを適用し、さらに処理タイミング、起動順序及び処理の遅延などの情報を基に、障害が発生した状態を忠実に再現させる従来技術がある。
【先行技術文献】
【特許文献】
【0011】
【文献】特開2018-185709号公報
【文献】国際公開第2014/118897号
【発明の概要】
【発明が解決しようとする課題】
【0012】
しかしながら、従来の障害調査の手法では、二重解放を調査する場合、以下の理由から障害状態の再現性が低くなるという問題があった。理由としては、二重解放が常に発生するわけではないことがあげられる。また、二重解放が発生しても、他のネットワークタスクによる使用とのタイミングが合わずに障害が発生しないことも理由と考えられる。障害状態の再現性が低く、所望の事象が得られない場合、トレース採取範囲を変更して試行を繰り返すことになり、調査の準備に時間が掛かってしまう。また、再現性を高めるために障害事象ごとにファームウェアを作成し直すと、作業が煩雑となり各障害調査に掛かる時間が長期化してしまう。
【0013】
ここで、原因究明を容易にするために、保存するトレースの情報を増やすことが考えられるが、その場合トレースの格納量が肥大化し、ストレージ装置のメモリを圧迫するおそれがある。このようなトレースの格納量の肥大化を防ぐために、メモリ上の領域をサイクリックに使用する方法があるが、大量にトレースの情報が書き込まれると発生時の事象が上書きされ残らないおそれがある。そのため、障害原因を特定するためにトレースの情報を増やすことは好ましくない。
【0014】
また、ログを用いて問題発生時の状態を再現する従来技術では、発生頻度が低い障害の場合に再現性を高めるには多くのログを保持することになり、上述したようにメモリの圧迫などが発生するため容易に障害調査を行うことは困難である。また、試験用環境に調査用データを適用し、且つ処理タイミングなどの情報を基に障害発生した状態を再現する従来技術では、状態の再現のための設定調整が事象毎に行われるため、作業が煩雑となり容易に障害調査を行うことは困難である。
【0015】
開示の技術は、上記に鑑みてなされたものであって、障害発生状態の再現のための処理タイミングの設定調整を容易にする情報処理装置及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0016】
本願の開示する情報処理装置及び情報処理プログラムの一つの態様において、タスク実行部は、複数のネットワークタスクの処理を実行する。取得部は、前記タスク実行部による所定のネットワークタスクの処理時間を取得する。基礎値算出部は、前記時間取得部により取得された前記処理時間の最大値、平均値及び最頻値のいずれか一つもしくは複数を各前記ネットワークタスクに対する遅延時間の基礎値として算出する。遅延時間生成部は、前記基礎値算出部により算出された前記基礎値の中から、予め決められた前記基礎値の優先順位にしたがって前記基礎値を選択し、選択した前記基礎値を基に、前記所定のネットワークタスクに対する遅延時間として複数の異なる個別遅延時間を前記基礎値毎に生成する。制御部は、前記遅延時間生成部により生成された前記遅延時間にしたがい前記所定のネットワークタスクの処理時間が遅延するように複数の前記ネットワークタスクの処理を前記タスク実行部に実行させる処理を、前記個別遅延時間毎に繰り返す。
【発明の効果】
【0017】
1つの側面では、本発明は、障害発生状態の再現のための処理タイミングの設定調整を容易にすることができる。
【図面の簡単な説明】
【0018】
【
図1】
図1は、ストレージシステムのシステム構成図である。
【
図2】
図2は、ストレージ装置のブロック図である。
【
図3】
図3は、実施例1に係るFD番号獲得テーブルの一例を表す図である。
【
図4】
図4は、試験マトリクスの一例を表す図である。
【
図5】
図5は、実施例1に係る再現試験の概要を説明するための図である。
【
図6】
図6は、基礎値の取得処理のフローチャートである。
【
図7】
図7は、実施例1に係る再現試験のフローチャートである。
【
図8】
図8は、FD番号獲得処理のフローチャートである。
【
図9】
図9は、FD番号獲得処理のフローチャートである。
【
図10】
図10は、FD番号獲得処理及びFD番号解放処理における遅延制御処理のフローチャートである。
【
図11】
図11は、実施例2に係るFD番号獲得テーブルの一例を表す図である。
【
図12】
図12は、実施例2におけるFD番号獲得テーブルの登録処理のフローチャートである。
【
図13】
図13は、実施例2におけるFD番号解放時の動作のフローチャートである。
【発明を実施するための形態】
【0019】
以下に、本願の開示する情報処理装置及び情報処理プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置及び情報処理プログラムが限定されるものではない。
【実施例1】
【0020】
図1は、ストレージシステムのシステム構成図である。本実施例に係るストレージシステム10は、ストレージ装置1、スイッチ2、並びに、サーバ31及び32を有する。
【0021】
ストレージ装置1は、スイッチ2を介してサーバ31及び32にネットワーク接続される。ストレージ装置1は、スイッチ2を含むネットワークを通じてサーバ31又は32からデータの読み出しや書き込みの要求を受信する。ストレージ装置1は、サーバ31及び32毎にそれぞれの要求に対応するネットワークタスクを起動して処理する。そして、ストレージ装置1は、各ネットワークタスクを処理することで取得した要求に対する結果をサーバ31又は32へ応答する。ここで、
図1では、2台のサーバ31及び32を図示したが、この台数に特に制限は無い。
【0022】
ストレージ装置1は、例えば、CPU(Central Processing Unit)11、メモリ12、ディスク13、並びに、接続ポート14及び15を有する。本実施例では、ストレージ装置1は、ディスク13を複数有する。CPU11は、バスを介して、メモリ12、ディスク13、並びに、接続ポート14及び15に接続される。
【0023】
ディスク13は、例えば、ハードディスクやSSD(Solid State Drive)などの補助記憶装置である。ディスク13は、OSやその他の各種プログラムを格納する。
【0024】
メモリ12は、例えば、DRAM(Dynamic Random Access Memory)などの主記憶装置である。接続ポート14及び15は、スイッチ2に接続される。接続ポート14及び15は、ネットワークを介したサーバ31及び32とCPU11との間の通信を中継する。
【0025】
CPU11は、ディスク13からOSを読み出し、メモリ12を使用してOSを実行し動作させる。さらに、CPU11は、OS上でネットワークタスクを動作させる。
【0026】
次に、
図2を参照して、ストレージ装置の詳細について説明する。
図2は、ストレージ装置のブロック図である。本実施例ではストレージ装置1は、障害調査のための試験用の装置として動作する。ストレージ装置1は、
図2に示すように、タスク実行部101、履歴取得部102、基礎値算出部103、遅延時間生成部104、再現制御部105、異常検出部106、報知部107及び異常時処理実行部108を有する。タスク実行部101、履歴取得部102、基礎値算出部103、遅延時間生成部104、再現制御部105、異常検出部106、報知部107及び異常時処理実行部108の機能は、CPU11により実現される。
【0027】
タスク実行部101は、予め決められたFD番号のそれぞれが使用中であるか未使用であるかを管理するためのFD番号管理テーブルを有する。FD番号とは、ネットワークタスクを処理する際に識別番号として各ネットワークに割り当てられて使用される番号である。タスク実行部101は、FD番号管理テーブルを用いて、ネットワークタスクを起動し実行する。
【0028】
具体的には、タスク実行部101は、入力された要求に応じてネットワークタスクを起動する。次に、タスク実行部101は、自己が有するFD番号管理テーブルから未使用のFD番号を取得する。そして、タスク実行部101は、起動したネットワークタスクに取得した番号を割り当てる。また、タスク実行部101は、FD番号管理テーブルにおける取得したFD番号の情報を使用中に変更する。ここでは、FD番号の取得、ネットワークタスクへの取得したFD番号の割り当て及びFD番号管理テーブルの情報の変更をまとめて、FD番号の獲得という。
【0029】
次に、タスク実行部101は、獲得したFD番号を用いてネットワークタスクの処理を実行する。タスク実行部101は、ネットワークタスクの処理が完了すると、ネットワークタスクへのFD番号の割り当てを解除する。そして、タスク実行部101は、FD番号管理テーブルにおける割り当てを解除したFD番号の情報を未使用に変更する。ここでは、このFD番号の割り当ての解除及びFD番号管理テーブルの情報の変更をまとめて、FD番号の解放という。
【0030】
ここで、タスク実行部101は、ネットワークタスクの処理において、既に解放したFD番号を、そのネットワークタスクから再度解放する二重解放を行ってしまう場合がある。この場合、解放されたFD番号が既に他のネットワークタスクに対して獲得されていると、他のネットワークタスクへのFD番号の割り当てが解除されてしまう。タスク実行部101は、FD番号が割り当てられていないネットワークタスクの処理を実行しようとした場合、FD番号が使用できずに処理エラーとなる。
【0031】
履歴取得部102は、時計及び
図3に示すFD番号獲得テーブル120を有する。
図3は、実施例1に係るFD番号獲得テーブルの一例を表す図である。FD番号獲得テーブル120は、
図3に示すように、ネットワークタスクの識別情報であるタスクID(Identifier)、FD番号、ネットワークタスクを呼び出した関数の履歴である呼び出し情報、FD番号獲得処理時間及びFD番号解放処理時間が登録される。
図3において、FD番号が「0x00」、呼び出し情報が「NULL」、FD番号獲得処理時間が「0x00」及びFD番号解放処理時間が「0x00」である状態は、各情報が初期化された状態を表す。
【0032】
履歴取得部102は、タスク実行部101のネットワークタスクの処理を監視する。履歴取得部102は、タスク実行部101が起動したネットワークタスクの識別情報であるタスクIDを取得する。そして、履歴取得部102は、取得したタスクIDをFD番号獲得テーブル120に登録する。ここで、FD番号獲得テーブル120には、重複を排除してタスクIDが登録される。
【0033】
次に、履歴取得部102は、タスク実行部101によりネットワークタスクに対して獲得されたFD番号を取得する。そして、履歴取得部102は、タスクIDに対応させて取得したFD番号を登録する。さらに、履歴取得部102は、FD番号獲得の処理時間を取得する。そして、履歴取得部102は、タスクIDに対応させて取得したFD番号獲得の処理時間を登録する。
【0034】
さらに、履歴取得部102は、登録したタスクIDを有するネットワークタスクが呼び出される毎に、そのネットワークタスクを呼び出した関数の情報を取得する。そして、履歴取得部102は、取得した関数の情報をFD番号獲得テーブル120の呼び出し情報の欄に順次登録する。
【0035】
その後、履歴取得部102は、タスク実行部101がFD番号の解放を行うと、FD番号解放の処理時間を取得する。そして、履歴取得部102は、タスクIDに対応させて取得したFD番号解放の処理時間を登録する。この履歴取得部102が、「取得部」の一例にあたる。
【0036】
基礎値算出部103は、履歴取得部102がFD番号獲得処理時間又はFD番号解放処理時間を更新すると、更新された情報をFD番号獲得テーブル120から取得する。基礎値算出部103は、予め指定された計測時間内に取得した各ネットワークタスクのFD番号獲得処理時間又はFD番号解放処理時間を保持する。計測時間は、例えば、ストレージ装置1の起動後から10分間である。ただし、この計測時間は、ストレージシステム10の構成やストレージ装置1の性能などに応じて決定されることが好ましい。
【0037】
そして、基礎値算出部103は、ネットワークタスク毎にFD番号獲得処理時間及びFD番号解放処理時間の最大値、平均値及び最頻値を基礎値として求めて保持する。例えば、FD番号獲得処理時間の最大値の場合、基礎値算出部103は、最初に取得したFD番号獲得処理時間を最大値として保持する。その後、基礎値算出部103は、新たに取得したFD番号獲得処理時間が保持する最大値よりも大きい場合に、新たに取得したFD番号獲得処理時間を最大値とする処理を繰り返すことで最大値を決定する。また、FD番号獲得処理時間の平均値の場合、基礎値算出部103は、保持するFD番号処理時間の合計を算出し、呼び出された数で算出した合計値を除算することで平均値を算出する。また、FD番号獲得処理時間の最頻値の場合、基礎値算出部103は、nano sec単位で一致するFD番号獲得処理時間の数をカウントする。そして、基礎値算出部103は、カウントした値が最も多いFD番号獲得処理時間の最頻値とする。
【0038】
計測時間が経過して計測が完了すると、基礎値算出部103は、各ネットワークタスクのFD番号獲得処理時間又はFD番号解放処理時間の最大値、平均値及び最小値を基礎値として遅延時間生成部104へ出力する。
【0039】
遅延時間生成部104は、基礎値の優先度を予め有する。本実施例では、基礎値の優先度は、最大値、平均値、最頻値の順である。この優先度は、二重解放の障害発生の状態が再現されやすい順である。この優先度は、ストレージシステム10の構成やストレージ装置1の性能などに応じて決定されることが好ましい。
【0040】
また、遅延時間生成部104は、遅延時間を段階的に伸ばす降順生成、遅延時間を段階的に縮める昇順生成、及び遅延時間を一定の範囲で無作為に決定するランダム生成の3つを遅延時間の生成方法を有する。ここで、各遅延時間の生成方法について説明する。
【0041】
降順生成の場合、遅延時間生成部104は、基礎値の10分の1を基礎時間とし、最初の遅延時間を基礎時間とする。その後、遅延時間生成部104は、基礎時間の加算を繰り替えして遅延時間を順番に生成する。そして、基礎時間を9個加算した遅延時間、すなわち、次の加算で遅延時間が基礎値と同じ値になる場合に、遅延時間生成部104は、降順生成における全ての遅延時間を生成したと判定して、降順生成による遅延時間の生成を完了する。
【0042】
また、昇順生成の場合、遅延時間生成部104は、最初の遅延時間を基礎値とする。その後、遅延時間生成部104は、基礎値の10分の1である基礎時間の遅延時間からの減算を繰り替えして遅延時間を順番に生成する。そして、基礎時間を9個減算した遅延時間、すなわち、次の減算で遅延時間が基礎値と同じ値になる場合に、遅延時間生成部104は、昇順生成における全ての遅延時間を生成したと判定して、昇順生成による遅延時間の生成を完了する。
【0043】
また、ランダム生成の場合、遅延時間生成部104は、1~9個の中からランダムに個数を選択し、基礎値の10分の1である基礎時間を選択した個数加算した値を遅延時間とする。その後、遅延時間生成部104は、個数の選択を重複を排除して繰り返して遅延時間を順番に生成する。そして、1~9個の全てを選択した場合に、遅延時間生成部104は、ランダム生成における全ての遅延時間を生成したと判定して、ランダム生成による遅延時間の生成を完了する。
【0044】
ここで、本実施例では、基礎値の10分の1を基準値として遅延時間を生成したが、この基準値は他の値でもよい。例えば、基礎値を他の数に分割した値を基準値としてもよいし、他の方法により基礎値を基に算出される値を用いてもよい。この各基礎値を用いて遅延時間生成部104が順次生成する複数の遅延時間が、「個別遅延時間」の一例にあたる。
【0045】
さらに、遅延時間生成部104は、遅延時間の生成方法の優先度を予め有する。本実施例では、遅延時間の生成方法の優先度は、降順生成、昇順生成、ランダム生成の順である。この優先度は、二重解放の障害発生の状態が再現されやすい順である。この優先度も、ストレージシステム10の構成やストレージ装置1の性能などに応じて決定されることが好ましい。
【0046】
遅延時間生成部104は、ネットワークタスク毎のFD番号獲得処理時間及びFD番号解放処理時間の基礎値の入力を基礎値算出部103から受ける。遅延時間生成部104は、再現制御部105からFD番号獲得処理時間の遅延時間の提供の要求を受けると、
図4に示す試験マトリクス140を生成する。
図4は、試験マトリクスの一例を表す図である。
【0047】
次に、遅延時間生成部104は、優先順位にしたがって使用するFD番号獲得処理時間の基礎値及び使用する遅延時間の生成方法を決定し、使用する基礎値を用いて使用する遅延時間の生成方法により遅延時間を順次生成する。そして、遅延時間生成部104は、生成した遅延時間を再現制御部105へ出力する。その後、遅延時間生成部104は、一定時間経過する毎に遅延時間を順次生成して再現制御部105へ出力する。遅延時間生成部104は、各ネットワークタスクに対して遅延時間の生成を順次行う。遅延時間生成部104は、あるネットワークタスクに対して1つの基礎値を用いた1つの生成方法による遅延時間の生成が全て完了すると、試験マトリクス140の該当する欄に完了を表すマークを付加する。
【0048】
遅延時間生成部104は、試験マトリクス140を参照することで、全ての基礎値及び全ての生成方法を使用した遅延時間の生成が全てのネットワークタスクに対する完了を確認できる。遅延時間生成部104は、全ての基礎値及び全ての生成方法を使用した遅延時間の生成が全てのネットワークタスクに対して完了すると、FD番号獲得処理時間の遅延時間の生成完了を再現制御部105に通知する。
【0049】
その後、FD番号解放処理時間の遅延時間の提供の要求を再現制御部105から受けると、遅延時間生成部104は、全ての基礎値及び全ての生成方法を使用したFD番号解放処理時間の遅延時間の生成をネットワークタスク毎に実行する。FD番号解放処理時間の遅延時間の生成方法は、基礎値が異なるが、FD番号獲得処理時間の遅延時間の生成と同様である。その後、再現制御部105から再現試験の終了の通知を受けると、遅延時間生成部104は、遅延時間の生成を終了する。
【0050】
また、遅延時間生成部104は、遅延時間の生成の処理を行う間に、遅延時間の生成の終了の通知を再現制御部105から受けると、その時点で、遅延時間の生成を終了する。
【0051】
再現制御部105は、二重解放の障害発生の再現試験の開始条件を予め有する。例えば、二重解放の障害発生の再現試験の開始条件は、ストレージ装置1のコンソールを用いて操作者から開始指示が入力された場合、ストレージ装置1が一定時間稼働した場合、又は、ネットワークタスクが予め決められた一定数に達した場合などである。
【0052】
また、再現制御部105は、FD番号獲得時又はFD番号解放時を遅延タイミングとして有する。遅延タイミングとは、ネットワークタスクの処理時間を変更するためにネットワークタスクの処理における遅延時間を付与するタイミングを表す情報である。
【0053】
再現制御部105は、二重解放の障害発生の再現試験の開始条件が充足されたか否かを判定する。開始条件が満たされると、再現制御部105は、先に行う再現試験の遅延タイミングを選択する。本実施例では、FD番号獲得時を遅延タイミングとする再現試験を先に行う。
【0054】
次に、再現制御部105は、FD番号獲得処理時間の遅延時間の提供を遅延時間生成部104に要求する。そして、再現制御部105は、遅延時間を遅延時間生成部104から取得する。その後、再現制御部105は、取得した遅延時間のFD番号獲得後への付加をタスク実行部101に指示する。
【0055】
再現制御部105は、遅延時間を付加したネットワークタスクの処理の実行をタスク実行部101に行わせている間に、異常検出部106から異常発生の通知を受けると、再現試験の停止を決定する。そして、再現制御部105は、遅延時間の生成の終了を遅延時間生成部104に通知する。この再現制御部105が、「制御部」の一例にあたる。
【0056】
異常検出部106からの異常発生の通知を受けずに一定時間が経過すると、再現制御部105は、FD番号獲得処理時間の次の遅延時間を遅延時間生成部104から取得する。そして、再現制御部105は、新たに取得した遅延時間のFD番号獲得後への付加をタスク実行部101に指示する。再現制御部105は、異常検出部106からの異常発生の通知を受けなければ、一定時間毎に取得する遅延時間のFD番号獲得後への付加をタスク実行部101に順次行わせる。その後、再現制御部105は、FD番号獲得処理時間の遅延時間の生成完了の通知を遅延時間生成部104から受ける。
【0057】
次に、再現制御部105は、遅延タイミングとしてFD番号解放時を選択する。そして、再現制御部105は、FD番号解放時の遅延時間の提供を遅延時間生成部104に要求する。この場合、再現制御部105は、FD番号解放前の取得した遅延時間の付加をタスク実行部101に行わせる。再現制御部105は、異常検出部106からの異常発生の通知を受けなければ、一定時間毎に取得する遅延時間のFD番号獲解放前への付加をタスク実行部101に順次行わせる。その後、再現制御部105は、FD番号解放処理時間の遅延時間の生成完了の通知を遅延時間生成部104から受ける。そして、再現制御部105は、再現試験が完了したと判定する。その後、再現制御部105は、再現試験の完了を遅延時間生成部104に通知する。
【0058】
異常検出部106は、タスク実行部101がFD番号の解放を行った際の、ネットワークタスクのタスクID及びFD番号を取得する。そして、異常検出部106は、履歴取得部102が有するFD番号獲得テーブル120を検索して、タスクIDとFD番号との組が一致するか否かを判定する。ここで、いずれのネットワークタスクにもFD番号が割り当てられていない場合、異常検出部106は、一致と判定する。
【0059】
タスクIDとFD番号との組が一致しない場合、異常検出部106は、二重解放の障害が発生したと判定する。そして、異常検出部106は、異常発生の通知を報知部107及び異常時処理実行部108に通知する。
【0060】
これに対して、タスクIDとFD番号との組が一致した場合、異常検出部106は、履歴取得部102が有するFD番号獲得テーブル120におけるFD番号が解放されたネットワークタスクのFD番号、呼び出し情報、FD番号獲得処理時間及びFD番号解放処理時間を初期化する。
【0061】
報知部107は、異常発生の通知を異常検出部106から受ける。次に、報知部107は、履歴取得部102が有するFD番号獲得テーブル120からFD番号の解放が行われたネットワークタスクのタスクID、呼び出し情報及び時間情報を取得する。そして、報知部107は、異常発生の通知とともにFD番号の解放が行われたネットワークタスクのタスクID、呼び出し情報及び時間情報をストレージ装置1の管理者に報知する。例えば、報知部107は、ストレージ装置1に接続されたモニタなどに異常発生を通知するメッセージを表示させるとともに、FD番号の解放が行われたネットワークタスクのタスクID、呼び出し情報及び時間情報を表示させることで管理者への報知を行う。
【0062】
異常時処理実行部108は、異常発生の通知を異常検出部106から受ける。そして、異常時処理実行部108は、ストレージ装置1でパニック処理を実行し、ダンプを保存させるとともにストレージ装置1をシャットダウンする。
【0063】
図5は、実施例1に係る再現試験の概要を説明するための図である。ここでは、ネットワークタスクA及びBが処理される場合で説明する。期間111では、タスク実行部101は、先にFD番号取得要求を番号管理テーブル110に行い、未使用番号の#1をFD番号として獲得する。その後、タスク実行部101は#1のFD番号の解放要求を番号管理テーブル110に行い解放完了応答を受信することで#1が解放される。次に、タスク実行部101は、ネットワークタスクBに対して、同様に、#1をFD番号として確保した後に解放を行う。さらにその後に、タスク実行部101は、二重解放処理P1を実行することで、#1のFD番号の解放を行う。この場合、既にネットワークタスクBにはFD番号として#1が割り当てられていないので、二重解放の障害は発生しない。
【0064】
そこで、タスク実行部101は、FD番号獲得後の遅延時間の付加の指示を再現制御部105から受けて、期間112のネットワークタスクAに対するFD番号の確保時に未使用番号である#1の応答を番号管理テーブル110から受ける前に遅延時間Tを付加する。遅延時間T経過後、タスク実行部101は、未使用番号の#1をネットワークタスクAのFD番号として獲得する。その後、タスク実行部101は#1のFD番号の解放要求を番号管理テーブル110に行い解放完了応答を受信することで#1が解放される。次に、タスク実行部101は、ネットワークタスクBに対して、同様に、#1をFD番号として確保する。ここで、遅延時間が与えられてネットワークタスクAの二重解放処理P2を実行するタイミングがずれるため、タスク実行部101は、ネットワークタスクBに獲得した#1のFD番号の解放を行う前に、二重解放処理P2を実行し#1のFD番号の解放を行う。この場合、ネットワークタスクBに割り当てられた#1のFD番号が解放されるため、二重解放の障害が発生する。
【0065】
このように、遅延時間を与えることで、遅延を与えられたネットワークタスクの処理の実行タイミングがずらされて、二重解放の障害発生が再現される可能性が向上する。
【0066】
次に、
図6を参照して、基礎値の取得処理の流れを説明する。
図6は、基礎値の取得処理のフローチャートである。
【0067】
ストレージ装置1が電源オンされる(ステップS101)。そして、ストレージ装置1は、正常起動を完了する(ステップS102)。
【0068】
次に、タスク実行部101は、ネットワークタスクを起動する(ステップS103)。この場合、入力される要求に応じて複数のネットワークタスクが順次起動される。
【0069】
次に、タスク実行部101は、ネットワークタスクのFD番号を獲得する。履歴取得部102は、FD番号の獲得が行われたネットワークタスクのFD番号獲得時間を取得する(ステップS104)。
【0070】
次に、タスク実行部101は、ネットワークタスクの処理を実施する(ステップS105)。
【0071】
その後、タスク実行部101は、ネットワークタスクの処理を完了する(ステップS106)。
【0072】
次に、タスク実行部101は、ネットワークタスクのFD番号を解放する。履歴取得部102は、FD番号解放処理時間を取得する(ステップS107)。
【0073】
次に、履歴取得部102は、ネットワークタスクのFD番号獲得処理時間及びFD番号解放処理時間の平均値、最大値及び最頻値を更新する(ステップS108)。
【0074】
その後、履歴取得部102は、予め決められた計測時間が経過したか否かを判定する(ステップS109)。計測時間が経過していない場合(ステップS109:否定)、処理は、ステップS103へ戻る。
【0075】
これに対して、計測時間が経過した場合(ステップS109:肯定)、履歴取得部102は、基礎値の取得処理を終了する。
【0076】
ここで、
図6のステップS103~S109の処理は、ネットワークタスク毎に実行される。
【0077】
次に、
図7を参照して、再現試験の全体的な流れについて説明する。
図7は、実施例1に係る再現試験のフローチャートである。
【0078】
再現制御部105は、二重解放による障害発生の再現試験の開始条件を満たしたか否かを判定する(ステップS201)。開始条件が満たされていない場合(ステップS201:否定)、再現制御部105は、開始条件が満たされるまで待機する。
【0079】
これに対して、開始条件が満たされた場合(ステップS201:肯定)、再現制御部105は、試験マトリクス140を作成する(ステップS202)。
【0080】
タスク実行部101は、各ネットワークタスクを起動する(ステップS203)。
【0081】
再現制御部105は、遅延を与えるネットワークタスクを選択する(ステップS204)。
【0082】
次に、再現制御部105は、選択されていない遅延タイミングの中から、使用する遅延タイミングを選択する(ステップS205)。
【0083】
そして、タスク実行部101、遅延時間生成部104及び再現制御部105は、FD番号獲得処理を実行する(ステップS206)。このFD番号獲得処理については後で詳細に説明する。
【0084】
その後、タスク実行部101は、各ネットワークタスクを実行する(ステップS207)。
【0085】
タスク実行部101は、各ネットワークタスクの処理を完了させる(ステップS208)。
【0086】
その後、タスク実行部101、遅延時間生成部104及び再現制御部105は、FD番号解放処理を実行する(ステップS209)。このFD番号解放処理については、後で詳細に説明する。
【0087】
異常検出部106は、解放されたFD番号及びタスクIDの情報を基にFD番号獲得テーブル120を参照して、二重解放の障害が発生したか否かを判定する(ステップS210)。
【0088】
二重解放の障害が発生した場合(ステップS210:肯定)、異常検出部106は、障害発生の通知を報知部107及び異常時処理実行部108に通知する。報知部107は、障害発生の通知を受けて、FD番号獲得テーブル120に登録された、タスクID、FD番号及び読み出し情報を管理者に報知する(ステップS211)。
【0089】
さらに、異常時処理実行部108は、障害発生の通知を受けて、パニック処理を実行し、ダンプ情報を保存するとともにストレージ装置1をシャットダウンさせる(ステップS212)。
【0090】
一方、二重解放の障害が発生していない場合(ステップS210:否定)、遅延時間生成部104は、遅延付与の対象とするネットワークタスクに対して選択した基礎値を用いた選択した遅延時間の生成方法での遅延時間の生成が全て完了したかを判定する(ステップS213)。遅延付与の対象とするネットワークタスクに対して選択した基礎値を用いた選択した遅延時間の生成方法での遅延時間の生成が全て完了した場合、遅延時間生成部104は、試験マトリクス120の該当欄に完了を表す情報を登録する。そして、遅延時間生成部104は、試験マトリクス140を参照し、選択された遅延タイミングでの遅延対象のネットワークタスクに関する遅延付与が全て完了したか否かを判定する。選択された遅延タイミングでの遅延対象のネットワークタスクに関する遅延付与が全て完了していない場合(ステップS213:否定)、処理はステップS206へ戻る。
【0091】
これに対して、選択された遅延タイミングでの遅延対象のネットワークタスクに関する遅延付与が全て完了した場合(ステップS213:肯定)、遅延時間生成部104は、選択した遅延タイミングにおける遅延時間の生成の完了を再現制御部105に通知する。再現制御部105は、全ての遅延タイミングで遅延付与による再現試験を実行したか否かを判定する(ステップS214)。遅延付与による再現試験を実行していない遅延タイミングが残っている場合(ステップS214:否定)、処理は、ステップS205へ戻る。
【0092】
これに対して、全ての遅延タイミングで遅延付与による再現試験が完了した場合(ステップS214:肯定)、再現制御部105は、起動された全てのネットワークタスクについて遅延付与による再現試験を実行したか否かを判定する(ステップS215)。
【0093】
遅延付与による再現試験を実行していないネットワークタスクが残っている場合(ステップS215:否定)、処理は、ステップS204へ戻る。これに対して、起動された全てのネットワークタスクについて遅延付与による再現試験が完了した場合(ステップS215:肯定)、再現制御部105は、遅延付与による再現試験を終了する。
【0094】
次に、
図8を参照して、FD番号獲得処理の流れを説明する。
図8は、FD番号獲得処理のフローチャートである。
図8に示した処理は、
図7におけるステップS206で実行される処理の一例にあたる。
【0095】
タスク実行部101は、起動したネットワークタスクのFD番号を獲得する(ステップS301)。
【0096】
次に、再現制御部105は、FD番号を獲得したネットワークタスクのタスクIDが、選択した遅延を与えるネットワークタスクのタスクIDに一致するか否かを判定する(ステップS302)。タスクIDが一致しない場合(ステップS302:否定)、再現制御部105は、遅延付与を行わずに処理を終了する。
【0097】
これに対して、タスクIDが一致した場合(ステップS302:肯定)、再現制御部105は、選択した遅延タイミングがFD番号の獲得時か否かを判定する(ステップS303)。遅延タイミングがFD番号の解放時の場合(ステップS303:否定)、再現制御部105は、遅延付与を行わずに処理を終了する。
【0098】
これに対して、遅延タイミングがFD番号の獲得時の場合(ステップS303:肯定)、遅延時間生成部104及び再現制御部105は、遅延制御処理を実行する(ステップS304)。
【0099】
次に、
図9を参照して、FD番号解放処理の流れを説明する。
図9は、FD番号獲得処理のフローチャートである。
図9に示した処理は、
図7におけるステップS209で実行される処理の一例にあたる。
【0100】
再現制御部105は、FD番号を獲得したネットワークタスクのタスクIDが、選択した遅延を与えるネットワークタスクのタスクIDに一致するか否かを判定する(ステップS401)。タスクIDが一致しない場合(ステップS401:否定)、再現制御部105は遅延付与を行わず、処理はステップS404へ進む。
【0101】
これに対して、タスクIDが一致した場合(ステップS401:肯定)、再現制御部105は、選択した遅延タイミングがFD番号の解放時か否かを判定する(ステップS402)。遅延タイミングがFD番号の獲得時の場合(ステップS402:否定)、再現制御部105は遅延付与を行わず、処理はステップS404へ進む。
【0102】
これに対して、遅延タイミングがFD番号の魁皇時の場合(ステップS402:肯定)、遅延時間生成部104及び再現制御部105は、遅延制御処理を実行する(ステップS403)。
【0103】
タスク実行部101は、処理が完了したネットワークタスクのFD番号を解放する(ステップS404)。
【0104】
次に、
図10を参照して、遅延制御処理の流れを説明する。
図10は、FD番号獲得処理及びFD番号解放処理における遅延制御処理のフローチャートである。
図10に示した処理は、
図8におけるステップS304及び
図9におけるステップS403で実行される処理の一例にあたる。ここでは、遅延付加する対象として選択されたネットワークタスクを対象ネットワークタスクという。この選択は、例えば、
図7におけるステップS204などで行われる。
【0105】
再現制御部105は、遅延時間の提供を遅延時間生成部104に要求する。遅延時間生成部104は、前回の遅延時間生成から一定期間が経過したか否かを判定する(ステップS501)。ここで、対象ネットワークタスクに対する遅延時間の生成を未だ行っていない場合、遅延時間生成部104は、一定期間が経過したと判定する。前回の遅延時間の生成から一定期間が経過していない場合(ステップS501:否定)、遅延時間生成部104は、ステップS508へ進む。
【0106】
これに対して、前回の遅延時間の生成から一定期間が経過した場合(ステップS501:肯定)、遅延時間生成部104は、試験マトリクス140を参照する。そして、遅延時間生成部104は、対象ネットワークタスクに対して選択した基準値を基にした遅延時間の生成が全て完了したか否かを判定する(ステップS502)。選択した基準値に対して生成していない遅延時間が残っている場合(ステップS502:否定)、遅延時間生成部104は、ステップS504へ進む。
【0107】
これに対して、選択した基準値を基にした遅延時間の生成が全て完了した場合(ステップS502:肯定)、遅延時間生成部104は、基準値の優先度に応じて次の基準値を選択する(ステップS503)。
【0108】
次に、遅延時間生成部104は、対象ネットワークタスクにおける選択した基礎値の値を取得する。そして、遅延時間生成部104は、基礎値を10分の1に分割する(ステップS504)。
【0109】
次に、遅延時間生成部104は、試験マトリクス140を参照して、選択した生成方法を用いた遅延時間の生成が全て完了したか否かを判定する(ステップS505)。選択した生成方法を用いて生成される遅延時間のうち生成されていない遅延時間が存在する場合(ステップS505:否定)、遅延時間生成部104は、ステップS507に進む。
【0110】
これに対して、選択した生成方法を用いた遅延時間の生成が全て完了した場合(ステップS505:肯定)、遅延時間生成部104は、優先度に応じて遅延時間の生成方法を選択する(ステップS506)。
【0111】
遅延時間生成部104は、選択した生成方法にしたがい次の遅延時間を生成する(ステップS507)。そして、遅延時間生成部104は、生成した遅延時間を再現制御部105へ提供する。
【0112】
再現制御部105は、遅延時間生成部104から取得した遅延時間の情報をタスク実行部101に送信し遅延の付加を指示する。タスク実行部101は、再現制御部105からの指示を受けて、遅延付加を実行する(ステップS508)。
【0113】
遅延時間生成部104は、選択した基準値を基にした選択した生成方法による対象ネットワークに対する遅延時間の生成が完了すると、試験マトリクス140の該当欄に完了を表すマークを付加して試験マトリクス140を更新する(ステップS509)。
【0114】
以上に説明したように、本実施例に係るストレージ装置は、遅延時間を変更しつつ、各ネットワークタスクの処理に遅延を付与した二重解放の障害発生の再現試験の実行を繰り返す。これにより、各ネットワークタスクの処理時間を様々に変更した二重解放の障害発生の再現試験を自動で行うことができる。この場合、各ネットワークタスクの処理タイミングが変更されていくため、あるネットワークタスクに対して特定のFD番号が獲得された状態と他のネットワークタスクがその特定のFD番号の二重解放を行うタイミングが重なる状態が発生する確率が向上する。したがって、二重解放の再現性が向上し、障害調査を容易にすることができる。さらに障害調査を容易にすることで、問題解決までの時間を短縮させることができ、コスト削減を図ることができる。
【0115】
また、本実施例では、二重解放の障害発生の再現試験のための履歴情報として収集される情報は、FD番号、呼び出し情報、FD番号獲得処理時間及びFD番号解放処理時間である。トレース情報として通常なるべく多くの情報が収集されるのに比べて、本実施例に係るストレージ装置は、履歴情報として取得する情報を抑えることができ、メモリ上の履歴情報を確保する領域の肥大化を軽減することができる。
【0116】
また、本実施例に係るストレージシステムにおいて、再現試験を行う際のサーバ側の動作は通常動作であるため、再現試験の実施によるストレージシステムの実際の運用への影響を軽減することができる。また、ネットワークタスクの処理時間を変更して二重解放による障害発生の再現性を高めているため、最低2つのネットワークタスクを動作させることで再現試験を行うことができ、試験用にネットワークタスクの多重度を大きく増加させなくてもよい。この点でも、障害調査を容易にすることができる。
【実施例2】
【0117】
次に、実施例2について説明する。本実施例に係るストレージ装置は、ネットワークタスクの処理中に並行してFD番号が獲得されたネットワークタスクの数を用いて、遅延を付与するネットワークタスクとして選択する際の優先度を決定することが実施例1と異なる。本実施例に係るストレージ装置のブロック図も、
図2で表される。以下の説明では、実施例1と同様の各部の動作は説明を省略する。
【0118】
図11は、実施例2に係るFD番号獲得テーブルの一例を表す図である。本実施例に係るFD番号獲得テーブル120は、存在フラグ及び存在数を登録する欄を有する。
【0119】
履歴取得部102は、タスク実行部101により獲得されたFD番号及びFD番号の獲得対象であるネットワークタスクのタスクIDを取得する。そして、履歴取得部102は、取得したタスクIDでFD番号獲得テーブル120を検索する。取得したタスクIDがFD番号獲得テーブル120に存在しなければ、履歴取得部102は、タスクIDをFD番号獲得テーブル120に追加する。
【0120】
そして、履歴取得部102は、FD番号獲得テーブル120における取得したタスクIDに対応する存在フラグを有効にする。これにより、特定のネットワークタスクが処理中か否かがFD番号獲得テーブル120から確認可能となる。さらに、履歴取得部102は、存在数を1つインクリメントする。この時に1つ増える存在数は、自己が動作中であることを表す。
【0121】
さらに、履歴取得部102は、あるネットワークタスクに対してFD番号を取得した際に、FD番号獲得テーブル120において存在フラグが有効である他のネットワークタスクを抽出する。そして、履歴取得部102は、抽出したネットワークタスクの存在数を1つインクリメントする。すなわち、このときに増やされる存在数により、自己が動作中にFD番号を獲得したネットワークタスクの数が把握できる。
【0122】
異常検出部106は、FD番号が解放されると、FD番号が解放されたネットワークタスクのタスクIDを取得する。そして、異常検出部106は、FD番号の解放による二重解放の障害が発生しなければ、取得したタスクIDに対応するFD番号、呼び出し情報、FD番号獲得処理時間、FD番号解放処理時間及び存在数を削除する。さらに、異常検出部106は、存在フラグを無効に設定する。
【0123】
遅延時間生成部104は、遅延時間の提供の要求を再現制御部105から受けると、履歴取得部102が有するFD番号獲得テーブル120に登録された各ネットワークタスクの存在数を取得する。そして、遅延時間生成部104は、存在数の大きい順にネットワークタスクの選択の優先度を決定する。ここで、存在数が同じネットワークタスク同士は、自由に順番に選択される。例えば、遅延時間生成部104は、存在数が同じネットワークタスクの場合、FD番号獲得テーブル120の上から順に選択を行ってもよい。
【0124】
次に、
図12を参照して、本実施例におけるFD番号獲得テーブル120の登録処理の流れについて説明する。
図12は、実施例2におけるFD番号獲得テーブルの登録処理のフローチャートである。
【0125】
タスク実行部101は、起動したネットワークタスクに対してFD番号を獲得する(ステップS601)。
【0126】
次に、タスク実行部101は、獲得したFD番号及びFD番号の獲得対象であるネットワークタスクのタスクIDを履歴取得部102へ通知する。履歴取得部102は、獲得されたFD番号及びFD番号の獲得対象であるネットワークタスクのタスクIDをタスク実行部101から取得する。そして、履歴取得部102は、取得したタスクIDを用いてFD番号獲得テーブル120を検索する(ステップS602)。
【0127】
そして、履歴取得部102は、FD番号獲得テーブル120にFD番号を獲得したネットワークタスクが登録済みか否かを判定する(ステップS603)。FD番号を獲得したネットワークタスクが登録済みの場合(ステップS603:肯定)、履歴取得部102は、ステップS605へ進む。
【0128】
これに対して、FD番号を獲得したネットワークタスクが未登録の場合(ステップS603:否定)、履歴取得部102は、FD番号獲得テーブル120にタスクIDを登録してFD番号を獲得したネットワークタスクの情報を追加する(ステップS604)。
【0129】
次に、履歴取得部102は、取得したタスクIDに対応する存在フラグを有効に設定する(ステップS605)。
【0130】
また、履歴取得部102は、取得したタスクIDに対応する存在数を1つインクリメントする(ステップS606)。
【0131】
次に、履歴取得部102は、FD番号獲得テーブル120から他のネットワークタスクを1つ選択する(ステップS607)。
【0132】
そして、履歴取得部102は、選択したネットワークタスクの存在フラグが有効か否かを判定する(ステップS608)。存在フラグが無効の場合(ステップS608:否定)、履歴取得部608は、ステップS610へ進む。
【0133】
これに対して、存在フラグが有効の場合(ステップS608:肯定)、履歴取得部102は、選択したネットワークタスクの存在数を1つインクリメントする(ステップS609)。
【0134】
その後、履歴取得部102は、全てのネットワークタスクの存在フラグの確認が終了したか否かを判定する(ステップS610)。
【0135】
存在フラグの確認が終了していないネットワークタスクがある場合(ステップS610:否定)、履歴取得部102は、ステップS607へ戻る。これに対して、全てのネットワークタスクの存在フラグの確認が終了した場合(ステップS610:肯定)、履歴取得部102は、取得処理を終了する。
【0136】
履歴取得部102は、以上の処理を、FD番号が新たに獲得される度に実行する。
【0137】
次に、
図13を参照して、本実施例におけるFD番号解放時の動作について説明する。
図13は、実施例2におけるFD番号解放時の動作のフローチャートである。
【0138】
タスク実行部101は、処理が完了したネットワークタスクのFD番号を解放する(ステップS701)。
【0139】
異常検出部106は、解放されたFD番号及びFD番号が解放されたネットワークタスクのタスクIDをタスク実行部101から取得する。そして、異常検出部106は、取得したFD番号及びタスクIDを用いて履歴取得部102が有するFD番号獲得テーブル120を検索する(ステップS702)。
【0140】
そして、異常検出部106は、取得したタスクIDと取得したFD番号との組み合わせに一致する組み合わせが、FD番号獲得テーブル120に登録された組み合わせの中に存在するか否かを判定する(ステップS703)。
【0141】
一致する組み合わせがFD番号獲得テーブル120に存在する場合(ステップS703:肯定)、異常検出部106は、取得したタスクIDに対応するFD番号、呼び出し情報、FD番号獲得処理時間、FD番号解放処理時間及び存在数を初期化する(ステップS704)。
【0142】
さらに、異常検出部106は、取得したタスクIDに対応する存在フラグを無効に設定する(ステップS705)。そして、異常検出部106は、処理を終了する。
【0143】
これに対して、一致する組み合わせがFD番号獲得テーブル120に存在しない場合(ステップS703:否定)、異常検出部106は、異常を検出する(ステップS706)。
【0144】
そして、異常検出部106は、二重解放による障害発生を報知部107に通知する。報知部107は、異常検出部106からの通知を受けて、二重解放による障害発生の障害情報を管理者に通知する(ステップS707)。
【0145】
また、異常検出部106は、二重解放による障害発生を異常時処理実行部108に通知する。異常時処理実行部108は、異常検出部106からの通知を受けて、パニック処理を実行し、ダンプを収集し保管するとともに、ストレージ装置1をシャットダウンする。
【0146】
以上に説明したように、本実施例に係るストレージ装置は、特定のネットワークタスクの処理の実行に並行してFD番号獲得が行われたネットワークタスクの存在数を取得する。そして、本実施例に係るストレージ装置は、存在数の大きさにしたがってネットワークタスクの選択の優先順位を決定する。この場合、あるネットワークタスクの処理が行われている間にFD番号が獲得された他のネットワークタスクの数により、ネットワークタスクの選択の優先順位が決定される。動作中に多くのネットワークタスクが並行して起動された場合、より二重解放による障害が発生する可能性が高くなる。したがって、存在数にしたがってネットワークタスクの選択の優先順位を付けることで、より再現性が向上し、障害調査を容易にすることができる。
【符号の説明】
【0147】
1 ストレージ装置
2 スイッチ
10 ストレージシステム
11 CPU
12 メモリ
13 ディスク
14,15 接続ポート
31,32 サーバ
101 タスク実行部
102 履歴取得部
103 基礎値算出部
104 遅延時間生成部
105 再現制御部
106 異常検出部
107 報知部
108 異常時処理実行部