(57)【要約】【課題】  ＲＡＩＤ方式による冗長性が考慮されたディスクアレイ装置において、ディスク単体のエラーが発生した場合、リカバリ機能を有するディスクアレイ装置のリカバリ処理・縮退処理の確認を効率よく検証する方法を提供する。【解決手段】  本発明は、ディスクアレイ装置に対して磁気ディスク単体のエラーを擬似的に発生させる検証方法であって、エラーリカバリの種類・回数（深さ）に対して任意のエラーを注入し、ディスクアレイ装置の内部リカバリ動作が計算機システムに与える影響を検証する方法に関する。【選択図】図１
2008310752.tif 000002
【特許請求の範囲】
【請求項１】
ディスクアレイ装置において試験ディスクにエラーを擬似的に発生させて当該ディスクのリカバリ動作を検証するエラー検証方法であって、
ホストから発行されたコマンドに対応するエラー事象を前記試験ディスクに注入するエラー注入ステップと、
注入後、前記コマンドによって前記試験ディスクで発生するリカバリ処理をトレース採取し、リカバリ動作履歴として記録するトレース採取ステップと、
前記リカバリ動作履歴を解析し、発生したリカバリ処理を特定し、対応するエラー事象を選定するトレース解析ステップと、
前記リカバリ処理のコマンドと対応するエラー事象とを次パラメータとして自動設定するパラメータ設定ステップと、
を有することを特徴とするエラー検証方法。
【請求項２】
ディスクアレイ装置において試験ディスクにエラーを擬似的に発生させて当該ディスクのリカバリ動作を検証するエラー検証プログラムであって、
コンピュータに、
ホストから発行されたコマンドに対応するエラー事象を前記試験ディスクに注入するエラー注入ステップと、
注入後、前記コマンドによって前記試験ディスクで発生するリカバリ処理をトレース採取し、リカバリ動作履歴として記録するトレース採取ステップと、
前記リカバリ動作履歴を解析し、発生したリカバリ処理を特定し、対応するエラー事象を選定するトレース解析ステップと、
前記リカバリ処理のコマンドと対応するエラー事象とを次パラメータとして自動設定するパラメータ設定ステップと、
を実行させるエラー検証プログラム。
【請求項３】
ディスクアレイ装置において試験ディスクにエラーを擬似的に発生させて当該ディスクのリカバリ動作を検証するエラー検証装置であって、
ホストから発行されたコマンドに対応するエラー事象を前記試験ディスクに注入するエラー注入手段と、
注入後、前記コマンドによって前記試験ディスクで発生するリカバリ処理をトレース採取し、リカバリ動作履歴として記録するトレース採取手段と、
前記リカバリ動作履歴を解析し、発生したリカバリ処理を特定し、対応するエラー事象を選定するトレース解析手段と、
前記リカバリ処理のコマンドと対応するエラー事象とを次パラメータとして自動設定するパラメータ設定手段と、
を有することを特徴とするエラー検証装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，冗長性を考慮したディスクアレイ装置に関し、特にリカバリ動作履歴を記憶するトレース部を有し、複雑なリカバリの動作を効率的に検証する評価手法に関する。
【背景技術】
【０００２】
近年の磁気ディスクは、高密度、大容量化、高速化が加速しており、磁気ディスク単体で一時的なエラー（救済可能なエラー）の発生する確率は高く、ディスクアレイ装置の制御部にて、様々なエラーに対するリカバリ機能を有している。しかし、磁気ディスク単体で故障が発生した場合、１つの故障で、単一のエラー事象だけが発生するのではなく、ディスクアレイ装置の制御部によってエラーリカバリを処理している最中に、別のエラー事象に遷移している（１つの故障で複数のエラー事象に遷移）場合がある。こうした場合のエラーリカバリ処理の検証は、非常に複雑であり、長期に渡って検証が必要とされる。
【０００３】
従来の評価では、事前にインタフェーストレースからリカバリ処理のシーケンスを把握し、各種コマンドに対して、リカバリ処理に合わせエラーパラメータ（種類・回数）をあらかじめプログラミングしておき、そのプログラムを実行することで、リカバリ処理を検証するという方法がとられていた。
【０００４】
ディスクアレイ装置は、高い信頼性を確保するためにＲＡＩＤ（Redundant Arrays of Inexpensive Disks ）方式による複数の磁気ディスクで構成されており、冗長性を持って１つの論理ディスクを形成している。このため、磁気ディスク単体で異常が発生しても、データ保証されるものとなっている（単体故障でもデータのアクセスが可能）。
【０００５】
しかし、異常が発生したディスクにおいてリカバリが可能なエラーについては、単純に異常ディスクとして縮退処理をするのではなく、リカバリ処理による救済が行われている。リカバリ処理としては、コマンドのリトライ回数、トラックの交代割付処理、磁気ディスクのモータオフ・オン処理など、エラーの種類によってリカバリ内容が異なっているため、それぞれのコマンドに対して、擬似的なエラーを発生させ、各種のエラーリカバリ処理の検証をするのが一般的となっている（例えば、特許文献１参照）。
【０００６】
すなわち、従来の方式では、インタフェーストレースからコマンド・エラーを抽出し擬似エラーを発生させ、そのリカバリ処理の検証を実施していた。あるエラーを特定のコマンドに発生させ、インタフェース上のトレース情報を元に実行可能なプログラムを作成し、磁気ディスクの故障発生時のリカバリ処理を確認するというものである。このため、リカバリ検証の前に、どのようなリカバリ処理（何のコマンドが発行される）を行うのかを事前に認識し、どのコマンドに何のエラーを発生させるかを事前にテストプログラムへ定義する（どのコマンドにエラーを発生させるか書き込む）必要があった。
【０００７】
このように、従来の方式では、複雑化していくエラーリカバリ処理の検証に関して、事前に想定した範囲外のエラーリカバリ処理が動作した場合には対応できないという問題があった。
【０００８】
例えば、図７、８の従来例に示すように、予め３階層のエラー注入パターンを事前に用意していた場合、ある故障に対しては、３階層目のエラー注入により一連のリカバリ処理が完了し、確認完了となるが、別の故障に対しては、３階層目のエラー注入によりリカバリ処理が完了せず、リカバリ処理自体は継続するのにプログラム側が対応できないといったケースが考えられる。
【０００９】
図７は、３階層のエラー注入による成功パターンを示している。パターン１では、3 回目のリカバリ処理は発生せず、即時ディスク切り離しとなり、一連のリカバリ処理確認が完了している。また、パターン２の具体例で示すと、媒体エラー（Ｍｅｄｉｕｍ  Ｅｒｒｏｒ）がハードエラー（Ｈａｒｄｗａｒｅ  Ｅｒｒｏｒ）に変化する故障モードにて、2 回の媒体エラー発生後、１回目のハードエラーでリカバリ処理が発生しないため、ディスクは即時切り離しとなり、一連のリカバリ処理は完了となる。
【００１０】
図８は、３階層のエラー注入による失敗パターンを示している。パターン１では、３回目のリカバリ処理でディスク切り離しされず、４階層目のエラー事象は用意されていないため、リカバリ処理確認が未完了のままとなる。パターン２の具体例では、ユニットアテンション（Ｕｎｉｔ  Ａｔｔｅｎｔｉｏｎ）がノットレディ（Ｎｏｔ  Ｒｅａｄｙ）に変化する故障モードの場合、２回のユニットアテンション発生後、１回目のノットレディに対してリカバリ処理（モータオフ・オン) が発生するが、次のエラー注入処理が用意されていないため、一連のエラーリカバリ処理は、未完了のままとなっている状態を示している。
【特許文献１】特開平０９−２６５４１２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上記したように、ディスクアレイ装置に発行されるコマンドに対して、磁気ディスクからエラー（媒体エラー、シークエラー）の種類によって、異なったリトライやリカバリ処理が行われる。こうしたリカバリ評価においては、異なったリカバリ処理の組合せ（コマンドの種類×エラーの種類）は、膨大な数になり、全てのリカバリ動作の検証は困難な状況にある。
【００１２】
そこで、本発明では、エラーリカバリ毎にインタフェーストレース情報を採取し、トレースデータからリカバリ処理を追跡し、ディスクが縮退するまでのリカバリ処理のシーケンスを動的にプログラミングして実行する構成とすることにより、各種エラーに対してのリカバリコマンドの種類・回数（リカバリ処理の深さ）の妥当性（計算機システムに与える影響）の検証を実現する。
【課題を解決するための手段】
【００１３】
上記課題を解決する本発明は、ディスクアレイ装置において試験ディスクにエラーを擬似的に発生させて当該ディスクのリカバリ動作を検証するエラー検証方法であって、ホストから発行されたコマンドに対応するエラー事象を前記試験ディスクに注入するエラー注入ステップと、注入後、前記コマンドによって前記試験ディスクで発生するリカバリ処理をトレース採取し、リカバリ動作履歴として記録するトレース採取ステップと、前記リカバリ動作履歴を解析し、発生したリカバリ処理を特定し、対応するエラー事象を選定するトレース解析ステップと、前記リカバリ処理のコマンドと対応するエラー事象とを次パラメータとして自動設定するパラメータ設定ステップと、を有することを特徴とするエラー検証方法に関する。
【００１４】
すなわち、本発明によれば、エラー注入手段が、ホストから発行されたコマンドに対してエラー事象を前記試験ディスクに注入し、注入後、トレース採取手段が、ホストからのコマンドを実行することによって試験ディスクで発生するリカバリ処理をトレース採取し、リカバリ動作履歴として記憶部に記録し、トレース解析手段が、記録されたリカバリ動作履歴を解析し、発生したリカバリ処理を特定して対応するエラー事象を選定し、パラメータ設定手段が、リカバリ処理のコマンドと対応するエラー事象とを次パラメータとして自動設定するエラー検証プログラムを構成することによって、階層的なエラーに対するリカバリ処理を自動的にプログラミングしていくことを可能とし、評価の網羅性を向上させるとともに、手動で各種パターンをプログラミングする従来手法に比べ、評価工数の削減を図ることができる。
【発明の効果】
【００１５】
以上、上記してきた発明により以下の効果が生まれる。
【００１６】
エラー注入手段が、ホストから発行されたコマンドに対してエラー事象を前記試験ディスクに注入し、注入後、トレース採取手段が、ホストからのコマンドを実行することによって試験ディスクで発生するリカバリ処理をトレース採取し、リカバリ動作履歴として記憶部に記録し、トレース解析手段が、記録されたリカバリ動作履歴を解析し、発生したリカバリ処理を特定して対応するエラー事象を選定し、パラメータ設定手段が、リカバリ処理のコマンドと対応するエラー事象とを次パラメータとして自動設定するエラー検証プログラムを構成することによって、トレース採取・解析の結果が反映されて、次のコマンドとエラー事象が逐次、継続的に選択され、次パラメータとして自動セットされるようにプログラミングされるため、従来、固定的であったリカバリ処理の種別、回数に限定されることなく、多階層に渡って効率的なリカバリ処理を行うことができる。
【００１７】
また、階層的なエラーに対するリカバリ処理が自動的にプログラミングされることによって、複雑なパラメータの組合せによる評価の網羅性を向上させるとともに、各種パターンを手動でプログラミングする従来手法に比べ、評価工数を大幅に削減することが可能となる。
【発明を実施するための最良の形態】
【００１８】
以下、図面にもとづいて本発明の実施形態を説明する。
【００１９】
図１は、本発明の実施の形態になるエラー検証システムの基本構成を示す。本エラー検証システムは、ホスト２、ディスクアレイ装置１、およびエラー検証装置（制御用ＰＣ：Personal Computer ）４から構成されている。ディスクアレイ装置１は、エラー検証装置４から発行されるコマンドによって活性挿抜可能であり、トレース採取やエラー注入用のインタフェースを備えた試験ディスク３を有し、エラー試験の対象となる試験ディスク３に対するトレース情報の記録・解析、エラー注入の処理は、エラー検証装置４によって制御される。
【００２０】
なお、エラー検証装置４は、試験ディスク３のエラー試験の処理を制御する、図示にないメモリ、ＣＰＵ（Central Processing Unit ）を備えたコンピュータであり、エラー注入部１１、トレース採取部１２、トレース解析部１３、およびパラメータ設定部１４の構成になるエラー検証プログラムを内蔵し、また、補助記憶部としての記憶部１５を有し、記憶部１５には、コマンドリスト、エラー事象リスト、およびリカバリ動作履歴が格納されている。エラー検証プログラムは、起動時にメモリに展開され、ＣＰＵによって処理される。
【００２１】
図１は、１階層（（１）＋（２））→２階層（（１）＋（２）、（３）＋（５））→３ 階層（（１）＋（２）、（３）＋（５）、（６）＋（８））という順番で、自動的にプログラミングが実行され、エラー注入が継続される処理の流れを示している。
【００２２】
ホスト２から発行されたＷｒｉｔｅ実行のコマンド（１）と、該コマンドに対応した媒体エラー注入（２）による１階層目の注入によって、コマンドリトライ（３）が発生し、その動作履歴をトレース採取、解析（４）し、再度の媒体エラー注入（５）による２階層目のがエラー注入が実行されることで、交代割付処理（６）が発生する。その動作履歴をトレース採取、解析（７）し、３階層目のエラー注入として、ハードエラー注入（８）が実行されることで、処理は完了となり、ディスク切り離し（９）が行われる。
【００２３】
上記本発明によれば、階層的なエラーに対するリカバリ処理を自動的にプログラミングしていくことで、評価の網羅性を向上させることができ、かつ、手動で各種パターンをプログラミングする従来手法に比べ、評価工数の大幅な削減となる。
【００２４】
図２は、本発明の実施の形態になるトレース採取によるプログラミング構成を示す。図２は、本発明の特徴であるトレース採取で特定したリカバリ処理をプログラムに自動的に取込みつつ、プログラムを実行していく、階層的なエラー検証システムの手順を示している。
（１）コマンドリストから選択したエラー発生対象となるコマンドＡと、エラー事象リストから選択したコマンドＡに対して発生させるエラー事象１とを、パラメタとしてプログラムへセット。
（２）ホスト２からディスクアレイ装置１に対して、コマンドＡを発行。
（３）コマンドＡに対して、エラー事象１を制御用ＰＣ４より注入（コマンドＡに対するエラー応答）。
（４）ディスクアレイ装置１にて、エラー事象１に対するリカバリ処理１が発生。
（５）コマンドＡ、エラー事象１、リカバリ処理１をセットとする一連の動作をトレース採取し、リカバリ動作履歴として制御用ＰＣ４の記憶部に記録。
（６）リカバリ動作履歴を解析し、エラー発生したコマンドＡに対するリカバリ処理１を見つけ出し、次のエラー発生対象のパラメタとしてプログラムへセット。
【００２５】
具体的には、Ｒｅａｄコマンドに対してＭｅｄｉｕｍ  Ｅｒｒｏｒを発生させた場合、リカバリ動作履歴のＤＢ（データベース）のトレース結果から、Ｒｅａｄを、まず、リストアップし、そのＲｅａｄに対して、Ｍｅｄｉｕｍ  Ｅｒｒｏｒが応答されている箇所を検索し、そのＭｅｄｉｕｍ  Ｅｒｒｏｒが応答されていたＲｅａｄの直後に発行されたコマンドをリカバリコマンドとする。
（７）エラー事象リストから、リカバリ処理１で実行されるリカバリコマンドに注入するエラー事象２を選択し、パラメタとしてプログラムへセット（この時点で、プログラムはコマンドＡ＋エラー事象１、リカバリ処理１＋エラー事象２の２階層となる）。
【００２６】
具体的には、コマンドリストとエラー事象リストの関係を表わした表があり、そのリカバリコマンド（例えば、Ｒｅａｓｓｉｇｎ  Ｂｌｏｃｋ）に発生し得るエラー事象（Ｍｅｄｉｕｍ  Ｅｒｒｏｒ、Ｈａｒｄｗａｒｅ  Ｅｒｒｏｒ、Ｒｅｃｏｖｅｒｅｄ  Ｅｒｒｏｒ）の中から、任意のエラー事象（Ｍｅｄｉｕｍ  Ｅｒｒｏｒ）を選択する。
（８）上記（２）〜（４）の処理を再現させ、リカバリ処理１が発生。
（９）リカバリ処理１に対して、エラー事象２を制御用ＰＣ４より注入（リカバリ処理１に対するエラー応答）。
（１０）ディスクアレイ装置１にて、エラー事象２に対するリカバリ処理２が発生。
（１１）リカバリ処理１、エラー事象２、リカバリ処理２の一連の動作をトレース採取し、リカバリ動作履歴として制御用ＰＣ４の記憶部に記録。
（１２）以降、（６）〜（１１）の手順を繰り返して階層化されたエラー注入処理をプログラミングしつつ実行し、その結果、注入したエラーに対するリカバリ処理が発生せず、ディスクが切り離されたら完了とする。
【００２７】
ここで、リカバリ動作履歴は、制御用ＰＣ４動作時に一連のコマンド動作をトレースしたデータであり、発行したコマンドと、そのコマンドに対し応答されたセンス（エラーセンス) 情報からなる。
書込みコマンドの例：
DO CDB. seq ＿id=1 lun=0 cdb=(size 0x10)  ← Writeコマンド（0x2a) 
0x00 : 2a00000e2f8000008000000000000000    ←生データ
上記書込みコマンドに対する応答センス例：
SendRsp(seq ＿id=1)  scsi ＿status isn't GOOD.(=2)  with SENSE. sense ＿len=0x30. sense=(size 0x30)                         ←Medium Error（SK：3/11/83 ) 
0x00 : 70400600000000280000000029030000  ←生データ
0x10 : 0000000402000f0001fa0117014c0000
0x20 : 03090000000000000000000000000201
図３は、本発明の実施の形態になるエラー検証プログラムで使用するコマンドリストの例を示す。本コマンドリストは、Ｒｅａｄ、Ｗｒｉｔｅ等の通常コマンドと、Ｒｅａｓｓｉｇｎ等のリカバリコマンドをリスト化したもので以下を意味する。
Ｒｅａｄ／Ｗｒｉｔｅ：読出し／書込みコマンド。
Ｗｒｉｔｅ  ＆  Ｖｅｒｉｆｙ：書込み及び書込みをチェックするコマンド。
Ｔｅｓｔ  Ｕｎｉｔ  Ｒｅａｄｙ：ディスク認識が正しく行われたか否かをチェックするコマンド。
Ｍｏｔｏｒ  ｏｎ：リカバリ処理でディスクを起動させるコマンド。
Ｒｅａｓｓｉｇｎ  Ｂｌｏｃｋ：媒体のあるブロックが異常であるときに、他のブロックを割り付ける交替割付処理のコマンド。
【００２８】
図４は、本発明の実施の形態になるエラー検証プログラムで使用するエラー事象リストの例を示す。本エラー事象リストは、媒体エラー、ハードエラー、リカバード（復旧可能）エラーなどのエラー事象をリスト化したものである。各項目のエラー事象は、以下を意味する。
Ｍｅｄｉｕｍ  Ｅｒｒｏｒ：媒体エラー。
Ｎｏｔ  Ｒｅａｄｙ：該当する媒体が見当たらない場合のエラー。
ＳＭＡＲＴ：故障の予兆を警告するコマンド。
Ｒｅｃｏｖｅｒｅｄ  Ｅｒｒｏｒ：回復可能なエラー。
Ｈａｒｄｗａｒｅ  Ｅｒｒｏｒ：ハードウエアのエラー。
Ｉｌｌｅｇａｌ  Ｅｒｒｏｒ：誤った操作によるエラー。
Ｕｎｉｔ  Ａｔｔｅｎｔｉｏｎ：ホスト側にリトライを促すコマンド。
Ｄａｔａ  Ｐｒｏｔｅｃｔ：書込み領域にデータが侵入するのを防止するコマンド。
Ａｂｏｒｔｅｄ  Ｃｏｍｍａｎｄ：異常終了を示すコマンド。
【００２９】
図５は、本発明の実施の形態になる多階層に渡るエラー注入の流れを模式的に説明する図である。本実施例は、３階層以上のエラー注入が適用された場合を想定している。
【００３０】
図では、３ 回目のリカバリ処理で処理完了としなくても、採取されたトレース情報の解析から次のエラー発生対象となるリカバリ処理（リカバリコマンド) と、発生させるエラー事象とがプログラムにセットされて自動的に実行されるため、多階層に渡っての一連のリカバリ処理の確認を追跡し実行することが可能となることを示している。
【００３１】
図６は、本発明の実施の形態になるトレース採取によるエラー注入の処理フローを示す。まず、ステップＳ１１において、予め用意されたコマンドリストから任意に選択したエラー発生対象となる一つのコマンドと、エラー事象リストから選択したコマンドに対して発生させるエラー事象をパラメタとしてプログラムにセットする。ステップＳ１２において、プログラムが実行され、トレース採取が開始され、当該コマンドに対するエラー事象の試験ディスク３への注入が行われる。そして、ステップＳ１３において、当該エラー注入に対するリカバリ処理が発生したか否かを判定する。
【００３２】
その結果、リカバリ処理が発生した場合には、ステップＳ１５において、トレース採取を終了し、ステップＳ１６において、採取したトレースデータを発行コマンドとそのコマンドに応答したエラー事象のセンス情報からなるリカバリ動作履歴として制御用ＰＣ４の記憶部に保存する。
【００３３】
つぎに、ステップＳ１７において、リカバリ動作履歴を解析し、エラー発生したコマンドに対するリカバリ処理を特定し、ステップＳ１８において、次パラメータとしてプログラムに自動セットし、ステップＳ１２以降の処理を繰り返す。
【００３４】
一方、ステップＳ１４において、リカバリ処理の発生がなければ、ステップＳ１９において、当該対象のディスクを切り離し、本フローは終了となる。
【図面の簡単な説明】
【００３５】
【図１】本発明の実施の形態になるエラー検証システムの基本構成を示す図である。
【図２】本発明の実施の形態になるトレース採取によるプログラミング構成を示す図である。
【図３】本発明の実施の形態になるエラー検証プログラムで使用するコマンドリストの例を示す図である。
【図４】本発明の実施の形態になるエラー検証プログラムで使用するエラー事象リストの例を示す図である。
【図５】本発明の実施の形態になる多階層に渡るエラー注入の流れを模式的に説明する図である。
【図６】本発明の実施の形態になるトレース採取によるエラー注入の処理フローを示す図である。
【図７】従来の３階層のエラー注入例（成功パターン）を示す図である。
【図８】従来の３階層のエラー注入例（失敗パターン）を示す図である。
【符号の説明】
【００３６】
１  ディスクアレイ装置
２  ホスト
３  試験ディスク
４  エラー検証装置（制御用ＰＣ）
１１  エラー注入部
１２  トレース採取部
１３  トレース解析部
１４  パラメータ設定部
１５  記憶部
【図１】
2008310752.tif 000003
【図２】
2008310752.tif 000004
【図３】
2008310752.tif 000005
【図４】
2008310752.tif 000006
【図５】
2008310752.tif 000007
【図６】
2008310752.tif 000008
【図７】
2008310752.tif 000009
【図８】
2008310752.tif 000010