(57)【要約】【課題】ディスクドライブ使用機器について、その障害発生を予測し、ディスク内のデータの損失を防ぐことのできる故障予測技術を提供する。【解決手段】ＨＤＤ故障予測装置１００において、ＨＤＤコントローラ１０は、ＨＤＤ３００に対する読み書きのコマンドをホスト２００から受け取り、ＨＤＤ３００にデータを書き込んだり、ＨＤＤ３００からデータを読み出す。異常値ＤＢ記録部４０は、ディスクドライブに対する所定のアクセスパターンを用いてアクセス対象箇所のアクセス時間を測定し、アクセス時間に関して算出された閾値を記憶する。制御部３０は、アクセスパターンにしたがってアクセス対象箇所をアクセスしたときのアクセス時間の実測値が閾値を超えた場合に当該アクセス対象箇所を異常値ＤＢ記録部４０に登録する。所定のアクセスパターンは、前記ディスクドライブのヘッドを初期位置に戻した後、アクセス対象箇所にアクセスするパターンである。【選択図】図１
2019164817.tif 000002
【特許請求の範囲】
【請求項１】
ディスクドライブに対する所定のアクセスパターンを用いてアクセス対象箇所のアクセス時間を測定し、アクセス対象箇所のアクセス時間に関する閾値を算出する閾値算出部と、
前記閾値算出部で算出された閾値に基づいて、異常検出する制御部と、
を備え、
前記所定のアクセスパターンは、前記ディスクドライブのヘッドを初期位置に戻した後、アクセス対象箇所にアクセスするパターンであることを特徴とする故障予測装置。
【請求項２】
前記閾値算出部は、複数のアクセス対象箇所をアクセスしたときのアクセス時間をそれぞれ計測し、第１のアクセス対象箇所の近傍に位置する他のアクセス対象箇所のアクセス時間を用いて、前記第１のアクセス対象箇所に対応する前記閾値を算出することを特徴とする請求項１に記載の故障予測装置。
【請求項３】
前記閾値算出部は、隣接する複数のアクセス対象箇所をグループ化し、グループごとのアクセス時間の最大値に基づいて、前記第１のアクセス対象箇所に対応する前記閾値を算出することを特徴とする請求項２に記載の故障予測装置。
【請求項４】
前記閾値算出部は、前記グループごとのアクセス時間の最大値に関する移動平均値を算出し、その移動平均値に基づいて、前記第１のアクセス対象箇所に対応する前記閾値を算出することを特徴とする請求項３に記載の故障予測装置。
【請求項５】
ディスクドライブ使用機器が、
前記ディスクドライブに対する所定のアクセスパターンを用いてアクセス対象箇所のアクセス時間を測定し、アクセス対象箇所のアクセス時間に関する閾値を算出するステップと、
前記算出された閾値に基づいて、異常検出するステップと、
を実行する故障予測方法であって、
前記所定のアクセスパターンは、前記ディスクドライブのヘッドを初期位置に戻した後、アクセス対象箇所にアクセスするパターンであることを特徴とする故障予測方法。
【請求項６】
ディスクドライブに対する所定のアクセスパターンを用いてアクセス対象箇所のアクセス時間を測定し、アクセス対象箇所のアクセス時間に関する閾値を算出するステップと、
前記算出された閾値に基づいて、異常検出するステップと、
をコンピュータに実行させる故障予測プログラムであって、
前記所定のアクセスパターンは、前記ディスクドライブのヘッドを初期位置に戻した後、アクセス対象箇所にアクセスするパターンであることを特徴とする故障予測プログラム。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクドライブの故障予測技術に関する。
【背景技術】
【０００２】
ハードディスクは円盤表面に微細な欠陥により不良セクタが発生して読み書きができなくなったり、リトライ動作を繰り返すことにより、データ転送速度が著しく低下することがある。また不良箇所が拡大してハードディスク自体が起動しなくなる障害が発生することもある。
【０００３】
特許文献１には、ハードディスクの転送時間を測定し、その転送時間からハードディスクの故障の予兆を検知する技術が開示されている。製品出荷後の所定の時間経過（たとえば１週間）ごとに、転送時間を測定した上で、工場出荷時の転送時間と比較し、両者の転送時間の違いが所定の条件を満たした場合に、ハードディスクに不具合が今後起こる可能性がある旨の警告通知処理を行っている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−６８１０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に開示された従来技術では、転送時間の測定値に所定の係数を乗じた値と、工場出荷時の測定時間とを比較し、前者が長い場合に遅延領域と判定している。そして、遅延領域が所定の閾値以上存在する場合に、警告を出すようにしている。しかしながら、ハードディスクドライブ（ＨＤＤ）のヘッド位置に依存するアクセス時間のばらつきに関しては、全く考慮されていなかった。例えば、ＨＤＤの同じ領域（セクタ）をアクセスした場合であっても、回転待ち時間が最大の場合は、ディスク１周分の待ち時間を要しその時間分アクセス時間が長くなり、回転待ち時間が最小の場合は、ディスク回転の待ち時間なく最短でアクセスできることからアクセス時間が短くなる。このように、ＨＤＤの同じ領域をアクセスした場合であっても、アクセス前のヘッド位置やアクセスのタイミングによって、データ読み出し完了までのアクセス時間が変動するが、従来技術においては、このような変動を考慮していないため、十分な精度でアクセス時間を測定することができなかった。従って、そのようなアクセス時間を基に故障予測を行っても、高い精度でＨＤＤの故障予測をすることはできなかった。
【０００６】
本発明はこうした状況に鑑みてなされたものであり、その目的は、ディスクドライブ使用機器について、その障害発生を予測し、ディスク内のデータの損失を防ぐことのできる故障予測技術を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明のある態様の故障予測装置は、ディスクドライブに対する所定のアクセスパターンを用いてアクセス対象箇所のアクセス時間を測定し、アクセス対象箇所のアクセス時間に関する閾値を算出する閾値算出部と、前記閾値算出部で算出された閾値に基づいて、異常検出する制御部と、を備え、前記所定のアクセスパターンは、前記ディスクドライブのヘッドを初期位置に戻した後、アクセス対象箇所にアクセスするパターンとしている。
【０００８】
本発明の別の態様は、故障予測方法である。この方法は、ディスクドライブ使用機器が、前記ディスクドライブに対する所定のアクセスパターンを用いてアクセス対象箇所のアクセス時間を測定し、アクセス対象箇所のアクセス時間に関する閾値を算出するステップと、前記算出された閾値に基づいて、異常検出するステップと、を実行する故障予測方法であり、前記所定のアクセスパターンは、前記ディスクドライブのヘッドを初期位置に戻した後、アクセス対象箇所にアクセスするパターンとしている。
【０００９】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１０】
本発明によれば、ディスクドライブ使用機器について、その障害発生を予測し、ディスク内のデータの損失を防ぐことができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態に係るＨＤＤ故障予測装置の構成図である。
【図２】図１のＨＤＤ故障予測装置による故障予測手順を示すフローチャートである。
【図３】図２の故障予想処理の詳細な手順を示すフローチャートである。
【図４】図３のワーニング判定処理の詳細な手順を示すフローチャートである。
【図５】図３のエラー判定処理の詳細な手順を示すフローチャートである。
【図６】コマンド実行時間を測定するためのアクセスパターンを説明する図である。
【図７Ａ】図６のアクセスパターンにより実測されたコマンド実行時間を説明する図である。
【図７Ｂ】図７Ａの模式図を実測値によって示したグラフである。
【図８】コマンド発行番号をグループ化したセグメントにおける評価データと閾値データを説明する図である。
【図９】図９（ａ）は、ＨＤＤ３００の正常時のアクセス時間を示し、図９（ｂ）は、ＨＤＤ３００の異常発生時のアクセス時間を示す図である。
【図１０】図１０（ａ）は、コマンド発行番号と閾値とを対応させて記録した異常値データベースを示し、図１０（ｂ）は、セグメント番号と閾値とを対応させて記録した異常値データベースを示す図である。
【図１１】図１１（ａ）は、コマンド発行番号ごとに計数されるワーニングカウンタを示し、図１１（ｂ）は、コマンド発行番号ごとに計数されるエラーカウンタを示す図である。
【発明を実施するための形態】
【００１２】
ＨＤＤは動作不具合を起こした場合、書き込まれたデータの保証がない。ＨＤＤの動作不具合は一旦起きてしまうと、基本的に内部データを読み出すことができないため、大きな損失が発生する。すなわち、故障であることを気がついた段階では、ＨＤＤ内のどこかのデータを失うことを避けることができない。そこで、本発明の実施の形態に係るＨＤＤ故障予測装置１００では、運用上のデータの読み出しが正常にできる限界としてのＨＤＤの寿命を予測し、ＨＤＤの故障により、データを失うことを回避することを目的とする。
【００１３】
転送時間の比較によるＨＤＤの寿命予測について、特許文献１にはアクセス時間を評価する方法が記載されている。しかしながら、ＨＤＤの障害について、特に経年劣化に伴う内部パーツの摩耗から来る障害は、現在障害が発生している位置にとどまらず、時間とともに拡大する傾向があるので、その予兆を高い精度でとらえないと、時間の経過とともにＨＤＤの内部データを失う可能性が高くなる。
【００１４】
特に、障害へと進行しつつあるエリアを再アクセスすることは重大な障害へ進展する可能性が高いので、障害の進行を予測できることは、その後のＨＤＤの内部データの救済策を講じる手法を決める上で非常に重要な目安となってくる。
【００１５】
そこで、本実施の形態のＨＤＤ故障予測装置１００では、特定のアクセスパターンによるアクセス時間の散布図にもとづいて、アクセス時間によって故障を予測する際に使用する閾値を決定することにより、故障予測の精度を上げる方法を採用する。
【００１６】
図１は、実施の形態に係るＨＤＤ故障予測装置１００の構成図である。ＨＤＤ故障予測装置１００は、ホスト２００が使用するＨＤＤ３００を駆動する機能とＨＤＤ３００の故障を予測する機能とを備える。ＨＤＤ故障予測装置１００は、ＨＤＤコントローラ１０、一時記憶部２０、制御部３０、および異常値ＤＢ記録部４０を含む。これらの構成はハードウェア、ソフトウェア、あるいはその組合せによって実現することができる。なお、ＨＤＤ故障予測装置１００とホスト２００とを一体的に構成することも可能である。また、ＨＤＤ故障予測装置１００とホスト２００とＨＤＤ３００とを一体的に構成してもよい。
【００１７】
ＨＤＤコントローラ１０は、ハードディスクドライブのＡＴＡ規格に基づき、ＨＤＤ３００に対する読み書きのコマンドをホスト２００から受け取り、ＨＤＤ３００にデータを書き込んだり、ＨＤＤ３００からデータを読み出す。一時記憶部２０は、その転送データをＦＩＦＯ構造にて一時的に記憶する。
【００１８】
制御部３０は、ＨＤＤコントローラ１０の書き込み時のコマンド実行時間（アクセス時間）を測定しＨＤＤ３００の寿命を判断する。
【００１９】
異常値ＤＢ記録部４０は、アクセス時間の異常を判定するための閾値を記憶するとともに、遅延アクセス発生時に遅延アクセスが起きたコマンド発行番号と遅延アクセス時間をデータベースとして登録する。本実施例では後述するように、所定数のセクタ単位（特定容量単位）でＨＤＤ３００にアクセスする。各々のアクセスに使用する先頭ＬＢＡ（Logical Block Address）に対応させて、１、２、３、．．．等の連番を付与したものをコマンド発行番号と称する。なお、以下の説明において、コマンド発行番号の代わりに、ＬＢＡを用いることも可能である。ただし、コマンド発行番号を用いた方が、格納や演算に必要なデータ容量を抑えることができる。
【００２０】
ホスト２００は、図示しない表示部及び入力部を備える。ホスト２００の入力部への入力は、ＨＤＤ故障予測装置１００の制御部３０に伝達され、処理される。また、ＨＤＤ故障予測装置１００の制御部３０は、ホスト２００の表示部を制御する表示制御部としても機能する。
【００２１】
ホスト２００がＨＤＤ３００に対してデータの書き込みコマンドを発行すると、書き込まれるデータはＨＤＤコントローラ１０を経由して一時記憶部２０に一時的に記憶される。一時的に記憶された書き込みデータが所定の容量に達すると、ＨＤＤコントローラ１０は時間軸上で古いデータから図６に示すアクセスパターンに従い、ＨＤＤ３００に書き込む。この処理の詳細については後述する。
【００２２】
このとき、制御部３０は、ＨＤＤコントローラ１０からデータがＨＤＤ３００に書き込まれたときのコマンド実行時間（アクセス時間）を測定し、あらかじめ異常値ＤＢ記憶部に記憶された閾値を読み出し、現在のアクセス時間がこの閾値を超えているか否かを判定する。
【００２３】
アクセス時間が閾値を超えたことが確認された場合、制御部３０は、アクセス時間が閾値を超えたＬＢＡとアクセス時間を記憶し、後述のワーニング（警告）カウンタおよびエラーカウンタを計数して、ワーニングカウンタおよびエラーカウンタの推移によってＨＤＤ３００の故障予測を行い、寿命に達したことを予測したときはＨＤＤの停止警告を発する。
【００２４】
ここで、ＨＤＤ３００のアクセス時間の概要を説明する。図９（ａ）は、ＨＤＤ３００の正常時のアクセス時間を示し、図９（ｂ）は、ＨＤＤ３００の異常発生時のアクセス時間を示す。
【００２５】
正常時のアクセス時間は、図９（ａ）に示すように、シーク時間、回転待ち時間、集束時間などのヘッド動作に依存する時間と、データ転送時間との合計で表わすことができる。
【００２６】
異常発生時のアクセス時間は、図９（ｂ）に示すように、正常時のアクセス時間に加えて、代替セクタ発生時にはリトライ時間、代替セクタ処理時間等が加わるため、正常アクセス時の数十倍の処理時間を要する。
【００２７】
ＨＤＤ３００は、一定速度でディスクが回転しているため、ヘッドが目標セクタにアクセスを行う際、アクセスタイミングによっては最大でディスク１周分の回転待ち時間が発生する。また、前回のアクセスが終了した時のヘッド位置によってこれからアクセスする位置までのシーク時間が変動するため、総合的なアクセス時間も変動する。その結果、アクセスに至るまでの集束時間も異なるため、工場出荷時と同じアクセス時間で対象セクタにアクセスできることはなく、アクセスごとにばらつく。
【００２８】
特許文献１の故障判定手法では、工場出荷時のデータおよび寿命評価時のデータの両方にばらつきがあるため、高い精度でＨＤＤの故障を予測できないという問題があった。そこで、本実施の形態では、図６に示すアクセスパターンを用いることにより、アクセス時間のばらつきに対処している。
【００２９】
図２は、ＨＤＤ故障予測装置１００による故障予測手順を示すフローチャートである。
【００３０】
ステップＳ２０１において、ＨＤＤコントローラ１０は、図６のアクセスパターンに従いＨＤＤ３００にアクセスし、制御部３０は、そのときのコマンド実行時間を測定する。
【００３１】
図６に示すアクセスパターンでは、１つのコマンド発行番号に対応して、特定容量のデータが書き込まれるようになっている本実施例では、特定容量を２５６セクタにしているが、それ以外のセクタ数を用いてもよく、これに限定される訳ではない。ＨＤＤ３００の場合、以前のアクセスが終了した時のヘッド位置が不特定であると、特にシーク時間にばらつきが生じ、相対的に正確なアクセス時間が測定できない。そこで図６に示すようにヘッドの位置をアクセス終了後、常に初期位置（ここではセクタ０の位置）にリセットしてから特定容量（２５６セクタ）の書き込みを順次行うことにより、より正確なアクセス時間の測定を可能としている。
【００３２】
図７Ａは、図６のアクセスパターンにしたがってＨＤＤ３００にアクセスしたときのアクセス時間の模式図である。横軸はコマンド発行番号、縦軸はコマンド発行番号ごとのアクセス時間である。図７Ｂは、図７Ａの模式図を実測値によって示したグラフである。測定データをプロットすると、図７Ｂに示すような散布図が得られ、アクセス時間が右肩上がりの帯状に分布する。以下、コマンド発行番号ごとにアクセスする特定容量のディスク領域（セクタ）を「コマンド発行番号領域」と呼ぶ。
【００３３】
ＨＤＤ３００の回転待ちと集束時間が無い理想的な状態であれば、アクセスターゲットとなるセクタに対するアクセス時間をプロットした散布図は、ほぼ１本の線になるはずである。しかしながら、これまで述べたようにディスクのアクセスについては常に回転待ちと集束時間についてばらつきが存在するので、図６のアクセスパターンで示す特定容量ごとのアクセス時間をプロットすると、実際は図７Ｂのように特定のばらつきを持った帯のような形をなし、コマンド発行番号とアクセス時間の間には強い相関がある。図７Ｂの帯全体の傾きは、図６で示すところのコマンド発行番号の増加に伴い、アクセス対象のセクタがヘッドのリセット位置から遠くなることによる主にシーク時間の増大が要因である。
【００３４】
なお、コマンド実行時間（アクセス時間）の測定は、ＨＤＤ故障予測装置１００で行ってもいいし、同じアクセスパターンを発生する外部機器で行ってもよい。
【００３５】
次にステップＳ２０２では、ステップＳ２０１で測定された散布図における帯の上端に相当する値を検出する。そして、この値をコマンド発行番号毎の閾値（故障予測閾値）として用いる。この値は、シーク時間、回転待ち時間、集束時間などのヘッド動作に依存する待ち時間が極大となる場合のアクセス時間であり、ＨＤＤ３００が正常時である時は、アクセス時間がこの値以下に収まるという特徴がある。従って、この値を故障予測の閾値として用いることにより、アクセス時間がこの閾値を超えたら、ＨＤＤ３００のアクセスが正常でないことが把握できる。この閾値の具体的な検出方法については後述する。
【００３６】
次にステップＳ２０３では、ステップＳ２０２で算出した閾値を異常値ＤＢ記録部４０に登録する。具体的には、図１０（ａ）に示すように、コマンド発行番号と閾値とを対応させて記録する。
【００３７】
ステップＳ２０１〜ステップＳ２０３は、故障予測を行う事前処理あるいは初期設定処理である。
【００３８】
次にステップＳ２０４では、ＨＤＤ３００の使用時において故障予測動作を行う。制御部３０がコマンド発行領域のアクセス時間が異常値ＤＢ記録部４０に記録した閾値を超えていないかを監視し、閾値を超えたコマンド発行番号領域については異常値ＤＢ記録部４０にコマンド発行番号とアクセス時間を記録する。制御部３０は、異常値ＤＢ記録部４０に記録されたワーニングカウンタとエラーカウンタを計数し、その結果、故障予測と判定されるレベルにまで達したとき、ＨＤＤ３００の停止警告を発し、処理を終了する。
【００３９】
ステップＳ２０１〜Ｓ２０３の処理において、制御部３０は閾値算出部として動作する。閾値算出部は制御部３０とは別の回路としてもよい。
【００４０】
なお、ＨＤＤの型番とファームウェアが同じであれば、図７の散布図の帯から得られる閾値は同じであるから、新たに閾値を作成する必要はないため、ステップＳ２０１〜ステップＳ２０３を省略し、他のＨＤＤで測定した閾値を用いて、ステップＳ２０４の故障予測を開始することができる。他のＨＤＤで測定した閾値を用いる場合、ＨＤＤ故障予測装置１００に閾値算出部を備える必要はない。
【００４１】
ここで、ステップＳ２０２の閾値を検出する方法を詳細に説明する。ステップＳ２０２の第１の方法を説明する。
【００４２】
図８に示すように、所定数Ｎ個のコマンド発行番号ごとに、コマンド発行番号をグループ化する。以下では、このグループを「コマンド発行セグメント」あるいは単に「セグメント」と称する。また、所定数Ｎを「セグメント長」と称する。ここで、所定数Ｎ（セグメント長）は、１つのセグメントにシーク時間、回転待ち時間、集束時間などのヘッド動作に依存する待ち時間が極大となる点が、おおよそ１つ以上含まれるように設定する。典型的には、Ｎ＝３０〜５０とするのがよい。例えば、Ｎ＝３０とする場合、コマンド発行番号＝１〜３０をセグメント１、コマンド発行番号＝３１〜６０をセグメント２、コマンド発行番号＝６１〜９０をセグメント３とし、以下同様に、コマンド発行番号とセグメントを対応させる。
【００４３】
次に、セグメントごとにアクセス時間の最大値を検出する。そして、その最大値をそのセグメントにおける閾値とする。例えば、Ｎ＝３０であり、セグメント１の中で、コマンド発行番号＝１２において、アクセス時間が最大となり、最大値が３０ｍｓｅｃとなる場合、コマンド発行番号１〜３０に対応する閾値を全て３０ｍｓｅｃとする。あるいは、各セグメントにおけるアクセス時間の最大値に所定倍率を乗じた値をそのセグメントの閾値としてもよい。例えば、所定倍率＝１．２とし、最大値３０ｍｓｅｃ×１．２＝３６ｍｓｅｃを当該セグメントの閾値としてもよい。あるいは、各セグメントにおけるアクセス時間の最大値に所定値を加算した値を閾値としてもよい。例えば、所定値＝５ｍｓｅｃとし、最大値３０ｍｓｅｃ＋５ｍｓｅｃ＝３５ｍｓｅｃを閾値としてもよい。
【００４４】
この第１の方法で算出した閾値は、１つのセグメントに対応するコマンド発行番号においては、全て同じ値となる。従って、ステップＳ２０３において、コマンド発行番号ごとに閾値を記録せずに、図１０（ｂ）に示すように、セグメント番号と閾値を対応させて記録してもよい。
【００４５】
ステップＳ２０２の第２の方法を説明する。まず、第１の方法と同様に、所定数のコマンド発行番号ごとにセグメントを形成する。このセグメントは、後続の処理ステップで使用するためのもので、ステップＳ２０２においては、セグメントを使用しない。
【００４６】
次に、あるコマンド発行番号（コマンド発行番号ｉ）に対して、その前後の所定範囲のコマンド発行番号（ｉ−ｗ〜ｉ＋ｗ）を対象にアクセス時間の最大値を検出する。すなわち、数式（１）に従って、コマンド発行番号ｉに対応する閾値θ［ｉ］を算出する。ここで、ａ［ｉ］はコマンド発行番号ｉに対応するコマンド実行時間（アクセス時間）であり、ｗは正の整数であり、ｍａｘは引数に指定された値の中から最大値を返す関数である。数式（１）によれば、（２ｗ＋１）個のコマンド発行番号を対象にして最大値を検出することになる。正の整数ｗは、（２ｗ＋１）個のコマンド発行番号の中に、アクセス時間の極大値が１つ以上含まれるように設定するとよい。典型的には、ｗ＝１５〜２５を用いるとよい。（２ｗ＋１）がセグメント長Ｎと同じであってもよいし、異なっていてもよい。ステップＳ２０１で測定に用いた最大のコマンド発行番号をＰとすると、数式に従って、ｉ＝（ｗ＋１）〜（Ｐ−ｗ）に対応する閾値θ［ｗ＋１］〜θ［Ｐ−ｗ］を各々算出する。ｉ＝１〜ｗについては、θ［ｗ＋１］を流用し、ｉ＝（Ｐ−ｗ＋１）〜Ｐについては、θ［Ｐ−ｗ］を流用すればよい。
【００４７】
【数１】
2019164817.tif 000003
【００４８】
また、数式（１）に従って算出した値に、更に移動平均処理を行って、閾値を算出してもよい。例えば、数式（１）の左辺を一時変数μ［ｉ］に代入し、数式（２）に従って、μ［ｉ］の移動平均を算出して閾値θ［ｉ］とする。ここで、ε［ｊ］は数式（３）を満たす重み係数である。またＬは正の整数であり、典型的には５〜１０に設定するとよい。数式（２）に従って閾値を算出することにより、閾値の変化が滑らかになり、精度よく故障予測できる場合がある。
【００４９】
【数２】
2019164817.tif 000004
【００５０】
【数３】
2019164817.tif 000005
【００５１】
図３は、ステップＳ２０４で示した故障予想処理の詳細な手順を示すフローチャートである。
【００５２】
ＨＤＤ３００の故障は、特定容量単位で区切られたエリアのアクセス時間がどのくらいの遅延をもって図７で示す散布図の帯の上端である閾値を超えているか、そのアクセス遅延の発生がどのようにエリアをまたいで広がっているかによって予測する。
【００５３】
ＨＤＤ３００の閾値を超えたアクセス遅延の原因は、アクセス時に異常が発生したため、通常アクセス時の処理に加え、リトライや代替セクタ発生のような異常発生時の処理時間が加わることによる。
【００５４】
しかしながら、ある特定セクタだけの損傷による代替セクタの発生は、代替セクタが発生した時点だけ大きなアクセス遅延が発生するが、以後、同じセクタをアクセスしてもＨＤＤ３００としては、正常動作に戻ったとして扱われ、再度同じ領域をアクセスしてもアクセス遅延が発生しなくなるという特徴がある。この場合、発生も単発で異常セクタの拡大は確認できず、そのとき発生した代替セクタ以上の拡大は見られない。これに対し、経年劣化によるアクセス遅延は、劣化が進行するとともにセグメント長で区切られたエリアの閾値を超える数がアクセスごとに徐々に増加していくが、そのパターンは特定できないため、セグメントで区切られたエリアの閾値の超え方の推移を異常値ＤＢ記録部４０に登録することにより故障の予測を行う。
【００５５】
図３のステップＳ３０１では、一時記憶部２０からＨＤＤ３００に転送する先頭のデータが、どのコマンド発行番号に該当するか特定する。例えば、一時記憶部２０において、ホスト２００からＨＤＤ３００に通常書き込むのと同じＬＢＡを用いて、転送すべきデータを管理し、転送時に先頭ＬＢＡを特定容量で割った値を算出してコマンド発行番号とすればよい。この特定したコマンド発行番号（データ転送に用いる先頭のコマンド発行番号）をｉとする。
【００５６】
ステップＳ３０５では、一時記憶部２０からＨＤＤ３００に転送するデータ容量（書き込み容量）が、何個分のコマンド発行番号（特定容量）に相当するかを算出する。具体的には、データ容量を特定容量で除算し、その商と余りを算出する。そして、その商を書き込み回数Ｍとする。
【００５７】
ＨＤＤ３００への書き込みはセクタ単位で制御できるが、特定容量はそれ以上（ここでは２５６セクタ）であるため、最後の書き込みデータが特定容量以下の場合は、最後に書き込む特定容量内に既存のデータが存在する可能性がある。
【００５８】
そこでステップＳ３１０では、ステップＳ３０５で算出された余りが「０」であるか否かを判定する。すなわち、書き込み容量が特定容量で割り切れるか否かを判定する。その結果、割り切れない場合（余りが存在する場合）（Ｓ３１０のＮＯ）、ステップＳ３１５に進む。ステップＳ３１５において、端数のデータに相当するＭ＋１番目の書き込み領域に他のデータがあるかどうかを確認し、他のデータが存在する場合（Ｓ３１５のＹＥＳ）、ステップＳ３２０において、その存在するデータを一時記憶部２０に読み込み、Ｍ＋１番目の書き込みデータに結合した後、Ｍ＋１番目に書き込むデータとして用意してステップＳ３２５に進む。ステップＳ３１５において他のデータが存在しない場合（Ｓ３１５のＮＯ）、書き込みデータを結合する必要はないので、そのままステップＳ３２５に進む。
この結果、端数分につき書き込み回数が１つ増えるので、ステップＳ３２５においてＭを１だけ加算し、ステップＳ３３０に進む。
【００５９】
ステップＳ３１０において書き込み容量が特定容量で割り切れる場合（Ｓ３１０のＹＥＳ）、ステップＳ３３０に進む。
【００６０】
ステップＳ３３０において、図６に示すアクセスパターンにおける、コマンド発行番号ｉに対応する特定容量の書き込みを行う。
【００６１】
ステップＳ３５０において、致命的ではない障害を検出するワーニング判定処理を実行する。ワーニング判定処理については、図４のフローチャートを参照して後ほど詳しく説明する。
【００６２】
ステップＳ３５５において、致命的な障害を検出するエラー判定処理を実行する。このエラー判定処理では、復旧の見込みがない致命的な異常セクタを監視することにより、寿命の到来を検出し、寿命到来検出時は最終的にＨＤＤ３００の停止警告を出すことにより、運用可能稼働中のＨＤＤ３００からデータを退避させることを促す。エラー判定処理については、図５のフローチャートを参照して後ほど詳しく説明する。
【００６３】
ステップＳ３６０では、ステップＳ３５０およびステップＳ３５５の処理で更新したＨＤＤ３００のワーニングカウンタ値およびエラーカウンタ値を表示する。ユーザ（操作者）は、これらのカウンタ値によってＨＤＤ３００の状態を監視することができ、必要なときには操作者がこの数値から判断して、独自にＨＤＤ３００を停止させることもできる。
【００６４】
ステップＳ３６５において、ステップＳ３６０の結果を受けて処理されたエラーカウンタが動作停止パラメータ値を超えたことが確認された場合（Ｓ３６５のＹＥＳ）、故障予測処理を終了する。なお、ステップＳ３６５のＹＥＳの直後に、さらにユーザの注意を喚起するような警告メッセージを表示したり故障予測処理を終了することを通知するメッセージを表示してもよい。
【００６５】
ＨＤＤ３００へのデータ書き込み中はステップＳ３５０およびステップＳ３５５の処理をコマンド発行番号に対して行い、使用しているＨＤＤ３００の故障予測を行う。このため、ステップＳ３７０で書き込み回数Ｍを１減算し、コマンド発行領域ｉはアクセスが次の領域に移るため、１加算する。
【００６６】
最後にステップＳ３７５において、書き込み回数Ｍが０より大きい場合（Ｓ３７５のＹＥＳ）、所定回数の書き込みに達するまでステップＳ３３０〜ステップＳ３７０までの一連の処理を繰り返す。書き込み回数Ｍが０になった場合（Ｓ３７５のＮＯ）、故障予測処理を終了する。
【００６７】
図４は、ステップＳ３５０のワーニング判定処理の詳細な手順を示すフローチャートである。ワーニング判定処理では、異常が発生しているエリアを特定し、異常発生エリアがどのように分布しているか（広がっているか）を判定する。
【００６８】
ワーニング判定は図１１（ａ）で示すコマンド発行番号ごとのワーニングカウンタの値を加算することで行う。
【００６９】
ステップＳ４０１では、コマンド発行番号ｉに対応するコマンド実行時間ａ［ｉ］が閾値θ［ｉ］を超えたか否かを判定する。
【００７０】
ＨＤＤ３００のアクセス時間に対する特徴として、障害、劣化が進んでいないＨＤＤ３００は、正常時の処理時間内にアクセスが終了するので、セグメントのアクセス時間は閾値内に収まる。しかしながら、経年劣化が進んだＨＤＤ３００や障害発生したＨＤＤ３００は、ヘッドの汚れ、内部での蓄積したほこりの影響、盤面上に発生した傷等により内部の障害が拡大し、その結果、ＨＤＤ３００の内部処理時間が障害に対応する処理を必要とし、正常処理時に比べて内部処理に時間を要するので、アクセス時間が決められた閾値を超え、書き込みアドレスに対するアクセス時間の遅延は拡大する。ステップＳ４０１ではこのような症状が起きていないかどうかを確認する。
【００７１】
コマンド実行時間が閾値を超えた場合（Ｓ４０１のＹＥＳ）、ステップＳ４０２において、ワーニングカウンタを１つ増やすとともに、コマンド発行番号とそのときのコマンド実行時間（アクセス時間）を異常値ＤＢ記録部４０に登録する。
【００７２】
コマンド実行時間が閾値を超えていない場合（Ｓ４０１のＮＯ）、ステップＳ４０３に進む。ステップＳ４０３において、当該コマンド発行番号に対応する過去のワーニングがカウントされている場合（Ｓ４０３のＹＥＳ）、アクセス時の一時的な要因があったとみなし、ステップＳ４０７においてコマンド発行番号領域のワーニングカウントを０に戻し、ワーニング判定処理を終了する。
【００７３】
次に、ステップＳ４０２からステップＳ４０４に進む。ステップＳ４０４において、障害の広がりを確実に検出するため、アクセス対象のセグメントの前に５個のセグメント、後に５個のセグメントを取った狭い近傍セグメントエリア（第１近傍セグメントエリア）において、図７の散布図の帯が閾値を超えて拡散しつつあるかどうかを確認する。具体的には、第１近傍セグメントエリアにおいて、ゼロでないワーニングカウンタが１０個以上発生しているかどうかを判定する。ワーニングカウンタが１０個以上確認された場合（ステップＳ４０４のＹＥＳ）、この近傍セグメントエリアにおいて遅延が拡大していると判定し、次のエラー判定処理でＨＤＤ３００の停止の警告を発することができるよう、ステップＳ４０５でエラーカウンタに故障予測の閾値（ここでは１０）を加算する。
【００７４】
ディスク上に物理的に発生したヘッドの接触等による傷では、アクセス遅延にセクタの連続性が見られ、発生の要因を比較的簡単に見分けられるが、寿命予測においては、一度アクセス遅延が発生し、以後アクセス時間の回復することがない幾つかのセクタを中心に、その近傍セクタおいてアクセス遅延が発生する特徴があるので、セクタごとのアクセス遅延の分布を記録し、それがどのように図７の散布図の帯において閾値を超え、アクセス遅延が発生しているセクタが増えているかを判断する必要がある。この判断については、図７の散布図のアクセス遅延が起きていることだけに注目した場合、図５のＳ５０１のように、代替セクタ発生予測閾値を越えたセクタについては、明らかに何らかの問題が発生していることがわかるが、代替セクタ発生予測閾値以下で、図７の散布図で示す閾値を越えたエリアにアクセス遅延が発生した場合、アクセス遅延の時間だけを持って、本当に故障に至る障害がそのセクタで発生しているかを判断することが難しい。
【００７５】
そこで、コマンド発行番号ｉのアクセス時間が閾値を超えたことに加え、コマンド発行番号ｉの近傍セクタにおいて同様の挙動が見られるかを判定し、寿命に達する障害の進行を予測する。これは、個々のセクタのアクセス遅延はそれほどたいしたものではないが、コマンド発行番号ｉの近傍エリアで、多くのアクセス遅延が発生することは、このエリアのアクセスが完了する挙動が正常ではなく、少なくともアクセス時間を延長させる何らかの障害が進行していることを意味している。その近傍領域のアクセス遅延が発生しているセクタ（コマンド発行番号）の個数を用いて、精度良い判定ができるように、ステップＳ４０４では、近傍セグメントエリアとして同一セクタ数で区切った領域を使用する。ステップＳ４０４における、前に５個のセグメント、後に５個のセグメント、ワーニングカウンタが１０個以上、といった所定数は一例であり、上述の値以外の所定数を用いてもよい。
【００７６】
ステップＳ４０６において、アクセス対象のセグメント内のＮ個のコマンド発行番号を見た場合に、ゼロでないワーニングカウンタが所定数（例えば２個）以上あれば、当該セグメントにおいて回復できないような障害が発生していると予想されるため、ステップＳ４０８においてエラーカウントを１加算し、エラー判定処理にエラーカウンタ値を渡す。この時点で、エラーが発生しているエリアの特定が可能となっていることから、問題エリアの使用を回避する等の処置によりＨＤＤ全体として延命へ導くことも可能である。
【００７７】
このようにワーニング判定処理では、ワーニングカウンタを加算することにより、エラーにカウントされない障害がＨＤＤ３００に蓄積していることを判断することができる。また、一定のセグメントエリアでワーニングカウンタが所定数以上発生している場合は、ただちにエラーカウンタを加算することでエラー判定処理につなげることができる。
【００７８】
図５は、ステップＳ３５５のエラー判定処理の詳細な手順を示すフローチャートである。エラー判定処理では、図４のワーニング判定処理においてアクセス時間が閾値を超えたコマンド発行番号領域のアクセスが実際はどの位のアクセス時間を要しているかを判断し、これまでのエラーカウントの累計から、どのような異常を持っているかを特定する。
【００７９】
エラー判定処理は図１１（ｂ）で示すコマンド発行番号ごとのエラーカウンタの値を加算することで行う。
【００８０】
ステップＳ５０１において、アクセス時間が代替セクタ発生予測閾値を超えたかどうかを判定する。コマンド実行時間が図９（ａ）で示す正常時のアクセス時間の合計を越え、事前にＨＤＤ３００の種類ごとに決められた異常時処理の時間が加わることで大きく遅延している場合、リカバリ処理を含む代替セクタ処理に入っている可能性が高い。このような代替処理等に要するＨＤＤ３００の異常発生時の処理時間はＨＤＤ３００ごとに決まっている。このような代替セクタ処理に入っていると判定できるとき（Ｓ５０１のＹＥＳ）、データが読み出しにくい状態が発生しているため、図４のワーニング判定処理でワーニングカウンタが登録されていたとしても、ステップＳ５０２でエラーカウンタを加算する。
【００８１】
このようにアクセス時間が代替セクタ発生予測閾値を超える場合、その発生個数が少なく単独で発生している場合、代替セクタへ移行したならば、以後の再アクセス時のアクセス時間は回復する。しかしながら、その発生箇所では明らかにアクセスに支障を来す問題が発生していることが明確なので、再アクセスでアクセス時間が回復したとして図４のステップＳ４０７においてワーニングカウンタがリセットされた場合でも、エラーカウンタとして累計することでカウンタを初期化しないようにする。
【００８２】
次に、ステップＳ５０３において、アクセス対象のセグメントの前に１０個のセグメント、後に１０個のセグメントを取った第２近傍セグメントエリアにおいてゼロでないエラーカウンタが５個以上確認された場合（Ｓ５０３のＹＥＳ）、第２近傍セグメントエリアにおいてアクセス遅延が拡大するものと判定し、ステップＳ５０５に進み、ＨＤＤ停止の警告を発する。これは、第２近傍セグメントエリアにおいて障害が集中して発生していることを示す。ＬＢＡが連続する近傍セグメントにおいて連続してエラーが発生すれば、ヘッドの擦れによる同一円周上のディスク盤面の傷やヘッド不良などが原因でこの領域に物理的に書き込み不良の問題が発生している可能性が高いからである。
【００８３】
BR>アのような場合、物理的障害が現在評価しているコマンド発行番号領域にとどまらす、まだ評価していないコマンド発行番号領域にも広がっている可能性が高く、評価の進行過程で読み込みエラーにまで発展し、データを読み出せなくなる恐れがあるため、早急にＨＤＤ停止警告を発し、ＨＤＤの使用を停止させる必要がある。
【００８４】
アクセス対象のセグメントの前に１０個、後に１０個という隣接する第２近傍セグメントエリアのセグメント数と、第２近傍セグメントエリア内でのエラーカウンタが５個以上という数は、一例であり、これ以外の値を用いてもよい。最大ディスク１周分の傷を早期に予想するために、連続するセクタが最も少ないディスク最内周で最小の傷が早期に発見できるように、ＨＤＤ３００ごとに、最適な値を設定することが望ましい。
【００８５】
ステップＳ５０３において、第２近傍セグメントエリアにおけるゼロでないエラーカウンタが５個未満である場合（Ｓ５０３のＮＯ）、ステップＳ５０４に進む。そして、ステップＳ５０４で全セグメントのエラーカウンタの数が所定値（例えば１０個）を超えた場合（Ｓ５０４のＹＥＳ）、ステップＳ５０５でＨＤＤの停止警告を発する。
【００８６】
以上述べたように、本実施の形態のＨＤＤ故障予測装置１００による故障予測手順によれば、以下のように高い精度でＨＤＤ３００の故障予測を行い、ＨＤＤ３００内のデータの損失を防ぐことができる。
【００８７】
パーティクルがヘッドの下に付加されることによる異常書き込みや、偶発的にヘッドがセクタにデータを完全に書き込めなかった時の書き損じが発生した場合、一時的にアクセス時間が閾値を超えるが、再度、同じコマンド発行番号領域を上書きすることによりアクセス時間が回復し、以後正常なアクセス時間で動作する。このような場合には、ワーニングカウンタがリセットされ、ＨＤＤ３００が正常動作に復帰したことが判断できる。
【００８８】
また、代替セクタの発生により機能回復した場合は、単発的であればＨＤＤ３００の機能を正常化させた物としてそれ以降エラーカウントの累積は進行しないが、近傍セグメントにおいて連続して代替セクタが発生すれば傷やヘッド不良による書き込みミスが発生していると考えられる。これらは、問題発生セクタと前後するセグメントにおいてエラーカウンタの発生が進行することによって、あるいはアクセス時間が代替セクタ発生予想閾値を超えた場合に代替セクタの発生と考えてエラーカウントが加算されることによって、ＨＤＤ３００の故障が近いことを判断することができる。
【００８９】
さらに、ＨＤＤ３００の寿命による故障については、ワーニングカウンタが登録されたアクセス時間が閾値を超える範囲が特定セグメントに前後して広がって発生しているかどうかを確認することで判断することができる。この場合、視覚的には図７の散布図が正常時と比較して広がりつつあることから判断することができる。
【００９０】
特に、ワーニングカウンタが登録されたコマンド発行番号領域の再アクセスにおいてワーニングカウンタが所定数（例えば２個）以上発生すれば、書き損じによる回復が見込まれず、このコマンド発行番号領域におけるデータの書き込み異常が考えられ、早期故障への発展が考えられることから、ワーニングカウンタからエラーカウンタへの進行を早めることにより故障発生が近いことをより正確に判断することができる。
【００９１】
このようにワーニングカウンタを蓄積しエラーカウンタへ移行することにより、一般的なＨＤＤ３００の障害判断に加えて、時間をかけて進行する障害をより正確に判断することができるようになる。
【００９２】
最終的にエラーカウンタは、累計されたワーニングカウンタの値から、故障予測とする閾値を超えたことを判断し、ＨＤＤ３００に対し停止警告を表示灯などにより知らせるために用いられる。これは、ブザー等による警報であってもよく、本システムの停止機能と連動させてもよい。また、外部のシステムと連携し、ワーニングカウンタやエラーカウンタの値に応じて、ＨＤＤ等の記憶装置の購入に係る情報（広告情報など）を表示したり、クラウド等を用いたバックアップサービスの利用を促したり、記憶装置の購入やバックアップサービスの利用を促進するための優待サービス（クーポン券の提示など）を実施してもよい。このように、必要度の高いユーザにピンポイントで適切な情報を提供することにより、ユーザの利便性が向上するとともに、関連商品やサービスの売上増加が期待できる。
【００９３】
このように、ＨＤＤ３００の正常動作時のアクセス最大時間から閾値を導くことにより、ＨＤＤ３００の正常時のアクセス時間の範囲がわかることから、アクセス時間が閾値を超えたコマンド発行番号領域において異常動作を正確に捉えることができ、ＨＤＤ３００の故障予測を高い精度で行うことができる。
【００９４】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００９５】
上記の説明ではリセットされることのあるワーニングカウンタと、リセットされることのないエラーカウンタを用いて故障予測を行ったが、ワーニングカウンタだけを用いてワーニングカウンタが所定数以上になるかどうかによって故障を判定してもよい。
【００９６】
上記の説明では、ディスクの一例としてハードディスクを取り上げて故障予測技術を説明したが、本実施の形態の故障予測技術は、任意の磁気ディスク、あるいは、光ディスクにも適用することができる。
【符号の説明】
【００９７】
１０  ＨＤＤコントローラ、  ２０  一時記憶部、  ３０  制御部、  ４０  異常値Ｄ
Ｂ記録部、  １００  ＨＤＤ故障予測装置、  ２００  ホスト、  ３００  ＨＤＤ。 
【図１】
2019164817.tif 000006
【図２】
2019164817.tif 000007
【図３】
2019164817.tif 000008
【図４】
2019164817.tif 000009
【図５】
2019164817.tif 000010
【図６】
2019164817.tif 000011
【図７Ａ】
2019164817.tif 000012
【図７Ｂ】
2019164817.tif 000013
【図８】
2019164817.tif 000014
【図９】
2019164817.tif 000015
【図１０】
2019164817.tif 000016
【図１１】
2019164817.tif 000017