(57)【特許請求の範囲】
【請求項１】
記憶媒体の記憶領域に関して部分領域毎の診断結果を記憶する記憶部と、
前記記憶部に記憶された部分領域毎の診断結果に基づいて、次に診断すべき診断領域を特定する診断領域特定部と、
前記診断領域特定部によって特定された診断領域をアクセスして診断し、診断した診断結果を前記記憶部に格納する診断実行部と、
前記診断実行部によって診断が実行されている際に、上位装置からのアクセス要求があった場合に、前記アクセス要求に対応する領域をアクセスするとともに、前記アクセス要求に伴って所定の部分領域をアクセスして診断し、該アクセス結果を診断結果として前記記憶部に格納する上位アクセス実行部と、
を有することを特徴とする記憶媒体診断装置。
【請求項２】
前記上位アクセス実行部は、
前記アクセス要求の直前にアクセスされた領域の位置であるアクセス位置から前記アクセス要求のアクセス位置までのヘッダの移動量に基づいて、前記アクセス要求に関わるアクセスの動作を決定するアクセス動作決定部を有し、
前記アクセス動作決定部によって決定されたアクセスの動作に基づいて、前記アクセス要求に対応する領域をアクセスすることを特徴とする請求項１に記載の記憶媒体診断装置。
【請求項３】
前記アクセス動作決定部は、
前記アクセス要求の直前にアクセスされた前記アクセス位置が前記診断領域特定部によって特定された診断領域の前記アクセス位置であって、前記ヘッダ移動量が所定のＬＢＡ数以内である場合には、該直前にアクセスされた前記アクセス位置に後続する前記アクセス位置の診断を優先する旨を決定することを特徴とする請求項２に記載の記憶媒体診断装置。
【請求項４】
前記アクセス動作決定部は、
前記アクセス要求の直前にアクセスされた前記アクセス位置が前記アクセス要求に関わる前記アクセス位置であって、前記ヘッダ移動量が、アクセス要求があった際のヘッダ移動量の平均値より大きい場合には、該直前にアクセスされた前記アクセス位置に後続する前記アクセス位置をあらかじめ診断する旨を決定することを特徴とする請求項２に記載の記憶媒体診断装置。
【請求項５】
前記診断実行部は、
前記記憶領域のうち最小アクセス単位の整数倍のアクセス単位の部分領域をアクセスして診断し、当該部分領域の診断結果を前記記憶部に格納することを特徴とする請求項１に記載の記憶媒体診断装置。
【請求項６】
記憶媒体診断装置が記憶媒体の記憶領域を診断する記憶媒体診断方法であって、
記憶媒体の記憶領域に関して部分領域毎の診断結果を記憶する記憶部に記憶された部分領域毎の診断結果に基づいて、次に診断すべき診断領域を特定する診断領域特定工程と、
前記診断領域特定工程によって特定された診断領域をアクセスして診断し、診断した診断結果を前記記憶部に格納する診断実行工程と、
前記診断実行工程によって診断が実行されている際に、上位装置からのアクセス要求があった場合に、前記アクセス要求に対応する領域をアクセスするとともに、前記アクセス要求に伴って所定の部分領域をアクセスして診断し、該アクセス結果を診断結果として前記記憶部に格納する上位アクセス実行工程と、
を含むことを特徴とする記憶媒体診断方法。
【請求項７】
記憶媒体の記憶領域に関して部分領域毎の診断結果を記憶する記憶部に記憶された部分領域毎の診断結果に基づいて、次に診断すべき診断領域を特定する診断領域特定手順と、
前記診断領域特定手順によって特定された診断領域をアクセスして診断し、診断した診断結果を前記記憶部に格納する診断実行手順と、
前記診断実行手順によって診断が実行されている際に、上位装置からのアクセス要求があった場合に、前記アクセス要求に対応する領域をアクセスするとともに、前記アクセス要求に伴って所定の部分領域をアクセスして診断し、該アクセス結果を診断結果として前記記憶部に格納する上位アクセス実行手順と、
をコンピュータに実行させることを特徴とする記憶媒体診断プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶媒体診断装置、記憶媒体診断方法及び記憶媒体診断プログラムに関する。
【背景技術】
【０００２】
従来から、サーバに搭載される記憶媒体の信頼性を確保するために、定期的または不定期的に当該記憶媒体の診断が運用外に行われている。これら記憶媒体の容量は、近年、顕著に増加しているので、記憶媒体の診断がサーバの運用外に完了せず、サーバの運用中にかかる場合が多くなっている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−３３９１０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、記憶媒体の診断がサーバの運用中に行われると、診断時間が長時間化し、サーバにおける運用のパフォーマンスが低下するという問題があった。【０００５】
開示の技術は、上記に鑑みてなされたものであって、記憶媒体の診断時間の短縮化を図り、記憶媒体を搭載するサーバの運用中であってもパフォーマンスの低下を抑制する記憶媒体診断装置などを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本願の開示する記憶媒体診断装置は、一つの態様において、記憶媒体の記憶領域に関して部分領域毎の診断結果を記憶する記憶部と、上位装置からのアクセス要求に対応する領域をアクセスし、該アクセス結果を診断結果として前記記憶部に格納する上位アクセス実行部と、前記記憶部に記憶された部分領域毎の診断結果に基づいて、次に診断すべき診断領域を特定する診断領域特定部と、前記診断領域特定部によって特定された診断領域をアクセスして診断し、該診断結果を前記記憶部に格納する診断実行部とを備える。
【発明の効果】
【０００７】
本願の開示する記憶媒体診断装置の一つの態様によれば、記憶媒体の診断時間の短縮化を図り、記憶媒体を搭載するサーバの運用中であってもパフォーマンスの低下を抑制することができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施例１に係る記憶媒体診断装置の構成を示す機能ブロック図である。
【図２】図２は、実施例２に係る記憶媒体診断装置を搭載するサーバ装置の構成を示す機能ブロック図である。
【図３】図３は、実施例２に係るＨＤＤカードの構成を示す機能ブロック図である。
【図４】図４は、診断条件テーブルのデータ構造の一例を示す図である。
【図５】図５は、診断領域管理テーブルのデータ構造の一例を示す図である。
【図６】図６は、実施例２に係る記憶媒体診断処理のうちメイン処理の手順を示すフローチャートである。
【図７】図７は、記憶媒体診断処理のうちアクセス異常判定処理の手順を示すフローチャートである。
【図８】図８は、記憶媒体診断処理の具体例を説明する図である。
【図９】図９は、診断アクセス単位を変更した場合の診断条件テーブルのデータ構造を示した図である。
【図１０】図１０は、ＲＡＩＤ構成である場合の診断条件テーブルのデータ構造を示した図である。
【図１１】図１１は、診断経過期間を監視する場合の診断条件テーブルのデータ構造を示した図である。
【図１２】図１２は、記憶媒体診断プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【０００９】
以下に、本願の開示する記憶媒体診断装置、記憶媒体診断方法及び記憶媒体診断プログラムの実施例を図面に基づいて詳細に説明する。なお、本実施例によりこの発明が限定されるものではない。
【実施例１】
【００１０】
図１は、本実施例１に係る記憶媒体診断装置１の構成を示す機能ブロック図である。図１に示すように、記憶媒体診断装置１は、記憶部１１、上位アクセス実行部１２、診断領域特定部１３及び診断実行部１４を有する。【００１１】
記憶部１１は、記憶媒体の記憶領域に関して部分領域毎の診断結果を記憶する。上位アクセス実行部１２は、上位装置からのアクセス要求に対応する領域をアクセスし、該アクセス結果を診断結果として記憶部１１に格納する。診断領域特定部１３は、記憶部１１に記憶された部分領域毎の診断結果に基づいて、次に診断すべき診断領域を特定する。そして、診断実行部１４は、診断領域特定部１３によって特定された診断領域をアクセスして診断し、該診断結果を記憶部１１に格納する。【００１２】
このようにして、記憶媒体診断監装置１は、上位装置からのアクセス要求に対する領域のアクセス結果を診断結果として記憶部１１に格納することとした。このため、記憶媒体診断装置１は、この領域について、診断実行部１４によって改めて診断することを不要とするので、運用時における診断効率を上げることができ、運用時における記憶媒体の診断時間を短縮できる。さらに、記憶媒体診断装置１は、運用時であっても記憶媒体の診断によるパフォーマンスの低下を抑制できる。
【実施例２】
【００１３】
［実施例２に係るサーバ装置の構成］
図２は、本実施例２に係る記憶媒体診断装置を搭載するサーバ装置２の構成を示す機能ブロック図である。図２に示すように、サーバ装置２は、ＣＰＵ（Central  Processing  Unit）２１、メモリ２２、ＰＣＩ−Ｅｘｐｒｅｓｓ（以降、ＰＣＩｅ）コントローラ２３、ＰＣＩｅ−ＨＵＢ２４及び記憶媒体診断装置に相当するＨＤＤカード１Ａを有する。さらに、サーバ装置２は、診断すべき記憶媒体を備えるＨＤＤ（Hard  Disk）２５、ＵＳＢコントローラ２６、ＤＩＳＰＬＡＹコントローラ２７、ＬＡＮコントローラ２８及び電源２９を有する。なお、サーバ装置２は、バスにＰＣＩ−Ｅｘｐｒｅｓｓを採用した場合を説明したが、これに限定されるものではない。【００１４】
ＣＰＵ２１は、種々のプログラム及び各種データを記憶するメモリ２２と接続され、当該プログラムを実行する。ＰＣＩｅコントローラ２３は、ＣＰＵ２１及びメモリ２２とＰＣＩｅ−ＨＵＢ２４とを接続し、ＰＣＩ−Ｅｘｐｒｅｓｓインタフェースを有するバスを制御する。ＰＣＩｅ−ＨＵＢ２４は、ＰＣＩ−Ｅｘｐｒｅｓｓインタフェース規格のハブである。ＰＣＩｅ−ＨＵＢ２４は、ＨＤＤカード１Ａ、ＵＳＢコントローラ２６、ＤＩＳＰＬＡＹコントローラ２７及びＬＡＮコントローラ２８と、それぞれＰＣＩ−Ｅｘｐｒｅｓｓインタフェースを用いて接続する。【００１５】
ＨＤＤカード１Ａは、ＨＤＤ２５に備えられた記憶媒体の記憶領域を診断し、診断期間に上位装置からＬＡＮを通じてＨＤＤ２５へのアクセス要求があったとき、アクセス要求に対応する記憶領域をアクセスし、アクセス結果を診断結果とする。例えば、ＨＤＤカード１Ａは、ＨＤＤ２５に備えられた記憶媒体の記憶領域について、予め定められた診断間隔で所定のアクセス単位ずつ診断する。そして、ＨＤＤカード１Ａは、ＨＤＤ２５に関する診断を予め定められた診断制限期間に完了させる。ＨＤＤカード１Ａは、この診断制限期間の診断期間に上位装置からアクセス要求があったとき、ＨＤＤ２５からアクセス要求に対応する記憶領域をアクセスしながら、このアクセスした記憶領域のアクセス結果を診断結果とする。なお、ＨＤＤカード１Ａの構成及び動作については、後に詳述する。【００１６】
ＵＳＢコントローラ２６は、ＵＳＢ規格のＣＤ装置及びキーボードを制御する。ＤＩＳＰＬＡＹコントローラ２７は、ディスプレイを制御する。ＬＡＮコントローラ２８は、ＬＡＮを制御する。電源２９は、サーバ装置２を動作させる主電源または主電源をバックアップするバックアップ電源を指す。【００１７】
［実施例２に係るＨＤＤカードの構成］
図３は、本実施例２に係るＨＤＤカード１Ａの構成を示す機能ブロック図である。図３に示すように、ＨＤＤカード１Ａは、ＰＣＩｅ−ＢＵＳコントローラ３１、ＨＤＤコントローラ３２、不揮発性メモリ３３及び制御部３４を有する。ＰＣＩｅ−ＢＵＳコントローラ３１は、ＰＣＩ−Ｅｘｐｒｅｓｓインタフェースのバスを制御する。ＨＤＤコントローラ３２は、ＨＤＤ２５を制御する。【００１８】
不揮発性メモリ３３は、電源２９から給電されなくても保持されたデータを失わないメモリであり、例えば、フラッシュメモリ（flash  memory）などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置を含む。さらに、不揮発性メモリ３３は、診断条件テーブル４１及び診断領域管理テーブル４２を有する。診断条件テーブル４１は、ＨＤＤ２５に備えられた記憶媒体を診断する際の診断条件を記憶する。診断領域管理テーブル４２は、ＨＤＤ２５の記憶領域の最小アクセス単位で診断対象のアクセス位置を１ビットで表し、アクセス位置毎に診断済みであるか否かを記憶する。また、診断条件テーブル４１及び診断領域管理テーブル４２は、各ＨＤＤ２５に持ち、各ＨＤＤ２５から定期的に不揮発性メモリ３３に展開される。また、診断条件テーブル４１及び診断領域管理テーブル４２の各内容は、上位装置からのアクセスに影響のないタイミングで、各ＨＤＤ２５の同一のテーブルに書き込まれる。なお、診断条件テーブル４１及び診断領域管理テーブル４２の詳細については、後述する。【００１９】
制御部３４は、ＨＤＤ２５における最小アクセス単位の記憶領域を順次診断し、上位装置からアクセス要求があったとき、アクセス要求に対応する記憶領域をアクセスし、アクセス結果を診断結果として診断領域管理テーブル４２に格納する。さらに、制御部３４は、管理テーブル初期化部５０、要求取得部５１、上位アクセス要求実行部５２、診断要求実行部５３、アクセス異常判定部５４及び次診断箇所特定部５５を有する。なお、制御部３４は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路又はＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路である。【００２０】
管理テーブル初期化部５０は、診断領域管理テーブル４２を初期化する。具体的には、管理テーブル初期化部５０は、診断領域管理テーブル４２の全てのビット位置に、診断済みでないことを表す値を格納する。【００２１】
要求取得部５１は、診断要求または上位装置からのアクセス要求を取得する。例えば、要求取得部５１は、予めタイマーに設定された診断間隔毎に、タイマーから診断要求を取得する。また、要求取得部５１は、非同期に上位装置からのアクセス要求を取得する。【００２２】
上位アクセス要求実行部５２は、アクセス動作決定部５２ａ及びアクセス実行部５２ｂを有し、上位装置からのアクセス要求を診断として実行する。アクセス動作決定部５２ａは、上位装置からのアクセス要求の直前に実行されたアクセス位置から当該アクセス要求のアクセス位置までのヘッダの移動量に基づいて、当該アクセス要求に関わるアクセスの動作を決定する。具体的には、アクセス動作決定部５２ａは、上位装置からのアクセス要求に対して直前のアクセスが上位装置からのアクセス要求のアクセスであるか否かを判定する。そして、アクセス動作決定部５２ａは、直前のアクセスが上位装置からのアクセスでない、すなわち診断要求のアクセスである場合、診断要求のアクセス位置からアクセス要求のアクセス位置までのヘッダの移動量が近傍であるか否かを判定する。そして、アクセス動作決定部５２ａは、診断要求のアクセス位置からアクセス要求のアクセス位置までのヘッダの移動量が近傍である場合、診断要求のアクセス位置に後続するアクセス位置の診断を優先する旨を決定する。すなわち、アクセス動作決定部５２ａは、直前のアクセス位置からアクセス要求のアクセス位置までが近傍であれば、診断を優先しても上位装置からのアクセス要求に影響がないと判断し、アクセス要求の実行前に診断を実行するように決定する。【００２３】
また、アクセス動作決定部５２ａは、診断要求のアクセス位置からアクセス要求のアクセス位置までのヘッダの移動量が近傍でない場合、診断を優先しない旨を決定する。すなわち、アクセス動作決定部５２ａは、直前のアクセス位置からアクセス要求のアクセス位置までが近傍でなければ、診断を優先すると上位装置からのアクセス要求に影響があると判断し、アクセス要求の実行前に診断を実行しないように決定する。なお、近傍である移動量とは、例えば１００ＬＢＡ（Logical  Block  Addressing）であるが、診断を優先しても上位装置からのアクセス要求に影響がない移動量であれば良く、ＨＤＤ２５の種類やヘッダの性能に応じて決定される。【００２４】
また、アクセス動作決定部５２ａは、直前のアクセスが上位装置からのアクセスである場合、直前のアクセス位置から今回のアクセス要求のアクセス位置までのヘッダの移動量が平均値以上であるか否かを判定する。そして、アクセス動作決定部５２ａは、直前のアクセス位置から今回のアクセス要求のアクセス位置までのヘッダの移動量が平均値以上である場合、直前のアクセス位置に後続するアクセス位置をプリフェッチする旨を決定する。ここで、「プリフェッチ」とは、上位装置からのアクセス要求のタイミングで当該アクセス要求に対するアクセスをしながら、未だ診断されていないアクセス位置を予め診断することをいう。すなわち、直前のアクセス位置からアクセス要求のアクセス位置までの移動量が平均値以上であれば、シーク時間が平均より長期となるので、アクセス要求のアクセス時間におけるプリフェッチのアクセス時間の割合が比較的小さくなる。このため、アクセス動作決定部５２ａは、アクセス要求に影響が小さいと判断し、アクセス要求の実行前にプリフェッチを実行するように決定する。【００２５】
また、アクセス動作決定部５２ａは、直前のアクセス位置から今回のアクセス要求のアクセス位置までのヘッダの移動量が平均値未満である場合、プリフェッチしない旨を決定する。すなわち、直前のアクセス位置からアクセス要求のアクセス位置までの移動量が平均値未満であれば、シーク時間が平均より短期となるので、アクセス要求のアクセス時間におけるプリフェッチのアクセス時間の割合が比較的大きくなる。このため、アクセス動作決定部５２ａは、アクセス要求に影響が大きいと判断し、アクセス要求の実行前にプリフェッチを実行しないように決定する。なお、平均値である移動量とは、例えば１０００ＬＢＡであるが、プリフェッチをしても上位装置からのアクセス要求に影響がない移動量であれば良く、ＨＤＤ２５の種類やヘッダの性能に応じて決定される。【００２６】
アクセス実行部５２ｂは、アクセス動作決定部５２ａによって決定された、上位装置からのアクセス要求に対するアクセス動作に基づき、ＨＤＤ２５へアクセスする。具体的には、アクセス実行部５２ｂは、直前のアクセスが診断要求のアクセスであって、診断を優先する旨の決定である場合、診断要求のアクセス位置に後続するアクセス位置の診断を実行する。さらに、アクセス実行部５２ｂは、診断実行後、上位装置からのアクセス要求のアクセス位置をアクセスする。このアクセスのアクセス結果は、診断結果として用いられる。また、アクセス実行部５２ｂは、直前のアクセスが診断要求のアクセスであって、診断を優先しない旨の決定である場合、上位装置からのアクセス要求のアクセス位置をアクセスする。このアクセスのアクセス結果は、診断結果として用いられる。【００２７】
また、アクセス実行部５２ｂは、直前のアクセスが上位装置からのアクセスであって、プリフェッチする旨の決定である場合、直前のアクセス位置に後続するアクセス位置のプリフェッチを実行する。そして、アクセス実行部５２ｂは、プリフェッチ実行後、上位装置からのアクセス要求のアクセス位置をアクセスする。これらプリフェッチ及びアクセスの結果は、診断結果として用いられる。また、アクセス実行部５２ｂは、直前のアクセスが上位装置からのアクセスであって、プリフェッチしない旨の決定である場合、上位装置からのアクセス要求のアクセス位置をアクセスする。このアクセスのアクセス結果は、診断結果として用いられる。【００２８】
診断要求実行部５３は、診断条件テーブル４１を用いて、診断対象であるアクセス位置を診断する。ここで、診断条件テーブル４１のデータ構造について、図４を参照して説明する。図４は、診断条件テーブルのデータ構造の一例を示す図である。図４に示すように、診断条件テーブル４１は、ＨＤＤ２５の識別番号４１ａ毎に、診断制限期間４１ｂ、診断周期４１ｃ、診断アドレスカウンタ４１ｄ、診断間隔４１ｅを対応付けて記憶する。さらに、診断条件テーブル４１は、ＨＤＤ２５の識別番号４１ａ毎に、診断アクセス単位４１ｆ、診断優先範囲４１ｇ、プリフェッチ数４１ｈ及びプリフェッチ起動シーク距離４１ｉを対応付けて記憶する。【００２９】
ＨＤＤ２５の識別番号４１ａは、ＨＤＤコントローラ３２と接続する、診断対象のＨＤＤ２５毎に一意に付された番号を示す。診断制限期間４１ｂは、ＨＤＤ２５における診断対象の記憶領域を診断する制限期間を示す。診断周期４１ｃは、ＨＤＤ２５における診断周期を示す。診断アドレスカウンタ４１ｄは、次に診断すべきＨＤＤ２５のアクセス位置に対応させたカウンタを示す。診断アドレスカウンタ４１ｄのカウンタ値は、診断領域管理テーブル４２のビット位置に対応する。診断間隔４１ｅは、診断制限期間４１ｂに１回に実施される診断の診断間隔を示す。１回に実施される診断箇所は、診断アドレスカウンタ４１ｄに示されるカウンタに対応したＨＤＤ２５のアクセス位置となる。【００３０】
診断アクセス単位４１ｆは、１回に実施される診断のアクセス単位を示す。診断優先範囲４１ｇは、上位装置からのアクセス要求の前に優先して診断できるシーク距離の範囲を示す。例えば、診断優先範囲４１ｇは、近傍と認められる移動量を示す。プリフェッチ数４１ｈは、１回にプリフェッチする際のアクセス単位を示す。プリフェッチ数４１ｈは、診断アクセス単位４１ｆと同一となることが望ましい。プリフェッチ起動シーク距離４１ｉは、上位装置からのアクセス要求の前にプリフェッチできるシーク距離の範囲を示す。例えば、プリフェッチ起動シーク距離４１ｉは、ヘッダの平均移動量を示す。【００３１】
例えば、診断制限期間４１ｂには、２週間を示す「２ｗｅｅｋ」が記憶される。診断周期４１ｃには、３週間を示す「３ｗｅｅｋ」が記憶される。診断アドレスカウンタ４１ｄには、次に診断が実施されるアクセス位置に対応する、診断領域管理テーブル４２のビット位置「２」が記憶される。診断間隔４１ｅには、「５分」が記憶される。診断アクセス単位４１ｆには、「１０ＬＢＡ」が記憶される。診断優先範囲４１ｇには、「１００ＬＢＡ以内」が記憶される。プリフェッチ数４１ｈには、「１０ＬＢＡ」が記憶される。プリフェッチ起動シーク距離４１ｉには、「１０００ＬＢＡ以上」が記憶される。【００３２】
図３に戻って、具体的には、診断要求実行部５３は、要求取得部５１によって取得された要求が診断要求である場合、診断アドレスカウンタ４１ｄに示されるカウンタに対応したＨＤＤ２５のアクセス位置を診断する。【００３３】
アクセス異常判定部５４は、ＨＤＤ２５へのアクセスが異常であるか否かを判定し、異常であると判定される場合には、異常がある箇所を修復する。具体的には、アクセス異常判定部５４は、アクセス実行部５２ｂまたは診断要求実行部５３によってアクセスされたアクセス位置のアクセスに異常があるか否かを判定する。そして、アクセス異常判定部５４は、アクセスに異常がない場合には、アクセスが正常であるアクセス位置に対応する、診断領域管理テーブル４２のビット位置に、診断済みであることを表す値を格納する。そして、アクセス異常判定部５４は、アクセスに異常がある場合には、訂正可能な異常であるか否かを判定する。アクセス異常判定部５４は、訂正可能な異常である場合には、予め埋め込まれたＥＣＣコードを用いて、読み出したデータを訂正し、訂正後のデータを同一箇所に書き込む。また、アクセス異常判定部５４は、訂正不能な異常である場合には、予め定めたリトライ数を限度として、異常箇所が正常となるまで読み出しを繰り返す。そして、アクセス異常判定部５４は、異常箇所が正常となった場合には、異常箇所が正常となったアクセス位置に対応する、診断領域管理テーブル４２のビット位置に、診断済みであることを表す値を格納する。また、アクセス異常判定部５４は、異常箇所が正常とならなかった場合には、異常に対応するエラー処理を実行する。なお、訂正可能な異常とは、例えばソフトエラー、記憶媒体の劣化、環境温度、振動やノイズによってビット化けが発生するような異常を指す。【００３４】
次診断箇所特定部５５は、次に診断要求によって診断される診断箇所を特定する。具体的には、次診断箇所特定部５５は、診断アドレスカウンタ４１ｄに対応したアクセス位置を診断した場合には、診断領域管理テーブル４２に基づいて診断アドレスカウンタ４１ｄに示されるカウンタをカウントアップする。すなわち、次診断箇所特定部５５は、カウントアップされたカウンタが指す、診断領域管理テーブル４２のビット位置が診断済みであるとき、診断済みでないビット位置までカウンタをカウンタアップする。【００３５】
また、次診断箇所特定部５５は、上位装置からのアクセス要求に対応したアクセスまたはプリフェッチによるアクセスをした場合には、診断領域管理テーブル４２に基づいて診断アドレスカウンタ４１ｄに示されるカウンタを調整する。すなわち、次診断箇所特定部５５は、アクセス位置が診断アドレスカウンタ４１ｄに示されるカウンタに相当する場合、診断済みと判断し、診断済みでないビット位置までカウンタをカウントアップする。【００３６】
次に、診断領域管理テーブル４２のデータ構造について、図５を参照して説明する。図５は、診断領域管理テーブルのデータ構造の一例を示す図である。図５に示すように、診断領域管理テーブル４２は、１ビット毎に、診断済みであるか否かを表す値を対応付けて記憶する。ここでは、診断済みである場合には、「０」が記憶され、診断済みでない場合には、「１」が記憶される。【００３７】
また、各ビットは、ＨＤＤ２５の診断対象のアクセス位置を対応させたビットとなる。そして、診断アドレスカウンタ４１ｄに示されるカウンタは、診断領域管理テーブル４２のビット位置を表すこととなる。【００３８】
［実施例２に係る記憶媒体診断処理の手順］
次に、記憶媒体診断処理の手順を、図６および図７を参照して説明する。図６は、記憶媒体診断処理のうちメイン処理の手順を示し、図７は、記憶媒体診断処理のうちアクセス異常判定処理の手順を示す。図６は、実施例２に係る記憶媒体診断処理のうちメイン処理の手順を示すフローチャートである。【００３９】
まず、管理テーブル初期部５０は、診断領域管理テーブル４２を初期化する（ステップＳ１１）。具体的には、管理テーブル初期化部５０は、診断領域管理テーブル４２の全てのビット位置に、診断済みでないことを表す値（例えば「１」）を格納する。そして、要求取得部５１は、上位装置からのアクセス要求または診断要求が有るか否かを判定する（ステップＳ１２）。なお、上位装置からのアクセス要求は、上位装置から非同期に取得される。診断要求は、予めタイマーに設定された診断間隔毎に、タイマーから取得される。【００４０】
要求取得部５１によって上位装置からのアクセス要求または診断要求が無いと判定された場合（ステップＳ１２；Ｎｏ）、要求取得部５１は、判定処理を繰り返すためにステップＳ１２に移行する。一方、要求取得部５１によって上位装置からのアクセス要求または診断要求が有ると判定された場合（ステップＳ１２；Ｙｅｓ）、要求取得部５１は、上位装置からのアクセス要求であるか否かを判定する（ステップＳ１３）。【００４１】
要求取得部５１によって上位装置からのアクセス要求でないと判定された場合（ステップＳ１３；Ｎｏ）、診断要求実行部５３は、ＨＤＤ２５について、診断アドレスカウンタ４１ｄに対応したアクセス位置を診断する（ステップＳ１４）。そして、診断要求実行部５３は、ステップＳ３１に移行する。【００４２】
一方、要求取得部５１によって上位装置からのアクセス要求であると判定された場合（ステップＳ１３；Ｙｅｓ）、アクセス動作決定部５２ａは、直前のアクセスが上位装置からのアクセス要求のアクセスであるか否かを判定する（ステップＳ１５）。直前のアクセスが上位装置からのアクセス要求のアクセスでない場合（ステップＳ１５；Ｎｏ）、アクセス動作決定部５２ａは、上位装置からのアクセス要求のアクセス位置が診断アドレスカウンタ４１ｄに対して１００ＬＢＡ以内か否かを判定する（ステップＳ１６）。すなわち、アクセス動作決定部５２ａは、直前の診断要求のアクセス位置からアクセス要求のアクセス位置までのヘッダの移動量が近傍であるか否かを判定する。【００４３】
上位装置からのアクセス要求のアクセス位置が診断アドレスカウンタ４１ｄに対して１００ＬＢＡ以内である場合（ステップＳ１６；Ｙｅｓ）、アクセス動作決定部５２ａは、診断要求のアクセス位置に後続するアクセス位置の診断を優先する旨を決定する。すなわち、アクセス動作決定部５２ａは、診断を優先しても上位装置からのアクセス要求に影響がないと判断する。そして、アクセス実行部５２ｂは、診断アドレスカウンタ４１ｄに対応したアクセス位置を診断し（ステップＳ１７）、その後、上位装置からのアクセス要求のアクセス位置をアクセスする（ステップＳ１８）。【００４４】
上位装置からのアクセス要求のアクセス位置が診断アドレスカウンタ４１ｄに対して１００ＬＢＡを超える場合（ステップＳ１６；Ｎｏ）、アクセス動作決定部５２ａは、診断を優先しない旨を決定する。すなわち、アクセス動作決定部５２ａは、診断を優先すると上位装置からのアクセス要求に影響があると判断する。そして、アクセス実行部５２ｂは、上位装置からのアクセス要求のアクセス位置をアクセスすべく、ステップＳ１８に移行する。【００４５】
そして、直前のアクセスが上位装置からのアクセス要求のアクセスである場合（ステップＳ１５；Ｙｅｓ）、アクセス動作決定部５２ａは、上位装置からのアクセス要求が直前のアクセスに対して１０００ＬＢＡ以上か否かを判定する（ステップＳ１９）。すなわち、アクセス動作決定部５２ａは、直前のアクセス位置から今回のアクセス要求のアクセス位置までのヘッダの移動量が平均値以上であるか否かを判定する。【００４６】
上位装置からのアクセス要求が直前のアクセスに対して１０００ＬＢＡ以上である場合（ステップＳ１９；Ｙｅｓ）、アクセス動作決定部５２ａは、直前のアクセス位置に後続するアクセス位置をプリフェッチする旨を決定する。すなわち、アクセス動作決定部５２ａは、プリフェッチしても上位装置からのアクセス要求に影響がないと判断する。そして、アクセス実行部５２ｂは、直前のアクセス位置に後続するアクセス位置のプリフェッチを実行する（ステップＳ２０）。その後、アクセス実行部５２ｂは、上位装置からのアクセス要求のアクセス位置をアクセスする（ステップＳ２１）。【００４７】
上位装置からのアクセス要求が直前のアクセスに対して１０００ＬＢＡ未満である場合（ステップＳ１９；Ｎｏ）、アクセス動作決定部５２ａは、プリフェッチしない旨を決定する。すなわち、アクセス動作決定部５２ａは、プリフェッチすると上位装置からのアクセス要求に影響があると判断する。そして、アクセス実行部５２ｂは、上位装置からのアクセス要求のアクセス位置をアクセスすべく、ステップＳ２１に移行する。【００４８】
次に、図７は、実施例２に係る記憶媒体診断処理のうちアクセス異常判定処理の手順を示すフローチャートである。【００４９】
まず、アクセス異常判定部５４は、アクセス実行部５２ｂまたは診断要求実行部５３によるアクセス位置のアクセスが正常に完了したか否かを判定する（ステップＳ３１）。アクセス異常判定部５４によってアクセスが正常に完了したと判定される場合（ステップＳ３１；Ｙｅｓ）、アクセス異常判定部５４は、正常に完了したアクセス位置の診断完了指示を通知する（ステップＳ３２）。そして、アクセス異常判定部５４は、診断完了指示があったアクセス位置に対応する、診断領域管理テーブル４２のビット位置に、診断済みであることを表す値（例えば「０」）を格納する。【００５０】
アクセス異常判定部５４によってアクセスが正常に完了しなかったと判定される場合（ステップＳ３１；Ｎｏ）、アクセス異常判定部５４は、訂正可能な異常であるか否かを判定する（ステップＳ３３）。アクセス異常判定部５４によって訂正可能な異常であると判定された場合（ステップＳ３３；Ｙｅｓ）、アクセス異常判定部５４は、例えばＥＣＣコードを用いて読み出したデータを訂正し、訂正後のデータを対象箇所に再び書き込む（ステップＳ３４）。そして、アクセス異常判定部５４は、ステップＳ３９に移行する。【００５１】
アクセス異常判定部５４によって訂正可能な異常でないと判定された場合（ステップＳ３３；Ｎｏ）、アクセス異常判定部５４は、訂正不能な異常であるか否かを判定する（ステップＳ３５）。アクセス異常判定部５４によって訂正不能な異常でないと判定された場合（ステップＳ３５；Ｎｏ）、アクセス異常判定部５４は、異常原因に対応するエラー処理を行い、処理を終了する。【００５２】
一方、アクセス異常判定部５４によって訂正不能な異常であると判定された場合（ステップＳ３５；Ｙｅｓ）、アクセス異常判定部５４は、対象箇所を再び読み出す（ステップＳ３６）。そして、アクセス異常判定部５４は、予め定められたリトライ数を超えているか否かを判定する（ステップＳ３７）。アクセス異常判定部５４によってリトライ数を超えていない場合（ステップＳ３７；Ｎｏ）、ステップＳ３１に移行する。一方、アクセス異常判定部５４によってリトライ数を超えている場合（ステップＳ３７；Ｙｅｓ）、アクセス異常判定部５４は、対象箇所を診断異常ＬＢＡとして登録する（ステップＳ３８）。【００５３】
続いて、次診断箇所特定部５５は、診断領域管理テーブル４２上、全ての診断が完了したか否かを判定する（ステップＳ３９）。具体的には、次診断箇所特定部５５は、診断領域管理テーブル４２の全てのビットが診断済みであることを表す値（例えば「０」）であるか否かを判定する。【００５４】
全ての診断が完了したと判定された場合（ステップＳ３９；Ｙｅｓ）、次診断箇所特定部５５は、タイマーに次の診断周期まで休止する旨を通知する（ステップＳ４０）。一方、全ての診断が完了していないと判定された場合（ステップＳ３９；Ｎｏ）、次診断箇所特定部５５は、診断領域管理テーブル４２に基づいて診断アドレスカウンタ４１ｄの値を特定する。【００５５】
すなわち、次診断箇所特定部５５は、診断アドレスカウンタ４１ｄに対応したアクセス位置が診断された場合には、診断領域管理テーブル４２に基づいて診断アドレスカウンタ４１ｄに示されるカウンタをカウントアップする（ステップＳ４１）。なお、次診断箇所特定部５５は、カウンタアップされたカウンタが指す、診断領域管理テーブル４２のビット位置が診断済みであるとき、診断済みでないビット位置までカウンタをカウンタアップする。【００５６】
そして、次診断箇所特定部５５は、アクセス要求に対応したアクセスまたはプリフェッチによるアクセスがされた場合には、診断領域管理テーブル４２に基づいて診断アドレスカウンタ４１ｄに示されるカウンタを調整する（ステップＳ４２）。なお、次診断箇所特定部５５は、アクセス位置が診断アドレスカウンタ４１ｄに示されるカウンタに相当するとき、診断済みと判断し、診断済みでないビット位置までカウンタをカウントアップする。【００５７】
続いて、アクセス異常判定部５４は、診断領域管理テーブル４２を更新する（ステップＳ４３）。そして、アクセス異常判定部５４は、診断を終了した期間が診断制限期間４１ｂである２週間を超えた場合、診断超過であることを上位装置に通知する（ステップＳ４４）。そして、アクセス異常判定部５４は、次の診断要求または上位装置からのアクセス要求を取得すべく、ステップＳ１２に移行する。【００５８】
次に、診断領域管理テーブル４２及び診断アドレスカウンタ４１ｄに着目して、記憶媒体診断処理の具体例を、図８を参照して説明する。図８は、記憶媒体診断処理の具体例を説明する図である。なお、説明の便宜上、診断領域管理テーブル４２のビットには、診断済みでないことを表す値（例えば「１」）に代えて、「未診断ビット」として白抜きで表すものとする。また、診断済みであることを表す値（例えば「０」）に代えて、「診断要求による診断済みビット」として黒抜き、「上位装置からのアクセス要求による診断済みビット」として斜め線、「プリフェッチによる診断済みビット」として縦線で表すものとする。【００５９】
まず、管理テーブル初期部５０は、診断領域管理テーブル４２及び診断アドレスカウンタ４１ｄを初期化する。ここでは、管理テーブル初期部５０は、診断領域管理テーブル４２に未診断ビットを格納し、診断アドレスカウンタ４１ｄに「０」を格納する。【００６０】
タイマーから診断間隔で診断要求が起動されると（Ｊ１）、診断要求実行部５３は、診断アドレスカウンタ４１ｄに示される「０」に対応したＨＤＤ２５のアクセス位置を診断する。そして、アクセス異常判定部５４は、アクセスが正常である場合、診断領域管理テーブル４２について、診断アドレスカウンタ４１ｄに示される「０」に対応したビット位置に、「診断要求による診断済みビット」を格納する。そして、次診断箇所特定部５５は、診断アドレスカウンタ４１ｄの値をカウントアップし、この値を「１」に設定する。【００６１】
続いて、タイマーから診断間隔で診断要求が起動されると（Ｊ２）、診断要求実行部５３は、診断アドレスカウンタ４１ｄに示される「１」に対応したＨＤＤ２５のアクセス位置を診断する。そして、アクセス異常判定部５４は、アクセスが正常である場合、診断領域管理テーブル４２について、診断アドレスカウンタ４１ｄに示される「１」に対応したビット位置に、「診断要求による診断済みビット」を格納する。そして、次診断箇所特定部５５は、診断アドレスカウンタ４１ｄの値をカウントアップし、この値を「２」に設定する。【００６２】
ここで、タイマーから診断間隔で診断要求が起動されると（Ｊ３）、診断要求実行部５３は、診断アドレスカウンタ４１ｄに示される「２」に対応したＨＤＤ２５のアクセス位置を診断する。そして、アクセス異常判定部５４は、アクセスが正常である場合、診断領域管理テーブル４２について、診断アドレスカウンタ４１ｄに示される「２」に対応したビット位置に、「診断要求による診断済みビット」を格納する。そして、次診断箇所特定部５５は、診断アドレスカウンタ４１ｄの値をカウントアップし、この値を「３」に設定する。【００６３】
また、診断アドレスカウンタ４１ｄの値が「２」であるとき、診断間隔以内に上位装置からアクセス要求がされたものとする。このとき、上位装置からのアクセス要求のアクセス位置が、診断アドレスカウンタ４１ｄに示される「２」に対応したアクセス位置に対して１００ＬＢＡ以内であるとする（Ｊ４）。アクセス動作決定部５２ａは、診断要求のアクセス位置に後続するアクセス位置の診断を優先する旨を決定する。そして、アクセス実行部５２ｂは、診断アドレスカウンタ４１ｄに示される「２」に対応したアクセス位置を診断し、その後、上位装置からのアクセス要求のアクセス位置をアクセスする。そして、アクセス異常判定部５４は、アクセスが正常である場合、診断領域管理テーブル４２について、診断アドレスカウンタ４１ｄに示される「２」に対応したビット位置に、「診断要求による診断済みビット」を格納する。さらに、アクセス異常判定部５４は、上位装置からのアクセス要求に対応したビット位置に、「上位装置からのアクセス要求による診断済みビット」を格納する。そして、次診断箇所特定部５５は、診断アドレスカウンタ４１ｄの値をカウントアップし、この値を「３」に設定する。【００６４】
一方、診断アドレスカウンタ４１ｄの値が「２」であるとき、診断間隔以内に上位装置からアクセス要求がされたものとする。このとき、上位装置からのアクセス要求のアクセス位置が、診断アドレスカウンタ４１ｄに示される「２」に対応したアクセス位置に対して１００ＬＢＡを超えるとする（Ｊ５）。アクセス動作決定部５２ａは、診断を優先しない旨を決定する。そして、アクセス実行部５２ｂは、上位装置からのアクセス要求のアクセス位置をアクセスする。そして、アクセス異常判定部５４は、アクセスが正常である場合、診断領域管理テーブル４２について、上位装置からのアクセス要求に対応したビット位置に、「上位装置からのアクセス要求による診断済みビット」を格納する。【００６５】
続いて、診断間隔以内に上位装置からアクセス要求が連続してされたものとする。このとき、上位装置からのアクセス要求のアクセス位置が、直前のアクセス位置に対して１０００ＬＢＡ以上であるとする（Ｊ６）。アクセス動作決定部５２ａは、直前のアクセス位置に後続するアクセス位置をプリフェッチする旨を決定する。そして、アクセス実行部５２ｂは、直前のアクセス位置に後続するアクセス位置のプリフェッチを実行し、その後、上位装置からのアクセス要求のアクセス位置をアクセスする。そして、アクセス異常判定部５４は、アクセスが正常である場合、診断領域管理テーブル４２について、プリフェッチを実行したアクセス位置に対応したビット位置に、「プリフェッチによる診断済みビット」を格納する。そして、アクセス異常判定部５４は、診断領域管理テーブル４２について、上位装置からのアクセス要求に対応したビット位置に、「上位装置からのアクセス要求による診断済みビット」を格納する。【００６６】
一方、上位装置からのアクセス要求のアクセス位置が、直前のアクセス位置に対して１０００ＬＢＡ未満であるとする（Ｊ７）。アクセス動作決定部５２ａは、プリフェッチしない旨を決定する。そして、アクセス実行部５２ｂは、上位装置からのアクセス要求のアクセス位置をアクセスする。そして、アクセス異常判定部５４は、アクセスが正常である場合、診断領域管理テーブル４２について、上位装置からのアクセス要求に対応したビット位置に、「上位装置からのアクセス要求による診断済みビット」を格納する。【００６７】
［実施例２の効果］
上記実施例２によれば、診断領域管理テーブル４２は、ＨＤＤ２５の記憶領域の最小アクセス単位毎の診断結果を記憶する。そして、上位アクセス要求実行部５２は、上位装置からのアクセス要求が取得されると、当該アクセス要求を診断として実行し、アクセス異常判定部５４に、診断済みであることを診断領域管理テーブル４２に格納させる。そして、次診断箇所特定部５５は、診断領域管理テーブル４２に記憶された診断結果に基づいて、次に診断すべき診断領域を特定する。そして、診断要求実行部５３は、次診断特定部５５によって特定された診断領域をアクセスして診断し、アクセス異常判定部５４に、診断済みであることを診断領域管理テーブル４２に格納させる。かかる構成によれば、上位アクセス要求実行部５２は、上位装置からのアクセス要求を診断として実行し、診断済みであることを診断領域管理テーブル４２に格納させることとした。このため、上位アクセス要求実行部５２は、このアクセス要求に関する記憶領域について改めて診断することを不要とするので、運用時における診断効率を上げることができる。また、上位アクセス要求実行部５２は、運用時における記憶媒体の診断時間を短縮できる。さらに、記憶媒体診断装置１は、運用時であっても記憶媒体の診断によるパフォーマンスの低下を抑制できる。【００６８】
また、上記実施例２によれば、アクセス動作決定部５２ａは、上位装置からのアクセス要求の直前に実行されたアクセス位置から当該アクセス要求のアクセス位置までのヘッダの移動量に基づいて、当該アクセス要求に関わるアクセスの動作を決定する。そして、アクセス実行部５２ｂは、アクセス動作決定部５２ａによって決定されたアクセスの動作に基づいて、ＨＤＤ２５へアクセスする。かかる構成によれば、アクセス動作決定部５２ａは、上位装置からのアクセス要求のアクセス位置までのヘッダの移動量に基づいて、当該アクセス要求に関わるアクセスの動作を決定することとした。このため、アクセス動作決定部５２ａは、上位装置からのアクセス性能の低下を抑制するようなアクセスの動作を決定することが可能となる。【００６９】
また、上記実施例２によれば、アクセス動作決定部５２ａは、アクセス要求の直前の診断要求のアクセス位置からアクセス要求のアクセス位置までのヘッダの移動量が近傍である場合、診断要求のアクセス位置の後続を優先して診断する旨を決定する。かかる構成によれば、アクセス動作決定部５２ａは、ヘッダの移動量が近傍であれば、診断要求のアクセス位置の後続を優先して診断しても上位装置からのアクセス性能に影響が小さいので、運用時における診断効率を上げることができる。そして、アクセス動作決定部５２ａは、ＨＤＤ２５の診断時間を短縮できることとなる。【００７０】
また、上記実施例２によれば、アクセス動作決定部５２ａは、今回のアクセス要求の直前のアクセス要求のアクセス位置から今回のアクセス要求のアクセス位置までのヘッダの移動量が平均値以上の場合、直前のアクセス位置の後続を予め診断する旨を決定する。かかる構成によれば、アクセス動作決定部５２ａは、ヘッダの移動量が平均値以上であれば、直前のアクセス位置の後続を予め診断しても上位装置からのアクセス性能に影響が小さいので、運用時における診断効率を上げることができる。また、アクセス動作決定部５２ａは、ＨＤＤ２５の診断時間を短縮できる。【００７１】
ところで、実施例２では、診断領域管理テーブル４２は、ＨＤＤ２５の記憶領域の最小アクセス単位を１ビットで表すものとした。しかしながら、診断領域管理テーブル４２は、これに限定されず、ＨＤＤ２５の記憶領域の最小アクセス単位の整数倍のアクセス単位を１ビットで表すものとしても良い。この場合、診断要求実行部５３は、診断条件テーブル４１を用いて、ＨＤＤ２５の記憶領域のうち最小アクセス単位の整数倍の診断アクセス単位４１ｆの領域をアクセスして診断するようにする。【００７２】
図９は、診断アクセス単位を変更した場合の診断条件テーブル４１のデータ構造を示した図である。図９に示すように、診断アクセス単位４１ｆには、最小アクセス単位である１０ＬＢＡの２倍の「２０ＬＢＡ」が記憶されている。【００７３】
そして、アクセス異常判定部５４は、当該領域が診断済みであることを診断領域管理テーブル４２に格納する。これにより、診断領域管理テーブル４２は、記憶容量を削減できるとともに、ＨＤＤ２５の記憶領域の診断時間を短縮できる。また、アクセス実行部５２ｂは、上位装置からのアクセス要求に対応する領域が診断アクセス単位４１ｆより小さい場合、当該領域を含んだ診断アクセス単位４１ｆ分の記憶領域をアクセスするようにする。これにより、アクセス実行部５２ｂは、上位装置からのアクセス要求に対応する領域を超えて記憶領域を予め診断できることとなるので、ＨＤＤ２５の記憶領域の診断時間を短縮できる。【００７４】
また、実施例２では、診断要求実行部５３は、ＨＤＤ２５に備えられた記憶媒体の記憶領域を診断するものとした。しかしながら、診断要求実行部５３は、ＨＤＤ２５がＲＡＩＤ構成であっても良く、ＲＡＩＤ構成の記憶媒体の記憶領域を診断するものとしても良い。この場合、診断要求実行部５３は、ＲＡＩＤ構成の特性により規定される冗長部分の記憶媒体を優先的に診断するようにする。これにより、診断要求実行部５３は、冗長部分の記憶媒体を用いて診断するので、記憶媒体の記憶領域の診断を効率化することができる。【００７５】
図１０は、ＲＡＩＤ構成である場合の診断条件テーブル４１のデータ構造を示した図である。図１０に示すように、診断アクセス単位４１ｆ及びプリフェッチ数４１ｈには、ストライプ長の１０倍のアクセス単位が記憶されている。【００７６】
また、実施例２では、次診断箇所特定部５５は、診断を終了した期間が診断制限期間４１ｂである２週間を超えた場合、診断超過であることを上位装置に通知するものとした。しかしながら、次診断箇所特定部５５は、診断経過期間及び記憶領域の診断残容量を監視するようにし、診断経過期間に記憶領域の診断が完了するように診断アクセス単位を調整するようにしても良い。【００７７】
図１１は、診断経過期間を監視する場合の診断条件テーブル４１のデータ構造を示した図である。図１１に示すように、診断経過期間４１ｋ及び診断残容量４１ｌが追加された。次診断箇所特定部５５は、診断経過期間４１ｋが診断制限期間４１ｂに近くなってきたら、診断残容量４１ｌに応じて、診断アクセス単位４１ｆ及びプリフェッチ数４１ｈを調整する。さらに、次診断箇所特定部５５は、診断間隔４１ｅを調整するようにしても良い。【００７８】
また、実施例２では、要求取得部５１は、診断要求及び上位装置からのアクセス要求を同時に取得する場合がある。かかる場合であっても、アクセス動作決定部５２ａは、上位装置からのアクセス要求の直前に実行されたアクセス位置から当該アクセス要求のアクセス位置までのヘッダの移動量に基づいて、当該アクセス要求に関わるアクセスの動作を決定すれば良い。そして、アクセス実行部５２ｂは、アクセス動作決定部５２ａによって決定されたアクセスの動作に基づいて、直前のアクセス位置に後続するアクセス位置の診断やプリフェッチを実行し、アクセス要求に対するアクセスを実行するようにする。かかる構成によれば、アクセス実行部５２ｂは、上位装置からのアクセス要求に対するアクセスを実行しつつ、さらに診断も実行することができることとなり、診断効率の向上を図ることができる。【００７９】
［プログラムなど］
なお、ＨＤＤカード１Ａは、既知のパーソナルコンピュータ、ワークステーションなどの情報処理装置に、上記した要求取得部５１、上位アクセス要求実行部５２及び診断要求実行部５３などの各機能を搭載することによって実現することができる。【００８０】
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、上位アクセス要求実行部５２とアクセス異常判定部５４、診断要求実行部５３とアクセス異常判定部５４をそれぞれ１個の部として統合しても良い。一方、アクセス異常判定部５４を、アクセス異常を判定する判定部とアクセス異常と判定された場合にアクセスされたデータを修復する修復部とに分散しても良い。また、不揮発性メモリ３３をＨＤＤカード１Ａの外部装置としてＰＣＩ−Ｅｘｐｒｅｓｓバスまたはネットワーク経由で接続するようにしても良い。【００８１】
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図１２を用いて、図３に示したＨＤＤカード１Ａと同様の機能を有する記憶媒体診断プログラムを実行するコンピュータの一例を説明する。【００８２】
図１２は、記憶媒体診断プログラムを実行するコンピュータを示す図である。図１２に示すように、コンピュータ１０００は、ＲＡＭ（Random  Access  Memory）１０１０と、キャッシュ１０２０と、ＨＤＤ１０３０と、ＣＰＵ（Central  Processing  Unit）１０４０及びバス１０５０とを有する。ＲＡＭ１０１０、キャッシュ１０２０、ＨＤＤ１０３０、ＣＰＵ１０４０は、バス１０５０によって接続されている。【００８３】
そして、ＨＤＤ１０３０には、図３に示したＨＤＤカード１Ａと同様の機能を有する記憶媒体診断プログラム１０３１が記憶される。また、ＨＤＤ１０３０には、図３に示した不揮発性メモリ３３内の情報（診断条件テーブル４１、診断領域管理テーブル４２）に対応する診断関連情報１０３２が記憶される。【００８４】
そして、ＣＰＵ１０４０が記憶媒体診断プログラム１０３１をＨＤＤ１０３０から読み出してＲＡＭ１０１０に展開することにより、記憶媒体診断プログラム１０３１は、記憶媒体診断プロセス１０１１として機能するようになる。そして、記憶媒体診断プロセス１０１１は、診断関連情報１０３２から読み出した情報等を適宜ＲＡＭ１０１０上の自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種データ処理を実行する。【００８５】
なお、上記の記憶媒体診断プログラム１０３１は、必ずしもＨＤＤ１０３０に記憶されている必要はなく、ＣＤ−ＲＯＭ等の記憶媒体に記憶されたこのプログラムを、コンピュータ１０００が読み出して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等を介してコンピュータ１０００に接続される他のコンピュータ（またはサーバ）等にこのプログラムを記憶させておいても良い。この場合には、コンピュータ１０００がこれらからプログラムを読み出して実行する。
【符号の説明】
【００８６】
１  記憶媒体診断装置
１Ａ  ＨＤＤカード
２  サーバ装置
１１  記憶部
１２  上位アクセス実行部
１３  診断領域特定部
１４  診断実行部
２１  ＣＰＵ
２２  メモリ
２３  ＰＣＩｅコントローラ
２４  ＰＣＩｅ−ＨＵＢ
２５  ＨＤＤ
２６  ＵＳＢコントローラ
２７  ＤＩＳＰＬＡＹコントローラ
２８  ＬＡＮコントローラ
２９  電源
３１  ＰＣＩｅ−ＢＵＳコントローラ
３２  ＨＤＤコントローラ
３３  不揮発性メモリ
３４  制御部
４１  診断条件テーブル
４２  診断領域管理テーブル
５１  要求取得部
５２  上位アクセス要求実行部
５２ａ  アクセス動作決定部
５２ｂ  アクセス実行部
５３  診断要求実行部
５４  アクセス異常判定部
５５  次診断箇所特定部
【図１】
0005418687.tif 000002
【図２】
0005418687.tif 000003
【図３】
0005418687.tif 000004
【図４】
0005418687.tif 000005
【図５】
0005418687.tif 000006
【図６】
0005418687.tif 000007
【図７】
0005418687.tif 000008
【図８】
0005418687.tif 000009
【図９】
0005418687.tif 000010
【図１０】
0005418687.tif 000011
【図１１】
0005418687.tif 000012
【図１２】
0005418687.tif 000013