(57)【要約】【課題】専用の試験機を用いずに，上位装置からディスク装置のエラー検証を行うことを可能とする技術を提供する。【解決手段】ディスク装置１は，ホスト２からの，物理ディスク１１０への直接ライトの要求に応じて，整合性がないエラー検出用データが付加された試験データを，キャッシュ部１０５を経由させないで，物理ディスク１１０に直接に書き込む（手順５）。ホスト２は，試験データの通常のリードを要求する。ディスク装置１では，物理ディスク１１０からホスト２に試験データが送られる過程で，試験データと整合性がないエラー検出用データによってエラーが検出され，エラー情報がホスト２に通知される（手順６）。ホスト２は，期待されたエラー情報がディスク装置１から通知されたか否かを判定することにより，ディスク装置１のエラー検出機能の正常／異常を検証する（手順７）。【選択図】図１１
2011008650.tif 000002
【特許請求の範囲】
【請求項１】
物理記憶媒体およびキャッシュを備える記憶装置と，その記憶装置の上位装置とによるエラー検証方法であって，
前記上位装置が，整合性がないエラー検出用データが付加された試験データの，前記物理記憶媒体への直接書き込みの要求を，前記記憶装置に発行する過程と，
前記記憶装置が，前記上位装置から受けた直接書き込みの要求に応じて，前記整合性がないエラー検出用データが付加された試験データを，前記キャッシュを経由させないで，前記物理記憶媒体に書き込む過程と，
前記上位装置が，前記試験データの読み込みの要求を，前記記憶装置に発行する過程と，
前記上位装置が，前記試験データの読み込みの要求に対して，期待されたエラー情報が前記記憶装置から通知されたか否かを判定する過程とを有する
ことを特徴とするエラー検証方法。
【請求項２】
前記上位装置が，エラー検出用データが付加された試験データの，前記物理記憶媒体からの直接読み込みの要求を，前記記憶装置に発行する過程と，
前記記憶装置が，前記上位装置から受けた直接読み込みの要求に対する応答として，前記物理記憶媒体から読み込まれた，前記エラー検出用データが付加された試験データを，前記キャッシュを経由させないで前記上位装置に送る過程と，
前記上位装置が，前記記憶装置から受け取った，前記エラー検出用データが付加された試験データを書き換えることにより，前記整合性がないエラー検出用データが付加された試験データを生成する過程とをさらに有する
ことを特徴とする請求項１に記載のエラー検証方法。
【請求項３】
前記エラー検出用データは，前記物理記憶媒体内のエラーを検出するためのデータ，または前記物理記憶媒体から前記上位装置へのインタフェースにおけるエラーを検出するためのデータである
ことを特徴とする請求項１または請求項２に記載のエラー検証方法。
【請求項４】
物理記憶媒体およびキャッシュを備える記憶装置と，その記憶装置の上位装置とを有するエラー検証システムであって，
前記上位装置は，
整合性がないエラー検出用データが付加された試験データの，前記物理記憶媒体への直接書き込みの要求を，前記記憶装置に発行する試験データ直接書込み部と，
前記試験データの読み込みの要求を，前記記憶装置に発行する試験データ通常読込み要求部と，
前記試験データの読み込みの要求に対して，期待されたエラー情報が前記記憶装置から通知されたか否かを判定するエラー判定部とを備え，
前記記憶装置は，
前記上位装置から受けた直接書き込みの要求に応じて，前記整合性がないエラー検出用データが付加された試験データを，前記キャッシュを経由させないで，前記物理記憶媒体に書き込むテストモード処理部を備える
ことを特徴とするエラー検証システム。
【請求項５】
物理記憶媒体およびキャッシュを備える記憶装置の上位装置であるコンピュータが実行するプログラムであって，
前記コンピュータに，
整合性がないエラー検出用データが付加された試験データの，前記物理記憶媒体への直接書き込みの要求を前記記憶装置に発行して，前記記憶装置に，整合性がないエラー検出用データが付加された試験データを，前記キャッシュを経由させないで，前記物理記憶媒体に書き込ませる手順と，
前記試験データの読み込みの要求を，前記記憶装置に発行する手順と，
前記試験データの読み込みの要求に対して，期待されたエラー情報が前記記憶装置から通知されたか否かを判定する手順とを
実行させるためのエラー検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
ディスク装置のエラー検証を行うエラー検証方法，エラー検証システムおよびエラー検証プログラムに関するものである。
【背景技術】
【０００２】
ＲＡＩＤ装置などのディスク装置のエラー検証を行う技術がある。ディスク装置のエラー検証では，例えば，ディスク装置内に擬似的に障害を発生させ，正しいエラー信号が検出されるか否かを検証することにより，ディスク装置のエラー検出機能を検証する。
【０００３】
なお，記憶装置などの装置内部にデータの異常を発生させる回路を設けて，装置内の誤り検出訂正部の診断を行う技術が知られている。また，ディスクドライブに専用の試験機を接続し，その試験機によってディスクドライブに書き込まれたテストデータの一部を書き換えることにより，ディスクドライブのＥＣＣ機能を検査する技術が知られている。また，ＣＲＣ（Cyclic Redundancy Code）などのデータ保証コードを用いて，誤ったデータがディスクに書き込まれることを防止することにより，ディスクアレイ装置でのデータ破壊を防止する技術が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平９−２０４３１７号公報
【特許文献２】特開平６−６０５６０号公報
【特許文献３】特開２００５−２５０５５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
専用の試験機を用いたディスク装置のエラー検証では，物理ディスク自体のエラー検証と，物理ディスクから上位装置へのインタフェースのエラー検証とに，それぞれ別の試験機を用意しなければならないという問題がある。
【０００６】
また，複数の物理ディスクを備えるディスク装置の場合には，各物理ディスクに対してそれぞれ試験機を接続してエラー検証を行わなければならないという問題がある。
【０００７】
また，上位装置からディスク装置に破壊データを埋め込んでエラー検証を行わせるにしても，上位装置からのリード／ライトはディスク装置内部のキャッシュを介して行われるため，キャッシュヒットしてしまうと物理ディスクのエラー検証ができないという問題がある。
【０００８】
また，上位装置からのリード／ライトは論理アドレスを指定して実行されるため，上位装置から物理ディスクや物理ディスク上の領域を指定してエラー検証を行うことができないという問題がある。
【０００９】
本発明は，上記の課題の解決を図り，専用の試験機を用いずに，上位装置からディスク装置のエラー検証を行うことを可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
物理記憶媒体およびキャッシュを備える記憶装置と，その記憶装置の上位装置とによるエラー検証方法は，上位装置が整合性がないエラー検出用データが付加された試験データの物理記憶媒体への直接書き込みの要求を記憶装置に発行する過程と，記憶装置が上位装置から受けた直接書き込みの要求に応じて整合性がないエラー検出用データが付加された試験データをキャッシュを経由させないで物理記憶媒体に書き込む過程と，上位装置が試験データの読み込みの要求を記憶装置に発行する過程と，上位装置が試験データの読み込みの要求に対して期待されたエラー情報が記憶装置から通知されたか否かを判定する過程とを有する。
【発明の効果】
【００１１】
上記の技術により，専用の試験機を用いずに，上位装置からディスク装置のエラー検証を行うことが可能となる。
【図面の簡単な説明】
【００１２】
【図１】ディスク装置を運用するシステムの構成例を示す図である。
【図２】試験機を用いたエラー検証の例を説明する図（１）である。
【図３】試験機を用いたエラー検証の例を説明する図（２）である。
【図４】物理ディスク上のデータ構造の例を示す図である。
【図５】本実施の形態によるディスク装置を運用するシステムの構成例を示す図である。
【図６】本実施の形態によるエラー検証処理部の構成例を示す図である。
【図７】本実施の形態によるエラー検出用データの破壊を説明する図である。
【図８】本実施の形態によるSEND DIAGNOSTIC コマンドの例を示す図である。
【図９】本実施の形態のテストモード処理部によるリード時の判定を説明する図である。
【図１０】本実施の形態のテストモード処理部によるライト時の判定を説明する図である。
【図１１】本実施の形態によるエラー検証の流れを説明する図である。
【図１２】本実施の形態のディスク装置によるテストモード処理フローチャートである。
【図１３】本実施の形態のホストによるエラー検証処理フローチャートである。
【図１４】本実施の形態のホストによるエラー検証処理フローチャートである。
【発明を実施するための形態】
【００１３】
以下，本実施の形態について，図を用いて説明する。
【００１４】
まず，ディスク装置のエラー検証についていくつかの技術提案を行い，ディスク装置のエラー検証における問題を提起する。
【００１５】
図１は，ディスク装置を運用するシステムの構成例を示す図である。
【００１６】
図１において，ディスク装置５００は，磁気ディスク装置などの記憶装置である。ここでは，ディスク装置５００が，エラー検証の被試験装置となる。ホスト６００は，ディスク装置５００の上位装置となるコンピュータである。
【００１７】
ディスク装置５００は，装置コントローラ５１０，物理ディスク５２０を備える。装置コントローラ５１０は，ディスク装置５００内の動作を制御する制御部である。装置コントローラ５１０は，ホスト６００と物理ディスク５２０との間のインタフェースの役割も果たす。物理ディスク５２０は，ディスクドライブである。なお，図１では，物理ディスク５２０が１つしか記載されていないが，ＲＡＩＤ構成などのディスク装置５００では，物理ディスク５２０が複数存在する。
【００１８】
以下では，図１に示すようなディスク装置５００の運用システムを例に，ディスク装置５００のエラー検証の提案技術を説明する。
【００１９】
〔試験機を使用したディスク装置のエラー検証〕
ディスク装置５００のエラー検証方法として，エラー検証用の試験機をディスク装置５００に接続してエラー検証を行う方法が考えられる。ディスク装置５００のエラー検証用の試験機は，被試験装置であるディスク装置５００に接続され，ディスク装置５００に擬似障害を注入する。エラー検証用の試験機を用いたエラー検証の技術では，擬似障害箇所へのアクセスによってエラーが発生させられ，エラー発生後の動作の検証が行われる。
【００２０】
図２は，試験機を用いたエラー検証の例を説明する図（１）である。
【００２１】
図２に示すエラー検証の例では，試験機７００が物理ディスク５２０に接続される。試験機７００は，物理ディスク５２０にエラーデータを注入する。物理ディスク５２０は，試験機７００にエラーを通知する。
【００２２】
しかし，図２に示すようなエラー検証の例では，物理ディスク５２０のエラー検証はできても，物理ディスク５２０からホスト６００へのインタフェースのエラー検証はできないという問題がある。
【００２３】
図３は，試験機を用いたエラー検証の例を説明する図（２）である。
【００２４】
図３に示すエラー検証の例では，試験機７１０が物理ディスク５２０の代わりにディスク装置５００に搭載される。試験機７１０は，図２に示す試験機７００とは別の試験機である。試験機７１０は，ホスト６００からのアクセスに対して，エラーデータをホスト６００に送信する。装置コントローラ５１０が，データのエラーを検出し，ホスト６００にエラーを通知する。
【００２５】
しかし，図３に示すようなエラー検証の例では，物理ディスク５２０からホスト６００へのインタフェースのエラー検証はできても，物理ディスク５２０自体のエラー検証はできないという問題がある。
【００２６】
このように，試験機を使用したディスク装置５００のエラー検証では，物理ディスク５２０内のエラー検証と，物理ディスク５２０からホスト６００へのインタフェースのエラー検証とを，同じ装置構成で行うことができない。物理ディスク５２０内のエラー検証と，物理ディスク５２０からホスト６００へのインタフェースのエラー検証とを行うためには，それぞれ専用の試験機を用意し，エラー検証ごとに試験機を接続変更する作業が必要となる。
【００２７】
〔ホスト制御によるディスク装置のエラー検証〕
ディスク装置５００のエラー検証方法として，上位装置であるホスト６００からの制御により，エラー検証を行う方法が考えられる。ホスト６００は，あらかじめ用意された破壊されたデータを，ディスク装置５００にライト（WRITE ，書き込み）して埋め込む。ホスト６００は，埋め込まれた破壊データのリード（READ，読み込み）時に，ディスク装置５００がエラーを検出することを確認する。
【００２８】
ホスト６００からディスク装置５００にデータがライトされる場合には，まず，ディスク装置５００が有するキャッシュにデータがライトされ，物理ディスク５２０に直接にはデータがライトされない。また，キャッシュから物理ディスク５２０へのデータのライトは，ホスト６００の処理とは非同期に行われるので，ホスト６００からは，キャッシュから物理ディスク５２０にデータがライトされるタイミングがわからない。
【００２９】
そのため，ホスト６００がライト後すぐにリードした場合には，キャッシュ上のデータが読まれる可能性が高い。ホスト６００が物理ディスク５２０からデータをリードするためには，非同期に行われるキャッシュから物理ディスク５２０へのデータのライトを待たなければならない。
【００３０】
また，ホスト６００からディスク装置５００へのデータのリード／ライトは，論理アドレスに対して行われる。論理アドレスは，ディスク装置５００の使用者が作成するボリューム単位に割り当てられ，物理ディスク５２０の実装位置や物理ディスク５２０内の領域とは，直接関係がない。
【００３１】
そのため，テストを行う場合にホスト６００からそのままデータのリード／ライトを行っても，狙った物理ディスク５２０上の領域にデータをリード／ライトすることはできない。例えば，ＲＡＩＤ構成で運用されているディスク装置５００のエラー検証では，データ異常時のＲＡＩＤ構成の整合性確認を行うためにも，狙った物理ディスク５２０上の領域へのデータのリード／ライトが必要である。
【００３２】
〔ＥＣＣ（Error Checking and Correction ）領域のデータ破壊方式〕
ディスク装置５００のエラー検証方法として，ＥＣＣ領域のデータを破壊して，エラー検証を行う方法が考えられる。
【００３３】
図４は，物理ディスク上でのデータ構造の例を示す図である。
【００３４】
本実施の形態では，図４に示すように，物理ディスク５２０上でのデータは，ユーザデータの１ブロックごとに，ユーザデータ領域，チェックコード（Check Code）領域，ＥＣＣ領域を有するものとする。
【００３５】
図４に示すデータ構造において，ユーザデータ領域は，ホスト６００からディスク装置５００に書き込まれるデータであるユーザデータの領域である。ユーザデータは，ブロック単位でリード／ライトされる。
【００３６】
チェックコード領域は，ホスト６００によりライトが指示された１ブロックのユーザデータから生成された，チェックコードの領域である。チェックコードは，装置コントローラ５１０で生成される。チェックコードの領域には，例えば，ＣＲＣとＢｌｏｃｋＩＤの値が格納される。チェックコードは，装置コントローラ５１０において誤り検出を行うための誤り検出符号である。すなわち，チェックコードは，物理ディスク５２０からホスト６００へのインタフェースにおいて，エラー検出を行うためのデータである。
【００３７】
ＥＣＣ領域は，ユーザデータとチェックコードとから生成された，ＥＣＣコードの領域である。ＥＣＣコードは，物理ディスク５２０で生成される。ＥＣＣコードは，物理ディスク５２０において誤り検出や誤り訂正を行うための誤り検出訂正符号である。すなわち，ＥＣＣコードは，物理ディスク５２０内のエラー検出を行うためのデータである。
【００３８】
ホスト６００は，原則として，ユーザデータ領域のデータのみ扱うことが可能である。装置コントローラ５１０は，原則として，ユーザデータ領域とチェックコード領域のデータを扱うことが可能である。物理ディスク５２０は，ユーザデータ領域，チェックコード領域，ＥＣＣ領域のすべてのデータを扱うことが可能である。
【００３９】
図４に示すように，ホスト６００は，通常のリード／ライトでアクセス可能なデータは，ユーザデータ領域のデータのみである。すなわち，ホスト６００は，通常のリード／ライトで，物理ディスク５２０上のＥＣＣ領域にアクセスすることができない。
【００４０】
物理ディスク５２０上のＥＣＣ領域のデータ破壊を行うためには，専用の試験機を接続するか，ディスク装置５００内にエラー診断用としてのＥＣＣデータ破壊機能を設ける必要がある。データ破壊の方法としては，例えば，あらかじめデータ破壊された部分を試験機またはＥＣＣデータ破壊機能に用意しておき，ハードウェア的にアドレス変換を行って，データ破壊された部分にアクセスさせる方法が考えられる。
【００４１】
しかし，上記の専用の試験機またはＥＣＣデータ破壊機能は，エラー検証の対象となった１つの物理ディスク５２０のＥＣＣ領域を破壊する専用試験機またはＥＣＣデータ破壊機能になってしまうという問題がある。そのため，エラー検証の対象となっていない物理ディスク５２０の領域については，そのままデータ破壊の検証ができない。例えば，複数の物理ディスク５２０を備えるディスク装置５００で，専用の試験機を用いたエラー検証を行う場合には，各物理ディスク５２０に対して試験機の接続変更を行いながらエラー検証を行わなければならない。また，複数の物理ディスク５２０を備えるディスク装置５００で，ＥＣＣデータ破壊機能によるエラー検証を行う場合には，各物理ディスク５２０にそれぞれＥＣＣデータ破壊機能を設けてエラー検証を行わなければならない。
【００４２】
このように，上記提案技術は，それぞれ何らかの問題点を有している。以下では，このような上記提案技術の問題の解決が図られた，本実施の形態によるディスク装置のエラー検証の技術について説明する。
【００４３】
本実施の形態によるディスク装置のエラー検証の技術では，試験機を使用せずに，上位装置からの制御によってディスク装置内の物理ディスク上のデータを破壊し，物理ディスクでのデータ異常（媒体エラー）や，ディスク装置内の装置コントローラでのデータ異常を発生させる。ディスク装置でデータ異常が検出された場合には，上位装置からの制御に対するリターンとして，エラーコードなどのエラー情報がホストに送付されるため，上位装置側でディスク装置のエラー状態を確認し，ディスク装置のエラー検出機能を検証することができる。
【００４４】
図５は，本実施の形態によるディスク装置を運用するシステムの構成例を示す図である。
【００４５】
図５において，ディスク装置１は，磁気ディスク装置や半導体ディスク装置などの記憶装置である。本実施の形態では，ディスク装置１はＲＡＩＤ構成であるものとする。ホスト２は，ディスク装置１の上位装置となるコンピュータである。
【００４６】
ディスク装置１は，ＣＭ（Controller Module ）１００，物理ディスク１１０を備える。なお，図５では，物理ディスク１１０の記載が１つのみとなっているが，実際には，ＲＡＩＤ構成のディスク装置１は，複数の物理ディスク１１０を備えている。
【００４７】
ＣＭ１００は，ディスク装置１内のすべての動作を制御する中央制御部である。図１に示すディスク装置５００における装置コントローラ５１０に相当する。ＣＭ１００は，ＣＡ（Channel Adapter ）１０１，ＤＡ（Device Adapter）１０２，テストモード処理部１０４，キャッシュ部１０５，チェックコードエラー判定部１０６を備える。
【００４８】
ＣＡ１０１は，ホスト２との接続を制御する。
【００４９】
ＤＡ１０２は，複数の物理ディスク１１０を制御する。
【００５０】
また，ＤＡ１０２は，物理ディスク情報を記憶する物理ディスク情報記憶部１０３を備える。物理ディスク情報は，データの論理アドレスに対応する，物理的なデータの記録位置の情報，すなわち論理アドレスに対応する物理ディスク１１０およびその物理ディスク１１０内の領域を示す情報が記録された情報である。ＤＡ１０２は，ホスト２からの論理アドレスが指定されたデータのリード／ライト要求に対して，物理ディスク情報を参照して論理アドレスから対象データが記録された物理ディスク１１０を割り出し，割り出された物理ディスク１１０へのアクセスを行う。
【００５１】
また，ホスト２は，ＤＡ１０２にアクセスすることにより，論理アドレスに対応する物理的な記録位置の情報を取得することができる。逆に，ホスト２は，ＤＡ１０２にアクセスすることにより，物理的な記録位置の情報に対応する論理アドレスを取得することもできる。
【００５２】
テストモード処理部１０４は，ホスト２からの要求が，エラー検証時におけるデータの直接リードまたは直接ライトの要求であるか否かを判定する。ホスト２からの要求が直接リードまたは直接ライトの要求である場合には，テストモード処理部１０４は，要求されたデータの直接リードまたは直接ライトを実行する。
【００５３】
本実施の形態では，ホスト２が，物理的なデータの記録位置を直接に指定し，キャッシュ部１０５やチェックコードエラー判定部１０６をバイパスして物理ディスク１１０からデータを読み込むことを，直接リードという。また，ホスト２が，物理的なデータの記録位置を直接に指定し，キャッシュ部１０５をバイパスして物理ディスク１１０にデータを書き込むことを，直接ライトという。なお，以下では，単にリード，ライトと記載されている場合には，ホスト２が，論理アドレスを指定し，キャッシュ部１０５を介した物理ディスク１１０に対するデータの読み込み／書き込みを行う通常のリード，ライトを示すものとする。
【００５４】
キャッシュ部１０５は，ホスト２からの要求がデータの通常のリード／ライトであった場合などに，ホスト２と物理ディスク１１０との間における処理で，一時的なデータの格納を行う。
【００５５】
ホスト２の処理に比べて，物理ディスク１１０からのリードや物理ディスク１１０へのライトの処理は，非常に遅い処理である。そのため、物理ディスク１１０よりも高速にリード／ライトできるキャッシュと呼ばれるメモリに一時的なデータの格納領域を用意し、そこを経由してデータを受け渡しすることで、ホスト２の待ち時間を減らすことができる。ホスト２から同じデータが何度もリードされるような場合には，キャッシュ部１０５に格納されたデータがホスト２に送られるため，物理ディスク１１０へのアクセスが不要となり，処理速度が飛躍的に向上する。
【００５６】
ＣＭ１００は，ホスト２から物理ディスク１１０へのデータのライト時に，物理ディスク１１０にライトされるデータに対してチェックコードを付加し，チェックコードが付加されたデータをキャッシュ部１０５に一時格納する。データのライト時に，ホスト２からディスク装置１に送られてくるデータは，ユーザデータのみである。ＣＭ１００は，ホスト２から送られたユーザデータに基づいてチェックコードを生成し，生成されたチェックコードをユーザデータに付加する。
【００５７】
チェックコードは，ＣＭ１００でデータの正当性を確認するために，データの１ブロック（例えば，５１２バイト）ごとに付加される，エラー検出用データである。本実施の形態では，チェックコードとして，ＣＲＣとＢｌｏｃｋＩＤとの値が，データに付加される。ＣＲＣは，連続して出現する誤りの検出が可能な誤り検出符号である。ＢｌｏｃｋＩＤは，データを格納する場所を示すＩＤであり，不当アドレスへのデータ転送をチェックする際に使用される。
【００５８】
チェックコードエラー判定部１０６は，物理ディスク１１０からホスト２へのデータのリード時に，物理ディスク１１０から読み込まれ，キャッシュ部１０５に一時格納されたデータに付加されたチェックコードを用いて，そのデータの正当性を判定する。
【００５９】
物理ディスク１１０は，例えばＨＤＤ（Hard Disk Drive ）やＳＳＤ（Solid State Drive ）などの物理記憶媒体である。ディスク装置１は，ＲＡＩＤ構成となっているので，複数の物理ディスク１１０を備える。各物理ディスク１１０は，物理ディスク制御部１１１，物理ディスク媒体１１３を備える。
【００６０】
物理ディスク制御部１１１は，物理ディスク１１０の制御を行う制御部である。
【００６１】
物理ディスク制御部１１１は，ＣＭ１００からのライト指示に従って，物理ディスク媒体１１３の該当領域にデータを書き込む。このとき，物理ディスク制御部１１１は，物理ディスク媒体１１３に書き込むデータに対して，ＥＣＣコードを付加する。本実施の形態において，ライト時にＣＭ１００のキャッシュ部１０５から物理ディスク１１０に送られてくるデータは，ユーザデータとチェックコードとを有するデータである。物理ディスク制御部１１１は，ＣＭ１００から送られたユーザデータとチェックコードとを有するデータに基づいてＥＣＣコードを生成し，生成されたＥＣＣコードをユーザデータとチェックコードを有するデータに付加する。
【００６２】
ＥＣＣコードは，物理ディスク媒体１１３に記録されたデータの誤り検出と誤り訂正とを行うために，物理ディスク媒体１１３に記録されるデータに対して付加されるエラー検出用データである。
【００６３】
また，物理ディスク制御部１１１は，ＣＭ１００からのリード指示に従って，物理ディスク媒体１１３から該当データを読み込む。
【００６４】
物理ディスク制御部１１１は，ＥＣＣエラー判定部１１２を備える。ＥＣＣエラー判定部１１２は，データリード時に，物理ディスク媒体１１３から読み込まれたデータに含まれたＥＣＣコードを用いて，データの誤り検出と，可能な限りの誤り訂正とを行う。
【００６５】
物理ディスク媒体１１３は，実際にデータを記憶する記憶媒体である。
【００６６】
ディスク装置１の上位装置であるホスト２は，エラー検証処理部２０を備える。
【００６７】
エラー検証処理部２０は，ディスク装置１のエラー検証を行う。エラー検証処理部２０は，ホスト２のコンピュータが備えるＣＰＵ（Central Processing Unit ），メモリ等のハードウェアとソフトウェアプログラムとにより実現される。
【００６８】
図６は，本実施の形態によるエラー検証処理部の構成例を示す図である。
【００６９】
図６において，破線は制御の流れを示し，実践はデータの流れを示す。
【００７０】
エラー検証処理部２０は，キャッシュ初期化部２１，物理ディスク情報取得部２２，試験データ直接読込み部２３，試験データ記憶部２４，データ書換え部２５，試験データ直接書込み部２６，試験データ通常読込み要求部２７，エラー判定部２８を備える。
【００７１】
キャッシュ初期化部２１は，ディスク装置１のキャッシュ部１０５に記憶されているデータをクリアする。
【００７２】
物理ディスク情報取得部２２は，ディスク装置１のＤＡ１０２から，データの論理アドレスに対応する物理的な記録位置の情報，すなわち物理ディスク１１０およびその物理ディスク１１０内の領域を示す情報を取得する。また，物理ディスク情報取得部２２は，ディスク装置１のＤＡ１０２から，データの物理的な記録位置の情報に対応する論理アドレスを取得する。ホスト２を操作するエラー検証の試験実施者は，エラー検証の対象となるデータの論理アドレスを指定してエラー検証を行うことも，エラー検証の対象となるデータの物理的な記録位置の情報を指定してエラー検証を行うこともできる。
【００７３】
なお，エラー検証の対象となるデータは，通常の運用で物理ディスク媒体１１３に記憶されたデータであってもよいし，エラー検証の試験のために用意されてあらかじめ物理ディスク媒体１１３に書き込まれたデータであってもよい。以下，エラー検証の対象となるデータを試験データと呼ぶ。試験データは，例えば，ホスト２を操作してエラー検証を実行する試験実施者により，指定される。
【００７４】
試験データ直接読込み部２３は，直接リードによって物理ディスク１１０上の試験データの読み込みを行う。より具体的には，試験データ直接読込み部２３は，試験データの直接リードを行う旨のコマンドをディスク装置１に送信する。データの直接リードを行う旨のコマンドでは，データが記憶された物理ディスク１１０上の位置が，物理的な記録位置の情報，すなわち物理ディスク１１０およびその物理ディスク１１０内の領域を示す情報で指定される。直接リードであるので，ディスク装置１では，キャッシュ部１０５を介さない，試験データの読み込みが行われる。試験データ直接読込み部２３は，ディスク装置１からの直接リードにより取得された試験データを，試験データ記憶部２４に記憶する。試験データ直接読込み部２３による直接リードでは，エラー検出用データが付加された状態で，試験データが取得される。
【００７５】
試験データ記憶部２４は，直接リードにより取得された，エラー検出用データが付加された試験データを記憶する，コンピュータがアクセス可能な記憶装置である。
【００７６】
データ書換え部２５は，試験データ記憶部２４に記憶されたエラー検出用データが付加された試験データを破壊し，整合性がないエラー検出用データが付加された試験データを生成する。すなわち，データ書換え部２５は，試験データ記憶部２４に記憶されたエラー検出用データが付加された試験データにおいて，チェックコードやＥＣＣコードなどのエラー検出用データを書き換えて，試験データとエラー検出用データとの間の整合性を崩す。
【００７７】
図７は，本実施の形態によるエラー検出用データの破壊を説明する図である。
【００７８】
図７（Ａ）は，ＥＣＣコードの破壊を示し，図７（Ｂ）は，チェックコードの破壊を示す。図７において，元データは，試験データ直接読込み部２３によって，物理ディスク１１０から直接に読み込まれた，エラー検出用データが付加された試験データである。また，破壊データは，データ書換え部２５によって元データにおけるエラー検出用データが書き換えられた，整合性がないエラー検出用データが付加された試験データである。
【００７９】
ＥＣＣエラーの検証を行う場合には，データ書換え部２５は，図７（Ａ）に示すように，試験データ記憶部２４に記憶された元データのＥＣＣコードを書き換える。ＥＣＣエラーの検証は，物理ディスク１１０内のエラー検証である。
【００８０】
物理ディスク１１０では，ユーザデータとチェックコードとの区別はなく，ユーザデータ＋チェックコードのデータが１つの記録データとして扱われる。すなわち，物理ディスク１１０内のエラー検証であるＥＣＣエラーの検証では，ユーザデータ＋チェックコードのデータを試験データと考えることができる。また，ＥＣＣエラーの検証では，ユーザデータ＋チェックコードに基づいて生成されるＥＣＣコードが，エラー検出用データとなる。
【００８１】
チェックコードエラーの検証を行う場合には，データ書換え部２５は，図７（Ｂ）に示すように，試験データ記憶部２４に記憶された元データのチェックコードを書き換える。チェックコードエラーの検証は，物理ディスク１１０からホスト２へのインタフェースについてのエラー検証である。
【００８２】
通常のリードにより，物理ディスク１１０からＣＭ１００に読み込まれるデータは，物理ディスク１１０によってすでにＥＣＣコードが取り除かれた，ユーザデータ＋チェックコードのデータである。物理ディスク１１０からホスト２へのインタフェースについてのエラー検証であるチェックコードエラーの検証では，ユーザデータがそのまま試験データとなる。また，チェックコードエラーの検証では，ユーザデータに基づいて生成されるチェックコードが，エラー検出用データとなる。
【００８３】
試験データ直接書込み部２６は，直接ライトによって，試験データ記憶部２４に記憶された，整合性がないエラー検出用データが付加された試験データで，物理ディスク１１０上の元のデータを上書きする。より具体的には，試験データ直接書込み部２６は，整合性がないエラー検出用データが付加された試験データの直接ライトを行う旨のコマンドをディスク装置１に送信する。データの直接ライトを行う旨のコマンドでは，データを書き込む物理ディスク１１０上の位置が，物理的な記録位置の情報，すなわち物理ディスク１１０およびその物理ディスク１１０内の領域を示す情報で指定される。直接ライトであるので，ディスク装置１では，キャッシュ部１０５を介さない，データの書き込みが行われる。これにより，物理ディスク媒体１１３上のデータは，整合性がないエラー検出用データが付加された試験データとなる。
【００８４】
試験データ通常読込み要求部２７は，ディスク装置１に対して，試験データの通常のリードを要求する。通常のリードであるので，ディスク装置１では，ＥＣＣエラー判定部１１２，キャッシュ部１０５，チェックコードエラー判定部１０６を経由した，試験データの読み込みが行われる。
【００８５】
しかし，物理ディスク媒体１１３上の試験データは，付加されたエラー検出用データ，すなわちチェックコードまたはＥＣＣコードが破壊されているので，ＥＣＣエラー判定部１１２またはチェックコードエラー判定部１０６において，エラーが検出されるはずである。ＥＣＣコードが破壊されている場合には，ユーザデータ＋チェックコードと，ＥＣＣコードとの整合性がとれないので，ＥＣＣエラー判定部１１２によってＥＣＣエラーが検出される。また，チェックコードが破壊されている場合には，ユーザデータとチェックコードとの整合性がとれないので，チェックコードエラー判定部１０６によってチェックコードエラーが検出される。ディスク装置１は，試験データに対するリード要求への応答として，検出されたエラーに応じたエラー情報をホスト２に通知する。本実施の形態では，エラー情報が，検出されたエラーの種類がコードで示されるエラーコードであるものとする。
【００８６】
エラー判定部２８は，試験データ通常読込み要求部２７によるリード要求に対して，期待されたエラーコードがディスク装置１から通知されたか否かを判定する。すなわち，エラー判定部２８は，ＥＣＣエラーの検証を行っている場合には，ＥＣＣエラーが検出された旨を示すエラーコードがディスク装置１から通知されたか否かを判定する。また，エラー判定部２８は，チェックコードエラーの検証を行っている場合には，チェックコードエラーが検出された旨を示すエラーコードがディスク装置１から通知されたか否かを判定する。
【００８７】
エラー判定部２８は，期待されたエラーコードが通知された場合には，ディスク装置１のエラー検出機能が正常であると判定する。また，エラー判定部２８は，期待されたエラーコードが通知されなかった場合には，ディスク装置１のエラー検出機能に何らかの異常があると判定する。
【００８８】
エラー判定部２８は，ホスト２の表示画面に表示するなどにより，試験実施者に対して，エラー検証の結果を通知する。
【００８９】
このような，本実施の形態によるエラー検証の技術により，専用の試験機を用いなくても，上位装置であるホスト２からディスク装置１のエラー検証を行うことが可能となる。物理ディスク１１０上に破壊データを埋め込む場合には，キャッシュ部１０５をバイパスして物理ディスク１１０に対するデータの直接リード／直接ライトを行うので，エラーを発生させるための破壊データの通常のリード時に，キャッシュヒットすることはない。また，破壊データを埋め込むための直接リード／直接ライトの要求時には，データの物理的な記録位置の情報が指定された要求が送られるため，狙った物理ディスク１１０や物理ディスク１１０上の領域についてのエラー検証が可能となる。
【００９０】
以下，より具体的な本実施の形態によるエラー検証の例を説明する。
【００９１】
ここでは，ディスクインタフェースはＳＣＳＩの仕様に準拠しているものとする。ホスト２からディスク装置１に対する指示は，ＳＣＳＩコマンドによって行われる。
【００９２】
また，データの直接リードや直接ライトを指示するコマンドとして，SEND DIAGNOSTIC コマンドが使用されるものとする。SEND DIAGNOSTIC コマンドは，ＳＣＳＩコマンドであり，対象装置の自己診断テストを行う場合に使用されるコマンドである。SEND DIAGNOSTIC コマンドを用いることにより，ベンダ固有のテストが実行可能となる。
【００９３】
図８は，本実施の形態によるSEND DIAGNOSTIC コマンドの例を示す図である。
【００９４】
SEND DIAGNOSTIC コマンドは，コマンドとパラメータリストとを有する。図８（Ａ）は，SEND DIAGNOSTIC コマンドにおけるコマンドの記述様式の例を示し，図８（Ｂ）は，SEND DIAGNOSTIC コマンドにおけるパラメータリストの記述様式の例を示す。
【００９５】
図８（Ａ）に示すコマンドにおいて，オペレーションコード（1Dh ）は，コマンドがSEND DIAGNOSTIC コマンドであることを示す。パラメータリスト長では，パラメータリストの長さが指定されている。ＰＦ，SelfTest，DevOfL，UnitOfL ，コントロールのエリアについては，本実施の形態と直接には関係しないので，説明を省略する。
【００９６】
ディスク装置１では，パラメータリストで指定された動作が実行される。
【００９７】
図８（Ｂ）に示すパラメータリストにおいて，PAGE CODE は，実行する動作を区別するためのコードである。テストモード処理部１０４は，PAGE CODE が所定の値である場合に，物理ディスク１１０への直接リード／直接ライトが指示されたものと判断する。
【００９８】
PAGE LENGTH では，パラメータとして転送する長さが示される。
【００９９】
ＤａＩＮでは，データ転送の方向が示される。ＤａＩＮで，直接ライトと直接リードが判別される。ＤａＩＮに“１”がセットされている場合には，直接リード（Data In ）であることが示されており，ＤａＩＮに“０”がセットされている場合には，直接ライト（Data Out）が示されている。
【０１００】
ＤａＴｒ（Data Transfer ）は，データ転送の有無が示される。ＤａＴｒに“１”がセットされている場合には，データ転送ありが示されており，ＤａＴｒに“０”がセットされている場合には，データ転送なしが示されている。
【０１０１】
ＰＬＵＮ位置情報では，ディスクドライブ上の位置情報，すなわち物理ディスク１１０内の領域を指定する情報が示される。
【０１０２】
ＬＵＮ（Logical Unit Number ）番号では，アクセスを行いたい物理ディスク１１０の論理番号が示される。物理ディスク１１０の論理番号は，ホスト２で物理ディスク１１０を識別するための番号である。
【０１０３】
本実施の形態では，SEND DIAGNOSTIC コマンドのパラメータリストにおけるＬＵＮ番号およびＰＬＵＮ位置情報が，直接リード／直接ライトされる試験データの物理的な記録位置の情報となる。
【０１０４】
ＤＭ data lengthは，ＤＭコマンド＋転送パラメータの長さが示される。
【０１０５】
ＤＭコマンドは，ＣＭ１００から物理ディスク１１０に対して直接発行されるコマンドが指定されるエリアである。ＤＭコマンドのエリアに，リード／ライト等を指示するコマンドが埋め込まれる。
【０１０６】
なお，ＣＭ１００から物理ディスク１１０に対するデータのリード／ライトの指示には，ＥＣＣコードを含まないデータのリード／ライトの指示と，ＥＣＣコードを含むデータのリード／ライトの指示とがある。
【０１０７】
ＥＣＣコードを含まないデータのリード／ライトを指示するコマンドが発行された場合には，物理ディスク１１０において，ライト時のデータへのＥＣＣコードの付加や，リード時のＥＣＣエラー判定などの，ＥＣＣに関する処理が行われる。本実施の形態では，チェックコードエラーの検証を行う場合には，ＤＭコマンドのエリアに，ＥＣＣコードを含まないデータのリード／ライトを指示するコマンドが埋め込まれる。
【０１０８】
ＥＣＣコードを含むデータのリード／ライトを指示するコマンドが発行された場合には，物理ディスク１１０において，ＥＣＣに関する処理が行われず，物理ディスク媒体１１３に対するＥＣＣコードが付加されたデータの読み込み／直接書き込みが行われる。本実施の形態では，ＥＣＣコードエラーの検証を行う場合には，ＤＭコマンドのエリアに，ＥＣＣコードを含むデータのリード／ライトを指示するコマンドが埋め込まれる。
【０１０９】
転送パラメータは，リード／ライトを行うデータの転送用のエリアである。ここにリード／ライトするデータが格納される。なお，リード／ライト等のデータ転送用のエリアは，ＭＡＸで８Ｋバイトであるものとする。
【０１１０】
図９は，本実施の形態のテストモード処理部によるリード時の判定を説明する図である。
【０１１１】
図９において，破線は制御の流れを示し，実線はデータの流れを示す。
【０１１２】
直接リードの場合には，ホスト２から，SEND DIAGNOSTIC コマンドが発行される（Ｓ１０１）。このとき，ホスト２のエラー検証処理部２０は，SEND DIAGNOSTIC コマンドのパラメータリストに，直接リードを設定する。
【０１１３】
ＣＭ１００内のコマンド解析部（図示省略）が，受信コマンドのパラメータリストを解析する。
【０１１４】
テストモード処理部１０４は，ホスト２からのコマンドがSEND DIAGNOSTIC コマンドであり，パラメータリストで直接リードが指示されている場合に，物理ディスク１１０に対して直接リード命令を発行する（Ｓ１０２）。より具体的には，テストモード処理部１０４は，パラメータリストのＬＵＮ番号で指定された物理ディスク１１０に対して，パラメータリストのＤＭコマンドで指定されたコマンドを発行して，パラメータリストのＰＬＵＮ位置情報で指定された領域のデータの読み込みを要求する。
【０１１５】
物理ディスク１１０から，エラー検出用データが付加されたデータが読み込まれる。このとき，ＤＭコマンドで指定されたコマンドがＥＣＣコードを含むデータのリードを指示するコマンドであれば，物理ディスク１１０においてＥＣＣに関する処理が行われず，ＥＣＣコードが付加されたデータが読み込まれる。また，ＤＭコマンドで指定されたコマンドがＥＣＣコードを含まないデータのリードを指示するコマンドであれば，物理ディスク１１０においてＥＣＣに関する処理が行われ，ＥＣＣコードを含まないデータ，すなわちユーザデータ＋チェックコードのデータが読み込まれる。
【０１１６】
テストモード処理部１０４は，直接リードの結果として，物理ディスク１１０から読み込まれた，エラー検出用データが付加された試験データを，ホスト２に返す（Ｓ１０３）。このとき，物理ディスク１１０から読み込まれたデータは，キャッシュ部１０５およびチェックコードエラー判定部１０６を経由しないで，ホスト２に送られる。
【０１１７】
通常のリードの場合には，ホスト２から，通常のリードコマンドが発行される（Ｓ２０１）。
【０１１８】
ＣＭ１００内のコマンド解析部（図示省略）が，受信コマンドを解析する。
【０１１９】
テストモード処理部１０４は，受信コマンドが通常のリードコマンドであるので，キャッシュ部１０５に制御を移す（Ｓ２０２）。
【０１２０】
キャッシュ部１０５にすでに該当データがある場合には，キャッシュ部１０５に記憶された該当データが，チェックコードエラー判定部１０６経由でホスト２に送られる（Ｓ２０４）。
【０１２１】
キャッシュ部１０５に該当データがない場合には，該当データが物理ディスク１１０の物理ディスク媒体１１３から読み込まれ，キャッシュ部１０５に一時格納される（Ｓ２０３）。
【０１２２】
このとき，物理ディスク媒体１１３から読み込まれたデータに対して，ＥＣＣエラー判定部１１２によるＥＣＣコードを用いたエラー判定が行われる。ＥＣＣエラー判定部１１２によって，ＥＣＣエラーと判定された場合には，ディスク装置１からホスト２に対して，ＥＣＣエラーが検出された旨を示すエラーコードが通知される。ＥＣＣエラー判定部１１２によって，ＥＣＣエラーと判定されなかった場合には，ＥＣＣコードが除かれたデータ，すなわちユーザデータ＋チェックコードのデータが，キャッシュ部１０５に送られる。
【０１２３】
キャッシュ部１０５に格納されたデータは，チェックコードエラー判定部１０６経由でホスト２に送られる（Ｓ２０４）。
【０１２４】
このとき，キャッシュ部１０５からホスト２に送られるデータに対して，チェックコードエラー判定部１０６によるチェックコードを用いたエラー判定が行われる。チェックコードエラー判定部１０６によって，チェックコードエラーと判定された場合には，ディスク装置１からホスト２に対して，チェックコードエラーが検出された旨を示すエラーコードが通知される。チェックコードエラー判定部１０６によって，チェックコードエラーと判定されなかった場合には，チェックコードが除かれたデータ，すなわちユーザデータのみが，ホスト２に送られる。
【０１２５】
図１０は，本実施の形態のテストモード処理部によるライト時の判定を説明する図である。
【０１２６】
図１０において，破線は制御の流れを示し，実線はデータの流れを示す。
【０１２７】
直接ライトの場合には，ホスト２から，SEND DIAGNOSTIC コマンドが発行される（Ｓ３０１）。このとき，ホスト２のエラー検証処理部２０は，SEND DIAGNOSTIC コマンドのパラメータリストに，直接ライトを設定する。
【０１２８】
ＣＭ１００内のコマンド解析部（図示省略）が，受信コマンドのパラメータリストを解析する。
【０１２９】
テストモード処理部１０４は，ホスト２からのコマンドがSEND DIAGNOSTIC コマンドであり，パラメータリストで直接ライトが指示されている場合に，物理ディスク１１０に対して直接ライト命令を発行する（Ｓ３０２）。より具体的には，テストモード処理部１０４は，パラメータリストのＬＵＮ番号で指定された物理ディスク１１０に対して，パラメータリストのＤＭコマンドで指定されたコマンドを発行して，パラメータリストのＰＬＵＮ位置情報で指定された領域へのデータの書き込みを要求する。
【０１３０】
パラメータリストの転送パラメータの領域に格納された，エラー検出用データが付加されたデータが，キャッシュ部１０５を経由しないで，物理ディスク１１０に書き込まれる（Ｓ３０３）。
【０１３１】
このとき，ＤＭコマンドで指定されたコマンドがＥＣＣコードを含むデータのライトを指示するコマンドであれば，物理ディスク１１０においてＥＣＣに関する処理が行われず，ＥＣＣコードが付加されたデータがそのまま物理ディスク媒体１１３に書き込まれる。また，ＤＭコマンドで指定されたコマンドがＥＣＣコードを含まないデータのライトを指示するコマンドであれば，物理ディスク１１０において，ＥＣＣコードが付加されていないデータ，すなわちユーザデータ＋チェックコードのデータにＥＣＣコードが付加される。その後，ＥＣＣコードが付加されたデータが，物理ディスク媒体１１３に書き込まれる。
【０１３２】
通常のライトの場合には，ホスト２から，通常のライトコマンドが発行される（Ｓ４０１）。
【０１３３】
ＣＭ１００内のコマンド解析部（図示省略）が，受信コマンドを解析する。
【０１３４】
テストモード処理部１０４は，受信コマンドが通常のライトコマンドであるので，キャッシュ部１０５に制御を移す（Ｓ４０２）。
【０１３５】
ホスト２から送られたデータが，キャッシュ部１０５に一時格納される（Ｓ４０３）。このとき，ホスト２からキャッシュ部１０５に送られたデータに対して，チェックコードが付加される。
【０１３６】
キャッシュ部１０５に一時格納されたデータは，ホスト２から発行されたライトコマンドとは非同期に物理ディスク１１０に送られ，物理ディスク媒体１１３に書き込まれる（Ｓ４０４）。このとき，キャッシュ部１０５から物理ディスク１１０に送られたデータに対して，ＥＣＣコードが付加される。
【０１３７】
図１１は，本実施の形態によるエラー検証の流れを説明する図である。
【０１３８】
図１１において，括弧つき数字は手順を示す。
【０１３９】
エラー検証処理部２０において，キャッシュ初期化部２１は，キャッシュ部１０５に記憶されたデータをクリアする（手順１）。キャッシュ部１０５にデータが残っていると，後述の手順６における通常のリード時に，キャッシュヒットしてしまう可能性がある。キャッシュヒットすると物理ディスク媒体１１３へのアクセスが発生しない場合があり，それを防ぐために，キャッシュ部１０５に残っているデータのクリアが行われる。
【０１４０】
物理ディスク情報取得部２２は，ＤＡ１０２から，試験データの論理アドレスに対応する物理的な記録位置の情報，すなわち物理ディスク１１０とその物理ディスク１１０内の領域の情報を取得する（手順２）。
【０１４１】
後述の手順３，手順５における本実施の形態の直接リード／直接ライトでは，直接リード／直接ライトする試験データの指定に物理的な記録位置の情報が用いられる。エラー検証の実行時に，試験データが記憶された場所が論理アドレスで与えられた場合には，その論理アドレスから，試験データが記憶された場所の物理的な記録位置の情報を取得する。エラー検証の実行時に，試験データが記憶された場所が物理的な記録位置の情報で与えられた場合には，手順２は実行されない。
【０１４２】
なお，後述の手順６における通常のリードでは，リードするデータの指定に論理アドレスが用いられる。エラー検証の実行時に，試験データが記憶された場所の物理的な記録位置の情報が与えられ，その論理アドレスがわからない場合には，物理ディスク情報取得部２２が，ＤＡ１０２から，物理的な記録位置の情報に対する論理アドレスを取得する。
【０１４３】
試験データ直接読込み部２３は，SEND DIAGNOSTIC コマンドによって，キャッシュ部１０５とチェックコードエラー判定部１０６とをバイパスして，物理ディスク１１０から直接に，エラー検出用データが付加された試験データを読み込む（手順３）。
【０１４４】
より具体的には，試験データ直接読込み部２３は，ディスク装置１に対して，SEND DIAGNOSTIC コマンドを用いて，直接リードの要求を発行する。発行された直接リードの要求には，試験データが記憶された場所の物理的な記録位置の情報が含まれている。
【０１４５】
ディスク装置１のＣＭ１００において，テストモード処理部１０４は，ホスト２から発行されたコマンドが，直接リードを要求するSEND DIAGNOSTIC コマンドであることを確認する。テストモード処理部１０４は，物理ディスク１１０に対して，SEND DIAGNOSTIC コマンドのパラメータリストで指定されたリード要求を発行する。物理ディスク１１０に対して発行されるリード要求には，ＥＣＣコードを含むデータのリード要求と，ＥＣＣコードを含まないデータのリード要求とがある。
【０１４６】
物理ディスク１１０では，ＣＭ１００からのリード要求に従って，物理ディスク媒体１１３からデータが読み込まれ，読み込まれたデータがＣＭ１００に送られる。ＣＭ１００からのリード要求がＥＣＣコードを含むデータのリード要求であれば，物理ディスク１１０は，ＥＣＣコードがエラー検出用データとして付加された試験データを，ＣＭ１００に送る。ＣＭ１００からのリード要求がＥＣＣコードを含まないデータのリード要求であれば，物理ディスク１１０は，ＥＣＣコードがない，チェックコードがエラー検出用データとして付加された試験データを，ＣＭ１００に送る。
【０１４７】
テストモード処理部１０４は，物理ディスク１１０から読み込まれたエラー検出用データが付加された試験データを，キャッシュ部１０５とチェックコードエラー判定部１０６とを経由させず，ホスト２に送る。試験データ直接読込み部２３は，ディスク装置１から得られた，エラー検出用データが付加された試験データを，試験データ記憶部２４に記憶する。
【０１４８】
データ書換え部２５は，手順３で読み込まれたデータを破壊する（手順４）。より具体的には，データ書換え部２５は，試験データ記憶部２４に記憶されたデータにおいて，エラー検出用データを書き換えて，整合性がないエラー検出用データが付加された試験データを生成する。
【０１４９】
ＥＣＣエラーの検証を行っている場合には，図７（Ａ）に示すように，エラー検出用データとしてＥＣＣコードが付加されたデータが，試験データ記憶部２４に記憶されている。データ書換え部２５は，図７（Ａ）に示すように，試験データ記憶部２４に記憶されたデータにおいて，ＥＣＣコードを書き換える。試験データ記憶部２４に記憶されたデータにおいて，ユーザデータ＋チェックコードのデータと，エラー検出用データであるＥＣＣコードとの整合性が崩れる。
【０１５０】
チェックコードエラーの検証を行っている場合には，図７（Ｂ）に示すように，エラー検出用データとしてチェックコードが付加されたデータが，試験データ記憶部２４に記憶されている。データ書換え部２５は，図７（Ｂ）に示すように，試験データ記憶部２４に記憶されたデータにおいて，チェックコードを書き換える。試験データ記憶部２４に記憶されたデータにおいて，ユーザデータと，エラー検出用データであるチェックコードとの整合性が崩れる。
【０１５１】
試験データ直接書込み部２６は，SEND DIAGNOSTIC コマンドによって，キャッシュ部１０５をバイパスして，物理ディスク１１０に対して直接に，試験データ記憶部２４に記憶された，整合性がないエラー検出用データが付加された試験データを書き込む（手順５）。
【０１５２】
より具体的には，試験データ直接書込み部２６は，ディスク装置１に対して，SEND DIAGNOSTIC コマンドを用いて，直接ライトの要求を発行する。発行された直接ライトの要求には，整合性がないエラー検出用データが付加された試験データと，そのデータを書き込む場所の物理的な記録位置の情報とが含まれている。
【０１５３】
ディスク装置１のＣＭ１００において，テストモード処理部１０４は，ホスト２から発行されたコマンドが，直接ライトを指示するSEND DIAGNOSTIC コマンドであることを確認する。テストモード処理部１０４は，物理ディスク１１０に対して，SEND DIAGNOSTIC コマンドのパラメータリストで指定されたライト要求を発行する。物理ディスク１１０に対して発行されるライト要求には，ＥＣＣコードを含むデータのライト要求と，ＥＣＣコードを含まないデータのライト要求とがある。
【０１５４】
物理ディスク１１０では，ＣＭ１００からのライト要求に従って，整合性がないエラー検出用データが付加された試験データを，物理ディスク媒体１１３に書き込む。ＣＭ１００からのライト要求がＥＣＣコードを含むデータのライト要求であれば，物理ディスク１１０は，エラー検出用データとしてＥＣＣコードが付加されたデータを，そのまま物理ディスク媒体１１３に書き込む。ＣＭ１００からのライト要求がＥＣＣコードを含まないデータのライト要求であれば，物理ディスク１１０は，ＥＣＣコードがない，エラー検出用データとしてチェックコードが付加されたデータに対して，ＥＣＣコードを付加して，物理ディスク媒体１１３に書き込む。
【０１５５】
このように，整合性がないエラー検出用データが付加された試験データは，キャッシュ部１０５を経由しないで物理ディスク１１０に送られる。物理ディスク媒体１１３上では，元のデータが，整合性がないエラー検出用データが付加された試験データで上書きされる。
【０１５６】
試験データ通常読込み要求部２７は，試験データの通常のリードを，ディスク装置１に要求する（手順６）。手順１でキャッシュ部１０５のデータはクリアされているので，物理ディスク媒体１１３のデータは，図１１の点線矢印に示すように，物理ディスク媒体１１３→ＥＣＣエラー判定部１１２→キャッシュ部１０５→チェックコードエラー判定部１０６→ホスト２の経路でリードされる。
【０１５７】
このとき，試験データに付加されたＥＣＣコードが破壊されている場合には，ユーザデータ＋チェックコードとＥＣＣコードとの間の整合性がないため，ＥＣＣエラー判定部１１２によりエラーが検出される。ディスク装置１からホスト２に対して，ＥＣＣエラーが検出された旨を示すエラーコードが通知される。
【０１５８】
また，試験データに付加されたチェックコードが破壊されている場合には，ユーザデータとチェックコードとの間の整合性がないため，チェックコードエラー判定部１０６によりエラーが検出される。ディスク装置１からホスト２に対して，チェックコードエラーが検出された旨を示すエラーコードが通知される。
【０１５９】
エラー判定部２８は，試験データ通常読込み要求部２７による試験データの通常のリード要求に対して，期待されたエラー情報がディスク装置１から通知されたか否かを判定する（手順７）。例えば，試験データに付加されたＥＣＣコードの破壊を行った場合に，エラー判定部２８は，ＥＣＣエラーの検出を示すエラーコードがディスク装置１から通知されれば，ディスク装置１のＥＣＣエラーの検出機能が正常であると判定する。また，試験データに付加されたチェックコードの破壊を行った場合に，エラー判定部２８は，チェックコードエラーの検出を示すエラーコードがディスク装置１から通知されれば，ディスク装置１のチェックコードエラーの検出機能が正常であると判定する。エラー判定部２８は，期待されたエラーコードがディスク装置１から通知されなかった場合に，ディスク装置１のエラー検出機能に異常があると判定する。
【０１６０】
ＲＡＩＤ構成のディスク装置１では，このようなエラー検証が，物理ディスク１１０ごとに行われる。例えば，ＲＡＩＤ１構成のディスク装置１のエラー検証を行う場合には，プライマリディスクとセカンダリディスクのそれぞれについて，上述のエラー検証を行う。また，例えば，ＲＡＩＤ５構成，ＲＡＩＤ６構成のディスク装置１のエラー検証を行う場合には，データディスクとパリティディスクのそれぞれについて，上述のエラー検証を行う。
【０１６１】
以下，図１２〜図１４に示すフローチャートを用いて，本実施の形態による処理の流れを説明する。
【０１６２】
図１２は，本実施の形態のディスク装置によるテストモード処理フローチャートである。
【０１６３】
ディスク装置１は，ホスト２からのコマンドを受け付けると（ステップＳ１０），そのコマンドのオペレーションコードを確認し，受け付けコマンドがSEND DIAGNOSTIC コマンドであるかを判定する（ステップＳ１１）。
【０１６４】
SEND DIAGNOSTIC コマンドでなければ（ステップＳ１１のＮＯ），ディスク装置１は，受け付けコマンドの指示に応じた処理を実行する（ステップＳ１９）。例えば，受け付けコマンドが通常のリードコマンド／ライトコマンドであれば，キャッシュ部１０５を経由する物理ディスク１１０へのアクセスが行われる。
【０１６５】
SEND DIAGNOSTIC コマンドであれば（ステップＳ１１のＹＥＳ），ディスク装置１のテストモード処理部１０４は，ホスト２からコマンドと共に受け付けた，パラメータリストのPAGE CODE を確認する（ステップＳ１２）。テストモード処理部１０４は，パラメータリストのPAGE CODE が，直接リード／直接ライトを示すコードであるかを判定する（ステップＳ１３）。
【０１６６】
直接リード／直接ライトを示すコードでなければ（ステップＳ１３のＮＯ），ディスク装置１は，受け付けコマンドの指示に応じた処理を実行する（ステップＳ１９）。ここでは，SEND DIAGNOSTIC コマンドによって指示された，直接リード／直接ライト以外の処理が実行される。
【０１６７】
直接リード／直接ライトを示すコードであれば（ステップＳ１３のＹＥＳ），テストモード処理部１０４は，パラメータリストのＤａＩＮを確認する（ステップＳ１４）。テストモード処理部１０４は，パラメータリストのＤａＩＮで，直接リードが指示されているかを判定する（ステップＳ１５）。
【０１６８】
直接リードであれば（ステップＳ１５のＹＥＳ），テストモード処理部１０４は，物理ディスク１１０から，エラー検出用データが付加された試験データを読み込む（ステップＳ１６）。テストモード処理部１０４は，物理ディスク１１０から読み込まれたエラー検出用データが付加された試験データを，キャッシュ部１０５を経由させずに，ホスト２に送る（ステップＳ１７）。
【０１６９】
直接リードでなければ（ステップＳ１５のＮＯ），すなわち直接ライトであれば，テストモード処理部１０４は，整合性がないエラー検出用データが付加された試験データを，キャッシュ部１０５を経由させずに，物理ディスク１１０に書き込む（ステップＳ１８）。
【０１７０】
図１３，図１４は，本実施の形態のホストによるエラー検証処理フローチャートである。
【０１７１】
ホスト２のエラー検証処理部２０において，キャッシュ初期化部２１は，ディスク装置１のキャッシュ部１０５のデータをクリアする（ステップＳ２０）。
【０１７２】
物理ディスク情報取得部２２は，ディスク装置１のＤＡ１０２から，試験データの物理的な記録位置の情報を取得する（ステップＳ２１）。ここで取得される物理的な記録位置の情報は，試験データの論理アドレスに対応する，物理ディスク１１０およびその物理ディスク１１０内の領域の情報である。
【０１７３】
試験データ直接読込み部２３は，物理的な記録位置を指定して，試験データの直接リードを，ディスク装置１に要求する（ステップＳ２２）。ディスク装置１では，データがキャッシュ部１０５を経由しない，物理ディスク１１０からの指定データの直接リードが行われる。試験データ直接読込み部２３は，ディスク装置１から，エラー検出用データが付加された試験データを取得する（ステップＳ２３）。取得されたエラー検出用データが付加された試験データは，試験データ記憶部２４に記憶される。
【０１７４】
データ書換え部２５は，検証するエラーの種類がチェックコードエラーかＥＣＣエラーかを判定する（ステップＳ２４）。
【０１７５】
検証するエラーの種類がチェックコードエラーである場合には（ステップＳ２４のチェックコードエラー），試験データ記憶部２４に記憶されたデータにおいて，エラー検出用データであるチェックコードを破壊する（ステップＳ２５）。
【０１７６】
検証するエラーの種類がＥＣＣエラーである場合には（ステップＳ２４のＥＣＣエラー），試験データ記憶部２４に記憶されたデータにおいて，エラー検出用データであるＥＣＣコードを破壊する（ステップＳ２６）。
【０１７７】
ステップＳ２５またはステップＳ２６の処理により，試験データ記憶部２４に記憶されたデータは，整合性がないエラー検出用データが付加された試験データとなる。
【０１７８】
試験データ直接書込み部２６は，試験データ記憶部２４に記憶された，整合性がないエラー検出用データが付加された試験データの直接ライトを，ディスク装置１に要求する（ステップＳ２７）。ディスク装置１では，データがキャッシュ部１０５を経由しない，物理ディスク１１０への指定データの直接ライトが行われる。これにより，物理ディスク１１０上の元のデータは，整合性がないエラー検出用データが付加された試験データとなる。
【０１７９】
試験データ通常読込み要求部２７は，試験データの通常のリードを，ディスク装置１に要求する（ステップＳ２８）。ディスク装置１では，データがキャッシュ部１０５を経由する，物理ディスク１１０からの指定データのリードが行われる。
【０１８０】
このとき，物理ディスク１１０に記憶された試験データは，整合性がないエラー検出用データが付加された試験データである。そのため，ディスク装置１では，エラー検出機能に異常がなければ，試験データと整合性がないエラー検出用データを用いた判定によって，エラーが検出されるはずである。
【０１８１】
ディスク装置１は，検出されたエラーに応じたエラーコードをホスト２に通知する。すなわち，ディスク装置１は，ＥＣＣエラー判定部１１２でＥＣＣエラーが検出された場合には，ＥＣＣエラーが検出された旨を示すエラーコードをホスト２に通知する。また，ディスク装置１は，チェックコードエラー判定部１０６でチェックコードエラーが検出された場合には，チェックコードエラーが検出された旨を示すエラーコードをホスト２に通知する。
【０１８２】
エラー判定部２８は，ディスク装置１から期待されたエラーコードが通知されたかを判定する（ステップＳ２９）。すなわち，エラー判定部２８は，ＥＣＣエラーの検証であれば，ディスク装置１からＥＣＣエラーが検出された旨を示すエラーコードが通知されたかを判定する。また，エラー判定部２８は，チェックコードエラーの検証であれば，ディスク装置１からチェックコードエラーが検出された旨を示すエラーコードが通知されたかを判定する。
【０１８３】
ディスク装置１から期待されたエラーコードが通知されれば（ステップＳ２９のＹＥＳ），エラー判定部２８は，ディスク装置１のエラー検出機能が正常であると判定する（ステップＳ３０）。
【０１８４】
ディスク装置１から期待されたエラーコードが通知されなければ（ステップＳ２９のＮＯ），エラー判定部２８は，ディスク装置１のエラー検出機能に異常があると判定する（ステップＳ３１）。
【０１８５】
以上説明した本実施の形態のディスク装置１，ホスト２による処理は，コンピュータが備えるＣＰＵ，メモリ等のハードウェアとソフトウェアプログラムとにより実現することができ，そのプログラムをコンピュータ読み取り可能な記録媒体に記録することも，ネットワークを通して提供することも可能である。
【０１８６】
以上，本実施の形態について説明したが，本発明はその主旨の範囲において種々の変形が可能であることは当然である。
【０１８７】
例えば，本実施の形態では，物理ディスクから上位装置へのインタフェースにおけるエラー検出に用いるチェックコードと，物理ディスク内におけるエラー検出に用いるＥＣＣコードとが，ユーザデータに付加される例について説明した。例えば，物理ディスク内におけるエラー検出に用いるＥＣＣコードのみがユーザデータに付加される場合でも，上述の実施の形態と同様にエラー検証が実施可能である。
【０１８８】
また，本実施の形態では，試験データとエラー検出用データとの間の整合性を崩すために，エラー検出用データの書き換えを行っている。試験データを書き換えて整合性を崩すようにしてもよいし，エラー検出用データと試験データとの双方を書き換えて整合性を崩すようにしてもよい。
【０１８９】
また，本実施の形態では，図１１の（手順３），（手順４）にも示すように，上位装置が，物理ディスクからエラー検出用データが付加されたデータを取得し，取得されたデータを書き換えて，整合性がないエラー検出用データが付加された試験データを生成している。必ずしも，物理ディスクから取得されたデータから，整合性がないエラー検出用データが付加された試験データを生成する必要はない。
【０１９０】
例えば，上位装置に，物理ディスク上のデータとは関係ない，整合性がないエラー検出用データが付加された試験データを用意しておき，そのデータを直接ライトで物理ディスクに埋め込むようにしてもよい。チェックコードやＥＣＣコードの仕組みの詳細がわかっている場合には，上位装置で整合性がないエラー検出用データが付加された試験データを用意することなども可能である。
【０１９１】
物理ディスク上のデータにはすでにチェックコードやＥＣＣコードが含まれているため，チェックコードやＥＣＣコードの仕組みの詳細がわからなくても，物理ディスク上のデータを利用すると，容易に整合性がないエラー検出用データが付加された試験データの生成が可能である。
【符号の説明】
【０１９２】
１  ディスク装置
１００  ＣＭ
１０１  ＣＡ
１０２  ＤＡ
１０３  物理ディスク情報記憶部
１０４  テストモード処理部
１０５  キャッシュ部
１０６  チェックコードエラー判定部
１１０  物理ディスク
１１１  物理ディスク制御部
１１２  ＥＣＣエラー判定部
１１３  物理ディスク媒体
２  ホスト
２０  エラー検証処理部
２１  キャッシュ初期化部
２２  物理ディスク情報取得部
２３  試験データ直接読込み部
２４  試験データ記憶部
２５  データ書換え部
２６  試験データ直接書込み部
２７  試験データ通常読込み要求部
２８  エラー判定部
【図１】
2011008650.tif 000003
【図２】
2011008650.tif 000004
【図３】
2011008650.tif 000005
【図４】
2011008650.tif 000006
【図５】
2011008650.tif 000007
【図６】
2011008650.tif 000008
【図７】
2011008650.tif 000009
【図８】
2011008650.tif 000010
【図９】
2011008650.tif 000011
【図１０】
2011008650.tif 000012
【図１１】
2011008650.tif 000013
【図１２】
2011008650.tif 000014
【図１３】
2011008650.tif 000015
【図１４】
2011008650.tif 000016