(57)【要約】【課題】リードアクセスに対する応答を高速化すること。【解決手段】同じデータが書き込まれる第１及び第２の記憶装置１３、１４を有するストレージ装置１０が提供される。ストレージ装置１０は、第１の記憶装置１３が有する複数の区画１３ａ、１３ｃへのアクセスに対する第１の応答時間ｔ１Ａ、ｔ１Ｃに基づいて設定された第１の閾値Ｔｈ１が格納される記憶部１１と、第１の記憶装置１３が有する区画毎に誤り検出時に行うデータの読み出しにかかる第２の応答時間Ｔ１Ａ、Ｔ１Ｂ、Ｔ１Ｃ、Ｔ１Ｄを計測し、該第２の応答時間Ｔ１Ｂが第１の閾値Ｔｈ１より大きい区画１３ｂを検出した場合、該区画１３ｂのデータＢと同じデータＢを第２の記憶装置１４から読み出し、読み出したデータＢを該区画１３ｂに書き込む制御部１２とを有する。【選択図】図１
2017062715.tif 000002
【特許請求の範囲】
【請求項１】
同じデータが書き込まれる第１及び第２の記憶装置を有するストレージ装置であって、
前記第１の記憶装置が有する複数の区画へのアクセスに対する第１の応答時間に基づいて設定された第１の閾値が格納される記憶部と、
前記第１の記憶装置が有する区画毎に、誤り検出時に行うデータの読み出しにかかる第２の応答時間を計測し、該第２の応答時間が前記第１の閾値より大きい区画を検出した場合、該区画のデータと同じデータを前記第２の記憶装置から読み出し、読み出したデータを該区画に書き込む制御部と
を有する、ストレージ装置。
【請求項２】
前記制御部は、検出した前記区画に前記第２の記憶装置から読み出したデータを書き込んだ後、前記区画に対して前記第２の応答時間を計測し、計測した前記第２の応答時間が前記第１の閾値より大きい場合、前記第１の記憶装置に対するアクセスを回避する
請求項１に記載のストレージ装置。
【請求項３】
前記記憶部には、前記第２の記憶装置が有する複数の区画へのアクセスに対する第３の応答時間に基づいて設定された第２の閾値が格納され、
前記制御部は、前記第２の記憶装置が有する区画毎に、誤り検出のためのデータ読み出しにかかる第４の応答時間を計測し、前記第４の応答時間が前記第２の閾値より大きい区画を検出した場合に、該区画のデータと同じデータを前記第１の記憶装置から読み出し、読み出したデータを該区画に書き込む
請求項１に記載のストレージ装置。
【請求項４】
第１及び第２の記憶装置に同じデータが書き込まれるように制御する制御ユニットであって、
前記第１の記憶装置が有する複数の区画へのアクセスに対する第１の応答時間に基づいて設定された第１の閾値が格納される記憶部と、
前記第１の記憶装置が有する区画毎に、誤り検出時に行うデータの読み出しにかかる第２の応答時間を計測し、該第２の応答時間が前記第１の閾値より大きい区画を検出した場合、該区画のデータと同じデータを前記第２の記憶装置から読み出し、読み出したデータを該区画に書き込む制御部と
を有する、制御ユニット。
【請求項５】
同じデータが書き込まれる第１及び第２の記憶装置を管理するコンピュータに、
記憶部から、前記第１の記憶装置が有する複数の区画へのアクセスに対する第１の応答時間に基づいて設定された第１の閾値を取得し、
前記第１の記憶装置が有する区画毎に、誤り検出時に行うデータの読み出しにかかる第２の応答時間を計測し、該第２の応答時間が前記第１の閾値より大きい区画を検出した場合、該区画のデータと同じデータを前記第２の記憶装置から読み出し、読み出したデータを該区画に書き込む
処理を実行させる、制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、制御ユニット、及び制御プログラムに関する。
【背景技術】
【０００２】
コンピュータが扱うデータを格納するための記憶装置として広くＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）が利用されている。また、ＨＤＤの故障によるデータの損失や業務の停止を防止するために、複数のＨＤＤを接続して冗長化したＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）装置も普及している。ＲＡＩＤの方式には、例えば、同じデータを複数のＨＤＤに格納するＲＡＩＤ１（ミラーリング）や、データを複数のＨＤＤに分散して格納するＲＡＩＤ０（ストライピング）などの方式がある。
【０００３】
ミラーリングの場合、少なくとも２台のＨＤＤに同じデータが格納されることから、一部のＨＤＤに故障が発生しても、正常に稼働しているＨＤＤにデータが残る。そのため、ＨＤＤの故障に起因するデータの損失や業務の停止を防止する効果が期待できる。
【０００４】
例えば、１台のＨＤＤが故障した場合、故障したＨＤＤを予備のＨＤＤに換装し、正常に稼働しているＨＤＤのデータを換装したＨＤＤにコピーすることで、再び冗長性が確保され、安全に業務を継続することができる。また、複数のＨＤＤから読み出したデータの一致を確認してからホストコンピュータに応答することで、正しくないデータを応答するリスクが低減され、信頼性を高めることができる。
【０００５】
なお、ミラーリングを採用するシステムにおいて、データの読み出しに失敗したＨＤＤの異常領域を別のＨＤＤの記憶領域で代替し、他のＨＤＤから読み出したデータを代替した記憶領域にコピーする技術が提案されている。また、リードエラーが検出されたＨＤＤの記憶エリアに対し、他のＨＤＤから読み出したデータを再書き込みして、ＡＴＩ（Ａｄｊａｃｅｎｔ  Ｔｒａｃｋ  Ｉｎｔｅｒｆｅｒｅｎｃｅ）を抑制する技術が提案されている。なお、ＡＴＩとは、ＨＤＤの隣接トラック間で磁束漏れが生じる現象を言う。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３−１３０９９５号公報
【特許文献２】特開平４−１５７６７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ＡＴＩなどに起因してデータの記録状態が劣化することがある。そして、データの記録状態が劣化すると、そのデータを一度のアクセスで読み出せなくなることがある。ＨＤＤはデータの読み出しに失敗した場合、そのデータが記録されたセクタに対して再びアクセスして読み出しを試みる（リードリトライ）。リードリトライを数回繰り返すことによりデータを読み出すことができる場合もあるが、予め設定された回数のリードリトライを行ってもデータを読み出せない場合にはリードエラーとなる。
【０００８】
上述した提案技術は、リードエラーが発生した場合にデータの再書き込みを実行し、記録状態を回復させることでＡＴＩに起因するリードエラーに対処している。しかし、リードエラーにならない程度に記録状態が劣化している場合、データを読み出すことはできるが、頻繁にリードリトライが発生する状態となる。この状態になると、複数のＨＤＤから読み出したデータの一致を確認してホストコンピュータに応答するシステムの場合、記録状態が劣化したＨＤＤの読み出しを待つ分だけ応答時間が長くかかる。
【０００９】
本開示の目的は、リードアクセスに対する応答を高速化することができるストレージ装置、制御ユニット、及び制御プログラムを提供することにある。
【課題を解決するための手段】
【００１０】
１つの側面によれば、同じデータが書き込まれる第１及び第２の記憶装置を有するストレージ装置が提供される。該ストレージ装置は、第１の記憶装置が有する複数の区画へのアクセスに対する第１の応答時間に基づいて設定された第１の閾値が格納される記憶部と、第１の記憶装置が有する区画毎に、誤り検出時に行うデータの読み出しにかかる第２の応答時間を計測し、該第２の応答時間が第１の閾値より大きい区画を検出した場合、該区画のデータと同じデータを第２の記憶装置から読み出し、読み出したデータを該区画に書き込む制御部とを有する。
【発明の効果】
【００１１】
本開示によれば、リードアクセスに対する応答を高速化することができる。
【図面の簡単な説明】
【００１２】
【図１】第１実施形態に係るストレージ装置の一例を示した図である。
【図２】第２実施形態に係るストレージ装置の一例を示した図である。
【図３】第２実施形態に係るＲＡＩＤコントローラが有する機能の一例を示した図である。
【図４】第２実施形態に係る管理テーブルの一例を示した図である。
【図５】第２実施形態に係る状態情報の一例を示した図である。
【図６】第２実施形態に係るコマンド情報の一例を示した図である。
【図７】第２実施形態に係るＲＡＩＤコントローラが実行する起動時の処理の流れを示したフロー図である。
【図８】第２実施形態に係るＲＡＩＤコントローラが実行する管理テーブルの作成処理の流れを示したフロー図である。
【図９】第２実施形態に係るＲＡＩＤコントローラが実行するアイドル時の処理（アイドル処理）の流れを示した第１のフロー図である。
【図１０】第２実施形態に係るＲＡＩＤコントローラが実行するアイドル時の処理（アイドル処理）の流れを示した第２のフロー図である。
【図１１】第２実施形態に係るＲＡＩＤコントローラが実行する状態情報の更新処理の流れを示したフロー図である。
【図１２】第２実施形態に係るＲＡＩＤコントローラが実行するパトロールＶｅｒｉｆｙ処理の流れを示した第１のフロー図である。
【図１３】第２実施形態に係るＲＡＩＤコントローラが実行するパトロールＶｅｒｉｆｙ処理の流れを示した第２のフロー図である。
【図１４】第２実施形態に係るＲＡＩＤコントローラが実行するパトロールＶｅｒｉｆｙ処理の流れを示した第３のフロー図である。
【発明を実施するための形態】
【００１３】
以下に添付図面を参照しながら、本開示の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。
【００１４】
＜１．第１実施形態＞
図１を参照しながら、第１実施形態について説明する。
第１実施形態は、同じデータを複数の記憶装置に書き込むストレージ装置に関し、データアクセスの単位となる記憶領域の区画毎にリードアクセスに対する応答時間を計測し、応答時間が長い区画に他の記憶装置のデータを再書き込みする方法を提供する。第１実施形態の方法を適用すれば、データの記録状態が良好に維持されるため、記録状態の劣化に伴うリードリトライの回数を抑制することができ、リードアクセスが高速化される。
【００１５】
図１は、第１実施形態に係るストレージ装置の一例を示した図である。図１に例示したストレージ装置１０は、第１実施形態に係るストレージ装置の一例である。
図１に示すように、ストレージ装置１０は、記憶部１１、制御部１２、第１の記憶装置１３、及び第２の記憶装置１４を有する。なお、説明の都合上、２台の記憶装置を有するストレージ装置１０を例に説明を進めるが、記憶装置の数は３以上であってもよい。
【００１６】
記憶部１１は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの揮発性メモリ、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリなどの不揮発性メモリ、或いはＨＤＤなどである。制御部１２は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）などのプロセッサである。制御部１２は、例えば、記憶部１１又は他のメモリに記憶されたプログラムを実行する。
【００１７】
第１の記憶装置１３及び第２の記憶装置１４は、例えば、ＨＤＤなどの磁気ディスク装置である。第１の記憶装置１３及び第２の記憶装置１４には、ミラーリングにより同じデータが書き込まれる。
【００１８】
図１の例では、第１の記憶装置１３が有する記憶領域の区画１３ａ、１３ｂ、１３ｃ、１３ｄにそれぞれデータＡ、Ｂ、Ｃ、Ｄが格納されている。同様に、第２の記憶装置１４が有する記憶領域の区画１４ａ、１４ｂ、１４ｃ、１４ｄにはそれぞれデータＡ、Ｂ、Ｃ、Ｄが格納されている。区画１３ａ、１３ｂ、１３ｃ、１３ｄ、１４ａ、１４ｂ、１４ｃ、１４ｄは、データアクセスの単位となるセクタである。
【００１９】
記憶部１１には、第１の閾値Ｔｈ１が格納される。第１の閾値Ｔｈ１は、第１の記憶装置１３が有する複数の区画１３ａ、１３ｃへのアクセスに対する第１の応答時間ｔ１Ａ、ｔ１Ｃに基づいて設定される。なお、図１の例では、第１の閾値Ｔｈ１の設定に用いる応答時間を第１の応答時間ｔ１Ａ、ｔ１Ｃとしているが、区画１３ｂ、１３ｄについて計測した応答時間を第１の閾値Ｔｈ１の設定に用いることもできる。
【００２０】
図１の例では、記憶部１１に第２の閾値Ｔｈ２が格納されている。第２の閾値Ｔｈ２は第２の記憶装置１４が有する複数の区画１４ａ、１４ｃへのアクセスに対する第３の応答時間ｔ２Ａ、ｔ２Ｃに基づいて設定される。なお、図１の例では、第２の閾値Ｔｈ２の設定に用いる応答時間を第３の応答時間ｔ２Ａ、ｔ２Ｃとしているが、区画１４ｂ、１４ｄについて計測した応答時間を第２の閾値Ｔｈ２の設定に用いることもできる。
【００２１】
制御部１２は、第１の記憶装置１３が有する区画毎に、誤り検出のためのデータ読み出しにかかる第２の応答時間Ｔ１Ａ、Ｔ１Ｂ、Ｔ１Ｃ、Ｔ１Ｄを計測する。また、制御部１２は、第２の応答時間が第１の閾値Ｔｈ１より大きい区画を検出した場合、該区画のデータと同じデータを第２の記憶装置１４から読み出し、読み出したデータを該区画に書き込む。
【００２２】
図１の例では、第２の応答時間Ｔ１Ｂが第１の閾値Ｔｈ１より大きい。この場合、制御部１２は、区画１３ｂのデータＢと同じデータＢを第２の記憶装置１４の区画１４ｂから読み出し、読み出したデータＢを区画１３ｂに書き込む。なお、第４の応答時間Ｔ２Ａ、Ｔ２Ｂ、Ｔ２Ｃ、Ｔ２Ｄは、第２の閾値Ｔｈ２と比較される。
【００２３】
このように、データの記録状態が劣化した状態の区画を応答時間に基づいて検出し、再書き込みにより状態を修復することで、各区画の記録状態を良好に維持することができる。その結果、記録状態の劣化に起因するリードリトライの発生回数を抑制することが可能になり、リードアクセスに対する応答を高速化することができる。
【００２４】
以上、第１実施形態について説明した。
＜２．第２実施形態＞
次に、第２実施形態について説明する。
【００２５】
第２実施形態は、同じデータを複数のＨＤＤに書き込むストレージ装置に関し、各ＨＤＤのセクタ毎にリードアクセスに対する応答時間を計測し、応答時間が長い区画に他のＨＤＤのデータをリライトして記録状態を良好に維持する方法を提供する。第２実施形態の方法を適用すれば、データの記録状態が良好に維持されるため、記録状態の劣化に伴うリードリトライの回数を抑制することができ、リードアクセスが高速化される。
【００２６】
［２−１．ストレージ装置］
図２を参照しながら、ストレージ装置１００について説明する。図２は、第２実施形態に係るストレージ装置の一例を示した図である。図２に例示したストレージ装置１００は、第２実施形態に係るストレージ装置の一例である。
【００２７】
ストレージ装置１００は、メモリ１０１、ＣＰＵ１０２、通信ポート１０３、ＲＡＩＤコントローラ１０４、及びＨＤＤ１０５、１０６を有する。なお、以下では、説明の都合上、識別番号（ＨＤＤ  Ｎｏ．）＃１を用いてＨＤＤ１０５をＨＤＤ＃１と表記する場合がある。同様に、識別番号（ＨＤＤ  Ｎｏ．）＃２を用いてＨＤＤ１０６をＨＤＤ＃２と表記する場合がある。
【００２８】
メモリ１０１は、例えば、ＲＡＭなどの不揮発性メモリや、ＨＤＤ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、フラッシュメモリなどの不揮発性記憶装置である。ＣＰＵ１０２は、ストレージ装置１００の動作を制御する。通信ポート１０３は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やＦＣ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）などの通信方式でホスト装置２００と通信するためのインターフェースである。ホスト装置２００は、業務アプリケーションなどが動作するサーバ装置などのコンピュータである。
【００２９】
ＲＡＩＤコントローラ１０４は、ＨＤＤ１０５、１０６に対するリードアクセス及びライトアクセスの制御を実施し、ＲＡＩＤによる冗長性を実現するための制御処理を実行する。ＲＡＩＤコントローラ１０４は、メモリ１０４ａ及びＣＰＵ１０４ｂを有する。メモリ１０４ａは、ＥＥＰＲＯＭなどの不揮発性メモリである。ＣＰＵ１０４ｂは、ＨＤＤ１０５、１０６に対するアクセス制御を実施する。
【００３０】
また、ＣＰＵ１０４ｂは、ＨＤＤ１０５、１０６の各セクタに書き込まれたデータの記録状態を確認（Ｖｅｒｉｆｙ）し、劣化した状態にあるセクタの記録状態を修復する処理などを実行する。ＨＤＤ１０５、１０６は、例えば、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）やＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）などの方式でＲＡＩＤコントローラ１０４に接続される。また、ＨＤＤ１０５、１０６はＲＡＩＤ１（ミラーリング）で運用される。
【００３１】
以下では、説明の都合上、ＳＡＴＡ接続のＨＤＤを例に説明するが、ＳＣＳＩ接続のＨＤＤを用いる場合には、ＡＴＡコマンドの代わりにＳＣＳＩコマンドが用いられる。
［２−２．ＲＡＩＤコントローラの機能］
次に、図３を参照しながら、ＲＡＩＤコントローラ１０４の機能について説明する。図３は、第２実施形態に係るＲＡＩＤコントローラが有する機能の一例を示した図である。
【００３２】
図３に示すように、ＲＡＩＤコントローラ１０４は、記憶部１１１、管理テーブル作成部１１２、コマンド処理部１１３、及び検証処理部１１４を有する。
なお、記憶部１１１の機能は、上述したメモリ１０４ａを用いて実現できる。管理テーブル作成部１１２、コマンド処理部１１３、及び検証処理部１１４の機能は、上述したＣＰＵ１０４ｂを用いて実現できる。
【００３３】
記憶部１１１には、管理テーブル１１１ａ、状態情報１１１ｂ、及びコマンド情報１１１ｃが格納される。
管理テーブル１１１ａは、ＨＤＤ１０５、１０６を管理するための情報が格納されるテーブルである。管理テーブル１１１ａには、ＨＤＤ１０５、１０６の各セクタにおける記録状態の判断に用いる情報が含まれる。状態情報１１１ｂは、ＨＤＤ１０５、１０６の各セクタに対する検証処理（セクタからデータを正常に読み出せるかを検証する処理）の進捗状況を示す情報である。コマンド情報１１１ｃは、コマンドの種類を識別するためのコードを纏めたコード表である。コマンド情報１１１ｃは、ホスト装置２００から受け付けたコマンドの種類を判別するために用いられる。
【００３４】
ここで、図４を参照しながら、管理テーブル１１１ａについて、さらに説明する。図４は、第２実施形態に係る管理テーブルの一例を示した図である。
図４に示すように、管理テーブル１１１ａには、ＨＤＤの識別情報（ＨＤＤ  Ｎｏ．）、モデル番号（Ｍｏｄｅｌ  Ｎｕｍｂｅｒ）、シリアル番号（Ｓｅｒｉａｌ  Ｎｕｍｂｅｒ）、ファームウェア版数（Ｆｉｒｍｗａｒｅ  Ｒｅｖｉｓｉｏｎ）、総セクタ数（Ｔｏｔａｌ  Ｎｕｍｂｅｒ  ｏｆ  Ｓｅｃｔｏｒｓ）が格納される。また、管理テーブル１１１ａには、検証処理の際に測定されたリードアクセスに対する応答時間（Ｖｅｒｉｆｙ応答時間）が格納される。例えば、ＳＡＴＡ接続のＨＤＤに対しては、Ｒｅａｄ  Ｖｅｒｉｆｙ  Ｓｅｃｔｏｒｓコマンドの応答時間を測定することにより、Ｖｅｒｉｆｙ応答時間が得られる。
【００３５】
Ｖｅｒｉｆｙ応答時間は、ＨＤＤの記憶領域のうち、特定のセクタ区画（所定数の連続するセクタの範囲）について測定される。図４の例は、最大ＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓｉｎｇ）が０ｘ２０００００００セクタのＨＤＤに対し、Ｖｅｒｉｆｙ応答時間を測定するセクタ区画の数（サンプル数）を１６に設定した場合を示している。この例では、０ｘ２００００００−０ｘ１００，  ０ｘ４００００００−０ｘ１００，  …，  ０ｘ２０００００００−０ｘ１００が特定のセクタ区画として設定される。なお、各セクタ区画の幅は２５６セクタ、１２８ＫＢとしている。
【００３６】
図４の例では、記憶領域の先頭に近い方から順にセクタ区画をＶＡ＃１、ＶＡ＃２、…、ＶＡ＃１６と表現している。管理テーブル１１１ａには、ＶＡ＃１、ＶＡ＃２、…、ＶＡ＃１６について測定されたＶｅｒｉｆｙ応答時間と共に、これらのＶｅｒｉｆｙ応答時間の平均値（Ａｖｅｒａｇｅ）が格納される。Ｖｅｒｉｆｙ応答時間は、新たにＨＤＤが追加された際に測定される。そのため、管理テーブル１１１ａに格納されたＶｅｒｉｆｙ応答時間は、劣化前の状態における各セクタのリードアクセスに対する応答時間の目安となる。
【００３７】
次に、図５を参照しながら、状態情報１１１ｂについて、さらに説明する。図５は、第２実施形態に係る状態情報の一例を示した図である。図５に示すように、状態情報１１１ｂには、検証処理の対象とされたＨＤＤの識別情報（ＨＤＤ  Ｎｏ．）及び検証処理が完了したセクタ（Ｖｅｒｉｆｙ済みＳｅｃｔｏｒ）のアドレスが含まれる。状態情報１１１ｂを参照することで、検証処理の進捗状況を把握することが可能になる。
【００３８】
次に、図６を参照しながら、コマンド情報１１１ｃについて、さらに説明する。図６は、第２実施形態に係るコマンド情報の一例を示した図である。図６に示すように、コマンド情報１１１ｃは、コマンドに付与される識別用のコード（ｘ０ｈ，…，ｘＦｈ，０ｘｈ，…，Ｆｘｈ）と、コマンドの種類を示す記号（Ｃ、Ｏ、Ｅ、Ｒ、Ａ、Ｓ、Ｖ）との対応関係を示すコード表である。例えば、記号Ｃは、ＡＴＡ規格などで定義された一般的なコマンドを表す。一方、記号Ｖは、ベンダーが独自に定義した独自コマンドを表す。コマンド情報１１１ｃを参照することで、コマンドの種類を特定することが可能になる。
【００３９】
管理テーブル作成部１１２は、ＲＡＩＤコントローラ１０４の起動時に新たに追加されたＨＤＤを検出した場合、追加されたＨＤＤの情報を取得して管理テーブル１１１ａに格納する。また、管理テーブル作成部１１２は、追加されたＨＤＤに対して検証処理を実施し、特定のセクタ区画についてＶｅｒｉｆｙ応答時間を測定する。そして、管理テーブル作成部１１２は、Ｖｅｒｉｆｙ応答時間の平均値を計算し、各セクタ区画のＶｅｒｉｆｙ応答時間と共に管理テーブル１１１ａに格納する。
【００４０】
コマンド処理部１１３は、ホスト装置２００からコマンドの通知を受け付ける状態（アイドル時）における処理を実行する。例えば、コマンド処理部１１３は、ホスト装置２００からリードコマンドの通知を受けた場合、ＨＤＤ１０５、１０６からデータを読み出し、ＨＤＤ１０５、１０６から読み出したデータが一致するか否かを確認する。データが一致する場合、コマンド処理部１１３は、そのデータを用いてホスト装置２００に応答するための処理を実行する。
【００４１】
コマンド処理部１１３は、ホスト装置２００からＨＤＤ１０５、１０６に対する検証処理を実行するように指示するコマンドを受け付けた場合、検証処理の開始を検証処理部１１４に通知する。
【００４２】
検証処理部１１４は、コマンド処理部１１３から検証処理の開始を通知されたタイミング又は予め設定されたタイミングでＨＤＤ１０５、１０６に対する検証処理（後述するパトロールＶｅｒｉｆｙ処理）を実行する。検証処理の中で記録状態が劣化したセクタを発見した場合、検証処理部１１４は、劣化が検出されたセクタの記録状態を修復する。例えば、ＨＤＤ１０５に記録状態が劣化したセクタを発見した場合、検証処理部１１４は、発見したセクタのデータと同じデータをＨＤＤ１０６から読み出し、読み出したデータを発見したセクタに書き込む。
【００４３】
以上、ＲＡＩＤコントローラ１０４の機能について説明した。
［２−３．処理の流れ］
次に、上記の機能を有するＲＡＩＤコントローラ１０４が実行する処理の流れについて説明する。
【００４４】
（起動時の処理）
まず、図７を参照しながら、ＲＡＩＤコントローラ１０４の起動時に実行される処理の流れについて説明する。図７は、第２実施形態に係るＲＡＩＤコントローラが実行する起動時の処理の流れを示したフロー図である。
【００４５】
（Ｓ１０１）ＲＡＩＤコントローラ１０４の電源が投入されると、管理テーブル作成部１１２は、ＲＡＩＤコントローラ１０４に接続された各ＨＤＤから装置情報（Ｉｄｅｎｔｉｆｙ  Ｄｅｖｉｃｅの情報）を取得する。
【００４６】
例えば、管理テーブル作成部１１２は、ＨＤＤ１０５から、モデル番号「ＤＳＫ０００１」、シリアル番号「２１００５０２５」、ファームウェア版数「ＤＳ１２０１０２」などの情報を取得する（図４参照）。また、管理テーブル作成部１１２は、ＨＤＤ１０６から、モデル番号「ＤＳＫ０００１」、シリアル番号「１００３４００１」、ファームウェア版数「ＤＳ１２０１０２」を管理テーブル１１１ａから読み出す（図４参照）。
【００４７】
（Ｓ１０２）管理テーブル作成部１１２は、装置情報に対応する値を管理テーブル１１１ａから読み出す。
例えば、管理テーブル作成部１１２は、ＨＤＤ＃１に対応するモデル番号「ＤＳＫ０００１」、シリアル番号「２１００５０２５」、ファームウェア版数「ＤＳ１２０１０２」を管理テーブル１１１ａから読み出す（図４参照）。また、管理テーブル作成部１１２は、ＨＤＤ＃２に対応するモデル番号「ＤＳＫ０００１」、シリアル番号「１００３４００１」、ファームウェア版数「ＤＳ１２０１０２」を管理テーブル１１１ａから読み出す（図４参照）。
【００４８】
（Ｓ１０３）管理テーブル作成部１１２は、Ｓ１０１でＨＤＤから取得した装置情報と、Ｓ１０２で管理テーブル１１１ａから読み出した値とが一致するか否かを判定する。装置情報と、読み出した値とが一致する場合、処理はＳ１０５へと進む。一方、装置情報と、読み出した値とが一致しない場合、処理はＳ１０４へと進む。
【００４９】
例えば、ＨＤＤ１０５から読み出した装置情報と、ＨＤＤ＃１に対応する管理テーブル１１１ａの値とが一致する。また、ＨＤＤ１０６から読み出した装置情報と、ＨＤＤ＃２に対応する管理テーブル１１１ａの値とが一致する。これらの場合、処理はＳ１０５へと進む。一方、ＨＤＤ＃１、＃２とは異なるＨＤＤ＃３がＲＡＩＤコントローラ１０４に接続されていた場合、管理テーブル１１１ａにＨＤＤ＃３の情報が格納されていないため、Ｓ１０１でＨＤＤ＃３から取得された装置情報と、管理テーブル１１１ａの値とは一致しない。この場合、処理はＳ１０４へと進む。
【００５０】
（Ｓ１０４）管理テーブル作成部１１２は、管理テーブル１１１ａに装置情報が格納されていないＨＤＤについて、Ｓ１０１でＨＤＤから取得した装置情報を管理テーブル１１１ａに追加する。また、管理テーブル作成部１１２は、当該ＨＤＤについて、特定のセクタ区画に対する検証処理を実行してＶｅｒｉｆｙ応答時間を計測する。そして、管理テーブル作成部１１２は、計測したＶｅｒｉｆｙ応答時間と共に、Ｖｅｒｉｆｙ応答時間の平均値（平均応答時間）を管理テーブル１１１ａに格納する。
【００５１】
なお、後述するように平均応答時間は、運用中に計測されたＶｅｒｉｆｙ応答時間の長さを判定するために用いられる。例えば、平均応答時間の５倍を閾値として利用し、運用中に計測された該当セクタのＶｅｒｉｆｙ応答時間が閾値より大きい場合に、該当セクタに対して記録状態の修復が実施される。そこで、管理テーブル作成部１１２は、管理テーブル１１１ａに、平均応答時間から計算された閾値を格納しておいてもよい。
【００５２】
また、閾値として、「平均応答時間＋予め設定されたリトライ回数×ＨＤＤのプラッタが１回転するのに要する時間」という式で計算される時間を利用してもよい。例えば、平均応答時間が９ｍ秒、リトライ回数が５回、プラッタの１回転に要する時間が１１ｍ秒（５４００ｒｐｍのＨＤＤ）の場合、閾値は６４ｍ秒となる。
【００５３】
例えば、管理テーブル作成部１１２は、図４に示すように、記憶領域を１６分割した区画の末尾から２５６セクタ手前のアドレスを指定してＲｅａｄ  Ｖｅｒｉｆｙ  Ｓｅｃｔｏｒｓ（ＲＶＳ）コマンドを発行し、ＲＶＳコマンドに対する応答時間を計測する。そして、管理テーブル作成部１１２は、計測した応答時間をＶｅｒｉｆｙ応答時間として管理テーブル１１１ａに格納する。また、管理テーブル作成部１１２は、測定したＶｅｒｉｆｙ応答時間の平均値を計算し、計算した平均値（平均応答時間）を管理テーブル１１１ａに格納する。
【００５４】
（Ｓ１０５）管理テーブル作成部１１２は、各ＨＤＤがビルド済みであるか否かを判定する。ビルド済みとは、他のＨＤＤと同じデータがコピーされた状態を言う。例えば、ＨＤＤ１０６にＨＤＤ１０５のデータがコピーされた状態の場合、ＨＤＤ１０６はビルド済みの状態にある。新たにＨＤＤ＃３が追加されていた場合、ＨＤＤ＃３にはＨＤＤ１０５のデータはコピーされていないため、ＨＤＤ＃３はビルド済みの状態にない。対象のＨＤＤがビルド済みである場合、対象のＨＤＤについて処理はＳ１０７へと進む。一方、対象のＨＤＤがビルド済みでない場合、対象のＨＤＤについて処理はＳ１０６へと進む。
【００５５】
（Ｓ１０６）管理テーブル作成部１１２は、ビルド済みでないＨＤＤに対してビルド処理を実行する。ビルド処理とは、ビルド済みのＨＤＤに格納されているデータをビルド済みでないＨＤＤにコピーし、ＨＤＤ間でデータを冗長化する処理である。例えば、ビルド済みの状態にないＨＤＤ＃３がある場合、管理テーブル作成部１１２は、ビルド済みのＨＤＤ１０５からデータを読み出し、読み出したデータをＨＤＤ＃３にコピーする。データのコピーが完了すると、図７に示した一連の処理は終了する。
【００５６】
（Ｓ１０７）管理テーブル作成部１１２は、ビルド済みのＨＤＤが正常状態であるか否かを判定する。例えば、管理テーブル作成部１１２は、対象のＨＤＤの全セクタを対象にＲＶＳコマンドを発行し、リードエラーや応答遅延などのエラーが発生しないかを確認する。エラーが発生しない正常状態のＨＤＤについては、図７に示した一連の処理は終了する。一方、エラーが発生した正常状態にないＨＤＤについての処理はＳ１０８へと進む。
【００５７】
（Ｓ１０８）管理テーブル作成部１１２は、正常状態にないＨＤＤのリビルド処理を実行する。リビルド処理とは、正常状態のＨＤＤからデータを読み出し、正常状態にないＨＤＤにコピーする処理である。このとき、正常状態のＨＤＤから全領域のデータが読み出され、正常状態にないＨＤＤに書き込まれる。Ｓ１０８の処理が完了すると、図７に示した一連の処理は終了する。
【００５８】
ここで、図８を参照しながら、管理テーブルの作成処理（Ｓ１０４）について、さらに説明する。図８は、第２実施形態に係るＲＡＩＤコントローラが実行する管理テーブルの作成処理の流れを示したフロー図である。
【００５９】
（Ｓ１１１）管理テーブル作成部１１２は、予め設定された特定のセクタ区画の中から検証処理を実行する区画（検証箇所）を選択する。例えば、図４に示したセクタ区間ＶＡ＃１、＃２、…、＃１６が設定されている場合、管理テーブル作成部１１２は、記憶領域の先頭に近いセクタ区画から順に検証箇所を選択する。
【００６０】
（Ｓ１１２）管理テーブル作成部１１２は、Ｓ１１１で検証箇所として選択したセクタ区画についてＶｅｒｉｆｙ応答時間を計測する。
例えば、Ｓ１１１でセクタ区画ＶＡ＃２を選択した場合、管理テーブル作成部１１２は、セクタ区画ＶＡ＃２の先頭アドレス０ｘ３ＦＦＦＦ００を指定してＲＶＳコマンドを発行し、発行時刻を保持する。そして、管理テーブル作成部１１２は、ＨＤＤからＲＶＳコマンドに対応する応答を受けた時刻と、保持していた発行時刻との差からＶｅｒｉｆｙ応答時間を求める。
【００６１】
（Ｓ１１３）管理テーブル作成部１１２は、全ての検証箇所を選択し終えたか否かを判定する。予め設定された特定のセクタ区画を全て選択し終えた場合、処理はＳ１１４へと進む。一方、未選択のセクタ区画がある場合、処理はＳ１１１へと進む。
【００６２】
（Ｓ１１４）管理テーブル作成部１１２は、Ｓ１１２で計測した各セクタ区画に対応するＶｅｒｉｆｙ応答時間の平均値（平均応答時間）を計算する。
（Ｓ１１５）管理テーブル作成部１１２は、対象ＨＤＤのモデル番号、シリアル番号、ファームウェア版数、総セクタ数と共に、各セクタ区画に対応するＶｅｒｉｆｙ応答時間、及びＳ１１４で計算した平均応答時間を管理テーブル１１１ａに格納する。Ｓ１１５の処理が完了すると、図８に示した一連の処理は終了する。
【００６３】
以上、ＲＡＩＤコントローラ１０４の起動時に実行される処理の流れについて説明した。なお、上記の説明では、セクタ区画毎にＶｅｒｉｆｙ応答時間を１回測定しているが、セクタ区間毎にＶｅｒｉｆｙ応答時間を複数回測定し、その平均値をセクタ区画毎のＶｅｒｉｆｙ応答時間として用いてもよい。また、セクタ区画のサイズはＳＡＴＡ規格などの仕様に適合する範囲で変更してもよい。
【００６４】
また、新たに追加されたＨＤＤのＶｅｒｉｆｙ応答時間を測定し、測定したＶｅｒｉｆｙ応答時間を管理テーブル１１１ａに追加するタイミングは、当該ＨＤＤのビルド処理が終わった後に設定することも可能である。この場合、管理テーブル作成部１１２は、ＨＤＤのキャッシュではなく、磁性体面へのアクセスに対する応答時間が測定されるようにする。なお、ＲＶＳコマンドを受けたＨＤＤは磁性体面にアクセスして応答するため、ＲＶＳコマンドを利用すれば、Ｖｅｒｉｆｙ応答時間の測定をビルド処理の後にしてもよい。
【００６５】
（アイドル時の処理）
次に、図９及び図１０を参照しながら、ＲＡＩＤコントローラ１０４のアイドル時に実行される処理の流れについて説明する。
【００６６】
図９は、第２実施形態に係るＲＡＩＤコントローラが実行するアイドル時の処理（アイドル処理）の流れを示した第１のフロー図である。図１０は、第２実施形態に係るＲＡＩＤコントローラが実行するアイドル時の処理（アイドル処理）の流れを示した第２のフロー図である。
【００６７】
（Ｓ１２１）コマンド処理部１１３は、ホスト装置２００からコマンドの通知を受けたか否かを判定する。ホスト装置２００からコマンドの通知を受けた場合、処理は図１０のＳ１２８へと進む。一方、ホスト装置２００からコマンドの通知を受けていない場合、処理はＳ１２２へと進む。
【００６８】
（Ｓ１２２）コマンド処理部１１３は、パトロールフラグがＯＮか否かを判定する。パトロールフラグは、ＨＤＤの全記憶領域をチェックし、エラー箇所を修復する処理（パトロールＶｅｒｉｆｙ）を実行するか否かを判定するためのフラグである。なお、パトロールフラグの初期値はＯＮである。パトロールフラグがＯＮの場合、処理はＳ１２３へと進む。一方、パトロールフラグがＯＦＦの場合、処理はＳ１２１へと進む。
【００６９】
（Ｓ１２３）コマンド処理部１１３は、ホスト装置２００からコマンドの通知を受けた時刻（通知時刻）から予め設定された規定時間（例えば、１００ｍ秒）が経過したか否かを判定する。通知時刻から規定時間が経過した場合、処理はＳ１２４へと進む。一方、通知時刻から規定時間が経過していない場合、処理はＳ１２１へと進む。
【００７０】
（Ｓ１２４）検証処理部１１４は、パトロールＶｅｒｉｆｙを実行する。例えば、検証処理部１１４は、状態情報１１１ｂを参照し、Ｖｅｒｉｆｙ済みの検証箇所（ＨＤＤ及びセクタ）を認識する。また、検証処理部１１４は、認識した検証箇所の次に検証する検証箇所（ＨＤＤ及びセクタ）を特定する。そして、検証処理部１１４は、特定した検証箇所に対するＲＶＳコマンドを発行して検証処理を実行する。
【００７１】
（Ｓ１２５）検証処理部１１４は、Ｓ１２４のパトロールＶｅｒｉｆｙが正常終了したか否かを判定する。パトロールＶｅｒｉｆｙが正常終了した場合、処理はＳ１２６へと進む。一方、パトロールＶｅｒｉｆｙが異常終了した場合、処理はＳ１２７へと進む。
【００７２】
（Ｓ１２６）検証処理部１１４は、パトロールＶｅｒｉｆｙを完了したＨＤＤ及びセクタの情報を用いて状態情報１１１ｂを更新する。Ｓ１２６の処理が完了すると、処理はＳ１２１へと進む。
【００７３】
（Ｓ１２７）検証処理部１１４は、パトロールフラグをＯＦＦに設定し、ホスト装置２００に異常を通知する。なお、パトロールＶｅｒｉｆｙが異常終了した場合、パトロールフラグはＯＦＦに設定され、対象のＨＤＤはＲＡＩＤグループから切り離された状態（Ｄｅｇｒａｄｅ）になる。Ｓ１２７の処理が完了すると、処理はＳ１２１へと進む。
【００７４】
（Ｓ１２８）コマンド処理部１１３は、通知時刻を記憶部１１１に保存する。
（Ｓ１２９）コマンド処理部１１３は、ホスト装置２００から受信したコマンドに付加されているコードと、コマンド情報１１１ｃのコード表（図６参照）とを照らし合わせ、受信したコマンドが独自コマンド（記号Ｖに対応するコマンド）か否かを判定する。ホスト装置２００から受信したコマンドが独自コマンドである場合、処理はＳ１３１へと進む。一方、ホスト装置２００から受信したコマンドが独自コマンドではない場合、処理はＳ１３０へと進む。
【００７５】
（Ｓ１３０）コマンド処理部１１３は、ホスト装置２００から受信したコマンドに応じた処理を実行する。
例えば、ＣＨＥＣＫ  ＰＯＷＥＲ  ＭＯＤＥコマンドを受信した場合、コマンド処理部１１３は、ＨＤＤのパワーモード（例えば、Ｉｄｌｅモード、Ｓｌｅｅｐモードなど）をチェックする。その他にも、コマンド処理部１１３は、ＣＯＮＦＩＧＵＲＥ  ＳＴＲＥＡＭコマンドやＤＡＴＡ  ＳＥＴ  ＭＡＮＡＧＥＭＥＮＴコマンドなど、ＡＴＡ規格などで定義された一般のコマンドに応じた処理を実行する。Ｓ１３０の処理が完了すると、処理は図９のＳ１２１へと進む。
【００７６】
（Ｓ１３１）コマンド処理部１１３は、ホスト装置２００から受信したコマンドがパトロールＶｅｒｉｆｙの開始指示であるか否かを判定する。コマンドがパトロールＶｅｒｉｆｙの開始指示である場合、処理はＳ１３３へと進む。このとき、コマンド処理部１１３は、検証処理部１１４にパトロールＶｅｒｉｆｙの開始指示を通知する。一方、コマンドがパトロールＶｅｒｉｆｙの開始指示でない場合、処理はＳ１３２へと進む。
【００７７】
なお、ここでは独自コマンドにパトロールＶｅｒｉｆｙの開始指示を定義して通知する方式を採用しているが、例えば、Ｄｏｗｎｌｏａｄ  Ｍｉｃｒｏｃｏｄｅコマンドのデータとして開始指示を受け渡す方法を採用してもよい。
【００７８】
（Ｓ１３２）コマンド処理部１１３は、コマンドに応じた処理を実行する。独自コマンドとしては、例えば、パトロールＶｅｒｉｆｙの一時停止や打ち切りを指示するコマンドや、リビルド処理の強制実行を指示するコマンドなどがある。Ｓ１３２の処理が完了すると、処理は図９のＳ１２１へと進む。
【００７９】
（Ｓ１３３）検証処理部１１４は、パトロールフラグがＯＮか否かを判定する。パトロールフラグがＯＮの場合、処理は図９のＳ１２１へと進む。一方、パトロールフラグがＯＦＦの場合、処理はＳ１３４へと進む。
【００８０】
（Ｓ１３４）検証処理部１１４は、運用中のＨＤＤ（ＲＡＩＤグループに含まれる正常状態のＨＤＤ）の数が１か否かを判定する。例えば、状態がＤｅｇｒａｄｅのＨＤＤは運用中のＨＤＤに含まれない。運用中のＨＤＤの数が１の場合、処理は図９のＳ１２１へと進む。一方、運用中のＨＤＤの数が２以上の場合、処理はＳ１３５へと進む。
【００８１】
（Ｓ１３５）検証処理部１１４は、パトロールフラグをＯＮに設定する。
（Ｓ１３６）検証処理部１１４は、状態情報１１１ｂをリセットする。つまり、検証処理部１１４は、状態情報１１１ｂに含まれるＨＤＤの識別情報（ＨＤＤ  Ｎｏ．）を次のＨＤＤの識別情報に更新し、Ｖｅｒｉｆｙ済みセクタの値を０に設定する。Ｓ１３６の処理が完了すると、処理は図９のＳ１２１へと進む。
【００８２】
ここで、図１１を参照しながら、状態情報の更新処理（Ｓ１２６）について、さらに説明する。図１１は、第２実施形態に係るＲＡＩＤコントローラが実行する状態情報の更新処理の流れを示したフロー図である。
【００８３】
（Ｓ１４１）検証処理部１１４は、状態情報１１１ｂを参照し、次の検証箇所となるＨＤＤ（該当ＨＤＤ）及びセクタ（該当セクタ）を特定する。
（Ｓ１４２）検証処理部１１４は、状態情報１１１ｂに含まれるＶｅｒｉｆｙ済みセクタの値を２５６セクタ分だけ増加させる。なお、増加させるセクタ数は、ＲＶＳコマンドで検証処理を実行する際の処理対象となる区画の長さ（図４などの例では２５６セクタ／１２８ＫＢ）に一致する。
【００８４】
（Ｓ１４３）検証処理部１１４は、Ｖｅｒｉｆｙ済みセクタが該当ＨＤＤの最大セクタに達しているか否かを判定する。Ｖｅｒｉｆｙ済みセクタが最大セクタに達していない場合、図１１に示した一連の処理は終了する。一方、Ｖｅｒｉｆｙ済みセクタが最大セクタに達している場合、処理はＳ１４４へと進む。
【００８５】
（Ｓ１４４）検証処理部１１４は、検証処理の対象となる次のＨＤＤがあるか否かを判定する。全てのＨＤＤについて検証処理が完了し、次のＨＤＤがない場合、処理はＳ１４７へと進む。一方、次のＨＤＤがある場合、処理はＳ１４５へと進む。
【００８６】
（Ｓ１４５）検証処理部１１４は、状態情報１１１ｂに含まれるＶｅｒｉｆｙ済みセクタの値を０に設定する。
（Ｓ１４６）検証処理部１１４は、状態情報１１１ｂに含まれるＨＤＤの識別情報（ＨＤＤ  Ｎｏ．）を次のＨＤＤの識別情報に設定する。Ｓ１４６の処理が完了すると、図１１に示した一連の処理は終了する。
【００８７】
（Ｓ１４７）検証処理部１１４は、パトロールフラグをＯＦＦに設定する。Ｓ１４７の処理が完了すると、図１１に示した一連の処理は終了する。
（パトロールＶｅｒｉｆｙ処理）
ここで、図１２〜図１４を参照しながら、パトロールＶｅｒｉｆｙ処理（Ｓ１２４）の流れについて、さらに説明する。
【００８８】
図１２は、第２実施形態に係るＲＡＩＤコントローラが実行するパトロールＶｅｒｉｆｙ処理の流れを示した第１のフロー図である。図１３は、第２実施形態に係るＲＡＩＤコントローラが実行するパトロールＶｅｒｉｆｙ処理の流れを示した第２のフロー図である。図１４は、第２実施形態に係るＲＡＩＤコントローラが実行するパトロールＶｅｒｉｆｙ処理の流れを示した第３のフロー図である。
【００８９】
（Ｓ１５１）検証処理部１１４は、Ｖｅｒｉｆｙエラーカウンタを０に設定（初期化）する。Ｖｅｒｉｆｙエラーカウンタは、検証処理時に修復可能なエラーが発生した回数を表すパラメータである。例えば、ＲＶＳコマンドの対象セクタからデータを正常に読み出せたが、ＲＶＳコマンドの処理が異常終了した場合などにＶｅｒｉｆｙエラーカウンタがカウントアップされる。
【００９０】
（Ｓ１５２）検証処理部１１４は、現在時刻をコマンド発行時刻に設定する。なお、現在時刻は、ＲＡＩＤコントローラ１０４の電源ＯＮから現在までの経過時間を表す。検証処理部１１４は、コマンド発行時刻の設定値を記憶部１１１に格納する。
【００９１】
（Ｓ１５３）検証処理部１１４は、対象ＨＤＤにＲＶＳコマンドを発行し、対象ＨＤＤからＲＶＳコマンドに対する応答を受領する。このとき、検証処理部１１４は、状態情報１１１ｂに含まれるＨＤＤの識別情報及びＶｅｒｉｆｙ済みセクタの値から、ＲＶＳコマンドによる処理の対象となるＨＤＤ及び該当セクタを特定する。そして、検証処理部１１４は、特定した対象ＨＤＤ及び該当セクタを指定してＲＶＳコマンドを発行する。
【００９２】
（Ｓ１５４）検証処理部１１４は、現在時刻をコマンド終了時刻に設定する。つまり、検証処理部１１４は、ＲＶＳコマンドの応答を受領した時点における現在時刻をコマンド終了時刻とする。検証処理部１１４は、コマンド終了時刻の設定値を記憶部１１１に格納する。
【００９３】
（Ｓ１５５）検証処理部１１４は、ＲＶＳコマンドの処理が正常終了したか否かを判定する。ＲＶＳコマンドの処理が正常終了した場合、処理はＳ１５６へと進む。一方、ＲＶＳコマンドの処理が異常終了した場合、処理は図１４のＳ１６１へと進む。
【００９４】
（Ｓ１５６）検証処理部１１４は、ＲＶＳコマンドの処理にかかった時間（Ｖｅｒｉｆｙ応答時間）である「コマンド終了時刻−コマンド発行時刻」を計算する。そして、検証処理部１１４は、管理テーブル１１１ａから対象ＨＤＤの平均応答時間を読み出し、計算したＶｅｒｉｆｙ応答時間が平均応答時間の５倍より大きいか否かを判定する。
【００９５】
Ｖｅｒｉｆｙ応答時間が平均応答時間の５倍より大きい場合、処理は図１３のＳ１５７へと進む。一方、Ｖｅｒｉｆｙ応答時間が平均応答時間の５倍より大きくない場合、図１２〜図１４に示した一連の処理は正常終了する。
【００９６】
Ｓ１５６の判定処理は、正常状態にある対象ＨＤＤの平均的なＶｅｒｉｆｙ応答時間（平均応答時間）に比べて、運用時のＶｅｒｉｆｙ応答時間が許容可能な範囲を超えて長くかかるか否かを判定する処理である。上記の例では平均応答時間の５倍を基準（閾値）としているが、平均応答時間の２倍や１０倍など、５倍以外の値に変形してもよい。
【００９７】
また、閾値として、「平均応答時間＋予め設定されたリトライ回数×ＨＤＤのプラッタが１回転するのに要する時間」という式で計算される時間を利用してもよい。例えば、平均応答時間が９ｍ秒、リトライ回数が５回、プラッタの１回転に要する時間が１１ｍ秒（５４００ｒｐｍのＨＤＤ）の場合、閾値は６４ｍ秒となる。
【００９８】
（Ｓ１５７）検証処理部１１４は、該当セクタのデータを対象ＨＤＤとは異なるＨＤＤ（他ＨＤＤ）から読み出す。つまり、検証処理部１１４は、Ｖｅｒｉｆｙ応答時間が平均応答時間より長く、記録状態の劣化が疑われる該当セクタのデータと同じデータを正常に動作している他ＨＤＤから取得する。例えば、検証処理部１１４は、Ｒｅａｄ  ＤＭＡ（Direct Memory Access）コマンドを発行して他ＨＤＤから２５６セクタ分のデータを読み取る。
【００９９】
（Ｓ１５８）検証処理部１１４は、Ｓ１５７で他ＨＤＤから読み出したデータを該当セクタに書き込む。例えば、検証処理部１１４は、対象ＨＤＤに対し、該当セクタを指定してＷｒｉｔｅ  ＤＭＡコマンドを発行する。さらに、検証処理部１１４は、Ｆｌｕｓｈ  Ｃａｃｈｅ（ＦＣ）コマンドを発行する。なお、ＦＣコマンドは、ＨＤＤのライトキャッシュにあるデータを磁性体面に書き込ませるコマンドである。
【０１００】
（Ｓ１５９）検証処理部１１４は、ＦＣコマンドが異常終了したか否かを判定する。つまり、検証処理部１１４は、対象ＨＤＤの該当セクタにデータが正常に書き込まれたか、書き込み時に異常が生じたかを判定する。ＦＣコマンドが異常終了した場合、処理はＳ１６０へと進む。一方、ＦＣコマンドが正常終了した場合、図１２〜図１４に示した一連の処理は正常終了する。
【０１０１】
なお、ＦＣコマンドが正常終了した場合、検証処理部１１４は、該当セクタに対して再度検証処理を実行して記録状態をチェックしてもよい。この場合、検証処理部１１４は、該当セクタに対してＲＶＳコマンドを発行し、計測したＶｅｒｉｆｙ応答時間が平均応答時間の５倍より大きい場合、処理をＳ１６０へと進める。一方、測定したＶｅｒｉｆｙ応答時間が平均応答時間の５倍より大きくない場合、図１２〜図１４に示した一連の処理は正常終了する。このように、再チェックを実行してもよく、再チェックにより信頼性を高めることができる。
【０１０２】
（Ｓ１６０）検証処理部１１４は、該当セクタに対するＦＣコマンドの異常終了が１回目か否かを判定する。異常終了が１回目である場合、処理はＳ１５８へと進む。一方、異常終了が１回目ではない場合、処理は図１４のＳ１６８へと進む。
【０１０３】
なお、ここではＦＣコマンドが１回目の場合に該当セクタへのデータ書き込みをリトライする方法を例示しているが、リトライの回数を２回以上としてもよい。但し、ＦＣコマンドが異常終了する場合にはＨＤＤの故障が疑われるため、ＦＣコマンドの異常終了に対してリトライしないか、この例のように１回程度のリトライに留めるのが現実的である。
【０１０４】
（Ｓ１６１）検証処理部１１４は、ＲＶＳコマンドの異常終了が、該当セクタから正常にデータを読み出せないエラー（Ｕｎｃｏｒｒｅｃｔａｂｌｅ  Ｅｒｒｏｒ）によるか否かを判定する。Ｕｎｃｏｒｒｅｃｔａｂｌｅ  Ｅｒｒｏｒである場合、処理はＳ１６２へと進む。一方、Ｕｎｃｏｒｒｅｃｔａｂｌｅ  Ｅｒｒｏｒではない場合、処理はＳ１６６へと進む。
【０１０５】
（Ｓ１６２）検証処理部１１４は、該当セクタのデータを対象ＨＤＤとは異なるＨＤＤ（他ＨＤＤ）から読み出す。例えば、検証処理部１１４は、Ｒｅａｄ  ＤＭＡコマンドを発行して他ＨＤＤから２５６セクタ分のデータを読み取る。
【０１０６】
（Ｓ１６３）検証処理部１１４は、Ｓ１６２で他ＨＤＤから読み出したデータを該当セクタに書き込む。例えば、検証処理部１１４は、対象ＨＤＤに対し、該当セクタを指定してＷｒｉｔｅ  ＤＭＡコマンドを発行する。さらに、検証処理部１１４は、Ｆｌｕｓｈ  Ｃａｃｈｅ（ＦＣ）コマンドを発行する。
【０１０７】
（Ｓ１６４）検証処理部１１４は、ＦＣコマンドが異常終了したか否かを判定する。つまり、検証処理部１１４は、対象ＨＤＤの該当セクタにデータが正常に書き込まれたか、書き込み時に異常が生じたかを判定する。ＦＣコマンドが異常終了した場合、処理はＳ１６５へと進む。一方、ＦＣコマンドが正常終了した場合、図１２〜図１４に示した一連の処理は正常終了する。
【０１０８】
なお、ＦＣコマンドが正常終了した場合、検証処理部１１４は、該当セクタに対して再度検証処理を実行して記録状態をチェックしてもよい。この場合、検証処理部１１４は、該当セクタに対してＲＶＳコマンドを発行し、計測したＶｅｒｉｆｙ応答時間が平均応答時間の５倍より大きい場合、処理をＳ１６５へと進める。一方、測定したＶｅｒｉｆｙ応答時間が平均応答時間の５倍より大きくない場合、図１２〜図１４に示した一連の処理は正常終了する。このように、再チェックを実行してもよく、再チェックにより信頼性を高めることができる。
【０１０９】
（Ｓ１６５）検証処理部１１４は、該当セクタに対するＦＣコマンドの異常終了が１回目か否かを判定する。異常終了が１回目である場合、処理はＳ１６３へと進む。一方、異常終了が１回目ではない場合、処理はＳ１６８へと進む。
【０１１０】
なお、ここではＦＣコマンドが１回目の場合に該当セクタへのデータ書き込みをリトライする方法を例示しているが、リトライの回数を２回以上としてもよい。但し、ＦＣコマンドが異常終了する場合にはＨＤＤの故障が疑われるため、ＦＣコマンドの異常終了に対してリトライしないか、この例のように１回程度のリトライに留めるのが現実的である。
【０１１１】
（Ｓ１６６）検証処理部１１４は、Ｖｅｒｉｆｙエラーカウンタが０より大きいか否かを判定する。つまり、検証処理部１１４は、該当セクタについて既にＵｎｃｏｒｒｅｃｔａｂｌｅ  Ｅｒｒｏｒ以外のエラーが検出されたか否かを判定する。Ｖｅｒｉｆｙエラーカウンタ＞０である場合、処理はＳ１６８へと進む。一方、Ｖｅｒｉｆｙエラーカウンタ＞０ではない場合、処理はＳ１６７へと進む。
【０１１２】
（Ｓ１６７）検証処理部１１４は、Ｖｅｒｉｆｙエラーカウンタを１増加させる。Ｓ１６７の処理が完了すると、処理は図１２のＳ１５２へと進む。
（Ｓ１６８）検証処理部１１４は、対象ＨＤＤをＲＡＩＤから切り離す（Ｄｅｇｒａｄｅ）。つまり、Ｓ１６８の処理へ到達する場合には対象ＨＤＤに修復不能なエラーが発生していると判断されるため、検証処理部１１４は、ＲＡＩＤグループから対象ＨＤＤを除外する。Ｓ１６８の処理が完了すると、図１２〜図１４に示した一連の処理は異常終了する。
【０１１３】
以上、ＲＡＩＤコントローラ１０４が実行する処理の流れについて説明した。
［２−４．変形例］
これまで、２台のＨＤＤ１０５、１０６を搭載したストレージ装置１００を例に説明してきたが、ＨＤＤの数が３台以上であっても上述した第２実施形態の技術を適用することができる。また、ＨＤＤの数が３台以上の場合、データの読み出し時に多数決論理を適用することで、さらに信頼性を高めることができる。
【０１１４】
上記の多数決論理とは、同じデータが書き込まれた各ＨＤＤの該当セクタからデータを読み出して比較し、最も多く一致したデータを用いて応答する方法である。例えば、ミラーリングされる３台のＨＤＤ＃１、＃２、＃３があるストレージ装置に対し、セクタ００１にあるデータの読み出し要求が発行された場合、ＨＤＤ＃１、＃２、＃３から読み出されたデータが相互に比較される。仮に、ＨＤＤ＃１、＃２のデータが一致し、そのデータとＨＤＤ＃３のデータとが不一致の場合、一致したＨＤＤ＃１、＃２のデータがホスト装置に返される。
【０１１５】
上記のように、各ＨＤＤから読み出されたデータの一致を確認することで信頼性を高めることができるが、１つでも応答が遅延するＨＤＤがあるとホスト装置への応答が遅れる。応答遅延が生じたＨＤＤはＲＡＩＤから切り離してリビルド処理を実行することで修復できる場合もあるが、リビルド処理の間は信頼性が低下する。また、リビルド処理を要するほどの応答遅延が生じていない場合でも、ホスト装置への応答の遅れは生じる。
【０１１６】
しかし、上述した第２実施形態の技術を適用すれば、パトロールＶｅｒｉｆｙのタイミングでＶｅｒｉｆｙ応答時間の長い該当セクタに対して修復が行われるため、各ＨＤＤの記録状態が良好に維持される。その結果、ＲＡＩＤ全体として良好な性能が維持され、ストレージ装置は、安定的に好適な応答時間でリードアクセスの応答を返すことができる。ＨＤＤの数が多くなると、少なくとも１つのＨＤＤに記録状態の劣化が生じるリスクも大きくなるため、上述した第２実施形態の技術を適用する利点も大きくなる。
【０１１７】
また、ＨＤＤにエラーが生じる前に該当セクタに対するデータのリライトが行われるため、上述した第２実施形態の技術を適用しない場合に比べてリードアクセスの性能が向上する。さらに、ＨＤＤの全領域にデータコピーを実施するリビルド処理の発生頻度を低減できるため、冗長性が減って信頼性が低下した状態での運用時間が短くなり、業務運用の信頼性を高めることができる。
【０１１８】
以上、第２実施形態について説明した。
【符号の説明】
【０１１９】
１０  ストレージ装置
１１  記憶部
１２  制御部
１３  第１の記憶装置
１４  第２の記憶装置
１３ａ、１３ｂ、１３ｃ、１３ｄ、１４ａ、１４ｂ、１４ｃ、１４ｄ  区画
ｔ１Ａ、ｔ１Ｃ  第１の応答時間
Ｔ１Ａ、Ｔ１Ｂ、Ｔ１Ｃ、Ｔ１Ｄ  第２の応答時間
ｔ２Ａ、ｔ２Ｃ  第３の応答時間
Ｔ２Ａ、Ｔ２Ｂ、Ｔ２Ｃ、Ｔ２Ｄ  第４の応答時間
Ｔｈ１  第１の閾値
Ｔｈ２  第２の閾値
Ａ、Ｂ、Ｃ、Ｄ  データ
【図１】
2017062715.tif 000003
【図２】
2017062715.tif 000004
【図３】
2017062715.tif 000005
【図４】
2017062715.tif 000006
【図５】
2017062715.tif 000007
【図６】
2017062715.tif 000008
【図７】
2017062715.tif 000009
【図８】
2017062715.tif 000010
【図９】
2017062715.tif 000011
【図１０】
2017062715.tif 000012
【図１１】
2017062715.tif 000013
【図１２】
2017062715.tif 000014
【図１３】
2017062715.tif 000015
【図１４】
2017062715.tif 000016