特許第6524848号(P6524848)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社JVCケンウッドの特許一覧

特許6524848故障予測装置、故障予測方法及び故障予測プログラム
<>
  • 特許6524848-故障予測装置、故障予測方法及び故障予測プログラム 図000005
  • 特許6524848-故障予測装置、故障予測方法及び故障予測プログラム 図000006
  • 特許6524848-故障予測装置、故障予測方法及び故障予測プログラム 図000007
  • 特許6524848-故障予測装置、故障予測方法及び故障予測プログラム 図000008
  • 特許6524848-故障予測装置、故障予測方法及び故障予測プログラム 図000009
  • 特許6524848-故障予測装置、故障予測方法及び故障予測プログラム 図000010
  • 特許6524848-故障予測装置、故障予測方法及び故障予測プログラム 図000011
  • 特許6524848-故障予測装置、故障予測方法及び故障予測プログラム 図000012
  • 特許6524848-故障予測装置、故障予測方法及び故障予測プログラム 図000013
  • 特許6524848-故障予測装置、故障予測方法及び故障予測プログラム 図000014
  • 特許6524848-故障予測装置、故障予測方法及び故障予測プログラム 図000015
  • 特許6524848-故障予測装置、故障予測方法及び故障予測プログラム 図000016
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6524848
(24)【登録日】2019年5月17日
(45)【発行日】2019年6月5日
(54)【発明の名称】故障予測装置、故障予測方法及び故障予測プログラム
(51)【国際特許分類】
   G06F 3/06 20060101AFI20190527BHJP
   G06F 13/00 20060101ALI20190527BHJP
   G11B 20/18 20060101ALI20190527BHJP
【FI】
   G06F3/06 305A
   G06F3/06 304N
   G06F3/06 306Z
   G06F13/00 301B
   G11B20/18 501C
   G11B20/18 572F
   G11B20/18 572B
