(57)【特許請求の範囲】
【請求項１】
ＲＡＩＤを構成する複数の記憶装置と、前記複数の記憶装置を制御するＲＡＩＤコントローラとを備えるＲＡＩＤシステムであって、
前記記憶装置は、それぞれ、
任意のデータを記憶する記憶媒体と、
エラーセクタの履歴を記憶する履歴記憶手段と、
前記記憶媒体上において、当該装置によって修復不可能なエラーセクタを検出する修復不可能エラー検出手段と、
前記修復不可能エラー検出手段が修復不可能なエラーセクタを検出した場合に、当該エラーセクタに関するエラー情報を前記ＲＡＩＤコントローラに送信するエラー情報送信手段と、
前記エラー情報送信手段に前記エラー情報を送信させるか否かを設定する設定手段と、
前記記憶媒体上において、当該装置によって修復可能なエラーセクタを検出する修復可能エラー検出手段と、
前記修復可能エラー検出手段が修復可能なエラーセクタを検出した場合に、当該エラーセクタを修復する第１の修復手段と、を備え、
前記ＲＡＩＤコントローラは、
前記エラー情報送信手段が送信した前記エラー情報を受信した場合には、当該エラー情報の発信元以外の他の記憶装置が記憶するデータを用いて、当該エラー情報が示す前記エラーセクタを修復する第２の修復手段と、
前記記憶装置の前記設定手段に前記エラー情報を送信させるように設定させ、前記記憶装置の前記修復不可能エラー検出手段と前記修復可能エラー検出手段とにエラーセクタの検出を開始させる旨の要求を各記憶装置に送信する要求送信手段と、を備え、
前記記憶装置は、前記ＲＡＩＤコントローラの前記要求送信手段から前記要求を受信した場合に、前記設定手段に前記エラー情報を送信させるように設定させ、前記修復不可能エラー検出手段と前記修復可能エラー検出手段とにエラーセクタの検出を開始させ、
前記記憶装置の前記履歴記憶手段は、前記修復不可能エラー検出手段が修復不可能なエラーセクタを検出した場合に当該エラーセクタの履歴を記憶し、
前記記憶装置の前記エラー情報送信手段は、前記設定手段により前記エラー情報を送信する設定になっている場合には、当該エラーセクタのエラー情報を送信する、
ことを特徴とするＲＡＩＤシステム。
【請求項２】
前記ＲＡＩＤコントローラの前記第２の修復手段は、
前記修復不可能なエラーセクタに対応するデータを前記他の記憶装置から読み取り、
前記修復不可能なエラーセクタに、前記他の記憶装置から読み取ったデータを上書きし、
上書きを行った前記エラーセクタに対して再び読取処理を行って読み取れなかった場合に、当該エラーセクタを代替セクタに対応させ、当該代替セクタに当該エラーセクタのデータを書き込むことによって修復を行う、
ことを特徴とする請求項１に記載のＲＡＩＤシステム。
【請求項３】
前記記憶装置の前記修復不可能エラー検出手段は、
任意のセクタに対して第１閾値の回数、読取処理を行って読み取れなかった場合に、当該セクタを修復不可能なエラーセクタとして検出し、
前記記憶装置の前記修復可能エラー検出手段は、
任意のセクタに対して読取処理を繰り返し行い、第２閾値以上且つ前記第１閾値以下の回数で読み取れた場合に、当該セクタを修復可能なエラーセクタとして検出し、
前記記憶装置の前記第１の修復手段は、
前記修復可能なエラーセクタに、当該エラーセクタから読み取ったデータを上書きし、
上書きを行った前記エラーセクタに対して再び読取処理を行って読み取れなかった場合に、当該エラーセクタを代替セクタに対応させ、当該代替セクタに当該エラーセクタのデータを書き込むことによって修復を行う、
ことを特徴とする請求項１又は２に記載のＲＡＩＤシステム。
【請求項４】
前記ＲＡＩＤコントローラの前記要求送信手段は、当該ＲＡＩＤシステムの電源起動時に、前記要求を送信する、
ことを特徴とする請求項１乃至３の何れか１項に記載のＲＡＩＤシステム。
【請求項５】
前記ＲＡＩＤコントローラは、
前記記憶装置との接続を検出する接続検出手段をさらに備え、
前記ＲＡＩＤコントローラの前記要求送信手段は、前記接続検出手段が前記接続を検出した場合に、前記要求を送信する、
ことを特徴とする請求項１乃至４の何れか１項に記載のＲＡＩＤシステム。
【請求項６】
前記記憶装置の前記修復不可能エラー検出手段と前記修復可能エラー検出手段とは、当該ＲＡＩＤシステムの外部の装置からコマンドアクセスがあった場合には、処理を中断する、
ことを特徴とする請求項１乃至５の何れか１項に記載のＲＡＩＤシステム。
【請求項７】
前記記憶装置の前記履歴記憶手段は、前記修復可能エラー検出手段が修復可能なエラーセクタを検出した場合に、当該エラーセクタの履歴を記憶する、
ことを特徴とする請求項１乃至６の何れか１項に記載のＲＡＩＤシステム。
【請求項８】
任意のデータを記憶する記憶媒体をそれぞれ備え、ＲＡＩＤを構成する複数の記憶装置と、前記複数の記憶装置を制御するＲＡＩＤコントローラとを備えるＲＡＩＤシステムのエラーセクタ修復方法であって、
エラーセクタの履歴を記憶する履歴記憶ステップと、
前記記憶媒体上において、前記記憶装置によって修復不可能であるエラーセクタを検出する修復不可能エラー検出ステップと、
前記修復不可能エラー検出ステップで前記修復不可能であるエラーセクタを検出した場合に、当該エラーセクタに関するエラー情報を前記ＲＡＩＤコントローラに送信するエラー情報送信ステップと、
前記エラー情報を送信させるか否かを設定する設定ステップと、
前記記憶媒体上において、前記記憶装置によって修復可能であるエラーセクタを検出する修復可能エラー検出ステップと、
前記修復可能エラー検出ステップで前記修復可能なエラーセクタを検出した場合に、当該エラーセクタを修復する第１の修復ステップと、
前記エラー情報送信ステップで前記記憶装置が送信した前記エラー情報をＲＡＩＤコントローラが受信した場合には、ＲＡＩＤコントローラに、当該エラー情報の発信元以外の前記記憶装置が記憶するデータを用いて、当該エラー情報が示す前記エラーセクタを修復させる第２の修復ステップと、
前記記憶装置に前記エラー情報を送信させるように設定させ、前記記憶装置にエラーセクタの検出を開始させる旨の要求を各記憶装置に送信する要求送信ステップと、
前記記憶装置が前記ＲＡＩＤコントローラから前記要求を受信した場合に、前記エラー情報を送信させるよう設定させ、エラーセクタの検出を開始させるステップと、
前記記憶装置が修復不可能なエラーセクタを検出した場合に、当該エラーセクタの履歴を記憶するステップと、
前記記憶装置が前記エラー情報を送信する設定になっている場合に、当該エラーセクタのエラー情報を送信するステップと、を備える、
ことを特徴とするエラーセクタの修復方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列接続された複数のハードディスクにおいて検出されたエラーセクタを修復するＲＡＩＤシステム、及びエラーセクタの修復方法に関する。
【背景技術】
【０００２】
現在、複数のハードディスクを並列接続してそれら全体を一つのディスク装置として動作させることで、データ読み書きの高速化や耐障害性の向上等を実現するＲＡＩＤ（Redundant Arrays of Inexpensive Disks）システムが製品化されている。
【０００３】
例えば、ＲＡＩＤシステムは、サーバシステムに適用されている。それらのサーバシステムは、各ハードディスクにおいて発生したデータエラーを検出し、修復する機能を持つ（例えば、特許文献１参照）。
【特許文献１】特開２００６−１２００４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、各ハードディスクにおけるデータエラーの検出又は修復の為の機能は、サーバシステム本体に組み込まれている為、それらの機能実行時において、サーバシステム全体としての一時的な性能低下が発生する。
本発明は、上記問題点に鑑みてなされたもので、エラーの検出又は修復の際の上位のシステムに対する影響が少ないＲＡＩＤシステム、及びエラーセクタの修復方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するため、本発明の第１の観点に係るＲＡＩＤシステムは、
ＲＡＩＤを構成する複数の記憶装置と、前記複数の記憶装置を制御するＲＡＩＤコントローラとを備えるＲＡＩＤシステムであって、
前記記憶装置は、それぞれ、
任意のデータを記憶する記憶媒体と、
エラーセクタの履歴を記憶する履歴記憶手段と、
前記記憶媒体上において、当該装置によって修復不可能なエラーセクタを検出する修復不可能エラー検出手段と、
前記修復不可能エラー検出手段が修復不可能なエラーセクタを検出した場合に、当該エラーセクタに関するエラー情報を前記ＲＡＩＤコントローラに送信するエラー情報送信手段と、
前記エラー情報送信手段に前記エラー情報を送信させるか否かを設定する設定手段と、
前記記憶媒体上において、当該装置によって修復可能なエラーセクタを検出する修復可能エラー検出手段と、
前記修復可能エラー検出手段が修復可能なエラーセクタを検出した場合に、当該エラーセクタを修復する第１の修復手段と、を備え、
前記ＲＡＩＤコントローラは、
前記エラー情報送信手段が送信した前記エラー情報を受信した場合には、当該エラー情報の発信元以外の他の記憶装置が記憶するデータを用いて、当該エラー情報が示す前記エラーセクタを修復する第２の修復手段と、
前記記憶装置の前記設定手段に前記エラー情報を送信させるように設定させ、前記記憶装置の前記修復不可能エラー検出手段と前記修復可能エラー検出手段とにエラーセクタの検出を開始させる旨の要求を各記憶装置に送信する要求送信手段と、を備え、
前記記憶装置は、前記ＲＡＩＤコントローラの前記要求送信手段から前記要求を受信した場合に、前記設定手段に前記エラー情報を送信させるように設定させ、前記修復不可能エラー検出手段と前記修復可能エラー検出手段とにエラーセクタの検出を開始させ、
前記記憶装置の前記履歴記憶手段は、前記修復不可能エラー検出手段が修復不可能なエラーセクタを検出した場合に当該エラーセクタの履歴を記憶し、
前記記憶装置の前記エラー情報送信手段は、前記設定手段により前記エラー情報を送信する設定になっている場合には、当該エラーセクタのエラー情報を送信する、
ことを特徴とする。
【０００６】
本発明の第２の観点に係るエラーセクタの修復方法は、
任意のデータを記憶する記憶媒体をそれぞれ備え、ＲＡＩＤを構成する複数の記憶装置と、前記複数の記憶装置を制御するＲＡＩＤコントローラとを備えるＲＡＩＤシステムのエラーセクタ修復方法であって、
エラーセクタの履歴を記憶する履歴記憶ステップと、
前記記憶媒体上において、前記記憶装置によって修復不可能であるエラーセクタを検出する修復不可能エラー検出ステップと、
前記修復不可能エラー検出ステップで前記修復不可能であるエラーセクタを検出した場合に、当該エラーセクタに関するエラー情報を前記ＲＡＩＤコントローラに送信するエラー情報送信ステップと、
前記エラー情報を送信させるか否かを設定する設定ステップと、
前記記憶媒体上において、前記記憶装置によって修復可能であるエラーセクタを検出する修復可能エラー検出ステップと、
前記修復可能エラー検出ステップで前記修復可能なエラーセクタを検出した場合に、当該エラーセクタを修復する第１の修復ステップと、
前記エラー情報送信ステップで前記記憶装置が送信した前記エラー情報をＲＡＩＤコントローラが受信した場合には、ＲＡＩＤコントローラに、当該エラー情報の発信元以外の前記記憶装置が記憶するデータを用いて、当該エラー情報が示す前記エラーセクタを修復させる第２の修復ステップと、
前記記憶装置に前記エラー情報を送信させるように設定させ、前記記憶装置にエラーセクタの検出を開始させる旨の要求を各記憶装置に送信する要求送信ステップと、
前記記憶装置が前記ＲＡＩＤコントローラから前記要求を受信した場合に、前記エラー情報を送信させるよう設定させ、エラーセクタの検出を開始させるステップと、
前記記憶装置が修復不可能なエラーセクタを検出した場合に、当該エラーセクタの履歴を記憶するステップと、
前記記憶装置が前記エラー情報を送信する設定になっている場合に、当該エラーセクタのエラー情報を送信するステップと、を備える、
ことを特徴とする。
【発明の効果】
【０００７】
本発明のＲＡＩＤシステムによれば、エラーの検出又は修復の際の上位のシステムに対する影響を少なくすることができる。
【発明を実施するための最良の形態】
【０００８】
以下、本発明の実施形態に係るＲＡＩＤシステムを備えるコンピュータシステム１０００について説明する。コンピュータシステム１０００は、図１に示すように、ホスト装置１００と、ＲＡＩＤコントローラ２００と、ディスクアレイ３００とを備える。なお、本発明の実施形態に係るＲＡＩＤシステムは、ＲＡＩＤコントローラ２００とディスクアレイ３００とから構成される。
【０００９】
ホスト装置１００は、ＲＡＩＤコントローラ２００を介してディスクアレイ３００にデータを記憶させ、又は、ディスクアレイ３００からデータを読み取る。
ホスト装置１００は、図１に示すように、ＣＰＵ（Central Processing Unit）１１０と、ＲＡＭ（Random Access Memory）１２０と、ＲＯＭ（Read Only Memory）１３０と、記憶装置インタフェース回路１４０とを備える。
【００１０】
ＣＰＵ１１０は、ホスト装置１００の全体の動作を制御する。例えば、ＣＰＵ１１０は、ＲＯＭ１３０に格納されているプログラムを実行することにより、ＲＡＩＤコントローラ２００を介してディスクアレイ３００にデータを記憶させ、又は、ディスクアレイ３００からデータを読み取る。その際に、ＣＰＵ１１０は、ＲＡＩＤコントローラ２００に対して、コマンドを送信する。
【００１１】
ＲＡＭ１２０は、ＣＰＵ１１０のワークエリアとして機能する。
【００１２】
ＲＯＭ１３０は、ＣＰＵ１１０の動作プログラムを記憶する。
【００１３】
記憶装置インタフェース回路１４０は、ＲＡＩＤコントローラ２００と接続され、ホスト装置１００とＲＡＩＤコントローラ２００との間のデータ通信を制御する。
【００１４】
ＲＡＩＤコントローラ２００は、ディスクアレイ３００が備える複数のハードディスク３１０を制御する。
例えば、ＲＡＩＤコントローラ２００は、ホスト装置１００から送信されたコマンドに応じて、ＲＡＩＤ１〜６、ＲＡＩＤ０＋１、ＲＡＩＤ１＋０の何れかの方式で、ホスト装置１００から供給されたデータを二重化及び／又はパリティ化して、ディスクアレイ３００に記憶させる。
また、ＲＡＩＤコントローラ２００は、ホスト装置１００から送信されたコマンドに応じて、ディスクアレイ３００からデータを読み取ってホスト装置１００に送信する。
また、ＲＡＩＤコントローラ２００は、ディスクアレイ３００が備える一のハードディスク３１０から修復不可能なエラーセクタに関するエラー情報を受信すると、そのエラーセクタの修復処理を行う。
【００１５】
ＲＡＩＤコントローラ２００は、図１に示すように、ホストインタフェース回路２１０と、ＭＰＵ（Micro Processing Unit）２２０と、ＲＡＭ（Random Access Memory）２３０と、ＲＯＭ（Read Only Memory）２４０と、複数のＨＤＤインタフェース回路２５０とを備える。
【００１６】
ホストインタフェース回路２１０は、ホスト装置１００と接続され、ホスト装置１００とＲＡＩＤコントローラ２００との間のデータ通信を制御する。
【００１７】
ＭＰＵ２２０は、ＲＡＩＤコントローラ２００の全体の動作を制御する。
例えば、ＭＰＵ２２０は、ホスト装置１００から送信されたコマンドに応じて、ＲＡＩＤ１〜６、ＲＡＩＤ０＋１、ＲＡＩＤ１＋０の何れかの方式で、ホスト装置１００から供給されたデータを、ディスクアレイ３００に記憶させる。
また、ＭＰＵ２２０は、ホスト装置１００から送信されたコマンドに応じて、ディスクアレイ３００からデータを読み取ってホスト装置１００に送信する。
また、ＭＰＵ２２０は、ディスクアレイ３００が備える一のハードディスク３１０から修復不可能なエラーセクタに関するエラー情報を受信した場合に、そのエラーセクタの修復処理を行う。
【００１８】
ＲＡＭ２３０は、ＭＰＵ２２０のワークエリアとして機能する。
【００１９】
ＲＯＭ２４０は、ＭＰＵ２２０の動作プログラムを記憶する。
【００２０】
ＨＤＤインタフェース回路２５０は、ハードディスク３１０と接続され、ハードディスク３１０とＲＡＩＤコントローラ２００との間のデータ通信を制御する。なお、図１におけるＨＤＤインタフェース２５０−１，２，３，・・・は、ＨＤＤインタフェース２５０と総称し、例えば、ＨＤＤインタフェース２５０−１は、ハードディスク３１０−１に接続され、ハードディスク３１０−１とＲＡＩＤコントローラ２００との間のデータ通信を制御する。
また、ＨＤＤインタフェース回路２５０は、ハードディスク３１０との接続（ホットスワップ）を検出してＭＰＵ２２０に報知する。
【００２１】
ディスクアレイ３００は、ＲＡＩＤ１〜６、ＲＡＩＤ０＋１、ＲＡＩＤ１＋０の何れかの方式で、ホスト装置１００から供給されたデータを二重化及び／又はパリティ化して各ハードディスク３１０に記憶する。ディスクアレイ３００は、図１に示すように、複数のハードディスク３１０を備える。なお、図１におけるハードディスク３１０−１，２，３，・・・は、ハードディスク３１０と総称し、それぞれ、ＲＡＩＤコントローラ２００に接続される。
【００２２】
ハードディスク３１０は、ＡＮＳＩ（American National Standard Institute）仕様のバックグラウンドメディアスキャン（ＢＧＭＳ）機能を備える。
さらに詳しく説明すると、ハードディスク３１０は、修復不可能なエラーセクタを検出した場合には、その履歴をエラーログ領域３１０ｃに記録する。そして、ＲＡＩＤコントローラ２００にエラーセクタに関する情報を送信する設定がされていれば、ＲＡＩＤコントローラ２００に、修復不可能なエラーセクタに関するエラー情報を送信する。
また、ハードディスク３１０は、修復可能なエラーセクタを検出した場合には、そのエラーセクタの修復を行う。
【００２３】
ハードディスク３１０は、図２に示すように、インタフェース回路３１１と、ハードディスクコントローラ３１２と、ＲＡＭ３１３と、ＲＯＭ３１４と、ドライブ３１５と、磁気ディスク３１６とを備える。
【００２４】
インタフェース回路３１１は、ＲＡＩＤコントローラ２００と接続され、ハードディスク３１０とＲＡＩＤコントローラ２００との間のデータ通信を制御する。
【００２５】
ハードディスクコントローラ３１２（以下、ＨＤＣ３１２）は、ハードディスク３１０の全体の動作を制御する。
例えば、ＨＤＣ３１２は、ＲＡＩＤコントローラ２００から送信されたコマンドに応じて、ＲＡＩＤコントローラ２００から供給されたデータを、磁気ディスク３１６に記憶させる。
また、ＨＤＣ３１２は、ＲＡＩＤコントローラ２００から送信されたコマンドに応じて、磁気ディスク３１６からデータを読み取ってＲＡＩＤコントローラ２００に送信する。
また、ＨＤＣ３１２は、磁気ディスク３１６上において、装置内で修復不可能なエラーセクタの検出を行う。そして、修復不可能なエラーセクタを検出した場合には、その履歴をエラーログ領域３１０ｃに記録する。そして、ＲＡＩＤコントローラ２００にエラーセクタに関する情報を送信する設定がされていれば、ＲＡＩＤコントローラ２００に、修復不可能なエラーセクタに関するエラー情報を送信する。
また、ＨＤＣ３１２は、磁気ディスク３１６上において、装置内で修復可能なエラーセクタの検出を行う。そして、修復可能なエラーセクタを検出した場合には、そのエラーセクタの修復を行う。
【００２６】
ＲＡＭ３１３は、ＨＤＣ３１２のワークエリアとして機能する。
【００２７】
ＲＯＭ３１４は、ＨＤＣ３１２の動作プログラムを記憶する。
【００２８】
ドライブ３１５は、ＨＤＣ３１２の制御に基づいて、磁気ディスク３１６にデータの書き込みを行う。また、ドライブ３１５は、ＨＤＣ３１２の制御に基づいて、磁気ディスク３１６からデータの読み取りを行う。
【００２９】
磁気ディスク３１６は、種々のデータを記憶する。また、磁気ディスク３１６は、図３（ａ）に示すように、通常セクタ領域３１６ａと、代替セクタ領域３１６ｂと、エラーログ領域３１６ｃと、設定情報記憶領域３１６ｄとを備える。
【００３０】
通常セクタ領域３１６ａには、ホスト装置１００から供給されたデータ等が記憶される。
【００３１】
代替セクタ領域３１６ｂには、磁気ディスク３１６においてエラーセクタが検出された場合に、必要に応じて、そのエラーセクタに対応する代替セクタが生成される。
【００３２】
エラーログ領域３１６ｃには、修復不可能なエラーセクタが検出された場合に、その履歴を記憶する。
【００３３】
設定情報記憶領域３１６ｄには、設定情報３１６ｅが記憶される。
【００３４】
設定情報３１６ｅは、ハードディスク３１０の設定を記載した情報であり、ハードディスク３１０は、設定情報３１６ｅに記載された設定に基づいて動作する。設定情報３１６ｅは、例えば、図３（ｂ）に示すように、バックグラウンドメディアスキャンを行うか否かを設定する「ＢＧＭＳモード」の欄と、修復不可能なエラーセクタが検出された場合に、そのエラーセクタに関するエラー情報を送信するか否かを設定する「送信モード」の欄と、修復不可能なエラーセクタを検出するための「閾値１」の欄と、修復可能なエラーセクタを検出するための「閾値２」の欄とから構成される。
【００３５】
例えば、「ＢＧＭＳモード」の欄が「ＯＮ」であれば、ハードディスク３１０は、バックグラウンドメディアスキャンを行い、「ＢＧＭＳモード」の欄が「ＯＦＦ」であれば、ハードディスク３１０は、バックグラウンドメディアスキャンを行わない。
また、「送信モード」の欄が「ＯＮ」であれば、ハードディスク３１０は、修復不可能なエラーセクタを検出した場合に、そのエラー情報をＲＡＩＤコントローラ２００に送信する。
また、「送信モード」の欄が「ＯＦＦ」であれば、ハードディスク３１０は、修復不可能なエラーセクタを検出した場合に、そのエラー情報を送信しない。
また、「閾値１」の欄が「２０」であれば、ハードディスク３１０は、あるセクタに対してリトライを２０回行って、成功しない場合には、そのセクタを修復不可能なエラーセクタとして検出する。
また、「閾値１」の欄が「２０」で、「閾値２」の欄が「５」であれば、ハードディスク３１０は、あるセクタに対してリトライを５回以上２０回以下、行って成功した場合には、そのセクタを修復可能なエラーセクタとして検出する。
【００３６】
なお、設定情報３１６ｅの内容は、ホスト装置１００からのコマンド等によって、変更可能である。
例えば、「ＢＧＭＳモード」の欄が「ＯＮ」である状態において、ＲＡＩＤコントローラ２００より「ＢＧＭＳモード」の欄を「ＯＮ」にする旨の命令を受信すると、つまり、バックグラウンドメディアスキャンを行う旨の命令を受信すると、ハードディスク３１０は、あらためて始めからバックグラウンドスキャンを開始する。
また、「ＢＧＭＳモード」の欄が「ＯＦＦ」である状態において、ＲＡＩＤコントローラ２００より「ＢＧＭＳモード」の欄を「ＯＮ」にする旨の命令を受信すると、つまり、バックグラウンドメディアスキャンを行う旨の命令を受信すると、ハードディスク３１０は、バックグラウンドスキャンを開始する。
【００３７】
以下、上記構成のコンピュータシステム１０００の動作を説明する。
【００３８】
コンピュータシステム１０００において、ハードディスク３１０は、それぞれ、装置内では修復不可能なエラーセクタを検出した場合に、当該エラーセクタに関するエラー情報をＲＡＩＤコントローラ２００に送信する。
また、ハードディスク３１０は、装置内で修復可能なエラーセクタを検出した場合に、当該エラーセクタを修復する。
ＲＡＩＤコントローラ２００は、ハードディスク３１０より修復不可能なエラーセクタに関するエラー情報を受信した場合には、そのエラー情報の発信元以外の他のハードディスク３１０が記憶するデータを用いて、エラー情報が示すエラーセクタを修復する。さらに詳しく説明すると、ＲＡＩＤコントローラ２００は、他のハードディスク３１０が記憶するパリティデータや二重化されたデータ等のうちから、エラーセクタのデータと同等のデータを取得して、取得したデータを使用してエラーセクタを修復する。
【００３９】
ここで、ハードディスク３１０が行うバックグラウンドメディアスキャン処理を、図４のフローチャートを参照して詳細に説明する。
【００４０】
ＢＧＭＳモードがＯＮの状態でハードディスク３１０の電源が投入されると、又は、ＲＡＩＤコントローラ２００の命令によりＢＧＭＳモードがＯＮの状態に設定されると、ハードディスク３１０のＨＤＣ３１２は、バックグラウンドメディアスキャンを開始し、ドライブ３１５を制御して、磁気ディスク上の所定のセクタの読取処理を行う（ステップＳ１０１）。
【００４１】
次に、ＨＤＣ３１２は、前のステップにおける読取処理の結果、データを読み取れたか否かを判別する（ステップＳ１０２）。
【００４２】
データを読み取れたと判別すると（Ｓ１０２；ＹＥＳ）、ＨＤＣ３１２は、ステップＳ１１４に進める。
【００４３】
データを読み取れていないと判別すると（Ｓ１０２；ＮＯ）、ＨＤＣ３１２は、カウンタＮに「０」を代入し（ステップＳ１０３）、ステップＳ１０４に進める。
【００４４】
ＨＤＣ３１２は、設定情報３１６ｅを参照して、カウンタＮが閾値１と等しいか否かを判別する（ステップＳ１０４）。
【００４５】
カウンタＮが閾値１と等しいと判別すると（Ｓ１０４；ＹＥＳ）、ＨＤＣ３１２は、読取処理を行ったセクタを修復不可能なエラーセクタとして判別し、そのエラーセクタのアドレス等のエラー情報をエラーログ領域３１６ｃのエラーログに記録し（ステップＳ１０５）、設定情報３１６ｅを参照して、送信モードがＯＮになっているか否かを判別する（ステップＳ１０６）。
【００４６】
送信モードがＯＮになっていると判別すると（Ｓ１０６；ＹＥＳ）、ＨＤＣ３１２は、エラーログに記録したエラー情報をＲＡＩＤコントローラ２００に送信し（ステップＳ１０７）、ステップＳ１１４に進める。
【００４７】
送信モードがＯＦＦになっていると判別すると（Ｓ１０６；ＮＯ）、ＨＤＣ３１２は、ステップＳ１１４に進める。
【００４８】
カウンタＮが閾値１と等しくないと判別すると（Ｓ１０４；ＮＯ）、ＨＤＣ３１２は、ステップＳ１０２で読取処理に失敗したセクタに対する読取処理、所謂、リトライを行い、カウンタＮに「１」を加算する（ステップＳ１０８）。つまり、カウンタＮの値は、あるセクタに対してリトライを行った回数である。
【００４９】
次に、ＨＤＣ３１２は、リトライの結果、読み取りが成功したか否かを判別する（ステップＳ１０９）。
【００５０】
再度の読み取りが失敗したと判別すると（Ｓ１０９；ＮＯ）、ＨＤＣ３１２は、ステップＳ１０４に戻す。
【００５１】
再度の読み取りが成功したと判別すると（Ｓ１０９；ＹＥＳ）、ＨＤＣ３１２は、設定情報３１６ｅを参照して、カウンタＮの値（リトライ回数）が閾値２以上であるか否かを判別する（ステップＳ１１０）。
【００５２】
リトライ回数が閾値２未満であると判別すると（Ｓ１１０；ＮＯ）、ＨＤＣ３１２は、ステップＳ１１４に進める。
【００５３】
リトライ回数が閾値２以上であると判別すると（Ｓ１１０；ＹＥＳ）、ＨＤＣ３１２は、リトライを行ったセクタを修復可能なエラーセクタとして判別し、そのエラーセクタに対して、読み取ったデータを上書き（リフレッシュ）し（ステップＳ１１１）、リフレッシュしたセクタに対して読取処理を行い、読み取りが成功したか否かを判別する（ステップＳ１１２）。
【００５４】
リフレッシュしたセクタに対する読み取りが成功したと判別すると（Ｓ１１２；ＹＥＳ）、ＨＤＣ３１２は、ステップＳ１１４に進める。
【００５５】
リフレッシュしたセクタに対する読み取りが失敗したと判別すると（Ｓ１１２；ＮＯ）、ＨＤＣ３１２は、Reassign Blocks Commandを実行して修復を行い、ステップＳ１１４に進める。詳しく説明すると、ＨＤＣ３１２は、代替セクタ領域３１６ｂに、エラーセクタに対応する代替セクタを作成し、その代替セクタ上にエラーセクタから読み取ったデータを記憶させる。そして、そのエラーセクタのデータを読み取る場合には、そのエラーセクタに対応する代替セクタからデータを読み取るようにする。
【００５６】
次に、ＨＤＣ３１２は、ＲＡＩＤコントローラ２００よりコマンドを受信したか否かを判別する（ステップＳ１１４）。
【００５７】
ＲＡＩＤコントローラ２００よりコマンドを受信していないと判別すると（Ｓ１１４；ＮＯ）、ＨＤＣ３１２は、トラック上における次のセクタに対して読取処理を行い（ステップＳ１１５）、ステップＳ１０２に戻す。
【００５８】
ＲＡＩＤコントローラ２００よりコマンドを受信したと判別すると（Ｓ１１４；ＹＥＳ）、ＨＤＣ３１２は、処理を終了する。
【００５９】
このようにして、バックグラウンドメディアスキャン処理によれば、ハードディスク３１０は、あるセクタに対して、所定回数、リトライを行っても成功しない場合に、装置内では修復不可能なエラーセクタとして判別し、当該エラーセクタに関するエラー情報をＲＡＩＤコントローラ２００に送信することができる。
また、ハードディスク３１０は、あるセクタに対して、所定の範囲内の回数で、リトライを行って成功した場合には、装置内で修復可能なエラーセクタとして判別し、当該エラーセクタを修復することができる。
【００６０】
次に、ＲＡＩＤコントローラ２００が行うエラーセクタ修復処理を、図５のフローチャートを参照して詳細に説明する。
【００６１】
先ず、何れかのハードディスク３１０の接続を検出すると、つまり、ホットスワップ時に、また、ＲＡＩＤコントローラ２００の電源が投入されると、ＲＡＩＤコントローラ２００のＭＰＵ２２０は、各ハードディスク３１０に、ＢＧＭＳモードがＯＮの設定に、且つ、修復不可能なエラーセクタに関するエラー情報を送信する設定にする旨の命令を送信する（ステップＳ２０１）。
【００６２】
次に、ＭＰＵ２２０は、何れかのハードディスク３１０より修復不可能なエラーセクタに関するエラー情報を受信したか否かを判別する（ステップＳ２０２）。
【００６３】
何れかのハードディスク３１０よりエラー情報を受信していないと判別すると（Ｓ２０２；ＮＯ）、ＭＰＵ２２０は、ホスト装置１００よりコマンドを受信したか否かを判別する（ステップＳ２０３）。
【００６４】
ホスト装置１００よりコマンドを受信したと判別すると（Ｓ２０３；ＹＥＳ）、ＭＰＵ２２０は、受信したコマンドを各ハードディスク３１０に転送し（ステップＳ２０４）、処理を終了する。
【００６５】
ホスト装置１００よりコマンドを受信していないと判別すると（Ｓ２０３；ＮＯ）、ＭＰＵ２２０は、ステップＳ２０２に戻す。
【００６６】
何れかのハードディスク３１０よりエラー情報を受信したと判別すると（Ｓ２０２；ＹＥＳ）、ＭＰＵ２２０は、受信したエラー情報のエラーセクタに記憶されているデータと同等のデータがパリティデータや二重化されたデータとして他のハードディスク３１０に記憶されているか否かを判別する（ステップＳ２０２）。
【００６７】
エラー情報のエラーセクタに記憶されているデータが他のハードディスク３１０に記憶されていないと判別すると（Ｓ２０２；ＮＯ）、ＭＰＵ２２０は、エラー情報を送信したハードディスク３１０をコンピュータシステム１０００から切り離して（ステップＳ２０６）、ステップＳ２０２に戻す。
【００６８】
エラー情報のエラーセクタに記憶されているデータが他のハードディスク３１０に記憶されていると判別すると（Ｓ２０２；ＹＥＳ）、ＭＰＵ２２０は、他のハードディスク３１０よりエラーセクタのデータと同等のデータを取得し（ステップＳ２０７）、エラー情報を送信したハードディスク３１０に、その磁気ディスク３１６上のエラーセクタに、取得したデータを上書きさせる（ステップＳ２０８）。
【００６９】
次に、ＭＰＵ２２０は、エラー情報を送信したハードディスク３１０に、上書きしたセクタに対して再度読取処理を行わせ（ステップＳ２０９）、読み取りが成功したか否かを判別させる（ステップＳ２１０）。
【００７０】
読み取りが成功したと判別すると（Ｓ２１０；ＹＥＳ）、ＭＰＵ２２０は、ステップＳ２０２に戻る。
【００７１】
読み取りが失敗したと判別すると（Ｓ２１０；ＮＯ）、ＭＰＵ２２０は、エラー情報を送信したハードディスク３１０に、Reassign Blocks Commandを実行させ、修復を行わせ、ステップＳ２０１に戻す。つまり、エラー情報を送信したハードディスク３１０は、代替セクタ領域３１６ｂに、修復不可能なエラーセクタに対応する代替セクタを作成し、その代替セクタ上に他のハードディスク３１０から読み取ったデータを記憶させる。そして、そのエラーセクタのデータを読み取る場合には、そのエラーセクタに対応する代替セクタからデータを読み取るようにする。
【００７２】
このようにして、エラーセクタ修復処理によれば、ＲＡＩＤコントローラ２００は、何れかのハードディスク３１０において修復不可能なエラーセクタが検出された場合に、他のハードディスク３１０に記憶されるデータを使用して、そのエラーセクタを修復することが出来る。
【００７３】
以上、本発明の実施形態に係るＲＡＩＤシステムを適用したコンピュータシステム１０００によれば、ＲＡＩＤシステムにおけるデータの修復処理をホスト装置１００に負荷を掛けずに行うことができる。
また、ハードディスク３１０は、バックグラウンドメディアスキャンを行い、さらに、ＲＡＩＤコントローラ２００は、修復不可能なエラーセクタのエラー情報を受信した場合には、他のハードディスク３１０のデータをエラーセクタに上書きさせ、それでも修復されない場合には、さらにReassign Blocks Commandによって代替セクタを生成して修復するので確実にエラーセクタの修復を行うことができる。
【００７４】
なお、本発明は上記実施形態に限定されず、種々の応用及び変形が可能である。
【００７５】
上記実施形態においては、ハードディスク３１０は、修復不可能なエラーセクタを検出した場合には、その履歴をエラーログ領域３１０ｃに記録したが、修復可能なエラーセクタを検出した場合にも、その履歴をエラーログ領域３１０ｃに記録するようにしてもよい。
【００７６】
上記実施形態においては、ディスクアレイ３００を構成する記憶装置にハードディスクドライブを適用したが、それに限定されるものではなく、光ディスクドライブ、光磁気ディスクドライブ、半導体記憶装置等を適用してもよい。
【００７７】
また、その他、具体的な細部構成等についても適宜変更可能である。
【図面の簡単な説明】
【００７８】
【図１】本発明の実施形態に係るコンピュータシステムの構成図である。
【図２】図１のハードディスクの構成図である。
【図３】（ａ）図２の磁気ディスクの構成図である。（ｂ）図２の磁気ディスクが記憶する設定情報を説明するための図である。
【図４】図１のハードディスクが行うバックグラウンドメディアスキャン処理を説明するためのフローチャートである。
【図５】図１のＲＡＩＤコントローラが行うエラーセクタ修復処理を説明するためのフローチャートである。
【符号の説明】
【００７９】
１００      ホスト装置
１１０      ＣＰＵ
１２０      ＲＡＭ
１３０      ＲＯＭ
１４０      記憶装置インタフェース回路
２００      ＲＡＩＤコントローラ
２１０      ホストインタフェース回路
２２０      ＭＰＵ
２３０      ＲＡＭ
２４０      ＲＯＭ
２５０      ＨＤＤインタフェース回路
３００      ディスクアレイ
３１０      ハードディスク
３１１      インタフェース回路
３１２      ハードディスクコントローラ
３１３      ＲＡＭ
３１４      ＲＯＭ
３１５      ドライブ
３１６      磁気ディスク
３１６ａ    通常セクタ領域
３１６ｂ    代替セクタ領域
３１６ｃ    エラーログ領域
３１６ｄ    設定情報記憶領域
３１６ｅ    設定情報
【図１】
0005181795.tif 000002
【図２】
0005181795.tif 000003
【図３】
0005181795.tif 000004
【図４】
0005181795.tif 000005
【図５】
0005181795.tif 000006