(57)【要約】【課題】専用の故障検出プログラムを用いることなく、ディスクドライブの稼動状態の履歴をログ情報として保存することができる情報処理装置を実現する。【解決手段】フィルタドライバ３０２は、ＯＳ２０１によるＨＤＤ１１６へのアクセス要求に応じてＨＤＤドライバ２０３からＨＤＤ１１６へ発行されたコマンドと、ＨＤＤ１１６からのコマンドに対するレスポンスとから、コマンドの種類とＨＤＤ１１６においてコマンドに対応する処理が成功したか失敗したかを示す情報とを抽出する。ログユーティリティ２０４は、これらの情報を集計してログエリア３０１へ蓄積する。故障予兆ユーティリティ２０５は、蓄積した情報からエラー率を算出し、エラー率が上昇する傾向にある場合、ＨＤＤ１１６に故障予兆があると判定する。【選択図】      図３
2010128963.tif 000002
【特許請求の範囲】
【請求項１】
ディスクドライブと、
オペレーティングシステムからのディスクアクセス要求に応じてディスクドライバプログラムから前記ディスクドライブに対して発行されるコマンドと、前記ディスクドライブからの前記コマンドに対するレスポンスとを監視し、前記コマンドの種類を示すコマンド識別情報と前記ディスクドライブによって実行される前記コマンドに対する処理が成功したか失敗したかを示すレスポンス識別情報とを出力する監視処理手段と、
前記監視処理手段から出力される前記コマンド識別情報および前記レスポンス識別情報を前記ディスクドライブのログ情報として蓄積するログ蓄積手段とを具備することを特徴とする情報処理装置。
【請求項２】
前記ログ蓄積手段は、前記レスポンス識別情報に基づいて、前記コマンドに対する処理が成功した回数と失敗した回数とを前記コマンドの種類毎にカウントし、前記カウントした成功回数及び失敗回数を前記ログ情報として蓄積することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記ログ情報を所定の期間毎に集計して、前記集計した結果に基づき前記ディスクドライブの故障予兆の有無を判定する故障予兆判定手段をさらに具備することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記故障予兆判定手段は、前記所定の期間毎に、前記失敗回数を前記成功回数と前記失敗回数との和で除した値をエラー率として算出し、直近の所定の期間のエラー率が、当該期間の一つ前の所定の期間のエラー率よりも第１のしきい値以上大きい場合に、前記ディスクドライブに故障予兆があると判定することを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記故障予兆判定手段は、前記所定の期間毎に、前記失敗回数を前記成功回数と前記失敗回数との和で除した値をエラー率として算出し、直近の所定の期間のエラー率が、前記直近の所定の期間より一つ前の所定の期間のエラー率よりも第１のしきい値以上大きく、且つ、前記直近の所定の期間より一つ前の所定の期間のエラー率が、前記直近の所定の期間より二つ前の所定の期間のエラー率よりも第１のしきい値以上大きい場合に、前記ディスクドライブに故障予兆があると判定することを特徴とする請求項３記載の情報処理装置。
【請求項６】
前記故障予兆判定手段は、前記コマンド識別情報毎に前記第１のしきい値を変更して、前記ディスクドライブの故障予兆の有無を判定することを特徴とする請求項４又は請求項５記載の情報処理装置。
【請求項７】
前記監視処理手段は、前記ディスクドライブに対して前記コマンドが発行されてから、前記ディスクドライブから前記コマンドに対するレスポンスが出力されるまでの経過時間を示すレスポンス時間を出力し、
前記ログ蓄積手段は、前記コマンドの種類毎に、前記レスポンス時間を前記ログ情報として蓄積することを特徴とする請求項１記載の情報処理装置。
【請求項８】
前記ログ情報として前記コマンドの種類毎に蓄積された前記レスポンス識別情報及び前記レスポンス時間を、所定の期間毎に集計して、前記集計した結果に基づき前記ディスクドライブの故障予兆の有無を判定する故障予兆判定手段をさらに具備することを特徴とする請求項７記載の情報処理装置。
【請求項９】
情報処理装置に設けられたディスクドライブの故障予兆判定方法であって、
オペレーティングシステムからのディスクアクセス要求に応じてディスクドライバプログラムから前記ディスクドライブに対して発行されるコマンドと、前記ディスクドライブからの前記コマンドに対するレスポンスとを監視し、前記コマンドの種類を示すコマンド識別情報と前記ディスクドライブによって実行される前記コマンドに対する処理が成功したか失敗したかを示すレスポンス識別情報とを出力する監視処理ステップと、
前記監視処理手段から出力される前記コマンド識別情報および前記レスポンス識別情報を前記ディスクドライブのログ情報として蓄積するログ蓄積ステップとを具備することを特徴とする故障予兆判定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクドライブを備えた情報処理装置、及びディスクドライブの故障予兆の有無を判定する故障予兆判定方法に関する。
【背景技術】
【０００２】
一般に、パーソナルコンピュータのような情報処理装置においては、ハードディスクドライブがストレージデバイスとして用いられている。ハードディスクドライブは、ハードディスクと称されるディスク記憶媒体にデータを格納するディスクドライブである。
【０００３】
ディスクドライブやディスクドライブを備えた情報処理装置には、ディスクドライブに格納されたデータの保護等を目的として、ディスクドライブの故障を検出する機構がハードウェア又はソフトウェアにより設けられることが多い。
【０００４】
特許文献１には、故障検出処理の実行が要求された場合に、故障検出処理プログラムによりデバイスドライバからディスクドライブに対して入出力要求を発行し、この入出力要求に対して正常な応答が返されるか否かに基づいて、ディスクドライブの正常又は異常を判断する故障検出方法が開示されている。
【特許文献１】特開２００８−５２３８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１の故障検出方法では、専用の故障検出処理プログラムからの入出力要求に応じて、故障検出専用のディスクアクセスが実行される。このため、もしこの故障検出処理プログラムによりディスクドライブへ多量の入出力要求が発行されたならば、また、もし長期間に亘って入出力要求が発行され続けたならば、故障検出専用のディスクアクセスが増加し、これによって各種ユーザプログラムの実行等に関するシステム性能が低下する可能性がある。さらに、故障検出処理プログラムからの入出力要求でアクセスされなかった記憶領域に異常がある場合には、故障検出処理プログラムはディスクドライブの故障を検出することが困難である。
【０００６】
本発明は上述の事情を考慮してなされたものであり、専用の故障検出プログラムを用いることなく、ディスクドライブの稼動状態の履歴をログ情報として保存することができる情報処理装置及び故障予兆判定方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述の課題を解決するため、本発明の一つの観点によれば、ディスクドライブと、オペレーティングシステムからのディスクアクセス要求に応じてディスクドライバプログラムから前記ディスクドライブに対して発行されるコマンドと、前記ディスクドライブからの前記コマンドに対するレスポンスとを監視し、前記コマンドの種類を示すコマンド識別情報と前記ディスクドライブによって実行される前記コマンドに対する処理が成功したか失敗したかを示すレスポンス識別情報とを出力する監視処理手段と、前記監視処理手段から出力される前記コマンド識別情報および前記レスポンス識別情報を前記ディスクドライブのログ情報として蓄積するログ蓄積手段とを具備することを特徴とする情報処理装置が提供される。
【発明の効果】
【０００８】
本発明によれば、専用の故障検出プログラムを用いることなく、ディスクドライブの稼動状態の履歴をログ情報として保存することができる。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照して本発明の実施形態を説明する。
【００１０】
まず、図１および図２を参照して、本発明の一実施形態に係る情報処理装置の構成について説明する。この情報処理装置は、バッテリ駆動可能な携帯型のノートブック型パーソナルコンピュータ１０として実現されている。
【００１１】
図１は、ディスプレイユニットを開いた状態におけるコンピュータ１０を正面側から見た斜視図である。
【００１２】
本コンピュータ１０は、コンピュータ本体１１と、ディスプレイユニット１２とから構成される。ディスプレイユニット１２には、ＬＣＤ１６（Liquid Crystal Display）から構成される表示装置が組み込まれており、そのＬＣＤ１６の表示画面はディスプレイユニット１２のほぼ中央に位置されている。
【００１３】
ディスプレイユニット１２は、コンピュータ本体１１に支持され、そのコンピュータ本体１１に対してコンピュータ本体１１の上面が露出される開放位置とコンピュータ本体１１の上面を覆う閉塞位置との間を回動自由に取り付けられている。コンピュータ本体１１は薄い箱形の筐体を有しており、その上面にはキーボード１３、本コンピュータ１０をパワーオン／オフするためのパワーボタン１４およびタッチパッド１５が配置されている。
【００１４】
図２は、本コンピュータ１０のシステム構成を示している。
【００１５】
本コンピュータ１０は、ＣＰＵ１１１、ノースブリッジ１１２、主メモリ１１３、グラフィクスコントローラ１１４、サウスブリッジ１１５、ハードディスクドライブ（ＨＤＤ）１１６、ネットワークコントローラ１１７、ＢＩＯＳ−ＲＯＭ１１８、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１１９、および電源回路１２０等を備えている。
【００１６】
ＣＰＵ１１１は、本コンピュータ１０の各コンポーネントの動作を制御するプロセッサである。このＣＰＵ１１１は、ＨＤＤ１１６から主メモリ１１３にロードされる各種プログラムを実行する。主メモリ１１３には、オペレーティングシステム（ＯＳ）２０１、アプリケーションプログラム２０２、ＨＤＤドライバプログラム２０３、ログユーティリティプログラム２０４、及び故障予兆ユーティリティプログラム２０５等がロードされる。
【００１７】
ＨＤＤドライバプログラム２０３は、ＯＳ２０１や各種プログラムによるアクセス要求に応じてＨＤＤ１１６を制御するプログラムである。ＨＤＤドライバプログラム２０３は、ＨＤＤドライバと称されることもある。ＨＤＤドライバプログラム２０３は、アクセス要求に応じたコマンドをＨＤＤ１１６へ発行し、このコマンドに対応する処理を実行したＨＤＤ１１６からのレスポンスを受信する。このＨＤＤドライバプログラム２０３にはＨＤＤドライバプログラム２０３の機能を拡張するためのフィルタドライバが組み込まれている。このフィルタドライバは、ＨＤＤドライバプログラム２０３からＨＤＤ１１６に発行されたコマンドと、このコマンドに対応する処理（リード／ライト）を実行するＨＤＤ１１６からのレスポンスとを監視する。そして、フィルタドライバは、ＨＤＤ１１６に発行されたコマンドの種類（データリードコマンド、データライトコマンド、ステータスリードコマンド、ステータスライトコマンド等）を識別するコマンドＩＤと、ＨＤＤ１１６によって実行されるコマンドに対する処理が成功したか失敗したかを示すレスポンスＩＤとをログユーティリティプログラム２０４に通知する。
【００１８】
ログユーティリティプログラム２０４は、ＨＤＤ１１６へのアクセス要求が発生した場合に、ＨＤＤドライバプログラム２０３が発行するコマンドとこのコマンドに対応する処理を実行したＨＤＤ１１６からのレスポンスとに基づく情報を、ＨＤＤ１１６の稼働状態の履歴を示すログ情報として、不揮発性のログエリアに蓄積する。具体的には、ログユーティリティプログラム２０４は、ＨＤＤドライバプログラム２０３に組み込まれたフィルタドライバからコマンドＩＤおよびレスポンスＩＤを受信し、受信したコマンドＩＤおよびレスポンスＩＤをログ情報としてログエリアに蓄積する。この場合、必ずしも受信したコマンドＩＤおよびレスポンスＩＤをログエリアに逐次書き込む必要はない。例えば、ログユーティリティプログラム２０４は、ＨＤＤ１１６において実行されるコマンドに対する処理が成功した回数と失敗した回数とをコマンドの種類毎にカウントし、そして、コマンドの種類毎に成功回数及び失敗回数を示すログ情報を、例えば一日に一回の割合で、ログエリアに書き込むこともできる。この結果、ログエリアに対するアクセス回数を減らすことができるので、システム性能の低下を防止することができる。
【００１９】
ログ情報は、不揮発性のログエリアであるＨＤＤ１１６や不揮発性メモリ、別に設けられる記憶装置等に格納される。なお、ＨＤＤ１１６や不揮発性メモリ、別に設けられる記憶装置等のうち複数に、ログ情報を格納してもよい。ログエリアに格納されたログ情報は、ＨＤＤ１１６の故障予兆の有無を判定するために使用される。
【００２０】
故障予兆ユーティリティプログラム２０５は、ログユーティティプログラム２０４により蓄積されたログ情報を不揮発性のログエリアから読み出し、このログ情報に基づきＨＤＤ１１６の故障予兆の有無を判定する。
【００２１】
また、ＣＰＵ１１１は、フラッシュＢＩＯＳ−ＲＯＭ１１８に格納されたＢＩＯＳ（基本入出力システム：Basic Input Output System）も実行する。ＢＩＯＳはハードウェア制御のためのプログラムである。
【００２２】
ノースブリッジ１１２は、ＣＰＵ１１１のローカルバスとサウスブリッジ１１５との間を接続するブリッジデバイスである。また、ノースブリッジ１１２は、ＡＧＰ（Accelerated Graphics Port）バスなどを介してグラフィクスコントローラ１１４との通信を実行する機能も有している。さらに、ノースブリッジ１１２には、主メモリ１１３を制御するメモリコントローラも内蔵されている。
【００２３】
グラフィクスコントローラ１１４は、本コンピュータ１０のディスプレイモニタとして使用されるＬＣＤ１６を制御する表示コントローラである。サウスブリッジ１１５は、ＰＣＩ（Peripheral Component Interconnect）バスおよびＬＰＣ（Low Pin Count）バスにそれぞれ接続されている。
【００２４】
また、サウスブリッジ１１５には、ＡＴＡコントローラ１２３が内蔵されている。ＡＴＡコントローラ１２３は、ＨＤＤドライバプログラム２０３からの要求に応じてＨＤＤ１１６を制御する。
【００２５】
ＨＤＤ１１６は、各種プログラムやデータ等を格納するディスクドライブである。ＯＳ２０１や各種プログラムによるアクセス要求に応じ、指定されたデータ（ユーザファイル、システムファイル等）の読出しや書込み等の操作がＨＤＤ１１６に対して行われる。ＨＤＤ１１６は、データを磁気的に記録する磁気ディスクドライブである。
【００２６】
エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１１９は、電源管理のためのエンベデッドコントローラと、キーボード（ＫＢ）１３およびタッチパッド１５などを制御するキーボードコントローラとが集積された１チップマイクロコンピュータである。ＥＣ／ＫＢＣ１１９は、電源回路１２０と協働して、ユーザによるパワーボタンスイッチ１４の操作に応じて本コンピュータ１０を電源オン／電源オフする。電源回路１２０は、コンピュータ本体１１に内蔵されたバッテリ１２１、又はＡＣアダプタ１２２を介して供給される外部電源を用いて、本コンピュータ１０の各コンポーネントに供給すべきシステム電源を生成する。
【００２７】
図３は、本実施形態で用いられる故障予兆判定システムの構成例を示すブロック図である。この故障予兆判定システムは、ＨＤＤ１１６が実際に故障する前にその故障の予兆を検出するために用いられる。故障予兆判定システムは、ログユーティリティプログラム２０４、ログエリア３０１、故障予兆ユーティリティプログラム２０５、及びＨＤＤドライバプログラム２０３内に設けられたフィルタドライバプログラム３０２によって実現される。
【００２８】
フィルタドライバは一般に、ファイルシステムドライバ等の上位システムドライバと、デバイスを直接制御する物理デバイスドライバとの間に位置し、上位のドライバと下位のドライバとの間で特殊な動作を行う。フィルタドライバは、この特殊な動作に対応する処理のみを行い、この処理に関連しない命令、データ等については、そのまま下位ドライバに伝える。つまり、フィルタドライバにより、本来のドライバの動作に特殊な動作を加えた複雑な処理を実行することができる。
【００２９】
以下ではまず、ＨＤＤ１１６に対するアクセスが要求された場合における通常の処理の流れについて説明する。
【００３０】
アプリケーションプログラム２０２又はＯＳ２０１によりＨＤＤ１１６に対するアクセスが要求された場合、ＯＳ２０１からＨＤＤドライバプログラム２０３に対してディスクアクセス要求（ＨＤＤアクセス要求）が発行される。このＨＤＤアクセス要求はＨＤＤ１１６に対する入出力要求である。ＨＤＤドライバプログラム２０３はＨＤＤアクセス要求に対応するコマンドをＨＤＤ１１６に対して発行する。このコマンドはＡＴＡコントローラ１２３を介してＨＤＤ１１６に送られる。ＨＤＤ１１６は、発行されたコマンドに応じた処理を実行し、ＨＤＤドライバプログラム２０３に対してレスポンスを返す。このレスポンスは、コマンドに応じて実行した処理が成功したか失敗したかを示すレスポンスＩＤ、処理によりＨＤＤ１１６から読み出されたデータ等から構成される。
【００３１】
ＨＤＤドライバプログラム２０３は、ＯＳ２０１を介したアプリケーションプログラム２０２からのＨＤＤアクセス要求又はＯＳ２０１からのＨＤＤアクセス要求に応じた、ＨＤＤ１１６からのレスポンスの内容をＯＳ２０１へ送る。アプリケーションプログラム２０２によるＨＤＤアクセス要求の場合には、ＯＳ２０１はアプリケーションプログラム２０２へレスポンス内容を送る。
【００３２】
ＨＤＤ１１６の故障予兆の有無を判定するため、本実施形態では、上述した通常の処理に加えて、ＨＤＤ１１６へのアクセスに関するログを蓄積する処理と蓄積したログに基づいて故障予兆を判定する処理とを以下のように実行する。
【００３３】
まず、ＨＤＤドライバプログラム２０３に設けられたフィルタドライバプログラム３０２は、ＯＳ２０１からのＨＤＤアクセス要求に応じてＨＤＤドライバプログラム２０３からＨＤＤ１１６に発行されるコマンドと、ＨＤＤ１１６からＨＤＤドライバプログラム２０３へ出力される、発行されたコマンドに対するレスポンスとを監視する。つまり、フィルタドライバプログラム３０２は、ＨＤＤドライバプログラム２０３とＨＤＤ１１６との間で入出力される情報（コマンド、レスポンス）から、ＨＤＤ１１６の故障予兆の有無を判定するために必要となる情報を抽出する。監視中、ＨＤＤドライバプログラム２０３によりＨＤＤ１１６へ新たに送信されたコマンド、及びこのコマンドに対するＨＤＤ１１６からのレスポンスが検出された場合、フィルタドライバプログラム３０２は、送信されたコマンドに基づくコマンド識別情報（コマンドＩＤ）と、レスポンスに基づくレスポンス識別情報（レスポンスＩＤ）とをログユーティリティプログラム２０４へ通知する。
【００３４】
コマンドＩＤは、発行（送信）されたコマンドの種類を示すコマンド識別情報である。コマンドＩＤにより、ＨＤＤドライバプログラム２０３により発行されるコマンドがデータリードコマンド、データライトコマンド、ステータスリードコマンド、ステータスライトコマンド等の内のいずれであるかを識別し得る。データリードコマンドはＨＤＤ１１６からのデータの読み出しを要求するコマンドである。データライトコマンドはＨＤＤ１１６へのデータの書き込みを要求するコマンドである。ステータスリードコマンドおよびステータスライトコマンドは、ＨＤＤ１１６に対して各種ステータス情報のリードおよびライトを要求するコマンドである。ステータスリードコマンドおよびステータスライトコマンドは、例えばシリアルナンバーやファームウェアのバージョン等のデバイス情報のリードおよびライトのために用いられる。
【００３５】
レスポンスＩＤは、ＨＤＤ１１６によって実行される、発行されたコマンドに対応する処理（データのリード／ライト、ステータスのリード／ライト等）が成功したか失敗したかを示す情報である。なお、このレスポンスＩＤは、ＨＤＤ１１６における処理が失敗した場合のエラー内容を示すエラーＩＤであってもよい。
【００３６】
なお、本実施形態では、フィルタドライバプログラム３０２をＨＤＤドライバプログラム２０３内に設けたが、フィルタドライバプログラム３０２をＯＳ２０１とＨＤＤドライバプログラム２０３との間に設けてもよい。この場合、フィルタドライバプログラム３０２は、ＯＳ２０１からＨＤＤドライバプログラム２０３に送られるＨＤＤアクセス要求と、ＨＤＤ１１６からＨＤＤドライバプログラム２０３に送られるレスポンスとを監視する。ＨＤＤドライバプログラム２０３からＨＤＤ１１６に送られるコマンドは、ＯＳ２０１からＨＤＤドライバプログラム２０３に送られるＨＤＤアクセス要求に対応するものである。したがって、ＯＳ２０１からＨＤＤドライバプログラム２０３に送られるＨＤＤアクセス要求を監視することは、ＨＤＤドライバプログラム２０３からＨＤＤ１１６に送られるコマンドを監視することと同義である。
【００３７】
ログユーティリティプログラム２０４は、フィルタドライバプログラム３０２から受け取ったコマンドＩＤ及びレスポンスＩＤにログ記録日を示す日付情報を付与し、これらをログ情報としてログエリア３０１へ格納する。ログユーティリティプログラム２０４は、例えば１日に１回、ログエリア３０１へログ情報を書き込む。
【００３８】
図４はログエリア３０１に格納されるログ情報のデータ構造の例を示している。以下、ログエリア３０１に格納されるログ情報であるデータをログデータという。
【００３９】
ログエリア３０１に格納されるログデータには、上述したように日付が付与されている。ログデータは付与された日付に基づき、ヘッダと、コマンドの種類毎に集計されたレスポンス内容の情報とからなる日付毎のログデータとして、ログエリア３０１へ格納される。ヘッダには、日付、並びにＨＤＤ１１６のドライブ情報、メーカー名、型番、及びシリアルナンバー等の情報が含まれる。コマンドの種類毎に集計されたレスポンス内容には、発行されたコマンドに対応する処理が成功した回数（以下、成功回数）と失敗した回数（以下、失敗回数）とが記録される。つまり、ログユーティリティプログラム２０４が受け取ったレスポンスＩＤが、ＨＤＤ１１６における処理が成功したことを示す識別情報である場合、受け取ったコマンドＩＤに対応するレスポンス内容の成功回数を１だけ増やす。また、ログユーティリティプログラム２０４が受け取ったレスポンスＩＤが、ＨＤＤ１１６における処理が失敗したことを示す識別情報である場合、受け取ったコマンドＩＤに対応するレスポンス内容の失敗回数を１だけ増やす。なお、レスポンスＩＤが、ＨＤＤ１１６における処理が失敗した場合のエラー内容を示すエラーＩＤである場合、エラーの種類毎に失敗回数をカウントしてもよい。
【００４０】
図４では例えば、ヘッダの日付情報が「2008/10/31」であるログデータにおいて、ヘッダ、並びにコマンドＩＤ１及びコマンドＩＤ２のレスポンス内容を示す情報がログエリア３０１に格納されている。
【００４１】
ヘッダには、上述のように、日付、並びにＨＤＤ１１６のドライブ情報、メーカー名、型番、及びシリアルナンバーの情報が記録されている。コマンドＩＤ１のレスポンス内容を示す情報には、成功回数（Good）が３０回、エラー１による失敗回数が３回、エラー２による失敗回数が２回であることが記録されている。同様に、コマンドＩＤ２のレスポンス内容を示す情報には、成功回数（Good）が７７回、エラー１による失敗回数が１回、エラー２による失敗回数が６回であることが記録されている。
【００４２】
また、ヘッダの日付情報が「2008/11/1」、「2008/11/2」、「2008/11/3」であるログデータについても同様に、ヘッダとコマンドの種類毎に集計されたレスポンス内容の情報とが格納されている。
【００４３】
ログユーティリティプログラム２０４は、フィルタドライバプログラム３０２から受け取ったコマンドＩＤ及びレスポンスＩＤ、並びにその日付に基づき、ログエリア３０１に格納されたログデータを更新する。例えば、日付が「2008/11/3」であって、ログユーティリティプログラム２０４がフィルタドライバプログラム３０２から、コマンドＩＤ１と処理の成功を示すレスポンスＩＤとを受け取った場合、図４に示すログエリア３０１のログデータの例においては、コマンドＩＤ１のレスポンス内容に記録される成功回数（Ｇｏｏｄ）が５１回から５２回に更新される。また、日付が「2008/11/3」であって、ログユーティリティプログラム２０４がフィルタドライバプログラム３０２から、コマンドＩＤ１とエラー１による処理の失敗を示すレスポンスＩＤとを受け取った場合、図４に示すログエリア３０１のログデータの例においては、コマンドＩＤ１のレスポンス内容に記録されるエラー１による失敗回数が４回から５回に更新される。
【００４４】
なお、ログユーティリティプログラム２０４は、フィルタドライバプログラム３０２から受信したコマンドＩＤ及びレスポンスＩＤに基づいて、成功回数及び失敗回数を一日分カウントし、該一日分の集計処理が終了した後に、この集計したデータを一日分のログ情報としてまとめてログエリア３０１へ格納してもよい。これにより、ログエリア３０１に対するアクセス回数を大幅に低減することができる。また、ログエリア３０１として用いる記憶領域は、ＨＤＤ１１６や不揮発性メモリ、別に設けられる記憶装置等に設けることができる。さらに、ＨＤＤ１１６や不揮発性メモリ、別に設けられる記憶装置等のうち複数に、ログエリア３０１として用いる記憶領域を確保し、これら複数の記憶領域それぞれにログ情報を記録してもよい。
【００４５】
故障予兆ユーティリティプログラム２０５は、ログエリア３０１からログデータを読み出し、このログデータに基づいてＨＤＤ１１６の故障予兆の有無を判定する。
【００４６】
故障予兆ユーティリティプログラム２０５は、まず、ログエリア３０１から読み出したログデータを所定の期間毎に集計して、コマンドの種類毎のエラー率を算出する。エラー率は、所定の期間内に、ＨＤＤ１１６においてコマンドに対応する処理が成功した回数（成功回数）と、コマンドに対応する処理が失敗した回数（失敗回数）とを用いて、次式により算出される。
【００４７】
エラー率X＝失敗回数／（成功回数＋失敗回数）
なお、ログエリア３０１においてエラーの種類毎に失敗回数がカウントされている場合には、すべてのエラーの種類について失敗回数を総計した値を上式の失敗回数として用いることができる。
【００４８】
次に、故障予兆ユーティリティプログラム２０５は、所定の期間毎に算出したエラー率を比較し、新しい期間ほどエラー率が上昇する傾向にある場合に、ＨＤＤ１１６に故障予兆があると判定する。
【００４９】
具体的には例えば、直近の所定の期間のエラー率X_newが、直近の所定の期間より一つ前の所定の期間のエラー率X_last1より、エラー率増加量のしきい値（例えば５%）以上大きい場合に、故障予兆ユーティリティプログラム２０５はＨＤＤ１１６に故障予兆があると判定する。また、直近の所定の期間のエラー率X_newが、直近の所定の期間より一つ前の所定の期間のエラー率X_last1よりエラー率増加量のしきい値以上大きく、且つ、直近の所定の期間より一つ前の所定の期間のエラー率X_last1が、直近の所定の期間より二つ前の所定の期間のエラー率X_last2よりエラー率増加量のしきい値以上大きい場合に、故障予兆ユーティリティプログラム２０５がＨＤＤ１１６に故障予兆があると判定してもよい。すなわち、故障予兆ユーティリティプログラム２０５は、複数の期間に亘るエラー率の上昇傾向に基づき、ＨＤＤ１１６の故障予兆の有無を判定する。
【００５０】
なお、故障予兆の有無の判定に用いるエラー率増加量のしきい値は、コマンドの種類毎に変更される。つまり、このエラー率増加量のしきい値は各コマンドによる処理の重要度やＨＤＤ１１６の利用形態等に基づき適宜設定できる。例えば、リード及びライトのコマンドは他のコマンドよりも重要度が高く、微小なエラー率の上昇であっても故障予兆があると判定したい場合には、リード及びライトのコマンドに対するエラー率増加量のしきい値を低く設定する。このように、コマンドの種類毎に故障予兆の有無の判定に用いるエラー率増加量のしきい値を設定することで、故障予兆の有無を精度良く判定することができる。
【００５１】
なお、故障予兆ユーティリティプログラム２０５によって故障予兆判定を実行するタイミングは、前回、故障予兆ユーティリティプログラム２０５が実行されてから一定期間が経過した時やログエリア３０１に一定量のログ情報が蓄積された時、また、ユーザによる指示があった時等、適宜設定することができる。
【００５２】
図５は、フィルタドライバプログラム３０２による処理の手順を示したフローチャートである。
【００５３】
上述したように、アプリケーションプログラム２０２又はＯＳ２０１によりＨＤＤ１１６に対するアクセスが要求された場合、ＯＳ２０１からＨＤＤドライバプログラム２０３に対してＨＤＤアクセス要求が発行される。ＨＤＤドライバプログラム２０３は、ＯＳ２０１からのＨＤＤアクセス要求に対応するコマンドをＨＤＤ１１６へ発行する。
【００５４】
フィルタドライバプログラム３０２は、まず、ＯＳ２０１からのＨＤＤアクセス要求をＨＤＤドライバプログラム２０３が受信したかどうかを判定する（ステップＳ１０１）。ＨＤＤドライバプログラム２０３がＨＤＤアクセス要求を受信した場合（ステップＳ１０１のＹＥＳ）、フィルタドライバプログラム３０２は、ＨＤＤドライバプログラム２０３によるコマンドの発行を監視する（ステップＳ１０２）。ＨＤＤドライバプログラム２０３は、ＯＳ２０１からのＨＤＤアクセス要求に対応するコマンドをＨＤＤ１１６へ発行する。フィルタドライバプログラム３０２は、発行されたコマンドのコマンドＩＤを保持する。なお、このコマンドは、実際にはサウスブリッジ１１５に設けられたＡＴＡコントローラ１２３を介して、ＨＤＤ１１６へ送信される。
【００５５】
次に、フィルタドライバプログラム３０２は、ＨＤＤドライバプログラム２０３が発行されたコマンドに対するレスポンスをＨＤＤ１１６から受信したかどうかを判定する（ステップＳ１０３）。ＨＤＤドライバプログラム２０３がＨＤＤ１１６からのレスポンスを受信した場合（ステップＳ１０３のＹＥＳ）、フィルタドライバプログラム３０２は、発行されたコマンドに基づくコマンド識別情報（コマンドＩＤ）と、受信されたレスポンスに基づくレスポンス識別情報（レスポンスＩＤ）とをログユーティリティプログラム２０４へ通知する（ステップＳ１０４）。ここで、コマンドＩＤは、発行されたコマンドの種類を識別可能な情報である。また、レスポンスＩＤは、ＨＤＤ１１６において発行されたコマンドに対応する処理が成功したか失敗したかを示す情報である。なお、このレスポンスＩＤは、ＨＤＤ１１６における処理が失敗した場合のエラー内容を示すエラーＩＤであってもよい。
【００５６】
さらに、フィルタドライバプログラム３０２は、ＨＤＤドライバプログラム２０３がＨＤＤ１１６へコマンドを発行してから、ＨＤＤ１１６がＨＤＤドライバプログラム２０３へレスポンスを返すまでの経過時間を示すレスポンス時間を、ログユーティリティプログラム２０４へ通知することもできる。
【００５７】
以上の処理により、フィルタドライバプログラム３０２は、各種アプリケーションが実行される通常処理期間中におけるＨＤＤドライバプログラム２０３とＨＤＤ１１６との間の入出力を監視し、ＨＤＤ１１６の故障予兆の判定に必要な情報を抽出して、ログユーティリティプログラム２０４へ通知することができる。
【００５８】
図６はログユーティリティプログラム２０４による処理の手順を示したものである。図６に示す手順は、ログユーティリティプログラム２０４が、フィルタドライバプログラム３０２から通知されるデータを集計し、まとめてログエリア３０１への書き込みを行う場合の手順である。
【００５９】
まず、ログユーティリティプログラム２０４は、フィルタドライバプログラム３０２から通知されるコマンドＩＤとレスポンスＩＤとを受信したかどうかを判定する（ステップＳ２０１）。コマンドＩＤとレスポンスＩＤとを受信した場合（ステップＳ２０１のＹＥＳ）、ログユーティリティプログラム２０４は、これらコマンドＩＤとレスポンスＩＤとに対応するデータのカウントを１だけ増やす（ステップＳ２０２）。つまり、ログユーティリティプログラム２０４は、コマンドＩＤ（コマンドの種類）毎に、レスポンスＩＤに基づき、コマンドに対する処理がＨＤＤ１１６において成功した回数または失敗した回数のいずれかを１だけ増やす。また、上述したように、レスポンスＩＤは処理に失敗した場合のエラー内容を示すエラーＩＤであってもよく、この場合、ログユーティリティプログラム２０４は、エラーの種類毎に失敗回数をカウントする。
【００６０】
このような集計処理により、コマンドＩＤ（コマンドの種類）毎に成功回数および失敗回数を示すログデータが生成される。
【００６１】
次に、ログユーティリティプログラム２０４は、ログデータをログエリア３０１へ書き込むタイミングであるかどうかを判定する（ステップＳ２０３）。ログエリア３０１へ書き込みを行うタイミングは、前回のログデータの書き込みから一定期間が経過したときやカウントに用いた受信データが一定量に達したとき等、ＨＤＤ１１６の利用形態に応じて適宜設定可能である。
【００６２】
ログデータをログエリア３０１へ書き込むタイミングである場合（ステップＳ２０３のＹＥＳ）、ログユーティリティプログラム２０４は、ログデータのヘッダに日付を付与し、そのログデータをログエリア３０１へ書き込む（ステップＳ２０４）。ログデータをログエリア３０１へ書き込むタイミングでない場合（ステップＳ２０３のＮＯ）、ログユーティリティプログラム２０４は、ステップＳ２０１からステップＳ２０２による処理を再度実行する。
【００６３】
図７のフローチャートは、ログユーティリティプログラム２０４による処理の別の手順を示している。図７に示す手順では、ログユーティリティプログラム２０４は、フィルタドライバプログラム３０２からデータが通知される度に、逐次ログエリア３０１の更新を行う。
【００６４】
まず、ログユーティリティプログラム２０４は、フィルタドライバプログラム３０２から通知されるコマンドＩＤとレスポンスＩＤとを受信したかどうかを判定する（ステップＳ３０１）。コマンドＩＤとレスポンスＩＤとを受信した場合（ステップＳ３０１のＹＥＳ）、ログユーティリティプログラム２０４は、これらコマンドＩＤ及びレスポンスＩＤ、並びに日付に基づいて、ログエリア３０１を更新する（ステップＳ３０２〜Ｓ３０５）。
【００６５】
ログユーティリティプログラム２０４は、ログエリア３０１に格納されたログデータから現在の日付に対応するログデータを抽出する（ステップＳ３０２）。次に、ログユーティリティプログラム２０４は、抽出したログデータから、さらに受信したコマンドＩＤに対応するログデータを抽出する（ステップＳ３０３）。ログユーティリティプログラム２０４は、抽出したログデータから、さらに受信したレスポンスＩＤに対応するログデータを抽出する（ステップＳ３０４）。そして、ログユーティリティプログラム２０４は、抽出したログデータが示す成功回数又は失敗回数のカウントを１だけ増やす（ステップＳ３０５）。
【００６６】
以上の処理により、コマンドの種類毎に、ＨＤＤ１１６におけるコマンドに対応する処理が成功した回数及び失敗した回数がカウントされ、ログエリア３０１に格納されるログ情報が更新される。また、上述したように、レスポンスＩＤは処理に失敗した場合のエラー内容を示すエラーＩＤであってもよく、この場合、ログユーティリティプログラム２０４は、エラーの種類毎に失敗回数をカウントすることになる。
【００６７】
また、フィルタドライバプログラム３０２からレスポンス時間が通知された場合、ログユーティリティプログラム２０４は、コマンドの種類毎にレスポンス時間の情報をログエリア３０１へ格納する。
【００６８】
次に、図８に示すフローチャートを参照して、故障予兆ユーティリティプログラム２０５によって実行される故障予兆判定処理の手順を説明する。
【００６９】
故障予兆判定処理は、例えば、一週間に一回の割合で実行される。まず、故障予兆ユーティリティプログラム２０５は、ＨＤＤ１１６の故障予兆の有無を検出するタイミングであるかどうかを判定する（ステップＳ４０１）。ＨＤＤ１１６の故障予兆の有無を検出するタイミングである場合（ステップＳ４０１のＹＥＳ）、故障予兆ユーティリティプログラム２０５は、ログエリア３０１から判定に必要なログデータを読み出す（ステップＳ４０２）。ここでは、判定に必要なログデータとして、直近の所定の期間のログデータ、直近の所定の期間より一つ前の所定の期間のログデータ、及び直近の所定の期間より二つ前の所定の期間のログデータを使用する。具体的には、現時点から過去３ヶ月分のログデータを使用し得る。この場合、最近１ヶ月のログデータが直近の所定の期間のログデータとして使用される。また前月１ヶ月のログデータが、直近の所定の期間より一つ前の所定の期間のログデータとして使用される。さらに、前々月１ヶ月のログデータが、直近の所定の期間より二つ前の所定の期間のログデータとして使用される。次に、故障予兆ユーティリティプログラム２０５は、読み出した過去３ヶ月分のログデータに基づき、最近１ヶ月、前月１ヶ月、前々月１ヶ月の各々の期間についてエラー率を算出する。エラー率はコマンドＩＤ毎に算出される。
【００７０】
すなわち、故障予兆ユーティリティプログラム２０５は、読み出したログデータのうちコマンドＩＤ１のレスポンス内容に基づき、各所定の期間におけるエラー率を算出する（ステップＳ４０３）。エラー率は、ログエリア３０１から読み出した各所定の期間における成功回数と失敗回数とを用い、上述の通り、次式により算出される。
【００７１】
エラー率X＝失敗回数／（成功回数＋失敗回数）
これにより、故障予兆ユーティリティプログラム２０５は、コマンドＩＤ１について、直近の所定の期間（最近１ヶ月）のエラー率X_new、直近の所定の期間より一つ前の所定の期間（前月１ヶ月）のエラー率X_last1、及び直近の所定の期間より二つ前の所定の期間（前々月１ヶ月）のエラー率X_last2を算出する。
【００７２】
次に、故障予兆ユーティリティプログラム２０５は、コマンドＩＤ１に対するエラー率増加量のしきい値thA1[%]を設定する（ステップＳ４０４）。そして、故障予兆ユーティリティプログラム２０５は、算出したエラー率と設定したエラー率増加量のしきい値thA1[%]とに基づき、ＨＤＤ１１６に故障予兆があるかどうかを判定する（ステップＳ４０５、Ｓ４０６）。
【００７３】
直近の所定の期間より一つ前の所定の期間のエラー率X_last1が、直近の所定の期間より二つ前の所定の期間のエラー率X_last2よりしきい値thA1[%]以上大きく（ステップＳ４０５のＹＥＳ）、且つ、直近の所定の期間のエラー率X_newが、直近の所定の期間より一つ前の所定の期間のエラー率X_last1よりしきい値thA1[%]以上大きい場合（ステップＳ４０６のＹＥＳ）、故障予兆ユーティリティプログラム２０５は、ＨＤＤ１１６に故障予兆があると判定し、故障予兆に対処するための処理を行う（ステップＳ４０７）。すなわち、故障予兆ユーティリティプログラム２０５は、
X_last1 > (X_last2 + thA1)
であり、且つ、
X_new > (X_last1 + thA1)
である場合に、ＨＤＤ１１６に故障予兆があると判定する。
【００７４】
ＨＤＤ１１６に故障予兆がある場合の対処としては、ＨＤＤ１１６に故障予兆がある旨の情報をＬＣＤ１６等に出力することでユーザに対する通知を行い、詳細な故障検出処理を実行するための故障チェックツールの実行をユーザに促すこと等が挙げられる。
【００７５】
それ以外の場合（ステップＳ４０５のＮＯ及びステップＳ４０６のＮＯ）、故障予兆ユーティリティプログラム２０５は、ＨＤＤ１１６に故障予兆がないと判定し、処理を終了する。
【００７６】
以上説明したコマンドＩＤ１に対するステップＳ４０３からステップＳ４０６までの処理と同様の処理を、コマンドＩＤ２からコマンドＩＤＮまでの各コマンドについて行い（ステップＳ４０８〜Ｓ４１５）、コマンドの種類毎に故障予兆の有無を判定する。なお、Ｎはログエリア３０１に格納されたコマンドの種類の数を示す。さらに、いずれかのコマンドの種類における故障予兆の有無の判定によって、ＨＤＤ１１６に故障予兆があると判定された場合には、コマンドＩＤ１の場合と同様に、ステップＳ４０７の処理によって対処する。なお、エラー率増加量のしきい値はコマンドＩＤ毎に変更される。つまり、故障予兆ユーティリティプログラム２０５は、コマンドＩＤ毎に異なるしきい値を用いて、コマンドＩＤ毎に故障予兆の有無を判定する。例えば、データリード／ライトコマンドに対しては比較的小さな値のしきい値を設定し、ステータスリード／ライトコマンドに対してはデータリード／ライトコマンドよりも大きな値のしきい値を設定してもよい。図９は、故障予兆ユーティリティプログラム２０５による処理の別の手順を示すフローチャートである。図９のフローチャートに基づく処理では、故障予兆ユーティリティプログラム２０５は、エラー率に加えて、平均レスポンス時間も考慮して、ＨＤＤ１１６の故障予兆の有無を判定する。
【００７７】
まず、故障予兆ユーティリティプログラム２０５は、ＨＤＤ１１６の故障予兆の有無を検出するタイミングであるかどうかを判定する（ステップＳ５０１）。ＨＤＤ１１６の故障予兆の有無を検出するタイミングである場合（ステップＳ５０１のＹＥＳ）、故障予兆ユーティリティプログラム２０５は、ログエリア３０１から判定に必要なログデータを読み出す（ステップＳ５０２）。ここでは、判定に必要なログデータとして、直近の所定の期間、直近の所定の期間より一つ前の所定の期間、及び直近の所定の期間より二つ前の所定の期間におけるログデータを使用する。
【００７８】
次に、故障予兆ユーティリティプログラム２０５は、読み出したログデータのうちコマンドＩＤ１のレスポンス内容に基づき、各所定の期間におけるエラー率を算出する（ステップＳ５０３）。エラー率は、ログエリア３０１から読み出した各所定の期間における成功回数と失敗回数とを用い、上述の通り、次式により算出される。
【００７９】
エラー率X＝失敗回数／（成功回数＋失敗回数）
これにより、故障予兆ユーティリティプログラム２０５は、コマンドＩＤ１について、直近の所定の期間のエラー率X_new、直近の所定の期間より一つ前の所定の期間のエラー率X_last1、及び直近の所定の期間より二つ前の所定の期間のエラー率X_last2を算出する。
【００８０】
次に、故障予兆ユーティリティプログラム２０５は、コマンドＩＤ１のレスポンス内容に基づき、各所定の期間内のコマンドＩＤ１のレスポンス時間を平均して、平均レスポンス時間Trを算出する（ステップＳ５０４）。
【００８１】
次に、故障予兆ユーティリティプログラム２０５は、コマンドＩＤ１に対するエラー率増加量のしきい値thA1[%]を設定する（ステップＳ５０５）。また、故障予兆ユーティリティプログラム２０５は、コマンドＩＤ１に対する平均レスポンス時間のしきい値thB1を設定する（ステップＳ５０６）。
【００８２】
故障予兆ユーティリティプログラム２０５は、算出したエラー率及び平均レスポンス時間、並びに設定したエラー率増加量のしきい値thA1[%]及び平均レスポンス時間のしきい値thB1に基づき、ＨＤＤ１１６に故障予兆があるかどうかを判定する（ステップＳ５０７〜Ｓ５０９）。
【００８３】
直近の所定の期間より一つ前の所定の期間のエラー率X_last1が、直近の所定の期間より二つ前の所定の期間のエラー率X_last2よりしきい値thA1[%]以上大きく（ステップＳ５０７のＹＥＳ）、且つ、直近の所定の期間のエラー率X_newが、直近の所定の期間より一つ前の所定の期間のエラー率X_last1よりしきい値thA1[%]以上大きく（ステップＳ５０８のＹＥＳ）、且つ、平均レスポンス時間Trがしきい値thB1より大きい場合（ステップＳ５０９のＹＥＳ）、故障予兆ユーティリティプログラム２０５は、ＨＤＤ１１６に故障予兆があると判定し、故障予兆に対処するための処理を行う（ステップＳ５１０）。すなわち、故障予兆ユーティリティプログラム２０５は、
X_last1 > (X_last2 + thA1)
であり、且つ、
X_new > (X_last1 + thA1)
であり、且つ、
Tr > thB1
である場合に、ＨＤＤ１１６に故障予兆があると判定する。
【００８４】
ＨＤＤ１１６に故障予兆がある場合の対処としては、ＨＤＤ１１６に故障予兆がある旨の情報をＬＣＤ１６等に出力することでユーザに対する通知を行い、詳細な故障検出処理を実行するための故障チェックツールの実行をユーザに促すこと等が挙げられる。
【００８５】
それ以外の場合（ステップＳ５０７のＮＯ、Ｓ５０８のＮＯ、及びＳ５０９のＮＯ）、故障予兆ユーティリティプログラム２０５は、ＨＤＤ１１６に故障予兆がないと判定し、処理を終了する。
【００８６】
以上説明したコマンドＩＤ１に対するステップＳ５０３からステップＳ５０９までの処理と同様の処理を、コマンドＩＤ２からコマンドＩＤＮまでの各コマンドについて行い（ステップＳ５１１〜Ｓ５２４）、コマンドの種類毎に故障予兆の有無を判定する。なお、Ｎはログエリア３０１に格納されたコマンドの種類の数を示す。さらに、いずれかのコマンドの種類における故障予兆の有無の判定によって、ＨＤＤ１１６に故障予兆があると判定された場合には、コマンドＩＤ１の場合と同様に、ステップＳ５１０の処理によって対処する。
【００８７】
なお、すべての種類のコマンドではなく、特定の１以上の種類のコマンドのみのログ情報を用いてＨＤＤ１１６の故障予兆の有無を判定してもよい。例えば、データのリードコマンド及びライトコマンドに関するログ情報が、ステータスのリードコマンド及びライトコマンドに関するログ情報よりも重要であるとする場合に、データのリードコマンド及びライトコマンドに関するログ情報のみからＨＤＤ１１６の故障予兆の有無を判定する。このような場合、故障予兆ユーティリティプログラム２０５は、ログエリア３０１から必要な種類のコマンドのログ情報のみを読み出す。
【００８８】
また、上述の故障予兆判定処理では、所定の期間毎の平均レスポンス時間を考慮してＨＤＤ１１６の故障予兆の有無を判定する手順を示したが、ログデータとして格納されたレスポンス時間の所定の期間毎の移動平均を算出し、この移動平均による平均レスポンス時間を考慮して、ＨＤＤ１１６の故障予兆の有無を判定してもよい。
【００８９】
以上のように、本実施形態においては、通常のアプリケーションプログラムやオペレーティングシステムによるディスクドライブへのアクセスを監視し、長期的なログデータを蓄積して、ディスクドライブの稼動状態を示す履歴を保存することができる。また、本実施形態では、蓄積したログデータに基づいてディスクドライブの故障予兆の有無を判定することができる。したがって、専用の故障予兆検出プログラムによるディスクドライブへのアクセスではなく、通常のアプリケーションプログラム等によるディスクドライブへのアクセスを監視することで、ユーザの実使用環境に応じた故障予兆判定を実施することができる。アプリケーションプログラムからのＨＤＤアクセス要求はオペレーティングシステムを介してＨＤＤドライバに送られるので、フィルタドライバプログラムは、オペレーティングシステムからのＨＤＤアクセス要求に応じてＨＤＤドライバからＨＤＤに発行されるコマンドを監視するだけで、通常のアプリケーションプログラムやオペレーティングシステムによるディスクドライブへのアクセスを監視することができる。
【００９０】
なお、本実施形態のフィルタドライバプログラムは、ＨＤＤドライバとディスクドライブとの間で入出力される情報を監視してログ情報を取得したが、オペレーティングシステムとＨＤＤドライバとの間で入出力される情報を監視してログ情報を取得してもよい。また、本実施形態では、１つの情報処理装置においてＨＤＤに関するログ情報を蓄積し、故障予兆の有無を判定する例について説明したが、複数の情報処理装置それぞれのログ情報を、可搬性の記憶メディアやネットワーク等を介してサーバシステムへアップロードし、このサーバシステムにおいて各情報処理装置のＨＤＤの故障予兆の有無を判定してもよい。
【００９１】
また、ＨＤＤはＳＭＡＲＴ（Self-Monitoring Analysis and Reporting Technology）と称される自己診断機能を有する場合がある。自己診断機能によって得られる診断情報（S.M.A.R.T.情報）はＨＤＤに格納される。ＨＤＤのS.M.A.R.T.情報は、ＨＤＤベンダ毎（場合によってはモデル毎）に記述内容が異なり、これに基づき故障予兆を検出するためにはベンダ毎に検出の方法または検出レベルを最適化する必要がある。本実施形態では、S.M.A.R.T.情報を利用しないため、ＨＤＤベンダやモデルに依存せずに、故障予兆の有無を判定することができる。つまり、蓄積したログ情報を用いて、エラー率やレスポンス時間の変化を検出し、ＨＤＤの故障予兆の有無を判定することで、ＨＤＤベンダやモデルの固有の違いを吸収することができる。なお、エラー率やレスポンス時間の変化に加えて、S.M.A.R.T.情報も用いて、ＨＤＤの故障予兆の有無を判定してもよい。
【００９２】
また、本実施形態のログ蓄積処理及び故障予兆判定処理の手順は全てソフトウェアによって実行することができる。このため、ログ蓄積処理及び故障予兆判定処理の手順を実行するプログラムをコンピュータ読み取り可能な記憶媒体を通じて通常のコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
【００９３】
また本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００９４】
【図１】本発明の一実施形態に係る情報処理装置の外観を示す斜視図。
【図２】同実施形態の情報処理装置のシステム構成を示すブロック図。
【図３】同実施形態の情報処理装置における故障予兆判定処理の流れを示す図。
【図４】同実施形態の情報処理装置においてログエリアに格納されるログ情報のデータ構造の例を示す図。
【図５】同実施形態の情報処理装置においてＨＤＤへアクセスが要求された場合のフィルタドライバプログラムによる処理の手順を示すフローチャート。
【図６】同実施形態の情報処理装置におけるログユーティリティによるログ蓄積処理の手順を示すフローチャート。
【図７】同実施形態の情報処理装置におけるログユーティリティによるログ蓄積処理の別の手順を示すフローチャート。
【図８】同実施形態の情報処理装置における故障予兆ユーティリティによる故障予兆判定処理の手順を示すフローチャート。
【図９】同実施形態の情報処理装置における故障予兆ユーティリティによる故障予兆判定処理の別の手順を示すフローチャート。
【符号の説明】
【００９５】
１１６…ＨＤＤ、２０１…ＯＳ、２０２…アプリケーションプログラム、２０３…ＨＤＤドライバプログラム、２０４…ログユーティリティプログラム、２０５…故障予兆ユーティリティプログラム、３０１…ログエリア、３０２…フィルタドライバプログラム。
【図１】
2010128963.tif 000003
【図２】
2010128963.tif 000004
【図３】
2010128963.tif 000005
【図４】
2010128963.tif 000006
【図５】
2010128963.tif 000007
【図６】
2010128963.tif 000008
【図７】
2010128963.tif 000009
【図８】
2010128963.tif 000010
【図９】
2010128963.tif 000011
【手続補正書】
【提出日】平成22年1月15日(2010.1.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ディスクドライブと、
オペレーティングシステムからのディスクアクセス要求に応じてディスクドライバプログラムから前記ディスクドライブに対して発行されるコマンドと、前記ディスクドライブからの前記コマンドに対するレスポンスとを監視し、前記コマンドの種類を示すコマンド識別情報と前記ディスクドライブによって実行される前記コマンドに対する処理が成功したか失敗したかを示すレスポンス識別情報とを出力する監視処理手段と、
前記監視処理手段から出力される前記コマンド識別情報および前記レスポンス識別情報を前記ディスクドライブのログ情報として蓄積するログ蓄積手段とを具備することを特徴とする情報処理装置。
【請求項２】
前記ログ蓄積手段は、前記レスポンス識別情報に基づいて、前記コマンドに対する処理が成功した回数と失敗した回数とを前記コマンドの種類毎にカウントし、前記カウントした成功回数及び失敗回数を前記ログ情報として蓄積することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記ログ情報を所定の期間毎に集計して、前記集計した結果に基づき前記ディスクドライブの故障予兆の有無を判定する故障予兆判定手段をさらに具備することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記故障予兆判定手段は、前記所定の期間毎に、前記失敗回数を前記成功回数と前記失敗回数との和で除した値をエラー率として算出し、直近の所定の期間のエラー率が、当該期間の一つ前の所定の期間のエラー率よりも第１のしきい値以上大きい場合に、前記ディスクドライブに故障予兆があると判定することを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記故障予兆判定手段は、前記所定の期間毎に、前記失敗回数を前記成功回数と前記失敗回数との和で除した値をエラー率として算出し、直近の所定の期間のエラー率が、前記直近の所定の期間より一つ前の所定の期間のエラー率よりも第１のしきい値以上大きく、且つ、前記直近の所定の期間より一つ前の所定の期間のエラー率が、前記直近の所定の期間より二つ前の所定の期間のエラー率よりも第１のしきい値以上大きい場合に、前記ディスクドライブに故障予兆があると判定することを特徴とする請求項３記載の情報処理装置。
【請求項６】
前記故障予兆判定手段は、前記コマンド識別情報毎に前記第１のしきい値を変更して、前記ディスクドライブの故障予兆の有無を判定することを特徴とする請求項４又は請求項５記載の情報処理装置。
【請求項７】
前記監視処理手段は、前記ディスクドライブに対して前記コマンドが発行されてから、前記ディスクドライブから前記コマンドに対するレスポンスが出力されるまでの経過時間を示すレスポンス時間を出力し、
前記ログ蓄積手段は、前記コマンドの種類毎に、前記レスポンス時間を前記ログ情報として蓄積することを特徴とする請求項１記載の情報処理装置。
【請求項８】
前記ログ情報として前記コマンドの種類毎に蓄積された前記レスポンス識別情報及び前記レスポンス時間を、所定の期間毎に集計して、前記集計した結果に基づき前記ディスクドライブの故障予兆の有無を判定する故障予兆判定手段をさらに具備することを特徴とする請求項７記載の情報処理装置。
【請求項９】
情報処理装置に設けられたディスクドライブの故障予兆判定方法であって、
オペレーティングシステムからのディスクアクセス要求に応じてディスクドライバプログラムから前記ディスクドライブに対して発行されるコマンドと、前記ディスクドライブからの前記コマンドに対するレスポンスとを監視し、前記コマンドの種類を示すコマンド識別情報と前記ディスクドライブによって実行される前記コマンドに対する処理が成功したか失敗したかを示すレスポンス識別情報とを出力する監視処理ステップと、
前記出力されるコマンド識別情報およびレスポンス識別情報を前記ディスクドライブのログ情報として蓄積するログ蓄積ステップとを具備することを特徴とする故障予兆判定方法。