(57)【要約】【課題】入出力装置に接続された電子機器において、コマンドキューにおけるデータ蓄積状態に応じた入出力装置へのアクセス制御を高精度に検証可能にする。【解決手段】キュー監視手段１２は、電子機器２０内のコマンドキュー２２におけるデータの蓄積状態を監視する。応答制御手段１１は、電子機器２０から発行された制御コマンドを受信したとき、コマンドキュー２２におけるデータの蓄積状態が所定の条件に合致しない場合には、受信した制御コマンドによって要求された処理が正常に完了したことを示す第１の応答情報を電子機器２０に送信し、コマンドキュー２２におけるデータの蓄積状態が所定の条件に合致した場合には、受信した制御コマンドによって要求された処理においてエラーが発生したことを示す第２の応答情報を電子機器２０に送信する。【選択図】図１
2012043343.tif 000002
【特許請求の範囲】
【請求項１】
入出力機器に対するアクセス制御を行う電子機器の動作を試験する試験装置において、
前記電子機器が前記入出力機器に発行する制御コマンドが一時的に記憶される、前記電子機器内のコマンドキューにおけるデータの蓄積状態を監視するキュー監視手段と、
前記電子機器から発行された制御コマンドを受信したとき、前記コマンドキューにおけるデータの蓄積状態が所定の条件に合致しない場合には、受信した制御コマンドによって要求された処理が正常に完了したことを示す第１の応答情報を前記電子機器に送信し、前記コマンドキューにおけるデータの蓄積状態が前記所定の条件に合致した場合には、前記受信した制御コマンドによって要求された処理においてエラーが発生したことを示す第２の応答情報を前記電子機器に送信する応答制御手段と、
を有することを特徴とする試験装置。
【請求項２】
前記応答制御手段は、
前記電子機器から発行された制御コマンドを受信すると、受信した制御コマンドに対する前記第１の応答情報を、発行した制御コマンドに対する応答情報を前記電子機器が受信する際のタイムアウト時間より短く、かつ０より大きく設定された応答遅延時間だけ遅延させて前記電子機器に送信し、
前記電子機器からの制御コマンドを受信してから当該制御コマンドに対する前記第１の応答情報を送信するまでの間に、前記コマンドキューにおけるデータの蓄積状態が前記所定の条件に合致した場合に、前記第２の応答情報を前記電子機器に送信する、
ことを特徴とする請求項１記載の試験装置。
【請求項３】
前記電子機器から発行された制御コマンドを受信するたびに、受信した制御コマンドに対する前記第１の応答情報を前記電子機器に送信するまでの時間を調整しながら、前記電子機器におけるタイムアウトの発生を検知することで、前記タイムアウト時間を測定するタイムアウト時間測定手段をさらに有し、
前記応答制御手段は、前記タイムアウト時間測定手段によって測定された前記タイムアウト時間を基に前記応答遅延時間を設定する、
ことを特徴とする請求項２記載の試験装置。
【請求項４】
前記応答制御手段は、前記電子機器から発行された制御コマンドを受信したとき、前記コマンドキューが満杯になった場合に、前記第２の応答情報を前記電子機器に送信することを特徴とする請求項１〜３のいずれか１項に記載の試験装置。
【請求項５】
前記第２の応答情報によって前記電子機器に通知される、発生したエラーの種類は、ユーザの操作入力に応じて任意に設定可能であることを特徴とする請求項１〜４のいずれか１項に記載の試験装置。
【請求項６】
入出力機器に対するアクセス制御を行う電子機器の動作を試験する試験方法において、
試験装置が、前記電子機器が前記入出力機器に発行する制御コマンドが一時的に記憶される、前記電子機器内のコマンドキューにおけるデータの蓄積状態を監視し、
前記試験装置が、前記電子機器から発行された制御コマンドを受信したとき、前記コマンドキューにおけるデータの蓄積状態が所定の条件に合致しない場合には、受信した制御コマンドによって要求された処理が正常に完了したことを示す第１の応答情報を前記電子機器に送信し、前記コマンドキューにおけるデータの蓄積状態が前記所定の条件に合致した場合には、前記受信した制御コマンドによって要求された処理においてエラーが発生したことを示す第２の応答情報を前記電子機器に送信する、
ことを特徴とする試験方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、試験装置および試験方法に関する。
【背景技術】
【０００２】
ストレージシステムで使用される大容量の記憶装置としては、複数のＨＤＤ（Hard Disk Drive）を内部に備えたディスクアレイ装置が知られている。ディスクアレイ装置では、複数のＨＤＤが設けられることで記憶容量が増加するという効果が得られるだけでなく、複数のＨＤＤにデータを分散させて記憶することで記憶データの信頼性を高めるという効果も得られる。例えば、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）制御によりデータやパリティなどを複数のＨＤＤに分散配置することにより、１つのＨＤＤが故障した場合でも他のＨＤＤ内の記憶データから故障したＨＤＤ内のデータを復旧することができる。
【０００３】
ＲＡＩＤ制御を行うディスクアレイ装置においてデータの整合性を検査する方法の例として、整合性検査のための論理演算を２つの段階に分け、第１段階の演算をディスク装置内のＭＰＵ（Micro Processing Unit）が実行し、第２段階の演算をディスクアレイ装置側のＭＰＵが実行することで、ディスク装置から読み出されるデータ量を削減するものがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１４６８３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、ディスクアレイ装置を出荷する前の段階では、ホスト装置からディスクアレイ装置内のＨＤＤに対してアクセス要求を行った際に、ディスクアレイ装置が正常に動作するかを検証する試験が行われる。そして、ディスクアレイ装置の動作試験においては、ＨＤＤに発行する制御コマンドが一時的に記憶されるコマンドキューにおけるデータ蓄積状態に応じて、ディスクアレイ装置がＨＤＤに対するアクセス制御を正しく実行できるかを検証したいという要求がある。例えば、コマンドキューが満杯の状態であるときにＨＤＤに対するアクセス制御を正しく実行できるかを検証することが求められている。
【０００６】
しかしながら、ディスクアレイ装置内のコマンドキューにおけるデータ蓄積状態を正確に把握する手段がなかったことから、データ蓄積状態に応じたアクセス制御を精度よく検証できないという問題があった。
【０００７】
また、ディスクアレイ装置の試験動作に限らず、ＨＤＤなどの記憶装置をはじめとする入出力装置に接続された種々の電子機器に対しても、コマンドキューにおけるデータ蓄積状態に応じた入出力装置へのアクセス制御を精度よく検証したいという要求があった。
【０００８】
本発明はこのような課題に鑑みてなされたものであり、入出力装置に接続された電子機器において、コマンドキューにおけるデータ蓄積状態に応じた入出力装置へのアクセス制御を高精度に検証可能な試験装置および試験方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、入出力機器に対するアクセス制御を行う電子機器の動作を試験する試験装置が提供される。この試験装置は、前記電子機器が前記入出力機器に発行する制御コマンドが一時的に記憶される、前記電子機器内のコマンドキューにおけるデータの蓄積状態を監視するキュー監視手段と、前記電子機器から発行された制御コマンドを受信したとき、前記コマンドキューにおけるデータの蓄積状態が所定の条件に合致しない場合には、受信した制御コマンドによって要求された処理が正常に完了したことを示す第１の応答情報を前記電子機器に送信し、前記コマンドキューにおけるデータの蓄積状態が前記所定の条件に合致した場合には、前記受信した制御コマンドによって要求された処理においてエラーが発生したことを示す第２の応答情報を前記電子機器に送信する応答制御手段と、を有する。
【００１０】
また、上記目的を達成するために、上記試験装置と同様の処理を実行する試験方法が提供される。
【発明の効果】
【００１１】
上記の試験装置および試験方法によれば、エラーの発生を電子機器に通知したときの電子機器の動作検証を、電子機器内のコマンドキューにおけるデータ蓄積状態を正確に把握して行うことができる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態に係る試験装置およびその周辺機器の構成例を示す図である。
【図２】ディスクアレイ装置の動作を試験する試験システムの構成例を示す図である。
【図３】ディスクアレイ装置のハードウェア構成例を示す図である。
【図４】試験装置のハードウェア構成例を示す図である。
【図５】ホスト装置およびディスクアレイ装置がそれぞれ備える処理機能の例を示すブロック図である。
【図６】キューカウンタによるカウント値について説明する図である。
【図７】試験装置が備える処理機能の例を示すブロック図である。
【図８】エラー応答設定情報に設定されるデータの例を示す図である。
【図９】ディスクアレイ装置の動作試験全体の手順を示すフローチャートである。
【図１０】タイムアウト時間測定処理の手順の例を示すフローチャートである。
【図１１】エラー発生処理の手順の例を示すフローチャートである。
【図１２】第３の実施の形態に係る試験装置が備える処理機能の例を示すブロック図である。
【図１３】第３の実施の形態におけるエラー発生処理の手順の例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、実施の形態について図面を参照して詳細に説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る試験装置およびその周辺機器の構成例を示す図である。
【００１４】
試験装置１０は、電子機器２０の動作を試験する装置である。電子機器２０は、入出力機器３０に対するアクセス制御を行う装置である。入出力機器３０は、例えば、データを記録媒体に読み書きする記憶装置、データを他の機器との間で送受信する送受信装置などである。また、入出力機器３０は、電子機器２０の外部に接続されていても、あるいは電子機器２０の内部に接続されていてもよい。
【００１５】
電子機器２０は、入出力機器３０へのアクセスを制御するアクセス制御部２１を備える。アクセス制御部２１は、入出力機器３０に対して制御コマンドを発行することで、制御コマンドに応じた入出力処理を入出力機器３０に実行させる。また、電子機器２０には、アクセス制御部２１が入出力機器３０に発行する制御コマンドが一時的に記憶されるコマンドキュー２２が設けられている。入出力機器３０に対しては、コマンドキュー２２の先頭に記憶された制御コマンドが発行される。
【００１６】
入出力機器３０は、アクセス制御部２１から発行された制御コマンドを受信すると、受信した制御コマンドに応じた入出力処理を実行し、入出力処理が正常に完了すると、入出力処理が正常に完了したことを示す第１の応答情報をアクセス制御部２１に送信する。一方、入出力機器３０は、アクセス制御部２１から受信した制御コマンドに応じた入出力処理においてエラーが発生すると、エラーが発生したことを示す第２の応答情報をアクセス制御部２１に送信する。
【００１７】
試験装置１０は、応答制御手段１１およびキュー監視手段１２を備える。なお、試験装置１０は、例えば、内部にＣＰＵ（Central Processing Unit）を備えたコンピュータとして実現される。この場合、応答制御手段１１およびキュー監視手段１２の処理は、例えば、ＣＰＵが所定のプログラムを実行することで実現される。
【００１８】
応答制御手段１１は、アクセス制御部２１から入出力機器３０に発行された制御コマンドを、入出力機器３０の代わりに受信して応答する。応答制御手段１１は、アクセス制御部２１から制御コマンドを受信したときの入出力機器３０の応答処理をエミュレートする機能を備える。
【００１９】
例えば、応答制御手段１１は、アクセス制御部２１から発行された制御コマンドを受信したとき、入出力処理が正常に完了したことを示す第１の応答情報をアクセス制御部２１に送信することができる。また、応答制御手段１１は、アクセス制御部２１から発行された制御コマンドを受信したとき、受信した制御コマンドに応じた入出力処理のエラーが発生したことを示す第２の応答情報を、アクセス制御部２１に送信することもできる。
【００２０】
キュー監視手段１２は、電子機器２０のコマンドキュー２２におけるデータの蓄積状態を監視する。例えば、キュー監視手段１２は、コマンドキュー２２に蓄積された制御コマンドの数を示す情報を電子機器２０から取得することで、コマンドキュー２２におけるデータ蓄積状態を監視する。キュー監視手段１２は、コマンドキュー２２のデータ蓄積状態が所定の条件に合致するか否かを判定する。
【００２１】
キュー監視手段１２が判定の基準とする条件としては、例えば、コマンドキュー２２が満杯になった、コマンドキュー２２に蓄積された制御コマンドの数が所定の数に達した、コマンドキュー２２に蓄積された制御コマンドの数が一定以上の速度で増加または減少した、といった条件を適用可能である。
【００２２】
応答制御手段１１は、次のようにして、電子機器２０の動作試験を行う。応答制御手段１１は、アクセス制御部２１から発行された制御コマンドを受信したとき、キュー監視手段１２での判定結果に基づき、コマンドキュー２２におけるデータ蓄積状態が所定の条件に合致したか否かを判定する。応答制御手段１１は、制御コマンドを受信したとき、コマンドキュー２２におけるデータ蓄積状態が所定の条件に合致していない場合には、要求された処理が正常に完了したことを示す第１の応答情報をアクセス制御部２１に送信する。一方、応答制御手段１１は、制御コマンドを受信したとき、コマンドキュー２２におけるデータ蓄積状態が所定の条件に合致した場合には、要求された処理のエラーが発生したことを示す第２の応答情報をアクセス制御部２１に送信する。
【００２３】
以上の動作試験では、コマンドキュー２２におけるデータ蓄積状態が所定の条件に合致した状況において、試験装置１０から処理のエラーを示す第２の応答情報が送信された場合に、電子機器２０がどのような動作を行うかを検証することができる。ここで、試験装置１０のキュー監視手段１２は、コマンドキュー２２におけるデータ蓄積状態を監視して、データ蓄積状態が所定の条件に合致するか否かを判定する。このため、コマンドキュー２２のデータ蓄積状態が所定の条件に合致した状態において、第２の応答情報を受信した電子機器２０の動作検証を確実に行うことができ、試験精度が向上する。
【００２４】
なお、応答制御手段１１は、コマンドキュー２２におけるデータ蓄積状態が所定の条件に合致しない状態においては、制御コマンドを受信してから第１の応答情報を送信するまでの時間を遅延させてもよい。ここで、制御コマンドを受信してから第１の応答情報を送信するまでの遅延時間は、アクセス制御部２１が応答情報を受信する際のタイムアウト時間より短くされる。
【００２５】
応答制御手段１１が制御コマンドを受信してから第１の応答情報を送信するまでの時間を遅延させることで、コマンドキュー２２にデータを短時間で溜めることができる。このため、例えば、キュー監視手段１２が判定の基準とする条件として、コマンドキュー２２が満杯になった、あるいはコマンドキュー２２に蓄積された制御コマンドの数が所定の数に達した、といった条件が適用された場合には、コマンドキュー２２におけるデータ蓄積状態をより短時間で上記条件に合致する状態に遷移させることができる。従って、試験時間を短縮し、試験効率を向上させることができる。
【００２６】
〔第２の実施の形態〕
次に、入出力機器として記憶装置が接続された電子機器について説明する。以下の第２の実施の形態では、記憶装置が接続された電子機器として、ディスクアレイ装置を例示する。
【００２７】
図２は、ディスクアレイ装置の動作を試験する試験システムの構成例を示す図である。
ディスクアレイ装置１００は、その内部に、記憶装置として複数のＨＤＤを備える。また、ディスクアレイ装置１００には、ホスト装置２００および試験装置３００が接続されている。ディスクアレイ装置１００とホスト装置２００とは、例えば、光ケーブル４０１によって接続されている。また、ディスクアレイ装置１００と試験装置３００とは、例えば、ＬＡＮ（Local Area Network）ケーブル４０２およびＳＡＳ（Serial Attached SCSI，SCSI：Small Computer System Interface）ケーブル４０３によって接続されている。
【００２８】
ホスト装置２００は、ユーザの操作に応じて、ディスクアレイ装置１００内のＨＤＤに対するアクセスを要求する。ディスクアレイ装置１００は、ホスト装置２００からのアクセス要求に応じて、内部のＨＤＤへのアクセスを制御する。例えば、ディスクアレイ装置１００は、ＨＤＤに記憶されたデータの読み出し要求をホスト装置２００から受け付けると、読み出しを要求されたデータをＨＤＤから読み出し、ホスト装置２００に送信する。また、ディスクアレイ装置１００は、ＨＤＤへのデータの書き込み要求をホスト装置２００から受け付けると、書き込みを要求されたデータをＨＤＤに書き込む。
【００２９】
試験装置３００は、ホスト装置２００からの要求に応じてディスクアレイ装置１００が正しい動作を行うかを試験する装置である。特に、試験装置３００は、ディスクアレイ装置１００内のコマンドキューの蓄積状態を示す情報をＬＡＮケーブル４０２を通じて受信することで、コマンドキューの蓄積状態を監視する機能を備える。コマンドキューは、ディスクアレイ装置１００の内部においてＨＤＤごとに設けられる。ホスト装置２００からディスクアレイ装置１００内のＨＤＤに対するアクセスが要求されたとき、コマンドキューには、ディスクアレイ装置１００内のＣＰＵからアクセス要求先のＨＤＤに対して送信される制御コマンドが一時的に蓄積される。
【００３０】
また、試験装置３００は、ディスクアレイ装置１００のＣＰＵがＨＤＤに対する制御コマンドを発行したときに、制御コマンドに対するＨＤＤでの応答処理をエミュレートする機能も備える。ホスト装置２００からディスクアレイ装置１００に対してＨＤＤへのアクセスが要求されたとき、試験装置３００は、ディスクアレイ装置１００内のＣＰＵからＨＤＤに対して発行された制御コマンドを、本来の発行先のＨＤＤの代わりにＳＡＳケーブル４０３を通じて受信する。そして、試験装置３００は、受信した制御コマンドに対する応答として、制御コマンドにより要求された処理を正常に実行したことを示す応答情報や、要求された処理においてエラーが発生したことを示す応答情報を返すことができる。
【００３１】
後述するように、試験装置３００は、受信した制御コマンドに対する応答を遅延して返すことで、コマンドキューに制御コマンドが溜まりやすくしたり、コマンドキューの蓄積状態が所定の条件に一致したとき、エラーの発生を通知する応答を返すことができる。
【００３２】
図３は、ディスクアレイ装置のハードウェア構成例を示す図である。
ディスクアレイ装置１００は、ＣＰＵ１０１、ＲＡＭ（Random Access Memory）１０２、フラッシュＲＯＭ（Read Only Memory）１０３、ホストインタフェース１０４、ディスクインタフェース１０５およびＬＡＮインタフェース１０６を備えている。また、ディスクアレイ装置１００は、記憶装置としてＨＤＤ１０７ａ〜１０７ｄを備えている。
【００３３】
ＣＰＵ１０１は、ディスクアレイ装置１００全体を統括的に制御する。ＲＡＭ１０２は、ディスクアレイ装置１００の主記憶装置として使用され、ＣＰＵ１０１に実行させるプログラムの少なくとも一部や、このプログラムによる処理に必要な各種データを一時的に記憶する。
【００３４】
フラッシュＲＯＭ１０３は、ディスクアレイ装置１００の二次記憶装置として使用され、ＣＰＵ１０１により実行されるプログラムやその実行に必要な各種のデータなどを記憶する。なお、二次記憶装置としては、例えば、ＨＤＤやＳＳＤ（Solid State Drive）などの他の種類の不揮発性記憶装置が使用されてもよい。
【００３５】
ホストインタフェース１０４は、光ケーブル４０１を介してホスト装置２００と接続し、ホスト装置２００との間でデータを送受信する。
ディスクインタフェース１０５は、ＨＤＤ１０７ａ〜１０７ｄとの間でデータを送受信する。ディスクインタフェース１０５は、ＳＡＳ規格に従ってＨＤＤ１０７ａ〜１０７ｄとのインタフェース処理を実行するＳＡＳインタフェースである。ディスクインタフェース１０５にはポート１０５ａ〜１０５ｄが設けられ、ポート１０５ａ〜１０５ｄのそれぞれに対してＨＤＤ１０７ａ〜１０７ｄが接続される。
【００３６】
なお、本実施の形態のディスクインタフェース１０５には、例として４つのＨＤＤ１０７ａ〜１０７ｄが接続されているが、ディスクインタフェース１０５に接続されるＨＤＤの数は４つに限ったことではない。また、ディスクインタフェース１０５には、例えばＳＳＤなどの他の種類の不揮発性記憶装置が接続されてもよい。
【００３７】
ここで、試験装置３００を用いたディスクアレイ装置１００の動作試験が行われる際には、ディスクインタフェース１０５に接続されたＨＤＤのうち１つが取り外される。そして、ＨＤＤが取り外されたディスクインタフェース１０５のポートに対して、ＳＡＳケーブル４０３が接続され、このＳＡＳケーブル４０３を介して、ディスクインタフェース１０５と試験装置３００とが接続される。
【００３８】
以下の説明では例として、図３に示すように、ＨＤＤ１０７ａ〜１０７ｄのうちＨＤＤ１０７ｄがポート１０５ｄから取り外され、ポート１０５ｄに対してＳＡＳケーブル４０３が接続されるものとする。この場合、例えば、ホスト装置２００からＨＤＤ１０７ｄへのアクセスが要求されたとき、ＣＰＵ１０１は、ＳＡＳ規格に従った制御コマンドをポート１０５ｄに接続された記憶装置に発行する。このとき、発行された制御コマンドは、ＨＤＤ１０７ｄではなく、ＳＡＳケーブル４０３を通じて試験装置３００に送信されることになる。試験装置３００は、ポート１０５ｄを通じて発行された制御コマンドに応じて本来ＨＤＤ１０７ｄが実行する応答処理をエミュレートする。
【００３９】
なお、本実施の形態では、ディスクインタフェース１０５のポート１０５ａ〜１０５ｄのうちの１つに試験装置３００が接続されるものとするが、ポート１０５ａ〜１０５ｄのうち複数のポートに対して試験装置３００が接続されてもよい。例えば、ポート１０５ｃ，１０５ｄのそれぞれに対してＳＡＳケーブル４０３を介して試験装置３００が接続された場合、試験装置３００は、ＨＤＤ１０７ｃ，１０７ｄのそれぞれが制御コマンドに応じて実行する応答処理をエミュレートする。
【００４０】
ＬＡＮインタフェース１０６は、ＬＡＮケーブル４０２を介して試験装置３００と接続し、試験装置３００との間でデータを送受信する。ディスクアレイ装置１００は、例えば、コマンドキューの蓄積状態など、ディスクアレイ装置１００内の動作状態を示す情報を、ＬＡＮインタフェース１０６を通じて試験装置３００に送信できるようになっている。
【００４１】
図４は、試験装置のハードウェア構成例を示す図である。
試験装置３００は、例えば、図４のようなコンピュータとして実現することができる。このコンピュータは、ＣＰＵ３０１によって装置全体が制御されている。ＣＰＵ３０１には、バス３０９を介して、ＲＡＭ３０２と複数の周辺機器が接続されている。
【００４２】
ＲＡＭ３０２は、コンピュータの主記憶装置として使用される。ＲＡＭ３０２には、ＣＰＵ３０１に実行させるプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ３０２には、ＣＰＵ３０１による処理に必要な各種データが格納される。
【００４３】
バス３０９に接続されている周辺機器としては、ＨＤＤ３０３、グラフィック処理装置３０４、入力インタフェース３０５、光学ドライブ装置３０６、ＳＡＳインタフェース３０７およびＬＡＮインタフェース３０８がある。
【００４４】
ＨＤＤ３０３は、コンピュータの二次記憶装置として使用される。ＨＤＤ３０３には、ＣＰＵ３０１が実行するプログラムや、各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【００４５】
グラフィック処理装置３０４には、モニタ３０４ａが接続されている。グラフィック処理装置３０４は、ＣＰＵ３０１からの命令に従って、画像をモニタ３０４ａの画面に表示させる。モニタ３０４ａとしては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００４６】
入力インタフェース３０５には、例えば、キーボード３０５ａとマウス３０５ｂとが接続されている。入力インタフェース３０５は、キーボード３０５ａやマウス３０５ｂから送られてくる信号をＣＰＵ３０１に送信する。マウス３０５ｂは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００４７】
光学ドライブ装置３０６は、レーザ光などを利用して、光ディスク３０６ａに記録されたデータの読み取りを行う。光ディスク３０６ａは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク３０６ａには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４８】
ＳＡＳインタフェース３０７は、ディスクアレイ装置１００のディスクインタフェース１０５に設けられたいずれかのポートとＳＡＳケーブル４０３を介して接続し、ディスクアレイ装置１００との間でデータを送受信する。ＳＡＳインタフェース３０７は、例えば、ディスクアレイ装置１００から発行された、ＳＡＳ規格に従った制御コマンドを受信して、ＣＰＵ３０１に送信する。また、受信した制御コマンドに対する応答情報をＣＰＵ３０１から受信し、受信した応答情報をディスクアレイ装置１００に送信する。
【００４９】
ＬＡＮインタフェース３０８は、ディスクアレイ装置１００のＬＡＮインタフェース１０６とＬＡＮケーブル４０２を介して接続し、ディスクアレイ装置１００との間でデータを送受信する。ＬＡＮインタフェース３０８は、例えば、コマンドキューの蓄積状態を示す情報など、ディスクアレイ装置１００内の動作状態を示す情報を、ディスクアレイ装置１００から受信して、ＣＰＵ３０１に送信する。
【００５０】
なお、ホスト装置２００についても、図４と同様のハードウェア構成を持つコンピュータとして実現できる。ただし、ホスト装置２００は、ディスクアレイ装置１００との間でデータを送受信する通信インタフェースとして、光ケーブル４０１を通じて光信号を送受信するファイバチャネルインタフェースを備える。
【００５１】
図５は、ホスト装置およびディスクアレイ装置がそれぞれ備える処理機能の例を示すブロック図である。
ホスト装置２００は、アクセス要求部２１０を備えている。アクセス要求部２１０の処理は、例えば、ホスト装置２００が備えるＣＰＵが所定のプログラムを実行することで実現される。
【００５２】
一方、ディスクアレイ装置１００は、コマンドキュー１２１〜１２４、コマンド処理部１３０、キュー管理部１４０および状態通知部１５０を備えている。これらのうち、コマンド処理部１３０、キュー管理部１４０および状態通知部１５０の処理は、例えば、ディスクアレイ装置１００が備えるＣＰＵ１０１が所定のプログラムを実行することで実現される。
【００５３】
コマンドキュー１２１〜１２４は、コマンド処理部１３０からＨＤＤ（または試験装置３００）に対して発行される制御コマンドを一時的に蓄積するキューである。コマンドキュー１２１〜１２４は、それぞれあらかじめ決められた数の制御コマンドを蓄積可能である。コマンドキュー１２１〜１２４は、ディスクインタフェース１０５が備えるポート１０５ａ〜１０５ｄのそれぞれに対応して設けられている。コマンドキュー１２１は、ポート１０５ａに接続されたＨＤＤ１０７ａに発行される制御コマンドを一時的に蓄積する。同様に、コマンドキュー１２２は、ポート１０５ｂに接続されたＨＤＤ１０７ｂに発行される制御コマンドを一時的に蓄積し、コマンドキュー１２３は、ポート１０５ｃに接続されたＨＤＤ１０７ｃに発行される制御コマンドを一時的に蓄積する。また、コマンドキュー１２４は、ポート１０５ｄに接続されたＨＤＤ１０７ｄまたは試験装置３００に発行される制御コマンドを一時的に蓄積する。
【００５４】
ホスト装置２００のアクセス要求部２１０は、ディスクアレイ装置１００に対してＨＤＤ１０７ａ〜１０７ｄに対するアクセス要求を行う。例えば、アクセス要求部２１０は、ディスクアレイ装置１００に対して、ＨＤＤに記憶されたデータの読み出しを要求する。あるいは、アクセス要求部２１０は、ディスクアレイ装置１００に対して、ＨＤＤに対するデータの書き込みを要求する。
【００５５】
ディスクアレイ装置１００のコマンド処理部１３０は、ホスト装置２００のアクセス要求部２１０からのアクセス要求を受け付けると、要求されたアクセス処理に対応する、ＳＡＳ規格に従った制御コマンドを生成する。例えば、アクセス要求部２１０からデータの読み出しが要求された場合、コマンド処理部１３０は、読み出し元として指定されたＨＤＤからのデータ読み出しを要求する“Ｒｅａｄ”コマンドを生成する。また、アクセス要求部２１０からデータの書き込みが要求された場合、コマンド処理部１３０は、書き込み先として指定されたＨＤＤへのデータの書き込みを要求する“Ｗｒｉｔｅ”コマンドを生成する。
【００５６】
コマンド処理部１３０は、生成した制御コマンドを、アクセス要求先のＨＤＤに対応するコマンドキューに入力する。コマンドキューに入力された制御コマンドは、キュー管理部１４０の制御の下で、コマンドキューへの入力順にＨＤＤ（または試験装置３００）に対して出力される。
【００５７】
アクセス要求部２１０からのアクセス要求先のＨＤＤに対して制御コマンドが発行された後、制御コマンドに応じた処理をＨＤＤが正常に実行した場合には、制御コマンドに応じた処理が正常に実行されたことを示す応答情報がコマンド処理部１３０に返信される。以下、制御コマンドに応じた処理が正常に実行されたことを示す応答情報を、「正常応答情報」と呼ぶ。なお、制御コマンドの発行先が試験装置３００であった場合でも、正常応答情報が試験装置３００から返信される場合もある。
【００５８】
コマンド処理部１３０は、ＨＤＤまたは試験装置３００から正常応答情報を受信すると、アクセス要求部２１０に対して、要求した処理が正常に実行されたことを通知する。また、アクセス要求部２１０が要求した処理がデータの読み出し要求であった場合には、コマンド処理部１３０は、ＨＤＤまたは試験装置３００から正常応答情報とともに受信した読み出しデータを、アクセス要求部２１０に転送する。
【００５９】
一方、アクセス要求部２１０からのアクセス要求先のＨＤＤに対して制御コマンドが発行された後、ＨＤＤにおいて制御コマンドに応じた処理のエラーが発生した場合には、エラーが発生したことを示す応答情報がコマンド処理部１３０に返信される。以下、エラーが発生したことを示す応答情報を、「エラー応答情報」と呼ぶ。なお、制御コマンドの発行先が試験装置３００であった場合でも、エラー応答情報が試験装置３００から返信される場合もある。コマンド処理部１３０は、ＨＤＤまたは試験装置３００からエラー応答情報を受信すると、アクセス要求部２１０に対して、要求した処理のエラーが発生したことを通知する。
【００６０】
なお、ホスト装置２００のアクセス要求部２１０がディスクアレイ装置１００のコマンド処理部１３０に対して要求するアクセス要求は、本実施の形態では、ディスクアレイ装置１００の動作検証用のものであってよい。アクセス要求部２１０は、例えば、動作検証を行うユーザの操作入力に応じて、ディスクアレイ装置１００のＨＤＤ１０７ａ〜１０７ｄのいずれかに対する複数回のアクセス要求を連続して行う。また、ディスクアレイ装置１００のコマンド処理部１３０から通知される、アクセス要求の結果を示す情報については、ホスト装置２００に接続されたモニタに表示することなどによって、ユーザが確認可能とされる。
【００６１】
ディスクアレイ装置１００のキュー管理部１４０は、コマンドキュー１２１〜１２４のそれぞれにおけるデータ蓄積動作を制御する。キュー管理部１４０は、コマンドキュー１２１〜１２４のそれぞれに対応するキューカウンタ１４１〜１４４を備える。キューカウンタ１４１〜１４４は、それぞれコマンドキュー１２１〜１２４に現在蓄積されている制御コマンドの数を示す。
【００６２】
ここで、図６は、キューカウンタによるカウント値について説明する図である。なお、図６では例として、コマンドキュー１２１についてのカウント値について示す。
キュー管理部１４０は、例えば、ディスクアレイ装置１００のＲＡＭ１０２、あるいは、ディスクインタフェース１０５内のメモリに、コマンドキュー１２１〜１２４の領域を確保する。コマンドキュー１２１〜１２４のそれぞれは、決められた数の記憶領域を備える。本実施の形態では、図６に示すように、コマンドキュー１２１〜１２４のそれぞれは、領域＃１〜＃２０の２０個ずつの記憶領域を備えるものとする。コマンドキュー内の各記憶領域には、制御コマンドのみ、あるいは、制御コマンドとこれに関連するデータが格納される。コマンドキュー内の各記憶領域の大きさはすべて同じである必要はなく、各記憶領域がキュー管理部１４０によって動的に確保されてもよい。
【００６３】
キューカウンタ１４１は、コマンドキュー１２１に蓄積された制御コマンドの数をカウントする。例えば、図６（Ａ）に示すように、コマンドキュー１２１に制御コマンドが１つも蓄積されていない場合、キューカウンタ１４１のカウント値は「０」である。また、図６（Ｂ）に示すように、コマンドキュー１２１に２つの制御コマンドが蓄積されている場合、キューカウンタ１４１のカウント値は「２」である。また、図６（Ｃ）に示すように、コマンドキュー１２１内のすべての記憶領域に制御コマンドが蓄積されている場合、キューカウンタ１４１のカウント値は上限値の「２０」である。この図６（Ｃ）のように、キューカウンタ１４１のカウント値が上限値である状態は、「キューフル状態」と呼ばれる。
【００６４】
以下、図５に戻って説明する。
キュー管理部１４０は、次のようにしてコマンドキュー１２１〜１２４からの制御コマンドの発行処理を制御する。なお、ここでは例として、コマンドキュー１２１からポート１０５ａを介してＨＤＤ１０７ａに対して制御コマンドが発行される際の処理について説明する。
【００６５】
キュー管理部１４０は、コマンドキュー１２１に対してコマンド処理部１３０から１つ制御コマンドが入力されたとき、コマンドキュー１２１に対応するキューカウンタ１４１をカウントアップする。また、キュー管理部１４０は、コマンドキュー１２１の先頭の制御コマンドをＨＤＤ１０７ａに発行した後、発行した制御コマンドに応じた処理がＨＤＤ１０７ａで正常に実行されるまで、発行した制御コマンドをコマンドキュー１２１に残しておく。そして、発行した制御コマンドに対する正常応答情報がＨＤＤ１０７ａからコマンド処理部１３０に返信され、正常応答情報を受信したことがコマンド処理部１３０から通知されると、キュー管理部１４０は、コマンドキュー１２１の先頭に残しておいた制御コマンドを削除するとともに、キューカウンタ１４１をカウントダウンする。
【００６６】
また、キュー管理部１４０は、キューカウンタ１４１のカウント値が上限値であるキューフル状態では、コマンド処理部１３０が、コマンドキュー１２１に対して新たな制御コマンドを入力することを拒否する。
【００６７】
なお、キュー管理部１４０は、コマンドキュー１２２〜１２４のそれぞれからの制御コマンドの発行処理についても、キューカウンタ１４２〜１４４をそれぞれ利用して上記と同様の手順で制御する。
【００６８】
状態通知部１５０は、ディスクアレイ装置１００の内部の状態に関する状態情報を、試験装置３００などの外部機器に通知する。本実施の形態では、状態通知部１５０は、状態情報として、キュー管理部１４０内のキューカウンタ１４１〜１４４の各カウント値を、試験装置３００に対して通知する。
【００６９】
図７は、試験装置が備える処理機能の例を示すブロック図である。
試験装置３００は、エミュレート部３２１、状態監視部３２２およびタイムアウト測定制御部３２３を備えている。これらのエミュレート部３２１、状態監視部３２２およびタイムアウト測定制御部３２３の各処理は、例えば、試験装置３００のＣＰＵ３０１が所定のプログラムを実行することで実現される。また、試験装置３００内のＲＡＭ３０２などの記憶領域には、エラー応答設定情報３３１および応答遅延時間３３２が設定される。
【００７０】
エミュレート部３２１は、ディスクアレイ装置１００のコマンド処理部１３０から発行された制御コマンドに対するＨＤＤでの応答処理をエミュレートする。例えば、エミュレート部３２１は、コマンド処理部１３０から“Ｒｅａｄ”コマンドが発行されると、正常応答情報とともに、読み出しデータとして適当なデータをコマンド処理部１３０に対して返信する。また、エミュレート部３２１は、コマンド処理部１３０から“Ｗｒｉｔｅ”コマンドが発行されると、“Ｗｒｉｔｅ”コマンドとともに書き込みデータを受信して、正常応答情報をコマンド処理部１３０に返信する。
【００７１】
さらに、エミュレート部３２１は、コマンド処理部１３０から発行された制御コマンドを受信したとき、エラー応答情報をコマンド処理部１３０に返信することもできる。エラー応答情報をコマンド処理部１３０に返信することで、ＨＤＤにおいてエラーが発生したときに、コマンド処理部１３０などのディスクアレイ装置１００の処理機能が正しい処理を実行するかを検証できる。本実施の形態では、エミュレート部３２１は、状態監視部３２２によって、ディスクアレイ装置１００内のコマンドキュー１２４がキューフル状態になったことが検知された場合に、エラー応答情報をコマンド処理部１３０に返信する。
【００７２】
ここで、エラー応答設定情報３３１は、コマンドキュー１２４がキューフル状態になった場合に、エミュレート部３２１がどのようなエラー応答情報を返信するかが設定される。このエラー応答設定情報３３１には、ユーザの設定操作に応じて、例えば１種類のエラー応答情報が設定されればよい。あるいは、エラー応答設定情報３３１には、次の図８に示すように、受信した制御コマンドごとにエラー応答情報が設定されてもよい。
【００７３】
図８は、エラー応答設定情報に設定されるデータの例を示す図である。
エラー応答設定情報３３１は、例えば、図８に示すようなテーブルとして実現される。図８のエラー応答設定情報３３１には、ユーザの設定操作に応じて、コマンド処理部１３０から受信した制御コマンドの種類と、返信するエラー応答情報の種類とが、対応付けて設定される。図８の例では、“Ｒｅａｄ”コマンドを受信した場合には、“Ｍｅｄｉｕｍ  Ｅｒｒｏｒ”を示すエラー応答情報を返信し、“Ｗｒｉｔｅ”コマンドを受信した場合には、“Ｈａｒｄｗａｒｅ  Ｅｒｒｏｒ”を示すエラー応答情報を返信するように設定されている。なお、“Ｍｅｄｉｕｍ  Ｅｒｒｏｒ”とは、記録媒体または記録データの不具合が発生したことを示すものであり、“Ｈａｒｄｗａｒｅ  Ｅｒｒｏｒ”とは、ハードウェアの不具合が発生したことを示すものである。
【００７４】
以下、図７に戻って説明する。
状態監視部３２２は、ディスクアレイ装置１００の状態通知部１５０から状態情報を受信することで、ディスクアレイ装置１００の内部の状態を監視する。本実施の形態では、状態監視部３２２は、状態情報として、コマンドキュー１２４に対応するキューカウンタ１４４のカウント値を、状態通知部１５０から受信する。そして、状態監視部３２２は、キューカウンタ１４４のカウント値が上限値である「２０」であるときに、コマンドキュー１２４がキューフルであることをエミュレート部３２１に通知する。
【００７５】
タイムアウト測定制御部３２３は、ディスクアレイ装置１００の動作試験の初期段階において、エミュレート部３２１を制御して、ディスクアレイ装置１００のコマンド処理部１３０におけるタイムアウト時間を測定する。タイムアウト時間とは、コマンドキューの先頭から制御コマンドが発行されてから、発行された制御コマンドに対する応答情報をコマンド処理部１３０が待機する時間の上限を示す。なお、コマンド処理部１３０は、タイムアウト時間以内に応答情報を受信しなかった場合、例えば、キュー管理部１４０に対して、同じ制御コマンドをコマンドキューの先頭から再度発行するように要求する。
【００７６】
タイムアウト測定制御部３２３は、エミュレート部３２１がディスクアレイ装置１００からの制御コマンドを受信してから、正常応答情報を返信するまでの応答遅延時間を徐々に変化させることで、タイムアウト時間を自動的に測定する。タイムアウト測定制御部３２３は、測定したタイムアウト時間より短く、かつタイムアウト時間にできるだけ近い値を、試験処理時にエミュレート部３２１によって利用される応答遅延時間３３２として設定する。
【００７７】
エミュレート部３２１は、タイムアウト測定処理の後の試験処理時に、コマンド処理部１３０から発行された制御コマンドを受信してから、正常応答情報を返信するまでの時間を応答遅延時間３３２だけ遅延させる。正常応答情報の返信を応答遅延時間３３２の分だけ遅延させることで、ディスクアレイ装置１００のコマンドキュー１２４に制御コマンドが溜まりやすくなる。
【００７８】
次に、試験装置３００によるディスクアレイ装置１００の動作試験の手順について説明する。まず、図９は、ディスクアレイ装置の動作試験全体の手順を示すフローチャートである。
【００７９】
［ステップＳ１１］試験を行うユーザは、試験装置３００に対して初期設定を行う。この初期設定では、例えば、エラー応答設定情報３３１に対する設定が行われる。また、ユーザは、例えば、ホスト装置２００に対して、動作試験用のアクセス要求を行うように設定する操作を行ってもよい。
【００８０】
［ステップＳ１２］ホスト装置２００のアクセス要求部２１０は、ディスクアレイ装置１００内のＨＤＤに対するアクセス要求を開始する。アクセス要求部２１０は、例えば、動作試験用のアクセス要求処理として、ＨＤＤ１０７ｄに対するアクセス要求を連続的に行う。
【００８１】
なお、試験装置３００は、アクセス要求部２１０に対して、ＬＡＮケーブルなどの通信線を通じて、アクセス要求の開始を要求できるようにしてもよい。また、アクセス要求部２１０の機能が試験装置３００に設けられ、図９に示すすべての処理が試験装置３００によって実行されるようにしてもよい。
【００８２】
なお、ステップＳ１１とステップＳ１２の処理順は、逆としてもよい。
［ステップＳ１３］タイムアウト測定制御部３２３は、エミュレート部３２１を制御して、タイムアウト時間の測定処理を実行させる。タイムアウト測定制御部３２３は、測定されたタイムアウト時間より短く、かつタイムアウト時間にできるだけ近い値を、応答遅延時間３３２に設定する。なお、このステップＳ１３の測定処理については、図１０において詳しく説明する。
【００８３】
［ステップＳ１４］エミュレート部３２１は、エラー発生処理を開始する。このエラー発生処理では、エミュレート部３２１は、ディスクアレイ装置１００のコマンドキュー１２４がキューフル状態になったときに、エラー応答情報を送信する。このエラー発生処理により、エラー応答情報を受信したときのディスクアレイ装置１００の動作が検証される。なお、このステップＳ１４のエラー発生処理については、図１１において詳しく説明する。
【００８４】
図１０は、タイムアウト時間測定処理の手順の例を示すフローチャートである。
［ステップＳ２１］タイムアウト測定制御部３２３は、エミュレート部３２１が制御コマンドを受信してから正常応答情報を返信するまでの応答遅延時間３３２として、所定の初期値（例えば５秒）を設定する。
【００８５】
［ステップＳ２２］エミュレート部３２１は、ディスクアレイ装置１００から発行される制御コマンドを監視する。ディスクアレイ装置１００から発行された制御コマンドをエミュレート部３２１が受信すると（Ｓ２２：Ｙｅｓ）、ステップＳ２３の処理が実行される。
【００８６】
［ステップＳ２３］エミュレート部３２１は、制御コマンドの発行元のコマンド処理部１３０においてタイムアウトが発生したかを監視する。なお、エミュレート部３２１は、コマンド処理部１３０から、ステップＳ２２で発行された制御コマンドに応じた処理の実行をキャンセルする制御コマンドを受信した場合に、タイムアウトが発生したと判断する。
【００８７】
［ステップＳ２４］エミュレート部３２１は、ステップＳ２２で制御コマンドを受信してから、ステップＳ２１で設定された応答遅延時間３３２が経過したかを判定する。
これらのステップＳ２３，Ｓ２４では、エミュレート部３２１は、ステップＳ２２で制御コマンドを受信してから応答遅延時間３３２が経過するまでの間、コマンド処理部１３０においてタイムアウトが発生するかを監視する。エミュレート部３２１は、ステップＳ２２で制御コマンドを受信してから応答遅延時間３３２が経過する前に、コマンド処理部１３０においてタイムアウトが発生した場合（Ｓ２３：Ｙｅｓ）に、タイムアウト測定制御部３２３に対してタイムアウトの発生を通知する。この後、ステップＳ３０の処理が実行される。
【００８８】
一方、エミュレート部３２１がステップＳ２２で制御コマンドを受信してから、タイムアウトが発生することなく応答遅延時間３３２が経過した場合（Ｓ２４：Ｙｅｓ）には、ステップＳ２５の処理が実行される。
【００８９】
［ステップＳ２５］エミュレート部３２１は、ステップＳ２４で応答遅延時間３３２が経過したと判定すると、応答遅延時間３３２が経過したことをタイムアウト測定制御部３２３に通知するとともに、コマンド処理部１３０に対して正常応答情報を返信する。応答遅延時間３３２が経過したことの通知を受けたタイムアウト測定制御部３２３は、応答遅延時間３３２の値を所定時間（例えば１秒）だけ長く設定する。
【００９０】
［ステップＳ２６］エミュレート部３２１は、ディスクアレイ装置１００から発行される制御コマンドを監視する。ディスクアレイ装置１００から発行された制御コマンドをエミュレート部３２１が受信すると（Ｓ２６：Ｙｅｓ）、ステップＳ２７の処理が実行される。
【００９１】
［ステップＳ２７］エミュレート部３２１は、ステップＳ２３と同様に、コマンド処理部１３０においてタイムアウトが発生したかを監視する。
［ステップＳ２８］エミュレート部３２１は、ステップＳ２６で制御コマンドを受信してから、ステップＳ２５で設定された応答遅延時間３３２が経過したかを判定する。
【００９２】
これらのステップＳ２７，Ｓ２８では、エミュレート部３２１は、ステップＳ２６で制御コマンドを受信してから応答遅延時間３３２が経過するまでの間、コマンド処理部１３０においてタイムアウトが発生するかを監視する。エミュレート部３２１は、ステップＳ２６で制御コマンドを受信してから応答遅延時間３３２が経過する前に、コマンド処理部１３０においてタイムアウトが発生した場合（Ｓ２７：Ｙｅｓ）に、タイムアウト測定制御部３２３に対してタイムアウトの発生を通知する。この後、ステップＳ２９の処理が実行される。
【００９３】
一方、エミュレート部３２１がステップＳ２６で制御コマンドを受信してから、タイムアウトが発生することなく応答遅延時間３３２が経過した場合（Ｓ２８：Ｙｅｓ）には、ステップＳ２５の処理が再度実行される。この場合、応答遅延時間３３２がさらに長く設定され（ステップＳ２５）、エミュレート部３２１が次の制御コマンドを受信（ステップＳ２６）した後、設定された応答遅延時間３３２が経過するまでに、タイムアウトが発生するか否かが判定される（ステップＳ２７，Ｓ２８）。
【００９４】
［ステップＳ２９］ステップＳ２７でタイムアウトが発生したことの通知を受けたタイムアウト測定制御部３２３は、応答遅延時間３３２を所定時間（例えば１秒）だけ短く設定する。このステップＳ２９が実行された後、ステップ３５の処理が実行される。
【００９５】
［ステップＳ３０］ステップＳ２３または後述するステップＳ３２でタイムアウトが発生したことの通知を受けたタイムアウト測定制御部３２３は、応答遅延時間３３２を所定時間（例えば１秒）だけ短く設定する。
【００９６】
［ステップＳ３１］エミュレート部３２１は、ディスクアレイ装置１００から発行される制御コマンドを監視する。ディスクアレイ装置１００から発行された制御コマンドをエミュレート部３２１が受信すると（Ｓ３１：Ｙｅｓ）、ステップＳ３２の処理が実行される。
【００９７】
［ステップＳ３２］エミュレート部３２１は、ステップＳ２３と同様に、コマンド処理部１３０においてタイムアウトが発生したかを監視する。
［ステップＳ３３］エミュレート部３２１は、ステップＳ３１で制御コマンドを受信してから、ステップＳ３０で設定された応答遅延時間３３２が経過したかを判定する。
【００９８】
これらのステップＳ３２，Ｓ３３では、エミュレート部３２１は、ステップＳ３１で制御コマンドを受信してから応答遅延時間３３２が経過するまでの間、コマンド処理部１３０においてタイムアウトが発生するかを監視する。エミュレート部３２１は、ステップＳ３１で制御コマンドを受信してから応答遅延時間３３２が経過する前に、コマンド処理部１３０においてタイムアウトが発生した場合（Ｓ３２：Ｙｅｓ）に、タイムアウト測定制御部３２３に対してタイムアウトの発生を通知する。この後、ステップＳ３０の処理が再度実行される。この場合、応答遅延時間３３２がさらに短く設定され（ステップＳ３０）、エミュレート部３２１が次の制御コマンドを受信（ステップＳ３１）した後、設定された応答遅延時間３３２が経過するまでに、タイムアウトが発生するか否かが判定される（ステップＳ３２，Ｓ３３）。
【００９９】
一方、エミュレート部３２１がステップＳ３１で制御コマンドを受信してから、タイムアウトが発生することなく応答遅延時間３３２が経過した場合（Ｓ３３：Ｙｅｓ）には、ステップＳ３４の処理が実行される。
【０１００】
［ステップＳ３４］エミュレート部３２１は、ステップＳ３３で応答遅延時間３３２が経過したと判定すると、応答遅延時間３３２が経過したことをタイムアウト測定制御部３２３に通知するとともに、コマンド処理部１３０に対して正常応答情報を返信する。
【０１０１】
［ステップＳ３５］タイムアウト測定制御部３２３は、エミュレート部３２１に対して、タイムアウト時間の測定が終了したことを通知する。通知を受けたエミュレート部３２１は、図９のステップＳ１４に示したエラー発生処理を開始する。なお、このステップＳ３５が実行される時点で設定された応答遅延時間３３２が、図９のステップＳ１４に示したエラー発生処理において使用される。
【０１０２】
以上の図１０の処理では、タイムアウト測定制御部３２３の制御の下で、エミュレート部３２１が正常応答情報を返信する際の応答遅延時間が徐々に増加または減少されることで、応答遅延時間がどのような値のときにタイムアウトが発生するかが自動的に測定される。
【０１０３】
例えば、応答遅延時間３３２の初期値がコマンド処理部１３０でのタイムアウト時間より短い場合には、応答遅延時間３３２を徐々に長くしてタイムアウトが発生するかが判定される（ステップＳ２５〜Ｓ２８）。そして、ステップＳ２７においてタイムアウトが発生した場合、この時点での応答遅延時間３３２がタイムアウト時間であると判断され、動作試験時に使用される応答遅延時間３３２として、タイムアウト時間より１段階短い時間が設定される（ステップＳ２９）。
【０１０４】
また、応答遅延時間３３２の初期値がコマンド処理部１３０でのタイムアウト時間より長い場合には、応答遅延時間３３２を徐々に短くしてタイムアウトが発生するかが判定される（ステップＳ３０〜Ｓ３３）。そして、ステップＳ３２においてタイムアウトが発生することなく、ステップＳ３３において応答遅延時間３３２が経過した場合に、この時点での応答遅延時間３３２が、タイムアウト時間より１段階短い時間となって、動作試験時に使用されるようになる。
【０１０５】
なお、以上の図１０の処理ではタイムアウト時間を計測したが、コマンド処理部１３０に設定されたタイムアウト時間を試験装置３００がディスクアレイ装置１００から取得できる場合には、取得したタイムアウト時間を基に応答遅延時間３３２が設定されるようにしてもよい。また、ユーザの設定操作により応答遅延時間３３２が設定されてもよい。
【０１０６】
図１１は、エラー発生処理の手順の例を示すフローチャートである。
［ステップＳ４１］エミュレート部３２１は、ディスクアレイ装置１００から発行される制御コマンドを監視する。ディスクアレイ装置１００から発行された制御コマンドをエミュレート部３２１が受信すると（Ｓ４１：Ｙｅｓ）、ステップＳ４２の処理が実行される。
【０１０７】
［ステップＳ４２］エミュレート部３２１は、コマンドキュー１２４がキューフル状態か否かを判定する。
状態監視部３２２は、ディスクアレイ装置１００の状態通知部１５０から、コマンドキュー１２４に対応するキューカウンタ１４４のカウント値を受信する。そして、状態監視部３２２は、状態通知部１５０から受信したカウント値が上限値である「２０」であるときに、コマンドキュー１２４がキューフル状態であることをエミュレート部３２１に通知する。エミュレート部３２１は、状態監視部３２２から、コマンドキュー１２４がキューフル状態であることの通知を受けた場合に、コマンドキュー１２４がキューフル状態であると判定する。
【０１０８】
［ステップＳ４３］エミュレート部３２１は、ステップＳ４１で制御コマンドを受信してから応答遅延時間３３２が経過したかを判定する。
これらのステップＳ４２，Ｓ４３では、エミュレート部３２１は、ステップＳ４１で制御コマンドを受信してから応答遅延時間３３２が経過するまでの間、コマンドキュー１２４がキューフル状態になるかを監視する。エミュレート部３２１は、ステップＳ４１で制御コマンドを受信してから応答遅延時間３３２が経過する前に、コマンドキュー１２４がキューフル状態であると判定した場合（Ｓ４２：Ｙｅｓ）に、ステップＳ４５の処理を実行する。一方、エミュレート部３２１は、ステップＳ４１で制御コマンドを受信してから、キューフル状態であると判定することなく応答遅延時間３３２が経過した場合（Ｓ４３：Ｙｅｓ）には、ステップＳ４４の処理を実行する。
【０１０９】
［ステップＳ４４］エミュレート部３２１は、ステップＳ４３で応答遅延時間３３２が経過したと判定すると、コマンド処理部１３０に対して正常応答情報を返信する。この後、ステップＳ４１に戻り、エミュレート部３２１は、ディスクアレイ装置１００から次に発行される制御コマンドを監視する。
【０１１０】
［ステップＳ４５］エミュレート部３２１は、ステップＳ４２でコマンドキュー１２４がキューフル状態になったと判定すると、コマンド処理部１３０に対してエラー応答情報を返信する。このステップＳ４５では、次のような処理が実行される。
【０１１１】
エミュレート部３２１は、ステップＳ４２でコマンドキュー１２４がキューフル状態になったと判定すると、まず、ＳＡＳ規格上の“Ｃｈｅｃｋ  Ｃｏｎｄｉｔｉｏｎ”を示すエラー応答情報をコマンド処理部１３０に送信する。“Ｃｈｅｃｋ  Ｃｏｎｄｉｔｉｏｎ”を示すエラー応答情報を受信したコマンド処理部１３０は、エラーの内容の通知を要求する“Ｒｅｑｕｅｓｔ  Ｓｅｎｓｅ”コマンドを発行する。“Ｒｅｑｕｅｓｔ  Ｓｅｎｓｅ”コマンドを受信したエミュレート部３２１は、ステップＳ４１で受信した制御コマンドの種類に対応付けられたエラー応答情報をエラー応答設定情報３３１から抽出し、抽出したエラー応答情報をコマンド処理部１３０に返信する。
【０１１２】
以上の図１１の処理では、エミュレート部３２１は、ステップＳ４５においてコマンドキュー１２４がキューフル状態になったと判定したときに、コマンド処理部１３０に対してエラー応答情報を返信する。これにより、コマンドキュー１２４がキューフル状態であるときにＨＤＤでエラーが発生した場合に、コマンド処理部１３０などのディスクアレイ装置１００内の処理機能が正常な処理を行うかを検証することができる。
【０１１３】
ここで、状態監視部３２２は、ディスクアレイ装置１００の状態通知部１５０から通知されるキューカウンタ１４４のカウント値に基づいて、コマンドキュー１２４がキューフル状態になったことを正確に判定できる。そして、エミュレート部３２１は、状態監視部３２２による判定結果に基づいて、コマンドキュー１２４がキューフル状態になったことを判定し、エラー応答情報を返信する。
【０１１４】
このため、上記処理によれば、コマンドキュー１２４がキューフル状態になったときに、コマンド処理部１３０に対してエラー応答情報が確実に送信されて、ＨＤＤでエラーが発生した状態を擬似的につくり出すことができるようになる。従って、コマンドキュー１２４がキューフル状態になったときのディスクアレイ装置１００の動作を高精度に検証できる。
【０１１５】
さらに、上記の試験装置３００では、エラー応答設定情報３３１において、コマンド処理部１３０に対して返信するエラー応答情報の種類を任意に設定可能である。このため、コマンドキュー１２４がキューフル状態になったときのディスクアレイ装置１００の動作を、ＨＤＤで擬似的に発生されたエラーの種類ごとに検証することができる。
【０１１６】
また、エミュレート部３２１は、エラー応答設定情報３３１に基づき、受信した制御コマンドの種類に応じて異なる種類のエラー応答情報を返信することもできる。このため、コマンドキュー１２４がキューフル状態になったときのディスクアレイ装置１００の動作を、ディスクアレイ装置１００から発行された制御コマンドの種類と、制御コマンドに対するエラー応答情報の種類との組み合わせごとに、検証することもできる。
【０１１７】
〔第３の実施の形態〕
上記の第２の実施の形態では、コマンドキュー１２４がキューフル状態になったときのディスクアレイ装置１００の動作を検証することが可能であった。これに対して、以下の第３の実施の形態では、キューフル状態に限らず、コマンドキュー１２４における種々のデータ蓄積状態に応じて、ディスクアレイ装置１００が正常に動作するかを検証できるようにする。
【０１１８】
図１２は、第３の実施の形態に係る試験装置が備える処理機能の例を示すブロック図である。この図１２では、図７と同じ構成要素には同じ符号を付して示している。
図１２に示す試験装置３００ａにおいて、状態監視部３２２ａは、第２の実施の形態の状態監視部３２２と同様に、ディスクアレイ装置１００の状態通知部１５０から、状態情報として、コマンドキュー１２４に対応するキューカウンタ１４４のカウント値を受信する。また、状態監視部３２２ａは、キューカウンタ１４４のカウント値が、ＲＡＭ３０２などに設定されたエラー発生条件３３３に合致した場合に、エミュレート部３２１に対してエラー発生条件３３３に合致したことを通知する。
【０１１９】
エラー発生条件３３３には、キューカウンタ１４４のカウント値がどのような状態になったときにエミュレート部３２１にエラー応答情報を返信させるかを示す情報が設定される。エラー発生条件３３３には、ユーザの設定操作に応じて、例えば次のような条件を設定することが可能である。
【０１２０】
（条件１）キューカウンタ１４４のカウント値が所定の値を超えた。
（条件２）キューカウンタ１４４のカウント値が所定の値以下である。
（条件３）キューカウンタ１４４のカウント値が増加した。
【０１２１】
（条件４）キューカウンタ１４４のカウント値が減少した。
これらのうち、条件３および条件４は、例えば、所定時間内に所定の値だけカウント値が増加または減少したという条件とすることができる。
【０１２２】
なお、図示しないが、第３の実施の形態に係る試験装置３００ａでは、図９に示した動作試験全体の処理手順のステップＳ１１において、ユーザの設定操作に応じてエラー発生条件３３３が設定されればよい。
【０１２３】
図１３は、第３の実施の形態におけるエラー発生処理の手順の例を示すフローチャートである。
［ステップＳ５１］エミュレート部３２１は、ディスクアレイ装置１００から発行される制御コマンドを監視する。ディスクアレイ装置１００から発行された制御コマンドをエミュレート部３２１が受信すると（Ｓ５１：Ｙｅｓ）、ステップＳ５２の処理が実行される。
【０１２４】
［ステップＳ５２］エミュレート部３２１は、コマンドキュー１２４のカウント値がエラー発生条件３３３に合致したかを判定する。
状態監視部３２２ａは、ディスクアレイ装置１００の状態通知部１５０から、コマンドキュー１２４に対応するキューカウンタ１４４のカウント値を受信する。そして、状態監視部３２２ａは、状態通知部１５０から受信したカウント値の状態（例えば、現在のカウント値、あるいはカウント値の遷移など）がエラー発生条件３３３に合致した場合に、条件に合致したことをエミュレート部３２１に通知する。エミュレート部３２１は、状態監視部３２２ａから、キューカウンタ１４４のカウント値の状態がエラー発生条件３３３に合致したことの通知を受けた場合（Ｓ５２：Ｙｅｓ）に、ステップＳ５５の処理を実行する。
【０１２５】
［ステップＳ５３］エミュレート部３２１は、ステップＳ５１で制御コマンドを受信してから応答遅延時間３３２が経過したかを判定する。
これらのステップＳ５２，Ｓ５３では、エミュレート部３２１は、ステップＳ５１で制御コマンドを受信してから応答遅延時間３３２が経過するまでの間、キューカウンタ１４４のカウント値の状態がエラー発生条件３３３に合致したかを監視する。エミュレート部３２１は、ステップＳ５１で制御コマンドを受信してから応答遅延時間３３２が経過する前に、キューカウンタ１４４のカウント値の状態がエラー発生条件３３３に合致したと判定した場合（Ｓ５２：Ｙｅｓ）に、ステップＳ５５の処理を実行する。一方、エミュレート部３２１は、ステップＳ５１で制御コマンドを受信してから、キューカウンタ１４４のカウント値の状態がエラー発生条件３３３に合致することなく、応答遅延時間３３２が経過した場合（Ｓ５３：Ｙｅｓ）には、ステップＳ５４の処理を実行する。
【０１２６】
［ステップＳ５４］エミュレート部３２１は、ステップＳ５３で応答遅延時間３３２が経過したと判定すると、コマンド処理部１３０に対して正常応答情報を返信する。この後、ステップＳ５１に戻り、エミュレート部３２１は、ディスクアレイ装置１００から次に発行される制御コマンドを監視する。
【０１２７】
［ステップＳ５５］エミュレート部３２１は、ステップＳ５２でキューカウンタ１４４のカウント値の状態がエラー発生条件３３３に合致したと判定すると、コマンド処理部１３０に対してエラー応答情報を返信する。このステップＳ５５では、エミュレート部３２１は、ステップＳ５１で受信した制御コマンドの種類に対応付けられたエラー応答情報をエラー応答設定情報３３１から抽出し、抽出したエラー応答情報をコマンド処理部１３０に返信する。
【０１２８】
以上の図１３の処理では、コマンドキュー１２４がキューフル状態に限らず、コマンドキュー１２４における種々のデータ蓄積状態に応じて、ディスクアレイ装置１００が正常に動作するかを検証できるようになる。また、例えば、コマンドキュー１２４のデータ蓄積状態が所定の条件と一致したときのディスクアレイ装置１００の動作を、ディスクアレイ装置１００から発行された制御コマンドの種類と、制御コマンドに対するエラー応答情報の種類との組み合わせごとに、検証することもできる。
【０１２９】
なお、以上の第３の実施の形態では、例えば、エラー発生処理の際に、エラー発生条件３３３として設定した内容に応じて、応答遅延時間３３２の設定値を変化させてもよい。応答遅延時間３３２の設定値を変化させることで、コマンドキュー１２４におけるデータ蓄積状態がエラー発生条件３３３に合致する状態になりやすくすることができ、試験効率を向上させることができる。
【０１３０】
例えば、エラー発生条件３３３として上記の条件４が設定された場合、図１３の処理の初期状態では応答遅延時間３３２を長く（すなわちタイムアウト時間の近傍に）設定しておく。そして、キューカウンタ１４４のカウント値が所定の値を超えた場合に、応答遅延時間３３２を短く（例えば０に）変更する。これにより、コマンドキュー１２４を、制御コマンドが所定数溜まった状態から制御コマンドの数が減少する状態に遷移させることができ、上記の条件４に合致する状態をつくり出すことができる。
【０１３１】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、上記の試験装置やホスト装置などが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１３２】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１３３】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１３４】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現することもできる。
【０１３５】
以上の各実施の形態に関し、さらに以下の付記を開示する。
（付記１）  入出力機器に対するアクセス制御を行う電子機器の動作を試験する試験装置において、
前記電子機器が前記入出力機器に発行する制御コマンドが一時的に記憶される、前記電子機器内のコマンドキューにおけるデータの蓄積状態を監視するキュー監視手段と、
前記電子機器から発行された制御コマンドを受信したとき、前記コマンドキューにおけるデータの蓄積状態が所定の条件に合致しない場合には、受信した制御コマンドによって要求された処理が正常に完了したことを示す第１の応答情報を前記電子機器に送信し、前記コマンドキューにおけるデータの蓄積状態が前記所定の条件に合致した場合には、前記受信した制御コマンドによって要求された処理においてエラーが発生したことを示す第２の応答情報を前記電子機器に送信する応答制御手段と、
を有することを特徴とする試験装置。
【０１３６】
（付記２）  前記応答制御手段は、
前記電子機器から発行された制御コマンドを受信すると、受信した制御コマンドに対する前記第１の応答情報を、発行した制御コマンドに対する応答情報を前記電子機器が受信する際のタイムアウト時間より短く、かつ０より大きく設定された応答遅延時間だけ遅延させて前記電子機器に送信し、
前記電子機器からの制御コマンドを受信してから当該制御コマンドに対する前記第１の応答情報を送信するまでの間に、前記コマンドキューにおけるデータの蓄積状態が前記所定の条件に合致した場合に、前記第２の応答情報を前記電子機器に送信する、
ことを特徴とする付記１記載の試験装置。
【０１３７】
（付記３）  前記電子機器から発行された制御コマンドを受信するたびに、受信した制御コマンドに対する前記第１の応答情報を前記電子機器に送信するまでの時間を調整しながら、前記電子機器におけるタイムアウトの発生を検知することで、前記タイムアウト時間を測定するタイムアウト時間測定手段をさらに有し、
前記応答制御手段は、前記タイムアウト時間測定手段によって測定された前記タイムアウト時間を基に前記応答遅延時間を設定する、
ことを特徴とする付記２記載の試験装置。
【０１３８】
（付記４）  前記応答制御手段は、前記電子機器から発行された制御コマンドを受信したとき、前記コマンドキューが満杯になった場合に、前記第２の応答情報を前記電子機器に送信することを特徴とする付記１〜３のいずれか１つに記載の試験装置。
【０１３９】
（付記５）  前記応答制御手段は、前記電子機器から発行された制御コマンドを受信したとき、前記コマンドキューにおいてデータが所定の量だけ蓄積された場合に、前記第２の応答情報を前記電子機器に送信することを特徴とする付記１〜３のいずれか１つに記載の試験装置。
【０１４０】
（付記６）  前記第２の応答情報によって前記電子機器に通知される、発生したエラーの種類は、ユーザの操作入力に応じて任意に設定可能であることを特徴とする付記１〜５のいずれか１つに記載の試験装置。
【０１４１】
（付記７）  前記応答制御手段は、前記第２の応答情報を送信する際に、制御コマンドの種類と通知するエラーの種類とが対応付けて記録媒体に設定された設定情報を参照し、受信した制御コマンドに対応付けられたエラーの種類を前記設定情報から読み出し、読み出したエラーの種類を前記第２の応答情報によって前記電子機器に通知することを特徴とする付記１〜５のいずれか１つに記載の試験装置。
【０１４２】
（付記８）  前記応答制御手段が前記第２の応答情報を送信するか否かを判定する際の前記所定の条件は、ユーザの操作入力に応じて任意に設定可能であることを特徴とする付記１〜７のいずれか１つに記載の試験装置。
【０１４３】
（付記９）  前記キュー監視手段は、前記コマンドキューに蓄積された制御コマンドの数を示す情報を前記電子機器から受信することを特徴とする付記１〜８のいずれか１つに記載の試験装置。
【０１４４】
（付記１０）  前記電子機器は、前記入出力機器として記憶装置を有するストレージ装置であることを特徴とする付記１〜９のいずれか１つに記載の試験装置。
（付記１１）  入出力機器に対するアクセス制御を行う電子機器の動作を試験する試験方法において、
試験装置が、前記電子機器が前記入出力機器に発行する制御コマンドが一時的に記憶される、前記電子機器内のコマンドキューにおけるデータの蓄積状態を監視し、
前記試験装置が、前記電子機器から発行された制御コマンドを受信したとき、前記コマンドキューにおけるデータの蓄積状態が所定の条件に合致しない場合には、受信した制御コマンドによって要求された処理が正常に完了したことを示す第１の応答情報を前記電子機器に送信し、前記コマンドキューにおけるデータの蓄積状態が前記所定の条件に合致した場合には、前記受信した制御コマンドによって要求された処理においてエラーが発生したことを示す第２の応答情報を前記電子機器に送信する、
ことを特徴とする試験方法。
【符号の説明】
【０１４５】
１０  試験装置
１１  応答制御手段
１２  キュー監視手段
２０  電子機器
２１  アクセス制御部
２２  コマンドキュー
３０  入出力機器
【図１】
2012043343.tif 000003
【図２】
2012043343.tif 000004
【図３】
2012043343.tif 000005
【図４】
2012043343.tif 000006
【図５】
2012043343.tif 000007
【図６】
2012043343.tif 000008
【図７】
2012043343.tif 000009
【図８】
2012043343.tif 000010
【図９】
2012043343.tif 000011
【図１０】
2012043343.tif 000012
【図１１】
2012043343.tif 000013
【図１２】
2012043343.tif 000014
【図１３】
2012043343.tif 000015