(57)【要約】【課題】リードエラーに対する交代処理の要否を精度良く判別して交代処理を適切に施行することを課題とする。【解決手段】ディスク制御装置１０は、リードアクセスに対してディスク装置３０からリードエラーの応答があった場合に、当該リードエラーが発生したディスク上のエラー発生箇所を示す情報をエラー発生箇所記憶部１５ａに登録する。そして、ディスクパトロール時に、エラー発生箇所記憶部１５ａに記憶されたエラー発生箇所を示す情報に基づいて、当該エラー発生箇所に対して複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査する。その結果、かかるエラー検査においてリードエラーが複数回再現された場合に、エラー発生箇所に対して交代処理を施行する。【選択図】        図１
2006085592.tif 000002
【特許請求の範囲】
【請求項１】
上位装置からのアクセス要求に応じて記憶媒体にリードアクセスまたはライトアクセスするとともに、リードアクセスに際して発生したリードエラーを検査して交代処理を施行する記憶媒体制御装置であって、
前記リードエラーが発生した記憶媒体上のエラー発生箇所に対して複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査するエラー検査手段と、
前記エラー検査手段による検査においてリードエラーが複数回再現された場合に、前記エラー発生箇所に対して交代処理を施行する交代処理手段と、
を備えたことを特徴とする記憶媒体制御装置。
【請求項２】
前記リードエラーの発生に応じて、当該リードエラーが発生した記憶媒体上のエラー発生箇所を示す情報を記憶するエラー発生箇所記憶手段を備え、
前記エラー検査手段は、記憶媒体パトロール時に、前記エラー発生箇所記憶手段に記憶されたエラー発生箇所を示す情報に基づいて、当該エラー発生箇所に対して複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査することを特徴とする請求項１に記載の記憶媒体制御装置。
【請求項３】
前記エラー検査手段による検査においてリードエラーが複数回再現された場合に、前記エラー発生箇所に対してデータを書き込むデータ書込手段をさらに備え、
前記エラー検査手段は、前記データ書込手段によってデータが書き込まれたエラー発生箇所に対して再び複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査し、
前記交代処理手段は、前記エラー検査手段による再度の検査においてリードエラーが複数回再現された場合に、前記エラー発生箇所に対して交代処理を施行することを特徴とする請求項１または２に記載の記憶媒体制御装置。
【請求項４】
前記エラー検査手段による再度の検査においてリードエラーが複数回再現されなかった場合に、前記エラー発生箇所を再検査成功箇所として記憶する再検査成功箇所記憶手段をさらに備え、
前記交代処理手段は、前記再検査成功箇所記憶手段に記憶された再検査成功箇所について再びリードエラーが発生した場合に、当該再検査成功箇所に対して交代処理を施行することを特徴とする請求項３に記載の記憶媒体制御装置。
【請求項５】
前記エラー検査手段は、前記交代処理手段によって交代処理が施行されたエラー発生箇所の周辺に位置する周辺箇所についても、複数回のリードアクセスを試みてリードエラーが複数回発生するか否かを検査し、
前記交代処理手段は、前記エラー検査手段による検査において前記周辺箇所についてリードエラーが複数回発生した場合には、当該周辺箇所に対しても交代処理を施行することを特徴とする請求項１〜４のいずれか一つに記載の記憶媒体制御装置。
【請求項６】
前記エラー検査手段は、ライトエラー発生後の再ライトアクセスでデータが書き込まれた再ライト箇所についても、複数回のリードアクセスを試みてリードエラーが複数回発生するか否かを検査し、
前記交代処理手段は、前記エラー検査手段による検査において前記再ライト箇所についてリードエラーが複数回発生した場合には、当該再ライト箇所に対しても交代処理を施行することを特徴とする請求項１〜５のいずれか一つに記載の記憶媒体制御装置。
【請求項７】
上位装置からのアクセス要求に応じて記憶媒体にリードアクセスまたはライトアクセスするとともに、リードアクセスに際して発生したリードエラーを検査して交代処理を施行する記憶媒体制御装置であって、
前記リードエラーが発生した記憶媒体上のエラー発生箇所に対してデータを書き込むデータ書込手段と、
前記データ書込手段によってデータが書き込まれたエラー発生箇所に対してリードアクセスを試みてリードエラーが再現されるか否かを検査するエラー検査手段と、
前記エラー検査手段による検査においてリードエラーが再現された場合に、前記エラー発生箇所に対して交代処理を施行する交代処理手段と、
を備えたことを特徴とする記憶媒体制御装置。
【請求項８】
前記エラー検査手段は、前記エラー発生箇所に対して複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査することを特徴とする請求項７に記載の記憶媒体制御装置。
【請求項９】
上位装置からのアクセス要求に応じて記憶媒体にリードアクセスまたはライトアクセスするとともに、リードアクセスに際して発生したリードエラーを検査して交代処理を施行する記憶媒体制御方法であって、
前記リードエラーが発生した記憶媒体上のエラー発生箇所に対して複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査するエラー検査工程と、
前記エラー検査工程による検査においてリードエラーが複数回再現された場合に、前記エラー発生箇所に対して交代処理を施行する交代処理工程と、
を含んだことを特徴とする記憶媒体制御方法。
【請求項１０】
上位装置からのアクセス要求に応じて記憶媒体にリードアクセスまたはライトアクセスするとともに、リードアクセスに際して発生したリードエラーを検査して交代処理を施行する方法をコンピュータに実行させる記憶媒体制御プログラムであって、
前記リードエラーが発生した記憶媒体上のエラー発生箇所に対して複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査するエラー検査手順と、
前記エラー検査手順による検査においてリードエラーが複数回再現された場合に、前記エラー発生箇所に対して交代処理を施行する交代処理手順と、
をコンピュータに実行させることを特徴とする記憶媒体制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、上位装置からのアクセス要求に応じて記憶媒体（例えば、ディスクなど）にリードアクセスまたはライトアクセスするとともに、リードアクセスに際して発生したリードエラーを検査して交代処理を施行する記憶媒体制御装置、記憶媒体制御方法および記憶媒体制御プログラム（例えば、ディスク制御装置、ディスク制御方法およびディスク制御プログラム）に関する。
【背景技術】
【０００２】
従来より、ディスクアレイやＲＡＩＤ（Redundant Array of Inexpensive Disks）と呼ばれるディスク制御装置では、複数のディスクを利用することで、並列動作による性能向上や高い信頼性の実現を図っている。そして、このようなディスク制御装置には、ディスクへのリードアクセスに対してリードエラーの応答があった場合に、読み取るべきデータを他のディスクに記憶されたデータから復元するだけでなく、リードエラーが根本的な媒体欠陥によるものであるかを検査して交代処理を施行するようにしたものもある。
【０００３】
これを具体的に説明すると、かかるディスク制御装置では、リードエラーが発生した場合に、エラーが発生した箇所（セクタ）に対して再びリードアクセスを試みる。そして、このリトライに対してデータを読み取ることができた場合には、突発的なリードエラーであると判断して、読み取ったデータを通常通り上位装置（ホストコンピュータ）に転送する。一方、リトライに対しても再びリードエラーの応答があった場合には、根本的な媒体欠陥によるリードエラーであると判断して、読み取るべきデータを他のディスクから復元してホストコンピュータに転送するとともに、エラーが発生したセクタに代えて新たなセクタを交代セクタとして割当て、この交代セクタに復元したデータを書き込む交代処理を施行する（例えば、特許文献１参照）。
【０００４】
【特許文献１】特開平１０−２４７１３３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、上記した従来の技術は、以下に説明するように、リードエラーの要因を正確に判別することができないために、交代処理が必要である箇所について交代処理が施行されない結果、パフォーマンス低下や二重故障という問題があり、その一方、交代処理が必要でない箇所について交代処理が施行される結果、交代領域の浪費という問題があった。
【０００６】
すなわち、上記した従来の技術では、エラー発生箇所へのリトライに対して再びリードエラーの応答があるか否かによって交代処理の要否を判断するが、例えば、重度の媒体欠陥ではない軽度の媒体欠陥によってリードエラーが発生した場合には、リトライに対してリードエラーが常に応答されるとは限らないので、突発的なリードエラーであるとして交代処理が施行されないこともある。この場合、媒体欠陥は軽度であっても、リードエラーが発生した箇所においては今後もリードエラーが頻発するので、その度にリトライが行われたのではディスク制御装置のパフォーマンスが低下することになり、さらに、このような媒体欠陥に対して交代処理を施行せずに放置したのでは二重故障の原因にもなる。
【０００７】
その一方、媒体に欠陥が全く無いような場合でも、リトライに対して突発的な要因でリードエラーが応答されることもあるが、上記した従来の技術では、このようなリードエラーについても交代処理を施行してしまう。この場合、リードエラーが発生した箇所については媒体欠陥が無く、交代処理が必要でない箇所であるので、交代領域を無駄に消費することになる。
【０００８】
さらに、ディスクのヘッドが媒体に接触する衝撃で熱減磁作用が働いてデータが消失することがあるが、上記した従来の技術では、かかる熱減磁作用によってリードエラーが発生した場合に、リトライに対してリードエラーが常に応答されるので、根本的な媒体欠陥であるとして交代処理を施行する。この場合も、リードエラーが発生した箇所については媒体欠陥が無く、データを再度書き込めば正常にデータを読み取ることができる箇所であるので、交代領域を無駄に消費することになる。
【０００９】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、リードエラーに対する交代処理の要否を精度良く判別することができ、交代処理を適切に施行することが可能な記憶媒体制御装置、記憶媒体制御方法および記憶媒体制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するため、請求項１に係る発明は、上位装置からのアクセス要求に応じて記憶媒体にリードアクセスまたはライトアクセスするとともに、リードアクセスに際して発生したリードエラーを検査して交代処理を施行する記憶媒体制御装置であって、前記リードエラーが発生した記憶媒体上のエラー発生箇所に対して複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査するエラー検査手段と、前記エラー検査手段による検査においてリードエラーが複数回再現された場合に、前記エラー発生箇所に対して交代処理を施行する交代処理手段と、を備えたことを特徴とする。
【００１１】
また、請求項２に係る発明は、上記の発明において、前記リードエラーの発生に応じて、当該リードエラーが発生した記憶媒体上のエラー発生箇所を示す情報を記憶するエラー発生箇所記憶手段を備え、前記エラー検査手段は、記憶媒体パトロール時に、前記エラー発生箇所記憶手段に記憶されたエラー発生箇所を示す情報に基づいて、当該エラー発生箇所に対して複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査することを特徴とする。
【００１２】
また、請求項３に係る発明は、上記の発明において、前記エラー検査手段による検査においてリードエラーが複数回再現された場合に、前記エラー発生箇所に対してデータを書き込むデータ書込手段をさらに備え、前記エラー検査手段は、前記データ書込手段によってデータが書き込まれたエラー発生箇所に対して再び複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査し、前記交代処理手段は、前記エラー検査手段による再度の検査においてリードエラーが複数回再現された場合に、前記エラー発生箇所に対して交代処理を施行することを特徴とする。
【００１３】
また、請求項４に係る発明は、上記の発明において、前記エラー検査手段による再度の検査においてリードエラーが複数回再現されなかった場合に、前記エラー発生箇所を再検査成功箇所として記憶する再検査成功箇所記憶手段をさらに備え、前記交代処理手段は、前記再検査成功箇所記憶手段に記憶された再検査成功箇所について再びリードエラーが発生した場合に、当該再検査成功箇所に対して交代処理を施行することを特徴とする。
【００１４】
また、請求項５に係る発明は、上記の発明において、前記エラー検査手段は、前記交代処理手段によって交代処理が施行されたエラー発生箇所の周辺に位置する周辺箇所についても、複数回のリードアクセスを試みてリードエラーが複数回発生するか否かを検査し、前記交代処理手段は、前記エラー検査手段による検査において前記周辺箇所についてリードエラーが複数回発生した場合には、当該周辺箇所に対しても交代処理を施行することを特徴とする。
【００１５】
また、請求項６に係る発明は、上記の発明において、前記エラー検査手段は、ライトエラー発生後の再ライトアクセスでデータが書き込まれた再ライト箇所についても、複数回のリードアクセスを試みてリードエラーが複数回発生するか否かを検査し、前記交代処理手段は、前記エラー検査手段による検査において前記再ライト箇所についてリードエラーが複数回発生した場合には、当該再ライト箇所に対しても交代処理を施行することを特徴とする。
【００１６】
また、請求項７に係る発明は、上位装置からのアクセス要求に応じて記憶媒体にリードアクセスまたはライトアクセスするとともに、リードアクセスに際して発生したリードエラーを検査して交代処理を施行する記憶媒体制御装置であって、前記リードエラーが発生した記憶媒体上のエラー発生箇所に対してデータを書き込むデータ書込手段と、前記データ書込手段によってデータが書き込まれたエラー発生箇所に対してリードアクセスを試みてリードエラーが再現されるか否かを検査するエラー検査手段と、前記エラー検査手段による検査においてリードエラーが再現された場合に、前記エラー発生箇所に対して交代処理を施行する交代処理手段と、を備えたことを特徴とする。
【００１７】
また、請求項８に係る発明は、上記の発明において、前記エラー検査手段は、前記エラー発生箇所に対して複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査することを特徴とする。
【００１８】
また、請求項９に係る発明は、上位装置からのアクセス要求に応じて記憶媒体にリードアクセスまたはライトアクセスするとともに、リードアクセスに際して発生したリードエラーを検査して交代処理を施行する記憶媒体制御方法であって、前記リードエラーが発生した記憶媒体上のエラー発生箇所に対して複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査するエラー検査工程と、前記エラー検査工程による検査においてリードエラーが複数回再現された場合に、前記エラー発生箇所に対して交代処理を施行する交代処理工程と、を含んだことを特徴とする。
【００１９】
また、請求項１０に係る発明は、上位装置からのアクセス要求に応じて記憶媒体にリードアクセスまたはライトアクセスするとともに、リードアクセスに際して発生したリードエラーを検査して交代処理を施行する方法をコンピュータに実行させる記憶媒体制御プログラムであって、前記リードエラーが発生した記憶媒体上のエラー発生箇所に対して複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査するエラー検査手順と、前記エラー検査手順による検査においてリードエラーが複数回再現された場合に、前記エラー発生箇所に対して交代処理を施行する交代処理手順と、をコンピュータに実行させることを特徴とする。
【発明の効果】
【００２０】
請求項１、９または１０の発明によれば、エラー発生箇所に対して複数回のリードアクセスを試みてリードエラーが何度も再現される場合に、看過できない媒体欠陥があるとして交代処理を施行するので、重度や軽度の媒体欠陥に対してはリードエラーが何度も再現される結果、交代処理を施行するが、突発的な要因に対しては何度もリードエラーが再現されることがない結果、交代処理を施行しない。このため、リードエラーに対する交代処理の要否を精度良く判別することができ、交代処理を適切に施行することが可能である。すなわち、ディスク制御装置のパフォーマンス低下や二重故障を防止する一方で、ディスクにおける交代領域の無駄な消費を防止することが可能である。
【００２１】
また、請求項２の発明によれば、リードエラーの発生時にエラー検査処理を実行するのではなく、エラー発生箇所を示す情報を記憶することで事後的にエラー検査処理を実行するので、リードエラーの発生時には上位装置への応答を優先することができ、応答パフォーマンスの低下を防止することが可能である。特に、上位装置からのアクセス要求が少ないディスクパトロール時にエラー処理を行うので、応答パフォーマンスの低下を確実に防止することが可能である。また、ディスクパトロール時であれば、リードアクセスの回数を大幅に増やしてもパフォーマンスが低下するおそれがなくなるので、リードアクセスの回数増加によって一層精度良く交代処理の要否を判別するようにすることが可能である。さらに、ディスクパトロール時にディスクの全面を診断するのではなく、ディスク上のエラー発生箇所のみを集中的に診断することになるので、効率的に診断を行うことが可能である。
【００２２】
また、請求項３の発明によれば、リードエラーが何度も再現される場合でも、エラー発生箇所に対してデータを書き込んだ後に、再びリードアクセスを試みてリードエラーが再現されるか否かを検査した上で交代処理を施行するので、熱減磁作用によるリードエラーについては書き込み後のエラー検査でリードエラーが再現されなくなる結果、交代処理を施行しない。このため、ディスクにおける交代領域の無駄な消費を防止することが可能である。また、書き込み後のエラー検査においても、複数回のリードアクセスを試みてリードエラーが何度も再現されるか否かを検査するので、軽度の媒体欠陥や突発的な要因に対しても交代処理の要否を精度良く判別することが可能である。
【００２３】
また、請求項４の発明によれば、書き込み後のエラー検査でリードエラーの再現がなくなった箇所については再検査成功箇所として記憶しておき、この再検査成功箇所でリードエラーが再び発生した場合にエラー検査を経ることなく交代処理を施行するので、今後もリードエラーが発生する可能性が高い箇所に対して積極的に交代処理が施行される結果、ディスク制御装置のパフォーマンス低下や二重故障を積極的に防止することが可能である。
【００２４】
また、請求項５の発明によれば、交代処理が施行された箇所の周辺箇所についても同様のエラー検査を行った上で交代処理を施行するので、同様の媒体欠陥が生じている可能性が高い箇所についてエラー検査が行われて交代処理が施行される結果、後に発生したであろうリードエラーを事前に取り除くことができ、ディスク制御装置のパフォーマンス低下を積極的に防止することが可能である。
【００２５】
また、請求項６の発明によれば、ライトエラー発生後の再ライトアクセスでデータが書き込まれた再ライト箇所についても同様のエラー検査を行った上で交代処理を施行するので、何かしらの欠陥が生じている可能性がある箇所についてエラー検査が行われて交代処理が施行される結果、後に発生したであろうリードエラーを事前に取り除くことができ、ディスク制御装置のパフォーマンス低下を積極的に防止することが可能である。
【００２６】
また、請求項７の発明によれば、エラー発生箇所に対してデータを書き込んだ後に、リードアクセスを試みてリードエラーが再現される場合に、看過できない媒体欠陥があるとして交代処理を施行するので、熱減磁作用によるリードエラーについては書き込み後にリードエラーが再現されなくなる結果、交代処理を施行しない。このため、リードエラーに対する交代処理の要否を精度良く判別することができ、交代処理を適切に施行することが可能である。すなわち、ディスクにおける交代領域の無駄な消費を防止することが可能である。
【００２７】
また、請求項８の発明によれば、書き込み後のエラー検査では、複数回のリードアクセスを試みてリードエラーが何度も再現されるか否かを検査するので、軽度の媒体欠陥や突発的な要因に対しても交代処理の要否を精度良く判別することができ、ディスク制御装置のパフォーマンス低下や二重故障を防止することが可能である。
【発明を実施するための最良の形態】
【００２８】
以下に添付図面を参照して、この発明に係る記憶媒体制御装置、記憶媒体制御方法および記憶媒体制御プログラムの実施例を詳細に説明する。なお、以下では、いわゆるＲＡＩＤ１で構成されるディスク装置（二重化された複数のディスクを備えるディスク装置）を制御するディスク制御装置を実施例１として説明した後に、本発明に含まれる他の実施例を実施例２として説明する。
【実施例１】
【００２９】
以下の実施例１では、実施例１に係るディスク制御装置の概要および特徴、ディスク制御装置の構成および処理の流れを順に説明し、最後に実施例１による効果を説明する。
【００３０】
［概要および特徴（実施例１）］
まず最初に、図１を用いて、実施例１に係るディスク制御装置の概要および特徴を説明する。図１は、実施例１に係るディスク制御装置の概要および特徴を説明するための図である。同図に示すように、このディスク制御装置１０は、上位装置であるホストコンピュータ２０からのリードアクセス要求やライトアクセス要求に応じて、二重化された複数のディスクを備えるディスク装置３０に対してリードアクセスまたはライトアクセスする。
【００３１】
また、ディスク制御装置１０は、リードアクセスによってデータが読み取られた場合には、読み取ったデータをホストコンピュータ２０に転送するが、リードアクセスに対してディスク装置３０からリードエラー（データが読み取れない旨を示すエラー）の応答があった場合には、読み取るべきデータを他のミラーディスクから読み取ることで復元し、復元したデータをホストコンピュータ２０に転送する。さらに、ディスク制御装置１０は、リードエラーが根本的な媒体欠陥によるものであるかを検査し、そうであるならば、リードエラーが発生したセクタに代えて新たなセクタを交代セクタとして割当て、この交代セクタに対して他のミラーディスクから読み取ったデータを書き込む。
【００３２】
同様に、ディスク制御装置１０は、ライトアクセスによってデータが書き込めずにライトエラーが発生した場合には、再びライトアクセスを試みる。そして、再ライトアクセスでもライトエラーが発生した場合には、ライトエラーが発生したセクタとは別のセクタを新たな書込箇所として選択し、この新たなセクタに対してデータを書き込む。
【００３３】
なお、実施例１においては、ディスク上のリードエラーが発生したセクタを「エラー発生箇所」といい、かかるエラー発生箇所に代えて新たなセクタを交代セクタとして割当てて復元データを書き込む処理を「交代処理」といい、リードエラーの要因を検査して交代処理の要否を判断する処理を「エラー検査処理」という。また、ライトエラー発生後の再ライトアクセスでデータが書き込まれた箇所を「再ライト箇所」という。
【００３４】
このような概要を有するディスク制御装置１０は、上記したエラー検査処理に主たる特徴があり、具体的には、エラー発生箇所に対して複数回のリードアクセスを試みてリードエラーが何度も再現されるかを検査し、何度もリードエラーが再現される場合には看過できない媒体欠陥があるとして交代処理を施行するようにしている。このため、リードエラーに対する交代処理の要否を精度良く判別することができ、交代処理を適切に施行することが可能になる。
【００３５】
この主たる特徴について簡単に説明すると、リードエラーの要因としては、図１に示すように、例えば、重い媒体欠陥、軽い媒体欠陥、突発的要因などがある。このうち、重い媒体欠陥については、明らかに交代処理が必要な場合であり、例えば、１回のリトライ（エラー発生箇所に対してリードアクセスを１回試みてリードエラーが再現される場合に交代処理を施行する手法）でエラー検査を行ったとしても、リードエラーが再現されるので、適切に交代処理が施行される。
【００３６】
しかしながら、軽い媒体欠陥がリードエラーの要因である場合には、ディスク制御装置１０のパフォーマンス低下や二重故障を防止する観点から交代処理が必要であるにもかかわらず、１回のリトライでは場合によってリードエラーが再現されないことがあるので、適切に交代処理が施行されない場合がある。その一方、１回のリトライに対して突発的な要因でリードエラーが応答される場合には、交代処理が必要でないにもかかわらず、交代処理が施行されるので、ディスクにおける交代領域を無駄に消費してしまう。
【００３７】
そこで、ディスク制御装置１０では、エラー発生箇所に対して複数回（例えば数十回、数百回）のリードアクセスを試みてリードエラーが何度も（例えば２回以上）再現される場合に交代処理を施行するようにしている。このため、重度や軽度の媒体欠陥に対してはリードエラーが何度も再現される結果、交代処理を施行するが、突発的な要因に対しては何度もリードエラーが再現されることがない結果、交代処理を施行しない。したがって、上記したように、リードエラーに対する交代処理の要否を精度良く判別することができ、交代処理を適切に施行することが可能になる。すなわち、ディスク制御装置１０のパフォーマンス低下や二重故障を防止する一方で、ディスクにおける交代領域の無駄な消費を防止することが可能である。
【００３８】
ところで、リードエラーの要因としては、図１に示すように、熱減磁作用によるものもある。この場合には、ディスクのヘッドが媒体に接触する衝撃でデータが消失しただけであり、データを再度書き込めば正常にデータを読み取ることができるので、交代処理が本来的には必要でない。しかしながら、データが消失している状態で、１回もしくは複数回のリードアクセスをエラー検査として行っても、リードエラーが常に再現され、交代処理が施行されるので、ディスクにおける交代領域を無駄に消費してしまう。
【００３９】
そこで、ディスク制御装置１０では、上記した主たる特徴の他に、リードエラーが何度も再現される場合でも、エラー発生箇所に対してデータを書き込んだ後に、再びリードアクセスを試みてリードエラーが再現されるか否かを検査した上で交代処理を施行するようにしている。このようにすれば、熱減磁作用によるリードエラーについては書き込み後のエラー検査でリードエラーが再現されなくなる結果、交代処理が施行されなくなるので、ディスクにおける交代領域の無駄な消費を防止することが可能である。
【００４０】
なお、ディスク制御装置１０では、このような特徴の他に、上記した書き込み後のエラー検査でリードエラーの再現がなくなった箇所については再検査成功箇所として記憶しておき、この再検査成功箇所でリードエラーが再び発生した場合にエラー検査を経ることなく交代処理を施行する点、リードエラーの発生時にエラー検査処理を実行するのではなく、エラー発生箇所を示す情報を記憶することで事後的にエラー検査処理を実行する点、交代処理が施行された箇所の周辺箇所についても同様のエラー検査を行った上で交代処理を施行する点、ライトエラー発生後の再ライトアクセスでデータが書き込まれた再ライト箇所についても同様のエラー検査を行った上で交代処理を施行する点にも特徴がある。
【００４１】
［ディスク制御装置（実施例１）］
続いて、図２〜図５を用いて、実施例１に係るディスク制御装置１０の構成を説明する。図２は、実施例１に係るディスク制御装置１０の構成を示すブロック図であり、図３は、ディスク上のトラックおよびセクタを説明するための図であり、図４は、エラー発生箇所記憶部を説明するための図であり、図５は、再検査成功箇所記憶部を説明するための図である。
【００４２】
図２に示すように、ディスク制御装置１０は、ＳＣＳＩバスやＰＣＩバスなどを介して、ホストコンピュータ２０およびディスク装置３０とそれぞれ接続される。ここで、ホストコンピュータ２０は、ディスク制御装置１０に対してリードアクセス要求やライトアクセス要求を送出する上位装置である。
【００４３】
また、ディスク装置３０は、図２に示すように、二重化された複数のディスクを所定のバスで接続して構成される。そして、各ディスクは、回転する円盤状の記録媒体（磁気記録媒体や光記録媒体、光磁気記録媒体など）や、その記録媒体上を半径方向に移動してデータをリード／ライトするヘッドなどを備えて構成される。また、ディスク上では、図３に例示するように、記録媒体がトラックと呼ばれる複数の同心円状の領域に区切られ、さらに、各トラックはセクタと呼ばれる単位に区切られ、かかるセクタ単位（一般的に５１２バイト単位）でデータの読み書きが行われる。
【００４４】
一方、ディスク制御装置１０は、図２に示すように、ホスト転送制御部１１と、ディスク転送制御部１２と、キャッシュ１３と、キャッシュ制御部１４と、記憶部１５と、制御部１６とを所定のバスで接続して構成される。以下に、これらの各部の処理を説明する。
【００４５】
このうち、ホスト転送制御部１１は、ホストコンピュータ１０との間におけるデータ転送を制御するためのＤＭＡ（Direct Memory Access）を含むプロトコルプロセッサである。例えば、ホストコンピュータ２０からリードアクセス要求やライトアクセス要求を受け取ると、制御部１６（後述するアクセス制御部１６ａ）に対して割り込み要求を送出する。また、ライトアクセス要求に応じたデータ転送指示をアクセス制御部１６ａから受け取ると、ホストコンピュータ２０から送出された書き込みデータをキャッシュ１３に格納する。さらに、リードアクセス要求に応じて読み取られたデータ（さらには、リードエラーの発生に起因して復元されたデータ）がキャッシュ１３に格納されると、アクセス制御部１６ａからの指示に応じて、キャッシュ１３に格納されたデータをホストコンピュータ２０に転送する。
【００４６】
ディスク転送制御部１２は、ディスク装置３０との間におけるデータ転送を制御するためのディスク側ＤＭＡを含むプロトコルプロセッサである。例えば、ライトアクセス要求に伴って書き込みデータがキャッシュ１３に格納されると、アクセス制御部１６ａからの指示に応じて、キャッシュ１３に格納されたデータをディスク装置１０における所定ディスクの所定トラックの所定セクタに書き込む。また、リードアクセス要求に応じたリードアクセス指示をアクセス制御部１６ａから受け取ると、ディスク装置１０における所定ディスクの所定トラックの所定セクタからリードアクセス要求に係るデータを読み取り、読み取ったデータをキャッシュ１３に格納する。さらに、リードエラーが発生すると、アクセス制御部１６ａからの指示に応じて、ミラーディスクから代わりのデータを読み取り、これを復元されたデータとしてキャッシュ１３に格納する。
【００４７】
キャッシュ１３は、上記のように、ホストコンピュータ２０から送出された書き込みデータや、ディスク装置３０から読み取られた読み取りデータ（さらには、リードエラーの発生に起因して復元されたデータ）を一時的に格納するメモリである。そして、キャッシュ制御部１４は、かかるキャッシュ１３に対するデータの読み書きを制御するプロセッサである。
【００４８】
記憶部１５は、制御部１６による各種処理に必要なデータやプログラムを格納するメモリであり、特に本発明に密接に関連するものとしては、図２に示すように、エラー発生箇所記憶部１５ａと、再検査成功箇所記憶部１５ｂとを備える。なお、エラー発生箇所記憶部１５ａは特許請求の範囲に記載の「エラー発生箇所記憶手段」に対応し、再検査成功箇所記憶部１５ｂは同じく「再検査成功箇所記憶手段」に対応する。
【００４９】
かかる記憶部１５のなかで、エラー発生箇所記憶部１５ａは、ディスク上のエラー発生箇所を示す情報を記憶する手段であり、具体的には、図４に例示するように、ディスク番号、トラック番号およびセクタ番号からなる位置情報を記憶する。ここで、エラー発生箇所記憶部１５ａに記憶されるエラー発生箇所としては、リードエラーが発生した箇所だけでなく、交代処理が施行された箇所の周辺箇所（例えば、図３に示すように、交代処理が施行された箇所に隣接する８つの箇所）や、ライトエラー発生後の再ライトアクセスでデータが書き込まれた再ライト箇所も記憶される。これは、かかる周辺箇所や再ライト箇所に対しても、通常のエラー発生箇所と同様のエラー検査を実施できるようにするためである。また、エラー発生箇所記憶部１５ａに記憶されたエラー発生箇所の情報は、エラー検査でリードエラーが再現されなかった場合や、交代処理が施行された場合に削除される。
【００５０】
また、再検査成功箇所記憶部１５ｂは、後述する書き込み後のエラー検査でリードエラーの再現がなくなったエラー発生箇所を示す情報を再検査成功箇所として記憶する手段であり、具体的には、図５に例示するように、ディスク番号、トラック番号およびセクタ番号からなる位置情報を記憶する。ここで、再検査成功箇所記憶部１５ｂには、エラー発生箇所記憶部１５ａに記憶されたエラー発生箇所のうち、書き込み後のエラー検査でリードエラーの再現がなくなった箇所が記憶される。これは、かかる再検査成功箇所でリードエラーが再び発生した場合にエラー検査を経ることなく交代処理を施行できるようにするためである。また、再検査成功箇所記憶部１５ｂに記憶された再検査成功箇所の情報は、交代処理が施行された場合に削除される。
【００５１】
ディスク制御装置１０の説明に戻ると、制御部１６は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行するプロセッサであり、特に本発明に密接に関連するものとしては、図２に示すように、アクセス制御部１６ａと、パトロール部１６ｂと、エラー検査部１６ｃと、データ書込部１６ｄと、交代処理部１６ｅとを備える。なお、エラー検査部１６ｃは特許請求の範囲に記載の「エラー検査手段」に対応し、データ書込部１６ｄは同じく「データ書込手段」に対応し、交代処理部１６ｅは同じく「交代処理手段」に対応する。
【００５２】
かかる制御部１６のなかで、アクセス制御部１６ａは、上記したホスト転送制御部１１、ディスク転送制御部１２、キャッシュ１３およびキャッシュ制御部１４を制御して、ホストコンピュータ２０からのリードアクセス要求やライトアクセス要求を処理する処理部である。ここで、かかるアクセス制御部１６ａによるアクセス制御処理において、アクセス制御部１６ａは、ディスク制御装置１０からリードエラーの応答があった場合には、リードエラーが発生した箇所を示す情報をエラー発生箇所記憶部１５ａに登録し、また、ライトエラー発生後の再ライトアクセスでデータが書き込まれた場合にも、この再ライト箇所を示す情報をエラー発生箇所記憶部１５ａに登録する。なお、かかるアクセス制御処理の詳細については図６を用いて後に説明する。
【００５３】
パトロール部１６ｂは、ディスク装置３０の各ディスクの全面を巡回して異常を検出し、かかる異常が検出された箇所に対して診断や修復を施行する処理部である。このパトロール処理は、後述するエラー検査処理において、エラー発生箇所記憶部１５ａにエラー発生箇所が登録されていない場合に施行される。なお、このパトロール処理によって、アクセス頻度の低い箇所における異常も早期に検出されて修復が施されることになる。
【００５４】
エラー検査部１６ｃは、上記のエラー発生箇所記憶部１５ａに記憶されたエラー発生箇所に対して複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査する処理部である。ここで、かかるエラー検査部１６ｃによるエラー検査処理は、ホストコンピュータ２０からのアクセス要求が少ないディスクパトロール時に実行される。また、かかるエラー検査でリードエラーが何度も再現される場合でも、後述するデータ書込部１６ｄによってエラー発生箇所に対してデータを書き込んで再びエラー検査を行う。そして、書き込み後のエラー検査でリードエラーの再現がなくなった場合には、この再検査成功箇所を示す情報を再検査成功箇所記憶部１５ｂに登録する。なお、かかるエラー検査処理の詳細については図７を用いて後に説明する。
【００５５】
データ書込部１６ｄは、上記のエラー検査部１６ｃによるエラー検査処理において、エラー発生箇所に対するエラー検査でリードエラーが何度も再現される場合に、かかるエラー発生箇所に対してデータを書き込む処理部である。具体的には、ディスク転送制御部１２およびキャッシュ制御部１４を制御して、エラー発生箇所にあるべきデータをミラーディスクから代わりに読み取ってキャッシュ１３に一旦格納した後、これをエラー発生箇所に対して書き込む。
【００５６】
交代処理部１６ｅは、上記のエラー検査部１６ｃによるエラー検査処理において、書き込み後のエラー検査でもリードエラーが何度も再現されるエラー発生箇所に代えて新たなセクタを交代セクタとして割当て、この交代セクタにデータを書き込む処理部である。具体的には、上記のデータ書込部１６ｄと同様、ディスク転送制御部１２およびキャッシュ制御部１４を制御して、エラー発生箇所にあるべきデータをミラーディスクから代わりに読み取ってキャッシュ１３に一旦格納した後、これを交代セクタに対して書き込む。
【００５７】
［アクセス制御処理（実施例１）］
次に、実施例１に係るディスク制御装置１０によるアクセス制御処理を説明する。図６は、実施例１におけるアクセス制御処理の手順を示すフローチャートである。なお、以下では、ディスク制御装置１０における制御部１６のアクセス制御部１６ａによる処理としてアクセス制御処理を説明する。
【００５８】
図６に示すように、アクセス制御部１６ａは、ホストコンピュータ２０が送出したアクセス要求をホスト転送制御部１１から受け取ると（ステップＳ６０１肯定）、かかるアクセス要求を制御部１６の内部メモリに格納し、これがリードアクセス要求であるかライトアクセス要求であるかを判別する（ステップＳ６０２）。
【００５９】
ここで、アクセス要求がリードアクセス要求であった場合には（ステップＳ６０２肯定）、アクセス制御部１６ａは、ディスク転送制御部１２を制御してディスクにリードアクセスし、リードアクセス要求に係るデータをディスク装置１０における所定ディスクの所定トラックの所定セクタから読み取る（ステップＳ６０３）。
【００６０】
そして、かかるリードアクセスに対してディスク装置３０からリードエラーの応答がなく、リードが成功した場合には（ステップＳ６０４肯定）、アクセス制御部１６ａは、ディスク転送制御部１２およびキャッシュ制御部１４を制御して、ディスク装置３０から読み取ったデータをキャッシュ１３に格納する（ステップＳ６０５）。さらに、アクセス制御部１６ａは、ホスト転送制御部１１を制御して、キャッシュ１３に格納された読み取りデータをホストコンピュータ２０に転送した後（ステップＳ６０６）、図６に示すようにアクセス制御処理を終了する。
【００６１】
これとは反対に、リードアクセスに対してディスク装置３０からリードエラーの応答があった場合には（ステップＳ６０４否定）、アクセス制御部１６ａは、ディスク転送制御部１２を介してミラーディスクにリードアクセスし、代わりのデータを読み取ってエラー発生箇所にあるべきデータを復元する（ステップＳ６０７）。さらに、アクセス制御部１６ａは、ディスク転送制御部１２およびキャッシュ制御部１４を制御して、復元されたデータをキャッシュ１３に格納するとともに（ステップＳ６０８）、リードエラーが発生したエラー発生箇所をエラー発生箇所記憶部１５ａに登録する（ステップＳ６０９）。その後、アクセス制御部１６ａは、ホスト転送制御部１１を制御して、キャッシュ１３に格納されたデータをホストコンピュータ２０に転送した後（ステップＳ６０６）、図６に示すようにアクセス制御処理を終了する。
【００６２】
ここで、上記のステップＳ６０２の説明に戻ると、アクセス要求がライトアクセス要求であった場合には（ステップＳ６０２否定）、アクセス制御部１６ａは、ホスト転送制御部１１を制御して、ホストコンピュータ２０から送出された書き込みデータをキャッシュ１３に格納する（ステップＳ６１０）。その上で、アクセス制御部１６ａは、ディスク転送制御部１２を制御してディスクにライトアクセスし、キャッシュ１３に格納されたデータをディスク装置１０における所定ディスクの所定トラックの所定セクタに書き込む（ステップＳ６１１）。
【００６３】
そして、かかるライトアクセスに対してディスク装置３０からライトエラーの応答がなく、ライトが成功した場合には（ステップＳ６１２肯定）、アクセス制御部１６ａは、図６に示す通り、そのままアクセス制御処理を終了する。その一方、ディスク装置３０からライトエラーの応答があった場合には（ステップＳ６１２否定）、ディスク転送制御部１２を制御してディスクに対するライトアクセスを再び試みる（ステップＳ６１３）。
【００６４】
ここで、二度目のライトアクセスでライトが成功した場合には（ステップＳ６１４肯定）、アクセス制御部１６ａは、かかる再ライトアクセスでデータが書き込まれた再ライト箇所をエラー発生箇所記憶部１５ａに登録した後（ステップＳ６１５）、図６に示すようにアクセス制御処理を終了する。
【００６５】
これとは反対に、再ライトアクセスに対してもディスク装置３０からライトエラーの応答があった場合には（ステップＳ６１４否定）、アクセス制御部１６ａは、ライトエラーが発生したセクタとは別のセクタを新たな書込箇所として選択した後（ステップＳ６１６）、上記したステップＳ６１１に戻り、かかる新たなセクタに対してライトアクセスを改めて試みる（ステップＳ６１１）。すなわち、ホストコンピュータ２０から送出された書き込みデータがいずれかのセクタに書き込まれるまで（ステップＳ６１２肯定またはステップＳ６１４肯定）、新たなセクタが選択されてライトアクセスが試みられる。
【００６６】
［エラー検査処理（実施例１）］
続いて、実施例１に係るディスク制御装置１０によるエラー検査処理を説明する。図７は、実施例１におけるエラー検査処理の手順を示すフローチャートである。なお、以下では、ディスク制御装置１０における制御部１６のエラー検査部１６ｃによる処理としてエラー検査処理を説明する。
【００６７】
図７に示すように、エラー検査部１６ｃは、ホストコンピュータ２０からのアクセス要求が少ない状況で実施されるディスクパトロールの開始時になると（ステップＳ７０１肯定）、エラー発生箇所記憶部１５ａにエラー発生箇所を示す情報が登録されているか否かを判別する（ステップＳ７０２）。
【００６８】
ここで、エラー発生箇所記憶部１５ａにエラー発生箇所の登録がある場合には（ステップＳ７０２肯定）、エラー検査部１６ｃは、エラー発生箇所記憶部１５ａに記憶されたエラー発生箇所のなかから一つのエラー発生箇所をエラー検査対象として選択する（ステップＳ７０３）。なお、かかる選択の手法は任意であり、例えば、エラー発生箇所記憶部１５ａに登録された順番に従って古い順に選択する手法などがある。
【００６９】
そして、エラー検査部１６ｃは、エラー発生箇所記憶部１５ａから選択したエラー検出箇所が再検査成功箇所として再検査成功箇所記憶部１５ｂにも登録されているか否かを判別する（ステップＳ７０４）。ここで、エラー検出箇所が再検査成功箇所に該当する場合には（ステップＳ７０４肯定）、エラー検査部１６ｃは、交代処理部１６ｅに指示して、エラー検出箇所に対して交代処理を施行する（ステップＳ７０５）。具体的には、エラー検査部１６ｃから指示を受けた交代処理部１６ｅが、ディスク転送制御部１２およびキャッシュ制御部１４を制御して、エラー発生箇所にあるべきデータをミラーディスクから代わりに読み取ってキャッシュ１３に一旦格納した後、これを交代セクタに対して書き込む。
【００７０】
さらに、エラー検査部１６ｃは、交代処理が施行された箇所の周辺箇所（例えば、図３に示すように、交代処理が施行された箇所に隣接する８つの箇所）を示す情報を、エラー発生箇所記憶部１５ａに登録するとともに（ステップＳ７０６）、交代処理が施行されたエラー発生箇所に対応する情報をエラー発生箇所記憶部１５ａおよび再検査成功箇所記憶部１５ｂからそれぞれ削除する（ステップＳ７０７）。
【００７１】
その後、エラー検査部１６ｃは、エラー発生箇所記憶部１５ａからエラー発生箇所の登録がなくなったか否かを判別し（ステップＳ７０８）、エラー発生箇所の登録がある場合には（ステップＳ７０８否定）、上記のステップＳ７０３に戻って、エラー発生箇所記憶部１５ａのなかから一つのエラー発生箇所を新たなエラー検査対象として選択するが（ステップＳ７０３）、エラー発生箇所の登録がない場合には（ステップＳ７０８肯定）、図７に示すように、エラー検査処理を終了する。
【００７２】
ここで、上記のステップＳ７０４の説明に戻ると、エラー発生箇所記憶部１５ａから選択したエラー検出箇所が再検査成功箇所に該当しない場合には（ステップＳ７０４否定）、エラー検査部１６ｃは、ディスク転送制御部１２を制御してディスク上のエラー発生箇所に対して複数回のリードアクセスを試みることで、リードエラーが複数回再現されるか否かを検査する（ステップＳ７０９）。例えば、数十回または数百回のリードアクセスを試みてリードエラーが２回以上再現されるかを検査する。
【００７３】
かかるエラー検査に対してリードエラーが何度も再現される場合には（ステップＳ７１０肯定）、エラー検査部１６ｃは、データ書込部１６ｄに指示して、エラー検出箇所に対してデータを書き込む（ステップＳ７１１）。具体的には、エラー検査部１６ｃから指示を受けたデータ書込部１６ｄは、ディスク転送制御部１２およびキャッシュ制御部１４を制御して、エラー発生箇所にあるべきデータをミラーディスクから代わりに読み取ってキャッシュ１３に一旦格納した後、これをエラー発生箇所に対して書き込む。
【００７４】
この書き込みに続いて、エラー検査部１６ｃは、ディスク転送制御部１２を制御してディスク上のエラー発生箇所に対して再び複数回のリードアクセスを試みることで、リードエラーが複数回再現されるか否かを再び検査する（ステップＳ７１２）。そして、かかる書き込み後のエラー検査に対してもリードエラーが何度も再現される場合には（ステップＳ７１３肯定）、エラー検査部１６ｃは、交代処理部１６ｅに指示して、エラー検出箇所に対して交代処理を施行する（ステップＳ７１４）。
【００７５】
さらに、かかる交代処理に続いて、エラー検査部１６ｃは、交代処理が施行された箇所の周辺箇所を示す情報を、エラー発生箇所記憶部１５ａに登録するとともに（ステップＳ７１５）、交代処理が施行されたエラー発生箇所に対応する情報をエラー発生箇所記憶部１５ａから削除する（ステップＳ７１６）。その後、エラー検査部１６ｃは、図７に示すように、上記したステップＳ７０８の処理、すなわち、エラー発生箇所記憶部１５ａからエラー発生箇所の登録がなくなったか否かを判別する処理に移行する（ステップＳ７０８）。
【００７６】
ここで、上記のステップＳ７１３の説明に戻ると、書き込み後のエラー検査に対してリードエラーが何度も再現されることがなかった場合には（ステップＳ７１３否定）、エラー検査部１６ｃは、このエラー検査が行われたエラー発生箇所を示す情報を再検査成功箇所として再検査成功箇所記憶部１５ｂに登録する一方で（ステップＳ７１７）、かかるエラー発生箇所に対応する情報をエラー発生箇所記憶部１５ａから削除する（ステップＳ７１６）。その後、エラー検査部１６ｃは、図７に示すように、上記したステップＳ７０８の処理に移行する。
【００７７】
また、上記のステップＳ７１０の説明に戻ると、書き込み前のエラー検査に対してリードエラーが何度も再現されることがなかった場合には（ステップＳ７１０否定）、エラー検査部１６ｃは、このエラー検査が行われたエラー発生箇所に対応する情報をエラー発生箇所記憶部１５ａから削除した後に（ステップＳ７１６）、図７に示すように、上記したステップＳ７０８の処理に移行する。
【００７８】
さらに、上記のステップＳ７０２の説明に戻ると、ディスクパトロールの開始時において、エラー発生箇所記憶部１５ａにエラー発生箇所を示す情報が登録されていない場合には（ステップＳ７０２否定）、エラー検査部１６ｃは、パトロール部１６ｂに指示して、パトロール処理を施行した後（ステップＳ７１８）、図７に示すように、エラー検査処理を終了する。具体的には、エラー検査部１６ｃから指示を受けたパトロール部１６ｂが、ディスク装置３０の各ディスクの全面を巡回して異常を検出し、かかる異常が検出された箇所に対して診断や修復を施行した後、エラー検査部１６ｃは、次回のディスクパトロール開始時まで待機状態となる。
【００７９】
［実施例１の効果］
上述してきたように、実施例１によれば、エラー発生箇所に対して複数回のリードアクセスを試みてリードエラーが何度も再現される場合に、看過できない媒体欠陥があるとして交代処理を施行するので、重度や軽度の媒体欠陥に対してはリードエラーが何度も再現される結果、交代処理を施行するが、突発的な要因に対しては何度もリードエラーが再現されることがない結果、交代処理を施行しない。このため、リードエラーに対する交代処理の要否を精度良く判別することができ、交代処理を適切に施行することが可能である。すなわち、ディスク制御装置１０のパフォーマンス低下や二重故障を防止する一方で、ディスクにおける交代領域の無駄な消費を防止することが可能である。
【００８０】
また、実施例１によれば、リードエラーの発生時にエラー検査処理を実行するのではなく、エラー発生箇所を示す情報をエラー発生箇所記憶部１５ａに登録することで事後的にエラー検査処理を実行するので、リードエラーの発生時にはホストコンピュータ２０への応答を優先することができ、応答パフォーマンスの低下を防止することが可能である。特に、ホストコンピュータ２０からのアクセス要求が少ないディスクパトロール時にエラー処理を行うので、応答パフォーマンスの低下を確実に防止することが可能である。また、ディスクパトロール時であれば、リードアクセスの回数を大幅に増やしてもパフォーマンスが低下するおそれがなくなるので、リードアクセスの回数増加によって一層精度良く交代処理の要否を判別するようにすることが可能である。さらに、ディスクパトロール時にディスクの全面を診断するのではなく、ディスク上のエラー発生箇所のみを集中的に診断することになるので、効率的に診断を行うことが可能である。
【００８１】
また、実施例１によれば、リードエラーが何度も再現される場合でも、エラー発生箇所に対してデータを書き込んだ後に、再びリードアクセスを試みてリードエラーが再現されるか否かを検査した上で交代処理を施行するので、熱減磁作用によるリードエラーについては書き込み後のエラー検査でリードエラーが再現されなくなる結果、交代処理を施行しない。このため、ディスクにおける交代領域の無駄な消費を防止することが可能である。また、書き込み後のエラー検査においても、複数回のリードアクセスを試みてリードエラーが何度も再現されるか否かを検査するので、軽度の媒体欠陥や突発的な要因に対しても交代処理の要否を精度良く判別することが可能である。
【００８２】
また、実施例１によれば、書き込み後のエラー検査でリードエラーの再現がなくなった箇所については再検査成功箇所として再検査成功箇所記憶部１５ｂに登録しておき、この再検査成功箇所でリードエラーが再び発生した場合にエラー検査を経ることなく交代処理を施行するので、今後もリードエラーが発生する可能性が高い箇所に対して積極的に交代処理が施行される結果、ディスク制御装置１０のパフォーマンス低下や二重故障を積極的に防止することが可能である。
【００８３】
また、実施例１によれば、交代処理が施行された箇所の周辺箇所についても同様のエラー検査を行った上で交代処理を施行するので、同様の媒体欠陥が生じている可能性が高い箇所についてエラー検査が行われて交代処理が施行される結果、後に発生したであろうリードエラーを事前に取り除くことができ、ディスク制御装置１０のパフォーマンス低下を積極的に防止することが可能である。
【００８４】
また、実施例１によれば、ライトエラー発生後の再ライトアクセスでデータが書き込まれた再ライト箇所についても同様のエラー検査を行った上で交代処理を施行するので、何かしらの欠陥が生じている可能性がある箇所についてエラー検査が行われて交代処理が施行される結果、後に発生したであろうリードエラーを事前に取り除くことができ、ディスク制御装置１０のパフォーマンス低下を積極的に防止することが可能である。
【実施例２】
【００８５】
さて、これまで実施例１に係るディスク制御装置１０について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例２に係るディスク制御装置として、種々の異なる実施例を（１）〜（５）に区分けして説明する。
【００８６】
（１）エラー検査のタイミング
上記の実施例１では、ディスクパトロールの開始時にエラー検査処理を実行する場合を説明したが、図８に示すように、本発明はこれに限定されるものではなく、他の事後的タイミングやリードエラーの発生直後など、任意のタイミングでエラー検査処理を実行するようにしてもよい。なお、図８は、エラー検査のタイミング、対象および手法を説明するための図である。
【００８７】
（２）エラー検査の対象
上記の実施例１では、リードエラーが発生した箇所だけでなく、交代処理が施行された箇所の周辺箇所や、ライトエラー発生後の再ライトアクセスでデータが書き込まれた再ライト箇所についてもエラー検査の対象とする場合を説明したが、図８に示すように、本発明はこれに限定されるものではなく、リードエラー発生箇所のみをエラー検査の対象としてもよく、また、リードエラー発生箇所および交代処理の周辺箇所をエラー検査の対象としてもよく、さらに、リードエラー発生箇所および再ライト箇所をエラー検査の対象としてもよい。
【００８８】
（３）エラー検査の手法
上記の実施例１では、複数回のリードアクセスによるエラー検査の後にデータを書き込んで再び複数回のリードアクセスによるエラー検査を行うとともに、再検査成功箇所でリードエラーが再び発生した場合にエラー検査を経ることなく交代処理を施行する場合を説明したが、図８に示すように、本発明はこれに限定されるものではなく、例えば、データ書込後においては１回のリードアクセスのみでエラー検査を行うようにしてもよく、また、再検査成功箇所に基づいた交代処理はそもそも実行しないようにしてもよく、さらには、データ書込後のエラー検査は行わず、複数回のリードアクセスによるエラー検査のみを行うようにしてもよい。このように、エラー検査の手法を簡素化することで、エラー検査処理に要する時間を短縮化することも可能になる。
【００８９】
また、再検査成功箇所に基づいた交代処理を実行するような場合には、再検査成功箇所でリードエラーが再び１回発生することを交代処理の実行条件にするようにしてもよく、さらに、本発明はこれに限定されるものではなく、例えば、再検査成功箇所でリードエラーが複数回数（例えば３回）再発生することを交代処理の実行条件にするようにしてもよい。つまり、後者の場合には、エラー発生箇所記憶部１５ａから選択したエラー検出箇所が再検査成功箇所に該当する場合でも、再検査成功箇所におけるリードエラーの再発生回数が所定の回数に達していなければ、交代処理をいきなり行うのではなく、上記したエラー検査（複数回のリードアクセスを行った後にデータを書き込んで再び複数回のリードアクセスを行うエラー検査）を行う。
【００９０】
ところで、上記の実施例１では、複数回のリードアクセスによるエラー検査の後にデータを書き込んで再び複数回のリードアクセスによるエラー検査を行う場合を説明したが、図８に示すように、本発明はこれに限定されるものではなく、エラー発生箇所に対して最初にデータを書き込んでからリードアクセスによるエラー検査を行うようにしてもよい。この場合でも、熱減磁作用によるリードエラーについては書き込み後にリードエラーが再現されなくなる結果、交代処理を施行しないので、リードエラーに対する交代処理の要否を精度良く判別することができ、交代処理を適切に施行することが可能である。すなわち、ディスクにおける交代領域の無駄な消費を防止することが可能である。
【００９１】
また、エラー発生箇所に対して最初にデータを書き込んでからエラー検査を行うような場合には、１回のリードアクセスによるエラー検査を行うようにしてもよく、さらに、本発明はこれに限定されるものではなく、複数回のリードアクセスによるエラー検査を行うようにしてもよい。後者の場合には、軽度の媒体欠陥や突発的な要因に対しても交代処理の要否を精度良く判別することができ、ディスク制御装置１０のパフォーマンス低下や二重故障を防止することが可能である。
【００９２】
（４）装置構成や処理手順
上記の実施例１では、いわゆるＲＡＩＤ１で構成されるディスク装置３０を制御するディスク制御装置１０に本発明を適用する場合を説明したが、本発明はこれに限定されるものではなく、他のＲＡＩＤ（例えばＲＡＩＤ２〜５、ＲＡＩＤ０）で構成されるディスク装置３０を制御するディスク制御装置１０に対しても本発明を同様に適用することができる。なお、他のＲＡＩＤで構成されるディスク装置３０であっても、リードアクセスに対してディスク装置３０から返ってくるリードエラー（データが読み取れない旨を示すエラー）が本発明でいうエラー処理の対象であって、いわゆるビット固着等に起因する読み取りデータの正誤に係るエラーは、本発明でいうエラー処理の対象ではない。
【００９３】
また、図２に示したディスク制御装置１０の各構成要素は機能的な区分けであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、ディスク制御装置１０の分散や統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００９４】
また、上記の実施例１において説明したアクセス制御処理やエラー検査処理の手順については、特記する場合を除いて任意に変更することができる。例えば、図６で説明したアクセス制御処理においては、ステップＳ６０８の処理（復元したデータをキャッシュに格納する処理）およびステップＳ６０９の処理（エラー発生箇所を登録する処理）について実行順序を入れ替えてもよく、また、図７に示したエラー検査処理においては、ステップＳ７０５の処理（交代処理）、ステップＳ７０６の処理（エラー発生箇所の周辺箇所を登録する処理）およびステップＳ７０７の処理（エラー発生箇所を削除する処理）について実行順序を入れ替えてもよく、これと同様に、ステップＳ７１４からＳ７１６に至る処理や、ステップＳ７１７からＳ７１６に至る処理についても実行順序を入れ替えてもよい。
【００９５】
（５）ディスク制御プログラム
ところで、上記の実施例１で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図９を用いて、上記の実施例１と同様の機能を有するディスク制御プログラムを実行するコンピュータの一例を説明する。図９は、ディスク制御プログラムを実行するコンピュータを示す図である。
【００９６】
同図に示すように、ディスク制御装置としてのコンピュータ４０は、キャッシュ４１、ＲＡＭ４２、フラッシュメモリ４３、ＲＯＭ４４およびＣＰＵ４５をバス４６で接続して構成される。ここで、ＲＯＭ４４には、上記の実施例１と同様の機能を発揮するディスク制御プログラム、つまり、図９に示すように、ホスト転送制御プログラム４４ａ、ディスク転送制御プログラム４４ｂ、キャッシュ制御プログラム４４ｃ、アクセス制御プログラム４４ｄ、パトロールプログラム４４ｅ、エラー検査プログラム４４ｆ、データ書込プログラム４４ｇおよび交代処理プログラム４４ｈがあらかじめ記憶されている。
【００９７】
そして、ＣＰＵ４５は、これらのプログラム４４ａ〜４４ｈを読み出して実行することで、図９に示すように、各プログラム４４ａ〜４４ｈは、ホスト転送制御プロセス４５ａ、ディスク転送制御プロセス４５ｂ、キャッシュ制御プロセス４５ｃ、アクセス制御プロセス４５ｄ、パトロールプロセス４５ｅ、エラー検査プロセス４５ｆ、データ書込プロセス４５ｇおよび交代処理プロセス４５ｈとなる。なお、各プロセス４５ａ〜４５ｈは、図２に示したホスト転送制御部１１、ディスク転送制御部１２、キャッシュ制御部１４、アクセス制御部１６ａ、パトロール部１６ｂ、エラー検査部１６ｃ、データ書込部１６ｄおよび交代処理部１６ｅにそれぞれ対応する。
【００９８】
また、フラッシュメモリ４３には、図９に示すように、ディスク上のエラー発生箇所を示す情報を記憶するエラー発生箇所テーブル４３ａと、ディスク上の再検査成功箇所を示す情報を記憶する再検査成功箇所テーブル４３ｂとが設けられる。そして、ＣＰＵ４５は、エラー発生箇所テーブル４３ａおよび再検査成功箇所テーブル４３ｂに対して情報の登録および削除を行うとともに、エラー発生箇所テーブル４３ａおよび再検査成功箇所テーブル４３ｂから情報を読み出してＲＡＭ４２に格納し、ＲＡＭ４２に格納された情報に基づいてエラー検査処理等を実行する。なお、エラー発生箇所テーブル４３ａおよび再検査成功箇所テーブル４３ｂは、図２に示したエラー発生箇所記憶部１５ａおよび再検査成功箇所記憶部１５ｂにそれぞれ対応する。
【００９９】
そして、キャッシュ４１は、ホストコンピュータ２０から送出された書き込みデータや、ディスク装置３０から読み取られた読み取りデータ（さらには、リードエラーの発生に起因して復元されたデータ）を一時的に格納するメモリである。なお、かかるキャッシュ４１は、図２に示したキャッシュ１３に対応する。
【０１００】
ところで、上記した各プログラム４４ａ〜４４ｈについては、必ずしもＲＯＭ４４に記憶させておく必要はなく、例えば、コンピュータ４０に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」、または、コンピュータ４０の内外に備えられるハードディスクドライブ（ＨＤＤ）などの「固定用の物理媒体」、さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ４０に接続される「他のコンピュータ（またはサーバ）」に記憶させておき、コンピュータ４０がこれらからプログラムを読み出して実行するようにしてもよい。
【０１０１】
（付記１）上位装置からのアクセス要求に応じて記憶媒体にリードアクセスまたはライトアクセスするとともに、リードアクセスに際して発生したリードエラーを検査して交代処理を施行する記憶媒体制御装置であって、
前記リードエラーが発生した記憶媒体上のエラー発生箇所に対して複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査するエラー検査手段と、
前記エラー検査手段による検査においてリードエラーが複数回再現された場合に、前記エラー発生箇所に対して交代処理を施行する交代処理手段と、
を備えたことを特徴とする記憶媒体制御装置。
【０１０２】
（付記２）前記リードエラーの発生に応じて、当該リードエラーが発生した記憶媒体上のエラー発生箇所を示す情報を記憶するエラー発生箇所記憶手段を備え、
前記エラー検査手段は、記憶媒体パトロール時に、前記エラー発生箇所記憶手段に記憶されたエラー発生箇所を示す情報に基づいて、当該エラー発生箇所に対して複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査することを特徴とする付記１に記載の記憶媒体制御装置。
【０１０３】
（付記３）前記エラー検査手段による検査においてリードエラーが複数回再現された場合に、前記エラー発生箇所に対してデータを書き込むデータ書込手段をさらに備え、
前記エラー検査手段は、前記データ書込手段によってデータが書き込まれたエラー発生箇所に対して再び複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査し、
前記交代処理手段は、前記エラー検査手段による再度の検査においてリードエラーが複数回再現された場合に、前記エラー発生箇所に対して交代処理を施行することを特徴とする付記１または２に記載の記憶媒体制御装置。
【０１０４】
（付記４）前記エラー検査手段による再度の検査においてリードエラーが複数回再現されなかった場合に、前記エラー発生箇所を再検査成功箇所として記憶する再検査成功箇所記憶手段をさらに備え、
前記交代処理手段は、前記再検査成功箇所記憶手段に記憶された再検査成功箇所について再びリードエラーが発生した場合に、当該再検査成功箇所に対して交代処理を施行することを特徴とする付記３に記載の記憶媒体制御装置。
【０１０５】
（付記５）前記エラー検査手段は、前記交代処理手段によって交代処理が施行されたエラー発生箇所の周辺に位置する周辺箇所についても、複数回のリードアクセスを試みてリードエラーが複数回発生するか否かを検査し、
前記交代処理手段は、前記エラー検査手段による検査において前記周辺箇所についてリードエラーが複数回発生した場合には、当該周辺箇所に対しても交代処理を施行することを特徴とする付記１〜４のいずれか一つに記載の記憶媒体制御装置。
【０１０６】
（付記６）前記エラー検査手段は、ライトエラー発生後の再ライトアクセスでデータが書き込まれた再ライト箇所についても、複数回のリードアクセスを試みてリードエラーが複数回発生するか否かを検査し、
前記交代処理手段は、前記エラー検査手段による検査において前記再ライト箇所についてリードエラーが複数回発生した場合には、当該再ライト箇所に対しても交代処理を施行することを特徴とする付記１〜５のいずれか一つに記載の記憶媒体制御装置。
【０１０７】
（付記７）上位装置からのアクセス要求に応じて記憶媒体にリードアクセスまたはライトアクセスするとともに、リードアクセスに際して発生したリードエラーを検査して交代処理を施行する記憶媒体制御装置であって、
前記リードエラーが発生した記憶媒体上のエラー発生箇所に対してデータを書き込むデータ書込手段と、
前記データ書込手段によってデータが書き込まれたエラー発生箇所に対してリードアクセスを試みてリードエラーが再現されるか否かを検査するエラー検査手段と、
前記エラー検査手段による検査においてリードエラーが再現された場合に、前記エラー発生箇所に対して交代処理を施行する交代処理手段と、
を備えたことを特徴とする記憶媒体制御装置。
【０１０８】
（付記８）前記エラー検査手段は、前記エラー発生箇所に対して複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査することを特徴とする付記７に記載の記憶媒体制御装置。
【０１０９】
（付記９）上位装置からのアクセス要求に応じて記憶媒体にリードアクセスまたはライトアクセスするとともに、リードアクセスに際して発生したリードエラーを検査して交代処理を施行する記憶媒体制御方法であって、
前記リードエラーが発生した記憶媒体上のエラー発生箇所に対して複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査するエラー検査工程と、
前記エラー検査工程による検査においてリードエラーが複数回再現された場合に、前記エラー発生箇所に対して交代処理を施行する交代処理工程と、
を含んだことを特徴とする記憶媒体制御方法。
【０１１０】
（付記１０）前記エラー検査工程による検査においてリードエラーが複数回再現された場合に、前記エラー発生箇所に対してデータを書き込むデータ書込工程をさらに備え、
前記エラー検査工程は、前記データ書込工程によってデータが書き込まれたエラー発生箇所に対して再び複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査し、
前記交代処理工程は、前記エラー検査工程による再度の検査においてリードエラーが複数回再現された場合に、前記エラー発生箇所に対して交代処理を施行することを特徴とする付記９に記載の記憶媒体制御方法。
【０１１１】
（付記１１）上位装置からのアクセス要求に応じて記憶媒体にリードアクセスまたはライトアクセスするとともに、リードアクセスに際して発生したリードエラーを検査して交代処理を施行する記憶媒体制御方法であって、
前記リードエラーが発生した記憶媒体上のエラー発生箇所に対してデータを書き込むデータ書込工程と、
前記データ書込工程によってデータが書き込まれたエラー発生箇所に対してリードアクセスを試みてリードエラーが再現されるか否かを検査するエラー検査工程と、
前記エラー検査工程による検査においてリードエラーが再現された場合に、前記エラー発生箇所に対して交代処理を施行する交代処理工程と、
を含んだことを特徴とする記憶媒体制御方法。
【０１１２】
（付記１２）前記エラー検査工程は、前記エラー発生箇所に対して複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査することを特徴とする付記１１に記載の記憶媒体制御方法。
【０１１３】
（付記１３）上位装置からのアクセス要求に応じて記憶媒体にリードアクセスまたはライトアクセスするとともに、リードアクセスに際して発生したリードエラーを検査して交代処理を施行する方法をコンピュータに実行させる記憶媒体制御プログラムであって、
前記リードエラーが発生した記憶媒体上のエラー発生箇所に対して複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査するエラー検査手順と、
前記エラー検査手順による検査においてリードエラーが複数回再現された場合に、前記エラー発生箇所に対して交代処理を施行する交代処理手順と、
をコンピュータに実行させることを特徴とする記憶媒体制御プログラム。
【０１１４】
（付記１４）前記エラー検査手順による検査においてリードエラーが複数回再現された場合に、前記エラー発生箇所に対してデータを書き込むデータ書込手順をさらに備え、
前記エラー検査手順は、前記データ書込手順によってデータが書き込まれたエラー発生箇所に対して再び複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査し、
前記交代処理手順は、前記エラー検査手順による再度の検査においてリードエラーが複数回再現された場合に、前記エラー発生箇所に対して交代処理を施行することを特徴とする付記１３に記載の記憶媒体制御プログラム。
【０１１５】
（付記１５）上位装置からのアクセス要求に応じて記憶媒体にリードアクセスまたはライトアクセスするとともに、リードアクセスに際して発生したリードエラーを検査して交代処理を施行する方法をコンピュータに実行させる記憶媒体制御プログラムであって、
前記リードエラーが発生した記憶媒体上のエラー発生箇所に対してデータを書き込むデータ書込手順と、
前記データ書込手順によってデータが書き込まれたエラー発生箇所に対してリードアクセスを試みてリードエラーが再現されるか否かを検査するエラー検査手順と、
前記エラー検査手順による検査においてリードエラーが再現された場合に、前記エラー発生箇所に対して交代処理を施行する交代処理手順と、
をコンピュータに実行させることを特徴とする記憶媒体制御プログラム。
【０１１６】
（付記１６）前記エラー検査手順は、前記エラー発生箇所に対して複数回のリードアクセスを試みてリードエラーが複数回再現されるか否かを検査することを特徴とする付記１５に記載の記憶媒体制御プログラム。
【産業上の利用可能性】
【０１１７】
以上のように、本発明に係る記憶媒体制御装置、記憶媒体制御方法および記憶媒体制御プログラムは、上位装置からのアクセス要求に応じて記憶媒体にリードアクセスまたはライトアクセスするとともに、リードアクセスに際して発生したリードエラーを検査して交代処理を施行する場合に有用であり、特に、リードエラーに対する交代処理の要否を精度良く判別することができ、交代処理を適切に施行することに適する。
【図面の簡単な説明】
【０１１８】
【図１】実施例１に係るディスク制御装置の概要および特徴を説明するための図である。
【図２】実施例１に係るディスク制御装置の構成を示すブロック図である。
【図３】ディスク上のトラックおよびセクタを説明するための図である。
【図４】エラー発生箇所記憶部を説明するための図である。
【図５】再検査成功箇所記憶部を説明するための図である。
【図６】実施例１におけるアクセス制御処理の手順を示すフローチャートである。
【図７】実施例１におけるエラー検査処理の手順を示すフローチャートである。
【図８】エラー検査のタイミング、対象および手法を説明するための図である。
【図９】ディスク制御プログラムを実行するコンピュータを示す図である。
【符号の説明】
【０１１９】
１０  ディスク制御装置
１１  ホスト転送制御部
１２  ディスク転送制御部
１３  キャッシュ
１４  キャッシュ制御部
１５  記憶部
１５ａ  エラー発生箇所記憶部
１５ｂ  再検査成功箇所記憶部
１６  制御部
１６ａ  アクセス制御部
１６ｂ  パトロール部
１６ｃ  エラー検査部
１６ｄ  データ書込部
１６ｅ  交代処理部
２０  ホストコンピュータ
３０  ディスク装置
４０  ディスク制御装置（コンピュータ）
４１  キャッシュ
４２  ＲＡＭ
４３  フラッシュメモリ
４４  ＲＯＭ
４５  ＣＰＵ
【図１】
2006085592.tif 000003
【図２】
2006085592.tif 000004
【図３】
2006085592.tif 000005
【図４】
2006085592.tif 000006
【図５】
2006085592.tif 000007
【図６】
2006085592.tif 000008
【図７】
2006085592.tif 000009
【図８】
2006085592.tif 000010
【図９】
2006085592.tif 000011