(57)【要約】【課題】障害ディスクの復旧を行うリビルド中データ入力元のディスクでリードエラーが発生しても発生個所が有効ファイルの中か否か判別できなかった。【解決手段】リビルド処理は、ＲＡＩＤ制御におけるリビルド処理を実行し、リビルド実行中にリードエラーを検出するとリードエラー検出処理を呼び出す。リードエラー検出処理では、リードエラーが検出されたハードディスクのアドレスを記憶していく。ファイルサーチ処理は、ハードディスク内のパーティション領域情報を元に、パーティション内のファイル管理方法を確認し、そのファイル管理方法に基づき有効となっている全てのファイル名と使用領域を記憶する。判定処理では、ＲＡＩＤ制御方法に従い、リードエラー検出処理により検出されたアドレスとファイルサーチ処理の結果とを比較することにより、リードエラーが発生したアドレスのデータが有効ファイル内にあるか否かを判別する。【選択図】　　　図１
2004062376.tif 000002
【特許請求の範囲】
【請求項１】
いくつかのディスクから構成され、ディスク内のデータに冗長性を持たせたＲＡＩＤ制御を行っているコンピュータシステムがあって、前記ＲＡＩＤを構成している１台のディスクで障害が発生した場合、前記障害の発生したディスクを交換した後、前記ＲＡＩＤを構成している残りの復旧元ディスクの情報に基づき、前記交換した復旧先ディスクの情報を復旧させるリビルド処理方式において、
前記リビルド処理実行中、前記復旧元ディスクでリードエラーが発生すると、リードエラーの発生したディスク番号とこのアドレスからなる前記ＲＡＩＤ制御の使用するアドレスを、ＲＡＩＤ種類に基づき　ＯＳやアプリケーションプログラムが使用するアドレスに変換し、該変換後のアドレスを逐次記憶し、前記リビルド処理の終了後、前記変換後のアドレスがコンピュータシステムにとって有効なファイルの中に含まれるか否かを判定し、その判定結果を利用者に通知することを特徴とするＲＡＩＤディスクリードエラー処理方式。
【請求項２】
前記判定結果は、前記リードエラー発生アドレスが、パーティション内のデータ領域中の前記有効なファイルが使用しているアドレスであった場合、そのパーティション情報と、ディレクトリ情報と、ファイル名と、前記リードエラー発生アドレスと、ＯＳが管理しているファイル管理エリアの情報と、を含むことを特徴とする請求項１記載のＲＡＩＤディスクリードエラー処理方式。
【請求項３】
いくつかのディスクから構成され、ディスク内のデータに冗長性を持たせたＲＡＩＤ制御を行っているコンピュータシステムがあって、前記ＲＡＩＤを構成している１台のディスクで障害が発生した場合、前記障害の発生したディスクを交換した後、前記ＲＡＩＤを構成している残りの復旧元ディスクの情報に基づき、前記交換した復旧先ディスクの情報を復旧させるリビルド処理方式において、
前記コンピュータシステムのＲＡＩＤ種類に基づき、前記復旧元ディスクのデータから復旧データを算出し、前記復旧先ディスクに順次格納していくリビルド処理と、
前記リビルド処理の実行中に復旧元ディスクからのデータリードにおいて、リードエラーが発生すると、リードエラーが発生したディスク番号とこのアドレスからなる前記ＲＡＩＤ制御の使用するアドレスを、ＲＡＩＤ種類に基づき　ＯＳやアプリケーションプログラムが使用するアドレスに変換し、該変換後のアドレスを逐次記憶するリードエラー検出処理と、
ＲＡＩＤ種類に基づき、ＲＡＩＤ構成内の該当するディスクからＭＢＲ（マスタブートレコード）とパーティションのＢＰＢ（ＢＩＯＳパラメータブロック）をリードし、当該パーティションについて、パーティションサイズと、ＯＳ種類と、クラスタ値を含む情報を確認し、当該情報に基づきＯＳが管理しているファイル管理領域をリードして、パーティション内に存在するファイルについて、ディレクトリ情報を含むファイル名と、このファイルが使用するパーティション内の使用領域と、を記憶するファイルサーチ処理と、
前記リードエラー検出処理の記憶するリードエラーの発生したアドレスと、前記ファイルサーチ処理が記憶する前記使用領域を順次比較して、リードエラーの発生したアドレスが有効なファイルの使用領域の中にあればそのファイル名を記憶する判定処理と、
前記判定処理の記憶するファイル名を表示出力する表示出力処理と、
を備えることを特徴とするＲＡＩＤディスクリードエラー処理方式。
【請求項４】
前記ファイルサーチ処理は、ＯＳのファイル管理方法とファイル管理領域を識別する機能を持ち、前記ＲＡＩＤディスク内のパーティション管理情報から識別されたファイル管理に対応する処理を実行することを特徴とする請求項３記載のＲＡＩＤディスクリードエラー処理方式。
【請求項５】
いくつかのディスクから構成され、ディスク内のデータに冗長性を持たせたＲＡＩＤ制御を実現しているコンピュータシステムにおいて、前記ＲＡＩＤを構成している１台のディスクで障害が発生した場合、前記障害の発生したディスクを交換した後、前記ＲＡＩＤを構成している残りの復旧元ディスク内の情報に基づき、前記交換した復旧先ディスク内の情報を復旧させるリビルド処理方式内で実行するＲＡＩＤディスクリードエラー処理方法であって、
前記コンピュータシステムのＲＡＩＤ種類に基づき、前記復旧元ディスクのデータから復旧データを算出し、前記復旧先ディスクの全アドレス領域内に順次出力していく第１のステップと、
前記第１のステップ実行中に前記復旧元ディスクからのデータリードにおいて、リードエラーが発生するとリードエラーが発生したディスク番号とこのアドレスからなる前記ＲＡＩＤ制御の使用するアドレスを、ＲＡＩＤ種類に基づき　ＯＳやアプリケーションプログラムが使用するアドレスに変換し、該変換後のアドレスを逐次記憶する第２のステップと、
前記第１のステップと第２のステップの終了後、ＲＡＩＤ種類に基づき、ＲＡＩＤ構成内の該当するディスクからＭＢＲとパーティションのＢＰＢをリードし、当該パーティションについて、パーティションサイズと、ＯＳ種類と、クラスタ値を含む情報を確認し、当該情報に基づきＯＳが管理しているファイル管理領域をリードして、パーティション内に存在するファイルについて、ディレクトリ情報を含むファイル名と、このファイルが使用するパーティション内の使用領域と、を記憶する第３のステップと、
前記第２のステップで記憶したリードエラーの発生したアドレスと、前記第３のステップで記憶した前記使用領域とを順次比較して、リードエラーの発生したアドレスが有効なファイルの領域の中にあればそのファイル名を記憶する第４のステップと、
前記第４のステップで記憶する有効なファイルがある場合、それを表示出力する第５のステップと、
を備えることを特徴とするＲＡＩＤディスクリードエラー処理方法。
【請求項６】
いくつかのディスクから構成され、ディスク内のデータに冗長性を持たせたＲＡＩＤ制御を実現しているコンピュータシステムにおいて、前記ＲＡＩＤを構成している１台のディスクで障害が発生した場合、前記障害の発生したディスクを交換した後、前記ＲＡＩＤを構成している残りのディスク内の情報に基づき、前記交換したディスク内の情報を復旧させるリビルド処理をコンピュータに実行させるプログラムであって、
前記コンピュータシステムのＲＡＩＤ種類に基づき、前記復旧元ディスクのデータから復旧データを算出し、前記復旧先ディスクの全アドレス領域内に順次出力していく第１のステップと、
前記第１のステップ実行中に前記復旧元ディスクからのデータリードにおいて、リードエラーが発生するとリードエラーが発生したディスク番号とこのアドレスからなる前記ＲＡＩＤ制御の使用するアドレスを、使用しているＲＡＩＤ種類に基づき　ＯＳやアプリケーションプログラムが使用するアドレスに変換し、該変換後のアドレスを逐次記憶する第２のステップと、
前記第１のステップと第２のステップの終了後、コンピュータシステムのＲＡＩＤ種類に基づき、ＲＡＩＤ構成内の該当するディスクからＭＢＲとパーティションのＢＰＢをリードし、当該パーティションについて、パーティションサイズと、ＯＳ種類と、クラスタ値を含む情報を確認し、当該情報に基づきＯＳが管理しているファイル管理領域をリードして、パーティション内に存在するファイルについて、ディレクトリ情報を含むファイル名と、このファイルが使用するパーティション内の使用領域と、を記憶する第３のステップと、
前記第２のステップで記憶したリードエラーの発生したアドレスと、前記第３のステップで記憶した前記使用領域とを順次比較して、リードエラーの発生したアドレスが有効なファイルの領域の中にあればそのファイル名を記憶する第４のステップと、
前記第４のステップで記憶する有効なファイルがある場合、それを表示出力する第５のステップと、
を備えることを特徴とするＲＡＩＤディスクリードエラー処理プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ冗長性の機能を有するＲＡＩＤシステムでディスクの１台で障害が発生したときの、ディスク復旧処理において、復旧に必要なデータを有する入力側のディスクでリードエラー障害が発生した場合、リードエラーの発生した箇所に格納されたデータが、有効なファイルの使用領域であるか未使用領域であるかを判別するＲＡＩＤディスクリードエラー処理方式、方法及びプログラムに関する。
【０００２】
【従来の技術】
従来、コンピュータシステムではハードディスクなどの記憶装置に対し高速なアクセスと信頼性を高める技術としてＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ　Ａｒｒａｙｓ　ｏｆ　Ｉｎｄｅｐｅｎｄｅｎｔ（Ｉｎｅｘｐｅｎｓｉｖｅ）　Ｄｉｓｋｓ）技術がある。
【０００３】
ＲＡＩＤとはハードディスクを複数台使用して高速化やデータの冗長性による信頼性の向上を目的とした技術であり、ＲＡＩＤ０、ＲＡＩＤ１、ＲＡＩＤ５などいくつかの種類が定義されている。一般にハードディスクは、磁性体が塗布された円盤面（プラッタ）とそれを高速に回転させるモータや、磁気ヘッドなどの消耗部品で構成されている。このため運用期間が長くなるとハードディスクは故障する可能性が高くなる。
【０００４】
ＲＡＩＤシステムでは、データを複数のハードディスクに保持させているため、使用しているハードディスクが故障した場合には、データの冗長性が失われてしまう。しかしながら、ＲＡＩＤ１やＲＡＩＤ５などはデータの冗長性を有し、ＲＡＩＤを構成しているハードディスクが１台故障した場合でも、正常な残りのハードディスクから、故障したハードディスク内に格納されていたデータを算出して生成することが出来る技術である。通常このようなシステムでハードディスクが１台故障した場合には、故障したハードディスクを新しいものに交換した後、正常な残りのハードディスクのデータを順次リードし、故障したハードディスク内に格納すべきデータを算出生成して、交換したハードディスクの全てのアドレスで指定されるセクタ内に書き込む処理（リビルド処理）を実施することで、故障したハードディスクのデータを復旧することができ、再びデータの冗長性を保つことができる。
【０００５】
ところで、コンピュータシステムで取り扱われるファイルに関し、ファイルの作成／削除、及びどのデバイス（ハードディスク、ＭＯ、フロッピー（登録商標）ディスクなど）のどの領域にどのようなフォーマット形式でファイルデータのライト／リードを実施するか、などのファイル制御は、通常コンピュータシステム上で起動しているＯＳ（Ｏｐｅｒａｔｉｎｇ　Ｓｙｓｔｅｍ）が行っている。
【０００６】
ＯＳは通常、ファイル名やファイルの格納場所などの情報を格納したファイル管理領域の情報をハードディスクやフロッピー（登録商標）ディスクなどのデバイス内に有し、ＯＳのファイル管理はこの情報を参照してファイルアクセスを実現している。
【０００７】
例えば、ハードディスクなどは通常いくつかのパーティションに区切られて使用されるが、一般にＯＳはパーティション毎にファイル管理領域を持ち、ファイルにアクセスする際、該当するパーティション内のファイル管理領域の情報を参照してファイルの格納場所を確認してアクセスを行っている。
【０００８】
ここで、ＯＳが扱うファイル管理仕様について、ファイル名は最大何文字まで有効とするのか、ファイルが格納されているディレクトリ階層は最大何階層まで有効とするのか、ドライブレター数はいくつまで有効とするのか、などの仕様は一般的に規定が無い。
【０００９】
また一般に、ＯＳのファイル管理は、デバイスへのアクセスする際にセクタ単位では無く、いくつかの連続したセクタをまとめたクラスタという単位で取り扱っているが、あるデバイスに対して、１クラスタを何セクタで扱うのか、１セクタは何バイトとするのか、などのデバイスに対するフォーマット形式なども同様に一般的な規定は無い。
【００１０】
従って、ファイル管理領域の情報やディスクに対するフォーマット形式などの設定は、ＯＳのファイル管理方法に委ねられており、一般にこれらのファイルの取扱いはＯＳにより様々な方法が存在している。
【００１１】
ところで、ファイル管理をする際のデバイスに対するフォーマット形式については、ファイル管理領域と同様にデバイス内にこれらのパラメータを格納する領域を持っている。例えばハードディスクの場合、通常システムを起動したときにブートのため最初にリードされるＭＢＲとパーティション領域に分けられ、更にこのパーティション領域は、ＭＢＲから引き継いで実行されるブートセクタと、ＯＳのファイル制御で管理されるファイル管理領域と、ファイルの実データが格納されるデータ領域と、に大別されるが、デバイスへのフォーマット形式のパラメータやＯＳ種類などの情報は、ブートセクタの領域内にこれら情報を格納する領域（一般にＢＰＢ（ＢＩＯＳ　Ｐａｒａｍｅｔｅｒ　Ｂｌｏｃｋ）と呼ばれる。以下ＢＰＢと略す。）を持っており、一般にＯＳでそのパーティションに対してフォーマットなどを行う際に、これらの情報が格納される。
【００１２】
ＯＳが行っているファイル管理方法はＯＳ毎に異なり、かつその管理方法は非常に複雑であるため、本説明の便宜上、簡単なファイル管理方法の例について図４を使い説明する。
【００１３】
ハードディスクの先頭セクタアドレスには、通常ＭＢＲ（Ｍａｓｔｅｒ　Ｂｏｏｔ　Ｒｅｃｏｒｄ）という情報が格納されている。これはコンピュータが最初に起動する時に使用されるブート部分と、パーティションの開始位置やサイズなどが格納されているパーティションテーブルから構成されている。
【００１４】
次にパーティション領域は、主にブートセクタ、ＦＡＴ（Ｆｉｌｅ　Ａｌｌｏｃａｔｉｏｎ　Ｔａｂｌｅ）領域、ディレクトリ領域、データ領域で構成される。ブートセクタは、ＭＢＲのブート部分から引き続き実行されるブート部分と、パーティション内で使用されるディスクのパラメータが格納されているパラメータ設定情報のＢＰＢで構成されている。
【００１５】
データ領域は実際のファイルを構成するデータが格納されている。
【００１６】
ＦＡＴ領域とディレクトリ領域は、ＯＳが使用するファイル管理領域である。ここでＦＡＴ領域は、データ領域をクラスタ単位で等分に区切り、そのクラスタ毎にエントリナンバーを割り付けファイルが使用するデータ領域内のクラスタ位置をテーブル化したものである。
【００１７】
このようにデータ領域をクラスタ単位で分割することで、ファイルのサイズは全てクラスタ単位で扱うことが可能となり、かつエントリナンバーの値からデバイス上のアドレスも算出可能となる。
【００１８】
ディレクトリ領域は、ディレクトリ情報を含んだファイル名と、そのファイルが使用するＦＡＴ領域内の先頭エントリ位置を示すエントリナンバーなどが格納されている。
【００１９】
例えば、第一パーティション領域には、Ｓａｍｐｌｅ１．ｔｘｔ、　Ｓａｍｐｌｅ３．ｔｘｔの名前を持つファイルと、現在は削除されているファイルＳａｍｐｌｅ２．ｔｘｔが存在しているとする。この場合のディレクトリ領域とＦＡＴ領域の情報は図８の（ａ）と（ｂ）に記載したようになる。尚、削除されたファイルは図８の（ａ）に例示したファイル名”　”ａｍｐｌｅ２．ｔｘｔのようにディレクトリ領域に格納されたファイル名の先頭一文字を削除することで表されている。
【００２０】
ここで、図８（ａ）でファイル名に格納されたＳａｍｐｌｅ１．ｔｘｔはファイルの開始位置を示すエントリナンバーに０００５の値が格納されている。この値から（ｂ）のＦＡＴ領域のエントリナンバー０００５の箇所を調べるとそこには０００６が格納されている。これは０００６というエントリナンバーで指定されたクラスタ領域にＳａｍｐｌｅ１．ｔｘｔのデータが引き続き格納されていることを示している。このように順にたどっていくと、Ｓａｍｐｌｅ１．ｔｘｔはエントリ０００５、０００６、００１０、００１１、００１７、００１８、００１Ｅとたどることができ　、このエントリ情報を順次データ領域のアドレスに変換し、アクセスしていくことでＳａｍｐｌｅ１．ｔｘｔのファイルをリードすることが可能となる。
尚、エントリ００１Ｅ内のＦＦＦＦはファイルの最後を示す。
【００２１】
そして、ＯＳがファイルを削除する場合は、データ領域内のデータは一切クリアせず、ディレクトリ領域内に格納されているファイル名の先頭文字を削除する。例えば、Ｓａｍｐｌｅ２．ｔｘｔを削除する場合は、ディレクトリ領域のＳａｍｐｌｅ２．ｔｘｔのファイル名情報から先頭文字”Ｓ”のみを削除することで、ファイルが削除されたこととなる。
【００２２】
以上ＯＳが行っているファイル管理方法を説明したが、コンピュータシステム上に存在するファイルのデータが、実際に格納されているデバイスのどのアドレス領域に格納されているかについては、ＯＳのファイル管理部でしか知ることが出来ない。
【００２３】
また、ＯＳやアプリケーションなどの上位側からデバイスに対して発行されるライト／リードの命令は、通常デバイスに対するアドレス情報とライト／リードを行うカウント数により構成されており、ファイル名が指定されているわけでは無い。
【００２４】
ＲＡＩＤ制御装置では、通常上位側から発行されるライト／リードの命令を、制御しているＲＡＩＤ種類に基づき、それぞれのディスク装置へのライト／リード命令に変換（アドレスとカウント数を変換）後、発行しそれぞれのディスク装置からのデータをまとめた後、上位側に対して応答する動作を行っている。
【００２５】
例えば、ＲＡＩＤ制御装置にディスク装置を３台接続し（ディスク番号ｂ，ｃ，ｄ）、ＲＡＩＤ５を実現しているコンピュータシステムでは、ＯＳやアプリケーションなどの上位側からＲＡＩＤ制御装置配下のデバイスに対して、アドレスＸ１、カウントＹ１でリード命令Ａを発行した場合、ＲＡＩＤ制御装置内で上位側からのリード命令ＡのアドレスＸ１とカウント数Ｙ１を、ＲＡＩＤ５の制御方法に基づき変換し、ディスク装置ｂに対してリード命令Ｂ（アドレスＸ２，カウントＹ２）、ディスク装置ｃに対して、リード命令Ｃ（アドレスＸ３，カウントＹ３）、ディスク装置ｄに対してリード命令Ｄ（アドレスＸ４，カウントＹ４）を発行し、それぞれのディスク装置からのリードデータをまとめ、上位側に命令Ａのリードデータとして応答している。
【００２６】
このため、ＲＡＩＤ制御装置にとってデータライト／リード命令はアドレスとカウント数で構成された命令を取り扱うだけであり、ファイル名やＯＳのファイル管理方法は全く認識していないため、リードエラー発生時は、エラーとなったアドレス内のデータが有効なファイルの情報であるのかを判定することが出来ず、従来の技術ではリビルド処理を実施中に、復旧元ハードディスクのあるアドレスでリードエラーが発生してしまった場合、このリードエラーのアドレスをスキップしてリビルド処理を続行し、リビルド処理完了後にリードエラーとなったアドレスを報告することしかできなかった。
【００２７】
【発明が解決しようとする課題】
このような従来技術では、次のような問題があった。
【００２８】
従来の技術では、ＲＡＩＤ制御装置では、上位側から発行されたライト／リードの命令を各ディスク装置に対する命令に変換発行し、各ディスク装置からのデータをまとめて報告しているが、上位側からの命令はデバイスに対するアドレス情報とカウント数などから構成されており、ファイル名を知る手段がなかった。
【００２９】
また、ファイルの管理／制御はＯＳ内のファイル制御が実施しているが、これらファイルの管理／制御はＯＳにより様々な規定が実現しており、従来のＲＡＩＤ制御装置では、使用しているＯＳの種類やこれらＯＳが管理しているファイル管理領域を知る手段もなかった。
【００３０】
本発明は以上の問題点の解決を図るもので、リビルド中に復旧元の入力側ディスクでリードエラーが検出されたアドレス内のデータが、復旧後における有効なファイルであったか否かを通知するＲＡＩＤディスクリードエラー処理方式、方法及びプログラムを提供することにある。
【００３１】
【課題を解決するための手段】
本発明の第１のＲＡＩＤディスクリードエラー処理方式は、いくつかのディスクから構成され、ディスク内のデータに冗長性を持たせたＲＡＩＤ制御を行っているコンピュータシステムがあって、前記ＲＡＩＤを構成している１台のディスクで障害が発生した場合、前記障害の発生したディスクを交換した後、前記ＲＡＩＤを構成している残りの復旧元ディスクの情報に基づき、前記交換した復旧先ディスクの情報を復旧させるリビルド処理方式において、
前記リビルド処理実行中、前記復旧元ディスクでリードエラーが発生すると、リードエラーの発生したディスク番号とこのアドレスからなる前記ＲＡＩＤ制御の使用するアドレスを、ＲＡＩＤ種類に基づき　ＯＳやアプリケーションプログラムが使用するアドレスに変換し、該変換後のアドレスを逐次記憶し、前記リビルド処理の終了後、前記変換後のアドレスがコンピュータシステムにとって有効なファイルの中に含まれるか否かを判定し、その判定結果を利用者に通知することを備える。
【００３２】
本発明の第２のＲＡＩＤディスクリードエラー処理方式は、第１の発明において、前記判定結果は、前記リードエラー発生アドレスが、パーティション内のデータ領域中の前記有効なファイルが使用しているアドレスであった場合、そのパーティション情報と、ディレクトリ情報と、ファイル名と、前記リードエラー発生アドレスと、ＯＳが管理しているファイル管理エリアの情報と、を備える。
【００３３】
本発明の第３のＲＡＩＤディスクリードエラー処理方式は、いくつかのディスクから構成され、ディスク内のデータに冗長性を持たせたＲＡＩＤ制御を行っているコンピュータシステムがあって、前記ＲＡＩＤを構成している１台のディスクで障害が発生した場合、前記障害の発生したディスクを交換した後、前記ＲＡＩＤを構成している残りの復旧元ディスクの情報に基づき、前記交換した復旧先ディスクの情報を復旧させるリビルド処理方式において、
前記コンピュータシステムのＲＡＩＤ種類に基づき、前記復旧元ディスクのデータから復旧データを算出し、前記復旧先ディスクに順次格納していくリビルド処理と、
前記リビルド処理の実行中に復旧元ディスクからのデータリードにおいて、リードエラーが発生すると、リードエラーが発生したディスク番号とこのアドレスからなる前記ＲＡＩＤ制御の使用するアドレスを、ＲＡＩＤ種類に基づき　ＯＳやアプリケーションプログラムが使用するアドレスに変換し、該変換後のアドレスを逐次記憶するリードエラー検出処理と、
ＲＡＩＤ種類に基づき、ＲＡＩＤ構成内の該当するディスクからＭＢＲ（マスタブートレコード）とパーティションのＢＰＢ（ＢＩＯＳパラメータブロック）をリードし、当該パーティションについて、パーティションサイズと、ＯＳ種類と、クラスタ値を含む情報を確認し、当該情報に基づきＯＳが管理しているファイル管理領域をリードして、パーティション内に存在するファイルについて、ディレクトリ情報を含むファイル名と、このファイルが使用するパーティション内の使用領域と、を記憶するファイルサーチ処理と、
前記リードエラー検出処理の記憶するリードエラーの発生したアドレスと、前記ファイルサーチ処理が記憶する前記使用領域を順次比較して、リードエラーの発生したアドレスが有効なファイルの使用領域の中にあればそのファイル名を記憶する判定処理と、
前記判定処理の記憶するファイル名を表示出力する表示出力処理と、を備える。
【００３４】
本発明の第４のＲＡＩＤディスクリードエラー処理方式は、第３の発明において、前記ファイルサーチ処理は、ＯＳのファイル管理方法とファイル管理領域を識別する機能を持ち、前記ＲＡＩＤディスク内のパーティション管理情報から識別されたファイル管理に対応する処理を実行することを備える。
【００３５】
本発明の第１のＲＡＩＤディスクリードエラー処理方法は、いくつかのディスクから構成され、ディスク内のデータに冗長性を持たせたＲＡＩＤ制御を実現しているコンピュータシステムにおいて、前記ＲＡＩＤを構成している１台のディスクで障害が発生した場合、前記障害の発生したディスクを交換した後、前記ＲＡＩＤを構成している残りの復旧元ディスク内の情報に基づき、前記交換した復旧先ディスク内の情報を復旧させるリビルド処理方式が実行するＲＡＩＤディスクエラー処理方法であって、
前記コンピュータシステムのＲＡＩＤ種類に基づき、前記復旧元ディスクのデータから復旧データを算出し、前記復旧先ディスクの全アドレス領域内に順次出力していく第１のステップと、
前記第１のステップ実行中に前記復旧元ディスクからのデータリードにおいて、リードエラーが発生するとリードエラーが発生したディスク番号とこのアドレスからなる前記ＲＡＩＤ制御の使用するアドレスを、ＲＡＩＤ種類に基づき　ＯＳやアプリケーションプログラムが使用するアドレスに変換し、該変換後のアドレスを逐次記憶する第２のステップと、
前記第１のステップと第２のステップの終了後、ＲＡＩＤ種類に基づき、ＲＡＩＤ構成内の該当するディスクからＭＢＲとパーティションのＢＰＢをリードし、当該パーティションについて、パーティションサイズと、ＯＳ種類と、クラスタ値を含む情報を確認し、当該情報に基づきＯＳが管理しているファイル管理領域をリードして、パーティション内に存在するファイルについて、ディレクトリ情報を含むファイル名と、このファイルが使用するパーティション内の使用領域と、を記憶する第３のステップと、
前記第２のステップで記憶したリードエラーの発生したアドレスと、前記第３のステップで記憶した前記使用領域とを順次比較して、リードエラーの発生したアドレスが有効なファイルの領域の中にあればそのファイル名を記憶する第４のステップと、
前記第４のステップで記憶する有効なファイルがある場合、それを表示出力する第５のステップと、を備える。
【００３６】
本発明の第１のＲＡＩＤディスクリードエラー処理プログラムは、いくつかのディスクから構成され、ディスク内のデータに冗長性を持たせたＲＡＩＤ制御を実現しているコンピュータシステムにおいて、前記ＲＡＩＤを構成している１台のディスクで障害が発生した場合、前記障害の発生したディスクを交換した後、前記ＲＡＩＤを構成している残りのディスク内の情報に基づき、前記交換したディスク内の情報を復旧させるリビルド処理方式をコンピュータに実行させるプログラムであって、
前記コンピュータシステムのＲＡＩＤ種類に基づき、前記復旧元ディスクのデータから復旧データを算出し、前記復旧先ディスクの全アドレス領域内に順次出力していく第１のステップと、
前記第１のステップ実行中に前記復旧元ディスクからのデータリードにおいて、リードエラーが発生するとリードエラーが発生したディスク番号とこのアドレスからなる前記ＲＡＩＤ制御の使用するアドレスを、ＲＡＩＤ種類に基づき　ＯＳやアプリケーションプログラムが使用するアドレスに変換し、該変換後のアドレスを逐次記憶する第２のステップと、
前記第１のステップと第２のステップの終了後、コンピュータシステムのＲＡＩＤ種類に基づき、ＲＡＩＤ構成内の該当するディスクからＭＢＲとパーティションのＢＰＢをリードし、当該パーティションについて、パーティションサイズと、ＯＳ種類と、クラスタ値を含む情報を確認し、当該情報に基づきＯＳが管理しているファイル管理領域をリードして、パーティション内に存在するファイルについて、ディレクトリ情報を含むファイル名と、このファイルが使用するパーティション内の使用領域と、を記憶する第３のステップと、
前記第２のステップで記憶したリードエラーの発生したアドレスと、前記第３のステップで記憶した前記使用領域とを順次比較して、リードエラーの発生したアドレスが有効なファイルの領域の中にあればそのファイル名を記憶する第４のステップと、
前記第４のステップで記憶する有効なファイルがある場合、それを表示出力する第５のステップと、を備える
【００３７】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００３８】
図１は本発明の実施例における構成図であり、ＲＡＩＤ１（ミラーリング）を実現しているコンピュータシステム１０があり、これはミラーリングを構成しているディスク装置２１、ディスク装置２２と、ディスクアレイ処理部１１からの命令に従いディスク装置２１、ディスク装置２２に対して動作制御を行うディスクアレイ制御部２０と、実際にコンピュータシステム１０上でＲＡＩＤ１機能を実現するためにミラーリングに関する制御／管理を行うディスクアレイ処理部１１と、外部デバイスなどに表示を行う表示処理５と、で構成される。
【００３９】
ここで、ディスクアレイ処理部１１においては、ディスクアレイ制御部２０を介してディスク装置２１、ディスク装置２２を使いＲＡＩＤ１を実現している処理部分である。ここでは、ＯＳやアプリケーションなどの上位側から発行されるライト／リード命令を受け付け、実現しているＲＡＩＤ種類（本記載ではミラーリング）に基づき、各ディスク装置２１，ディスク装置２２に対する命令を発行し、ＲＡＩＤ１の制御／管理を行っている。ここで、各ディスク装置２１、ディスク装置２２のミラーリング制御を行っているのは、ディスクアレイ制御部２０やディスクアレイ処理部１１であるが、ミラーリングデバイスに対する命令は全てディスクアレイ処理部１１が受け付けており、一般に上位側からはディスク装置２１、ディスク装置２２は見えずただ１台のディスク装置があるようにしか見えない。
コンピュータシステム１０の運用中に例えばディスク装置２２で障害が発生した場合、ディスク装置２１の情報からディスク装置２２内のデータを復旧させるリビルド処理を有しており、これは図１（ｂ）に示すような処理を含む。
【００４０】
図１において、本発明に関連する部分は、５つの処理から構成されていて、すべてコンピュータシステム１０上でプログラムとして動作するものとする。その構成は、リビルド処理１と、リードエラー検出処理２と、判定処理３と、ファイルサーチ処理４と、表示出力処理５と、からなる。
【００４１】
尚、本実施例においてはミラーリングのＲＡＩＤシステムとして主に説明を行うが、本発明はデータ冗長性機能を持つＲＡＩＤ（ＲＡＩＤ３やＲＡＩＤ５など）ならば、本発明を実施可能である。
【００４２】
また、２台のディスク装置のみ例示しているが、２台に限定するものではない。
【００４３】
リビルド処理１は、ＲＡＩＤを構成している１台のハードディスクで障害（故障など）が発生した場合に、このハードディスクを新規に交換した後、残ったハードディスク内の情報を元に、交換したディスク内の情報を復旧させる処理である。
【００４４】
ここでＲＡＩＤ１（ミラーリング）は、ディスク装置２１とディスク装置２２で全く同じデータを有する技術であるため、ディスク装置２２が故障した場合、これを新規に交換した後、リビルド処理１は復旧元であるディスク装置２１の先頭アドレスから最後尾アドレスまでのデータを順にリードし、そのデータを復旧先であるディスク装置２２にコピーする処理を行う。
【００４５】
ここで、このリビルド処理１を実行中に、復旧元であるディスク装置２１からデータリードをした時にあるアドレスでリードエラーが発生した場合には、リードエラー検出処理２をコールする。
【００４６】
リードエラー検出処理２は、リビルド処理１でリードエラーが検出された場合にリビルド処理１からコールされる。リードエラー検出処理２では、リードエラーが発生したディスクの番号とアドレス情報からＲＡＩＤ種類に基づき、上位側から見えるアドレスに変換した後、このアドレスを順次主記憶メモリの作業エリアに記憶する処理を行った後、リビルド処理１へ戻る。
【００４７】
尚、リビルド処理１へ戻った後、復旧先であるディスク装置２２に対しては、リードエラーが発生したアドレスにおけるデータの書き込みをバイパスして、次のアドレスからリビルド処理を継続する。
【００４８】
ファイルサーチ処理４は、判定処理３からコールされる。本処理は、まずコンピュータシステムで実現しているＲＡＩＤ種類に基づきディスクアレイ制御部２０を介して、ＭＢＲ内の情報からハードティスク内の各パーティション領域を確認した後、パーティション毎にＢＰＢ内に格納されたパラメータ情報を識別する。そして、このパーティションで使用しているＯＳ種類とファイル管理方法を確認した後、ＯＳが個々に規定しているファイル管理領域の情報を確認して、パーティション内のデータ領域に存在する全てのファイルに関して、ディレクトリ情報を含むファイル名と、そのファイルで使用しているクラスタ番号を順次記憶する処理を行い、その後判定処理３へ戻る。
【００４９】
尚、パーティションが複数存在する場合には、前記ファイルサーチ結果は複数出力されるがこれらは各パーティションの出力であることが一意に判断できるような形式で記憶されているものとする。
【００５０】
判定処理３は、まずリビルド処理でリードエラーが検出された場合に、ファイルサーチ処理４をコールする。そして、リードエラー検出処理２の結果から、リードエラーの発生したアドレスとファイルサーチ処理４の結果から導き出されたディレクトリ情報を含んだ各ファイル名と使用セクタ情報と、を比較する処理を行う。これにより、リードエラーが発生したアドレス内のデータが、ＯＳのファイル管理下における有効ファイルで在るか否かを容易に判定することが可能となる。
【００５１】
尚、判定処理３は、リードエラー検出処理２の結果と、ファイルサーチ処理４の結果と、を比較する際に、リードエラーとなったアドレスが、パーティション内のデータ領域内で有るか否かを判断する機能を持つものとする。
【００５２】
表示出力処理５は、判定処理３の結果をコンピュータシステム１０に接続されたＣＲＴや液晶等の画面やプリンタに表示出力して利用者に通知する。
【００５３】
次に実施例の動作について図面を参照して説明する。
【００５４】
ここで、実際のＯＳにおけるファイル管理方法は非常に複雑であるため、本説明では以下に記す方法でファイル管理を実現しているものとして説明する。
【００５５】
図１（ａ）は、本説明で使用するコンピュータシステム全体を示しており、同一のデータをディスク装置２１，ディスク装置２２に持たせることでデータを二重化し、一方のディスク装置のデータが壊れても他方のディスク装置から同じデータを読み込むことでデータの冗長性を持たせる機能を持つＲＡＩＤ１（ミラーリング）を実現しているシステムである。
【００５６】
ミラーリングの制御／管理は、ディスクアレイ処理部１１とディスクアレイ制御部２０により行われている。ここでディスクアレイ処理部１１は、ＯＳやアプリケーションなどの上位側からのライト／リード命令などの受付や、ミラーリングの制御／管理を行う箇所であり、ディスクアレイ制御部２０は、実際に各ディスク装置２１，ディスク装置２２に対する命令の制御／管理を行う箇所である。
【００５７】
従って、ＯＳやアプリケーションなどはライト／リード命令をディスクアレイ処理部１１に対して発行することになる。発行された命令はディスクアレイ処理部１１が受け付け、ミラーリングの論理に基づき、各ディスク装置２１，ディスク装置２２に対する命令に変換し、ディスクアレイ制御部２０がその命令を実行している。
【００５８】
また、図４はこのコンピュータシステム１０のハードディスク内の状態である。ここでは、ＭＢＲと第１パーティション、第２パーティションで区切られて使用される。ＭＢＲは、コンピュータが最初に起動するブート部分と、このハードディスク内に存在するパーティションの開始アドレスや使用サイズとなどが格納されている。
【００５９】
ここで、本説明で使用するＯＳが管理する第１パーティション領域は、ブートセクタ、ファイル管理領域（ＦＡＴ領域、ディレクトリ領域）、データ領域で構成される。
【００６０】
ブートセクタは、ＭＢＲから引き続いてブートされる部分が格納されており、この一部にＢＰＢと呼ばれる領域が有り、ＯＳの種類と、パーティション領域について１セクタを何バイトで扱うか、１クラスタを何セクタで扱うかなどのフォーマット形式に関するパラメータ情報が格納されている。
【００６１】
尚、ＢＰＢ内に格納されるこれらのパラメータは、ＯＳでこのパーティションに対するフォーマットを実行した際に自動的に格納される。
また、ＦＡＴ領域とディレクトリ領域はＯＳのファイル管理領域である。またファイルの実データはこのファイル管理領域の情報に従い、データ領域に格納される。
ファイル管理領域はパーティション毎に存在しており、ＯＳのファイル管理は、パーティション内のファイルにアクセスする際、この情報によりデータ領域内のファイル位置を特定することでアクセスすることができる。
ディレクトリ領域は、パーティション内に存在する全てのファイルの情報が格納されている領域であり、図８の（ａ）のように、例えば￥ｒｏｏｔ￥ｗｏｒｋ￥ｔｅｓｔ．ｔｘｔなどのようにディレクトリ情報を含むファイル名と、そのファイルが使用しているハードディスクの領域情報を示すＦＡＴ領域の先頭エントリナンバーと、で構成される。
【００６２】
次に、ＦＡＴ領域は、パーティションのデータ領域内に格納される各ファイルの実データの位置を記す情報であり、第１パーティション内のデータ領域を、このパーティションが使用しているクラスタ／セクタの値で区切り、エントリナンバーを順次割り当てて、図８の（ｂ）のようにテーブル化したものである。
【００６３】
ここで、クラスタ／セクタ値で区切られた各エントリ内に格納される情報は、次のエントリナンバーを示す情報、もしくはファイルの終了を示す情報が格納される構造となっている。
【００６４】
また、クラスタ／セクタの値はＢＰＢ内に格納された情報が使用される。
【００６５】
尚、本説明においては、エントリ内に０ｘＦＦＦＦと格納された場合には、このエントリがファイルの最後であることを示すものとする。
【００６６】
これにより、例えばディレクトリ領域内の”ファイルＡ”の先頭エントリナンバーから、ＦＡＴ領域内の該当するエントリナンバーのエントリ情報を確認し、その情報を順次トレースしていくことで、”ファイルＡ”が使用しているクラスタ領域を全て確認することが可能となる。
【００６７】
また、ここで示されるエントリナンバーの値は、データ領域のアドレスと１対１の関係となっており、次の計算式で容易に算出できる。アドレス＝パーティション領域の先頭アドレス＋データ領域の先頭オフセットアドレス＋（エントリナンバー×セクタ／クラスタ）
尚、このＯＳにおいてファイルが削除される場合は、ディレクトリ領域で該当ファイルのエリアを確認し、ファイル名の格納された情報からファイル名の先頭文字コードを削除するだけであり、ＦＡＴ領域やデータ領域内の該当データ部分はクリアされないものとする。
【００６８】
また、ファイル管理領域は、このＯＳでは必ず決まったオフセットアドレスに格納されているものとし、これら情報からデータ領域の情報も容易に算出できる。
【００６９】
また、第１パーティションはアドレス０ｘ０１００００００〜０ｘ０１０ＥＦＦＦＦまでの領域であり、データ領域はオフセット０ｘ０００５００００から始まるものとする。（尚、「０ｘ」の表記は、次に続く数値を１６進数で表していることを示す。）
また、格納されているファイルはＳａｍｐｌｅ１．ｔｘｔ、Ｓａｍｐｌｅ３．ｔｘｔであり、Ｓａｍｐｌｅ２．ｔｘｔは削除済みのファイルである。ディレクトリ領域とＦＡＴ領域は図８に示す状態となっており、Ｓａｍｐｌｅ１．ｔｘｔはＦＡＴ領域をみるとクラスタ０００５、０００６、００１０、００１１、００１７、００１８、００１Ｅを使い、Ｓａｍｐｌｅ３．ｔｘｔはクラスタ００２２、００１９、０００７、０００８、００１４を使用している。
尚、１クラスタは８セクタとして使用しているものとする。
【００７０】
更に、このコンピュータシステム１０では、ハードディスクのパーティションは第１パーティションのみ使用しているものとし、図１（ａ）において復旧先ディスク装置２２で障害が発生したため、これを交換した後、復旧元ディスク装置２１の内容を読み込み、これを復旧先ディスク装置２２に書き込むリビルド処理を実行中にハードディスクのアドレス０ｘ０１０５００９Ｂと０ｘ０１０５００ＢＡでリードエラーが発生したものとする。
【００７１】
次に本処理の動作についての詳細な説明を図２、図３のフローチャートと図５、図６、図７、図８、図９、図１０、図１１を使って説明する。
【００７２】
図２と図３はＲＡＩＤ１（ミラーリング）システムのリビルド動作実行における本発明の詳細フローチャートである。このフローチャート図２において、リビルド処理１では、まず使用する　Ｆｌａｇ変数やテーブル２０，４０，４５などを初期化する（ステップＳ１）。リビルド処理にて使用するハードディスクのアドレス変数（ＡＤ）を初期化する（ステップＳ２）。その後、復旧元ディスク装置２１からアドレスＡＤで指定されるデータをリードし、復旧先ディスク装置２２の同じアドレスに順次コピーしていく処理を、ハードディスクの先頭アドレスから最後尾アドレスまで実行する。
【００７３】
復旧元ディスク装置２１からアドレス変数ＡＤで指定されたセクタ内のデータを読み出し（ステップＳ３）、リードエラーが発生したかを確認する（ステップＳ４）。
【００７４】
ここで、例えばアドレス０ｘ０１０５００９Ｂでリードエラーが検出されると（ステップＳ４）、リードエラー検出処理２が呼び出される。リードエラー検出処理２は、リビルド処理中にリードエラーが発生したことを記すためにＦｌａｇとＸ変数を１に設定する（ステップＳ５）。ここで、実現しているＲＡＩＤはミラーリングであり検出されたアドレスを変換する必要がないため、アドレス０ｘ０１０５００９Ｂのアドレスを　図５のリードエラー検出テーブル２０内のアドレス情報２０１に格納する（ステップＳ６）し変数Ｘを＋１した後で、リビルド処理１の（ステップＳ９）に戻る。
【００７５】
（ステップＳ４）のチェックでリードエラーの発生がない場合は、アドレスＡＤで指定されたセクタから読み込んだデータを、復旧先ディスク装置２２のアドレスＡＤ内のセクタに対して書き込む（ステップＳ８）。
【００７６】
（ステップＳ９）では、現在のアドレスＡＤの値が　復旧元ディスク装置２２の最後尾アドレスとなっているかを確認する。最後尾のアドレスでなければアドレス変数ＡＤに１を加え（ステップＳ１０）、（ステップＳ３）に戻る。同様にして、セクタアドレス０ｘ０１０５００ＢＡでもリードエラーが発生するため、リードエラー検出処理２にてアドレス情報２０２内に０ｘ０１０５００ＢＡのアドレスを格納する。
【００７７】
（ステップＳ９）のチェックで現在のアドレスＡＤが最後尾ならば復旧元ディスク装置２１の全てのデータが復旧先ディスク装置２２に対してコピーが完了したと判断し、判定処理３へ移行する。
【００７８】
判定処理３では、まずリードエラーが検出されたかのチェック（Ｆｌａｇ＝１か？）を行い（ステップＳ１１）、Ｆｌａｇが１であれば、リードエラー発生有りとしてファイルサーチ処理４をコールする（ステップＳ１２）。Ｆｌａｇが０でリードエラーの発生が無ければ、正常に複写が終了した旨のメッセージを表示出力処理５をコールして表示を行い処理を終了する。
【００７９】
図３に示すファイルサーチ処理４では、まずハードディスク内のＭＢＲからパーティション情報が読み込まれる（ステップＳ３０）。この場合、パーティションは１つしか無く、開始アドレスは０ｘ０１００００００であり、パーティションサイズは０ｘ０００ＥＦＦＦＦであることが判る（ステップＳ３０）。
【００８０】
次に、パーティションの先頭アドレス０ｘ０１００００００のブートセクタを読み込み、ブートセクタ内のＢＰＢを確認して、１クラスタ当たりのセクタ数と、使用しているＯＳの種類と、を確認する。ここでは、１クラスタあたりのセクタ数（セクタ／クラスタ）の値が８であることが判る（ステップＳ３１）。
【００８１】
次に、このパーティションで使用しているＯＳの種類に基づき、ファイル管理領域とデータ領域を確認し、データ領域について１クラスタ＝８セクタである情報を元に、データ領域０ｘ０１０５００００〜０ｘ０１０ＥＦＦＦＦまでを使用クラスタ（８セクタ）で区切ったマトリクステーブル４５を作成する（ステップＳ３２）。
【００８２】
図７のマトリクステーブル４５を作成した後に、図６の有効ファイル格納テーブル４０内のナンバ４１１，４１２．．４１Ｘに０００１から始まり０００２、０００３・・・というように順次ナンバリングを行う（ステップＳ３３）。
【００８３】
そして、このパーティションで使用しているＯＳの種類に基づき、ディレクトリ領域を検索し、この領域に格納されている全ての有効ファイルに関して、図６のファイル名４０Ｘにファイル名の情報を、番号４２ＸにＦＡＴ領域の開始エントリナンバーの情報を、順次格納する。
【００８４】
ここでは、図６の有効ファイル格納テーブル４０のファイル名４０１にＳａｍｐｌｅ１．ｔｘｔと、番号４２１に０００５が格納され、ファイル名４０２にＳａｍｐｌｅ３．ｔｘｔと、番号４２２に００２２が格納される。（ステップＳ３４）。
【００８５】
尚、ファイルＳａｍｐｌｅ２．ｔｘｔは削除されたファイルであるためここには格納されない。
【００８６】
次に、図８に示されるＯＳのファイル管理領域であるディレクトリ領域とＦＡＴ領域を参照して、図６のファイル名４０ｘに格納されている有効ファイル格納テーブル４０から、番号４２Ｘに格納されているＦＡＴ領域の開始エントリナンバーを元に図８のＦＡＴ領域内の使用クラスタの情報を順次トレースし、図７のマトリクステーブル内の対応する位置に、ナンバ４１ｘの情報を反映していく（ステップＳ３５）。
【００８７】
具体的には、有効ファイル格納テーブル４０のファイル名４０ｘに該当するＦＡＴ領域の先頭エントリ情報である番号４２ｘを取り出し、この情報から図７の使用クラスタ領域のマトリクステーブル４５内における該当エントリ位置を算出し、図６のファイル名４０ｘに対応するナンバ４１ｘの情報を格納する。
【００８８】
次に、先に読み出した先頭エントリ情報４２ｘから、図８のＯＳのファイル管理領域であるＦＡＴ領域内で該当しているエントリ情報を読み込む。読み込んだ情報がファイルの終わりを示す０ｘＦＦＦＦ以外ならば、ファイル名４０ｘが使用するエントリがまだ存在していると判断し、同様に使用クラスタ領域のマトリクステーブル４５内でこのエントリ情報に該当する位置にナンバ４１ｘの情報を格納する。
【００８９】
そして、再びＦＡＴ領域内の次のエントリ情報を読み込み、０ｘＦＦＦＦの情報を読み込むまで図７のテーブルにナンバ４１ｘを格納していく。
【００９０】
また、読み込んだ情報がファイルの終わりを示す０ｘＦＦＦＦならば、このファイル名４０ｘの使用する領域はこのエントリのみと判断し、図６の有効ファイル格納テーブル４０内の次ファイル名４０ｘで再び同じ処理を行う。　尚、この処理は、ファイル４０ｘ内に格納されたファイルが無くなるまで行う。
【００９１】
例えば、ファイルＳａｍｐｌｅ１．ｔｘｔの場合は、以上のようにしてＦＡＴ領域をトレースすると、エントリ情報として０００５、０００６、００１０、００１１、００１７、００１８、００１Ｅの値が格納されていることが判る。
この使用クラスタの情報をテーブル４５の該当する個所に格納していく。格納する値は、テーブル４０内のＳａｍｐｌｅ１．ｔｘｔが格納されているナンバ値（０００１）を格納する。そして、Ｓａｍｐｌｅ３．ｔｘｔでも同様の作業を行う。この説明ではパーティションは１つしか無いため、次のパーティションの調査に移行せずに判定処理３へ戻る。この時の実際のテーブル４０とマトリクステーブル４５を図９と図１０に例示する。
【００９２】
本実施例ではパーティション数を１としたが、一般では、全てのパーティションの処理が終了したかを確認し（ステップ３６）、終了していない場合は（ステップ３０）に戻り、ＭＢＲから次のパーティション情報を取り出し、前述した処理を繰り返す。
【００９３】
ファイルサーチ処理４から戻ってきた後で、リードエラーのアドレス内のデータが有効ファイル中に存在するかの判定処理を、マトリクステーブル４５を参照して行う。まず、図５内のアドレス情報２０ｘに該当する情報にアドレス情報があるか（リードエラーのアドレスの判定処理を全て行ったか）についてＦｌａｇ変数をチェックし（ステップＳ１４）、アドレス情報が無ければ（ステップＳ２３）に行く。
【００９４】
また、アドレス情報が存在するならば、図５のリードエラー検出テーブル２０のアドレス情報２０ｘを取り出し（ステップＳ１５）、リードエラーを検出したアドレス内のデータは有効ファイルであるかを判定するために、このアドレスについてクラスタ領域に換算する処理を行う。
【００９５】
ここでは、アドレス情報２０１にリードエラーのアドレス０ｘ０１０５００９Ｂが格納されおり、このアドレスをクラスタ換算する（ステップＳ１６）。
2004062376.tif 000003
であるため、リードエラーとなった使用クラスタ位置は０ｘ１３である。そして、使用クラスタ領域のマトリクステーブル４５内から、ここで算出した０ｘ１３に位置する情報を読み込み、何らかのナンバ４１ｘが格納されているかを確認する。（ステップＳ１７）。
【００９６】
図１０のマトリクステーブル４５の該当エントリ０ｘ１３を見ると、ナンバが格納されていないためこの箇所は有効ファイルが無いと判断する。
【００９７】
次に、先に読んだアドレス情報２０１のリードエラーアドレス０ｘ０１０５００９Ｂが、第１パーティションのデータ領域に存在するかを確認する。（データ領域：０ｘ０１０５００００〜０ｘ０１０ＥＦＦＦＦ）
結果、リードエラーアドレスはデータ領域に存在していることがわかるため、図１１に示されるように有効ビット２１１を無効（０）に設定して、結果部２２１も無効（０データ）を格納する（ステップＳ２５）。
【００９８】
尚、リードエラーアドレスがデータ領域に存在しなかった場合は、有効ビット２１１を無効（０）に設定して、結果部２２１は無効（０ｘＦデータ）を格納する（ステップＳ１９）。
【００９９】
次に第２のリードエラーの発生したアドレス情報２０２をチェックする。アドレス情報２０２にはアドレス０ｘ０１０５００ＢＡが格納されおり、このアドレス情報も前述と同様にクラスタ換算すると、使用クラスタは０ｘ１７である。
【０１００】
図１０のマトリクステーブル４５における該当エントリナンバー０ｘ１７を見ると、ナンバ０００１が格納されており、図９から、ナンバ０００１は有効ファイル（Ｓａｍｐｌｅ１．ｔｘｔ）であると判断できる（ステップＳ１８）。この結果から図１１に示されるように、リードエラー検出テーブル２０の有効ビット２１２を有効（１）に設定して、結果部２２２内には、テーブル４０からナンバ０００１に該当するファイル名Ｓａｍｐｌｅ１．ｔｘｔを読み込み、このファイル名を格納する（ステップＳ２１）。
それから、次のリードエラーアドレスのチェックをするため（ステップＳ１４）に戻る。
【０１０１】
以上のように作成した結果を表示出力処理５でコンピュータシステム１０の画面やプリンタ装置等に表示や出力を行う（ステップＳ２３）ことで、正常な復旧が実施されたか、または復旧元のディスクでリードエラーが発生したため復旧が一部不完全に終わった場合には、有効なファイルが壊れてしまったのか、または、データ領域内の無効なファイルが壊れたため、問題無しと判断して良いのか、または、例えばＯＳの管理領域などのデータ領域以外のファイルが壊れてしまったのか、を利用者から容易に知ることが可能となる。
【０１０２】
以上の手順で処理を行うことで、リビルド実施中にリードエラーを検出しても、リビルド完了後にリードエラー検出箇所が有効ファイルであったかを報告することが可能となる。
【０１０３】
ファイルサーチ処理４内において、判定処理３は、いくつかのＯＳが採用しているファイル管理方法に基づいた処理を有し、例えばＢＰＢの内容から判別し、それぞれのファイル管理方法に基づいたファイルサーチ処理を呼び出すことで、１つのハードディスクに複数のパーティションがインストールされ、パーティション毎にファイル管理方法が異なるＲＡＩＤディスクにおいても、復旧元のディスクでリードエラー発生時に全てのパーティションのファイルについて、リードエラーとなったアドレスのデータが有効ファイルの領域内か否かを判定することが可能となる。
【０１０４】
また、本発明の実施例ではＲＡＩＤ１（ミラーリング）について記載したが、リードエラー検出処理２において、ディスクアレイ制御部２０とディスクアレイ処理部１１とで実現しているＲＡＩＤ種類に基づいたアドレス変換を行うことで、本発明はリビルドを行う他のＲＡＩＤシステムにも容易に対応することが可能となる。
【０１０５】
さらに、本発明のリビルド処理１、リードエラー検出処理２、判定処理３、ファイルサーチ処理４は、コンピュータシステム１０内で実装する形で説明をしたが、以上の処理をディスクアレイ制御部２０内に実装することも可能であり、この場合、判定処理３の判定結果をコンピュータシステムの表示出力処理５が受け取り表示出力を行うようにすることもできる。
【０１０６】
【発明の効果】
以上説明したように、本発明においては、以下に記載するような効果を奏する。
【０１０７】
リビルド処理において、復旧データ入力元のディスクでリードエラーが検出された場合、リードエラーが検出されたセクタアドレス内のデータは有効なファイルが格納されている個所かを容易に判別することができる。
【０１０８】
このため、リビルド中にリードエラーが発生した場合でも、リードエラーの発生したアドレスには有効ファイルが無ければ、リビルド完了後のファイルはすべて正しいデータであることを容易に知ることができる。
【図面の簡単な説明】
【図１】本発明の実施例の構成を表すブロック図である。
【図２】本発明の実施例の動作を説明するフローチャートである。
【図３】本発明の実施例の動作を説明するフローチャートである。
【図４】ハードディスクのパーティション領域を説明する説明図である。
【図５】リードエラー検出テーブルの内容を説明する説明図である。
【図６】有効ファイル格納テーブルを説明する説明図である。
【図７】使用中のクラスタの位置を表すマトリクステーブルの説明図である。
【図８】ディレクトリィ領域とＦＡＴ領域の関連を説明した説明図である。
【図９】有効ファイル格納テーブルに実データを格納した状態を説明する説明図である。
【図１０】マトリクステーブルに実データを格納した状態を説明する説明図である。
【図１１】リードエラー検出テーブルに実データを格納した状態を説明する説明図である。
【符号の説明】
１　　リビルド処理
２　　リードエラー検出処理
３　　判定処理
４　　ファイルサーチ処理
５　　表示出力処理
１０　　コンピュータシステム
１１　　ディスクアレイ処理部
２０　　ディスクアレイ制御部
２１　　復旧元ディスク装置
２２　　復旧先ディスク装置
【図１】
2004062376.tif 000004
【図２】
2004062376.tif 000005
【図３】
2004062376.tif 000006
【図４】
2004062376.tif 000007
【図５】
2004062376.tif 000008
【図６】
2004062376.tif 000009
【図７】
2004062376.tif 000010
【図８】
2004062376.tif 000011
【図９】
2004062376.tif 000012
【図１０】
2004062376.tif 000013
【図１１】
2004062376.tif 000014