(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-01
(45)【発行日】2024-07-09
(54)【発明の名称】ファームウェア試験装置、ファームウェア試験方法およびファームウェア試験プログラム
(51)【国際特許分類】
G06F 11/36 20060101AFI20240702BHJP
G06F 3/06 20060101ALI20240702BHJP
【FI】
G06F11/36 188
G06F11/36 192
G06F3/06 304T
(21)【出願番号】P 2020140008
(22)【出願日】2020-08-21
【審査請求日】2023-05-11
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】伊藤 有一
(72)【発明者】
【氏名】紺田 與志仁
【審査官】武田 広太郎
(56)【参考文献】
【文献】特開2008-310752(JP,A)
【文献】特開2015-176430(JP,A)
【文献】国際公開第2015/151239(WO,A1)
【文献】国際公開第2012/137323(WO,A1)
【文献】米国特許第08707104(US,B1)
【文献】中国特許出願公開第106292336(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
G06F 3/06
(57)【特許請求の範囲】
【請求項1】
ストレージ装置のファームウェアを試験するファームウェア試験装置であって、
前記ストレージ装置の構成を取得する構成取得部と、
前記構成取得部が取得した前記ストレージ装置の構成に対応する試験対象の機能の実行により呼び出される関数を関数リストから選択する関数選択部と、
関数単位に分割される前記試験対象の機能を前記ストレージ装置に実行させる実行制御部と、
前記試験対象の機能の実行時に前記ストレージ装置により呼び出される関数のそれぞれに疑似故障を注入する疑似故障注入部と、
関数毎の前記疑似故障の注入に応じてリカバリ処理を実行する前記ストレージ装置が正常に復旧するか否かを判定する復旧判定部と
を有するファームウェア試験装置。
【請求項2】
前記疑似故障注入部は、複数回の前記試験対象の機能の実行毎に、前記関数選択部が選択した関数のうち、前記疑似故障を注入していない関数の1つに前記疑似故障を注入し、
前記復旧判定部は、前記リカバリ処理を実行する前記ストレージ装置が正常に復旧した場合、前記関数選択部が選択する関数の全てに対して前記疑似故障が注入されるまで前記試験対象の機能を前記ストレージ装置に繰り返し実行させる指示を前記実行制御部に発行し、前記リカバリ処理を実行する前記ストレージ装置が正常に復旧しない場合、エラーを判定する
請求項1に記載のファームウェア試験装置。
【請求項3】
前記疑似故障注入部は、前記ストレージ装置により呼び出される関数の1つにブレークポイントを設定し、前記試験対象の機能の実行時に前記ブレークポイントで実行が停止された関数が使用するデータを不正値に置き換えて関数の実行を再開させることで、前記疑似故障を注入する
請求項2に記載のファームウェア試験装置。
【請求項4】
前記構成取得部が取得した構成に対応して前記試験対象の複数の機能がある場合、前記実行制御部は、前記試験対象の複数の機能を前記ストレージ装置に順次実行させ、
前記疑似故障注入部は、前記試験対象の複数の機能の実行毎に、前記ストレージ装置により呼び出される関数のそれぞれに疑似故障を注入し、
前記復旧判定部は、前記試験対象の機能毎に、関数毎の前記リカバリ処理から前記ストレージ装置が正常に復旧するか否かを判定する
請求項1ないし請求項3のいずれか1項に記載のファームウェア試験装置。
【請求項5】
ストレージ装置のファームウェアを試験するファームウェア試験装置が実行するファームウェア試験方法であって、
前記ストレージ装置の構成を取得し、
取得した前記ストレージ装置の構成に対応する試験対象の機能の実行により呼び出される関数を関数リストから選択し、
関数単位に分割される前記試験対象の機能を前記ストレージ装置に実行させ、
前記試験対象の機能の実行時に前記ストレージ装置により呼び出される関数のそれぞれに疑似故障を注入し、
関数毎の前記疑似故障の注入に応じてリカバリ処理を実行する前記ストレージ装置が正常に復旧するか否かを判定する
ファームウェア試験方法。
【請求項6】
ストレージ装置のファームウェアを試験するファームウェア試験装置が実行するファームウェア試験プログラムであって
前記ストレージ装置の構成を取得し、
取得した前記ストレージ装置の構成に対応する試験対象の機能の実行により呼び出される関数を関数リストから選択し、
関数単位に分割される前記試験対象の機能を前記ストレージ装置に実行させ、
前記試験対象の機能の実行時に前記ストレージ装置により呼び出される関数のそれぞれに疑似故障を注入し、
関数毎の前記疑似故障の注入に応じてリカバリ処理を実行する前記ストレージ装置が正常に復旧するか否かを判定する
ファームウェア試験プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ファームウェア試験装置、ファームウェア試験方法およびファームウェア試験プログラムに関する。
【背景技術】
【0002】
例えば、サーバ等の情報処理装置のRAS(Reliability, Availability and Serviceability)評価を実施する試験装置は、予め設定されたタイミングで情報処理装置に疑似故障を発生させる故障発生コマンドを発行する。試験装置は、疑似故障が発生しない場合、故障発生コマンドの発行タイミングを調整することで、疑似故障の発生頻度を向上させる(例えば、特許文献1参照)。
【0003】
また、シミュレータによる組み込みシステムの検証方法において、利用者が入力するソフトウェアの関数呼び出しのタイミングで故障を注入することで、システムの動作検証を実施する手法が提案されている(例えば、特許文献2参照)。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2015-176430号公報
【文献】国際公開第2014/196059号
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、企業で取り扱われるデータは近年急増しており、ストレージ装置の需要は増加傾向にある。例えば、ミッションクリティカルなストレージ装置においては、運用中に不具合が発生し、再起動された場合にもデータ等を消失することなく正常に復旧できる機能が求められている。一方、運用中のストレージ装置の処理の条件およびタイミングが複雑化する傾向にあり、さらに、システムトラブルが及ぼす顧客への影響度が年々高まっている。このため、ストレージ装置の開発工程において、短い試験時間でRAS機能を評価する試験を網羅的に実施し、RASを向上することが求められている。
【0006】
1つの側面では、本発明は、既知の試験時間で試験を網羅的に実施し、ストレージ装置のRASを向上することを目的とする。
【課題を解決するための手段】
【0007】
一つの観点によれば、ファームウェア試験装置は、ストレージ装置のファームウェアを試験するファームウェア試験装置であって、前記ストレージ装置の構成を取得する構成取得部と、前記構成取得部が取得した前記ストレージ装置の構成に対応する試験対象の機能の実行により呼び出される関数を関数リストから選択する関数選択部と、関数単位に分割される前記試験対象の機能を前記ストレージ装置に実行させる実行制御部と、前記試験対象の機能の実行時に前記ストレージ装置により呼び出される関数のそれぞれに疑似故障を注入する疑似故障注入部と、関数毎の前記疑似故障の注入に応じてリカバリ処理を実行する前記ストレージ装置が正常に復旧するか否かを判定する復旧判定部とを有する。
【発明の効果】
【0008】
1つの側面では、本発明は、既知の試験時間で試験を網羅的に実施し、ストレージ装置のRASを向上することができる。
【図面の簡単な説明】
【0009】
【
図1】一実施形態におけるファームウェア試験装置を含む試験システムの一例を示すブロック図である。
【
図2】
図1のファームウェア試験装置によるストレージ装置のファームウェアの試験の一例を示す説明図である。
【
図3】別の実施形態におけるファームウェア試験装置を含む試験システムの一例を示すブロック図である。
【
図4】
図3のモニタ制御部およびテスト処理部の一例を示すブロック図である。
【
図5】
図3のファームウェア試験装置によるストレージ装置のファームウェアの試験の一例を示す説明図である。
【
図6】
図3のファームウェア試験装置によるストレージ装置のファームウェアの試験の一例を示すフロー図である。
【
図7】他のファームウェア試験装置によるストレージ装置の試験の一例を示す説明図である。
【発明を実施するための形態】
【0010】
以下、図面を用いて実施形態が説明される。各図面において、同一構成部分には同一符号を付し、重複した説明を省略する場合がある。
【0011】
図1は、一実施形態におけるファームウェア試験装置を含む試験システムの一例を示す。
図1に示す試験システムTSYSは、ファームウェア試験装置10と、ファームウェア試験装置10により試験されるストレージ装置20とを有する。
【0012】
ファームウェア試験装置10は、構成取得部11、関数選択部12、実行制御部13、疑似故障注入部14、復旧判定部15および関数リスト16を有する。構成取得部11は、ファームウェアの試験を実行するストレージ装置20からストレージ装置20の構成情報を取得する。例えば、構成情報は、ストレージ装置20の型式、搭載するメモリの仕様および容量、搭載するディスクの記憶容量等を含む。
【0013】
関数選択部12は、構成取得部11が取得した構成情報に基づいて試験対象の機能を抽出し、抽出した試験対象の機能の実行によりストレージ装置20から呼び出される関数を関数リスト16から選択する。関数リスト16は、試験対象となり得る複数のストレージ装置により実施可能な複数の機能のそれぞれの実行時に呼び出される複数の関数をリストとして保持する。
【0014】
実行制御部13は、関数単位に分割される試験対象の機能をストレージ装置20に実行させるために、試験対象の機能の実行指示をストレージ装置20に発行する。疑似故障注入部14は、ストレージ装置20が試験対象の機能を実行する場合に、ストレージ装置20が実行するファームウェアにより呼び出される関数のそれぞれに疑似故障を注入する。例えば、疑似故障注入部14は、複数回の試験対象の機能の実行毎に、関数選択部12が選択した関数の1つであって、疑似故障を注入していない関数に疑似故障を注入する。例えば、ストレージ装置20のRAS機能は、各関数への疑似故障の注入による不正な動作を検出し、リカバリ処理を実行する。
【0015】
復旧判定部15は、疑似故障注入部14により関数毎に注入される疑似故障に応じてリカバリ処理を実行するストレージ装置20から実行結果を受信し、ストレージ装置20が正常に復旧するか否かを判定する。復旧判定部15は、試験対象の機能の実行により呼び出される関数の1つへの疑似故障の注入によるリカバリ処理からストレージ装置20が正常に復旧する場合、次の関数に疑似故障を注入するために、実行制御部13に試験対象の機能の実行指示を発行させる。
【0016】
すなわち、復旧判定部15は、リカバリ処理を実行するストレージ装置20が正常に復旧した場合、関数選択部12が選択する全ての関数に対して疑似故障が注入されるまで試験対象の機能を実行制御部13に繰り返し実行させる。復旧判定部15は、試験対象の機能の実行により呼び出される各関数への疑似故障の注入による全てのリカバリ処理からストレージ装置20が正常に復旧する場合、パスを判定する。
【0017】
一方、復旧判定部15は、試験対象の機能の実行により呼び出される関数のいずれかへの疑似故障の注入によるリカバリ処理からストレージ装置20が正常に復旧しない場合、フェイルを判定する。ファームウェア試験装置10によりフェイルが判定された場合、リカバリ処理から正常に復旧しない原因を検出するためのストレージ装置20のファームウェアのデバッグが実施される。そして、デバッグにより不具合点が解消されたファームウェアを使用して、上述したファームウェア試験装置10による試験が再び実施される。
【0018】
図2は、
図1のファームウェア試験装置10によるストレージ装置20のファームウェアの試験の一例を示す。
図2に示す試験対象の機能は、順次に実行される4つの処理(処理1~処理4)を含む。4つの処理を含む試験対象の機能は、構成取得部11により取得されたストレージ装置20の構成情報に基づいて選択される。
【0019】
関数選択部12は、各処理の実行により呼び出される関数を、疑似故障を注入する関数として関数リスト16から順次選択する。処理1は、関数1、関数2を使用して実行される。処理2は、関数3を使用して実行される。関数3は、処理4、処理5、処理6を使用して実行される。関数4は、処理7、処理8を使用して実行される。
【0020】
まず、実行制御部13は、試験対象の機能の実行をストレージ装置20に指示する。ストレージ装置20は、指示にしたがって試験対象の機能を処理1の関数1から順に開始する。疑似故障注入部14は、関数1が呼び出されたことに基づいて、ストレージ装置20に疑似故障を注入する。
【0021】
ここで、疑似故障注入部14が疑似故障を注入する前に、例えば、実行制御部13は、ストレージ装置20により呼び出される最初の関数1にブレークポイントを設定する。そして、疑似故障注入部14は、試験対象の機能の実行時に関数1に設定されたブレークポイントでファームウェアが停止したときに、関数1が使用するデータを不正値に置き換えて関数1の実行を再開させることで、疑似故障を注入する。例えば、データの不正値への置き換えは、関数1で使用されるレジスタの値を変更することで行われる。
【0022】
ストレージ装置20は、疑似故障の注入により、ファームウェアによる不正な処理を検出して再起動され、通常モードから復旧モード(メンテナンスモード)に移行する。ストレージ装置20は、復旧モードにおいてリカバリ処理(復旧処理)を実行し、リカバリ処理が正常に終了した場合、通常モードに移行す。ストレージ装置20は、リカバリ処理が正常に終了したことを実行結果(パス)としてファームウェア試験装置10に通知する。
【0023】
復旧判定部15は、実行結果(パス)を受信した場合、次の関数に疑似故障を注入するために、実行制御部13に試験対象の機能の実行指示を発行させる。疑似故障注入部14は、実行制御部13が試験対象の機能の実行をストレージ装置20に指示する前に、ストレージ装置20により呼び出される2番目の関数2にブレークポイントを設定する。
【0024】
そして、上述と同様に、実行制御部13は、2回目の試験対象の機能の実行をストレージ装置20に指示する。ストレージ装置20は、指示にしたがって試験対象の機能を処理1の関数1から順に開始する。そして、ストレージ装置20のファームウェアが関数2を呼び出したときに発生するブレークに基づいて、疑似故障注入部14により疑似故障が注入される。
【0025】
ストレージ装置20は、疑似故障の注入により再起動されて復旧モードに移行し、リカバリ処理を実行する。そして、リカバリ処理が正常に終了した場合、ファームウェア試験装置10は、3番目の関数3に疑似故障を注入するために、ストレージ装置20に試験対象の機能を実行させる。以上の処理が、最後の関数8に疑似故障が注入されるまで繰り返される。
【0026】
そして、復旧判定部15は、関数1から関数8の各々への疑似故障の注入に基づくリカバリ処理がすべて正常に終了した場合、試験対象の機能の実行に対応するRAS機能のパスを判定する。一方、復旧判定部15は、関数1から関数8の各々への疑似故障の注入に基づくリカバリ処理のいずれかが異常終了した場合、試験対象の機能の実行に対応するRAS機能のフェイルを判定する。この場合、ストレージ装置20のファームウェアのデバッグが実施される。
【0027】
図2に示すように、試験対象の機能に含まれる複数の処理の各々は、少なくとも1つの関数を含む。このため、試験対象の機能に含まれる複数の処理の各々の実行時、少なくとも1回の疑似故障が注入され、少なくとも1回のリカバリ処理が実行される。これにより、RAS機能の評価試験を網羅的に実行することができる。また、試験対象の機能の実行に使用される関数の数に対応する数の試験を実行することで、RAS機能の評価試験が完了する。これにより、RAS機能の評価試験の網羅的な実行を、既知の試験時間で完了することができる。
【0028】
以上、この実施形態では、試験対象の機能で使用される複数の関数の各々に疑似故障を順次注入して試験を実行することでストレージ装置20のRAS機能を評価する試験を網羅的に実施することができる。複数の関数のそれぞれに1回ずつ疑似故障を注入すればよいため、既知の試験時間で試験を網羅的に実施することができる。この結果、ストレージ装置20のRASを向上することができる。
【0029】
疑似故障の注入は、各関数に対応するファームウェアの所定の位置にブレークポイントを設定し、ブレークポイントで実行が停止された関数が使用するデータを不正値に置き換えることでえ、行われる。これにより、ファームウェア試験装置10に搭載される既存のデバッグ機能を利用して、ストレージ装置20のRAS機能を評価する試験を網羅的に実施することができる。
【0030】
図3は、別の実施形態におけるファームウェア試験装置を含む試験システムの一例を示す。
図1および
図2で説明した要素と同様の要素については、詳細な説明は省略する。
図3に示す試験システムTSYSは、ファームウェア試験装置100およびコンソール200と、ファームウェア試験装置100により試験されるストレージ装置300とを有する。
【0031】
ファームウェア試験装置100は、CPU110およびメモリ140を有する。ファームウェア試験装置100は、CPU110およびメモリ140以外に、図示しないPCH(Platform Controller Hub)、PCI(Peripheral Component Interconnect)スイッチおよびドライブインタフェース等を有してもよい。
【0032】
CPU110、メモリ140、PCH、PCIスイッチおよびドライブインタフェースは、ストレージ装置300動作を制御するコントローラとして機能する。なお、2つのコントローラが冗長に搭載され、一方のコントローラをメインで動作させ、他方のコントローラをサブで動作させてもよい。
【0033】
例えば、CPU110は、ファームウェア試験プログラムを実行することで、モニタ制御部120およびテスト処理部130の機能を実現する。すなわち、CPU110は、ファームウェア試験プログラムの実行により実現されるモニタ制御部120およびテスト処理部130により、ファームウェア試験方法を実現する。モニタ制御部120およびテスト処理部130については、
図4で説明する。
【0034】
なお、モニタ制御部120およびテスト処理部130は、ソフトウェアでなくハードウェアで実現されてもよい。この場合、CPU110の代わりにFPGA(Field-Programmable Gate Array)等のデバイスがファームウェア試験装置100に搭載される。そして、モニタ制御部120およびテスト処理部130の機能を実現する回路がFPGAに実装される。
【0035】
メモリ140は、ファームウェア試験プログラム、関数リストおよび各種パラメータをそれぞれ記憶する領域150、160、170を有する。以下では、領域150、160、170にそれぞれ記憶されるファームウェア試験プログラム、関数リストおよび各種パラメータは、それぞれファームウェア試験プログラム150、関数リスト160および各種パラメータ170とも称される。
【0036】
関数リスト160は、
図1の関数リスト16と同様に、試験対象となり得る複数のストレージ装置が実施可能な複数の機能のそれぞれの実行により呼び出される複数の関数を保持する。各種パラメータ170は、各関数に設定されるブレークポイントによりファームウェアが停止したときに不正値に書き換えるレジスタの情報等である。
【0037】
コンソール200は、ファームウェア試験装置100に接続される。ファームウェア試験装置100の操作は、例えば、コマンドラインのインタフェースにより、コンソール200を介して行われる(標準入力)。ファームウェア試験装置100によりストレージ装置300に設定されたブレークポイント等の情報は、コンソール200に表示される(標準出力)。例えば、コンソール200によるファームウェア試験装置100の操作は、自動的に行われる。
【0038】
ストレージ装置300は、複数の機能を実行可能である。各機能は、複数の処理(処理A、処理B、処理C、...)を順次実行することで実現される。各処理は、少なくとも1つの関数(関数1、関数2、関数3等)を含む。
【0039】
ァームウェア試験装置100の機能は、上述した実施形態と同様である。例えば、ファームウェア試験装置100は、ファームウェアの試験を実行するストレージ装置300からストレージ装置300の構成情報を取得する。ファームウェア試験装置100は、ストレージ装置300のファームウェアの試験において、ストレージ装置300に試験対象の機能を実行させる前に、試験するファームウェアにおいて試験対象の関数の1つが呼び出される位置にブレークポイントを設定する。ファームウェア試験装置100は、試験対象の機能の実行を開始し、ブレークポイントで機能の実行を停止したストレージ装置300からブレークの通知を受信する。
【0040】
そして、ファームウェア試験装置100は、ブレークの通知に基づいて、ストレージ装置300に疑似故障を注入する。疑似故障の注入は、ブレークした関数で使用するレジスタが保持するデータを不正値に書き換えることで行われる。なお、ブレークポイントの設定および不正値の指定は、コンソール200によりコマンドラインのインタフェースを使用して自動的に行われる。ブレークの通知を示す情報は、標準出力を介してコンソール200に表示されるため、オペレータにより視認可能である。
【0041】
図4は、
図3のモニタ制御部120およびテスト処理部130の一例を示す。モニタ制御部120は、オペレータ操作処理部121、装置構成取得処理部122、メッセージ出力処理部123およびテストスケジューラ124を有する。テスト処理部130は、関数選択処理部131、ブレークポイント処理部132、試験機能有効化処理部133、疑似故障注入処理部134および装置状態確認処理部135を有する。
【0042】
装置構成取得処理部122は、構成取得部11の一例である。関数選択処理部131は、関数選択部12の一例である。テストスケジューラ124は、実行制御部13の一例である。疑似故障注入処理部134は、疑似故障注入部14の一例である。装置状態確認処理部135は、復旧判定部15の一例である。
【0043】
オペレータ操作処理部121は、ストレージ装置300のファームウェアによるRAS機能を評価するオペレータによるコンソール200の操作を検出し、検出した操作をテストスケジューラ124等に出力する。装置構成取得処理部122は、オペレータからの指示に基づいて、ファームウェア試験装置100に接続された試験対象のストレージ装置300の構成情報等を取得する。
【0044】
メッセージ出力処理部123は、テストスケジューラ124およびテスト処理部130からのメッセージまたはテスト結果等の収集し、収集した情報をコンソール200および外部記憶媒体に出力する。テストスケジューラ124は、ストレージ装置300のファームウェアを試験するために、テスト処理部130の各処理部の実行を制御する。
【0045】
関数選択処理部131は、装置構成取得処理部122が取得した装置構成に基づいて、試験対象の機能を決定し、決定した試験対象の機能で使用する関数を含む関数を選択する。ブレークポイント処理部132は、関数リスト160に含まれる関数の情報に基づいて、試験対象の機能毎に、試験対象の機能で使用する関数の1つを選択する。そして、ブレークポイント処理部132は、ストレージ装置300のファームウェアにおいて、選択した関数が呼び出される位置にブレークポイントを設定する。
【0046】
試験機能有効化処理部133は、ストレージ装置300において試験対象の機能を有効化する。疑似故障注入処理部134は、ブレークポイントで実行が停止された関数で使用するデータを不正値に書き換えることで、ストレージ装置300に疑似故障を注入する。装置状態確認処理部135は、疑似故障の注入によりストレージ装置300のRAS機能が実行するリカバリ処理の振る舞いの妥当性を確認する。
【0047】
図5は、
図3のファームウェア試験装置100によるストレージ装置300のファームウェアの試験の一例を示す。
図2と同様の動作については、詳細な説明は省略する。
図5に示す動作は、テストスケジューラ124による制御に基づいて、テスト処理部130により実行される。
図5に示す試験対象の機能は、例えば、データのコピー機能であり、ストレージ装置300が有する複数の試験対象の機能の1つである。コピー機能は、順次に実行される5つの処理(セッション取得処理、リード処理、コピー選択処理、転送処理およびライト処理)を含む。試験対象の機能は、装置構成取得処理部122により取得されたストレージ装置20の構成情報に基づいて、テストスケジューラ124により選択される。
【0048】
セッション取得処理は、関数1、関数2を使用して実行される。リード処理は、関数3を使用して実行される。コピー選択処理は、関数4、関数5、関数6を使用して実行される。転送処理は、関数7、関数8を使用して実行される。ライト処理は、関数9、関数10を使用して実行される。例えば、コピー選択処理で使用される関数4、関数5、関数6のそれぞれは、LUN(Logical Unit Number)コンカチネーションの分割チェック、データのコピー先の世代チェックおよびステータス変更の排他制御等を実行する関数がある。
【0049】
この実施形態では、
図2と同様に、ブレークポイント処理部132より、試験対象の機能で使用する関数1-関数10のいずれかにブレークポイントが設定された後、テストスケジューラ124により、試験対象の機能の実行がストレージ装置20に指示される。なお、試験対象の機能の実行が指示される前に、試験機能有効化処理部133により、試験対象の機能が有効化される。
【0050】
そして、疑似故障注入処理部134は、試験対象の機能の実行時に、ブレークポイントが設定された関数の実行によりファームウェアが停止したときに、ブレークポイントが設定された関数で使用されるデータを不正値に置き換える。
【0051】
ストレージ装置300は、疑似故障の注入により、ファームウェアによる不正な処理を検出して再起動され、通常モードから復旧モード(メンテナンスモード)に移行する。ストレージ装置300は、復旧モードにおいてリカバリ処理(復旧処理)を実行し、リカバリ処理が正常に終了した場合、通常モードに移行する。リカバリ処理が正常に終了したことが装置状態確認処理部135により確認された場合、ファームウェア試験装置100は、ストレージ装置300に試験対象の機能を再び実行させる。
【0052】
そして、ファームウェア試験装置100は、次の関数に疑似故障を注入して、リカバリ処理が正常に終了するか否かを判定する。ファームウェア試験装置100は、試験対象の機能で使用する全ての関数1-関数10の各々への疑似故障の注入に基づくリカバリ処理がすべて正常に終了した場合、試験対象の機能の実行に対応するRAS機能のパスを判定する。
【0053】
一方、ファームウェア試験装置100は、関数1-関数10の各々への疑似故障の注入に基づくリカバリ処理のいずれかが異常終了した場合、試験対象の機能の実行に対応するRAS機能のフェイルを判定する。この場合、ストレージ装置300のファームウェアのデバッグが実施された後、
図5に示すファームウェアの試験が再び実行される。以上の動作により、上述した実施形態と同様に、既知の試験時間でRAS機能を評価する試験を網羅的に実行することができる。
【0054】
図6は、
図3のファームウェア試験装置によるストレージ装置300のファームウェアの試験の一例を示す。例えば、
図6は、ファームウェア試験装置100が実行するファームウェア試験方法の一例を示し、ファームウェア試験装置100が実行するファームウェア試験プログラムの一例を示す。ストレージ装置300が複数の試験対象の機能を有する場合、
図6に示す動作試験は、試験対象の機能毎に実施される。
【0055】
まず、ステップS10において、関数選択処理部131は、ストレージ装置300の構成および試験対象の機能に合わせて、試験対象の機能で使用する関数を関数リスト160から読み込む。次に、ステップS12において、関数選択処理部131は、試験対象の機能で実行される最初の処理(
図5ではセッション取得処理)で読み出される最初の関数1を選択する。
【0056】
次に、ステップS14において、ブレークポイント処理部132は、関数選択処理部131が選択した関数のブレークポイントを設定する。次に、ステップS16において、試験機能有効化処理部133により試験対象の機能を有効化された後、テストスケジューラ124は、ストレージ装置300に試験対象の機能を実行させる。
【0057】
次に、ステップS18において、ブレークポイント処理部132は、ブレークポイントが設定された関数がファームウェアにより呼び出されることでブレークした場合、処理をステップS20に移行する。ブレークポイント処理部132は、選択した関数でブレークが発生するまでステップS18の処理を繰り返す。
【0058】
ステップS20において、疑似故障注入処理部134は、ブレークの発生に基づいて、疑似故障を注入する。次に、ステップS22において、装置状態確認処理部135は、疑似故障の注入により再起動したストレージ装置300のファームウェアが実行するリカバリ処理が正常に終了したか否かを判定する。リカバリ処理が正常に終了し、所定の時間内に復旧モードから通常モードに自動復旧できた場合、処理はステップS26に移行される。リカバリ処理正常に終了せず、所定の時間内に復旧モードから通常モードに自動復旧できなかった場合、処理はステップS24に移行される。
【0059】
ステップS24において、装置状態確認処理部135は、リカバリ処理が正常に終了できないエラーを検出し、
図6に示す試験を終了する。リカバリ処理が正常に終了できないエラーが検出された場合、例えば、ファームウェア試験装置100を使用してストレージ装置20のファームウェアのデバッグが実施される。
【0060】
ステップS26において、関数選択処理部131は、疑似故障が注入された関数が、試験対象の機能で使用される最後の関数である場合、試験対象の機能の実行に対応するRAS機能のパスを判定し、
図6に示す試験を終了する。関数選択処理部131は、疑似故障が注入された関数が、試験対象の機能で使用される最後の関数でない場合、ステップS28に以降する。次に、ステップS28において、関数選択処理部131は、試験対象の機能で使用される次の関数を選択し、処理をステップS14に移行する。
【0061】
以上、
図3から
図6に示す実施形態においても、
図1および
図2に示す実施形態と同様の効果を得ることができる。例えば、試験対象の機能で使用される複数の関数の各々に疑似故障を順次注入して試験を実行することで既知の試験時間で試験を網羅的に実施することができる。この結果、ストレージ装置300のRASを向上することができる。
【0062】
さらに、この実施形態では、複数の試験対象の機能毎に、関数の1つに疑似故障を注入するファームウェア試験装置を実行する。これにより、ストレージ装置300が複数の試験対象の機能を有する場合にも、既知の試験時間で試験を網羅的に実施することができ、ストレージ装置300のRASを向上することができる。
【0063】
図7は、他のファームウェア試験装置によるストレージ装置の試験の一例を示す。
図5と同様の動作については、詳細な説明は省略する。
図7に示す試験を実行するファームウェア試験装置は、所定の時間間隔で疑似故障を注入する。
【0064】
この場合、例えば、リード処理に使用される関数3には、疑似故障が注入されないため、リード処理に対するRAS機能の評価が実施されない。また、コピー選択処理に使用する関数6およびライト処理に使用する関数9には、疑似故障が注入されない。このため、コピー選択処理およびライト処理の一部については、RAS機能の評価が実施されない。
【0065】
図7おいて、全ての関数に疑似故障を注入するためには、例えば、関数3、関数6、関数9に疑似故障が注入されるまで、
図7に示す動作を繰り返し実施しなくてはならず、試験に掛かる時間を見積もることができない。したがって、
図7に示す試験手法では、既知の試験時間で試験を網羅的に実施することができない。
【0066】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【0067】
10 ファームウェア試験装置
11 構成取得部
12 関数選択部
13 実行制御部
14 疑似故障注入部
15 復旧判定部
16 関数リスト
20 ストレージ装置
100 ファームウェア試験装置
110 CPU
120 モニタ制御部
121 オペレータ操作処理部
122 装置構成取得処理部
123 メッセージ出力処理部
124 テストスケジューラ
130 テスト処理部
131 関数選択処理部
132 ブレークポイント処理部
133 試験機能有効化処理部
134 疑似故障注入処理部
135 装置状態確認処理部
140 メモリ
150 ファームウェア試験プログラム
160 関数リスト
170 各種パラメータ
200 コンソール
300 ストレージ装置
TSYS 試験システム