(57)【要約】【課題】パフォーマンス低下やコストアップを招くことなく、リビルドによるデータ復旧を確実に行うこと、さらに、未使用領域でのエラーのように無視可能なエラーは無視してリビルドを継続させること。【解決手段】ディスクアレイ装置２００は、リビルドエラーが発生した場合、エラー発生箇所の情報をセクタ保持部２０３に保持し、リビルドを停止する。ホストコンピュータ１００は、ディスクアレイ装置２００にてリビルドエラーが発生した場合、ディスクアレイ装置２００からエラー発生箇所の情報を取得し、該エラー発生箇所の情報からリビルドエラーがリビルド処理を継続させるべきエラーか判定し、リビルド処理を継続させるべきエラーの場合、該エラー発生箇所をスキップして前記リビルド処理を再開する指示をディスクアレイ装置２００に行う。この指示に応じて、ディスクアレイ装置２００は、前記エラー発生箇所をスキップして前記リビルド処理を再開する。【選択図】図１
2011237934.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶装置で構成される記憶装置アレイの動作を制御する制御装置と、前記制御装置を介して前記複数の記憶装置へのアクセスを行う情報処理装置とを有する記憶装置アレイシステムであって、
前記制御装置は、
前記複数の記憶装置に含まれる何れかの記憶装置に記憶されるデータを他の記憶装置に記憶されるデータに基づいて復元するリビルド処理を実行するリビルド手段と、
前記リビルド処理中にエラーが発生した場合、前記記憶装置におけるエラー発生箇所の情報を保持する保持手段と、
前記保持手段に保持される前記エラー発生箇所の情報を前記情報処理装置に送信する送信手段とを有し、
前記情報処理装置は、
前記送信手段により送信される前記エラー発生箇所の情報を取得する取得手段と、
前記取得手段で取得した前記エラー発生箇所の情報に基づいて、前記リビルド処理中のエラーが前記リビルド処理を継続させるべきエラーであるか否かを判定する判定手段と、
前記判定手段により前記リビルド処理中のエラーが前記リビルド処理を継続させるべきエラーであると判定された場合、前記エラー発生箇所をスキップして前記リビルド処理を再開する指示を前記制御装置に行う制御手段とを有し、
前記リビルド手段は、前記リビルド処理中にエラーが発生した場合、前記リビルド処理を停止するとともに、前記制御手段により前記リビルド処理を再開する指示が行われたことに応じて、前記エラー発生箇所をスキップして前記リビルド処理を再開することを特徴とする記憶装置アレイシステム。
【請求項２】
前記情報処理装置は、前記複数の記憶装置内の各領域の使用状況を示す情報を管理する管理手段を有し、
前記判定手段は、前記取得手段が取得した前記エラー発生箇所の情報と、前記管理手段により管理される前記各領域の使用状況を示す情報に基づいて、前記エラー発生箇所が前記他の記憶手段における使用領域であるか未使用領域であるかを判定し、前記未使用領域であると判定した場合に、前記リビルド処理中に発生したエラーが前記リビルド処理を継続させるべきエラーであると判定することを特徴とする請求項１に記載の記憶装置アレイシステム。
【請求項３】
前記制御装置は、前記リビルド処理中にエラーが発生した場合に前記情報処理装置に割り込み信号を送信する割り込み送信手段を有し、
前記情報処理装置は、前記制御装置から送信される割り込み信号を受信する割り込み受信手段を有し、
前記取得手段は、前記割り込み受信手段により前記割り込み信号を受信した場合に、前記制御装置から前記エラー発生箇所の情報を取得することを特徴とする請求項１又は２に記載の記憶装置アレイシステム。
【請求項４】
前記取得手段は、前記制御装置に対して定期的に問合わせを行うことにより、前記制御装置から前記エラー発生箇所の情報を取得することを特徴とする請求項１又は２に記載の記憶装置アレイシステム。
【請求項５】
前記リビルド処理中に発生したエラーは、前記リビルド処理中に発生した、前記他の記憶装置に記憶されるデータの読み取りエラーであることを特徴とする請求項１乃至４のいずれか１項に記載の記憶装置アレイシステム。
【請求項６】
前記制御手段は、前記判定手段により前記リビルド処理中のエラーが前記リビルド処理を継続させるべきなエラーであると判定された場合、前記エラー発生箇所に特定データを上書きする上書き処理を実行する指示及び前記エラー発生箇所をスキップして前記リビルド処理を再開する指示を前記制御装置に行うものであり、
前記リビルド手段は、前記リビルド処理中にエラーが発生した場合、前記リビルド処理を停止するとともに、前記制御手段により前記上書き処理を実行する指示及び前記リビルド処理を再開する指示が行われたことに応じて、前記エラー発生箇所を特定データで上書きし、さらに、前記エラー発生箇所をスキップして前記リビルド処理を再開することを特徴とする請求項１乃至５のいずれか１項に記載の記憶装置アレイシステム。
【請求項７】
複数の記憶装置で構成される記憶装置アレイの動作を制御する制御装置を介して前記複数の記憶装置へのアクセスを行う情報処理装置であって、
前記制御装置により実行される、前記複数の記憶装置に含まれる何れかの記憶装置に記憶されるデータを他の記憶装置に記憶されるデータに基づいて復元するリビルド処理中にエラーが発生した場合に、前記制御装置から前記リビルド処理中のエラー発生箇所の情報を取得する取得手段と、
前記取得手段で取得した前記エラー発生箇所の情報に基づいて、前記リビルド処理中のエラーが前記リビルド処理を継続させるべきエラーであるか否かを判定する判定手段と、
前記判定手段により前記リビルド処理中のエラーが前記リビルド処理を継続させるべきエラーであると判定された場合、前記エラー発生箇所をスキップして前記リビルド処理を再開する指示を前記制御装置に行う制御手段と、
を有することを特徴とする情報処理装置。
【請求項８】
前記記憶装置内の各領域の使用状況を示す情報を管理するファイル管理手段を有し、
前記判定手段は、前記取得手段で取得した前記エラー発生箇所の情報と、前記ファイル管理手段で管理される情報から、前記エラー発生箇所が前記他の記憶手段における使用領域か未使用領域かを判定し、未使用領域と判定した場合に、前記リビルド処理中のエラーが前記リビルド処理を継続させるべきエラーであると判定することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記リビルド処理中にエラーが発生した場合に前記制御装置から送信される割り込み信号を受信する割り込み受信手段を有し、
前記取得手段は、前記割り込み受信手段により前記割り込み信号を受信した場合に、前記制御装置から前記エラー発生箇所の情報を取得することを特徴とする請求項７又は８に記載の情報処理装置。
【請求項１０】
前記取得手段は、前記制御装置に対して定期的に問合わせを行うことにより、前記制御装置から前記エラー発生箇所の情報を取得することを特徴とする請求項７又は８に記載の情報処理装置。
【請求項１１】
前記リビルド処理中に発生したエラーは、前記リビルド処理中に発生した、前記他の記憶装置に記憶されるデータの読み取りエラーであることを特徴とする請求項７乃至１０のいずれか１項に記載の情報処理装置。
【請求項１２】
前記制御手段は、前記判定手段により前記リビルド処理中のエラーが前記リビルド処理を継続させるべきエラーであると判定された場合、前記エラー発生箇所に特定データを上書きする上書き処理を実行する指示及び前記エラー発生箇所をスキップして前記リビルド処理を再開する指示を前記制御装置に行うことを特徴とする請求項７乃至１１のいずれか１項に記載の情報処理装置。
【請求項１３】
複数の記憶装置で構成される記憶装置アレイの動作を制御する制御装置と、前記制御装置を介して前記複数の記憶装置へのアクセスを行う情報処理装置とを有する記憶装置アレイシステムにおける記憶装置アレイ制御方法であって、
前記制御装置が実行する、
前記複数の記憶装置に含まれる何れかの記憶装置に記憶されるデータを他の記憶装置に記憶されるデータに基づいて復元するリビルド処理を実行するリビルドステップと、
前記リビルド処理中にエラーが発生した場合、前記記憶装置におけるエラー発生箇所の情報を前記制御装置の保持手段に保持する保持ステップと、
前記リビルド処理中にエラーが発生した場合、前記リビルド処理を停止する停止ステップと、
前記保持ステップで保持される前記エラー発生箇所の情報を前記情報処理装置に送信する送信ステップと、
前記情報処理装置から前記エラー発生箇所をスキップして前記リビルド処理を再開する指示が行われたことに応じて、前記エラー発生箇所をスキップして前記リビルド処理を再開する再開ステップとを有し、
前記情報処理装置が実行する、
前記送信ステップで送信される前記エラー発生箇所の情報を取得する取得ステップと、
前記取得ステップで取得した前記エラー発生箇所の情報に基づいて、前記リビルド処理中のエラーが前記リビルド処理を継続させるべきエラーであるか否かを判定する判定ステップと、
前記判定ステップで前記リビルド処理中のエラーが前記リビルド処理を継続させるべきエラーであると判定された場合、前記エラー発生箇所をスキップして前記リビルド処理を再開する指示を前記制御装置に行う制御ステップとを有する
ことを特徴とする記憶装置アレイ制御方法。
【請求項１４】
複数の記憶装置で構成される記憶装置アレイの動作を制御する制御装置を介して前記複数の記憶装置へのアクセスを行う情報処理装置における記憶装置アレイ制御方法であって、
前記制御装置により実行される、前記複数の記憶装置に含まれる何れかの記憶装置に記憶されるデータを他の記憶装置に記憶されるデータに基づいて復元するリビルド処理中にエラーが発生した場合に、前記制御装置から前記リビルド処理中のエラー発生箇所の情報を取得する取得ステップと、
前記取得ステップで取得した前記エラー発生箇所の情報に基づいて、前記リビルド処理中のエラーが前記リビルド処理を継続させるべきエラーであるか否かを判定する判定ステップと、
前記判定ステップで前記リビルド処理中のエラーが前記リビルド処理を継続させるべきエラーであると判定された場合、前記エラー発生箇所をスキップして前記リビルド処理を再開する指示を前記制御装置に行う制御ステップと、
を有することを特徴とする記憶装置アレイ制御方法。
【請求項１５】
複数の記憶装置で構成される記憶装置アレイの動作を制御する制御装置を介して前記複数の記憶装置へのアクセスを行うコンピュータを、請求項７乃至１２のいずれか１項に記載された情報処理装置の手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置アレイシステム、情報処理装置、記憶装置アレイ制御方法、及び、プログラムに関する。
【背景技術】
【０００２】
一般にディスクアレイ装置は、複数の磁気ディスクドライブ（以下、ＨＤＤと称する）から構成されるディスクアレイと、このディスクアレイ内の各ＨＤＤ（メンバーＨＤＤ）に対するアクセスを制御するディスクアレイコントローラとを備える。
【０００３】
ディスクアレイ装置は、複数のＨＤＤに同一のデータを記憶させることによって信頼性の向上を図り、また、複数のＨＤＤを並列に動かして読み出し／書き込みを分散して実行することでアクセスの高速化を図るものである。
【０００４】
ディスクアレイコントローラは、ホストコンピュータから転送される書き込みデータを複数のＨＤＤに転送する、或いは、書き込みデータに対して、データ訂正情報としての冗長データを生成し、複数のＨＤＤのうち、いずれかに転送する。
【０００５】
これにより、複数のＨＤＤのうち、１台の故障に対して、この冗長データ、あるいは冗長データと残りのＨＤＤのデータを用いて故障したＨＤＤのデータを修復することを可能としている。
【０００６】
データ冗長化の手法の１つとして、ＲＡＩＤ(Redundant Arrays of Inexpensive Disks)の手法が知られている。ＲＡＩＤ手法では、ＲＡＩＤのデータと冗長データとの関連において、種々のＲＡＩＤレベルに分類されており、中でもＲＡＩＤレベル１及びＲＡＩＤレベル５は、代表的なＲＡＩＤレベルである。
【０００７】
ＲＡＩＤレベル１は、最低２台のＨＤＤを必要とする。ＲＡＩＤレベル１では、ホストコンピュータから転送される書き込みデータを複数のＨＤＤにそれぞれ転送する。即ち、同一のデータを複数のＨＤＤに書き込む。この構成により、１台のＨＤＤが故障した場合、他のＨＤＤを使用するように切り替えることで信頼性の向上を図る。また、故障したＨＤＤに代えて用いられる新しいＨＤＤに、切り替えられたＨＤＤの全てのデータをコピーすることで、修復することができる。
【０００８】
ＲＡＩＤレベル５は、最低３台のＨＤＤを必要とする。例えば、ＲＡＩＤレベル５をＮ台のＨＤＤを用いて実現する場合、ホストコンピュータから転送される書き込みデータを分割し、該分割したデータをＮ−１台のＨＤＤに分散して転送する。また、分割されたデータの排他的論理和演算を行い、該演算結果（パリティデータ）を残り1台のＨＤＤに転送する。なお、ＲＡＩＤレベル５では、パリティデータ専用のＨＤＤは設けず、パリティデータを全てのＨＤＤに分散して配置する。
【０００９】
また、データ更新時には、書き込みデータの格納先となるＨＤＤ内領域に格納されている書き込み前のデータ（旧データ）と、当該書き込みデータの格納先に対応する別のＨＤＤの領域に格納されている更新前のパリティデータ（旧パリティデータ）を読み出す。そして、ホストコンピュータから転送される書き込みデータ（新データ）と旧データと旧パリティデータとの間の排他的論理和演算を行って、更新されたパリティデータ（新パリティデータ）を生成し、当該更新パリティデータで元のパリティデータを更新する。
【００１０】
ＲＡＩＤレベル５では、１台のＨＤＤ故障に対して、他のＨＤＤからディスクアレイのディスク領域を管理する単位であるストライプ毎にデータを読み出し、それらのデータの排他的論理和演算を行う。このＲＡＩＤの機能により、故障したＨＤＤのデータを、代わりに用いられる新ＨＤＤ内に修復することができる。
【００１１】
このように、ＲＡＩＤ構成のディスクアレイ装置では、故障したＨＤＤを修復することが可能となるが、近年のようにＨＤＤ容量が増加することでＨＤＤ修復時におけるＨＤＤの未使用領域が増加する可能性が高くなっている。この時、ＨＤＤの未使用領域に故障したセクタが検出されると、ＨＤＤ修復が停止してしまい、ＲＡＩＤ手法による信頼性向上の恩恵を受けられない場合がある。
【００１２】
こうした状況に対して、ディスクアレイ装置内にＨＤＤ管理テーブルを設け、このＨＤＤ管理テーブルによりＨＤＤ内の故障発生個所が使用領域であるか判断し、ＨＤＤ内の使用領域に保持されたデータのみを修復する技術が提案されている（特許文献１）。このような技術を用いることにより、未使用領域の故障セクタによる影響を回避することができる。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００２−１７５１５８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
しかし、ＨＤＤの故障発生率が低い場合に対して、ＨＤＤ管理テーブル及び修復の必要性を判断する機能をディスクアレイ装置内に設ける構成は、次のような課題を有する。例えば、ディスクアレイ装置のコスト増加、構成の複雑化、及びＨＤＤ管理テーブルの更新に伴うＨＤＤアクセスパフォーマンスの低下が課題となる。
【００１５】
なお、ＨＤＤアクセスパフォーマンスの低下を抑えるため、ＨＤＤ管理テーブルの更新間隔を長くすることは可能である。しかし、ＨＤＤ管理テーブルの更新間隔を長くすると、実際のＨＤＤ内の使用状態とＨＤＤ管理テーブルの情報に不一致が発生し、最悪の場合、使用領域での故障が発生したにもかかわらず、データ修復の必要がないと誤判断してしまう可能性があり問題である。
【００１６】
本発明は、上記の問題点を解決するためになされたものである。本発明の目的は、パフォーマンス低下やコストアップを招くことなく、リビルドによるデータ復旧を確実に行い、また、未使用領域でのエラーのように無視可能なエラーは無視してリビルドを継続させる仕組みを提供することである。
【課題を解決するための手段】
【００１７】
本発明は、複数の記憶装置で構成される記憶装置アレイの動作を制御する制御装置と、前記制御装置を介して前記複数の記憶装置へのアクセスを行う情報処理装置とを有する記憶装置アレイシステムであって、前記制御装置は、前記複数の記憶装置に含まれる何れかの記憶装置に記憶されるデータを他の記憶装置に記憶されるデータに基づいて復元するリビルド処理を実行するリビルド手段と、前記リビルド処理中にエラーが発生した場合、前記記憶装置におけるエラー発生箇所の情報を保持する保持手段と、前記保持手段に保持される前記エラー発生箇所の情報を前記情報処理装置に送信する送信手段とを有し、前記情報処理装置は、前記送信手段により送信される前記エラー発生箇所の情報を取得する取得手段と、前記取得手段で取得した前記エラー発生箇所の情報に基づいて、前記リビルド処理中のエラーが前記リビルド処理を継続させるべきエラーであるか否かを判定する判定手段と、前記判定手段により前記リビルド処理中のエラーが前記リビルド処理を継続させるべきエラーであると判定された場合、前記エラー発生箇所をスキップして前記リビルド処理を再開する指示を前記制御装置に行う制御手段とを有し、前記リビルド手段は、前記リビルド処理中にエラーが発生した場合、前記リビルド処理を停止するとともに、前記制御手段により前記リビルド処理を再開する指示が行われたことに応じて、前記エラー発生箇所をスキップして前記リビルド処理を再開することを特徴とする。
【発明の効果】
【００１８】
本発明によれば、パフォーマンス低下やコストアップを招くことなく、リビルドによるデータ復旧を確実に行い、また、未使用領域でのエラーのように無視可能なエラーは無視してリビルドを継続させることができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施例１に係るディスクアレイシステム１０００の構成を示す図である。
【図２】本発明の実施例１に係るディスクアレイシステム１０００における記憶装置アレイ制御処理の概略フローを示す図である。
【図３】本発明の実施例１に係るディスクアレイ装置２００のリビルド処理の一例を示すフローチャートである。
【図４】本発明の実施例１に係るホストコンピュータ１００のリビルド処理の一例を示すフローチャートである。
【図５】本発明の実施例１に係るディスクアレイ装置２００の故障セクタ情報送信処理の一例を示すフローチャートである。
【図６】本発明の実施例１に係るディスクアレイシステム１０００の制御コマンド６００のフォーマットを示す図である。
【図７】ディスクアレイ装置２００からホストコンピュータ１００に送信される割り込み要因情報のフォーマットを示す図である。
【図８】ディスクアレイ装置２００からホストコンピュータ１００に送信される故障セクタ情報のフォーマットを示す図である。
【図９】ホストコンピュータ１００からディスクアレイ装置２００から送信されるリビルド処理開始セクタ情報及びリビルド処理終了セクタ情報のフォーマットを示す図である。
【図１０】本発明の実施例１に係るディスクアレイシステム１０００で使用するファイルシステムのフォーマットを示す図である。
【図１１】本発明の実施例２に係るディスクアレイシステム２０００の構成を示す図である。
【図１２】本発明の実施例２に係るディスクアレイ装置２５０のリビルド処理の一例を示すフローチャートである。
【図１３】本発明の実施例２に係るホストコンピュータ１５０のリビルド処理の一例を示すフローチャートである。
【図１４】本発明の実施例４に係るディスクアレイシステム１０００における記憶装置アレイ制御処理の概略フローを示す図である。
【図１５】本発明の実施例４に係るホストコンピュータ１００のリビルド処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００２０】
以下、本発明を実施するための形態について図面を用いて説明する。
【実施例１】
【００２１】
図１は、本発明の実施例１に係るディスクアレイシステム１０００の構成を示す図である。
図１に示すように、ディスクアレイシステム（記憶装置アレイシステム）１０００は、情報処理装置としてのホストコンピュータ１００、ディスクアレイ装置２００、記憶装置であるＨＤＤ５００、５０１及び５０２を有する。なお、本発明は、記憶装置をＨＤＤに限定するものではなく、他の記憶装置、例えば、フラッシュメモリ等の半導体を使用した記憶装置等でも同様の結果を得ることが出来る。また、ディスクアレイ装置２００に接続される記憶装置の台数も３台に限定されるものではなく、２台でも４台以上接続されていてもよい。
【００２２】
ホストコンピュータ１００は、記憶装置であるＨＤＤ５００、５０１及び５０２に対して、ディスクアレイ装置２００を介して書き込み及び読み出しを行う。ホストコンピュータ１００は、ディスクアレイ装置２００の上位装置で、具体的には、パーソナルコンピュータ等の本体や、複合機（ＭＦＰ）等の画像処理装置のコントローラ部等に対応する。なお、ＭＦＰは、Multifunction Peripheralを示す。なお、本発明では、記憶装置をＨＤＤと限定するものではなく、半導体を使用した記憶装置等でも同様の結果を得ることが出来る。
【００２３】
ホストコンピュータ１００、ディスクアレイ装置２００、ＨＤＤ５００、５０１及び５０２は、シリアルＡＴＡインタフェース４００により接続されている。本発明では、ホストコンピュータ１００、ディスクアレイ装置２００、ＨＤＤ５００、５０１及び５０２の接続をシリアルＡＴＡインタフェースに限定するものではなく、ＳＡＳインタフェース等の他のインタフェースでも同様の結果を得ることが出来る。なお、ＳＡＳは、Serial Attached SCSIを示す。
【００２４】
また、ホストコンピュータ１００とディスクアレイ装置２００は、割り込み信号線３００でも接続されており、ディスクアレイ装置２００が生成した割り込み信号を割り込み信号線３００を介してホストコンピュータ１００が受信する。
【００２５】
ホストコンピュータ１００は、ファイルシステム機能部１０１と、プロセッサ１０２と、割り込み受信部１０３と、故障セクタ読み取り部１０４と、領域判定部１０５および動作指示部１０６を有する。
【００２６】
プロセッサ１０２は、中央演算処理装置であり、不図示のＲＯＭやＨＤＤに記録された初期化プログラム、ＯＳ(Operating System)やその他のプログラムを実行することにより、ホストコンピュータ１００の主制御を行う。割り込み受信部１０３は、例えば、割り込みコントローラであり、ディスクアレイ装置２００からの割り込みを受信し、プロセッサ１０２に割り込み受信を通知する。なお、割り込み受信部１０３が、プロセッサ１０２に含まれる構成であってもよい。
【００２７】
ファイルシステム機能部１０１は、プロセッサ１０２により実行されるＯＳに含まれるファイル管理システム機能に対応し、後述する図１０に示すファイル管理情報（ＦＡＴ８０３、８０４等）にしたがって、ＨＤＤに記憶されるファイルにアクセスする。また、ファイルシステム機能部１０１は、ファイル管理情報を用いて、記憶装置内（ＨＤＤ内）の各領域の使用状況を示す情報を管理している。ファイルシステム機能部１０１は、プロセッサ１０２が、ＨＤＤにコンピュータ読取可能に記録されたＯＳのプログラムを読み出して図示しないＲＡＭ上で実行することにより実現される機能に対応する。
【００２８】
故障セクタ読み取り部１０４は、プロセッサ１０２からの指示を受け、ＳＡＴＡ Ｉ／Ｆ４００を介してディスクアレイ装置２００から故障セクタを読み取る。領域判定部１０５は、プロセッサ１０２からの指示を受け、ファイルシステム機能部１０１が管理するＨＤＤの使用領域及び未使用領域に関する情報（後述する図１０に示す８０３，８０４）と故障セクタ読み取り部１０４が読み取った故障セクタを比較する。そして、領域判定部１０５は、上記比較結果から、故障セクタが使用領域であるか、未使用領域であるかを判定し、該判定結果をプロセッサ１０２に通知する。動作指示部１０６は、プロセッサ１０２からの指示を受け、ディスクアレイ装置２００に対して動作指示を行う。
【００２９】
なお、故障セクタ読み取り部１０４、領域判定部１０５、動作指示部１０６は、ハードウェアで構成されていてもよいし、ソフトウェア（ＯＳ上で動作するディスクアレイ装置２００のデバイスドライバの機能）により実現される構成でもよい。１０４〜１０６は、ソフトウェアの場合、プロセッサ１０２が、ＨＤＤにコンピュータ読取可能に記録されたディスクアレイ装置２００のデバイスドライバプログラムを読み出して図示しないＲＡＭ上で実行することにより実現される機能に対応する。
【００３０】
ディスクアレイ装置２００は、ＳＡＴＡデバイス制御部２０１と、ＲＡＩＤ制御部２０２と、セクタ保持部２０３と、割り込み送信部２０４およびＳＡＴＡホスト制御部２０５を有する。
【００３１】
ＳＡＴＡデバイス制御部２０１は、ホストコンピュータ１００からＳＡＴＡ Ｉ／Ｆ４００を介して受信する書き込み要求および読み出し要求に従い、ＲＡＩＤ制御部２０２に対して情報を送信する。また、ＳＡＴＡデバイス制御部２０１は、ＲＡＩＤ制御部２０２からの制御に従い、ホストコンピュータ１００に対して情報を送信する。
【００３２】
ＲＡＩＤ制御部２０２は、ＳＡＴＡデバイス制御部２０１からの情報を受けて、ＲＡＩＤと呼ばれる制御を行う。ＲＡＩＤ制御部２０２は、ＳＡＴＡホスト制御部２０５からのＨＤＤ故障通知を受信した場合、セクタ保持部２０３に対して故障セクタ情報を転送すると共に、割り込み送信部２０４に対して割り込み送信指示を行う。なお、故障セクタ情報は、故障セクタ、ＨＤＤ故障を検出したＨＤＤ ＩＤ及びＨＤＤ故障を検出したチャンネル情報を含む。
【００３３】
セクタ保持部２０３は、ＲＡＩＤ制御部２０２からの故障セクタ情報を受けて、故障セクタ情報を保持する。また、セクタ保持部２０３は、ＲＡＩＤ制御部２０２からの故障セクタ情報読み出し要求に従い、故障セクタ情報をＲＡＩＤ制御部２０２に通知する。
【００３４】
割り込み送信部２０４は、ＲＡＩＤ制御部２０２からの割り込み送信指示を受けて、ホストコンピュータ１００に対して割り込み信号線３００を介して割り込みを送信する。また、割り込み送信部２０４は、ＲＡＩＤ制御部２０２からの指示に従い、割り込み送信の要因をクリアする。また、割り込み送信部２０４は、ＲＡＩＤ制御部２０２からの指示に従い、割り込みイネーブルの設定を行う。なお、セクタ保持部２０３、割り込み送信部２０４は、ＲＡＩＤ制御部２０２に含まれる構成であってもよい。
【００３５】
ＳＡＴＡホスト制御部２０５は、ＲＡＩＤ制御部２０２からの指示に従い、ＳＡＴＡ Ｉ／Ｆ４００を介してＨＤＤ５００、５０１及び５０２に書き込み要求及び読み出し要求を行う。
【００３６】
図２は、本発明の実施例１に係るディスクアレイシステム１０００における記憶装置アレイ制御処理の概略フローを示す図である。なお、ディスクアレイ装置２００の処理は、ＲＡＩＤ制御部２０２の制御により実行され、ホストコンピュータ１００の処理は、プロセッサ１０２の制御により実行される。
【００３７】
ディスクアレイ装置２００は、条件が揃うとリビルド処理を開始する（Ｓ１００）。この条件は、故障したＨＤＤに代わり、新しいＨＤＤが接続されたことをディスクアレイ装置２００が検出した場合や、ホストコンピュータ１００からのリビルド指示をディスクアレイ装置２００が受信した場合が想定される。しかし、それ以外の条件によるリビルド処理の開始であっても構わない。リビルド処理は、ディスクアレイ装置２００内のＲＡＩＤ制御部２０２によって実行される。リビルド処理とは、ＲＡＩＤ構成する複数の記憶装置に含まれる何れかの記憶装置（例えばＨＤＤ５０２）に記憶されるデータを他の記憶装置（ＨＤＤ５００、５０１）に記憶されるデータから復元する処理を示す。例えば、ＨＤＤ５００及びＨＤＤ５０１を正常なＨＤＤとし、ＨＤＤ５０２を故障により交換したＨＤＤとし、ＲＡＩＤレベルが「５」である場合のリビルド処理は次のようになる。
【００３８】
ＲＡＩＤ制御部２０２は、ＨＤＤ５００及び５０１からデータを読み出し、読み出した結果から排他的論理和演算を行い、得られた結果を修復データとしてＨＤＤ５０２に書き込む。また、ＲＡＩＤレベルが「１」であれば、ＲＡＩＤ制御部２０２は、正常なＨＤＤ５００及び５０１の内、ＲＡＩＤ制御部２０２によって予め決められているマスターとなるＨＤＤからデータを読み出し、これを修復データとしてＨＤＤ５０２に書き込む。
【００３９】
以下、図２のフローチャートの説明にもどる。
ディスクアレイ装置２００のＲＡＩＤ制御部２０２は、リビルド処理中に正常なＨＤＤに対する故障を検出すると、リビルド処理を停止し（Ｓ１０１）、割り込み送信部２０４を介してホストコンピュータ１００に対して割り込みを通知する（Ｓ１０２）。
【００４０】
ホストコンピュータ１００では、割り込み受信部１０３が割り込みを受信すると、故障セクタ読み取り部１０４がディスクアレイ装置２００に対して故障セクタ読み出し指示を行う（Ｓ１０３）。
【００４１】
ディスクアレイ装置２００は、ホストコンピュータ１００からの故障セクタ読み出し指示を受けて、ホストコンピュータ１００に故障セクタ情報を通知する（Ｓ１０４）。
ホストコンピュータ１００では、故障セクタ読み取り部１０４がディスクアレイ装置２００から故障セクタ情報を受信すると、領域判定部１０５が、該故障セクタ情報とファイルシステム機能部１０１からのＨＤＤの未使用領域に関する情報を元に、故障セクタの判定を行う（Ｓ１０５及びＳ１０８）。
【００４２】
故障セクタ判定の結果、故障セクタが未使用領域であった場合（Ｓ１０５）、ホストコンピュータ１００の動作指示部１０６がディスクアレイ装置２００に対してリビルド処理の再開を通知する（Ｓ１０６）。この通知を受けたディスクアレイ装置２００では、ＲＡＩＤ制御部２０２が、リビルド処理を再開する（Ｓ１０７）。
【００４３】
リビルド処理再開時に、再度、正常なＨＤＤに対する故障を検出すると、ＲＡＩＤ制御部２０２はリビルド処理を停止し（Ｓ１０１）、割り込み送信部２０４を介してホストコンピュータ１００に対して割り込みを通知する（Ｓ１０２）。
【００４４】
故障セクタ判定の結果、故障セクタが使用領域であった場合（Ｓ１０８）、ホストコンピュータ１００のプロセッサ１０２は、ユーザに対してＨＤＤ故障を通知し（Ｓ１０９）、故障したＨＤＤの交換を促す。例えば、ホストコンピュータ１００の不図示のディスプレイに故障しているＨＤＤを特定する情報をユーザに通知するためのメッセージを表示して、故障したＨＤＤの交換を促す。
【００４５】
図３は、本発明の実施例１に係るディスクアレイ装置２００のリビルド処理の一例を示すフローチャートである。なお、このフローチャートの処理は、ＲＡＩＤ制御部２０２の制御により実行される。また、本フローチャートの説明では、ＨＤＤ５００及び５０１を正常とし、ＨＤＤ５０２を故障により交換されたものとして説明を行うが、本発明は、これに限定されるものではない。
【００４６】
リビルド処理を開始すると、ＲＡＩＤ制御部２０２は、正常なＨＤＤ５００、５０１からデータをリードする（Ｓ２００）と同時にエラーの確認を実施する（Ｓ２０１）。
正常なＨＤＤ５００、５０１の故障等によるリードエラーの発生を確認（検知）した場合（Ｓ２０１でＹｅｓ）、ＲＡＩＤ制御部２０２は、故障セクタ（リビルドリードエラーのエラー発生箇所）を特定し、セクタ保持部２０３に故障セクタを保持させる（Ｓ２０２）。この時、ＲＡＩＤ制御部２０２は、リードエラーを検出したＨＤＤ５００或いはＨＤＤ５０１のＩＤも故障セクタとともにセクタ保持部２０３に保持させておく。
【００４７】
そして、ＲＡＩＤ制御部２０２は割り込み送信部２０４に対してホストコンピュータ１００への割り込み要求を行う（Ｓ２０３）。これにより、割り込み送信部２０４により、リードエラーの割り込みが生成され、ホストコンピュータ１００に送信される。なお、Ｓ２０３の処理では、割り込み送信部２０４は内部の割り込み要因レジスタに、割り込み要因がリビルド処理時のリードエラー（リビルドリードエラー）であることを示す情報を保持しておく。そして、ＲＡＩＤ制御部２０２は、リビルド処理を停止させ（Ｓ２０４）、本フローチャートの処理を終了する。
【００４８】
なお、この後、ホストコンピュータ１００から割り込み要因読み取りコマンドを受信すると、ＲＡＩＤ制御部２０２は、割り込み要因がリビルド処理時のリードエラー（リビルドリードエラー）であることを示す情報を割り込み送信部２０４から取得してホストコンピュータ１００に送信する（不図示の処理）。さらに、ホストコンピュータ１００から故障セクタの確認コマンドを受信すると、ＲＡＩＤ制御部２０２は、セクタ保持部２０３に保持された故障セクタ情報をホストコンピュータ１００に送信する（後述する図５に示す処理）。さらに、ホストコンピュータ１００からリビルド再開指示を受信すると、ＲＡＩＤ制御部２０２は、リビルド再開指示で指示されたセクタ（例えば、故障セクタの次のセクタ）からリビルド処理を再開する。
【００４９】
一方、上記Ｓ２０１において、リードエラーが発生していないと判定した場合（Ｓ２０１でＮｏ）、ＲＡＩＤ制御部２０２は、リードデータから修復データを生成し、ＨＤＤ５０２にデータを書き込みを行う（Ｓ２０５）。
【００５０】
そして、ＲＡＩＤ制御部２０２は、全ての領域に対してデータ修復を行ったかどうかを確認する（Ｓ２０６）。そして、まだデータ修復未実施の領域が存在すると判定した場合（Ｓ２０６でＮｏ）、ＲＡＩＤ制御部２０２は、Ｓ２００に処理を戻し、次のデータをリードする。
【００５１】
一方、全てのデータが修復されたと判定した場合（Ｓ２０６でＹｅｓ）、ＲＡＩＤ制御部２０２は、割り込み送信部２０４に対してホストコンピュータ１００へのリビルド処理完了の割り込み送信指示を行う（Ｓ２０７）。これにより、割り込み送信部２０４により、リビルド処理完了の割り込みが生成され、ホストコンピュータ１００に送信され、本フローチャートの処理が終了する。なお、この後、ホストコンピュータ１００から割り込み要因読み取りコマンドを受信すると、ＲＡＩＤ制御部２０２は、割り込み要因がリビルド処理完了であることを示す情報をホストコンピュータ１００に送信する（不図示の処理）。
【００５２】
なお、ＲＡＩＤ制御部２０２は、ホストコンピュータ１００から割り込み要因クリアコマンドを受信すると、割り込み送信部２０４内の割り込み要因レジスタに保持されている割り込み要因を示す情報をクリアする（不図示の処理）。
【００５３】
図４は、本発明の実施例１に係るホストコンピュータ１００のリビルド処理の一例を示すフローチャートである。なお、このフローチャートの処理は、プロセッサ１０２の制御により実行される。また、本フローチャートの説明では、ＨＤＤ５００及び５０１を正常とし、ＨＤＤ５０２を故障により交換されたものとして説明を行うが、本発明は、これに限定されるものではない。
【００５４】
ホストコンピュータ１００のプロセッサ１０２は、動作指示部１０６に対してディスクアレイ装置２００にリビルド処理開始コマンドの送付を指示し、動作指示部１０６はこの指示に従いリビルド処理開始コマンドを送信する（Ｓ３００）。ホストコンピュータ１００は、ディスクアレイ装置２００からの割り込み受信待ちとなる（Ｓ３０１）。なお、ディスクアレイ装置２００が故障したＨＤＤに代わり新しいＨＤＤが接続されたことを検出したことにより、リビルド処理を開始した場合は、Ｓ３０１の処理から開始するものとする。
【００５５】
そして、プロセッサ１０２は、割り込み受信部１０３が割り込みを受信したと判定すると（Ｓ３０１でＹｅｓ）、動作指示部１０６に対して割り込み要因読み取りコマンドの送付を指示する。この指示に従い、動作指示部１０６が割り込み要因読み取りコマンドをディスクアレイ装置２００に送信し、ディスクアレイ装置２００から割り込み要因を示す情報を取得することで、プロセッサ１０２は割り込み要因を確認する（Ｓ３０２）。なお、プロセッサ１０２は、割込み要因を確認した後、不図示のステップにおいて、動作指示部１０６に対して割り込み要因クリアコマンドの送付を指示する。この指示に従い、動作指示部１０６が割り込み要因クリアコマンドをディスクアレイ装置２００に送信する。
【００５６】
次に、プロセッサ１０２は、割り込み要因がリビルド処理時のリードエラー（リビルドリードエラー）か否か判定する（Ｓ３０３）。そして、リビルドリードエラーと判定した場合（Ｓ３０３でＹｅｓ）、プロセッサ１０２は、ホストコンピュータ１００からＨＤＤ５００、５０１および５０２内のファイルにアクセス中であるか否かを確認する（Ｓ３０４）。
【００５７】
そして、ファイルアクセス中でないと判定した場合（Ｓ３０４でＮｏ）、プロセッサ１０２は、故障セクタ確認処理を行う（Ｓ３０６）。
一方、ファイルアクセス中と判定した場合（Ｓ３０４でＹｅｓ）、プロセッサ１０２は、ファイルアクセス終了まで待ち、ファイルアクセスが終了したと判断した場合（Ｓ３０５でＹｅｓ）、故障セクタ確認処理を行う（Ｓ３０６）。
【００５８】
Ｓ３０６の故障セクタ確認処理では、プロセッサ１０２は、故障セクタ読み取り部１０４に故障セクタの確認を指示する。この指示に従い、故障セクタ読み取り部１０４が故障セクタ読み取りコマンドをディスクアレイ装置２００に送信し、ディスクアレイ装置２００から故障セクタ情報を取得することで、故障セクタを確認する。なお、故障セクタ読み取り部１０４は、故障セクタ情報を領域判定部１０５に送信する。なお、故障セクタ情報には、故障が検出されたＨＤＤ５００或いはＨＤＤ５０１のＩＤも含まれる。また、プロセッサ１０２は、ファイルシステム機能部１０１からＨＤＤ５００、５０１及び５０２における未使用領域の情報を取得し、領域判定部１０５に未使用領域の情報を送信する。
【００５９】
次に、プロセッサ１０２からの指示により領域判定部１０５は、上記取得した故障セクタ情報と未使用領域情報から故障セクタが使用領域であるか、又は、未使用領域であるかを確認（判定）し（Ｓ３０７）、確認結果をプロセッサに通知する。
【００６０】
そして、故障セクタが未使用領域であると判定した場合（Ｓ３０７でＹｅｓ）、プロセッサ１０２は、上記確認したリビルド処理中のエラーを無視すると判断する。即ち、この場合、プロセッサ１０２は、上記確認したリビルド処理中のエラーがリビルド処理を継続させるべきエラーであると判断する。そして、プロセッサ１０２は、動作指示部１０６からリビルド処理再開の指示をディスクアレイ装置２００に対して送付する（Ｓ３０８）（エラースキップ制御処理）。なお、リビルド処理の再開に関しては、故障セクタの次のセクタから再開をさせるように指示しても良いし、また、次の使用領域の先頭セクタから再開させるように指示しても良い。
【００６１】
そして、リビルド処理の再開指示を行った後は、プロセッサ１０２は、Ｓ３０１に処理を戻し、再び、割り込み受信待ちとなる。なお、ＲＡＩＤ制御部２０２は、このリビルド処理の再開指示を受けると、前記リビルド処理の再開指示で指示された開始セクタから（例えば、故障セクタの次のセクタや、次の使用領域の先頭セクタから）、リビルド処理を再開する。即ち、ＲＡＩＤ制御部２０２は、故障セクタをスキップしてリビルド処理を再開する。なお、ここでは、ホストコンピュータ１００からリビルド処理の開始セクタを指定する構成とした。しかし、ホストコンピュータ１００から単にリビルドの再開を指示し、ＲＡＩＤ制御部２０２が故障セクタの次のセクタから（故障セクタをスキップして）リビルド処理を再開するようにしてもよい。
【００６２】
一方、故障セクタが未使用領域ではなかったと判定した場合（Ｓ３０７でＮｏ）、プロセッサ１０２は、上記確認したリビルド処理中のエラーを無視しないと判断する（エラーと認識する）。即ち、この場合、プロセッサ１０２は、上記確認したリビルド処理中のエラーがリビルド処理を継続不可能なエラーであると判断する。そして、プロセッサ１０２は、ユーザに対してＨＤＤ故障を通知する（Ｓ３０９）。例えば、ホストコンピュータ１００の不図示のディスプレイに故障しているＨＤＤを特定する情報をユーザに通知するためのメッセージを表示して、故障したＨＤＤの交換を促す。そして、プロセッサ１０２は、ディスクアレイシステム１０００としてリビルド処理を完了させ（Ｓ３１１）、本フローチャートの処理を終了する。
【００６３】
また、割り込み要因がリビルド処理時のリードエラーではないと判定した場合（Ｓ３０３でＮｏ）、プロセッサ１０２は、割り込み要因がリビルド処理完了であるか判定する。そして、割り込み要因がリビルド処理完了であると判定した場合（Ｓ３１０でＹｅｓ）、プロセッサ１０２は、ディスクアレイシステム１０００としてリビルド処理を完了させ（Ｓ３１１）、本フローチャートの処理を終了する。
【００６４】
一方、割り込み要因がリビルド処理完了でないと判定した場合（Ｓ３１０でＮｏ）、プロセッサ１０２は、割り込み要因に従ったその他の処理を実施し（Ｓ３１２）、Ｓ３０１に処理を戻し、再び、割り込み受信待ちとなる。
【００６５】
図５は、本発明の実施例１に係るディスクアレイ装置２００の故障セクタ情報送信処理の一例を示すフローチャートである。なお、このフローチャートの処理は、ＲＡＩＤ制御部２０２の制御により実行される。また、本フローチャートの説明では、ＨＤＤ５００及び５０１を正常とし、ＨＤＤ５０２を故障により交換されたものとして説明を行うが、本発明は、これに限定されるものではない。
【００６６】
ＳＡＴＡデバイス制御部２０１が、ホストコンピュータ１００から故障セクタ送信コマンドを受け取ると、ＳＡＴＡデバイス制御部２０１はＲＡＩＤ制御部２０２に受信コマンドに関する情報を伝達する。そして、ＲＡＩＤ制御部２０２は故障セクタ送信コマンドを受信する（Ｓ４００）。
【００６７】
ＲＡＩＤ制御部２０２は、上記受信した故障セクタ送信コマンドに従った処理を開始し、セクタ保持部２０３に保持された故障セクタ情報を読み取る（Ｓ４０１）。
次に、ＲＡＩＤ制御部２０２は、上記読み取った故障セクタ情報から、後述する図８に示す故障セクタ情報のフォーマットに従ったデータ（送信用の故障セクタ情報）を作成し、ＳＡＴＡデバイス制御部２０１に送信する。ＳＡＴＡデバイス制御部２０１は、上記受け取った故障セクタ情報をホストコンピュータ１００に送信する（Ｓ４０２）。
【００６８】
図６は、本発明の実施例１に係るディスクアレイシステム１０００の制御コマンド６００のフォーマットを示す図である。
図６において、６００はディスクアレイ装置２００に対する制御コマンドである。実施例１のディスクアレイ装置２００では、制御コマンド６００としてＡＴＡで規定されているコマンドフォーマットを使用する。
【００６９】
制御コマンド６００において、Ｆｅａｔｕｒｅｓフィールド６０１は、対応する制御ＩＤが挿入される。実施例１に係るディスクアレイシステム１０００では、割り込みイネーブルコマンドに「０ｘ００」、割り込み要因読み取りコマンドに「０ｘ０１」を割り当てる。また、割り込み要因クリアコマンドに「０ｘ０２」を割り当てる。また、故障セクタ読み取りコマンドに「０ｘ１０」を割り当てる。また、故障セクタクリアコマンドに「０ｘ１１」を割り当てる。また、リビルド処理開始コマンドに「０ｘ２０」を割り当てる。また、リビルド処理停止コマンドに「０ｘ２１」を割り当てる。また、リビルド処理再開コマンドに「０ｘ２２」を割り当てる。
【００７０】
Ｃｏｍｍａｎｄフィールド６０２は、ＡＴＡで規定されているコマンドが挿入される。実施例１に係るディスクアレイシステム１０００では、ベンダ定義コマンドとして規定されている「０ｘＦＦ」を使用する。Ｃ／Ｉ／Ｄフィールド６０３は、ソフトリセット制御、等の指示に使用される。
【００７１】
ＦＩＳ Ｔｙｐｅフィールド６０４は、Ｆｒａｍｅ Ｉｎｆｏｒｍａｔｉｏｎ Ｓｔｒｕｃｔｕｒｅと呼ばれるフレーム構造を指定する。実施例１に係るディスクアレイシステム１０００では、Ｈｏｓｔ−ｔｏ−Ｄｅｖｉｃｅ Ｒｅｇｉｓｔｅｒタイプとして規定されている「０ｘ２７」を使用する。
【００７２】
Ｄｅｖ／Ｈｅａｄフィールド６０５は、ＨＤＤヘッド番号、マスター／スレーブデバイス、ＬＢＡ／ＣＨＳ切り替え指示等の情報が挿入される。Ｃｙｌ Ｈｉｇｈフィールド６０６は、上位ＨＤＤシリンダ番号、等が挿入される。Ｃｙｌ Ｌｏｗフィールド６０７は、下位ＨＤＤシリンダ番号、等が挿入される。
【００７３】
Ｓｅｃ Ｎｕｍフィールド６０８は、ＨＤＤセクタ番号が挿入される。Ｆｅａｔｕｒｅｓ（ｅｘｐ）フィールド６０９は、拡張されたＦｅａｔｕｒｅｓフィールド６０１として使用される。Ｃｙｌ Ｈｉｇｈ（ｅｘｐ）フィールド６１０は、１３７ＧＢｙｔｅ容量を越えるＨＤＤに対する上位ＬＢＡが割り当てられる。Ｃｙｌ Ｌｏｗ（ｅｘｐ）フィールド６１１は、１３７ＧＢｙｔｅ容量を越えるＨＤＤに対する下位ＬＢＡが割り当てられる。Ｓｅｃ Ｎｕｍ（ｅｘｐ）フィールド６１２は、１３７ＧＢｙｔｅ容量を越えるＨＤＤセクタ番号が挿入される。Ｃｏｎｔｒｏｌフィールド６１３は、ＨＤＤ制御に使用される。
【００７４】
Ｓｅｃ Ｃｎｔ（ｅｘｐ）フィールド６１４は、１３７ＧＢｙｔｅ容量を越えるＨＤＤに対する連続的に処理されるセクタ数が挿入される。Ｓｅｃ Ｃｎｔフィールド６１５は、連続的に処理されるセクタ数が挿入される。Ｒｅｓｅｒｖｅｄフィールド６１６は、今後の機能拡張用に確保され、現在は未使用となっている。
【００７５】
図７は、ディスクアレイ装置２００からホストコンピュータ１００に送信される割り込み要因情報のフォーマットを示す図である。
割り込み要因情報は、７００、７０１に示すように、アドレス０ｘ０００〜０ｘ００３の４Ｂｙｔｅに、割り込み要因を示す情報を格納する領域が割り当てられている。また、７０２、７０３に示すように、アドレス０ｘ００４〜０ｘ１ＦＦの５０８Ｂｙｔｅに、Ｒｅｓｅｒｖｅｄ領域が割り当てられている。
【００７６】
さらに、図示しないが、割込み要因（アドレス０ｘ０００〜０ｘ００３）のＢｉｔ０にはリビルド処理リードエラーが割り当てられており、Ｂｉｔ０に"１"が設定されている場合、割り込み要因がリビルド処理リードエラーであることを示す。また、Ｂｉｔ１にはリビルド処理ライトエラーが割り当てられており、Ｂｉｔ１に"１"が設定されている場合、割り込み要因がリビルド処理ライトエラーであることを示す。また、Ｂｉｔ２にはリビルド処理完了が割り当てられており、Ｂｉｔ２に"１"が設定されている場合、割り込み要因がリビルド処理完了であることを示す。また、Ｂｉｔ８にはチャンネルＡのＨＤＤ接続検出が割り当てられており、Ｂｉｔ８に"１"が設定されている場合、割り込み要因がチャンネルＡのＨＤＤ接続検出であることを示す。また、Ｂｉｔ９にはチャンネルＡのＨＤＤ切断検出が割り当てられており、Ｂｉｔ９に"１"が設定されている場合、割り込み要因がチャンネルＡのＨＤＤ切断検出であることを示す。
【００７７】
また、Ｂｉｔ１６にはチャンネルＢのＨＤＤ接続検出が割り当てられており、Ｂｉｔ１６に"１"が設定されている場合、割り込み要因がチャンネルＢのＨＤＤ接続検出であることを示す。また、Ｂｉｔ１７にはチャンネルＢのＨＤＤ切断検出が割り当てられており、Ｂｉｔ１７に"１"が設定されている場合、割り込み要因がチャンネルＢのＨＤＤ切断検出であることを示す。また、Ｂｉｔ２４にはチャンネルＣのＨＤＤ接続検出が割り当てられており、Ｂｉｔ２４に"１"が設定されている場合、割り込み要因がチャンネルＣのＨＤＤ接続検出であることを示す。また、Ｂｉｔ２５にはチャンネルＣのＨＤＤ切断検出が割り当てられており、Ｂｉｔ２５に"１"が設定されている場合、割り込み要因がチャンネルＣのＨＤＤ切断検出であることを示す。
【００７８】
ディスクアレイ装置２００では、ＲＡＩＤ制御部２０２がイベントを検出すると、各イベントに対応した割り込み要求を割り込み送信部２０４に指示する。
なお、割り込み送信部２０４は、その内部に、割り込みイネーブルレジスタと、割り込み要因レジスタを有する。ＲＡＩＤ制御部２０２は、ホストコンピュータ１００から割り込みイネーブルコマンドを受け取ると、割り込みイネーブルの設定を割り込み送信部２０４に指示する。割り込み送信部２０４は、ＲＡＩＤ制御部２０２からの指示に従い、割り込みイネーブルレジスタの対応したＢｉｔを"１"に設定する。これにより、割り込み送信部２０４は、ＲＡＩＤ制御部２０２から割り込み要求を受けても、もしその割り込みに対応するイネーブルレジスタのＢｉｔに"１"が設定されていると、その割込み要求は処理しない。一方、もしその割り込みに対応するイネーブルレジスタのＢｉｔに"１"に設定されていないと、ＲＡＩＤ制御部２０２からの割込み要求に対応する割込み要因レジスタのＢｉｔを"１"に設定し、割り込み信号線３００を介して割り込みを送信する。
【００７９】
また、ＲＡＩＤ制御部２０２は、割り込み要因読み取りコマンドを受け取ると、割り込み送信部２０４の割込み要因レジスタの値を読み取り、その値から図７に示すフォーマットに従って割り込み要因を示す情報を生成し、割り込み要因をホストコンピュータ１００に送信する。
【００８０】
また、ＲＡＩＤ制御部２０２は、割り込み要因クリアコマンドを受け取ると、割り込み要因のクリアを割り込み送信部２０４に指示する。割り込み送信部２０４は、ＲＡＩＤ制御部２０２からの指示に従い、割り込み要因レジスタ内の"１"が設定されているＢｉｔに対して割り込み要因のクリアを実施する。
【００８１】
図８は、ディスクアレイ装置２００からホストコンピュータ１００に送信される故障セクタ情報のフォーマットを示す図である。
故障セクタ情報は、７１０、７１１に示すように、アドレス０ｘ０００〜０ｘ００３の４Ｂｙｔｅに、故障セクタの下位２８Ｂｉｔの情報を格納する領域が割り当てられている。また、７１２、７１３に示すように、アドレス０ｘ００４〜０ｘ００７の４Ｂｙｔｅに、故障セクタの上位２０Ｂｉｔの情報を格納する領域が割り当てられている。
【００８２】
さらに、７１４、７１５に示すように、アドレス０ｘ００８〜０ｘ００Ｂの４Ｂｙｔｅに、故障セクタが検出されたＨＤＤのＩＤを格納する領域が割り当てられている。さらに、７１６、７１７に示すように、アドレス０ｘ００Ｃ〜０ｘ００Ｆの４Ｂｙｔｅに、故障セクタが検出されたＨＤＤの接続チャネル情報を格納する領域が割り当てられている。
【００８３】
また、７１８、７１９に示すように、アドレス０ｘ０１０〜０ｘ１ＦＦの４９６Ｂｙｔｅに、Ｒｅｓｅｒｖｅｄ領域が割り当てられている。
ＲＡＩＤ制御部２０２は、動作中に検出した故障セクタ４８Ｂｉｔの情報を、上位２０Ｂｉｔと下位２８Ｂｉｔに分け、それぞれのアドレス０ｘ０００〜０ｘ００３及びアドレス０ｘ００４〜０ｘ００７にフォーマットに従って挿入する。また同時に、ＲＡＩＤ制御部２０２は、故障セクタを検出したＨＤＤのＩＤ情報をアドレス０ｘ００８〜０ｘ００Ｂに挿入し、さらに、故障セクタを検出したＨＤＤが接続されているチャンネル情報をアドレス０ｘ００Ｃ〜０ｘ００Ｆに挿入する。そして、ＲＡＩＤ制御部２０２は、このようにして生成された故障セクタ情報を、ホストコンピュータ１００に送信する。
【００８４】
図９は、ホストコンピュータ１００からディスクアレイ装置２００から送信されるリビルド処理開始セクタ情報及びリビルド処理終了セクタ情報のフォーマットを示す図である。なお、リビルド処理開始セクタ情報は、リビルド処理を再開すべきセクタの情報に対応し、リビルド処理終了セクタ情報は、リビルド処理を終了すべきセクタの情報に対応する。
【００８５】
リビルド処理開始セクタ情報及びリビルド処理終了セクタ情報は、７２０、７２１に示すように、アドレス０ｘ０００〜０ｘ００３の４Ｂｙｔｅに、リビルド処理開始セクタの下位２８Ｂｉｔの情報を格納する領域が割り当てられている。また、７２２、７２３に示すように、アドレス０ｘ００４〜０ｘ００７の４Ｂｙｔｅに、リビルド処理開始セクタの上位２０Ｂｉｔの情報を格納する領域が割り当てられている。
【００８６】
また、７２４、７２５に示すように、アドレス０ｘ００８〜０ｘ００Ｂの４Ｂｙｔｅに、リビルド処理終了セクタの下位２８Ｂｉｔの情報を格納する領域が割り当てられている。また、７２６、７２７に示すように、アドレス０ｘ００Ｃ〜０ｘ００Ｆの４Ｂｙｔｅに、リビルド処理終了セクタの上位２０Ｂｉｔの情報を格納する領域が割り当てられている。
【００８７】
また、７２８、７２９に示すように、アドレス０ｘ０１０〜０ｘ１ＦＦの４９６Ｂｙｔｅに、Ｒｅｓｅｒｖｅｄ領域が割り当てられている。
プロセッサ１０２は、故障セクタが未使用領域である場合に、リビルド処理再開コマンドに、図９に示すリビルド処理開始セクタ情報及びリビルド処理終了セクタ情報を加えて、動作指示部１０６からディスクアレイ装置２００に送信するように制御する。
【００８８】
ディスクアレイ装置２００のＲＡＩＤ制御部２０２は、受け取ったリビルド処理再開コマンドに従い、リビルド処理開始セクタからリビルド処理を再開し、リビルド処理終了セクタまでリビルド処理を実行するように制御する。
【００８９】
なお、ディスクアレイシステム１０００は、リビルド処理をＨＤＤ５００、５０１の全領域に対して実行するが、ファイルシステム機能部１０１が管理する情報に従い、リビルド処理の領域を予め使用領域に限定して実行することも可能である。
【００９０】
図１０は、本発明の実施例１に係るディスクアレイシステム１０００で使用するファイルシステムのフォーマットを示す図である。
図１０において、ファイルシステム８００は、ファイルシステム機能部１０１が用いるファイルシステムの一例としてＦＡＴ１６を使用する場合に対応する。
マスターブートレコード８０１は、ＨＤＤ５００、５０１及び５０２のセクタＮｏ.０に保持される５１２Ｂｙｔｅのデータである。マスターブートレコード８０１には、マスターブートレコード８０１が保持されたデバイスがブート可能か否か、ＦＡＴの種類、先頭セクタ、等の情報が含まれる。
【００９１】
ＢＩＯＳパラメータブロック８０２は、マスターブートレコード８０１内の先頭セクタフィールドに保持されたセクタ番号に対応したセクタに保持される５１２Ｂｙｔｅのデータである。ＢＩＯＳパラメータブロック８０２には、パーティションのパラメータ情報、１セクタあたりのＢｙｔｅ数、１クラスタあたりのセクタ数、１ＦＡＴあたりのセクタ数、等が含まれる。
【００９２】
ＦＡＴ(File Allocation Table)８０３、８０４は、セクタＮｏ．〔先頭セクタ数＋１及び先頭セクタ数＋ＦＡＴセクタ数＋１〕に保持される。ＦＡＴ８０３、８０４のサイズであるＦＡＴセクタ数は、マスターブートレコード８０１内に保持されている。ＦＡＴ８０３、８０４は、ディスク内のファイルの配置情報を管理するデーブルである。なお、ＦＡＴ１６では、ファイルへのアクセスはセクタ単位で行なわれるが、ファイルに対してディスク上の物理セクタを割り当てる場合、セクタではなく、クラスタと呼ばれる単位で割り当てを行なう。なお、クラスタは、セクタの集まりであり、ブロック等とも呼ばれる。
【００９３】
ファイルはクラスタを単位として構成されているが、クラスタのディスク上の物理的な位置は常に連続しているわけではなく、ＦＡＴ８０３、８０４によってそれらのクラスタがどのような順につながって、1つのファイルを構成しているかが管理されている。ＦＡＴ８０３、８０４の各エントリは、ディスクの各クラスタと1対1に対応しており、該当するクラスタの使用状況を表わしている。よって、このＦＡＴ８０３、８０４を参照することにより、各クラスタ（セクタの集まり）が使用されているか未使用かを判定可能である。
【００９４】
ルートディレクトリエントリ８０５は、セクタＮｏ.〔先頭セクタ数＋ＦＡＴセクタ数×２＋１〕に保持され、ファイル名、ファイル属性、作成時間情報、先頭クラスタ番号、ファイルサイズ、等が含まれる。
【００９５】
ユーザーデータ領域８０６は、セクタＮｏ.〔先頭セクタ数＋ＦＡＴセクタ数×２＋３３〕に保持され、主に実データが含まれる。
本発明の実施例１に係るディスクアレイシステム１０００では、ＦＡＴ８０３、８０４を用いて故障セクタが使用領域であるか、未使用領域であるかの判定を行う。本実施例では、ファイルシステム機能部１０１が用いるファイルシステムの一例としてＦＡＴ１６を使用したが、本発明のディスクアレイシステム１０００は、ＯＳを限定するものではないため、他のＦＡＴ３２、ＵＮＩＸ（登録商標）系ファイルシステム等も同様に使用可能である。
【実施例２】
【００９６】
上述した実施例１では、ホストコンピュータは、ディスクアレイ装置からの割り込み受信をトリガーとしてディスクアレイ装置でのリードエラーの発生を確認する構成を示した。実施例２では、ホストコンピュータは、ポーリングにより、ディスクアレイ装置でのリードエラーの発生を確認するように構成する。
【００９７】
以下、本発明の実施例２について説明する。
図１１は、本発明の実施例２に係るディスクアレイシステム２０００の構成を示す図であり、図１と同一のものには同一の符号を付してある。なお、実施例１の変形例である実施例２に係るディスクアレイシステム２０００の構成は、そのほとんどが実施例１のディスクアレイシステム１０００（図１）と共通であるため、ここでは実施例１との差分のみ説明する。
【００９８】
ディスクアレイシステム２０００は、実施例１のディスクアレイシステム１０００（図１）においてホストコンピュータ１５０とディスクアレイ装置２５０間の割り込み接続を削除した構成となる。
【００９９】
ホストコンピュータ１５０は、ファイルシステム機能部１０１と、プロセッサ１０２と、故障セクタ読み取り部１０４と、領域判定部１０５と、動作指示部１０６から構成される。プロセッサ１０２からの指示により動作指示部１０６は、ディスクアレイ装置２５０に対して定期的に問合わせを行う（後述する要因読み取りコマンドを送信する）ことにより、ディスクアレイ装置２５０からリビルドエラー発生時の故障セクタの情報を取得する。
【０１００】
ディスクアレイ装置２５０は、ＳＡＴＡデバイス制御部２０１と、ＲＡＩＤ制御部２５２と、セクタ保持部２０３と、ＳＡＴＡホスト制御部２０５から構成される。なお、セクタ保持部２０３は、ＲＡＩＤ制御部２５２に含まれる構成であってもよい。
【０１０１】
なお、ＲＡＩＤ制御部２５２は、内部にレジスタやメモリ等の要因記憶部を有し、ディスクアレイ装置２５０で発生したイベント等の要因（例えば、後述するリビルド処理リードエラー要因、リビルド処理完了要因等）を記憶保持する。ＲＡＩＤ制御部２５２は、ホストコンピュータ１５０から要因読み取りコマンド（上述した問合わせ）を受信すると、内部の要因記憶部から要因の情報を取得して、ホストコンピュータ１５０に送信する。なお、要因読み取りコマンドは、実施例１の割り込み要因読み取りコマンドと同様のものとする。また、ホストコンピュータ１５０に送信する要因のフォーマットは、実施例１の割り込み要因のフォーマットと同様のものとする。また、ＲＡＩＤ制御部２５２は、ホストコンピュータ１５０から要因クリアコマンドを受信すると、内部の要因記憶部から要因の情報を削除する。さらに、ホストコンピュータ１５０から故障セクタの確認コマンドを受信すると、ＲＡＩＤ制御部２５２は、セクタ保持部２０３に保持された故障セクタ情報をホストコンピュータ１５０に送信する。
【０１０２】
図１２は、本発明の実施例２に係るディスクアレイ装置２５０のリビルド処理の一例を示すフローチャートである。なお、このフローチャートの処理は、ＲＡＩＤ制御部２５２の制御により実行される。また、本フローチャートの説明では、ＨＤＤ５００及び５０１を正常とし、ＨＤＤ５０２を故障により交換されたものとして説明を行うが、本発明は、これに限定されるものではない。
【０１０３】
リビルド処理を開始すると、ＲＡＩＤ制御部２５２は、正常なＨＤＤ５００、５０１からデータをリードする（Ｓ５００）と同時にエラーの確認を実施する（Ｓ５０１）。
リードエラーが発生した場合（Ｓ５０１でＹｅｓ）、ＲＡＩＤ制御部２５２は、故障セクタを特定し、セクタ保持部２０３に故障セクタを保持させる（Ｓ５０２）。この時、ＲＡＩＤ制御部２５２は、リードエラーを検出したＨＤＤ５００或いはＨＤＤ５０１のＩＤも故障セクタとともにセクタ保持部２０３に保持させておく。
【０１０４】
そして、ＲＡＩＤ制御部２５２は、リビルド処理リードエラー要因（リビルド処理時にリードエラーがあったことを示す情報）をＲＡＩＤ制御部２５２内の要因記憶部に設定する（Ｓ５０３）。そして、ＲＡＩＤ制御部２５２は、リビルド処理を停止させ（Ｓ５０４）、本フローチャートの処理を終了する。
【０１０５】
なお、この後、ホストコンピュータ１５０から要因読み取りコマンドを受信すると、ＲＡＩＤ制御部２５２は、要因（ここではリビルド処理リードエラー要因）を内部の要因記憶部から取得して、ホストコンピュータ１５０に送信する（不図示の処理）。さらに、ホストコンピュータ１５０から故障セクタの確認コマンドを受信すると、ＲＡＩＤ制御部２５２は、セクタ保持部２０３に保持された故障セクタ情報をホストコンピュータ１５０に送信する。さらに、ホストコンピュータ１００からリビルド再開指示を受信すると、ＲＡＩＤ制御部２０２は、リビルド再開指示で指示されたセクタ（例えば、故障セクタの次のセクタ）からリビルド処理を再開する。
【０１０６】
一方、上記Ｓ５０１において、リードエラーが発生していないと判定した場合（Ｓ５０１でＮｏ）、ＲＡＩＤ制御部２５２は、リードデータから修復データを生成し、ＨＤＤ５０２にデータを書き込みを行う（Ｓ５０５）。
【０１０７】
そして、ＲＡＩＤ制御部２５２は、全ての領域に対してデータ修復を行ったかどうかを確認する（Ｓ５０６）。そして、まだデータ修復未実施の領域が存在すると判定した場合（Ｓ５０６でＮｏ）、ＲＡＩＤ制御部２５２は、Ｓ２００に処理を戻し、次のデータをリードする。
【０１０８】
一方、全てのデータが修復されたと判定した場合（Ｓ５０６でＹｅｓ）、ＲＡＩＤ制御部２５２は、リビルド処理完了要因（リビルド処理の完了を示す情報）をＲＡＩＤ制御部２５２内のメモリに設定し（Ｓ５０７））、本フローチャートの処理を終了する。なお、この後、ホストコンピュータ１５０から要因読み取りコマンドを受信すると、ＲＡＩＤ制御部２５２は、要因（ここではリビルド処理完了要因）を内部の要因記憶部から取得して、ホストコンピュータ１５０に送信する（不図示の処理）。
【０１０９】
図１３は、本発明の実施例２に係るホストコンピュータ１５０のリビルド処理の一例を示すフローチャートである。なお、このフローチャートの処理は、プロセッサ１０２の制御により実行される。また、本フローチャートの説明では、ＨＤＤ５００及び５０１を正常とし、ＨＤＤ５０２を故障により交換されたものとして説明を行うが、本発明は、これに限定されるものではない。
【０１１０】
ホストコンピュータ１５０のプロセッサ１０２は、動作指示部１０６に対してディスクアレイ装置２５０にリビルド処理開始コマンドの送付を指示し、動作指示部１０６はこの指示に従いリビルド処理開始コマンドを送信する（Ｓ６００）。
【０１１１】
プロセッサ１０２は、動作指示部１０６に対してディスクアレイ装置２５０への要因読み取りコマンドの送付を指示し、動作指示部１０６はこの指示に従い要因読み取りコマンドを送付する（Ｓ６０１）。なお、ディスクアレイ装置２５０が故障したＨＤＤに代わり新しいＨＤＤが接続されたことを検出したことにより、リビルド処理を開始した場合は、Ｓ６０１の処理から開始するものとする。
【０１１２】
プロセッサ１０２は、ディスクアレイ装置２５０から取得した要因をリードし、要因が設定されていないと判定すると（Ｓ６０２でＮｏ）、Ｓ６０１に処理を戻し、再度ディスクアレイ装置２５０に対して要因読み取りコマンドを送付する。なお、ホストコンピュータ１５０が要因読み取りコマンドを送付する時間間隔は、ディスクアレイシステム２０００で最適な時間を設定することとする。例えば、１［ｓ］間隔でも良いし、１００［ｍｓ］間隔でも良い。
【０１１３】
一方、要因が設定されていると判定すると（Ｓ６０２でＹｅｓ）、プロセッサ１０２は、要因がリビルド処理時エラー要因か否か判定する（Ｓ６０３）。そして、リビルド処理時エラー要因と判定した場合（Ｓ６０３でＹｅｓ）、プロセッサ１０２は、ホストコンピュータ１５０からＨＤＤ５００、５０１および５０２内のファイルにアクセス中であるか否かを確認する（Ｓ６０４）。
【０１１４】
そして、ファイルアクセス中でないと判定した場合（Ｓ６０４でＮｏ）、プロセッサ１０２は、故障セクタ確認処理を行う（Ｓ６０６）。
一方、ファイルアクセス中と判定した場合（Ｓ６０４でＹｅｓ）、プロセッサ１０２は、ファイルアクセス終了まで待ち、ファイルアクセスが終了したと判断した場合（Ｓ６０５でＹｅｓ）、故障セクタ確認処理を行う（Ｓ６０６）。
【０１１５】
Ｓ６０６の故障セクタ確認処理では、プロセッサ１０２は、故障セクタ読み取り部１０４に故障セクタの確認を指示する。この指示に従い、故障セクタ読み取り部１０４が故障セクタ読み取りコマンドをディスクアレイ装置２５０に送信し、ディスクアレイ装置２５０から故障セクタ情報を取得することで、故障セクタを確認する。なお、故障セクタ読み取り部１０４は、故障セクタ情報を領域判定部１０５に送信する。なお、故障セクタ情報には、故障が検出されたＨＤＤ５００或いはＨＤＤ５０１のＩＤも含まれる。また、プロセッサ１０２は、ファイルシステム機能部１０１からＨＤＤ５００、５０１及び５０２における未使用領域の情報を取得し、領域判定部１０５に未使用領域の情報を送信する。
【０１１６】
次に、プロセッサ１０２からの指示により領域判定部１０５は、上記取得した故障セクタ情報と未使用領域情報から故障セクタが使用領域であるか、又は、未使用領域であるかを確認（判定）し（Ｓ６０７）、確認結果をプロセッサに通知する。
【０１１７】
そして、故障セクタが未使用領域であると判定した場合（Ｓ６０７でＹｅｓ）、プロセッサ１０２は、上記確認したリビルド処理中のエラーを無視すると判断する。即ち、この場合、プロセッサ１０２は、上記確認したリビルド処理中のエラーがリビルド処理を継続させるべきエラーであると判断する。そして、プロセッサ１０２は、動作指示部１０６からリビルド処理再開の指示をディスクアレイ装置２５０に対して送付する（Ｓ６０８）（エラースキップ制御処理）。なお、リビルド処理の再開に関しては、故障セクタの次のセクタから再開をさせても良いし、また、次の使用領域の先頭セクタから再開させても良い。
【０１１８】
そして、リビルド処理の再開指示を行った後は、プロセッサ１０２は、Ｓ６０１に処理を戻し、再び、ディスクアレイ装置２５０に対して要因読み取りコマンドを送付する。
一方、故障セクタが未使用領域ではなかったと判定した場合（Ｓ６０７でＮｏ）、プロセッサ１０２は、上記確認したリビルド処理中のエラーを無視しないと判断する（エラーと認識する）。即ち、この場合、プロセッサ１０２は、上記確認したリビルド処理中のエラーがリビルド処理を継続不可能なエラーであると判断する。そして、プロセッサ１０２は、ユーザに対してＨＤＤ故障を通知する（Ｓ６０９）。例えば、ホストコンピュータ１５０の不図示のディスプレイに故障しているＨＤＤを特定する情報をユーザに通知するためのメッセージを表示して、故障したＨＤＤの交換を促す。そして、プロセッサ１０２は、ディスクアレイシステム１０００としてリビルド処理を完了させ（Ｓ６１１）、本フローチャートの処理を終了する。
【０１１９】
また、要因がリビルド処理時エラー要因ではないと判定した場合（Ｓ６０３でＮｏ）、プロセッサ１０２は、要因がリビルド処理完了要因であるか判定する。そして、要因がリビルド処理完了要因であると判定した場合（Ｓ６１０でＹｅｓ）、プロセッサ１０２は、ディスクアレイシステム１０００としてリビルド処理を完了させ（Ｓ６１１）、本フローチャートの処理を終了する。
【０１２０】
一方、要因がリビルド処理完了要因でないと判定した場合（Ｓ６１０でＮｏ）、プロセッサ１０２は、要因に従ったその他の処理を実施し（Ｓ６１２）、Ｓ６０１に処理を戻し、再び、ディスクアレイ装置２５０に対して要因読み取りコマンドを送付する。
【実施例３】
【０１２１】
上述した実施例１では、ホストコンピュータは、ディスクアレイ装置からの割り込み受信をトリガーとしてディスクアレイ装置でのリビルド処理時のリードエラーの発生を確認する構成を示した。また、上記実施例２では、ホストコンピュータは、ポーリングにより、ディスクアレイ装置でのリビルド処理時のリードエラーの発生を確認する構成を示した。しかし、実施例１の構成でディスクアレイ装置でのリビルド処理時のリードエラーの発生を確認する第１モードと、実施例２の構成でディスクアレイ装置でのリビルド処理時のリードエラーの発生を確認する第２モードとを切り換え可能とする構成でもよい。
【実施例４】
【０１２２】
上述した実施例１では、ホストコンピュータは、リビルドリードエラーのエラー発生箇所（故障セクタ）が未使用領域であった場合、ディスクアレイ装置に対して、リビルド処理を再開する指示を通知する構成を示した。実施例４では、ホストコンピュータは、リビルドリードエラーのエラー発生箇所（故障セクタ）が未使用領域であった場合、ディスクアレイ装置に対して、故障セクタに対する上書き処理を実行する指示、及び、リビルド処理を再開する指示を通知するように構成する。
【０１２３】
以下、本発明の実施例４について説明する。
図１４は、本発明の実施例４に係るディスクアレイシステム１０００における記憶装置アレイ制御処理の概略フローを示す図である。なお、ディスクアレイ装置２００の処理は、ＲＡＩＤ制御部２０２の制御により実行され、ホストコンピュータ１００の処理は、プロセッサ１０２の制御により実行される。なお、図２と同一のステップには同一のステップ番号を付してある。
【０１２４】
まず、図１４のＳ１００〜Ｓ１０５の処理は、図２のＳ１００〜Ｓ１０５の処理と同一であるので、説明は省略する。
故障セクタ判定の結果、故障セクタ（リビルドリードエラーのエラー発生箇所）が未使用領域であった場合（Ｓ１０５）、ホストコンピュータ１００の動作指示部１０６がディスクアレイ装置２００に対して、故障セクタに対する固定値（特定データ）の上書き処理を実行する指示、及び、故障セクタの次のセクタからリビルド処理を再開する指示を通知する（Ｓ１５０）。
【０１２５】
この通知を受けたディスクアレイ装置２００では、ＲＡＩＤ制御部２０２は、故障セクタに対する固定値（特定データ）の上書き処理を実行し、さらに、故障セクタの次のセクタからリビルド処理を再開する（Ｓ１５１）。なお、上書き処理で使用されるデータ（特定データ）は、ＲＡＩＤ制御部２０２で予め決められた値でもよいし、プロセッサ１０２からの指示に従って決定してもよい。
以後、図１４の処理は、図２の処理と同一であるので、説明は省略する。
【０１２６】
図１５は、本発明の実施例４に係るホストコンピュータ１００のリビルド処理の一例を示すフローチャートである。なお、このフローチャートの処理は、プロセッサ１０２の制御により実行される。また、本フローチャートの説明では、ＨＤＤ５００及び５０１を正常とし、ＨＤＤ５０２を故障により交換されたものとして説明を行うが、本発明は、これに限定されるものではない。なお、図４と同一のステップには同一のステップ番号を付してある。
【０１２７】
まず、図１５のＳ３００〜Ｓ３０７の処理は、図４のＳ３００〜Ｓ３０７の処理と同一であるので、説明は省略する。
プロセッサ１０２は、故障セクタ（リビルドリードエラーのエラー発生箇所）が未使用領域であると判定した場合（Ｓ３０７でＹｅｓ）、動作指示部１０６から故障セクタに対する固定値（特定データ）の上書き処理を実行する指示、及び、リビルド処理再開の指示をディスクアレイ装置２００に対して送付する（Ｓ７００）（エラースキップ制御処理）。なお、プロセッサ１０２は、上書き処理の指示に、上書き処理で使用されるデータを指定してもよい。
以後、図１５の処理は、図４の処理と同一であるので、説明は省略する。
【０１２８】
以上の構成により、リビルドリードエラー発生時に、リビルドリードエラーのエラー発生箇所（故障セクタ）を、予め決められたデータ又はホストコンピュータから指示されたデータで上書きするとこで、故障セクタを正常な状態に戻すことができる。
【０１２９】
なお、実施例４の構成を実施例３に適用した構成も本発明に含まれるものである。即ち、上記実施例２のように、ホストコンピュータが、ポーリングにより、ディスクアレイ装置でのリビルド処理時のリードエラーの発生を確認し、さらに、リビルドリードエラーのエラー発生箇所（故障セクタ）が未使用領域であった場合に、ディスクアレイ装置に対して、故障セクタに対する上書き処理を実行する指示、及び、リビルド処理を再開する指示を通知するように構成してもよい。
【実施例５】
【０１３０】
また、上述した実施例１では、ホストコンピュータは、リビルドリードエラーのエラー発生箇所（故障セクタ）が未使用領域であった場合、ディスクアレイ装置に対して、リビルド処理を再開する指示を通知する構成を示した。また、上記実施例４では、ホストコンピュータは、リビルドリードエラーのエラー発生箇所（故障セクタ）が未使用領域であった場合、ディスクアレイ装置に対して、故障セクタに対する上書き処理の指示、及び、リビルド処理を再開する指示を通知する構成を示した。
しかし、故障セクタが未使用領域であった場合に、実施例１のようにリビルド処理を再開する指示を通知するモードと、実施例４のように故障セクタに対する上書き処理の指示及びリビルド処理を再開する指示を通知するモードとを切り換えて動作可能に構成してもよい。
【０１３１】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０１３２】
（他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【０１３３】
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。
本発明は上記実施例に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施例の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施例及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
【０１３４】
以上説明したように、本発明の各実施例によれば、未使用領域に対してリビルドエラーが発生しても、リビルドを継続実行することができる。なお、エラーが発生した場合に、エラー発生箇所（故障セクタ）が未使用領域であるかの判定をホストコンピュータで行うので、エラー発生時以外のリビルド中のパフォーマンス低下を回避することができる。
【０１３５】
また、ファイルシステムをホストコンピュータ側に実装しているため、ＨＤＤの管理状況と使用状況が完全に一致するため、使用領域／未使用領域の判定を正確に行うことができる。さらに、従来のように、ディスクアレイ装置にＨＤＤ管理テーブル等を備える構成に比べ、ディスクアレイ装置のコスト増加、構成の複雑化を回避できる。また、ディスクアレイ装置でのリビルド処理時のパフォーマンス低下を抑えることができ、ＲＡＩＤ構成の記憶装置アレイを構成するメンバーの記憶装置が故障した場合に好適なデータ復旧を行うことができる。
【０１３６】
このように、ホストコンピュータとディスクアレイ装置を連携させ、ホストコンピュータに記憶装置の管理を、ディスクアレイ装置にリビルド処理を割り振ることで、パフォーマンス低下やコストアップを招くことのないディスクアレイシステムを実現可能である。また、リビルドによる記憶装置のデータ復旧を確実に行うことができる。さらに、リビルドエラーが発生しても、未使用領域でのエラーのようにエラーを無視可能な場合はエラーを無視してリビルドを継続することができる。
また、リビルドリードエラー発生時に、リビルドリードエラーのエラー発生箇所（故障セクタ）を、予め決められたデータ又はホストコンピュータから指示されたデータで上書きするとこで、故障セクタを正常な状態に戻すこともできる。
【符号の説明】
【０１３７】
１００    ホストコンピュータ
１０１    ファイルシステム
１０２    プロセッサ
１０３    割り込み受信部
１０４    故障セクタ読み取り部
１０５    領域判定部
１０６    動作指示部
２００    ディスクアレイ装置
２０１    ＳＡＴＡデバイス制御部
２０２    ＲＡＩＤ制御部
２０３    セクタ保持部
２０４    割り込み送信部
２０５    ＳＡＴＡホスト制御部
４００    ＳＡＴＡ Ｉ／Ｆ
５００，５０１，５０２    ＨＤＤ
１０００    ディスクアレイシステム
【図１】
2011237934.tif 000003
【図２】
2011237934.tif 000004
【図３】
2011237934.tif 000005
【図４】
2011237934.tif 000006
【図５】
2011237934.tif 000007
【図６】
2011237934.tif 000008
【図７】
2011237934.tif 000009
【図８】
2011237934.tif 000010
【図９】
2011237934.tif 000011
【図１０】
2011237934.tif 000012
【図１１】
2011237934.tif 000013
【図１２】
2011237934.tif 000014
【図１３】
2011237934.tif 000015
【図１４】
2011237934.tif 000016
【図１５】
2011237934.tif 000017