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