(57)【要約】【課題】ライト抜けを検出しつつ、処理性能が劣化しないようにすることを課題とする。【解決手段】複数のブロックで記憶領域を区分けされたディスクを制御するデバイスアダプタ１０は、リードエラーのブロックを検知する。そして、デバイスアダプタ１０は、検知されたリードエラーのブロックから所定の範囲内にあるブロックのライト抜けを検出する。具体的には、デバイスアダプタ１０は、被疑ディスク３０ｂにおけるアンリカバードリードエラーのブロックの前後にあるブロックのデータを読み出す。そして、デバイスアダプタ１０は、アンリカバードリードエラーのブロックに対応するブロック（図１の例ではブロック「Ｂ」のデータ）のデータを冗長ディスク３０ａから読み出して、被疑ディスクから読み出されたデータと比較してライト抜けを検出する。【選択図】        図１
2008159120.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックで区分けされた記憶媒体において、当該ブロックごとに記憶された情報が更新されずに古いデータが残るライト抜けを検出するライト抜け検出装置であって、
リードエラーのブロックを検知する検知手段と、
前記検知手段によって検知された前記ブロックから所定の範囲内にあるブロックと冗長化された記憶媒体内のブロックとを比較してライト抜けを検出する検出手段と、
を備えることを特徴とするライト抜け検出装置。
【請求項２】
前記所定の範囲を受け付け、当該所定の範囲を設定する設定手段をさらに備え、
前記検出手段は、前記設定手段によって設定された前記所定の範囲内にあるブロックの前記ライト抜けを検出することを特徴とする請求項１に記載のライト抜け検出装置。
【請求項３】
リードおよびライトを行うヘッドの数、前記ヘッドの回転速度、前記記憶媒体のベンダおよび前記記憶媒体の種類のいずれか一つまたは複数に応じて、前記所定の範囲を決定する決定手段をさらに備え、
前記検出手段は、前記決定手段によって決定された前記所定の範囲内にあるブロックの前記ライト抜けを検出することを特徴とする請求項１に記載のライト抜け検出装置。
【請求項４】
前記検出手段は、前記所定の範囲のブロックがリード不可能な状態である場合には、当該ブロックを検出対象から排除することを特徴とする請求項１〜３のいずれか一つに記載のライト抜け検出装置。
【請求項５】
前記検出手段は、前記所定の範囲のブロックがリード不可能な状態である場合には、当該ブロックに隣接するブロックの前記ライト抜けを検出することを特徴とする請求項１〜３のいずれか一つに記載のライト抜け検出装置。
【請求項６】
前記検出手段によって検出された前記ライト抜けのブロックのデータを前記冗長化された記憶媒体のブロックのデータに更新する更新手段をさらに備えることを特徴とする請求項１〜５のいずれか一つに記載のライト抜け検出装置。
【請求項７】
複数のブロックで区分けされた記憶媒体において、当該ブロックごとに記憶された情報が更新されずに古いデータが残るライト抜けを検出するライト抜け検出方法であって、
リードエラーのブロックを検知する検知工程と、
前記検知工程によって検知された前記ブロックから所定の範囲内にあるブロックの前記ライト抜けを検出する検出工程と、
を含んだことを特徴とするライト抜け検出方法。
【請求項８】
複数のブロックで区分けされた記憶媒体において、当該ブロックごとに記憶された情報が更新されずに古いデータが残るライト抜けを検出するライト抜け検出方法をコンピュータに実行させるライト抜け検出プログラムであって、
リードエラーのブロックを検知する検知手順と、
前記検知手順によって検知された前記ブロックから所定の範囲内にあるブロックの前記ライト抜けを検出する検出手順と、
をコンピュータに実行させることを特徴とするライト抜け検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数のブロックで区分けされた記憶媒体において、ブロックごとに記憶された情報が更新されずに古いデータが残るライト抜けを検出するライト抜け検出装置、ライト抜け検出方法およびライト抜け検出プログラムに関する。
【背景技術】
【０００２】
従来より、複数のブロックで区分けされた記憶媒体（例えば、ディスク）において、ブロックごとに記憶された情報が更新されずに古いデータが残るライト抜けが発生することが知られている。このようなライト抜けの発生原因について図１１を用いて具体的に説明すると、旧データを記憶するブロックに対して更新データを書き込むライト処理をヘッドが行う際に、ヘッドがパーティクル等に乗り上げ、ブロックにデータの書き込みが行われずに旧データが残る。なお、ヘッドがパーティクル等へ乗り上げた影響により振動が発生し、隣接するブロックに読み込み不可能なデータの書き込み（いわゆる、アンリカバードリードエラー）が発生する。
【０００３】
このため、上記のようなライト抜けを検出するライト検出方法が実施されている。例えば、特許文献１では、複数のブロックごとに更新状態を記憶する履歴ブロックをディスクに設け、更新データをディスクにライトするときに、新しい更新状態を履歴ブロックに記憶させるとともに、ＣＰＵのメモリにも更新状態を記憶させる。その後、履歴ブロックに記憶された更新状態とメモリに記憶された更新状態とを比較して、ライト抜けを検出する。
【０００４】
【特許文献１】特開２００６−２５２５３０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、上記した従来の技術では、ライト処理を行った後に、ライト抜けを検出する処理を行うので、ライト処理を行うたびに、全てのブロックのライト抜けを検出する時間が余計にかかる結果、処理性能が劣化してしまうという課題があった。
【０００６】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、ライト抜けを検出しつつ、処理性能が劣化しないようにすることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するため、請求項１に係る発明は、複数のブロックで区分けされた記憶媒体において、当該ブロックごとに記憶された情報が更新されずに古いデータが残るライト抜けを検出するライト抜け検出装置であって、リードエラーのブロックを検知する検知手段と、前記検知手段によって検知された前記ブロックから所定の範囲内にあるブロックと冗長化された記憶媒体内のブロックとを比較してライト抜けを検出する検出手段と、を備えることを特徴とする。
【０００８】
また、請求項２に係る発明は、上記の発明において、前記所定の範囲を受け付け、当該所定の範囲を設定する設定手段と、前記設定手段によって設定された前記所定の範囲内にあるブロックの前記ライト抜けを検出することを特徴とする。
【０００９】
また、請求項３に係る発明は、上記の発明において、リードおよびライトを行うヘッドの数、前記ヘッドの回転速度、前記記憶媒体のベンダおよび前記記憶媒体の種類のいずれか一つまたは複数に応じて、前記所定の範囲を決定する決定手段と、前記検出手段は、前記決定手段によって決定された前記所定の範囲内にあるブロックの前記ライト抜けを検出することを特徴とする。
【００１０】
また、請求項４に係る発明は、上記の発明において、前記検出手段は、前記所定の範囲のブロックがリード不可能な状態である場合には、当該ブロックを検出対象から排除することを特徴とする。
【００１１】
また、請求項５に係る発明は、上記の発明において、前記検出手段は、前記所定の範囲のブロックがリード不可能な状態である場合には、当該ブロックに隣接するブロックの前記ライト抜けを検出することを特徴とする。
【００１２】
また、請求項６に係る発明は、上記の発明において、前記検出手段によって検出された前記ライト抜けのブロックのデータを前記冗長化された記憶媒体のブロックのデータに更新する更新手段をさらに備えることを特徴とする。
【００１３】
また、請求項７に係る発明は、複数のブロックで区分けされた記憶媒体において、当該ブロックごとに記憶された情報が更新されずに古いデータが残るライト抜けを検出するライト抜け検出方法であって、リードエラーのブロックを検知する検知工程と、前記検知工程によって検知された前記ブロックから所定の範囲内にあるブロックの前記ライト抜けを検出する検出工程と、を含んだことを特徴とする。
【００１４】
また、請求項８に係る発明は、複数のブロックで区分けされた記憶媒体において、当該ブロックごとに記憶された情報が更新されずに古いデータが残るライト抜けを検出するライト抜け検出方法をコンピュータに実行させるライト抜け検出プログラムであって、リードエラーのブロックを検知する検知手順と、前記検知手順によって検知された前記ブロックから所定の範囲内にあるブロックの前記ライト抜けを検出する検出手順と、をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１５】
請求項１、６および７の発明によれば、リードエラーのブロックを検知し、検知されたブロックから所定の範囲内にあるブロックと冗長化された記憶媒体内のブロックとを比較してライト抜けを検出するので、ライト処理を行うたびに全てのブロックのライト抜けを検出することなく、ライト抜けの検出を行う結果、ライト抜けを検出しつつ、処理性能が劣化しないようにすることが可能である。
【００１６】
また、請求項２の発明によれば、所定の範囲を受け付け、所定の範囲を設定し、設定された所定の範囲内にあるブロックのライト抜けを検出するので、所定の範囲を動的に変化する処理負担を掛けることなく、任意に所定の範囲を設定して、より簡易にライト抜けを検出することが可能である。
【００１７】
また、請求項３の発明によれば、リードおよびライトを行うヘッドの数、ヘッドの回転速度、記憶媒体のベンダおよび記憶媒体の種類のいずれか一つまたは複数に応じて、所定の範囲を決定し、決定された所定の範囲内にあるブロックのライト抜けを検出するので、所定の範囲を固定することなく、所定の範囲を動的に変化させて、より適切にライト抜けを検出することが可能である。
【００１８】
また、請求項４の発明によれば、所定の範囲のブロックがリード不可能な状態である場合には、ブロックを検出対象から排除するので、所定の範囲内のブロックだけを検出する結果、より簡易にライト抜けを検出することが可能である。
【００１９】
また、請求項５の発明によれば、所定の範囲のブロックがリード不可能な状態である場合には、ブロックに隣接するブロックのライト抜けを検出するので、所定の範囲内のブロックだけでなく、所定の範囲外であってライト抜けの可能性が高いブロックについても検出する結果、より精度良くライト抜けを検出することが可能である。
【００２０】
また、請求項６の発明によれば、検出されたライト抜けのブロックのデータを冗長化された記憶媒体のブロックのデータに更新するので、ライト抜けのブロックのデータを正常にすることが可能である。
【発明を実施するための最良の形態】
【００２１】
以下に添付図面を参照して、この発明に係るライト抜け検出装置、ライト抜け検出方法およびライト抜け検出プログラムの実施例を詳細に説明する。なお、以下では、デバイスアダプタに本発明を組み込んだ場合の例を説明する。
【実施例１】
【００２２】
以下の実施例では、実施例１に係るデバイスアダプタの概要および特徴、デバイスアダプタの構成および処理の流れを順に説明し、最後に実施例１による効果を説明する。なお、図１〜図１１中では、デバイスアダプタをＤＡ（Ｄｅｖｉｃｅ‐Ａｄａｐｔｅｒ）と記載する。
【００２３】
［実施例１に係るデバイスアダプタの概要および特徴］
まず最初に、図１を用いて、実施例１に係るデバイスアダプタの概要および特徴を説明する。図１は、実施例１に係るデバイスアダプタの概要および特徴を説明するための図である。
【００２４】
実施例１のライト抜け検出装置としてのデバイスアダプタ１０では、複数のブロックで区分けされたディスク３０において、ブロックごとに記憶された情報が更新されずに古いデータが残るライト抜けを検出することを概要とする。そして、このデバイスアダプタ１０では、ライト抜けを検出しつつ、処理性能が劣化しないようにする点に主たる特徴がある。なお、デバイスアダプタ１０およびディスク３０ａ、３０ｂを含むＲＡＩＤ装置１は、冗長化構成となっている。
【００２５】
この主たる特徴について具体的に説明すると、複数のブロックで記憶領域を区分けされたディスクを制御するデバイスアダプタ１０は、リードエラーのブロックを検知する（図１の（１）参照）。図１の例を用いて説明すると、デバイスアダプタ１０は、ディスク３０ｂからのデータリード時のディスク応答において、読み出しが不可能なブロックであることを示すアンリカバードリードエラーのブロックを検知する。なお、図１では、アンリカバードリードエラーのブロックが検知されたディスクをライト抜けの可能性があるディスクとして「被疑ディスク」とする。
【００２６】
そして、デバイスアダプタ１０は、検知されたリードエラーのブロックから所定の範囲内にあるブロックのライト抜けを検出する（図１の（２）参照）。具体的には、デバイスアダプタ１０は、被疑ディスク３０ｂにおけるアンリカバードリードエラーのブロックの前後にあるブロックのデータを読み出す。そして、デバイスアダプタ１０は、アンリカバードリードエラーのブロックに対応するブロック（図１の例ではブロック「Ｂ」）のデータを冗長ディスク３０ａから読み出して、被疑ディスク３０ｂから読み出されたデータと比較してライト抜けを検出する。つまり、冗長ディスクのデータと被疑ディスクのデータとが異なる場合には、そのデータを記憶するブロックをライト抜けであるとしてリカバリ処理を行う。
【００２７】
このように、デバイスアダプタ１０は、ライト処理を行うたびに全てのブロックのライト抜けを検出することなく、ライト抜けの検出を行う結果、上記した主たる特徴のごとく、ライト抜けを検出しつつ、処理性能が劣化しないようにすることが可能である。
【００２８】
［ＲＡＩＤ装置の構成］
次に、図２を用いて、図１に示したＤＡを適用するＲＡＩＤ装置１のハード構成例を説明する。図２は、実施例１に係るＲＡＩＤ装置１のハード構成を示す構成図である。同図に示すように、このＲＡＩＤ装置１は、サーバ装置２に接続されている。
【００２９】
ＲＡＩＤ装置１は、上記したＤＡ（Ｄｅｖｉｃｅ−Ａｄａｐｔｅｒ）１０と、データをＲＴ４０に転送する制御を行うＣＭ（Ｃｏｎｔｒｏｌｌｅｒ−Ｍｏｄｕｌｅ）２０と、データを格納するディスク３０と、データを中継するＲＴ（Ｒｏｕｔｅｒ）４０と、サーバ装置２との接続を制御するＣＡ（Ｃｈａｎｎｅｌ−Ａｄａｐｔｅｒ）５０とで構成される。ＤＡ１０は、ＣＰＵ（Ｃｅｎｔｒａｌ−Ｐｒｏｃｅｓｓｉｎｇ−Ｕｎｉｔ）１１０と、シリアル転送を行うＦＣ（Ｆｉｂｒｅ−Ｃｈａｎｎｅｌ）１２０と、データを一時的に格納するＢｕｆｆｅｒ１３０とを備える。ＣＭ２０は、ＣＰＵ２１０と、リードデータやライトデータを格納するＣａｃｈｅメモリ２２０とを備える。
【００３０】
ＲＡＩＤ装置１は、サーバ装置２からのリード要求またはライト要求を受け付けると、ＲＴ４０を介してＣＭ２０のＣａｃｈｅメモリ２２０にリードデータまたはライトデータを格納し、その格納されたリードデータまたはライトデータに基づいて、ＤＡ１０がディスク３０へリードまたはライトを行う。
【００３１】
［デバイスアダプタの構成］
次に、図３を用いて、図１に示したデバイスアダプタ１０の構成を説明する。図３は、実施例１に係るデバイスアダプタ１０の構成を示すブロック図である。同図に示すように、このデバイスアダプタ１０は、ＣＭ制御Ｉ／Ｆ１１、ディスク制御Ｉ／Ｆ１２、制御部１３、記憶部１４を備え、ＣＭ２０およびディスク３０と接続される。以下にこれらの各部の処理を説明する。
【００３２】
ＣＭ制御Ｉ／Ｆ１１は、接続されるＣＭ２０との間でやり取りする各種情報に関する通信を制御する。具体的には、ＣＭ制御Ｉ／Ｆ１１は、ＣＭ２０のキャッシュメモリ２２０からライトデータ、リードデータまたは後述する冗長化データを受信する。
【００３３】
ディスク制御Ｉ／Ｆ１２は、接続されるディスク３０との間でやり取りする各種情報に関する通信を制御する。具体的には、ディスク制御Ｉ／Ｆ１２は、ディスク３０との間でリードまたはライトに関する情報の送受信を行う。
【００３４】
記憶部１４は、制御部１３による各種処理に必要なデータおよびプログラムを格納するが、特に本発明に密接に関連するものとしては、バッファ１４ａを備える。このバッファ１４ａは、ディスク３０から読み出したデータを一時的に記憶する。
【００３５】
制御部１３は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行するが、特に本発明に密接に関連するものとしては、エラー検知部１３ａ、ライト抜け検出部１３ｂ、リカバリ部１３ｃを備える。なお、エラー検知部１３ａは、特許請求の範囲に記載の「検知手段」に対応し、ライト抜け検出部１３ｂは、特許請求の範囲に記載の「検出手段」に対応する。
【００３６】
エラー検知部１３ａは、リードエラーのブロックを検知する。具体的には、エラー検知部１３ａは、ディスク３０からのデータリード時のディスク応答において、エラーが発生すると、そのエラーがアンリカバードリードエラーであるか否かを判定し、アンリカバードリードエラーである場合には、アンリカバードリードエラーであるブロックの周辺のライト抜け検出処理を行うように、後述するライト抜け検出部１３ｂに通知する。また、エラー検知部１３ａは、アンリカバードリードエラーでない場合には、エラー内容に沿ったリカバリ処理を実行するように、後述するリカバリ部１３ｃに通知する。
【００３７】
ここで、図４を用いて、具体的にエラー検知処理を説明する。同図に示すように、エラー検知部１３ａは、図４の（１）に例示すようなエラーが発生した場合には、アンリカバードリードエラーでないエラーであると判定し、一方、図４の（２）に例示するようなエラーが発生した場合には、アンリカバードリードエラーであると判定する。つまり、ライト抜けが発生する可能性が高い発生原因（例えば、ディスク内に浮遊する塵など）によって発生したエラーであるか否かを判定している。
【００３８】
図３の説明に戻ると、ライト抜け検出部１３ｂは、検知されたアンリカバードリードエラーのブロックから図示しない入力部によって設定された所定の範囲内にあるブロックのライト抜けを検出する。具体的には、ライト抜け検出部１３ｂは、エラー検知部１３ａからライト抜け検出処理を行う旨の通知を受けると、ＣＭ２０のキャッシュメモリ２２０を獲得する。そして、ライト抜け検出部１３ｂは、前ブロックが診断済みであるかを判定する。
【００３９】
その結果、ライト抜け検出部１３ｂは、前ブロックが判定済みでない場合には、被疑ディスク３０ｂの前ブロックに対応する冗長ディスク３０ａのブロックのデータをキャッシュメモリ２２０に読み出し、被疑ディスク３０ａの前ブロックのデータをバッファ１４ａに読み出す。また、ライト抜け検出部１３ｂは、前ブロックが判定済みである場合には、被疑ディスク３０ｂの後ブロックに対応する冗長ディスク３０ａのブロックのデータをキャッシュメモリ２２０に読み出し、被疑ディスク３０ａの後ブロックのデータをバッファ１４ａに読み出す。
【００４０】
その後、ライト抜け検出部１３ｂは、読み出した冗長ディスクのデータと被疑ディスクのデータとが一致するか否かを判定し、冗長ディスクのデータと被疑ディスクのデータとが一致しない場合には、そのブロックがライト抜けであることを後述するリカバリ部１３ｃに通知する。また、ライト抜け検出部１３ｂは、冗長ディスクのデータと被疑ディスクのデータとが一致する場合には、そのブロックがライト抜けでない旨をリカバリ部１３ｃに通知する。
【００４１】
ここで、図５および図６を用いて、具体的な例を挙げてライト抜け検出処理を説明する。図５に示すように、ライト抜け検出部１３ｂは、獲得されたＣＭ２０のキャッシュメモリ２２０に前ブロックに対応する冗長ディスク３０ａのブロックにおけるデータ（図５の例ではデータ「Ｂ」）を読み出す。そして、ＤＡ１０のバッファ１４ａに前ブロックのデータ（図５の例ではデータ「Ｏｌｄ」）を読み出す。そして、ライト抜け検出部１３ｂは、読み出した冗長ディスクのデータと被疑ディスクのデータとが一致するか判定し、一致しない場合には、そのデータを記憶するブロックをライト抜けであるとする。
【００４２】
また、ライト抜け検出部１３ｂは、図６に示すように、診断範囲にあるブロックがリードエラーにより読み出せない場合には（図６の例では、ブロック「Ｄ」）、冗長ディスクのデータと被疑ディスクのデータとが一致するか否かの判定を行わずに、検出対象から排除する診断スキップを行う。なお、縮退状態であって冗長ディスクが存在しない場合には、ライト抜け検出処理を行えないので、アンリカバードリードエラーとなったブロックの前後数ブロックが旧データとなっている可能性があり、これらのブロックへのリード要求に対してエラー応答をするようにする。
【００４３】
図３の説明に戻ると、リカバリ部１３ｃは、データのリカバリを行って正常性を回復する。具体的には、リカバリ部１３ｃは、アンリカバードリードエラー以外のエラーであってエラー内容に沿ったリカバリ処理を実行する旨の通知をエラー検知部１３ａから受け付けた場合には、エラー内容に沿ったリカバリ処理を行う。また、リカバリ部１３ｃは、ブロックがライト抜けである旨の通知を受け付けた場合には、被疑ディスク３０ｂにおけるライト抜けのブロックを対応する冗長ディスク３０ａのブロックに更新する。
【００４４】
そして、リカバリ部１３ｃは、ライト抜けブロックの更新を行った後に、または、ライト抜けでない旨の通知を受け取った後に、後ブロックが診断済みであるか否かを判定し、診断済みでない場合には、後ブロックの診断を行う旨の指示をライト抜け検出部１３ｂに通知する。一方、リカバリ部１３ｃは、診断済みである場合には、アンリカバードリードエラーのブロックであるエラーＬＢＡのリカバリ処理を行う。
【００４５】
ここで、図７を用いて、具体的な例を挙げてリカバリ処理について説明する。同図に示すように、リカバリ部１３は、被疑ディスク３０ｂにおける前ブロック「Ｂ」のデータがライト抜けにより「Ｏｌｄ」である場合には、冗長ディスク３０ａにおける前ブロックのデータ「Ｂ」を読み出して、その読み出されたデータ「Ｂ」を被疑ディスク３０ｂの前ブロックのデータとして更新する。なお、リカバリする方法として、冗長ディスクが存在するので、被疑ディスクを故障とし、冗長を失わせて縮退状態にするようにしてもよい。
【００４６】
［デバイスアダプタによる処理］
次に、図８を用いて、実施例１に係るデバイスアダプタ１０による処理を説明する。図８は、実施例１に係るデバイスアダプタ１０の処理動作を示すフローチャートである。
【００４７】
同図に示すように、デバイスアダプタ１０のエラー検知部１３ａは、ディスク３０からのデータリード時のディスク応答において、エラーが発生すると（ステップＳ１０１肯定）、そのエラーがアンリカバードリードエラーであるか否かを判定し（ステップＳ１０２）、アンリカバードリードエラーである場合には（ステップＳ１０２肯定）、アンリカバードリードエラーであるブロックの周辺のライト抜け検出処理を行うように、ライト抜け検出部１３ｂに通知する。
【００４８】
また、エラー検知部１３ａは、アンリカバードリードエラーでない場合には（ステップＳ１０２否定）、アンリカバードリードエラーであるブロックの周辺のライト抜け検出処理を行うように、リカバリ部１３ｃに通知し、後述するリカバリ処理をライト抜け検出部１３ｂが行うように指示する（ステップＳ１０３）。そして、リカバリ部１３ｃは、アンリカバードリードエラー以外のエラーであってエラー内容に沿ったリカバリ処理を実行する旨の通知をエラー検知部１３ａから受け付けた場合には、エラー内容に沿ったリカバリ処理を行う（ステップＳ１０４）。
【００４９】
［デバイスアダプタによるライト抜け検出処理］
次に、図９を用いて、実施例１に係るデバイスアダプタ１０によるライト抜け検出処理を説明する。図９は、実施例１に係るデバイスアダプタ１０のライト抜け検出処理動作を示すフローチャートである。
【００５０】
同図に示すように、デバイスアダプタ１０のライト抜け検出部１３ｂは、エラー検知部１３ａからライト抜け検出処理を行う旨の通知を受けると、ＣＭ２０のキャッシュメモリ２２０を獲得する（ステップＳ２０１）。そして、ライト抜け検出部１３ｂは、前ブロックが診断済みであるかを判定する（ステップＳ２０２）。その結果、ライト抜け検出部１３ｂは、前ブロックが判定済みでない場合には（ステップＳ２０２否定）、被疑ディスク３０ｂの前ブロックに対応する冗長ディスク３０ａのブロックのデータをキャッシュメモリ２２０に読み出し（ステップＳ２０３）、被疑ディスク３０ａの前ブロックのデータをバッファ１４ａに読み出す（ステップＳ２０４）。
【００５１】
また、ライト抜け検出部１３ｂは、前ブロックが判定済みである場合には（ステップＳ２０２肯定）、被疑ディスク３０ｂの後ブロックに対応する冗長ディスク３０ａのブロックのデータをキャッシュメモリ２２０に読み出し（ステップＳ２０５）、被疑ディスク３０ａの後ブロックのデータをバッファ１４ａに読み出す（ステップＳ２０６）。その後、ライト抜け検出部１３ｂは、読み出した冗長ディスクのデータと被疑ディスクのデータとが一致するか否かを判定し（ステップＳ２０７）、冗長ディスクのデータと被疑ディスクのデータとが一致しない場合には（ステップＳ２０７否定）、そのブロックがライト抜けであることを後述するリカバリ部１３ｃに通知する。
【００５２】
そして、リカバリ部１３ｃは、ブロックがライト抜けである旨の通知を受け付けると、被疑ディスクにおけるライト抜けのブロックを対応する冗長ディスク３０ａのブロックに更新する（ステップＳ２０８）。また、ライト抜け検出部１３ｂは、冗長ディスクのデータと被疑ディスクのデータとが一致する場合には（ステップＳ２０７肯定）、そのブロックがライト抜けでない旨をリカバリ部１３ｃに通知する。
【００５３】
そして、リカバリ部１３ｃは、ライト抜けブロックの更新を行った後に（ステップＳ２０８）、または、ライト抜けでない旨の通知を受け取った後にステップＳ２０７肯定）、後ブロックが診断済みであるか否かを判定し（ステップＳ２０９）、診断済みでない場合には（ステップＳ２０９否定）、後ブロックの診断を行う旨の指示をライト抜け検出部１３ｂに通知してステップＳ２０２の処理に戻る。一方、リカバリ部１３ｃは、後ブロックが診断済みである場合には（ステップＳ２０９肯定）、アンリカバードリードエラーのブロックであるエラーＬＢＡのリカバリ処理を行う（ステップＳ２１０）。
【００５４】
[実施例１の効果]
上述してきたように、リードエラーのブロックを検知し、検知されたブロックから所定の範囲内にあるブロックのライト抜けを検出するので、ライト処理を行うたびに全てのブロックのライト抜けを検出することなく、ライト抜けの検出を行う結果、ライト抜けを検出しつつ、処理性能が劣化しないようにすることが可能である。
【００５５】
また、実施例１によれば、所定の範囲を受け付け、所定の範囲を設定し、設定された所定の範囲内にあるブロックのライト抜けを検出するので、所定の範囲を動的に変化する処理負担を掛けることなく、任意に所定の範囲を設定して、より簡易にライト抜けを検出することが可能である。
【００５６】
また、実施例１によれば、所定の範囲のブロックがリード不可能な状態である場合には、ブロックを検出対象から排除するので、所定の範囲内のブロックだけを検出する結果、より簡易にライト抜けを検出することが可能である。
【００５７】
また、実施例１によれば、検出されたライト抜けのブロックのデータを冗長化された冗長化ディスクのブロックのデータに更新するので、ライト抜けのブロックのデータを正常にすることが可能である。
【実施例２】
【００５８】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例２として本発明に含まれる他の実施例を説明する。
【００５９】
（１）ライト抜け検出範囲
また、上記の実施例１では、ライト抜けの検出範囲が予め設定されている場合を説明したが、本発明はこれに限定されるものではなく、ライト抜けの検出範囲を動的に変化するようにしてもよい。
【００６０】
具体的には、デバイスアダプタ１０は、リードおよびライトを行うヘッドの数、ヘッドの回転速度、ディスクのベンダおよびディスクの種類のいずれか一つまたは複数に応じて、ライト抜けの検出範囲（つまり、アンリカバードリードエラーのブロックから幾つのブロックのライト抜け検出を行うかの範囲）を決定し、ライト抜け検出処理を行う際には、その決定された検出範囲のライト抜け検出を行う。
【００６１】
このように、リードおよびライトを行うヘッドの数、ヘッドの回転速度、ディスクのベンダおよびディスクの種類のいずれか一つまたは複数に応じて、所定の範囲を決定し、決定された所定の範囲内にあるブロックのライト抜けを検出するので、所定の範囲を固定することなく、所定の範囲を動的に変化させて、より適切にライト抜けを検出することが可能である。
【００６２】
（２）診断スキップ
また、上記の実施例１では、診断範囲にあるブロックがリードエラーにより読み出せない場合には、ライト抜け検出対象から排除する場合を説明したが、本発明は、診断範囲にあるブロックがリードエラーにより読み出せない場合には、そのブロックに隣接するブロックのライト抜けを検出するようにしてもよい。例えば、デバイスアダプタ１０は、アンリカバードリードエラーのブロックを検知し、そのアンリカバードリードエラーのブロックにおける後ろのブロックがリードエラーにより読み出せない場合には、さらにもう一つ後ろのブロックをライト抜け検出対象として、ライト抜けの検出を行う。
【００６３】
このように、所定の範囲のブロックがリード不可能な状態である場合には、ブロックに隣接するブロックのライト抜けを検出するので、所定の範囲内のブロックだけでなく、所定の範囲外であってライト抜けの可能性が高いブロックについても検出する結果、より精度良くライト抜けを検出することが可能である。
【００６４】
（３）システム構成等
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、エラー検知部１３ａとライト抜け検出部１３ｂを統合してもよい。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００６５】
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００６６】
（４）プログラム
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをコンピュータで実行することによって実現することができる。そこで、以下では、図１０を用いて、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図１０は、ライト抜け検出プログラムを実行するコンピュータを示す図である。
【００６７】
同図に示すように、ライト抜け検出プログラムとしてのコンピュータ６００は、ＣＭ制御Ｉ／Ｆ６１０、ディスク制御Ｉ／Ｆ６２０、ＲＯＭ６３０、ＣＰＵ６４０およびＲＡＭ６６０をバス６５０で接続して構成される。
【００６８】
そして、ＲＯＭ６３０には、上記の実施例と同様の機能を発揮するデバイスアダプタ、つまり、図１０に示すように、エラー検知プログラム６３１、ライト抜け検出プログラム６３２およびリカバリプログラム６３３が予め記憶されている。なお、プログラム６３１〜６３３については、図３に示したデバイスアダプタ１０の各構成要素と同様、適宜統合または分散してもよい。
【００６９】
そして、ＣＰＵ６４０が、これらのプログラム６３１〜６３３をＲＯＭ６３０から読み出して実行することで、図１０に示すように、各プログラム６３１〜６３３は、エラー検知プロセス６４１、ライト抜け検出プロセス６４２およびリカバリプロセス６４３として機能するようになる。各プロセス６４１〜６４３は、図３に示したキャッシュ検知部１３ａ、ライト抜け検出部１３ｂ、リカバリ部１３ｃにそれぞれ対応する。
【００７０】
そして、ＣＰＵ６４０は、図示しないディスクからデータを読み出してＲＡＭ６６０のバッファ６６１に格納し、ＲＡＭ６６０に格納されたデータに基づいて処理を実行する。
【産業上の利用可能性】
【００７１】
以上のように、本発明に係るライト抜け検出装置、ライト抜け検出方法およびライト抜け検出プログラムは複数のブロックで区分けされた記憶媒体において、ブロックごとに記憶された情報が更新されずに古いデータが残るライト抜けを検出する場合に有用であり、特に、ライト抜けを検出しつつ、処理性能が劣化しないようにすることに適する。
【図面の簡単な説明】
【００７２】
【図１】実施例１に係るデバイスアダプタの概要および特徴を説明するための図である。
【図２】ＲＡＩＤ装置のハード構成を示すブロック図である。
【図３】実施例１に係るデバイスアダプタの構成を示すブロック図である。
【図４】エラー内容の一例を説明するための図である。
【図５】ライト抜け検出処理について説明するための図である。
【図６】ライト抜け検出処理の診断スキップについて説明するための図である。
【図７】リカバリ処理について説明するための図である。
【図８】実施例１に係るデバイスアダプタの処理動作を示すフローチャートである。
【図９】実施例１に係るデバイスアダプタのライト抜け検出処理動作を示すフローチャートである。
【図１０】ライト抜け検出プログラムを実行するコンピュータを示す図である。
【図１１】ライト抜けについて説明するための図である。
【符号の説明】
【００７３】
１０  デバイスアダプタ
１１  ＣＭ制御Ｉ／Ｆ
１２  ディスク制御Ｉ／Ｆ
１３  制御部
１３ａ  エラー検知部
１３ｂ  ライト抜け検出部
１３ｃ  リカバリ部
１４  記憶部
１４ａ  バッファ
２０  ＣＭ
２２０  キャッシュメモリ
３０  ディスク
【図１】
2008159120.tif 000003
【図２】
2008159120.tif 000004
【図３】
2008159120.tif 000005
【図４】
2008159120.tif 000006
【図５】
2008159120.tif 000007
【図６】
2008159120.tif 000008
【図７】
2008159120.tif 000009
【図８】
2008159120.tif 000010
【図９】
2008159120.tif 000011
【図１０】
2008159120.tif 000012
【図１１】
2008159120.tif 000013