(57)【要約】【課題】ディスク・ドライブ上の増加した媒体欠陥によって引き起こされる、ディスク・ドライブ上のデータの紛失の危険性を減らすためのＲＡＩＤアレイ中の自己修復システムを提供すること。【解決手段】増加した媒体欠陥は、ディスク・ドライブ上の放射状および螺旋状の傷を含む。ＲＡＩＤアレイのディスク・ドライブ上の第１の欠陥が位置決めされると、自己修復システムは、第１のディスク・ドライブ上の欠陥の周囲の隣接区域にあるどの追加の欠陥もただちに位置決めするために、第１のディスク・ドライブ上の欠陥の周囲の隣接区域を検査する。自己修復システムは、第１の欠陥に関連づけられたデータを、パリティを用いて復元し、次いで、どの追加の欠陥に関連づけられたデータもパリティを用いて復元する。これは、背景において実行することができ、ホストが顧客データにアクセスするのを妨げないようにする。その結果、自己修復システムは、その後でデータがＲＡＩＤアレイから読み出されるときに起こり得るシングル・ポイント障害を取り除くことができる。【選択図】図３
2004335087.tif 000002
【特許請求の範囲】
【請求項１】
マシンによって実行可能な命令からなるプログラムによって、ディスク・ドライブ上の欠陥を位置決めし、前記欠陥に関連づけられたデータを復元し再配置する方法を実施する、マシン可読なプログラム記憶装置であって、前記方法が、
前記ディスク・ドライブ上の欠陥の位置決めに応答して、前記ディスク・ドライブ上の前記欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定するステップと、
前記ディスク・ドライブ上の前記欠陥の位置決めに応答して、前記欠陥に関連づけられたデータを復元し、そうすることによって、復元されたデータを生成するステップと、
前記復元されたデータを格納するステップとを含むプログラム記憶装置。
【請求項２】
前記方法が、
前記ディスク・ドライブ上の前記欠陥の周囲の前記隣接区域内の追加の欠陥の位置決めに応答して、前記追加の欠陥に関連づけられたデータを復元し、そうすることによって、さらに復元されたデータを生成するステップと、
前記さらに復元されたデータを格納するステップとをさらに含む、請求項１に記載のプログラム記憶装置。
【請求項３】
前記欠陥が前記ディスク・ドライブのシリンダｎ上のセクタ・オフセットＳＯにあり、前記ディスク・ドライブ上の欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定するステップが、前記ディスク・ドライブのシリンダｎ＋１ならびにｎ−１上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査するステップを含む、請求項２に記載のプログラム記憶装置。
【請求項４】
前記ディスク・ドライブ上の欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定するステップが、前記ディスク・ドライブのシリンダｎ＋１ならびにｎ−１上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトの少なくとも１つに対応する１つまたは複数の位置にある、前記ディスク・ドライブ上の前記追加の欠陥の位置決めに応答して、シリンダｎ＋３ならびにｎ−３上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査するステップをさらに含む、請求項３に記載のプログラム記憶装置。
【請求項５】
前記ディスク・ドライブ上の欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定する前記ステップが、シリンダｎ＋３ならびにｎ−３上の前記セクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトに対応する１つまたは複数の位置にある、前記ディスク・ドライブ上の前記追加の欠陥を位置決めしないことに応答して、シリンダｎ＋２ならびにｎ−２上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査するステップをさらに含む、請求項４に記載のプログラム記憶装置。
【請求項６】
前記ディスク・ドライブ上の欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定する前記ステップが、シリンダｎ＋３ならびにｎ−３上の前記セクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトの少なくとも１つに対応する１つまたは複数の位置にある、前記ディスク・ドライブ上の前記追加の欠陥の位置決めに応答して、シリンダｎ＋５ならびにｎ−５上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査するステップをさらに含む、請求項５に記載のプログラム記憶装置。
【請求項７】
ある特定の数の前記追加の欠陥が前記ディスク・ドライブ上にあり、前記特定の数の前記追加の欠陥が所定の閾値以上のとき、前記復元されたデータを格納するステップおよび前記さらに復元されたデータを格納するステップがそれぞれ、前記復元されたデータおよび前記さらに復元されたデータを別の予備のディスク・ドライブ上に格納するステップを含む、請求項２に記載のプログラム記憶装置。
【請求項８】
ディスク・ドライブ上の欠陥の位置決めに応答して、前記ディスク・ドライブにおいて自己修復する方法であって、
前記ディスク・ドライブ上の前記欠陥の位置決めに応答して、前記ディスク・ドライブ上の前記欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定するステップと、
前記欠陥に関連づけられたデータを復元し、そうすることによって、復元されたデータを生成するステップと、
前記復元されたデータを格納するステップとを含む方法。
【請求項９】
前記ディスク・ドライブ上の前記欠陥の周囲の前記隣接区域内の追加の欠陥の位置決めに応答して、前記追加の欠陥に関連づけられたデータを復元し、そうすることによって、さらに復元されたデータを生成するステップと、
前記さらに復元されたデータを格納するステップとをさらに含む、請求項８に記載の方法。
【請求項１０】
前記欠陥が前記ディスク・ドライブのシリンダｎ上のセクタ・オフセットＳＯにあり、前記ディスク・ドライブ上の前記欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定する前記ステップが、前記ディスク・ドライブのシリンダｎ＋１ならびにｎ−１上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査するステップを含む、請求項９に記載の方法。
【請求項１１】
前記ディスク・ドライブ上の前記欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定する前記ステップが、前記ディスク・ドライブのシリンダｎ＋１ならびにｎ−１上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトの少なくとも１つに対応する１つまたは複数の位置にある、前記ディスク・ドライブ上の前記追加の欠陥の位置決めに応答して、シリンダｎ＋３ならびにｎ−３上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査するステップをさらに含む、請求項１０に記載の方法。
【請求項１２】
前記ディスク・ドライブ上の前記欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定する前記ステップが、前記ディスク・ドライブ上のシリンダｎ＋３ならびにｎ−３上の前記セクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトに対応する１つまたは複数の位置にある、前記ディスク・ドライブ上の前記追加の欠陥を位置決めしないことに応答して、シリンダｎ＋２ならびにｎ−２上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査するステップをさらに含む、請求項１１に記載の方法。
【請求項１３】
前記ディスク・ドライブ上の欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定する前記ステップが、前記ディスク・ドライブ上のシリンダｎ＋３ならびにｎ−３上の前記セクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトの少なくとも１つに対応する１つまたは複数の位置にある、前記ディスク・ドライブ上の前記追加の欠陥の位置決めに応答して、シリンダｎ＋５ならびにｎ−５上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査するステップをさらに含む、請求項１２に記載の方法。
【請求項１４】
ある特定の数の前記追加の欠陥が前記ディスク・ドライブ上にあり、前記特定の数の前記追加の欠陥が所定の閾値以上の場合、前記復元されたデータを格納するステップが、前記復元されたデータを別の予備のディスク・ドライブ上に格納するステップを含む、請求項８に記載の方法。
【請求項１５】
ある特定の数の前記追加の欠陥が前記ディスク・ドライブ上にあり、前記特定の数の前記追加の欠陥が所定の閾値以上のとき、前記さらに復元されたデータを格納するステップが、前記さらに復元されたデータを別の予備のディスク・ドライブ上に格納するステップを含む、請求項９に記載の方法。
【請求項１６】
複数のディスク・ドライブと、
前記複数のディスク・ドライブに動作可能に接続された記憶装置コントローラであって、前記複数の前記ディスク・ドライブの１つのディスク・ドライブ上にある欠陥を位置決めし、欠陥に関連づけられたデータを復元する動作を実施するようにプログラムされた記憶装置コントローラとを備える、データを格納し取り出すのに適合された記憶システムであって、前記動作が、
前記ディスク・ドライブ上の欠陥の位置決めに応答して、前記ディスク・ドライブ上の前記欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定すること、
前記ディスク・ドライブ上の前記欠陥の位置決めに応答して、前記欠陥に関連づけられたデータを復元し、そうすることによって、復元されたデータを生成すること、および
前記復元されたデータを格納することを含むシステム。
【請求項１７】
前記動作が、
前記ディスク・ドライブ上の前記欠陥の周囲の前記隣接区域内の追加の欠陥の位置決めに応答して、前記追加の欠陥に関連づけられたデータを復元し、そうすることによって、さらに復元されたデータを生成すること、および
前記さらに復元されたデータを格納することをさらに含む、請求項１６に記載のシステム。
【請求項１８】
前記欠陥が前記ディスク・ドライブのシリンダｎ上のセクタ・オフセットＳＯにあり、前記ディスク・ドライブ上の欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定することが、前記ディスク・ドライブのシリンダｎ＋１ならびにｎ−１上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査することを含む、請求項１７に記載のシステム。
【請求項１９】
前記ディスク・ドライブ上の欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定することが、前記ディスク・ドライブのシリンダｎ＋１ならびにｎ−１上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトの少なくとも１つに対応する１つまたは複数の位置にある、前記ディスク・ドライブ上の前記追加の欠陥の位置決めに応答して、シリンダｎ＋３ならびにｎ−３上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査することをさらに含む、請求項１８に記載のシステム。
【請求項２０】
前記ディスク・ドライブ上の欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定することが、シリンダｎ＋３とｎ−３上の前記セクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトに対応する１つまたは複数の位置にある、前記ディスク・ドライブ上の前記追加の欠陥を位置決めしないことに応答して、シリンダｎ＋２とｎ−２上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査すること、ならびに
シリンダｎ＋３とｎ−３上の前記セクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトの少なくとも１つに対応する１つまたは複数の位置にある、前記ディスク・ドライブ上の前記追加の欠陥の位置決めに応答して、シリンダｎ＋５とｎ−５上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査することをさらに含む、請求項１９に記載のシステム。
【請求項２１】
マシンによって実行可能な命令からなるプログラムによって、記憶装置上の欠陥を位置決めし、前記欠陥に関連づけられたデータを復元し再配置する方法を実施する、マシン可読なプログラム記憶装置であって、前記方法が、
前記記憶装置上の前記欠陥の周囲の隣接区域を検査して、追加の欠陥があるか判定するステップと、
前記欠陥に関連づけられたデータを復元し、そうすることによって、復元されたデータを生成するステップと、
前記復元されたデータを格納するステップとを含むプログラム記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶システム内の自己修復ディスク・ドライブを含む、データを格納し取り出すシステムに関する。
【背景技術】
【０００２】
コンピュータ・データ記憶装置ネットワークにおいて、ホスト・プロセッサは、通常、記憶サブシステムに接続される。記憶サブシステムは、記憶装置コントローラと、ＲＡＩＤ（レイド、Redundant Array of Inexpensive Disks）としてもＲＡＩＤディスク・ドライブ・アレイまたはディスク・ドライブ・アレイとしても知られる、複数の相互接続されたディスク・ドライブとを含むことができる。記憶装置コントローラは、１つまたは複数のプロセッサおよび１つまたは複数の装置アダプタを含むことができる。ホスト・プロセッサは、銀行出納係のコンピュータや、航空会社社員によって空港で操作されるコンピュータなどのワークステーションでもサーバでもよい。ホスト・プロセッサは、記憶装置コントローラのプロセッサに指示して、アダプタがディスク・ドライブ・アレイにデータを書き込み、ディスク・ドライブ・アレイからそのデータを読み出すよう命令する。たとえば、データ列がディスク・ドライブ・アレイに格納され、データ列は、そのアレイのメンバである所与のディスク・ドライブに格納されたデータ列のサブセクション（これ以降、第１のデータ列の第１のデータ列サブセクションと呼ぶ）を含む。ホスト・プロセッサは、記憶サブシステムの記憶装置コントローラがディスク・ドライブ・アレイから第１のデータ列を読み出すことを要求することができる。第１のデータ列がディスク・ドライブ・アレイから読み出されるとき、第１のデータ列は、第１のデータ列サブセクションに欠陥があるために不完全なものである場合がある。したがって、第１のデータ列は一時的に失われる。しかし、第１のデータ列の第１のデータ列サブセクションに関連づけられたデータは、やはりそのデータ列と共に格納されたパリティ情報を介して、復元し回復することができる。第１のデータ列の第１のデータ列サブセクションに関連づけられたデータが復元されると、ホストは、第１のデータ列の完全なバージョンを受け取ることができる。第１のデータ列サブセクションに関連づけられたデータが復元されると、復元された第１のデータ列サブセクションは、ディスク・ドライブ・アレイ中の所与のディスク・ドライブの新しい位置に再記憶される。
【０００３】
従来の記憶システムでは、ホスト・プロセッサによって要求されていた、第１のデータ列の第１のデータ列サブセクションに関連づけられたデータを復元し回復すること以外は行われない。ディスク・ドライブ・アレイの特定のディスク・ドライブ上に放射状または螺旋状の傷がある場合、この傷は、追加データ列の複数の追加データ列サブセクションに損傷を与える可能性がある。第１のデータ列の第１のデータ列サブセクションに関連づけられたデータを復元し回復するステップ以外は何も行われないので、追加データ列の追加データ列サブセクションに関連づけられたデータは、第１のデータ列の第１のデータ列サブセクションに関連づけられたデータが復元され回復されるとき、すぐには復元されず回復されない。
【０００４】
追加データ列の追加データ列サブセクションに関連づけられたデータは、第１のデータ列の第１のデータ列サブセクションに関連づけられたデータが復元され回復されたとき、すぐには復元されず回復されず、また、その後で追加データ列の１つがディスク・ドライブ・アレイから読み出されると、もし２つ以上の欠陥データ列サブセクションがその１つの追加データ列中にあるときは、シングル・ポイント障害がその１つの追加データ列に関連して起こる場合がある。
【０００５】
シングル・ポイント障害は、少なくとも２つの状況で起こり得る。すなわち、（１）ＲＡＩＤアレイ・ディスク・ドライブの１つがそれ以上応答せず、別のディスク・ドライブがデータ列サブセクション中のハード読み出しエラーにつながる媒体の欠陥、たとえば媒体の傷を有し、または（２）ＲＡＩＤアレイ中の２つのドライブが、所与のデータ列に対するそのそれぞれのデータ列サブセクション中に位置する欠陥を有する場合である。どちらの状況でも、ＲＡＩＤパリティ情報は、紛失したデータ列サブセクションを回復するにはもはや不十分である。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
したがって、ディスク・ドライブ・アレイの特定のディスク・ドライブ上の第１の欠陥データ列サブセクションに関連づけられたデータが位置決めされて、復元され回復されるとき、追加の欠陥、たとえば追加データ列の追加の欠陥データ列サブセクションを位置決めするために、ディスク・ドライブ・アレイの特定のディスク・ドライブ上の第１の欠陥データ列サブセクションの周囲の隣接区域をただちに検査すること、および第１の欠陥データ列サブセクションに関連づけられたデータに加えて追加の欠陥データ列サブセクションに関連づけられたデータをただちに復元し回復することが必要である。この動作は、追加データ列が記憶サブシステムのＲＡＩＤディスク・ドライブ・アレイから引き続き読み出されるときに、シングル・ポイント障害の発生を回避するために必要である。
【課題を解決するための手段】
【０００７】
本発明の一実施形態では、マシンによって実行可能な命令からなるプログラムを明確に具体化して、ディスク・ドライブ上の欠陥を位置決めし、その欠陥に関連づけられたデータを位置決めして復元し再配置する方法を実施する、マシン可読なプログラム記憶装置において、前記方法が、前記ディスク・ドライブ上の前記欠陥の位置決めに応答して、前記ディスク・ドライブ上の欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定すること、前記ディスク・ドライブ上の前記欠陥の位置決めに応答して、前記欠陥に関連づけられたデータを復元し、そうすることによって、復元されたデータを生成すること、および前記復元されたデータを格納することを含む。
【０００８】
本発明は、ディスク・ドライブ上の欠陥の位置決めに応答してディスク・ドライブを自己修復する記憶システムおよび方法をさらに含み、このシステムおよび方法は、ディスク・ドライブ上の欠陥の位置決めに応答して、ディスク・ドライブ上の欠陥の周囲の隣接区域を検査して、ディスク・ドライブ上に追加の欠陥があるか判定すること、欠陥に関連づけられたデータを復元し、そうすることによって復元されたデータを生成すること、および復元されたデータを再記憶することを含む。
【０００９】
本発明のさらなる適用範囲は、これ以降提示される詳細な説明から明らかになるであろう。ただし、詳細な説明および具体的な例は、本発明の好ましい実施形態を表しはするが、説明のために過ぎないことを理解されたい。というのは、以下の詳細な説明を読むことにより、本発明の精神および範囲内での様々な変更および修正が当業者には明らかになるからである。
【００１０】
ここで図面を参照すると、同じ参照番号は、全体を通して対応する部分を表す。
【発明を実施するための最良の形態】
【００１１】
以下の本発明の好ましい実施形態の説明では、本発明の一部をなす添付の図面を参照し、本発明を実行することができる特定の実施形態を説明のために示す。本発明の範囲から逸脱することなく構造上の変更を加えることができるので、他の実施形態も使用できることを理解されたい。
【００１２】
本発明の一実施形態では、ＲＡＩＤアレイのディスク・ドライブ上の欠陥が位置決めされると、ディスク・ドライブ上の欠陥を取り囲む追加の欠陥を位置決めするために、ディスク・ドライブ上の欠陥の周囲の隣接区域が検査される。欠陥および追加の欠陥両方に関連づけられたデータは、パリティを用いて復元され再配置される。その結果、本発明による自己修復システムは、ディスク・ドライブ上の放射状および螺旋状の傷など、ディスク・ドライブ上の媒体の欠陥が増加することによって引き起こされる、ディスク・ドライブまたはＲＡＩＤアレイ上のデータの紛失を回避することができ、自己修復システムは、起こり得るシングル・ポイント障害が露呈されないようにする。
【００１３】
記憶装置コントローラのアダプタがＲＡＩＤアレイのディスク・ドライブにデータ列を書き込むとき、および、その後でそのデータ列がアダプタによってディスク・ドライブから読み出されるとき、そのデータ列のある特定のデータ列サブセクションは、ディスク・ドライブから正しく読み出されない場合がある。というのは、そのデータ列のその特定のデータ列サブセクションを格納するディスク・ドライブ中のセクタに欠陥があるからである（これ以降、この特定のデータ列サブセクションを、欠陥データ列サブセクションと呼ぶ）。ただし、欠陥データ列サブセクションに関連づけられたデータは、復元し回復することができる。そのデータ列は、欠陥データ列サブセクションおよびパリティを含む、複数のサブセクションを含む。パリティ情報は、欠陥データ列サブセクションに関連づけられたデータを復元し回復するのに使われる。アダプタは、ＲＡＩＤ回復方法を使って、欠陥データ列サブセクションに関連づけられたデータを復元し、そのデータをより安全な位置、たとえば対象ディスク・ドライブまたは予備のディスク・ドライブ上の別の位置に再配置することができる。次いで、復元されたデータ列は、ＲＡＩＤアレイのディスク・ドライブまたは予備のディスク・ドライブ上の新しい位置に格納され、この新しい位置は、ディスク・ドライブ・ディレクトリ、たとえばファイル割振りテーブルによって提供される新しいアドレスを有する。本発明の一実施形態では、記憶装置コントローラは、欠陥データ列サブセクションの近くに位置する可能性のある他の追加の欠陥データ列サブセクションを位置決めするために、欠陥データ列サブセクションの周囲の隣接区域をただちに検査する。自己修復処理は、ホストによる顧客データへのアクセスを妨げないように、背景において実行することができる。
【００１４】
放射状または螺旋状の傷がＲＡＩＤアレイのディスク・ドライブ上にある場合、他の欠陥データ列サブセクションは、その欠陥データ列サブセクションの隣にある。欠陥データ列サブセクションに関連づけられたデータに加えて、他の欠陥データ列サブセクションに関連づけられたデータをただちにかつ同時に復元することにより、シングル・ポイント障害の危険が減る。本発明の一実施形態では、記憶装置コントローラは、（シリンダＮおよびセクタ・オフセットＳＯの所で位置決めされる）欠陥データ列サブセクションの周囲の隣接区域をただちに検査する。この検査では、欠陥データ列サブセクションの周囲の交互隣接シリンダ中の他のどの欠陥データ列サブセクション（たとえば、セクタ・オフセットＳＯ、ＳＯ＋１バイトならびにＳＯ−１バイトの所のシリンダＮ＋１およびＮ−１、Ｎ＋３およびＮ−３、Ｎ＋５およびＮ−５、など）を最初に検査し、外側にあるシリンダ中の非欠陥データ列サブセクションが位置決めされるまで検査する。この位置決めされた非欠陥データ列サブセクションにおいて、記憶装置コントローラは次いで、欠陥データ列サブセクションと非欠陥データ列サブセクションの間に配列された、スキップされたシリンダ中の他の欠陥データ列サブセクションに関連づけられたデータを復元する。外側にあるシリンダ中の非欠陥データ列サブセクションに関連づけられたシリンダの数がＭ（ユーザによって設定される数）以上の場合、ディスク・ドライブ・アレイの局所的な区域にあまりにも多くの欠陥データ列サブセクションがあるので、記憶装置コントローラは、対象ディスク・ドライブが予備のディスク・ドライブで置き換えられるべきか判定する。その結果、記憶装置コントローラは、以下のことを行う。（１）ＲＡＩＤアレイの疑わしいディスク・ドライブ・メンバによって報告された欠陥を取り囲む隣接区域をただちに検査する。（２）こうした隣接区域に追加の欠陥があるか判定する、（３）新しく報告された欠陥の近接度をディスク・ドライブのｐ−リストおよびｇ−リスト中の既知の欠陥と比較する。（４）必要な自己修復の量が多すぎると判明した場合、疑わしいドライブを予備で置き換えまたはバックアップとしてコピーする。自己修復の量は、カウンタ中のカウントが所定の値以上のとき、多すぎるとされ、カウントは、ＲＡＩＤアレイ中の特定のディスク・ドライブに対して自己修復が要求された回数を表す。（５）欠陥に関連づけられたデータを復元し、そうすることによって復元されたデータを作成し、かつ、追加の欠陥に関連づけられたデータを復元し、そうすることによってＲＡＩＤパリティを用いてさらに復元されたデータを作成する。（６）ディスク・ドライブまたは予備のディスク・ドライブのいずれかの上のより信頼できる位置に、復元されたデータおよびさらに復元されたデータを再配置する。本発明の他の実施形態では、上記において、ただちに行われると説明した動作は、遅れる場合がある。本発明の上述の態様は、以下の段落で詳細に説明する。
【００１５】
図１を参照すると、１つまたは複数のホスト・プロセッサ１０が、記憶サブシステム１１に動作可能に接続される。ホスト１０は、銀行の出納係に操作される銀行の現金自動預入支払機（ＡＴＭ）またはコンピュータ端末や、航空会社社員に操作される空港のコンピュータ端末など、ワークステーションでも、サーバでも、パーソナル・コンピュータでもよい。記憶サブシステム１１は、相互接続された数マイル（１マイル＝１，６０９ｍ）の長距離ケーブル布線を介して、ホスト１０に動作可能に接続することができる。記憶サブシステム１１は、記憶装置コントローラおよびメモリを含み、記憶装置コントローラは、メモリ中のデータ記憶を制御する。ホスト１０は、記憶サブシステム１１のメモリに格納されたデータの受取りを要求することができる。これに応答して、記憶サブシステム１１の記憶装置コントローラは、メモリからデータを取り出し、要求されたデータをホスト１０に提供する。読出し動作の間、メモリがホストから要求されたデータを有していない場合、サブシステムは、適切なディスク・ドライブからこのデータを読み出し、それをメモリに格納する。さらに、ホスト１０は、その特定のデータが記憶サブシステム１１のメモリに格納されることを要求することができる。これに応答して、記憶サブシステム１１の記憶装置コントローラは、そのデータをホスト１０から受け取り、そのデータをメモリに格納する。書込み動作の間、データがメモリに格納された後で、サブシステムは、このデータをメモリからディスク・ドライブ上にデステージする。
【００１６】
図２を参照すると、１つまたは複数のホスト・プロセッサ１０が、長距離ケーブル布線３８を介して記憶サブシステム１１に動作可能に接続される。記憶サブシステム１１は、記憶装置コントローラ１２、および記憶装置コントローラ１２に動作可能に接続される、ＲＡＩＤ（Redundant Array of Inexpensive Disks）２６（これ以降、ＲＡＩＤアレイ２６と呼ぶ）を含むメモリ２６を含む。ＲＡＩＤアレイ２６は、第１のディスク・ドライブ２８、第２のディスク・ドライブ３０、第３のディスク・ドライブ３２、第（ｎ−１）のディスク・ドライブ３４、および第ｎのディスク・ドライブ３６を含む。一実施形態では、ディスク・ドライブは、磁気記録ディスク・ドライブを含む。代替実施形態では、ディスク・ドライブは、光ディスク・ドライブを含むことも、データを記録する他の機構を用いるディスク・ドライブを含むこともできる。本発明は、他の形の記憶装置で実装することもできる。記憶装置コントローラ１２は、１つまたは複数のプロセッサ２２と、プロセッサ２２およびＲＡＩＤアレイ２６に動作可能に接続された１つまたは複数の装置アダプタ２４とを含む。
【００１７】
図３を参照すると、図２の記憶サブシステム１１の記憶装置コントローラ１２のプロセッサ２２は、第１のプロセッサ「プロセッサ１」２２ａおよび第２のプロセッサ「プロセッサ２」２２ｂを含み、このプロセッサは両方ともシステム・バスに接続される。図２の記憶装置コントローラ１２の装置アダプタ２４は、第１のアダプタ２４ａ、第２のアダプタ２４ｂ、第３のアダプタ２４ｃ、および第４のアダプタ２４ｄを含み、アダプタはすべてシステム・バスに接続される。さらに、ＲＡＩＤアレイ２６は、第１のディスク・ドライブ２８、第２のディスク・ドライブ３０、第３のディスク・ドライブ３２、第（ｎ−１）のディスク・ドライブ３４、および第ｎのディスク・ドライブ３６を含み、ディスク・ドライブはすべてシステム・バスに接続される。
【００１８】
図３において、ホスト１０は、ＲＡＩＤアレイ２６にデータ列を格納することができ、このデータ列の第１のデータ列サブセクションは第１のディスク・ドライブ２８に格納され、データ列の第２のデータ列サブセクションは第２のディスク・ドライブ３０に格納され、データ列の第３のデータ列サブセクションは第３のディスク・ドライブ３２に格納され、データ列の第（ｎ−１）のデータ列サブセクションは第（ｎ−１）のディスク・ドライブ３４に格納され、データ列の第ｎのデータ列サブセクションは第ｎのディスク・ドライブ３６に格納される。一方で、ホスト・プロセッサ１０は、データ列がＲＡＩＤアレイ２６から取り出されることを要求することができ、データ列の第１のデータ列サブセクションは第１のディスク・ドライブ２８から取り出され、データ列の第２のデータ列サブセクションは第２のディスク・ドライブ３０から取り出され、データ列の第３のデータ列サブセクションは第３のディスク・ドライブ３２から取り出され、データ列の第（ｎ−１）のデータ列サブセクションは第（ｎ−１）のディスク・ドライブ３４から取り出され、データ列の第ｎのデータ列サブセクションは第ｎのディスク・ドライブ３６から取り出される。データ列が図３のＲＡＩＤアレイ２６に格納されまたはそこから取り出されると、記憶装置コントローラ１２のプロセッサ２２ａまたは２２ｂあるいはその両方は、ホスト１０からの命令に応答して、装置アダプタ２４ａ〜２４ｄの１つまたは複数に対して、データ列をディスク・ドライブ２８〜３６に格納するよう、またはデータ列をそこから取り出すよう、さらに命令する。
【００１９】
図４を参照すると、好ましい実施形態によれば、記憶装置コントローラ１２は、プロセッサ２２および装置アダプタ２４を含む。ただし、装置アダプタ２４は、本発明による自己修復ソフトウェア・モジュール４２をさらに含む。本発明の実施形態では、図３のディスク・ドライブ２８、３０、３２、３４または３６の１つに格納された欠陥データ列サブセクションを位置決めすると、アダプタ２４はただちに、欠陥データ列サブセクションに関連づけられたデータを復元し、そうすることによって復元されたデータ列サブセクションを作成し、復元されたデータ列サブセクションをバッファに格納し、カウンタを増分させ、ディスク・ドライブ・ディレクトリを更新し、欠陥データ列サブセクションに対応する復元されたデータ列サブセクションを、ディスク・ドライブ・ディレクトリによって提供された新しいアドレスに従って、同じディスク・ドライブ、または予備もしくはバックアップ用ディスク・ドライブいずれかの新しい動作可能なセクタに再記憶する。復元されたデータ列サブセクションを含むデータ列がそのディスク・ドライブから取り出されると、データ列はここで、復元されたデータ列サブセクションを含むことになる。ディスク・ドライブ上の欠陥の周囲の隣接区域を検査してディスク・ドライブ上の追加の欠陥を位置決めし、欠陥に関連づけられたデータを復元し、追加の欠陥に関連づけられたデータを復元するこの処理は、以下で説明する。
【００２０】
図５および６を参照すると、別の方法では、本発明の自己修復ソフトウェア４２は、図５に示すように、記憶装置コントローラ１２の可読性および保守性（ＲＡＳ）機能４０の中に組み込むことができる。あるいは、本発明の自己修復ソフトウェア４２は、図６に示すように、ディスク・ドライブ自体、たとえばディスク・ドライブ２８、３０、３２、３４、および３６の１つの中に組み込むこともできる。別の方法では、本発明の自己修復ソフトウェア４２は、上述した機器、すなわち、装置アダプタ２４、ＲＡＳ機能４０、およびディスク・ドライブ２８〜３６の３つすべての間に振り分けることもできる。本明細書で使用する自己修復ソフトウェアという用語は、たとえばマイクロコードを含む。
【００２１】
図７を参照すると、たとえば、ホスト１０は、記憶サブシステム１１の記憶装置コントローラ１２に、ＲＡＩＤアレイ２６にデータ列を格納するよう命令する。これに応答して、記憶装置コントローラ１２のプロセッサ２２は、装置アダプタ２４に対して、図３のディスク・ドライブ２８〜３６にデータ列を格納するよう命令する。図７において、データ列をこれ以降、データ列４６〜５２と呼ぶ。データ列４６〜５２は、３つのデータ列サブセクション４６、４８、および５０、さらにパリティ５２から構成される。図７において、第１のデータ列サブセクション４６はディスク・ドライブＡに格納され、第２のデータ列サブセクション４８はディスク・ドライブＢに格納され、第３のデータ列サブセクション５０はディスク・ドライブＣに格納され、パリティ５２はドライブＤに格納される。ディスク・ドライブＢは、傷４４を有する。傷４４は、第２のデータ列サブセクション４８全体に配置される。すなわち、第２のデータ列サブセクション４８は、傷４４の中に含まれる。その結果、第２のデータ列サブセクション４８が格納されているディスク・ドライブＢ内のセクタに欠陥があるので、第２のデータ列サブセクション４８には欠陥がある（これ以降、欠陥データ列サブセクション４８と呼ぶ）。したがって、記憶サブシステム１１の記憶装置コントローラ１２がメモリからデータ列４６〜５２を取り出すことをホスト１０が要求すると、記憶装置コントローラ１２のプロセッサ２２は、装置アダプタ２４に図７のＲＡＩＤディスク・ドライブＡ、Ｂ、Ｃ、およびＤからデータ列４６〜５２を取り出すよう命令する。これに応答して、装置アダプタ２４が図７のディスク・ドライブＡ、Ｂ、Ｃ、およびＤからデータ列４６〜５２を取り出すと、アダプタは、ディスク・ドライブＡから第１のデータ列サブセクション４６を、ディスク・ドライブＢから欠陥データ列サブセクション４８を、ディスク・ドライブＣから第３のデータ列サブセクション５０を、ディスク・ドライブＤからパリティ５２を受け取る。
【００２２】
アダプタ２４がディスク・ドライブＢから欠陥データ列サブセクション４８を受け取ると、アダプタ２４は、欠陥データ列サブセクションに関連づけられたデータ４８を復元し始める。欠陥データ列サブセクションに関連づけられたデータ４８は、たとえば公知のＲＡＩＤデータ回復技術を用いて復元される（これ以降、復元されたデータ列サブセクション４８と呼ぶ）。復元されたデータ列サブセクション４８は、バッファ５４に配置され、カウンタ５６中のカウントは１だけ増分される。カウンタ５６は、特定のディスク・ドライブに対する欠陥の数を記憶する。ディスク・ドライブＢに対する欠陥の数に対応するカウンタ５６中のカウントは、１だけ増分される。アダプタ２４は、ディスク・ドライブ・ディレクトリ５８を調べて、復元されたデータ列サブセクション４８用の新しいディスク・ドライブ・アドレスを位置決めする。ディスク・ドライブ・ディレクトリ５８は、復元されたデータ列サブセクション４８用の新しいディスク・ドライブ・アドレス位置を記録するように更新される。復元されたデータ列サブセクション４８用の、ディスク・ドライブＢ上の位置は次いで、アダプタ２４がディスク・ドライブ・ディレクトリ５８から利用することができるようになる。復元されたデータ列サブセクション４８（現在、バッファ５４にある）は次いで、ディスク・ドライブＢ上の新しいディスク・ドライブ・アドレス６０の所に格納される。ディスク・ドライブＢ上の復元されたデータ列サブセクション４８用の新しいディスク・ドライブ・アドレスは、要素６０によって表される。したがって、欠陥データ列サブセクションに関連づけられたデータ４８は復元されており、バッファ５４中の復元されたデータ列サブセクションは、ディスク・ドライブＢ上の位置アドレス６０に再記憶される。こうすることにより、欠陥データ列サブセクション４８のデータ回復が完了する。
【００２３】
データ列サブセクション６４も、ディスク・ドライブＢ上にある。第２のデータ列サブセクション４８は傷４４の中に含まれており、データ列サブセクション６４も傷４４の中に含まれる。したがって、データ列サブセクション６４も、欠陥データ列サブセクションである。データ列サブセクション６４は、第２のデータ列サブセクション４８の隣に配置されている。欠陥データ列サブセクション６４が復元されないと、シングル・ポイント障害が露呈される場合がある。たとえば、ディスク・ドライブＡ上のデータ列サブセクション６２にも欠陥があり、ホスト１０が、記憶装置コントローラ１２がディスク・ドライブＡ、Ｂ、Ｃ、およびＤからデータ列６２〜６８を取り出すことを要求すると仮定する。データ列６２〜６８がディスク・ドライブＡ、Ｂ、Ｃ、およびＤから取り出されると、第１の欠陥データ列サブセクション６２はドライブＡから取り出され、第２の欠陥データ列サブセクション６４はドライブＢから取り出され、第３のデータ列サブセクション６６はドライブＣから取り出され、パリティ情報６８はドライブＤから取り出される。データ列６２〜６８中に２つの欠陥データ列サブセクションがある（第１の欠陥データ列サブセクション６２および第２の欠陥データ列サブセクション６４）ために、シングル・ポイント障害が起きたのである。シングル・ポイント障害が起こる場合は常に、２つ以上の欠陥データ列サブセクションがデータ列に存在する。データ列６２〜６８中に２つの欠陥データ列サブセクションが存在する（第１の欠陥データ列サブセクション６２および第２の欠陥データ列サブセクション６４）ので、その結果、シングル・ポイント障害が起こることになり、データ列サブセクション６２および６４中の２つの欠陥は、従来の技術を用いては復元されない。この結果、データ列６２〜６８の紛失が起こり得る。ただし、欠陥データ列サブセクション４８に関連づけられたデータが復元されたときに（ディスク・ドライブＢ上の欠陥データ列サブセクション４８の隣に位置する）欠陥データ列サブセクション６４に関連づけられたデータが復元されると、それによってシングル・ポイント障害が避けられる。
【００２４】
図８、９、および１０を参照すると、本発明の一実施形態による自己修復方法のフロー図を示してある。図８を参照すると、動作４２ａで、欠陥データ列サブセクションが位置決めされると、ディスク・ドライブ内の欠陥データ列サブセクションを取り囲む隣接区域をただちに検査して、隣接区域内の追加の欠陥データ列サブセクションを位置決めする。さらに、動作４２ｂで、欠陥データ列サブセクションを取り囲む隣接区域に追加の欠陥データ列サブセクションがあるか判定する。
【００２５】
たとえば、図７を参照すると、ディスク・ドライブＢ内で欠陥データ列サブセクション４８が位置決めされると、欠陥データ列サブセクション４８の周囲の隣接区域をただちに検査し、隣接区域内に追加の欠陥データ列サブセクションがあるか判定する。欠陥データ列サブセクション４８がシリンダ７０上で位置決めされる。シリンダ７０の欠陥データ列サブセクション４８の周囲の隣接区域は、（少なくとも）シリンダ７０の隣に配置されているシリンダ、たとえばシリンダ７２である。図７において、データ列サブセクション６４が、隣接シリンダ７２上で位置決めされる。したがって、シリンダ７０の欠陥データ列サブセクション４８の周囲の隣接区域を検査すると、シリンダ７２はシリンダ７０に隣接するので、シリンダ７２上にあるデータ列サブセクション６４など、シリンダ７２上にあるどのデータ列サブセクションも検査する。次に、シリンダ７０の欠陥データ列サブセクション４８を取り囲む隣接区域に追加の欠陥データ列サブセクションがあるか判定する。シリンダ７２上のデータ列サブセクション６４はシリンダ７０の欠陥データ列サブセクション４８の周囲の隣接区域にあるので、シリンダ７２上のデータ列サブセクション６４に欠陥があるかただちに判定する（この動作は、背景で行うことができ、ホスト１０が顧客データへのアクセスを妨げられないようにする）。たとえば、シリンダ７２上のデータ列サブセクション６４の位置への書込みを実施し、その後にそこからの読出しが続く。この動作は、データ列サブセクション６４に欠陥があるか判定する。図８の動作４２ａおよび４２ｂが実行されると、シングル・ポイント障害を回避することができる。動作４２ａは、図１１、１２、１３、および１４を参照して、以下で詳細に説明する。
【００２６】
図８において、動作４２ｃを参照する。ディスク・ドライブ上の欠陥データ列サブセクションおよび追加の欠陥データ列サブセクションの位置を、ディスク・ドライブのｐ−リストおよびｇ−リスト中の既知の欠陥の位置と比較する。
【００２７】
図７において、シリンダ７０上の欠陥データ列サブセクション４８の位置およびシリンダ７２上の追加の欠陥データ列サブセクション６４の位置を、ディスク・ドライブのｐ−リストおよびｇ−リストと比較する。ｐ−リストは、図７におけるドライブＢなどのディスク・ドライブ上の、製造者によってディスク上の欠陥を含む位置と識別された位置のリストである。ｐ−リストは、製造者によってディスクの製造中およびその後に生成される。ｇ−リストはさらに、図７におけるドライブＢなどのディスク・ドライブ上の、アダプタ２４によって生成され、ディスク上の欠陥のある位置をさらに反映する位置のリストである。アダプタ２４がディスク・ドライブ上の第１の欠陥データ列サブセクションを位置決めすると、アダプタは、ディスク・ドライブ上のそのアドレスをｇ−リスト上のその第１の欠陥データ列サブセクションに配置する。ディスク・ドライブ上の第２の欠陥データ列サブセクションが位置決めされると常に、アダプタ２４は、そのアドレスを、ｇ−リストにおけるその第２の欠陥データ列サブセクションのディスク・ドライブ上に置く。図７におけるシリンダ７０上の第１の欠陥データ列サブセクション４８の第１のアドレス位置および図７のシリンダ７２上の第２の欠陥データ列サブセクション６４の第２のアドレス位置は、アダプタ２４によって、ｐ−リストおよびｇ−リスト中のアドレス位置に対して比較される。第１の欠陥データ列サブセクション４８および第２の欠陥データ列サブセクション６４の第１および第２のアドレス位置がｐ−リストおよびｇ−リスト中の他の欠陥データ列サブセクションの位置に近い場合、アダプタ２４は、ディスク・ドライブが予備で置き換えられるべきかどうか検討する。
【００２８】
図８において、動作４２ｄを参照する。欠陥データ列サブセクションおよび追加の欠陥データ列サブセクションを表す数をカウンタに足して、カウンタ中のカウントが所定の閾値以上であるか判定し、この結果をアダプタに報告し、カウンタ中のカウントが所定の閾値以上のとき、自己修復の量が多すぎるとアダプタが決定することによって、欠陥データ列サブセクションおよび追加の欠陥データ列サブセクション両方に関連づけられたデータを復元するのに必要とされる自己修復の量が多すぎるか判定する。
【００２９】
図７において、シリンダ７０上の欠陥データ列サブセクション４８が位置決めされると、カウンタ５６中のカウントが増分される。欠陥データ列サブセクション４８の周囲の隣接区域、たとえば隣接するシリンダ７２をただちに検査する。データ列サブセクション６４に欠陥があるとわかった場合、カウンタ５６中のカウントをさらに増分させる。図２において、装置アダプタ２４は、カウンタ５６中のカウントを調べる。カウンタ５６中のカウントが所定の閾値以上のとき、ディスク・ドライブの局所的な区域にあまりにも多くの欠陥があるので、アダプタ２４は、ディスク・ドライブを予備のディスク・ドライブで置き換える。
【００３０】
図９の動作４２ｅにおいて、自己修復の量がアダプタによって多すぎると判定されると、元のディスク・ドライブを新しい予備のディスク・ドライブ、またはバックアップ用ディスク・ドライブで置き換える。たとえば、図７を参照すると、カウンタ５６中のカウントが所定の閾値以上のとき、ディスク・ドライブＢはディスクの局所的な区域にあまりにも多くの欠陥を有しているので、アダプタ２４はここで、ディスク・ドライブＢの自己修復量が多すぎると判定することができる。したがって、ディスク・ドライブＢを予備の新しいディスク・ドライブで置き換えることが必要である。これを行う前に、ディスク・ドライブ・ディレクトリ５８を更新することが必要になる。すなわち、ディスク・ドライブ・ディレクトリ５８中の、ディスク・ドライブＢ上のすべてのデータのアドレスは、予備のディスク・ドライブ上のその新しい位置を反映するように変更されなければならない。
【００３１】
図９の動作４２ｆにおいて、欠陥データ列サブセクションに関連づけられたデータをただちに復元することによって、復元されたデータ列サブセクションを生成し、追加の欠陥データ列サブセクションに関連づけられたデータをただちに復元することによって、ＲＡＩＤ回復ソフトウェアを用いてさらに復元されたデータ列サブセクションを生成する。動作４２ｇで、復元されたデータ列サブセクションおよびさらに復元されたデータ列サブセクションをバッファに格納し、カウンタを更新する。動作４２ｈで、復元されたデータ列サブセクション用の第１の新しいディスク・ドライブ・アドレスをディスク・ドライブ・ディレクトリ５８に記録することによって、また、さらに復元されたデータ列サブセクション用の１つまたは複数の追加の新しいディスク・ドライブ・アドレスをディスク・ドライブ・ディレクトリ５８に記録することによって、ディスク・ドライブ・ディレクトリ５８を更新する。図１０の動作４２ｉで、自己修復の量がアダプタ２４によって多すぎると判定されると、新しい予備のまたはバックアップ用のディスク・ドライブの第１の新しいディスク・ドライブ・アドレスの所に、復元されたデータ列サブセクションを格納し、自己修復の量がアダプタ２４によって多すぎると判定されると、新しい予備のまたはバックアップ用のディスク・ドライブの追加の新しいディスク・ドライブ・アドレスの所に、復元されたデータ列サブセクションを格納する。図１０の動作４２ｊで、自己修復の量がアダプタ２４によって多すぎないと判定されると、元のディスク・ドライブの第１の新しいディスク・ドライブ・アドレスの所に、復元されたデータ列サブセクションを格納し、自己修復の量がアダプタ２４によって多すぎないと判定されると、元のディスク・ドライブの追加の新しいディスク・ドライブ・アドレスの所に、復元されたデータ列サブセクションを格納する。
【００３２】
たとえば図７を参照すると、欠陥データ列サブセクション４８が発見されると、欠陥データ列サブセクション４８に関連づけられたデータをただちに復元する。すなわち、第１のデータ列サブセクション４６、第３のデータ列サブセクション５０、およびパリティ情報５２に基づいて、第２の欠陥データ列サブセクション４８に関連づけられたデータを復元することができる。復元されたデータ列サブセクションをバッファ５４に置き、カウンタ５６を増分させ、復元されたデータ列サブセクション用の、ディスク・ドライブ・ディレクトリ５８中の新しいディスク・ドライブ・アドレスを決定し、復元されたデータ列サブセクション用の新しいディスク・ドライブ・アドレスを記録するようにディスク・ドライブ・ディレクトリ５８を更新し、ディスク・ドライブ・ディレクトリ５８によって提供される新しいディスク・ドライブ・アドレスに従って、復元されたデータ列サブセクションをディスク・ドライブＢのシリンダ７０上の新しい位置６０に格納する。ただし、これは、カウンタ５６中のカウントが所定の閾値未満の場合である（カウンタ５６中のカウントが所定の閾値未満の場合、自己修復の量は、アダプタ２４によって多すぎないと判定される）。
【００３３】
どの追加の欠陥データ列サブセクションに関連づけられたデータも、やはり復元されるべきである（これは、背景において行うことができ、ホストが顧客データへのアクセスを妨げられないようにする）。図７を参照すると、隣接するシリンダ７２上にある追加の欠陥データ列サブセクション６４に関連づけられたデータをただちに復元する（やはり、これは背景において行うことができ、ホストが顧客データへのアクセスを妨げられないようにする）。追加の欠陥データ列サブセクション６４に関連づけられたデータを復元するために、ドライブＡ上の第１のデータ列サブセクション６２、ドライブＣ上の第３のデータ列サブセクション６６、およびドライブＤ上のパリティ情報６８を用いて、追加の欠陥データ列サブセクション６４に関連づけられたデータ（これ以降、さらに復元されたデータ列サブセクションと呼ぶ）を決定する。復元されたデータ列サブセクションをバッファ５４に置き、カウンタ５６を増分させ、さらに復元されたデータ列サブセクション用の、ディスク・ドライブ・ディレクトリ５８中の追加の新しいディスク・ドライブ・アドレスを決定し、さらに復元されたデータ列サブセクション用の追加の新しいディスク・ドライブ・アドレスを記録するようにディスク・ドライブ・ディレクトリ５８を更新し、ディスク・ドライブ・ディレクトリ５８によって提供される追加の新しいディスク・ドライブ・アドレスに従って、さらに復元されたデータ列サブセクションをディスク・ドライブＢのシリンダ７２上の新しい位置６５に格納する。ただし、これは、カウンタ５６中のカウントが所定の閾値未満の場合である（カウンタ５６中のカウントが所定の閾値未満の場合、自己修復の量は、アダプタ２４によって多すぎないと判定される）。しかし、カウンタ５６中のカウントが所定の閾値以上の場合、ディスク・ドライブＢを自己修復するのに必要な自己修復の量は、アダプタ２４によって多すぎると判定される。その場合、新しい予備のまたはバックアップ用のディスク・ドライブが位置決めされ、ディスク・ドライブ・ディレクトリ５８によって提供される新しいディスク・ドライブ・アドレスに従って、欠陥データ列サブセクション４８用の復元されたデータ列サブセクションが新しい予備のまたはバックアップ用のディスク・ドライブの新しいディスク・ドライブ・アドレスに再記憶され、欠陥データ列サブセクション６４用のさらに復元されたデータ列サブセクションが、ディスク・ドライブ・ディレクトリ５８によって提供される追加の新しいディスク・ドライブ・アドレスに従って、新しい予備のまたはバックアップ用のディスク・ドライブの追加の新しいディスク・ドライブ・アドレスに再記憶される。
【００３４】
図１１、１２、１３、および１４は、ディスク・ドライブ内の欠陥データ列サブセクションを取り囲む隣接区域を検査して、欠陥データ列サブセクションが位置決めされるときに、隣接区域中の追加の欠陥データ列サブセクションを位置決めする動作の追加態様の動作４２ａを示す。図１１を参照すると、動作４２ａ１で、元のディスク・ドライブ上の欠陥データ列サブセクションがシリンダＮおよびセクタ・オフセットＳＯの所に位置決めされると、セクタ・オフセットＳＯ、ＳＯ＋１バイト、ならびにＳＯ−１バイトの所のシリンダＮ−１およびＮ＋１（これ以降、新しい位置と呼ぶ）を読み出しまたはそこに書き込もうと試みる。たとえば、図１３において、ＲＡＩＤディスク・ドライブ・アレイを、ディスク・ドライブＡ、ディスク・ドライブＢ、ディスク・ドライブＣ、およびパリティＤを含んで示してある。図１３のディスク・ドライブＢの表面に傷４４がある。その結果、傷４４に合致して、複数の欠陥データ列サブセクションがドライブＢの表面にあることになる。ディスク・ドライブＢのより詳細な外観を、図１４に示す。
【００３５】
図１４に、図１３のディスク・ドライブＢのより詳細な外観を示す。図１４におけるドライブＢの表面に、傷４４がある。ディスク・ドライブＢは、複数のシリンダ８０を含み、シリンダ８０にはそれぞれ、データ列サブセクションが格納されている。図７におけるドライブＢ上の傷４４に合致する欠陥データ列サブセクション４８と同様、傷４４に合致して、欠陥データ列サブセクション４８がディスク・ドライブＢの表面にある。図１４において、欠陥データ列サブセクション４８が格納されているシリンダをシリンダｎと呼ぶものとする。したがって、欠陥データ列サブセクション４８は、シリンダｎ、セクタ・オフセットＳＯ上に位置する。図１４において、シリンダｎに隣接するシリンダは、図１４における欠陥データ列サブセクション４８の片側にシリンダｎ＋１、ｎ＋２、およびｎ＋３を、また、図１４における欠陥データ列サブセクション４８の反対側にシリンダｎ−１、ｎ−２、およびｎ−３を含む。図１４において、（傷４４に合致する）欠陥データ列サブセクション４８はシリンダｎ、セクタ・オフセットＳＯの所に位置しているが、図１４に示すように、セクタ・オフセットＳＯ＋１バイトは、セクタ・オフセットＳＯの片側に位置し、セクタ・オフセットＳＯ−１バイトは、セクタ・オフセットＳＯの反対側に位置している。
【００３６】
図１４において、欠陥データ列サブセクション４８がシリンダｎおよびセクタ・オフセットＳＯの所に位置決めされると、記憶装置コントローラ１２のアダプタ２４は、セクタ・オフセットＳＯ、ＳＯ＋１バイト、ならびにＳＯ−１バイトの所のシリンダｎ＋１およびｎ−１を読み出しまたはそこに書き込もうと試みる。図１４に示すように、傷４４がセクタ・オフセットＳＯの所のシリンダｎ＋１およびｎ−１に合致するので、欠陥データ列サブセクションとして知られる欠陥が、セクタ・オフセットＳＯの所のシリンダｎ＋１およびｎ−１の所で見つかる。
【００３７】
図１１を参照すると、動作４２ａ２で、欠陥データ列サブセクションがこうした新しい位置において位置決めされる場合、こうした欠陥をｇ−リストにログ記録し、セクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトの所の交互隣接シリンダｎ−３およびｎ＋３（これ以降、さらに新しい位置と呼ぶ）を検査する。たとえば、図１４を参照すると、セクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトの所のシリンダｎ＋１およびｎ−１（新しい位置と呼ぶ）から読出しまたはそこへ書込みしようと試みると、傷４４がシリンダｎ＋１およびｎ−１の所のセクタ・オフセットＳＯに合致するので、欠陥（すなわち、欠陥データ列サブセクション）が、シリンダｎ＋１およびｎ−１のセクタ・オフセットＳＯで見つかる。欠陥データ列サブセクションはシリンダｎ＋１およびｎ−１のセクタ・オフセットＳＯの所に位置決めされるので、こうした欠陥データ列サブセクションをｇ−リスト（以前位置決めされた欠陥データ列サブセクションおよびその位置の増加リスト）にログ記録し、次いで、セクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトの所の交互隣接シリンダｎ−３およびｎ＋３の検査を開始し、それを読み出しまたはそこへ書込みしようと試みる。傷４４はセクタ・オフセットＳＯ、ＳＯ＋１バイト、ならびにＳＯ−１バイトの所のシリンダｎ−３およびｎ＋３には合致しないので、欠陥データ列サブセクションは、セクタ・オフセットＳＯ、ＳＯ＋１バイト、ならびにＳＯ−１バイトの所のシリンダｎ−３およびｎ＋３では見つからない。
【００３８】
図１１を参照すると、動作４２ａ３で、欠陥（欠陥データ列サブセクション）がこうしたさらに新しい位置で位置決めされる場合、こうしたさらに新しい位置を以前のどのｐ−リストまたはｇ−リストのエントリとも比較する。さらに新しい位置が以前のｐ−リストまたはｇ−リストのエントリに関連づけられた位置に隣接する（たとえば、同じヘッド、同じセクタ・オフセットおよびシリンダの近く）場合、この結果をアダプタ２４に報告し、あまりにも多くの欠陥が増えたので、アダプタ２４は、ディスク・ドライブの除去も含めて、元のディスク・ドライブの処置を決定する。
【００３９】
たとえば、図１４を参照すると、セクタ・オフセットＳＯ、またはセクタ・オフセットＳＯ＋１バイトならびにＳＯ−１バイト、あるいはその両方の所のシリンダｎ−１およびｎ＋１（新しい位置）にある欠陥に加えて、欠陥（欠陥データ列サブセクション）がセクタ・オフセットＳＯ、またはセクタ・オフセットＳＯ＋１バイトならびにＳＯ−１バイト、あるいはその両方の所のシリンダｎ−３およびｎ＋３（さらに新しい位置）にある場合、こうしたさらに新しい位置を以前のどのｐ−リストまたはｇ−リストのエントリとも比較する。こうしたさらに新しい位置がｐ−リストまたはｇ−リスト中の他の位置に隣接する場合、この結果をアダプタ２４に報告する。アダプタ２４は、対象ディスク・ドライブを予備のディスク・ドライブで置き換えるか、または対象ディスク・ドライブを使い続けるか決定する。ただし、傷４４はセクタ・オフセットＳＯ、ＳＯ＋１バイトならびにＳＯ−１バイトの所のシリンダｎ−３およびｎ＋３と合致しないので、セクタ・オフセットＳＯ、ＳＯ＋１バイトならびにＳＯ−１バイトの所のシリンダｎ−３およびｎ＋３では、欠陥データ列サブセクションは見つからない。
【００４０】
次に、図１１を参照すると、交互隣接シリンダｎ−３およびｎ＋３に欠陥がないか調べる（動作４２ａ４）。たとえば、図１４において、傷４４はセクタ・オフセットＳＯ、ＳＯ＋１バイトならびにＳＯ−１バイトの所のシリンダｎ−３およびｎ＋３と合致しないので、交互隣接シリンダｎ−３およびｎ＋３には欠陥がなく、したがって、セクタ・オフセットＳＯの所のシリンダｎ−３およびｎ＋３に欠陥データ列サブセクションはなく、セクタ・オフセットＳＯ＋１バイトにもセクタ・オフセットＳＯ−１バイトにも欠陥データ列サブセクションはない。
【００４１】
次いで、図１２を参照すると、動作４２ａ５で、交互隣接シリンダｎ−３およびｎ＋３には欠陥がなく、欠陥データ列サブセクションも含まれない場合、セクタ・オフセットＳＯ、ＳＯ＋１バイト、ならびにＳＯ−１バイトの所のシリンダｎ−２およびｎ＋２を含む、スキップされたシリンダを検査して、スキップされたシリンダ上のこうしたセクタ位置に欠陥データ列サブセクションがあるか判定する。たとえば、図１４において、セクタ・オフセットＳＯ、セクタ・オフセットＳＯ＋１バイトまたはセクタ・オフセットＳＯ−１バイトの所のシリンダｎ＋３およびｎ−３に欠陥（すなわち、欠陥データ列サブセクション）がないと確定されている。したがって、スキップされたシリンダを検査する。シリンダｎ＋２およびｎ−２がスキップされている。したがって、セクタ・オフセットＳＯセクタ・オフセットＳＯ＋１バイトならびにセクタ・オフセットＳＯ−１バイトの所のシリンダｎ＋２およびｎ−２を検査し、そこから読み出しそこへ書き込もうと試みる。傷４４がセクタ・オフセットＳＯの所のシリンダｎ＋２およびｎ−２と合致するので、セクタ・オフセットＳＯの所のシリンダｎ＋２およびｎ−２に欠陥（すなわち、欠陥データ列サブセクション）が見つかる。
【００４２】
交互隣接シリンダｎ−３およびｎ＋３に欠陥があり、欠陥データ列サブセクションが含まれる場合、こうした欠陥をｇ−リストにログ記録し、セクタ・オフセットＳＯ、ＳＯ＋１バイト、ならびにＳＯ−１バイトの所の交互隣接シリンダｎ−５およびｎ＋５を検査する（図１２の動作４２ａ６）。たとえば、図１４において、シリンダｎ−３およびｎ＋３のどの部分とも傷４４が合致しないので、交互隣接シリンダｎ−３およびｎ＋３には欠陥がなかった。ただし、シリンダｎ−３およびｎ＋３に欠陥（欠陥データ列サブセクション）が実際にある場合は、欠陥をｇ−リストに記録し、セクタ・オフセットＳＯ、ＳＯ＋１バイトならびにＳＯ−１バイトの所の交互隣接シリンダｎ−５およびｎ＋５を検査し、そこにデータを書き込み、そこからデータを読み出そうと試みる。図１４において、セクタ・オフセットＳＯ、ＳＯ＋１バイトならびにＳＯ−１バイトの所のシリンダｎ−５およびｎ＋５の位置に注意されたい。
【００４３】
交互隣接シリンダ（たとえば、シリンダｎ−１およびｎ＋１の後にシリンダｎ−３およびｎ＋３、その後にシリンダｎ−５およびｎ＋５）にデータを書き込み、そこからデータを読み出す動作は、図１４におけるディスク・ドライブＢの表面上の傷４４の程度を示す。傷４４は、欠陥データ列サブセクション４８から、欠陥データ列サブセクション４８の片側のセクタ・オフセットＳＯの所のシリンダｎ＋２とｎ＋３の間の位置まで、また、欠陥データ列サブセクション４８の反対側のセクタ・オフセットＳＯの所のシリンダｎ−２とｎ−３の間の位置まで伸びている。したがって、セクタ・オフセットＳＯの所のシリンダｎ、ｎ＋１、ｎ＋２、ｎ−１、およびｎ−２に欠陥（すなわち、欠陥データ列サブセクション）が見つかる。しかし、傷４４はシリンダｎ＋３、ｎ＋５、ｎ−３、およびｎ−５までは伸びていないので、セクタ・オフセットＳＯの所のシリンダｎ＋３、ｎ＋５、ｎ−３、およびｎ−５には欠陥データ列サブセクションが見つからない。シリンダｎ＋３およびｎ−３で欠陥が見つからないとき、ディスク・ドライブＢ上の傷４４の程度がわかる。したがって、次の動作では、スキップされたシリンダ、すなわち、図１４におけるセクタ・オフセットＳＯ、ＳＯ＋１バイト、ならびにＳＯ−１バイトの所のシリンダｎ＋２およびｎ−２に戻って検査し／そこにデータを書き込み／そこからデータを読み出すことが必要である。
【００４４】
図１２において、動作４２ａ７、４２ａ８、および４２ａ９を参照する。図１１における動作４２ａ２、図１１における動作４２ａ３、および図１２における動作４２ａ６を最大Ｍ回（Ｍはユーザによって設定される）、または図１２の動作４２ａ５に到達するまで繰り返す。Ｍ回に達しているか。Ｍ回に達した場合、元のディスク・ドライブは、ドライブの局所的な区域にあまりにも多くの欠陥があるので除去される。Ｍ回に達していない場合、動作４２ａ２に戻り、動作４２ａ２、４２ａ３、および４２ａ６を繰り返す。
【００４５】
図１４において、交互隣接シリンダｎ−１およびｎ＋１、ｎ−３およびｎ＋３、ｎ−５およびｎ＋５、ｎ−７およびｎ＋７、などで欠陥が連続して見つかる場合、残りの交互隣接シリンダを最大Ｍ回検査し続けることになる。欠陥が残りの交互隣接シリンダ上に存在し続ける場合、アダプタ２４は次いで、ディスク・ドライブがドライブの局所的な区域にあまりにも多くの欠陥を有するということに基づいて、ディスク・ドライブが予備で置き換えられるべきか判定しなければならない。
【００４６】
隣接区域は、疑わしいディスク・ドライブの同じヘッドおよび表面に限定することができるが、ディスク・スタックへの機械的な衝撃が、潜在的な故障メカニズムである場合、同じシリンダおよびセクタ位置の所の残りのヘッドを目標とするように広げることもできる。隣接区域は、同じディスク表面上の欠陥位置への近接を意味するようにとることもでき、同じシリンダセクタ−オフセット位置の所の異なるヘッドにある潜在的な欠陥位置を意味することもできる。自己修復をトリガする欠陥の読出しまたは書込みは、概して、回復できる場合も、回復できない場合もあるが、ＩＯ性能が自己修復処理によって影響を受ける場合は、回復できないものに制限することができる。こうした欠陥は、予め設定することもでき、顧客が選択することもできる。読出し欠陥が自己修復の主なトリガであり、特定の書込み欠陥、たとえばサーボ・バースト誤りも、自己修復ソフトウェアをトリガするのに使うことができる。
【００４７】
好ましい実施形態では、欠陥の周囲の隣接区域の検査は、それ以上欠陥が見つからなくなる（またはＭ回に達する）まで、すなわちスキップされたシリンダｎ＋２およびｎ−２が探索される時点までの、セクタＳＯ、ＳＯ＋１バイトならびにＳＯ−１バイトの所の奇数番号のシリンダｎ＋１およびｎ−１、ｎ＋３およびｎ−３、などの検査を含んでいた。この検査は、セクタ位置ＳＯ、ＳＯ＋１バイト、ならびにＳＯ−１バイトの所の偶数番号のシリンダｎ＋２およびｎ−２、ｎ＋４およびｎ−４、などを用い、その後にスキップされたシリンダｎ＋３およびｎ−３、などを検査しても遂行することができる。あるいは、このようなシリンダの他のどの組合せ（すなわち、奇数または偶数）も、本発明の精神および範囲から逸脱することなく、このような検査に関連して用いることができる。
【００４８】
上記の開示では、本発明の説明のためのいくつかの実施形態を示したが、添付の特許請求の範囲で定義された本発明の範囲から逸脱することなく、様々な変更および修正を本明細書に加えることができることが当業者には明らかであろう。
【００４９】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００５０】
（１）マシンによって実行可能な命令からなるプログラムを明確に具体化して、ディスク・ドライブ上の欠陥を位置決めし、前記欠陥に関連づけられたデータを位置決めして復元し再配置する方法を実施する、マシン可読なプログラム記憶装置であって、前記方法が、
前記ディスク・ドライブ上の欠陥の位置決めに応答して、前記ディスク・ドライブ上の前記欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定するステップと、
前記ディスク・ドライブ上の前記欠陥の位置決めに応答して、前記欠陥に関連づけられたデータを復元し、そうすることによって、復元されたデータを生成するステップと、
前記復元されたデータを格納するステップとを含むプログラム記憶装置。
（２）前記方法が、
前記ディスク・ドライブ上の前記欠陥の周囲の前記隣接区域内の追加の欠陥の位置決めに応答して、前記追加の欠陥に関連づけられたデータを復元し、そうすることによって、さらに復元されたデータを生成するステップと、
前記さらに復元されたデータを格納するステップとをさらに含む、上記（１）に記載のプログラム記憶装置。
（３）前記欠陥が前記ディスク・ドライブのシリンダｎ上のセクタ・オフセットＳＯにあり、前記ディスク・ドライブ上の欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定するステップが、前記ディスク・ドライブのシリンダｎ＋１ならびにｎ−１上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査するステップを含む、上記（２）に記載のプログラム記憶装置。
（４）前記ディスク・ドライブ上の欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定するステップが、前記ディスク・ドライブのシリンダｎ＋１ならびにｎ−１上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトの少なくとも１つに対応する１つまたは複数の位置にある、前記ディスク・ドライブ上の前記追加の欠陥の位置決めに応答して、シリンダｎ＋３ならびにｎ−３上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査するステップをさらに含む、上記（３）に記載のプログラム記憶装置。
（５）前記ディスク・ドライブ上の欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定する前記ステップが、シリンダｎ＋３ならびにｎ−３上の前記セクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトに対応する１つまたは複数の位置にある、前記ディスク・ドライブ上の前記追加の欠陥を位置決めしないことに応答して、シリンダｎ＋２ならびにｎ−２上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査するステップをさらに含む、上記（４）に記載のプログラム記憶装置。
（６）前記ディスク・ドライブ上の欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定する前記ステップが、シリンダｎ＋３ならびにｎ−３上の前記セクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトの少なくとも１つに対応する１つまたは複数の位置にある、前記ディスク・ドライブ上の前記追加の欠陥の位置決めに応答して、シリンダｎ＋５ならびにｎ−５上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査するステップをさらに含む、上記（５）に記載のプログラム記憶装置。
（７）ある特定の数の前記追加の欠陥が前記ディスク・ドライブ上にあり、前記特定の数の前記追加の欠陥が所定の閾値以上のとき、前記復元されたデータを格納するステップおよび前記さらに復元されたデータを格納するステップがそれぞれ、前記復元されたデータおよび前記さらに復元されたデータを別の予備のディスク・ドライブ上に格納するステップを含む、上記（２）に記載のプログラム記憶装置。
（８）ディスク・ドライブ上の欠陥の位置決めに応答して、前記ディスク・ドライブにおいて自己修復する方法であって、
前記ディスク・ドライブ上の前記欠陥の位置決めに応答して、前記ディスク・ドライブ上の前記欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定するステップと、
前記欠陥に関連づけられたデータを復元し、そうすることによって、復元されたデータを生成するステップと、
前記復元されたデータを格納するステップとを含む方法。
（９）前記ディスク・ドライブ上の前記欠陥の周囲の前記隣接区域内の追加の欠陥の位置決めに応答して、前記追加の欠陥に関連づけられたデータを復元し、そうすることによって、さらに復元されたデータを生成するステップと、
前記さらに復元されたデータを格納するステップとをさらに含む、上記（８）に記載の方法。
（１０）前記欠陥が前記ディスク・ドライブのシリンダｎ上のセクタ・オフセットＳＯにあり、前記ディスク・ドライブ上の前記欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定する前記ステップが、前記ディスク・ドライブのシリンダｎ＋１ならびにｎ−１上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査するステップを含む、上記（９）に記載の方法。
（１１）前記ディスク・ドライブ上の前記欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定する前記ステップが、前記ディスク・ドライブのシリンダｎ＋１ならびにｎ−１上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトの少なくとも１つに対応する１つまたは複数の位置にある、前記ディスク・ドライブ上の前記追加の欠陥の位置決めに応答して、シリンダｎ＋３ならびにｎ−３上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査するステップをさらに含む、上記（１０）に記載の方法。
（１２）前記ディスク・ドライブ上の前記欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定する前記ステップが、前記ディスク・ドライブ上のシリンダｎ＋３ならびにｎ−３上の前記セクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトに対応する１つまたは複数の位置にある、前記ディスク・ドライブ上の前記追加の欠陥を位置決めしないことに応答して、シリンダｎ＋２ならびにｎ−２上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査するステップをさらに含む、上記（１１）に記載の方法。
（１３）前記ディスク・ドライブ上の欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定する前記ステップが、前記ディスク・ドライブ上のシリンダｎ＋３ならびにｎ−３上の前記セクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトの少なくとも１つに対応する１つまたは複数の位置にある、前記ディスク・ドライブ上の前記追加の欠陥の位置決めに応答して、シリンダｎ＋５ならびにｎ−５上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査するステップをさらに含む、上記（１２）に記載の方法。
（１４）ある特定の数の前記追加の欠陥が前記ディスク・ドライブ上にあり、前記特定の数の前記追加の欠陥が所定の閾値以上の場合、前記復元されたデータを格納するステップが、前記復元されたデータを別の予備のディスク・ドライブ上に格納するステップを含む、上記（８）に記載の方法。
（１５）ある特定の数の前記追加の欠陥が前記ディスク・ドライブ上にあり、前記特定の数の前記追加の欠陥が所定の閾値以上のとき、前記さらに復元されたデータを格納するステップが、前記さらに復元されたデータを別の予備のディスク・ドライブ上に格納するステップを含む、上記（９）に記載の方法。
（１６）複数のディスク・ドライブと、
前記複数のディスク・ドライブに動作可能に接続された記憶装置コントローラであって、前記複数の前記ディスク・ドライブの１つのディスク・ドライブ上にある欠陥を位置決めし、欠陥に関連づけられたデータを復元する動作を実施するようにプログラムされた記憶装置コントローラとを備える、データを格納し取り出すのに適合された記憶システムであって、前記動作が、
前記ディスク・ドライブ上の欠陥の位置決めに応答して、前記ディスク・ドライブ上の前記欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定すること、
前記ディスク・ドライブ上の前記欠陥の位置決めに応答して、前記欠陥に関連づけられたデータを復元し、そうすることによって、復元されたデータを生成すること、および
前記復元されたデータを格納することを含むシステム。
（１７）前記動作が、
前記ディスク・ドライブ上の前記欠陥の周囲の前記隣接区域内の追加の欠陥の位置決めに応答して、前記追加の欠陥に関連づけられたデータを復元し、そうすることによって、さらに復元されたデータを生成すること、および
前記さらに復元されたデータを格納することをさらに含む、上記（１６）に記載のシステム。
（１８）前記欠陥が前記ディスク・ドライブのシリンダｎ上のセクタ・オフセットＳＯにあり、前記ディスク・ドライブ上の欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定することが、前記ディスク・ドライブのシリンダｎ＋１ならびにｎ−１上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査することを含む、上記（１７）に記載のシステム。
（１９）前記ディスク・ドライブ上の欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定することが、前記ディスク・ドライブのシリンダｎ＋１ならびにｎ−１上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトの少なくとも１つに対応する１つまたは複数の位置にある、前記ディスク・ドライブ上の前記追加の欠陥の位置決めに応答して、シリンダｎ＋３ならびにｎ−３上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査することをさらに含む、上記（１８）に記載のシステム。
（２０）前記ディスク・ドライブ上の欠陥の周囲の隣接区域を検査して前記ディスク・ドライブ上に追加の欠陥があるか判定することが、シリンダｎ＋３とｎ−３上の前記セクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトに対応する１つまたは複数の位置にある、前記ディスク・ドライブ上の前記追加の欠陥を位置決めしないことに応答して、シリンダｎ＋２とｎ−２上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査すること、ならびに
シリンダｎ＋３とｎ−３上の前記セクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトの少なくとも１つに対応する１つまたは複数の位置にある、前記ディスク・ドライブ上の前記追加の欠陥の位置決めに応答して、シリンダｎ＋５とｎ−５上のセクタ・オフセットＳＯ、ＳＯ＋１バイト、およびＳＯ−１バイトを検査することをさらに含む、上記（１９）に記載のシステム。
（２１）マシンによって実行可能な命令からなるプログラムを明確に具体化して、記憶装置上の欠陥を位置決めし、前記欠陥に関連づけられたデータを位置決めして復元し再配置する方法を実施する、マシン可読なプログラム記憶装置であって、前記方法が、
前記記憶装置上の前記欠陥の周囲の隣接区域を検査して、追加の欠陥があるか判定するステップと、
前記欠陥に関連づけられたデータを復元し、そうすることによって、復元されたデータを生成するステップと、
前記復元されたデータを格納するステップとを含むプログラム記憶装置。
【図面の簡単な説明】
【００５１】
【図１】記憶サブシステムに動作可能に接続されたホスト・プロセッサを示す図である。
【図２】１つまたは複数のプロセッサおよび１つまたは複数のアダプタを有する記憶装置コントローラと、ＲＡＩＤディスク・ドライブ・アレイとを有する記憶サブシステムを含むコンピュータ・ネットワークを示す図である。
【図３】記憶サブシステム内の記憶装置コントローラを示す図である。
【図４】本発明による自己修復ソフトウェアをさらに含むアダプタを含む記憶装置コントローラを示す図である。
【図５】記憶装置コントローラの可読性および保守性（ＲＡＳ）機能が本発明の実施形態による自己修復システムを含む、記憶装置コントローラを示す図である。
【図６】本発明の実施形態による自己修復システムを含む、ＲＡＩＤディスク・ドライブ・アレイのディスク・ドライブを示す図である。
【図７】本発明の実施形態による、パリティ、ディスク・ドライブ・ディレクトリ、バッファ、およびカウンタを含む、ＲＡＩＤアレイの複数のディスク・ドライブを示す図である。
【図８】本発明の実施形態による自己修復記憶システムを示すフロー図である。
【図９】本発明の実施形態による自己修復記憶システムを示すフロー図である。
【図１０】本発明の実施形態による自己修復記憶システムを示すフロー図である。
【図１１】本発明の実施形態による自己修復記憶システム内の欠陥データ列サブセクションの周囲の隣接区域の検査を示すフロー図である。
【図１２】本発明の実施形態による自己修復記憶システム内の欠陥データ列サブセクションの周囲の隣接区域の検査を示すフロー図である。
【図１３】ＲＡＩＤディスク・ドライブ・アレイ中の複数のディスク・ドライブを示す図である。
【図１４】ＲＡＩＤディスク・ドライブ・アレイ中のディスク・ドライブの詳細な構成を示す図である。
【符号の説明】
【００５２】
１０  ホスト・プロセッサ、ホスト
１１  記憶装置サブシステム
１２  記憶装置コントローラ
２２  プロセッサ
２２ａ  第１のプロセッサ、プロセッサ１、プロセッサ
２２ｂ  第２のプロセッサ、プロセッサ２、プロセッサ
２４  装置アダプタ、アダプタ
２４ａ  第１のアダプタ、装置アダプタ
２４ｂ  第２のアダプタ、装置アダプタ
２４ｃ  第３のアダプタ、装置アダプタ
２４ｄ  第４のアダプタ、装置アダプタ
２６  メモリ、ＲＡＩＤ（Redundant Array of InexpensiveDisks）、ＲＡＩＤアレイ
２８  第１のディスク・ドライブ、ディスク・ドライブ
３０  第２のディスク・ドライブ、ディスク・ドライブ
３２  第３のディスク・ドライブ、ディスク・ドライブ
３４  第（ｎ−１）のディスク・ドライブ、ディスク・ドライブ
３６  第ｎのディスク・ドライブ、ディスク・ドライブ
３８  長距離ケーブル布線
４０  可読性および保守性（ＲＡＳ）機能
４２  自己修復ソフトウェア・モジュール、自己修復ソフトウェア
４４  傷
４６  データ列、データ列サブセクション、第１のデータ列サブセクション
４８  データ列、データ列サブセクション、第２のデータ列サブセクション、欠陥データ列サブセクション、復元されたデータ列サブセクション
５０  データ列、データ列サブセクション、第３のデータ列サブセクション
５２  データ列、パリティ、パリティ情報
５４  バッファ
５６  カウンタ
５８  ディスク・ドライブ・ディレクトリ
６０  ディスク・ドライブ・アドレス、要素、位置アドレス、新しい位置
６２  データ列サブセクション、データ列、第１の欠陥データ列サブセクション、第１のデータ列サブセクション
６４  データ列サブセクション、欠陥データ列サブセクション、データ列、第２の欠陥データ列サブセクション、追加の欠陥データ列サブセクション
６５  新しい位置
６６  データ列、第３のデータ列サブセクション
６８  データ列、パリティ情報
７０  シリンダ
７２  シリンダ
８０  シリンダ
【図１】
2004335087.tif 000003
【図２】
2004335087.tif 000004
【図３】
2004335087.tif 000005
【図４】
2004335087.tif 000006
【図５】
2004335087.tif 000007
【図６】
2004335087.tif 000008
【図７】
2004335087.tif 000009
【図８】
2004335087.tif 000010
【図９】
2004335087.tif 000011
【図１０】
2004335087.tif 000012
【図１１】
2004335087.tif 000013
【図１２】
2004335087.tif 000014
【図１３】
2004335087.tif 000015
【図１４】
2004335087.tif 000016