(57)【要約】      （修正有）【課題】  大容量記憶装置システムにおいて、電磁ディスク・ドライブのトラック・スクイーズ障害のような今にも発生しそうな障害を修復するエラー状態処理方法および装置を提供する。【解決手段】  今にも発生しそうなエラーを検出して、例えば影響を及ぼされるトラックの再度書込みによって、この今にも発生しそうな障害を修復する。多くの場合においては、障害が検出されて、元々のデータがまだ読み出しできる場合に修復がなされる。別の場合においては、データが該当のディスクで読み出しできないが、ディスクがＲＡＩＤシステムの一部、または上位層のフォールト・トレラント手法が実装されている他のシステムの一部である場合、損失したデータはこれらの手法により回復できる。その後、回復データを用いてトラック・スクイーズ障害を修復する。【選択図】  図１
2005322399.tif 000002
【特許請求の範囲】
【請求項１】
電磁記憶媒体の同心状に隣接するトラックにデータを記録する大容量データ記憶装置におけるエラー状態を処理する方法であって、
前記記憶媒体内の特定の領域へのアクセスの間に、トラック・スクイーズ・エラー状態が発生し始めそうな場合を検出する検出工程と、
前記特定の領域に最も近い少なくとも１つのトラックに再度書込みを行う再度書込み工程とを備えた、エラー状態処理方法。
【請求項２】
請求項１において、前記検出工程がさらに、入力／出力完了時間の変化がしきい値を超えているか否かを決定する、エラー状態処理方法。
【請求項３】
請求項１において、前記検出工程がさらに、リード・エラーの発生率が所定のしきい値を超えているか否かを検査する、エラー状態処理方法。
【請求項４】
請求項１において、前記検出工程がさらに、ＳＭＡＲＴ（自己管理解析報告機能）カウンタ・データ値の任意の１つまたは複数を、所定の許容できる性能しきい値と比較する、エラー状態処理方法。
【請求項５】
請求項１において、前記検出工程がさらに、連続する読出しスループットが予測されるスループットよりも所定のしきい値量を超える差だけ小さいか否かを決定する、エラー状態処理方法。
【請求項６】
請求項５において、前記予測されるスループットが、影響を及ぼされるトラックのブロック・アドレスの関数として決定されている、エラー状態処理方法。
【請求項７】
請求項１において、前記予測されるスループットが、システム設計もしくはドライブ型式の容認の間にディスク型式について測定されたブロック・アドレスの関数として決定されている、エラー状態処理方法。
【請求項８】
請求項１において、前記検出工程がさらに、個々のＩ／Ｏ要求のタイミングが予測される値よりもしきい値だけ遅いか否かを決定する、エラー状態処理方法。
【請求項９】
請求項１において、前記検出工程がさらに、入力／出力（Ｉ／Ｏ）動作のタイムアウトが既に発生しているか否かを決定する、エラー状態処理方法。
【請求項１０】
請求項１において、前記再度書込み工程がさらに、前記特定の領域が存在するトラックを再度書き込む、エラー状態処理方法。
【請求項１１】
請求項１０において、前記再度書込み工程がさらに、前記特定の領域を含む一連のトラックを再度書き込む、エラー状態処理方法。
【請求項１２】
請求項１０において、前記再度書込み工程がさらに、データが回復不可能になる前に前記特定の領域からデータを読み出す、エラー状態処理方法。
【請求項１３】
請求項１２において、前記再度書込み工程がさらに、前記特定の領域からデータを読み出すのに必要であれば、通常の特定された読出しタイムアウトよりも長いタイムアウトを許容する、エラー状態処理方法。
【請求項１４】
請求項１０において、前記再度書込み工程がさらに、ディスク・ドライブが一部をなす記憶装置システムの上位層において提供される冗長データ複製によって、前記特定の領域に再度書き込まれるデータを決定する、エラー状態処理方法。
【請求項１５】
請求項１０において、前記上位層の冗長データ複製が、ＲＡＩＤ（Redundant Array of Independent Disks）、データ複製、またはバックアップ・データ記憶装置から成るグループから選択された上位層システム機能によって提供される、エラー状態処理方法。
【請求項１６】
請求項１０において、前記大容量記憶装置が、高可用性記憶アレイを実現するために用いられる大容量記憶装置アレイの不可欠な要素である、エラー状態処理方法。
【請求項１７】
請求項１０において、前記上位層の冗長データ複製が、システム要素の１つまたは複数の状態を検査することによって再生成される、エラー状態処理方法。
【請求項１８】
請求項１０において、前記上位層の冗長データ複製が、ＲＡＩＤ（Redundant Array of Independent Disks）、ファイル・システム、またはストレージ仮想化システムから成るグループから選択された上位層システム機能によって再生成される、エラー状態処理方法。
【請求項１９】
請求項１０において、前記再度書込み工程がさらに、前記特定の領域を１回再度書き込む、エラー状態処理方法。
【請求項２０】
請求項１０において、前記再度書込み工程がさらに、前記特定の領域を複数回再度書き込む、エラー状態処理方法。
【請求項２１】
請求項１において、前記検出工程および前記再度書込み工程が、前記大容量記憶装置の標準のアクティブＩ／Ｏ処理経路で追加処理として実装される、エラー状態処理方法。
【請求項２２】
請求項１において、前記検出工程および前記再度書込み工程が、前記記憶装置がアイドル状態のときに稼動するバックグラウンド・スレッドとして実装される、エラー状態処理方法。
【請求項２３】
請求項１において、前記トラック・スクイーズ検出手順が、製造試験工程の間に、ディスク・ドライブの容認試験のためのスクリーニング手順として用いられる、エラー状態処理方法。
【請求項２４】
請求項２３において、前記スクリーニング手順が、限度を超えたトラック・スクイーズが検出されるか、またはトラックの再度書込みが有効でないかのいずれかによって、ディスク・ドライブを不合格とする、エラー状態処理方法。
【請求項２５】
請求項１において、前記検出工程および前記再度書込み工程が、ディスク・ドライブがエンド・ユーザに使用されているときに、アプリケーション・プログラムの実行の間に実施される、エラー状態処理方法。
【請求項２６】
請求項１において、前記検出工程および前記再度書込み工程が、顧客から返却された故障ディスク・ドライブのフォールト解析に用いられる、エラー状態処理方法。
【請求項２７】
請求項１において、前記検出工程および前記再度書込み工程が、将来にハードウェア故障を被りそうなディスク・ドライブを検出するための予測手法として用いられる、エラー状態処理方法。
【請求項２８】
請求項１において、前記検出工程および前記再度書込み工程が、サーバ・コンピュータにおいて使用されるような汎用オペレーティング・システムに実装される、エラー状態処理方法。
【請求項２９】
請求項１において、前記検出工程および前記再度書込み工程が、記憶装置コントローラのファームウェアまたはハードウェアに実装される、エラー状態処理方法。
【請求項３０】
請求項１において、前記検出工程および前記再度書込み工程が、ローカル・コンピュータ・バスを介して接続された、コンピュータ・システム内の記憶装置コントローラに実装される、エラー状態処理方法。
【請求項３１】
請求項３０において、前記ローカル・コンピュータ・バスがＰＣＩ（Peripheral Component Interconnect）バスである、エラー状態処理方法。
【請求項３２】
請求項１において、前記検出工程および前記再度書込み工程が、ＳＡＮ（ストレージ・エリア・ネットワーク）に接続された記憶装置コントローラに実装される、エラー状態処理方法。
【請求項３３】
請求項１において、前記検出工程および前記再度書込み工程が、１つまたは複数のディスク・ドライブ・アセンブリ内に配置されたドライブ電子回路に実装される、エラー状態処理方法。
【請求項３４】
請求項１において、前記検出工程および前記再度書込み工程が、ホスト・コンピュータで実行する汎用オペレーティング・システム、記憶装置コントローラのファームウェア、またはディスク・ドライブ・アセンブリ内に配置されたドライブ電子回路から成るグループから選択される１つまたは複数の場所に、分散方式で実装される、エラー状態処理方法。
【請求項３５】
電磁記憶媒体の同心状に隣接するトラックにデータを記録する大容量データ記憶装置におけるエラー状態を処理する装置であって、
前記記録媒体内の特定の領域へのアクセスの間に、トラック・スクイーズ・エラー状態が発生し始めそうな場合を検出する検出器と、
前記記憶媒体の前記特定の領域に最も近い少なくとも１つのトラックに再度書込みを行うデータ書込み手段とを備えた、エラー状態処理装置。
【請求項３６】
請求項３５において、前記検出器がさらに、しきい値を超える入力／出力（Ｉ／Ｏ）完了時間の変化を決定する比較器を備えた、エラー状態処理装置。
【請求項３７】
請求項３５において、前記検出器がさらに、リード・エラーの発生率が所定のしきい値を超えているか否かを決定する比較器を備えた、エラー状態処理装置。
【請求項３８】
請求項３５において、前記検出器がさらに、ＳＭＡＲＴ（自己管理解析報告機能）カウンタ・データ値の任意の１つまたは複数を、所定の許容できる性能しきい値と比較する比較器を備えた、エラー状態処理装置。
【請求項３９】
請求項３５において、前記検出器がさらに、連続する読出しスループットが予測されるスループットよりも所定のしきい値量を超える差だけ小さいか否かを決定する比較器を備えた、エラー状態処理装置。
【請求項４０】
請求項３９において、前記予測されるスループットが、影響を及ぼされるトラックのブロック・アドレスの関数として決定されている、エラー状態処理装置。
【請求項４１】
請求項３５において、前記予測されるスループットが、システム設計もしくはドライブ型式の容認の間にディスク型式について測定されたブロック・アドレスの関数として決定されている、エラー状態処理装置。
【請求項４２】
請求項３５において、前記検出器がさらに、個々の入力／出力（Ｉ／Ｏ）要求のタイミングが予測される値よりもしきい値だけ遅いか否かを決定する比較器を備えた、エラー状態処理装置。
【請求項４３】
請求項３５において、前記検出器がさらに、入力／出力（Ｉ／Ｏ）動作のタイムアウトが既に発生しているか否かを決定する比較器備えた、エラー状態処理装置。
【請求項４４】
請求項３５において、前記データ書込み手段がさらに、前記特定の領域が存在するトラックを再度書き込む、エラー状態処理装置。
【請求項４５】
請求項４４において、前記データ書込み手段がさらに、前記特定の領域を含む一連のトラックを再度書き込む、エラー状態処理装置。
【請求項４６】
請求項４４において、さらに、データが回復不可能になる前に前記特定の領域からデータを読み出すデータ読出し手段を備えた、エラー状態処理装置。
【請求項４７】
請求項４６において、前記データ読出し手段がさらに、前記特定の領域からデータを読み出すのに必要であれば、通常の特定された読出しタイムアウトよりも長いタイムアウトを許容する構成要素を備えた、エラー状態処理装置。
【請求項４８】
請求項４４において、前記データ書込み手段がさらに、ディスク・ドライブが一部をなす記憶装置システムの上位層において提供される冗長データ複製によって、前記特定のた領域に再度書き込まれるデータを決定する、エラー状態処理装置。
【請求項４９】
請求項４４において、前記上位層の冗長データ複製が、ＲＡＩＤ（Redundant Array of Independent Disks）、データ複製、またはバックアップ・データ記憶から成るグループから選択された上位層システム機能によって実現される、エラー状態処理装置。
【請求項５０】
請求項４４において、前記大容量記憶装置が、高可用性記憶アレイを実現するために用いられる大容量記憶装置アレイの不可欠な要素である、エラー状態処理装置。
【請求項５１】
請求項４４において、前記上位層の冗長データ複製が、システム要素の１つまたは複数の状態を検査することによって再生成される、エラー状態処理装置。
【請求項５２】
請求項４４において、前記上位層の冗長データ複製が、ＲＡＩＤ（Redundant Array of Independent Disks）、ファイル・システム、またはストレージ仮想化システムから成るグループから選択された上位層システム機能によって再生成される、エラー状態処理装置。
【請求項５３】
請求項４４において、前記データ書込み手段が前記特定の領域を少なくとも１回再度書き込む、エラー状態処理装置。
【請求項５４】
請求項４４において、前記データ書込み手段がさらに、前記特定の領域を複数回再度書き込む、エラー状態処理装置。
【請求項５５】
請求項３５において、前記検出器および前記データ書込み手段が、前記大容量記憶装置の標準のアクティブＩ／Ｏ処理経路で追加処理として実装される、エラー状態処理装置。
【請求項５６】
請求項３５において、前記検出器および前記データ書込み手段が、前記記憶装置がアイドル状態のときに稼動するバックグラウンド・スレッドとして実装される、エラー状態処理装置。
【請求項５７】
請求項３５において、前記エラー状態処理装置が、製造試験工程の間に、供用されるディスク・ドライブの試験に使用される、エラー状態処理装置。
【請求項５８】
請求項５７において、前記試験手順が、限度を超えたトラック・スクイーズが検出されるか、またはトラックの再度書込みが有効でないかのいずれかによって、ディスク・ドライブを不合格とする、エラー状態処理装置。
【請求項５９】
請求項３５において、前記検出器および前記データ書込み手段が、ディスク・ドライブがエンド・ユーザに使用されているときに、アプリケーション・プログラムとして少なくとも一部に実装されている、エラー状態処理装置。
【請求項６０】
請求項３５において、前記検出器および前記データ書込み手段が、顧客から返却された故障ディスク・ドライブのフォールト解析に用いられる、エラー状態処理装置。
【請求項６１】
請求項３５において、前記検出器および前記データ書込み手段が、将来にハードウェア故障を被りそうなディスク・ドライブを予測するのに用いられる、エラー状態処理装置。
【請求項６２】
請求項３５において、前記検出器および前記データ書込み手段が、サーバ・コンピュータにおいて使用されるような汎用オペレーティング・システムに少なくとも部分的に実装される、エラー状態処理装置。
【請求項６３】
請求項３５において、前記検出器および前記データ書込み手段の少なくとも一部が、記憶装置コントローラのファームウェアまたはハードウェアに実装される、エラー状態処理装置。
【請求項６４】
請求項３５において、前記検出器および書込み装置の少なくとも一部が、ローカル・コンピュータ・バスを介して接続された、コンピュータ・システム内の記憶装置コントローラに実装される、エラー状態処理装置。
【請求項６５】
請求項６４において、前記ローカル・コンピュータ・バスがＰＣＩ（Peripheral Component Interconnect）バスである、エラー状態処理装置。
【請求項６６】
請求項３５において、前記検出器および前記データ書込み手段が、ＳＡＮ（ストレージ・エリア・ネットワーク）に接続された記憶装置コントローラに実装される、エラー状態処理装置。
【請求項６７】
請求項３５において、前記検出器および前記データ書込み手段の少なくとも一部が、１つまたは複数のディスク・ドライブ・アセンブリ内に配置されたドライブ電子回路に実装される、エラー状態処理装置。
【請求項６８】
請求項３５において、前記検出器および前記データ書込み手段が、ホスト・コンピュータで実行する汎用オペレーティング・システム、記憶装置コントローラのファームウェア、またはディスク・ドライブ・アセンブリ内に配置されたドライブ電子回路から成るグループから選択される１つまたは複数の場所に、分散方式で実装される、エラー状態処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置（ストレージ・デバイス）においてデータ完全性の維持を実施する方法に関する。
【背景技術】
【０００２】
本出願は、2004年5月7日出願の米国特許出願第10/842,258号の優先権を主張する出願である。
【０００３】
現世代の磁気ディスク記憶装置は徐々に現れるデータ完全性の障害に弱い。このような障害からの回復は、最初に、従来のドライブの誤り訂正符号（ＥＣＣ）処理または入力／出力（Ｉ／Ｏ）再試行操作の使用のみを必要とする。しかし、これらの障害はデータが回復不可能に至るまで徐々に悪化する。この種のデータ完全性の障害の例は、“トラック・スクイーズ”として公知である。
【０００４】
トラック・スクイーズは特に、高密度データ装置がサーバ用途において高負荷で使用される場合に見られる。トラック・スクイーズが発生するのは、ディスク・ドライブ上のあるトラックがまれにしか書き込みされないが、同心状に隣接するトラックの一方または両方が頻繁に書き込みされる場合である。ヘッドのアクチュエータ機構の位置合わせ許容誤差に限界があるため、隣接トラック書込みを実行するのに利用される電磁力がまれにしか書き込みされないトラック内に侵入し、影響を及ぼされるトラックの信号強度を低下させる。このため、読出し動作においてデータ・エラーが発生する。この問題の低減または回避は、ディスク表面のトラック密度を減少させるか、またはヘッドのアクチュエータおよびデータ読出しプロセスの精巧度および正確さを増加させるかによって達成できる。しかし、これらの技術にはコストがかかる。
【０００５】
トラック・スクイーズのようなエラーが最初に現れ始めるとき、その影響はわずかであり、従来のディスク・ドライブ・エラー回復手法（例えば読出し再試行またはドライブＥＣＣ）がデータを回復できる。この場合において、上位層Ｉ／Ｏ処理すなわちアプリケーション・プログラムでは問題をエラーとして認識していないが、これらの訂正手法を実行するのに必要とされる時間に起因して性能の低下が生じている。
【０００６】
トラック・スクイーズのような徐々に現れるエラーが重大になるに伴い、これらエラーは、ディスク・ドライブ・エラー回復手法がこれらエラーを処理できる範囲を超えて進行する。ＲＡＩＤ（Redundant Array of Independent Disks）のようなフォールト・トレラント・データ記憶装置の手法は、基礎をなすディスク・ドライブ内に回復不可能なエラーが存在する場合においても、データの可用性を維持するのに有効である。しかし、これは、ＲＡＩＤの回復能力を超えるほどのエラーの発生がほとんどなく、エラーの発生率が十分小さい場合のみに有効である。したがって、ＲＡＩＤを用いる通常の稼動では、極めて小さいエラーの発生率よりも大きいエラーの発生率を生じるあらゆるディスク・ドライブを“故障ドライブ”とみなす。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
トラック・スクイーズのような障害が存在する場合においては、このような稼動のために、顧客が容認できる程度、または記憶装置システム製造者が商業的に許容できる程度をかなり超える割合で、ディスク・ドライブを“故障ドライブ”とする可能性がある。
【０００８】
これより、トラック・スクイーズのような徐々に現れるエラーを検出して、エラーを除去するために訂正動作を実行する手法が必要である。このような手法により、ディスク・ドライブは正常なドライブとして通常のサービスを続行できる。
【課題を解決するための手段】
【０００９】
本発明は、磁気ディスク・ドライブにおけるトラック・スクイーズ障害のような今にも発生しそうなデータ・エラーを検出し、さらに、データ・エラーが検出された際には、例えば影響を及ぼされたトラックに再度書き込むことによって、障害すなわち今にも発生しそうな障害を修復する。多くの場合においては、障害が検出されて、元々のデータがまだ読み出しできる場合に修復がなされる。
【００１０】
別の場合においては、データが該当のディスクで読み出しできないが、ディスクがＲＡＩＤ（Redundant Array of Independent Disks）システムの一部、または上位レベルのシステム・フォールト・トレラント手法が実装されている他のシステムの一部である場合、損失したデータはＲＡＩＤ層手法により回復でき、その後、回復データを用いてトラック・スクイーズ障害を修復できる。
【００１１】
本発明は、記憶装置システムのファームウェアとして、汎用オペレーティング・システムの構成要素として、もしくは個々のディスク・ドライブ内に実装でき、またはこれら実装の組合せを用いることもできる。
【００１２】
本発明はさらに、現場の顧客によって用いられる機能システムの一環として、製造時のスクリーニング工程における機能システムの一環として、または現場から返却されたユニットの解析および修理における機能システムの一環として実現される。
【００１３】
本発明は従来技術に勝る多くの利点を提供する。
【００１４】
多くの場合、記憶装置システムにおけるディスク・ドライブのコストを低減することが望まれる。この必要性は、多数の記憶ユニットから成る大規模記憶アレイにおいて特に重要である。大容量デスクトップＰＣシステムに用いられる技術に基づく“大衆向け商品（Commodity）”ドライブが、記憶装置のメガバイト当たり最低コストであるため、通常、最も魅力的な選択肢である。しかし、ユニット当たり最大の有効記憶密度を有する大衆向け商品ドライブは、一般に最高の信頼性を備えない理由から、記憶アレイの大部分のメーカは一般に最良の選択商品とは考えていない。例えば、トラック・スクイーズのような徐々に現れるエラーは、いずれの最新式ディスク・ドライブにおいても発生する可能性がある一方、高いトラック密度ならびにドライブ機構および電子部品のコスト制約の理由から、大衆向け商品ディスク・ドライブにおいてこのようなエラーは特に関係がある。個人的利用を目的とするＰＣ（パーソナル・コンピュータ）においては、ドライブへの標準的なアクセスが頻繁ではないため、エラーは性能にそれほど大きな影響を与えない。しかし、前述のようなファイル・サーバ等に使用される記憶アレイにおいては、ディスク・ドライブ・エラーの発生率を極めて小さく維持して、顧客のデータ損失を避けるのみでなく、ドライブ交換のための製品サポート・コストを抑制する必要がある。
【００１５】
トラック・スクイーズのようなエラーが深刻になって、回復不可能なデータ損失を生じる前に、通常このようなエラーを検出することにより、本発明は顧客データをこれらエラーから保護する。さらに、根底にある障害を実際に修復する訂正動作によって、本発明はディスク・ドライブの有効寿命を制限する要因、または現場におけるディスク・ドライブの故障率の要因であるトラック・スクイーズのようなエラーを効果的に除去する。根底にある障害を修復することはまた、エラーがＥＣＣまたは読出し再試行などの通常のディスク・ドライブ回復手法によってまだ回復できる場合に発生する性能損失を修復する。これらの利点により、サーバおよびネットワーク接続ストレージ（ＮＡＳ）・システムなどの高い可用性用途において、デスクトップＰＣ技術および高い製造効率を可能にする低コストの高密度ディスク・ドライブ（“大衆向け商品”ドライブ）を利用することが経済的に実現可能となる。
【００１６】
さらに、本発明は従来の工業標準ディスク・ドライブの特性にのみ依存する。したがって、特殊なエラー指示、カウンタ、または非標準ドライブ・コマンドを一切必要としない。さらに、本発明は検出および修復の両方を備え、これにより、今にも発生しそうな障害を除去する。本発明は、徐々に現れるエラーが回復不可能になる時点を遅らせて根底にある障害を訂正できない読出しエラー再試行手法の単なる向上には該当しない。
【００１７】
本発明の前述およびその他の目的、特徴、および利点は、添付図面に示す本発明の好ましい実施形態の以下の詳細な説明で明らかになるであろう。図面では、同一参照符号は異なる図面においても同一部品を指す。図面は必ずしも縮尺通りでなく、本発明の原理を示すことに重点が置かれている。
【発明を実施するための最良の形態】
【００１８】
以下に、本発明の好ましい実施形態について説明する。
【００１９】
図１はコンピュータ・システムを示し、このシステムは、例えばデスクトップまたはラップトップ・コンピュータなどのサーバ・システムまたはユーザ・ワークステーションである。ホストすなわちベース・コンピュータ１００（付属の記憶装置（ストレージ）を除くコンピュータ・システムの中央処理装置）は、記憶装置コントローラ１２０を接続している。記憶装置コントローラ１２０は単純なディスク・コントローラであってもよく、またはＲＡＩＤ（Redundant Array of Independent Disks）のような高度な記憶手法を組み込んでいてもよい。コンピュータ１００は相互接続１１０を介してコントローラ１２０に接続されている。相互接続１１０はＰＣＩ（Peripheral Component Interface）バスのようなシステム・バスであってもよく、またはファイバー・チャネルを基礎としたＳＡＮ（Storage Area Network）もしくはその他のＳＡＮ技術であってもよい。記憶装置コントローラ１２０はディスク・チャネル１３０を介して１つまたは複数のディスク・ドライブ１４０を接続している。ディスク・チャネルはＡＴＡ（Advanced Technology Attachment）、ＳＣＳＩ(Small Computer System Interface)、または他のディスク・インタフェースなどの任意の適切なディスク・ドライブ・インタフェースを備える。
【００２０】
以下に述べる手順は、コンピュータ１００、記憶装置コントローラ１２０、またはディスク・ドライブ１４０に含まれるドライブ電子機器１５０内に実装される。コンピュータ１００に実装される際には、一般に、この実装はオペレーティング・システムの一部であるか、またはこのコンピュータ１００にインストールされたデバイス・ドライバである。コンピュータ１００または記憶装置コントローラ１２０に実装される際には、コンピュータまたは記憶装置コントローラがＲＡＩＤフォールト・トレラント手法、データ・ミラーリングまたはデータ・バックアップなどの上位システム階層機能を含む場合、図７に示す回復手順が用いられる。ディスク・ドライブ１４０のドライブ電子機器１５０内に実装される際には、他の装置、例えば記憶装置コントローラ１２０に実装される上位層フォールト・トレラント手法と通信しないかぎり、一般に図６に示す回復手順が適用される。
【００２１】
さらに、以下に述べる手順が１つの構成要素の一部および別の構成要素の一部に実装される。例えば、図２〜図５に示される検出手順がディスク・ドライブ１４０に実装され、一方、図７に示す回復手法が記憶装置コントローラ１２０に実装される。
【００２２】
図２〜図５は、今にも発生しそうなデータ完全性エラー（今にも発生しそうなデータ損失）を検出する手順についての４つの異なる変形例のフローチャ−トである。
【００２３】
これらフローチャートのそれぞれにおいて、図示する手順は、今にも発生しそうなデータ・エラーの検出を行なう検出工程に加えて、システムの他の構成要素によって要求される実際のＩ／Ｏ動作を実行する。この工程の目的は、多くの場合、データ損失が実際に発生する前に、データ損失が発生する恐れがあることを指示できることである。その結果、損失の恐れがあるデータは一般にはまだ読出し可能で、かつ、このデータは修復手順に利用できる。ここに示す変形例のいくつかは、検出されるエラー・クラスの共通特性に依存している。すなわち、トラック・スクイーズのような徐々に現れるエラーの初期段階は通常のエラー回復手法を用いるディスク・ドライブによって回復可能であるが、これら手法は時間を要するので、ドライブの性能を観測することによって検出可能である。なお、これら技法はすべてのディスク・ドライブに適用でき、ディスク・ドライブの任意の一般的ではない、すなわちカスタマイズされたエラー・レポート能力にも依存しない。
【００２４】
図２は今にも発生しそうなデータ・エラーの検出手順を示しており、この手順はエラー検出手法にＩ／Ｏタイミング変化を利用する。この手順は、工程２１０において、システムの他の構成要素からのデータ読出しまたは書込み動作などのＩ／Ｏ要求を受け取ることによって始まる。工程２２０において、現在の時刻が記録される。次の工程２３０では、Ｉ／Ｏ要求が通常の方法によって、例えばＩ／Ｏコマンドをディスク・ドライブに送ることによって実行され、これにより、データ読出しまたは書込み動作が、例えば読取り／記録ヘッドを介してディスクの磁気媒体との間で発生する。この動作が完了すると、工程２４０では、Ｉ／Ｏを実行するのに必要とされた経過時間が計算される。工程２５０において、複数の連続するＩ／Ｏ要求からの計算された経過時間の値が統計分析されて、経過時間の変化が計算される。工程２６０において、計算された変化が設定しきい値と比較されて、予測される変化を超えているか否かが決定される。予測される変化は、ディスク・ドライブのメーカによって提供されるデータ、または製品設計もしくはディスク・ドライブ型式の容認の一環としてなされる測定から設定されている。観測された変化が設定されたしきい値を超えている場合、工程２７０において、手順は今にも発生しそうなデータ損失が検出されたことを指示する。観測された変化が設定されたしきい値を超えていてもいなくても、工程２８０においてＩ／Ｏ動作は完了する。
【００２５】
図３は、今にも発生しそうなデータ・エラーの検出手順を示しており、この手順は検出手法にディスク・ドライブＳＭＡＲＴ（Self-Monitoring, Analysis, and Reporting Technology）（自己管理解析報告機能）カウンタを用いる。このようなＳＭＡＲＴカウンタは一般に、最新商品のディスク・ドライブ１４０によって保持され、ドライブ電子機器１５０および／または記憶装置コントローラ１２０によって読み出される。この手順は、工程２１０において、システムの他の構成要素からのデータ読出しまたは書込み動作などのＩ／Ｏ要求を受け取ることによって始まる。工程２３０では、Ｉ／Ｏ要求が通常の方法で実行される。これが完了すると、工程３１０においてＳＭＡＲＴカウンタが取得される。工程３２０において、ディスク・ヘッド・リードチャネルにおけるリード・エラーの発生率（Raw Read Error Rate）のような適切なＳＭＡＲＴカウンタが、設定しきい値と比較される。設定しきい値は一般に、設計によって選択され、ディスク・ドライバのメーカによって供給される。カウンタ値がしきい値を超えている場合、工程２７０において、手順は今にも発生しそうなデータ損失が検出されたことを指示する。カウンタ値がしきい値を超えていてもいなくても、工程２８０においてＩ／Ｏ動作は完了する。
【００２６】
図４は今にも発生しそうなデータ・エラーの検出手順を示しており、この手順はエラー検出手法に予測されるスループットからのずれを利用する。この手順は、工程２１０において、システムの他の構成要素からのＩ／Ｏ要求を受け取ることによって始まる。工程２２０において、現在の時刻が記録される。次の工程２３０では、Ｉ／Ｏ要求が通常の方法によって実行される。この動作が完了すると、工程２４０では、Ｉ／Ｏを実行するのに必要とされた経過時間が計算される。工程４１０では、ディスク・ドライブの所定のトラックまたはトラックの一部に対する複数の連続するＩ／Ｏデータ要求から計算された経過時間値が統計分析されて、平均Ｉ／Ｏスループットが計算される。工程４２０において、計算されたスループットが設定しきい値と比較されて、予測される変化を超えているか否かが決定される。予測されるスループットは、ディスク・ドライブのメーカによって提供されるデータ、または製品設計もしくはディスク・ドライブ型式の容認の一環としてなされる測定から設定されている。これに関しては、以下の図１２Ａおよび図１２Ｂにおいて詳細に説明する。観測されたスループットが設定されたしきい値よりも低い場合、工程２７０において、手順は今にも発生しそうなデータ損失が、該当のトラックまたはトラックの一部に検出されたことを指示する。観測されたスループットが設定されたしきい値よりも低くても低くなくても、工程２８０においてＩ／Ｏ動作は完了する。
【００２７】
図５は今にも発生しそうなデータ・エラーの検出手順を示しており、この手順はエラー検出手法にＩ／ＯタイミングおよびＩ／Ｏ動作タイムアウトを利用する。この手順は、工程２１０において、システムの他の構成要素からＩ／Ｏ要求を受け取ることによって始まる。工程２２０において、現在の時刻が記録される。次の工程２３０では、Ｉ／Ｏ要求が通常の方法によって実行される。この動作が完了すると、工程２４０では、Ｉ／Ｏを実行するのに必要とされた経過時間が計算される。工程５１０では、この経過時間が設定しきい値と比較され、Ｉ／Ｏ動作の実行に必要とされる予測時間を超えているか否か、またはＩ／Ｏ動作がタイムアウトしているか否かが決定される。予測されるＩ／Ｏ待ち時間は、ディスク・ドライブのメーカによって提供されるデータ、または製品設計もしくはディスク・ドライブ型式の容認の一環としてなされる測定から設定されている。Ｉ／Ｏタイムアウトが発生している場合、または経過時間が設定しきい値を超えている場合、工程２７０において、手順は今にも発生しそうなデータ損失が検出されたことを指示する。Ｉ／Ｏタイムアウトが発生していてもいなくても、または経過時間が設定しきい値を超えていてもいなくても、工程２８０においてＩ／Ｏ動作は完了する。
【００２８】
図６および図７は、今にも発生しそうなデータ損失の指示に応答して訂正動作を実行する手順のフローチャートである。
【００２９】
これらの手順のそれぞれにおいて、訂正動作は今にも発生しそうなエラーの完全な修復に効果を発揮する。すなわち、ディスクの動作（該当のトラックまたはトラックの一部に対するディスクの動作）が、通常の性能における完全な正常動作に復元される。これによりいくつかの利点が生じる。第１に、徐々に現れるデータ完全性のエラーを、エラーが深刻になってデータの回復が不可能になる前に止められることである。第２に、前述の通り、徐々に現れるエラーによって引き起こされる一般的なディスク・ドライブ回復手法はＩ／Ｏ性能の実現に費用を要するが、エラーを除去することによる修復手順は、ドライバを完全な性能に復元する。“トラック・スクイーズ”エラーに適する訂正動作は、影響を及ぼされたトラックまたはトラックの一部に再度書き込む。現世代のディスク・ドライブについては一回の再度書込み動作で十分である。しかし、ここで説明する手順は一回の再度書込み動作に限定されず、ディスク・ドライブ技術が変化して変更が必要になる場合、他の回復手法（例えば、複数の再度書込み動作）を採用できる。さらに、回復手順は単一のトラックよりも大きい領域に再度書込みできる。これにより、トラック・スクイーズが複数の隣接するトラックで発生する場合、または１つのトラック上の検出可能なトラック・スクイーズがその領域の別のトラック上で近い将来のリスクがありうることを指示するほどのディスク・アクセス・パターンである場合に効果的に処理する。
【００３０】
図６においては、訂正手順は図２〜図５で先に示した手順のいずれかに従ってＩ／Ｏ要求６１０を実行することによって始まる。工程６２０では、手順は、Ｉ／Ｏ動作手順６１０が今にも発生しそうなデータ損失が検出されたことを指示したか否かをチェックする。検出されない場合、工程６８０において、Ｉ／Ｏ動作は完了する。今にも発生しそうなデータ損失が検出された場合、工程６３０において、Ｉ／Ｏ動作が読出し動作で、この動作が要求されたデータを正しく読み出したか否かを決定する。読み出せない場合（すなわち、Ｉ／Ｏ動作が読み出しではなかった場合、またはデータを正しく読み出せなかった場合）、工程６４０において、手順は読出し動作を実行する。この読出し動作６４０は通常のエラー回復手法に比べて拡張されており、データをディスク・ドライブから読み出しできる確率を最大化するために、例えば通常のタイムアウトよりもタイムアウトを長時間とする。工程６５０では、手順は、この読出し動作が正常に実行されたか否かをチェックする。正常に実行されない場合、工程６６０において、Ｉ／Ｏ動作が正常ではなく、訂正動作を実行できない、エラーとする。データが工程６３０または６５０のいずれかによって正常に読み出された場合、工程６７０において、取得したデータがディスクに戻して書き込まれる。この時点、つまり工程６８０において、Ｉ／Ｏ動作は完了し、正常に実行されたことになる。
【００３１】
図７は、ディスク・ドライブ１４０自体によって実行できるデータ回復手法よりも優れたデータ回復手法を含む記憶装置システムに組み込まれたＩ／Ｏ手順を示す。このようなデータ回復手法は、ＲＡＩＤ、またはデータ複製もしくはデータ・バックアップなどの他の手法を含むことができる。これらデータ回復手法はさらに、上位層メモリ・データに保持された情報（例えば、ＲＡＩＤメタデータ）からの要求に応じて必要なデータを復元できる手法、またはファイル・システムもしくはストレージ仮想化（論理ボリューム・マネージャ）システムの構造を制御する手法を含む。訂正手順は図２〜図５で先に示した手順のいずれかに従いＩ／Ｏ要求６１０を実行することによって始まる。工程６２０では、手順は、Ｉ／Ｏ動作手順６１０が今にも発生しそうなデータ損失が検出されたことを指示したか否かをチェックする。検出されていない場合、工程６８０において、Ｉ／Ｏ動作は完了する。今にも発生しそうなデータ損失が検出された場合、工程６３０において、Ｉ／Ｏ動作が読出し動作で、この動作が要求されたデータを正しく読み出したか否かを決定する。読み出せない場合（すなわち、Ｉ／Ｏ動作が読み出しではなかった場合、またはデータを正しく読み出せなかった場合）、工程６４０において、手順は読出し動作を実行する。この読出し動作６４０は通常のエラー回復手法に比べて拡張されており、データをディスク・ドライブから読み出しできる確率を最大化するために、例えば通常のタイムアウトよりもタイムアウトを長時間とする。工程６５０では、手順は、この読出し動作が正常に実行されたか否かをチェックする。正常に実行されない場合、工程７００において、手順は有効な上位層データ回復手法（例えばＲＡＩＤ）を用いて、ディスク・ドライブからの読み出しができなかったデータを復元する。データが工程６３０もしくは６５０のいずれかにおいて正常に読み出された場合、または上位層データ再構成工程７００によって正常に読み出された場合、工程７１０において、取得したデータがディスクに戻して書き込まれる。この時点、つまり工程６８０において、Ｉ／Ｏ動作は完了し、正常に実行されたことになる。
【００３２】
図８は、デバイス容認またはフォールト解析手順についてのフローチャートである。図示した手順は、製造ラインで用いられる納入ディスク・ドライブ・スクリーニング手順における工程の１つである。この手順はまた、欠陥の疑いのあるディスク・ドライブに適用されるフォールト解析手順における工程として用いられることもできる。
【００３３】
手順は、工程８１０において、エラー・カウンタを初期化することによって始まる。次に、工程８２０において、図２〜図５で示した手順のいずれかに従って読出し要求が実行される。この動作が完了すると、手順は、読出し手順８２０が今にも発生しそうなデータ損失を報告したか否かをチェックする。報告していた場合、工程８４０において、エラー・カウンタはインクリメントされ、工程８５０において、分かっている正常データが書き込まれて、今にも発生しそうなエラーは修復される。次の工程８６０では、ディスク走査が完了しているか否かをチェックする。完了していない場合、ディスク・ドライブ全体を走査することが必要であるため、手順は工程８２０〜８５０を繰り返す。走査が完了すると、工程８７０において、エラー・カウンタはしきい値と比較される。このしきい値は、設計または技術的方針によって、今にも発生しそうなデータ損失指示のいかなるレベルが現世代のディスク・ドライブにおける合格レベル、つまり正常であると考えられるかを決定して、これに基づいて設定されている。エラー・カウンタが設定しきい値を超えている場合、工程８９０において、そのディスク・ドライブは不合格とされる。エラー・カウンタが設定しきい値を超えていない場合、工程８８０において、そのディスク・ドライブは合格とされる。
【００３４】
図９〜図１１は、前述の手順を、オペレーティング・システムの記憶装置サブシステム、記憶装置コントローラ、またはディスク・ドライブＩ／Ｏ処理サブシステムの階層化構造に組み込む方法を示す。
【００３５】
図９において、検出および回復手順は、記憶装置を使用するユーザすなわちアプリケーション・プログラムからのＩ／Ｏ要求を処理する処理経路に組み込まれる。これらＩ／Ｏ要求は矢印９００で表される。これらＩ／Ｏ要求は、例えばオペレーティング・システム要求手法を介して、またはシステム・バスもしくはＳＡＮを通して伝達されるメッセージを介して、送出される。最下位の処理層９３０は従来のＩ／Ｏ処理層であり、例えばデバイス・ドライバである。層９３０の上の層には、今にも発生しそうなエラーを検出するエラー検出層（検出器）９２０があり、この層が図２〜図５に示す手順のいずれかを実装する。層９２０の上の層にはエラー回復層（データ書込み手段）９１０があり、この層は図６に示された手順（あるいは、図７の手順）を実装する。
【００３６】
図１０において、検出および回復手順はディスク表面走査手順１０００によって用いられる。この技法は、影響を及ぼされた領域が実際にユーザすなわちアプリケーション・プログラムによって参照されるときにこのような今にも発生しそうなエラーを検出することにのみ依存するのではなく、徐々に現れるエラーについてディスク・ドライブ（または全てのディスク・ドライブ）の全表面を走査するのが望ましいときに有効である。なお、両方の技法は単一のシステム内で組合せることができる。すなわち、図９の方法および図１０の方法の両方は、１つのシステム内で同時に存在できる。これにより、ユーザのＩ／Ｏ処理の間に検出されるエラーからのリアルタイム回復と、ディスク全体またはディスク・アレイのエラーについてのバックグラウンド走査との両方を実現する。
【００３７】
表面走査手順１０００は、例えばディスク・ドライブ全体またはディスク・ドライブ・アレイを走査する読出し要求を生成する。一般にこの手順は、アプリケーション性能に多大な影響を与えることを避けるために、システム負荷に応じるようになっている。これらＩ／Ｏ要求は下位層に伝えられる。最下位の処理層９３０は従来のＩ／Ｏ処理層、例えばデバイス・ドライバである。層９３０の上の層には、今にも発生しそうなエラーを検出するエラー検出層（検出器）９２０があり、この層が図２〜図５に示す手順のいずれかを実装する。層９２０の上の層にはエラー回復層（データ書込み手段）９１０があり、この層は図６に示された手順（あるいは、図７の手順）を実装する。
【００３８】
図１１は、ＲＡＩＤを実装している記憶装置システムに組み込まれた検出および回復手順の例を示す。最下位の処理層９３０は従来のＩ／Ｏ処理層であり、例えばデバイス・ドライバである。層９３０の上の層には、今にも発生しそうなエラーを検出するエラー検出層（検出器）９２０があり、この層が図２〜図５に示す手順のいずれかを実装する。層９２０の上の層にはＲＡＩＤサブシステム１１００がある。ＲＡＩＤサブシステム１１００内に回復手順（データ書込み手段）１１１０が含まれており、図７で述べた手順を実装する。回復手順が個々のディスク・ドライブからのデータを回復できない場合には、回復手順は、ＲＡＩＤの上位層の冗長手法を利用して損失データを復元する。この復元は、図７に示す通り、工程７００および工程７１０においてエラーを訂正する。
【００３９】
図１２Ａ〜図１２Ｂは、測定されたＩ／Ｏスループットがディスク・ブロック・アドレスに依存していることを示し、トラック・スクイーズのようなエラーによって影響を受けたスループットの例を示す。
【００４０】
グラフ１２００は、正常に機能するドライブについて測定されたＩ／Ｏスループットの典型的な例である。このグラフはＸ軸のディスク・ブロック・アドレスに対するＹ軸のスループットを示す。図に示す通り、スループットは全ブロック・アドレスに対して一定ではなく、ブロック・アドレスに従って明瞭になめらかに変化している。この理由は、最新のディスク・ドライブでは、トラック当たり（すなわち、ディスクの一回転当たり）のブロック数がトラックの円周に従って変化しているからである。このため、外側（長い）トラックに近い小さいブロック番号はディスク回転当たり多数のセクタがアクセスされることになる。所定のディスク・ドライブ・モデルについては、予測されるスループットのグラフ１２００は固定されており、ドライブ・メーカから提供されるデータ、またはシステム設計の間に測定されたデータもしくはドライブ型式の容認の一環として測定されたデータから知ることができる。
【００４１】
グラフ１２１０は、トラック・スクイーズのような徐々に現れるエラーによって生じるＩ／Ｏスループットの変化の例を示す。この例においては、グラフの領域１２２０は予測スループットよりも低く、正常でなめらかなグラフ１２００の対応する領域から大きくずれている。このずれが設計で設定されたしきい値を超えると、図４で述べた手順において、今にも発生しそうなデータ損失の指示として用いられる。
【００４２】
本発明を好ましい実施形態により図示し、詳細に説明してきたが、当業者には、添付の特許請求の範囲の請求項に包含される本発明の範囲から逸脱することなく、形態または細部にさまざまな変更を加えるのが可能であることは理解されるであろう。
【図面の簡単な説明】
【００４３】
【図１】ディスク記憶装置が接続されたコンピュータ・システムを示す図である。
【図２】Ｉ／Ｏタイミング変化の観測に基づいて今にも発生しそうなエラーを検出する手順を示すフローチャートである。
【図３】ＳＭＡＲＴエラー統計の観測に基づいて今にも発生しそうなエラーを検出する手順を示すフローチャートである。
【図４】連続するＩ／Ｏスループットの観測に基づいて今にも発生しそうなエラーを検出する手順を示すフローチャートである。
【図５】個々のＩ／Ｏタイミングの観測に基づいて今にも発生しそうなエラーを検出する手順を示すフローチャートである。
【図６】エラー修復手順の基本的方式を示すフローチャートである。
【図７】ＲＡＩＤのような上位層冗長手法が実装されているシステムにおけるエラー修復手順を示すフローチャートである。
【図８】今にも発生しそうなエラーの検出手順に基づくディスク・ドライブ容認手順または故障解析手順における工程を示すフローチャートである。
【図９】オペレーティング・システム、記憶装置システム、またはディスク・ドライブのユーザＩ／Ｏ処理経路における検出および修復手順の階層化を示す図である。
【図１０】オペレーティング・システム、記憶装置システム、またはディスク・ドライブの表面走査バックグラウンド手順における検出および修復手順の階層化を示す図である。
【図１１】ＲＡＩＤを実装しているオペレーティング・システムまたは記憶装置システムにおける検出および修復手順の階層化を示す図である。
【図１２Ａ】正常動作しているディスク・ドライブについてのディスク・ドライブ・ブロック・アドレスに対するＩ／Ｏスループットの例を示すグラフである。
【図１２Ｂ】トラック・スクイーズによって影響を及ぼされたディスク・ドライブについてのディスク・ドライブ・ブロック・アドレスに対するＩ／Ｏスループットの例を示すグラフである。
【符号の説明】
【００４４】
９２０  検出器
９１０  データ書込み手段
【図１】
2005322399.tif 000003
【図２】
2005322399.tif 000004
【図３】
2005322399.tif 000005
【図４】
2005322399.tif 000006
【図５】
2005322399.tif 000007
【図６】
2005322399.tif 000008
【図７】
2005322399.tif 000009
【図８】
2005322399.tif 000010
【図９】
2005322399.tif 000011
【図１０】
2005322399.tif 000012
【図１１】
2005322399.tif 000013
【図１２Ａ】
2005322399.tif 000014
【図１２Ｂ】
2005322399.tif 000015