【請求項の数】7
【全頁数】17
(21)【出願番号】特願2015-157266(P2015-157266)
(22)【出願日】2015年8月7日
(65)【公開番号】特開2017-37405(P2017-37405A)
(43)【公開日】2017年2月16日
【審査請求日】2018年3月30日
(73)【特許権者】
【識別番号】308036402
【氏名又は名称】株式会社JVCケンウッド
(74)【代理人】
【識別番号】100105924
【弁理士】
【氏名又は名称】森下 賢樹
(72)【発明者】
【氏名】長瀬 芳伸
(72)【発明者】
【氏名】宍戸 一郎
【審査官】 田中 啓介
(56)【参考文献】
【文献】 特開2011−068109(JP,A)
【文献】 特開2001−014113(JP,A)
【文献】 特開平11−353819(JP,A)
【文献】 特開2006−172636(JP,A)
【文献】 特開2009−170034(JP,A)
【文献】 特開2008−084392(JP,A)
【文献】 特開2004−118397(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F3/06−3/08
G06F11/00−11/07
G06F11/22−11/36
G06F13/00
G11B20/18
(57)【特許請求の範囲】
【請求項1】
ディスクドライブに対する所定のアクセスパターンによってアクセス対象箇所をアクセスしたときのアクセス時間の上限閾値を記憶する異常値記録部と、
前記アクセスパターンにしたがって前記アクセス対象箇所をアクセスしたときのアクセス時間の実測値が前記上限閾値を超えた場合に当該アクセス対象箇所に係る状態情報を前記異常値記録部に登録し、前記状態情報に基づいて、異常検出する制御部とを含み、
前記所定のアクセスパターンは、前記ディスクドライブのヘッドを初期位置に戻した後、アクセス対象箇所にアクセスするパターンであることを特徴とする故障予測装置。
【請求項2】
前記制御部は、前記アクセス対象箇所を含む近傍エリアにおいてアクセス時間の実測値が前記上限閾値を超える箇所が所定数を超える場合に、異常検出することを特徴とする請求項に記載の故障予測装置。
【請求項3】
前記制御部は、前記アクセス対象箇所においてアクセス時間の実測値が前記上限閾値を超えた場合に当該アクセス対象箇所に対応づけられた警告カウンタを加算して前記異常値記録部に登録し、警告カウンタが登録されたアクセス対象箇所であっても再度アクセスしてアクセス時間が前記上限閾値を下回った場合には前記警告カウンタをゼロにリセットするとともに、前記警告カウンタに基づいて、異常検出することを特徴とする請求項1または2に記載の故障予測装置。
【請求項4】
前記制御部は、前記アクセス対象箇所を含む近傍エリアにおけるゼロでない前記警告カウンタの数が所定数以上である場合に、当該アクセス対象箇所に対応づけられており、前記警告カウンタよりも異常検出に係る影響力の強いエラーカウンタを加算し、前記エラーカウンタに基づいて、異常検出することを特徴とする請求項に記載の故障予測装置。
【請求項5】
前記所定のアクセスパターンに従って、複数のアクセス対象箇所をアクセスしたときのアクセス時間をそれぞれ計測し、当該アクセス対象箇所の近傍に位置する他のアクセス対象箇所のアクセス時間を用いて、当該アクセス対象箇所に対応する前記上限閾値を算出し、前記異常値記録部に記録させる閾値算出部をさらに備えることを特徴とする請求項1からのいずれかに記載の故障予測装置。
【請求項6】
ディスクドライブ使用機器が、
前記ディスクドライブに対する所定のアクセスパターンによってアクセス対象箇所をアクセスしたときのアクセス時間の上限閾値を決定して異常値記録部に記録するステップと、
前記アクセスパターンにしたがって前記アクセス対象箇所をアクセスしたときのアクセス時間の実測値が前記上限閾値を超えた場合に当該アクセス対象箇所に係る状態情報を前記異常値記録部に登録し、前記状態情報に基づいて、異常検出するステップとを含み、
前記所定のアクセスパターンは、前記ディスクドライブのヘッドを初期位置に戻した後、アクセス対象箇所にアクセスするパターンであることを特徴とする故障予測方法。
【請求項7】
ディスクドライブに対する所定のアクセスパターンによってアクセス対象箇所をアクセスしたときのアクセス時間の上限閾値を決定して異常値記録部に記録するステップと、
前記アクセスパターンにしたがって前記アクセス対象箇所をアクセスしたときのアクセス時間の実測値が前記上限閾値を超えた場合に当該アクセス対象箇所に係る状態情報を前記異常値記録部に登録し、前記状態情報に基づいて、異常検出するステップとをコンピュータに実行させる故障予測プログラムであって、
前記所定のアクセスパターンは、前記ディスクドライブのヘッドを初期位置に戻した後、アクセス対象箇所にアクセスするパターンであることを特徴とする故障予測プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ディスクドライブの故障予測技術に関する。
【背景技術】
【0002】
ハードディスクは円盤表面に微細な欠陥により不良セクタが発生して読み書きができなくなったり、リトライ動作を繰り返すことにより、データ転送速度が著しく低下することがある。また不良箇所が拡大してハードディスク自体が起動しなくなる障害が発生することもある。
【0003】
特許文献1には、ハードディスクの転送時間を測定し、その転送時間からハードディスクの故障の予兆を検知する技術が開示されている。製品出荷後の所定の時間経過(たとえば1週間)ごとに、転送時間を測定した上で、工場出荷時の転送時間と比較し、両者の転送時間の違いが所定の条件を満たした場合に、ハードディスクに不具合が今後起こる可能性がある旨の警告通知処理を行っている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2011−68109号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1に開示された従来技術では、転送時間の測定値に所定の係数を乗じた値と、工場出荷時の測定時間とを比較し、前者が長い場合に遅延領域と判定している。そして、遅延領域が所定の閾値以上存在する場合に、警告を出すようにしている。しかしながら、ハードディスクドライブ(HDD)のヘッド位置に依存するアクセス時間のばらつきに関しては、全く考慮されていなかった。例えば、HDDの同じ領域(セクタ)をアクセスした場合であっても、回転待ち時間が最大の場合は、ディスク1周分の待ち時間を要しその時間分アクセス時間が長くなり、回転待ち時間が最小の場合は、ディスク回転の待ち時間なく最短でアクセスできることからアクセス時間が短くなる。このように、HDDの同じ領域をアクセスした場合であっても、アクセス前のヘッド位置やアクセスのタイミングによって、データ読み出し完了までのアクセス時間が変動するが、従来技術においては、このような変動を考慮していないため、十分な精度でアクセス時間を測定することができなかった。従って、そのようなアクセス時間を基に故障予測を行っても、高い精度でHDDの故障予測をすることはできなかった。
【0006】
本発明はこうした状況に鑑みてなされたものであり、その目的は、ディスクドライブ使用機器について、その障害発生を予測し、ディスク内のデータの損失を防ぐことのできる故障予測技術を提供することにある。
【課題を解決するための手段】
【0007】
上記課題を解決するために、本発明のある態様の故障予測装置は、ディスクドライブに対する所定のアクセスパターンによってアクセス対象箇所をアクセスしたときのアクセス時間の上限閾値を記憶する異常値記録部と、前記アクセスパターンにしたがって前記アクセス対象箇所をアクセスしたときのアクセス時間の実測値が前記上限閾値を超えた場合に当該アクセス対象箇所を前記異常値記録部に登録する制御部とを含む。
【0008】
本発明の別の態様は、故障予測方法である。この方法は、ディスクドライブに対する所定のアクセスパターンによってアクセス対象箇所をアクセスしたときのアクセス時間の上限閾値を決定して異常値記録部に記録するステップと、前記アクセスパターンにしたがって前記アクセス対象箇所をアクセスしたときのアクセス時間の実測値が前記上限閾値を超えた場合に当該アクセス対象箇所を前記異常値記録部に登録するステップとを含む。
【0009】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0010】
本発明によれば、ディスクドライブ使用機器について、その障害発生を予測し、ディスク内のデータの損失を防ぐことができる。
【図面の簡単な説明】
【0011】
図1】実施の形態に係るHDD故障予測装置の構成図である。
図2図1のHDD故障予測装置による故障予測手順を示すフローチャートである。
図3図2の故障予想処理の詳細な手順を示すフローチャートである。
図4図3のワーニング判定処理の詳細な手順を示すフローチャートである。
図5図3のエラー判定処理の詳細な手順を示すフローチャートである。
図6】コマンド実行時間を測定するためのアクセスパターンを説明する図である。
図7A図6のアクセスパターンにより実測されたコマンド実行時間を説明する図である。
図7B図7Aの模式図を実測値によって示したグラフである。
図8】コマンド発行番号をグループ化したセグメントにおける評価データと閾値データを説明する図である。
図9図9(a)は、HDD300の正常時のアクセス時間を示し、図9(b)は、HDD300の異常発生時のアクセス時間を示す図である。
図10図10(a)は、コマンド発行番号と閾値とを対応させて記録した異常値データベースを示し、図10(b)は、セグメント番号と閾値とを対応させて記録した異常値データベースを示す図である。
図11図11(a)は、コマンド発行番号ごとに計数されるワーニングカウンタを示し、図11(b)は、コマンド発行番号ごとに計数されるエラーカウンタを示す図である。
【発明を実施するための形態】
【0012】
HDDは動作不具合を起こした場合、書き込まれたデータの保証がない。HDDの動作不具合は一旦起きてしまうと、基本的に内部データを読み出すことができないため、大きな損失が発生する。すなわち、故障であることを気がついた段階では、HDD内のどこかのデータを失うことを避けることができない。そこで、本発明の実施の形態に係るHDD故障予測装置100では、運用上のデータの読み出しが正常にできる限界としてのHDDの寿命を予測し、HDDの故障により、データを失うことを回避することを目的とする。
【0013】
転送時間の比較によるHDDの寿命予測について、特許文献1にはアクセス時間を評価する方法が記載されている。しかしながら、HDDの障害について、特に経年劣化に伴う内部パーツの摩耗から来る障害は、現在障害が発生している位置にとどまらず、時間とともに拡大する傾向があるので、その予兆を高い精度でとらえないと、時間の経過とともにHDDの内部データを失う可能性が高くなる。
【0014】
特に、障害へと進行しつつあるエリアを再アクセスすることは重大な障害へ進展する可能性が高いので、障害の進行を予測できることは、その後のHDDの内部データの救済策を講じる手法を決める上で非常に重要な目安となってくる。
【0015】
そこで、本実施の形態のHDD故障予測装置100では、特定のアクセスパターンによるアクセス時間の散布図にもとづいて、アクセス時間によって故障を予測する際に使用する閾値を決定することにより、故障予測の精度を上げる方法を採用する。
【0016】
図1は、実施の形態に係るHDD故障予測装置100の構成図である。HDD故障予測装置100は、ホスト200が使用するHDD300を駆動する機能とHDD300の故障を予測する機能とを備える。HDD故障予測装置100は、HDDコントローラ10、一時記憶部20、制御部30、および異常値DB記録部40を含む。これらの構成はハードウェア、ソフトウェア、あるいはその組合せによって実現することができる。なお、HDD故障予測装置100とホスト200とを一体的に構成することも可能である。また、HDD故障予測装置100とホスト200とHDD300とを一体的に構成してもよい。
【0017】
HDDコントローラ10は、ハードディスクドライブのATA規格に基づき、HDD300に対する読み書きのコマンドをホスト200から受け取り、HDD300にデータを書き込んだり、HDD300からデータを読み出す。一時記憶部20は、その転送データをFIFO構造にて一時的に記憶する。
【0018】
制御部30は、HDDコントローラ10の書き込み時のコマンド実行時間(アクセス時間)を測定しHDD300の寿命を判断する。
【0019】
異常値DB記録部40は、アクセス時間の異常を判定するための閾値を記憶するとともに、遅延アクセス発生時に遅延アクセスが起きたコマンド発行番号と遅延アクセス時間をデータベースとして登録する。本実施例では後述するように、所定数のセクタ単位(特定容量単位)でHDD300にアクセスする。各々のアクセスに使用する先頭LBA(Logical Block Address)に対応させて、1、2、3、...等の連番を付与したものをコマンド発行番号と称する。なお、以下の説明において、コマンド発行番号の代わりに、LBAを用いることも可能である。ただし、コマンド発行番号を用いた方が、格納や演算に必要なデータ容量を抑えることができる。
【0020】
ホスト200は、図示しない表示部及び入力部を備える。ホスト200の入力部への入力は、HDD故障予測装置100の制御部30に伝達され、処理される。また、HDD故障予測装置100の制御部30は、ホスト200の表示部を制御する表示制御部としても機能する。
【0021】
ホスト200がHDD300に対してデータの書き込みコマンドを発行すると、書き込まれるデータはHDDコントローラ10を経由して一時記憶部20に一時的に記憶される。一時的に記憶された書き込みデータが所定の容量に達すると、HDDコントローラ10は時間軸上で古いデータから図6に示すアクセスパターンに従い、HDD300に書き込む。この処理の詳細については後述する。
【0022】
このとき、制御部30は、HDDコントローラ10からデータがHDD300に書き込まれたときのコマンド実行時間(アクセス時間)を測定し、あらかじめ異常値DB記憶部に記憶された閾値を読み出し、現在のアクセス時間がこの閾値を超えているか否かを判定する。
【0023】
アクセス時間が閾値を超えたことが確認された場合、制御部30は、アクセス時間が閾値を超えたLBAとアクセス時間を記憶し、後述のワーニング(警告)カウンタおよびエラーカウンタを計数して、ワーニングカウンタおよびエラーカウンタの推移によってHDD300の故障予測を行い、寿命に達したことを予測したときはHDDの停止警告を発する。
【0024】
ここで、HDD300のアクセス時間の概要を説明する。図9(a)は、HDD300の正常時のアクセス時間を示し、図9(b)は、HDD300の異常発生時のアクセス時間を示す。
【0025】
正常時のアクセス時間は、図9(a)に示すように、シーク時間、回転待ち時間、集束時間などのヘッド動作に依存する時間と、データ転送時間との合計で表わすことができる。
【0026】
異常発生時のアクセス時間は、図9(b)に示すように、正常時のアクセス時間に加えて、代替セクタ発生時にはリトライ時間、代替セクタ処理時間等が加わるため、正常アクセス時の数十倍の処理時間を要する。
【0027】
HDD300は、一定速度でディスクが回転しているため、ヘッドが目標セクタにアクセスを行う際、アクセスタイミングによっては最大でディスク1周分の回転待ち時間が発生する。また、前回のアクセスが終了した時のヘッド位置によってこれからアクセスする位置までのシーク時間が変動するため、総合的なアクセス時間も変動する。その結果、アクセスに至るまでの集束時間も異なるため、工場出荷時と同じアクセス時間で対象セクタにアクセスできることはなく、アクセスごとにばらつく。
【0028】
特許文献1の故障判定手法では、工場出荷時のデータおよび寿命評価時のデータの両方にばらつきがあるため、高い精度でHDDの故障を予測できないという問題があった。そこで、本実施の形態では、図6に示すアクセスパターンを用いることにより、アクセス時間のばらつきに対処している。
【0029】
図2は、HDD故障予測装置100による故障予測手順を示すフローチャートである。
【0030】
ステップS201において、HDDコントローラ10は、図6のアクセスパターンに従いHDD300にアクセスし、制御部30は、そのときのコマンド実行時間を測定する。
【0031】
図6に示すアクセスパターンでは、1つのコマンド発行番号に対応して、特定容量のデータが書き込まれるようになっている本実施例では、特定容量を256セクタにしているが、それ以外のセクタ数を用いてもよく、これに限定される訳ではない。HDD300の場合、以前のアクセスが終了した時のヘッド位置が不特定であると、特にシーク時間にばらつきが生じ、相対的に正確なアクセス時間が測定できない。そこで図6に示すようにヘッドの位置をアクセス終了後、常に初期位置(ここではセクタ0の位置)にリセットしてから特定容量(256セクタ)の書き込みを順次行うことにより、より正確なアクセス時間の測定を可能としている。
【0032】
図7Aは、図6のアクセスパターンにしたがってHDD300にアクセスしたときのアクセス時間の模式図である。横軸はコマンド発行番号、縦軸はコマンド発行番号ごとのアクセス時間である。図7Bは、図7Aの模式図を実測値によって示したグラフである。測定データをプロットすると、図7Bに示すような散布図が得られ、アクセス時間が右肩上がりの帯状に分布する。以下、コマンド発行番号ごとにアクセスする特定容量のディスク領域(セクタ)を「コマンド発行番号領域」と呼ぶ。
【0033】
HDD300の回転待ちと集束時間が無い理想的な状態であれば、アクセスターゲットとなるセクタに対するアクセス時間をプロットした散布図は、ほぼ1本の線になるはずである。しかしながら、これまで述べたようにディスクのアクセスについては常に回転待ちと集束時間についてばらつきが存在するので、図6のアクセスパターンで示す特定容量ごとのアクセス時間をプロットすると、実際は図7Bのように特定のばらつきを持った帯のような形をなし、コマンド発行番号とアクセス時間の間には強い相関がある。図7Bの帯全体の傾きは、図6で示すところのコマンド発行番号の増加に伴い、アクセス対象のセクタがヘッドのリセット位置から遠くなることによる主にシーク時間の増大が要因である。
【0034】
なお、コマンド実行時間(アクセス時間)の測定は、HDD故障予測装置100で行ってもいいし、同じアクセスパターンを発生する外部機器で行ってもよい。
【0035】
次にステップS202では、ステップS201で測定された散布図における帯の上端に相当する値を検出する。そして、この値をコマンド発行番号毎の閾値(故障予測閾値)として用いる。この値は、シーク時間、回転待ち時間、集束時間などのヘッド動作に依存する待ち時間が極大となる場合のアクセス時間であり、HDD300が正常時である時は、アクセス時間がこの値以下に収まるという特徴がある。従って、この値を故障予測の閾値として用いることにより、アクセス時間がこの閾値を超えたら、HDD300のアクセスが正常でないことが把握できる。この閾値の具体的な検出方法については後述する。
【0036】
次にステップS203では、ステップS202で算出した閾値を異常値DB記録部40に登録する。具体的には、図10(a)に示すように、コマンド発行番号と閾値とを対応させて記録する。
【0037】
ステップS201〜ステップS203は、故障予測を行う事前処理あるいは初期設定処理である。
【0038】
次にステップS204では、HDD300の使用時において故障予測動作を行う。制御部30がコマンド発行領域のアクセス時間が異常値DB記録部40に記録した閾値を超えていないかを監視し、閾値を超えたコマンド発行番号領域については異常値DB記録部40にコマンド発行番号とアクセス時間を記録する。制御部30は、異常値DB記録部40に記録されたワーニングカウンタとエラーカウンタを計数し、その結果、故障予測と判定されるレベルにまで達したとき、HDD300の停止警告を発し、処理を終了する。
【0039】
ステップS201〜S203の処理において、制御部30は閾値算出部として動作する。閾値算出部は制御部30とは別の回路としてもよい。
【0040】
なお、HDDの型番とファームウェアが同じであれば、図7の散布図の帯から得られる閾値は同じであるから、新たに閾値を作成する必要はないため、ステップS201〜ステップS203を省略し、他のHDDで測定した閾値を用いて、ステップS204の故障予測を開始することができる。他のHDDで測定した閾値を用いる場合、HDD故障予測装置100に閾値算出部を備える必要はない。
【0041】
ここで、ステップS202の閾値を検出する方法を詳細に説明する。ステップS202の第1の方法を説明する。
【0042】
図8に示すように、所定数N個のコマンド発行番号ごとに、コマンド発行番号をグループ化する。以下では、このグループを「コマンド発行セグメント」あるいは単に「セグメント」と称する。また、所定数Nを「セグメント長」と称する。ここで、所定数N(セグメント長)は、1つのセグメントにシーク時間、回転待ち時間、集束時間などのヘッド動作に依存する待ち時間が極大となる点が、おおよそ1つ以上含まれるように設定する。典型的には、N=30〜50とするのがよい。例えば、N=30とする場合、コマンド発行番号=1〜30をセグメント1、コマンド発行番号=31〜60をセグメント2、コマンド発行番号=61〜90をセグメント3とし、以下同様に、コマンド発行番号とセグメントを対応させる。
【0043】
次に、セグメントごとにアクセス時間の最大値を検出する。そして、その最大値をそのセグメントにおける閾値とする。例えば、N=30であり、セグメント1の中で、コマンド発行番号=12において、アクセス時間が最大となり、最大値が30msecとなる場合、コマンド発行番号1〜30に対応する閾値を全て30msecとする。あるいは、各セグメントにおけるアクセス時間の最大値に所定倍率を乗じた値をそのセグメントの閾値としてもよい。例えば、所定倍率=1.2とし、最大値30msec×1.2=36msecを当該セグメントの閾値としてもよい。あるいは、各セグメントにおけるアクセス時間の最大値に所定値を加算した値を閾値としてもよい。例えば、所定値=5msecとし、最大値30msec+5msec=35msecを閾値としてもよい。
【0044】
この第1の方法で算出した閾値は、1つのセグメントに対応するコマンド発行番号においては、全て同じ値となる。従って、ステップS203において、コマンド発行番号ごとに閾値を記録せずに、図10(b)に示すように、セグメント番号と閾値を対応させて記録してもよい。
【0045】
ステップS202の第2の方法を説明する。まず、第1の方法と同様に、所定数のコマンド発行番号ごとにセグメントを形成する。このセグメントは、後続の処理ステップで使用するためのもので、ステップS202においては、セグメントを使用しない。
【0046】
次に、あるコマンド発行番号(コマンド発行番号i)に対して、その前後の所定範囲のコマンド発行番号(i−w〜i+w)を対象にアクセス時間の最大値を検出する。すなわち、数式(1)に従って、コマンド発行番号iに対応する閾値θ[i]を算出する。ここで、a[i]はコマンド発行番号iに対応するコマンド実行時間(アクセス時間)であり、wは正の整数であり、maxは引数に指定された値の中から最大値を返す関数である。数式(1)によれば、(2w+1)個のコマンド発行番号を対象にして最大値を検出することになる。正の整数wは、(2w+1)個のコマンド発行番号の中に、アクセス時間の極大値が1つ以上含まれるように設定するとよい。典型的には、w=15〜25を用いるとよい。(2w+1)がセグメント長Nと同じであってもよいし、異なっていてもよい。ステップS201で測定に用いた最大のコマンド発行番号をPとすると、数式に従って、i=(w+1)〜(P−w)に対応する閾値θ[w+1]〜θ[P−w]を各々算出する。i=1〜wについては、θ[w+1]を流用し、i=(P−w+1)〜Pについては、θ[P−w]を流用すればよい。
【0047】
【数1】
【0048】
また、数式(1)に従って算出した値に、更に移動平均処理を行って、閾値を算出してもよい。例えば、数式(1)の左辺を一時変数μ[i]に代入し、数式(2)に従って、μ[i]の移動平均を算出して閾値θ[i]とする。ここで、ε[j]は数式(3)を満たす重み係数である。またLは正の整数であり、典型的には5〜10に設定するとよい。数式(2)に従って閾値を算出することにより、閾値の変化が滑らかになり、精度よく故障予測できる場合がある。
【0049】
【数2】
【0050】
【数3】
【0051】
図3は、ステップS204で示した故障予想処理の詳細な手順を示すフローチャートである。
【0052】
HDD300の故障は、特定容量単位で区切られたエリアのアクセス時間がどのくらいの遅延をもって図7で示す散布図の帯の上端である閾値を超えているか、そのアクセス遅延の発生がどのようにエリアをまたいで広がっているかによって予測する。
【0053】
HDD300の閾値を超えたアクセス遅延の原因は、アクセス時に異常が発生したため、通常アクセス時の処理に加え、リトライや代替セクタ発生のような異常発生時の処理時間が加わることによる。
【0054】
しかしながら、ある特定セクタだけの損傷による代替セクタの発生は、代替セクタが発生した時点だけ大きなアクセス遅延が発生するが、以後、同じセクタをアクセスしてもHDD300としては、正常動作に戻ったとして扱われ、再度同じ領域をアクセスしてもアクセス遅延が発生しなくなるという特徴がある。この場合、発生も単発で異常セクタの拡大は確認できず、そのとき発生した代替セクタ以上の拡大は見られない。これに対し、経年劣化によるアクセス遅延は、劣化が進行するとともにセグメント長で区切られたエリアの閾値を超える数がアクセスごとに徐々に増加していくが、そのパターンは特定できないため、セグメントで区切られたエリアの閾値の超え方の推移を異常値DB記録部40に登録することにより故障の予測を行う。
【0055】
図3のステップS301では、一時記憶部20からHDD300に転送する先頭のデータが、どのコマンド発行番号に該当するか特定する。例えば、一時記憶部20において、ホスト200からHDD300に通常書き込むのと同じLBAを用いて、転送すべきデータを管理し、転送時に先頭LBAを特定容量で割った値を算出してコマンド発行番号とすればよい。この特定したコマンド発行番号(データ転送に用いる先頭のコマンド発行番号)をiとする。
【0056】
ステップS305では、一時記憶部20からHDD300に転送するデータ容量(書き込み容量)が、何個分のコマンド発行番号(特定容量)に相当するかを算出する。具体的には、データ容量を特定容量で除算し、その商と余りを算出する。そして、その商を書き込み回数Mとする。
【0057】
HDD300への書き込みはセクタ単位で制御できるが、特定容量はそれ以上(ここでは256セクタ)であるため、最後の書き込みデータが特定容量以下の場合は、最後に書き込む特定容量内に既存のデータが存在する可能性がある。
【0058】
そこでステップS310では、ステップS305で算出された余りが「0」であるか否かを判定する。すなわち、書き込み容量が特定容量で割り切れるか否かを判定する。その結果、割り切れない場合(余りが存在する場合)(S310のNO)、ステップS315に進む。ステップS315において、端数のデータに相当するM+1番目の書き込み領域に他のデータがあるかどうかを確認し、他のデータが存在する場合(S315のYES)、ステップS320において、その存在するデータを一時記憶部20に読み込み、M+1番目の書き込みデータに結合した後、M+1番目に書き込むデータとして用意してステップS325に進む。ステップS315において他のデータが存在しない場合(S315のNO)、書き込みデータを結合する必要はないので、そのままステップS325に進む。この結果、端数分につき書き込み回数が1つ増えるので、ステップS325においてMを1だけ加算し、ステップS330に進む。
【0059】
ステップS310において書き込み容量が特定容量で割り切れる場合(S310のYES)、ステップS330に進む。
【0060】
ステップS330において、図6に示すアクセスパターンにおける、コマンド発行番号iに対応する特定容量の書き込みを行う。
【0061】
ステップS350において、致命的ではない障害を検出するワーニング判定処理を実行する。ワーニング判定処理については、図4のフローチャートを参照して後ほど詳しく説明する。
【0062】
ステップS355において、致命的な障害を検出するエラー判定処理を実行する。このエラー判定処理では、復旧の見込みがない致命的な異常セクタを監視することにより、寿命の到来を検出し、寿命到来検出時は最終的にHDD300の停止警告を出すことにより、運用可能稼働中のHDD300からデータを退避させることを促す。エラー判定処理については、図5のフローチャートを参照して後ほど詳しく説明する。
【0063】
ステップS360では、ステップS350およびステップS355の処理で更新したHDD300のワーニングカウンタ値およびエラーカウンタ値を表示する。ユーザ(操作者)は、これらのカウンタ値によってHDD300の状態を監視することができ、必要なときには操作者がこの数値から判断して、独自にHDD300を停止させることもできる。
【0064】
ステップS365において、ステップS360の結果を受けて処理されたエラーカウンタが動作停止パラメータ値を超えたことが確認された場合(S365のYES)、故障予測処理を終了する。なお、ステップS365のYESの直後に、さらにユーザの注意を喚起するような警告メッセージを表示したり故障予測処理を終了することを通知するメッセージを表示してもよい。
【0065】
HDD300へのデータ書き込み中はステップS350およびステップS355の処理をコマンド発行番号に対して行い、使用しているHDD300の故障予測を行う。このため、ステップS370で書き込み回数Mを1減算し、コマンド発行領域iはアクセスが次の領域に移るため、1加算する。
【0066】
最後にステップS375において、書き込み回数Mが0より大きい場合(S375のYES)、所定回数の書き込みに達するまでステップS330〜ステップS370までの一連の処理を繰り返す。書き込み回数Mが0になった場合(S375のNO)、故障予測処理を終了する。
【0067】
図4は、ステップS350のワーニング判定処理の詳細な手順を示すフローチャートである。ワーニング判定処理では、異常が発生しているエリアを特定し、異常発生エリアがどのように分布しているか(広がっているか)を判定する。
【0068】
ワーニング判定は図11(a)で示すコマンド発行番号ごとのワーニングカウンタの値を加算することで行う。
【0069】
ステップS401では、コマンド発行番号iに対応するコマンド実行時間a[i]が閾値θ[i]を超えたか否かを判定する。
【0070】
HDD300のアクセス時間に対する特徴として、障害、劣化が進んでいないHDD300は、正常時の処理時間内にアクセスが終了するので、セグメントのアクセス時間は閾値内に収まる。しかしながら、経年劣化が進んだHDD300や障害発生したHDD300は、ヘッドの汚れ、内部での蓄積したほこりの影響、盤面上に発生した傷等により内部の障害が拡大し、その結果、HDD300の内部処理時間が障害に対応する処理を必要とし、正常処理時に比べて内部処理に時間を要するので、アクセス時間が決められた閾値を超え、書き込みアドレスに対するアクセス時間の遅延は拡大する。ステップS401ではこのような症状が起きていないかどうかを確認する。
【0071】
コマンド実行時間が閾値を超えた場合(S401のYES)、ステップS402において、ワーニングカウンタを1つ増やすとともに、コマンド発行番号とそのときのコマンド実行時間(アクセス時間)を異常値DB記録部40に登録する。
【0072】
コマンド実行時間が閾値を超えていない場合(S401のNO)、ステップS403に進む。ステップS403において、当該コマンド発行番号に対応する過去のワーニングがカウントされている場合(S403のYES)、アクセス時の一時的な要因があったとみなし、ステップS407においてコマンド発行番号領域のワーニングカウントを0に戻し、ワーニング判定処理を終了する。
【0073】
次に、ステップS402からステップS404に進む。ステップS404において、障害の広がりを確実に検出するため、アクセス対象のセグメントの前に5個のセグメント、後に5個のセグメントを取った狭い近傍セグメントエリア(第1近傍セグメントエリア)において、図7の散布図の帯が閾値を超えて拡散しつつあるかどうかを確認する。具体的には、第1近傍セグメントエリアにおいて、ゼロでないワーニングカウンタが10個以上発生しているかどうかを判定する。ワーニングカウンタが10個以上確認された場合(ステップS404のYES)、この近傍セグメントエリアにおいて遅延が拡大していると判定し、次のエラー判定処理でHDD300の停止の警告を発することができるよう、ステップS405でエラーカウンタに故障予測の閾値(ここでは10)を加算する。
【0074】
ディスク上に物理的に発生したヘッドの接触等による傷では、アクセス遅延にセクタの連続性が見られ、発生の要因を比較的簡単に見分けられるが、寿命予測においては、一度アクセス遅延が発生し、以後アクセス時間の回復することがない幾つかのセクタを中心に、その近傍セクタおいてアクセス遅延が発生する特徴があるので、セクタごとのアクセス遅延の分布を記録し、それがどのように図7の散布図の帯において閾値を超え、アクセス遅延が発生しているセクタが増えているかを判断する必要がある。この判断については、図7の散布図のアクセス遅延が起きていることだけに注目した場合、図5のS501のように、代替セクタ発生予測閾値を越えたセクタについては、明らかに何らかの問題が発生していることがわかるが、代替セクタ発生予測閾値以下で、図7の散布図で示す閾値を越えたエリアにアクセス遅延が発生した場合、アクセス遅延の時間だけを持って、本当に故障に至る障害がそのセクタで発生しているかを判断することが難しい。
【0075】
そこで、コマンド発行番号iのアクセス時間が閾値を超えたことに加え、コマンド発行番号iの近傍セクタにおいて同様の挙動が見られるかを判定し、寿命に達する障害の進行を予測する。これは、個々のセクタのアクセス遅延はそれほどたいしたものではないが、コマンド発行番号iの近傍エリアで、多くのアクセス遅延が発生することは、このエリアのアクセスが完了する挙動が正常ではなく、少なくともアクセス時間を延長させる何らかの障害が進行していることを意味している。その近傍領域のアクセス遅延が発生しているセクタ(コマンド発行番号)の個数を用いて、精度良い判定ができるように、ステップS404では、近傍セグメントエリアとして同一セクタ数で区切った領域を使用する。ステップS404における、前に5個のセグメント、後に5個のセグメント、ワーニングカウンタが10個以上、といった所定数は一例であり、上述の値以外の所定数を用いてもよい。
【0076】
ステップS406において、アクセス対象のセグメント内のN個のコマンド発行番号を見た場合に、ゼロでないワーニングカウンタが所定数(例えば2個)以上あれば、当該セグメントにおいて回復できないような障害が発生していると予想されるため、ステップS408においてエラーカウントを1加算し、エラー判定処理にエラーカウンタ値を渡す。この時点で、エラーが発生しているエリアの特定が可能となっていることから、問題エリアの使用を回避する等の処置によりHDD全体として延命へ導くことも可能である。
【0077】
このようにワーニング判定処理では、ワーニングカウンタを加算することにより、エラーにカウントされない障害がHDD300に蓄積していることを判断することができる。また、一定のセグメントエリアでワーニングカウンタが所定数以上発生している場合は、ただちにエラーカウンタを加算することでエラー判定処理につなげることができる。
【0078】
図5は、ステップS355のエラー判定処理の詳細な手順を示すフローチャートである。エラー判定処理では、図4のワーニング判定処理においてアクセス時間が閾値を超えたコマンド発行番号領域のアクセスが実際はどの位のアクセス時間を要しているかを判断し、これまでのエラーカウントの累計から、どのような異常を持っているかを特定する。
【0079】
エラー判定処理は図11(b)で示すコマンド発行番号ごとのエラーカウンタの値を加算することで行う。
【0080】
ステップS501において、アクセス時間が代替セクタ発生予測閾値を超えたかどうかを判定する。コマンド実行時間が図9(a)で示す正常時のアクセス時間の合計を越え、事前にHDD300の種類ごとに決められた異常時処理の時間が加わることで大きく遅延している場合、リカバリ処理を含む代替セクタ処理に入っている可能性が高い。このような代替処理等に要するHDD300の異常発生時の処理時間はHDD300ごとに決まっている。このような代替セクタ処理に入っていると判定できるとき(S501のYES)、データが読み出しにくい状態が発生しているため、図4のワーニング判定処理でワーニングカウンタが登録されていたとしても、ステップS502でエラーカウンタを加算する。
【0081】
このようにアクセス時間が代替セクタ発生予測閾値を超える場合、その発生個数が少なく単独で発生している場合、代替セクタへ移行したならば、以後の再アクセス時のアクセス時間は回復する。しかしながら、その発生箇所では明らかにアクセスに支障を来す問題が発生していることが明確なので、再アクセスでアクセス時間が回復したとして図4のステップS407においてワーニングカウンタがリセットされた場合でも、エラーカウンタとして累計することでカウンタを初期化しないようにする。
【0082】
次に、ステップS503において、アクセス対象のセグメントの前に10個のセグメント、後に10個のセグメントを取った第2近傍セグメントエリアにおいてゼロでないエラーカウンタが5個以上確認された場合(S503のYES)、第2近傍セグメントエリアにおいてアクセス遅延が拡大するものと判定し、ステップS505に進み、HDD停止の警告を発する。これは、第2近傍セグメントエリアにおいて障害が集中して発生していることを示す。LBAが連続する近傍セグメントにおいて連続してエラーが発生すれば、ヘッドの擦れによる同一円周上のディスク盤面の傷やヘッド不良などが原因でこの領域に物理的に書き込み不良の問題が発生している可能性が高いからである。
【0083】
このような場合、物理的障害が現在評価しているコマンド発行番号領域にとどまらす、まだ評価していないコマンド発行番号領域にも広がっている可能性が高く、評価の進行過程で読み込みエラーにまで発展し、データを読み出せなくなる恐れがあるため、早急にHDD停止警告を発し、HDDの使用を停止させる必要がある。
【0084】
アクセス対象のセグメントの前に10個、後に10個という隣接する第2近傍セグメントエリアのセグメント数と、第2近傍セグメントエリア内でのエラーカウンタが5個以上という数は、一例であり、これ以外の値を用いてもよい。最大ディスク1周分の傷を早期に予想するために、連続するセクタが最も少ないディスク最内周で最小の傷が早期に発見できるように、HDD300ごとに、最適な値を設定することが望ましい。
【0085】
ステップS503において、第2近傍セグメントエリアにおけるゼロでないエラーカウンタが5個未満である場合(S503のNO)、ステップS504に進む。そして、ステップS504で全セグメントのエラーカウンタの数が所定値(例えば10個)を超えた場合(S504のYES)、ステップS505でHDDの停止警告を発する。
【0086】
以上述べたように、本実施の形態のHDD故障予測装置100による故障予測手順によれば、以下のように高い精度でHDD300の故障予測を行い、HDD300内のデータの損失を防ぐことができる。
【0087】
パーティクルがヘッドの下に付加されることによる異常書き込みや、偶発的にヘッドがセクタにデータを完全に書き込めなかった時の書き損じが発生した場合、一時的にアクセス時間が閾値を超えるが、再度、同じコマンド発行番号領域を上書きすることによりアクセス時間が回復し、以後正常なアクセス時間で動作する。このような場合には、ワーニングカウンタがリセットされ、HDD300が正常動作に復帰したことが判断できる。
【0088】
また、代替セクタの発生により機能回復した場合は、単発的であればHDD300の機能を正常化させた物としてそれ以降エラーカウントの累積は進行しないが、近傍セグメントにおいて連続して代替セクタが発生すれば傷やヘッド不良による書き込みミスが発生していると考えられる。これらは、問題発生セクタと前後するセグメントにおいてエラーカウンタの発生が進行することによって、あるいはアクセス時間が代替セクタ発生予想閾値を超えた場合に代替セクタの発生と考えてエラーカウントが加算されることによって、HDD300の故障が近いことを判断することができる。
【0089】
さらに、HDD300の寿命による故障については、ワーニングカウンタが登録されたアクセス時間が閾値を超える範囲が特定セグメントに前後して広がって発生しているかどうかを確認することで判断することができる。この場合、視覚的には図7の散布図が正常時と比較して広がりつつあることから判断することができる。
【0090】
特に、ワーニングカウンタが登録されたコマンド発行番号領域の再アクセスにおいてワーニングカウンタが所定数(例えば2個)以上発生すれば、書き損じによる回復が見込まれず、このコマンド発行番号領域におけるデータの書き込み異常が考えられ、早期故障への発展が考えられることから、ワーニングカウンタからエラーカウンタへの進行を早めることにより故障発生が近いことをより正確に判断することができる。
【0091】
このようにワーニングカウンタを蓄積しエラーカウンタへ移行することにより、一般的なHDD300の障害判断に加えて、時間をかけて進行する障害をより正確に判断することができるようになる。
【0092】
最終的にエラーカウンタは、累計されたワーニングカウンタの値から、故障予測とする閾値を超えたことを判断し、HDD300に対し停止警告を表示灯などにより知らせるために用いられる。これは、ブザー等による警報であってもよく、本システムの停止機能と連動させてもよい。また、外部のシステムと連携し、ワーニングカウンタやエラーカウンタの値に応じて、HDD等の記憶装置の購入に係る情報(広告情報など)を表示したり、クラウド等を用いたバックアップサービスの利用を促したり、記憶装置の購入やバックアップサービスの利用を促進するための優待サービス(クーポン券の提示など)を実施してもよい。このように、必要度の高いユーザにピンポイントで適切な情報を提供することにより、ユーザの利便性が向上するとともに、関連商品やサービスの売上増加が期待できる。
【0093】
このように、HDD300の正常動作時のアクセス最大時間から閾値を導くことにより、HDD300の正常時のアクセス時間の範囲がわかることから、アクセス時間が閾値を超えたコマンド発行番号領域において異常動作を正確に捉えることができ、HDD300の故障予測を高い精度で行うことができる。
【0094】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【0095】
上記の説明ではリセットされることのあるワーニングカウンタと、リセットされることのないエラーカウンタを用いて故障予測を行ったが、ワーニングカウンタだけを用いてワーニングカウンタが所定数以上になるかどうかによって故障を判定してもよい。
【0096】
上記の説明では、ディスクの一例としてハードディスクを取り上げて故障予測技術を説明したが、本実施の形態の故障予測技術は、任意の磁気ディスク、あるいは、光ディスクにも適用することができる。
【符号の説明】
【0097】
10 HDDコントローラ、 20 一時記憶部、 30 制御部、 40 異常値DB記録部、 100 HDD故障予測装置、 200 ホスト、 300 HDD。
図1
図2
図3
図4
図5
図6
図7A
図7B
図8
図9
図10
図11