(57)【要約】【課題】記憶デバイスのパトロール診断を実施する機会を増加させることを可能にするストレージ制御装置、ストレージ装置及びパトロール診断方法を提供する。【解決手段】記憶媒体の正常性を確認するパトロール診断を行うストレージ制御装置及びストレージ装置において、ホストコンピュータからの要求を受信するインタフェースと、受信したホストコンピュータからの再生要求に基づいて、アクセス対象のアドレスに対するデータの再生を記憶デバイスに実行させるリードコマンドを作成するとともに、アクセス対象のアドレスに連続するアドレスに対する診断再生を記憶デバイスに実行させる診断コマンドを作成し、記憶デバイスがシーケンシャルアクセスを実行するように、リードコマンドと診断コマンドを記憶デバイスに順次発行する制御部と、を備える。【選択図】図６
2012247817.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータからの要求に基づいて記憶デバイスに搭載された記憶媒体に対してデータの記録制御または再生制御を行うとともに、前記記憶媒体に記録されたデータを再生して前記記憶媒体の正常性を確認するパトロール診断を行うストレージ制御装置において、
前記ホストコンピュータからの要求を受信するインタフェースと、
受信した前記ホストコンピュータからの再生要求に基づいて、アクセス対象のアドレスに対するデータの再生を前記記憶デバイスに実行させるリードコマンドを作成するとともに、前記アクセス対象のアドレスに連続するアドレスに対する診断再生を前記記憶デバイスに実行させる診断コマンドを作成し、前記記憶デバイスがシーケンシャルアクセスを実行するように、前記リードコマンドと前記診断コマンドを前記記憶デバイスに順次発行する制御部と、
を備えてなることを特徴とするストレージ制御装置。
【請求項２】
前記診断コマンドは、アクセス対象のアドレスの前方又は／及び後方に連続する１又は複数のアドレスに対する前記診断再生を前記記憶デバイスに実行させるコマンドであることを特徴とする請求項１に記載のストレージ制御装置。
【請求項３】
前記記憶デバイスのデータ記憶領域は、複数のパトロール診断エリアが予め設定されており、前記パトロール診断エリアは連続する複数のアドレスで指定されるデータ記憶領域であり、
前記診断コマンドは、前記複数のパトロール診断エリアのうち、前記アクセス対象のアドレスが属するパトロール診断エリアにおいて、前記アクセス対象のアドレス以外の他のアドレスに対する前記診断再生を前記記憶デバイスに実行させるコマンドであることを特徴とする請求項１に記載のストレージ制御装置。
【請求項４】
前記制御部は、前記記憶デバイスの各アドレスに対する前記パトロール診断の実施状況が登録されるパトロール診断管理テーブルを参照して、前記パトロール診断が未実施の場合に前記診断コマンドを作成することを特徴とする請求項１乃至請求項３のいずれか一項に記載のストレージ制御装置。
【請求項５】
前記制御部は、前記診断コマンドとは別に、予め定められた時間毎に、前記記憶デバイスの先頭のアドレスからアドレス順に診断再生を前記記憶デバイスに実行させる診断コマンドを前記記憶デバイスに発行することを特徴とする請求項１乃至請求項４のいずれか一項に記載のストレージ制御装置。
【請求項６】
前記記憶デバイスは、冗長構成の複数の記憶デバイスであり、前記リードコマンドと前記診断コマンドを前記複数の記憶デバイスに対して発行することを特徴とする請求項１乃至請求項５のいずれか一項に記載のストレージ制御装置。
【請求項７】
ストレージ装置において、
ホストコンピュータからの要求に基づいて記憶媒体に対してデータの記録または再生を行う記憶デバイスと、
前記記憶デバイスに搭載された記憶媒体に対してデータの記録制御または再生制御を行うとともに、前記記憶媒体に記録されたデータを再生して前記記憶媒体の正常性を確認するパトロール診断を行うストレージ制御装置を備え、
前記ストレージ制御装置は、
前記ホストコンピュータからの要求を受信するインタフェースと、
受信した前記ホストコンピュータからの再生要求に基づいて、アクセス対象のアドレスに対するデータの再生を前記記憶デバイスに実行させるリードコマンドを作成するとともに、前記アクセス対象のアドレスに連続するアドレスに対する診断再生を前記記憶デバイスに実行させる診断コマンドを作成し、前記記憶デバイスがシーケンシャルアクセスを実行するように、前記リードコマンドと前記診断コマンドを前記記憶デバイスに順次発行する制御部と、
を備えてなることを特徴とするストレージ装置。
【請求項８】
ホストコンピュータからの要求に基づいて記憶デバイスに対してデータの記録または再生を行うとともに、前記記憶デバイスに記録されたデータを再生して前記記憶デバイスの正常性を確認するパトロール診断を行うストレージ装置のパトロール診断方法において、
前記ホストコンピュータからの再生要求を受信し、
受信した前記ホストコンピュータからの再生要求に基づいて、アクセス対象のアドレスに対してデータの再生を前記記憶デバイスに実行させるリードコマンドを作成するとともに、前記アクセス対象のアドレスに連続するアドレスに対する診断再生を前記記憶デバイスに実行させる診断コマンドを作成し、
前記記憶デバイスがシーケンシャルアクセスを実行するように、前記リードコマンドと前記診断コマンドを順次前記記憶デバイスに発行し、
前記リードコマンドと前記診断コマンドにより再生されたデータのエラーを検出する、
ことを特徴とするパトロール診断方法。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の技術は、ストレージ制御装置、ストレージ装置及びパトロール診断方法に関する。
【背景技術】
【０００２】
複数のハードディスクドライブ（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）を一つの論理ボリュームとして扱うストレージ装置として、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）装置が知られている。
【０００３】
また、ＲＡＩＤ装置等のストレージ装置は、パーソナルコンピュータやサーバ等のホストコンピュータにネットワークを介して接続されている。ストレージ装置のコントローラは、ホストコンピュータから発行されるデータの記録要求や再生要求等の入出力要求（Ｉ／Ｏ要求）を受信すると、各ＨＤＤに対するデータの記録制御や再生制御等を実行する。
【０００４】
ＲＡＩＤ装置では複数のＨＤＤを利用する為、各ＨＤＤに搭載された記憶媒体であるハードディスク媒体に故障が発生する。この故障は、ハードディスク媒体の損傷や磁性膜の劣化、動作環境に依存した性能低下等に起因するものであり、記録エラーや再生エラーを引き起こす原因となっている。
【０００５】
そのため、ＲＡＩＤ装置のＨＤＤは冗長構成となっており、ＲＡＩＤ装置には故障したハードディスク媒体のデータの再構築機能が設けられている。従って、あるＨＤＤのハードディスク媒体の故障を検出した場合、他の冗長構成のＨＤＤのデータを利用して故障したハードディスク媒体のデータを復元し、データの再構築（リビルド）することができる。再構築したデータは故障媒体が属するＨＤＤの別の論理ブロックアドレスまたはスペアのＨＤＤに記録される。
【０００６】
しかしながら、ハードディスク媒体の故障には、故障したタイミングで検出することができる同期型のエラーがある。一方、故障したタイミングでは検出することができず、ハードディスク媒体にアクセスしたタイミングで検出することができる非同期型のエラーも存在する。
【０００７】
例えば、ある特定の論理ブロックアドレス（ＬＢＡ：Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）で記録／再生不可能な状態になっている場合に、そのＬＢＡにアクセスしない限りエラーを検出することができない。
【０００８】
そのために、ホストコンピュータからのＩ／Ｏ要求と関係なく、ＲＡＩＤ装置は、パトロール診断（ディスクパトロール）を行う機能がある。ＲＡＩＤ装置の全ＨＤＤの全容量範囲を対象にデータの再生を行い、ハードディスク媒体の故障の有無をチェックする機能がある。本機能をパトロール診断（ディスクパトロール）と呼ぶ。
【０００９】
パトロール診断では、各ＨＤＤの全データ記憶領域（データが記録可能な全容量範囲）における先頭の論理ブロックアドレス（先頭ＬＢＡ）から最終の論理ブロックアドレス（最終ＬＢＡ）までをアドレス順に再生してエラーを検出する。
【００１０】
そして、ＲＡＩＤ装置のコントローラは、パトロール診断コマンドを各ＨＤＤに発行して、各ＨＤＤにパトロール診断を実施させ、ＨＤＤからエラー検出結果を受信する。ＲＡＩＤ装置のコントローラは、このエラー検出結果に基づいて、各ＨＤＤのハードディスク媒体の故障の有無を判定して、ハードディスク媒体の正常性の確認を行っている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００８−２７２４０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
前述のパトロール診断は、ホストコンピュータからの入出力要求に対するデータの入出力処理（以下、Ｉ／Ｏ処理と述べる）に影響を与えないように、ハードディスク媒体の所定のエリア毎に所定の時間間隔で実施される。このため、ＲＡＩＤ装置の全ＨＤＤの全容量範囲のパトロール診断が完了するまでに莫大な時間がかかっていた。
【００１３】
パトロール診断を実施するための診断コマンドの発行時間を例えば１〜２秒間隔としたとしても、全ＨＤＤの全容量が数テラバイトである場合、全ＨＤＤの全容量範囲のパトロール診断が完了するのに数カ月もの長い時間がかかっていた。
【００１４】
また、パトロール診断の実施の順番待ちにより、長期間パトロール診断が実施されないＬＢＡ範囲が生じる。このようなパトロール診断実施待ちのＬＢＡ範囲において修復不可能なエラーが発生した場合、そのＬＢＡ範囲に対するＩ／Ｏ要求が出されるまでは修復不可能なエラーに気づくことができない。従って、ＨＤＤのハードディスク媒体の故障を早期に検出することができない。
【００１５】
また、パトロール診断は複数のＨＤＤの間で同期を取りながら実施されるので、冗長構成のＨＤＤの全容量範囲のパトロール診断が未完了である可能性が高く、故障したハードディスク媒体が属するＨＤＤと同様にエラーが発生する可能性が高い。
【００１６】
そのため、冗長構成のＨＤＤのハードディスク媒体にもエラーが発生した場合、ＨＤＤの再構築ができない事態が想定される。従って、パトロール診断をできるだけ早期に効果的に実施することが急務となっている。
【００１７】
開示の技術は、記憶デバイスのパトロール診断を実施する機会を増加させることを可能にするストレージ制御装置、ストレージ装置及びパトロール診断方法を提供することを目的とする。
【課題を解決するための手段】
【００１８】
開示の技術の一側面によると、ホストコンピュータからの要求に基づいて記憶デバイスに搭載された記憶媒体に対してデータの記録制御または再生制御を行うとともに、記憶媒体に記録されたデータを再生して記憶媒体の正常性を確認するパトロール診断を行うストレージ制御装置において、ホストコンピュータからの要求を受信するインタフェースと、受信したホストコンピュータからの再生要求に基づいて、アクセス対象のアドレスに対するデータの再生を記憶デバイスに実行させるリードコマンドを作成するとともに、アクセス対象のアドレスに連続するアドレスに対する診断再生を記憶デバイスに実行させる診断コマンドを作成し、記憶デバイスがシーケンシャルアクセスを実行するように、リードコマンドと診断コマンドを記憶デバイスに順次発行する制御部と、を備える。
【発明の効果】
【００１９】
開示のストレージ制御装置、ストレージ装置及びパトロール診断方法は、データの再生アクセス対象の論理ブロックアドレスと連続する論理ブロックアドレスに対してパトロール診断を実施する。従って、シーケンシャルアクセスにして取得したデータを活用して、パトロール診断の機会を増加させることが可能になる。
【図面の簡単な説明】
【００２０】
【図１】図１は、ストレージシステムの構成を説明するための図である。
【図２】図２は、定時パトロール診断を説明するための図である。
【図３】図３は、パトロール診断用のテーブルの一例を示す図である。
【図４】図４は、定時パトロール診断の制御フローを示す図である。
【図５】図５は、Ｉ／Ｏ処理時パトロール診断を説明する図（その１）である。
【図６】図６は、Ｉ／Ｏ処理時パトロール診断を説明する図（その２）である。
【図７】図７は、Ｉ／Ｏ処理時パトロール診断の制御フローを示す図である。
【発明を実施するための形態】
【００２１】
以下、図面を参照して実施の形態を詳細に説明する。図１は、ストレージシステムの構成を説明するための図である。図１において、ストレージシステム１０は、ホストコンピュータ１と、ストレージ装置２を備える。ホストコンピュータ１は、ストレージ装置２に対してデータの記録又は再生要求を行う上位装置である。
【００２２】
ストレージ装置２は、ストレージ制御装置の一例であるコントローラモジュール（ＣＭ）３、ディスクエンクロージャ（ＤＥ）５を備える。ストレージ装置２は、ホストコンピュータ１からのデータの記録又は再生要求に応答してデバイスエンクロージャ（ＤＥ）５に指示してデータの記録又は再生を行う。
【００２３】
デバイスエンクロージャ（ＤＥ）５には、複数台の記憶デバイス１５ａ〜１５ｄが搭載されている。記憶デバイスとしては、ハードディスク装置（ＨＤＤ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等が挙げられる。
【００２４】
図１においては、デバイスエンクロージャ（ＤＥ）５に４台のハードディスク装置（ＨＤＤ＃０１〜ＨＤＤ＃０４）が記憶デバイスとして搭載されている例を示す。そして、ストレージ装置２はＲＡＩＤ装置として構成される。なお、ストレージ装置２は複数台のＨＤＤの他にＳＳＤを搭載してもよい。
【００２５】
コントローラモジュール３は、コントローラ（ＣＰＵ）４、ホストコンピュータ１とインタフェース接続するためのチャネルアダプタ（ＣＡ）６、デバイスエンクロージャ５とインタフェース接続するためのデバイスアダプタ（ＤＡ）７、及びメモリ８を備える。ＣＰＵ４は、各種プログラムを実行する。また、ＣＰＵ４は、プログラムの実行により、ＲＡＩＤ制御部１２及び入出力制御部（Ｉ／Ｏ制御部）１３として機能する。
【００２６】
メモリ８は、キャッシュメモリ８１とバッファメモリ８２として利用される。キャッシュメモリ８１は、ホストコンピュータ１とデバイスエンクロージャ５との間でデータを転送するためにデータを一時的に格納するメモリである。
【００２７】
バッファメモリ８２は、ＣＰＵ４が利用する各種プログラムや各種管理テーブルを格納するメモリである。また、バッファメモリ８２には、パトロール診断管理テーブル８６や開始アドレス管理テーブル８７等のパトロール診断用テーブルが格納される。
【００２８】
ＲＡＩＤ制御部１２は、複数の記憶デバイス１５ａ〜１５ｄで１つのＲＡＩＤグループを構成するデバイスエンクロージャ５に対し、ＲＡＩＤの冗長構成によるＲＡＩＤ制御を行う。ＲＡＩＤ制御部１２は、ホストコンピュータ１から転送されたデータをキャッシュメモリ８１に一時的に格納する。
【００２９】
また、ＲＡＩＤ制御部１２は、ホストコンピュータ１から転送されたデータを各記憶デバイス１５ａ〜１５ｄに格納できるように処理し、Ｉ／Ｏ制御部１３に対して各記憶デバイス１５ａ〜１５ｄへの各種コマンドを発行するように指示を出す。
【００３０】
Ｉ／Ｏ制御部１３は、キャッシュメモリ８１からデータをデバイスエンクロージャ５に転送したり、デバイスエンクロージャ５からデータをキャッシュメモリ８１に転送したりするための入出力制御を行う。
【００３１】
その為、Ｉ／Ｏ制御部１３は、ＲＡＩＤ制御部１２からの指示を受けて、データの記録または再生等を行うためのホスト要求入出力コマンドをＤＥ５の各記憶デバイス１５ａ〜１５ｄに発行する。各記憶デバイス１５ａ〜１５ｄは、ＤＡ７を経由してホスト要求入出力コマンドを受信して、コマンドに基づいてデータの記録または再生等のＩ／Ｏ処理を実行する。
【００３２】
図２は、定時パトロール診断を説明するための図であり、パトロール診断を予め定められた時間に定期的に実施する場合（定時パトロール診断）の制御を模式的に示す。Ｉ／Ｏ制御部１３は、ＲＡＩＤ制御部１２の指示を受けて第１診断コマンド（定時パトロール診断コマンド）を定期的（例えば２秒毎）に発行する。
【００３３】
そして、Ｉ／Ｏ制御部１３は、各記憶デバイス１５ａ〜１５ｄであるＨＤＤ＃１〜ＨＤＤ＃４に対してパトロール診断を実施する。従って、第１診断コマンドは、ホスト要求入出力コマンドとは無関係に所定のタイミングで発行される。
【００３４】
なお、各ＨＤＤ＃１〜ＨＤＤ＃４の全データ記憶領域の先頭の論理ブロックアドレス（先頭ＬＢＡ）から最終の論理ブロックアドレス（最終ＬＢＡ）までのパトロール診断を一度に実施すると時間がかかり、ホストコンピュータ１からのＩ／Ｏ要求に対して長時間応答することができない。
【００３５】
そこで、ＲＡＩＤ制御部１２及びＩ／Ｏ制御部１３は、各ＨＤＤ＃１〜ＨＤＤ＃４の全データ記憶領域をパトロール診断用に複数のエリアに予め分けておき、これらのエリアをパトロール診断エリアとして管理する。
【００３６】
なお、パトロール診断エリアは連続する複数の論理ブロックアドレスで指定されるデータ記憶領域である。そして、ＲＡＩＤ制御部１２及びＩ／Ｏ制御部１３は、各ＨＤＤ＃１〜ＨＤＤ＃４の先頭エリアから最終エリアまでエリア毎に順番にパトロール診断を実施する。
【００３７】
また、この１つのエリアのサイズは、このエリアに対してパトロール診断を実施するのに要する時間（パトロール診断実施時間）に依存する。従って、このパトロール診断実施時間をホストコンピュータ１に設定されたタイムアウト時間の範囲内になるように設定し、各エリアのサイズを予め設定しておく。
【００３８】
ＲＡＩＤ制御部１２は、予め定められたパトロールタイミングになったら、パトロール診断管理テーブル８６や開始アドレス管理テーブル８７を参照する。ＲＡＩＤ制御部１２は、各ＨＤＤ＃１〜ＨＤＤ＃４のパトロール診断エリアにおけるパトロール診断実施状況や論理ブロックアドレス、及び開始アドレスを認識し、Ｉ／Ｏ制御部１３に対してパトロール診断の実行指示を出す。
【００３９】
そして、図２に示すように、Ｉ／Ｏ制御部１３は、ＲＡＩＤ制御部１２からの指示を受けて、パトロール診断エリア（エリア１）の論理ブロックアドレスＬＢＡ０〜０ｘ７ＦＦの範囲のパトロール診断を実施する。なお、図２においてＬＢＡ０〜０ｘ７ＦＦの範囲を４つに分けてアドレスを指定する例を示す。
【００４０】
記憶デバイス１５ａであるＨＤＤ＃１に対する診断再生を指示する複数の第１診断コマンド（Ｔ−Ｉ／Ｏコマンド）（１）〜（４）を順次発行する。また、Ｉ／Ｏ制御部１３は、記憶デバイス１５ｂであるＨＤＤ＃２に対しても、同時に、論理ブロックアドレスＬＢＡ０〜０ｘ７ＦＦの範囲のパトロール診断を実施する。
【００４１】
すなわち、ＨＤＤ＃２に対して複数の第１診断コマンド（Ｔ−Ｉ／Ｏコマンド）［１］〜［４］を順次発行する。また、他の記憶デバイス１５ｃ、１５ｄであるＨＤＤ＃３、ＨＤＤ＃４に対しても同様に複数の第１診断コマンドを順次発行してパトロール診断が実施される。
【００４２】
そして、各記憶デバイス１５ａ〜１５ｄは、これらの第１診断コマンドを受信して、パトロール診断の論理ブロックアドレスの診断再生を実行する。ここで、診断再生は、記憶デバイスがハードディスク媒体に記録されたデータ（記録済みのデータ）を再生し、ＣＲＣ等を利用してデータが正しく再生されたか否かを検査して、検査結果をホストコンピュータに送信する再生処理である。
【００４３】
なお、第１診断コマンド及び第２診断コマンドの指示により、この診断再生により再生されたデータは、検査後、キャシュメモリ８１へは転送しないで破棄される。そして、ＲＡＩＤ制御部１２は、この検査結果に基づいて、修復不可能なエラーがあるか否かを認識し、各ＨＤＤのハードディスク媒体の故障の有無を判定して、ハードディスク媒体の正常性の確認を行う。
【００４４】
ＲＡＩＤ制御部１２がデータの再構築が必要であると判断した場合、故障したハードディスク媒体が属するＨＤＤと冗長化されている記憶デバイスからデータを再生してデータの再構築を実施する。そして、再構築されたデータは当該ＨＤＤの別のブロックやスペアのＨＤＤに記録される。
【００４５】
このようにして、全記憶デバイス（ＨＤＤ＃１〜ＨＤＤ＃４）の最終ＬＢＡに到達するまで、所定のパトロールタイミングでパトロール診断エリア毎に、パトロール診断が順次実施される。
【００４６】
なお、前述したように、パトロール診断エリアを設定せずに、アクセス対象の論理ブロックアドレスの前方又は／及び後方に連続する１又は複数の論理ブロックアドレスで指定されるデータ記憶領域に対してパトロール診断を実施するようにしてもよい。
【００４７】
つまり、パトロール診断を実施するブロック数を予め決めておき、このブロック数からＲＡＩＤ制御部１２はアクセス対象の論理ブロックアドレスに応じてパトロール診断対象を決めて、Ｉ／Ｏ制御部１３はこのパトロール診断対象に基づいて診断コマンドを作成するようにしてもよい。
【００４８】
図３（Ａ）、（Ｂ）は、パトロール診断用のテーブルの一例を示す図である。図３（Ａ）は、パトロール診断管理テーブル８６の一例を示す。パトロール診断管理テーブル８６は、ＨＤＤ名、パトロール診断エリアのエリア名、パトロール診断エリアの論理ブロックアドレス（ＬＢＡ）、パトロール診断実施状況が登録されている。
【００４９】
また、パトロール診断実施状況の欄には、パトロール診断が実施済であれば１、未実施であれば０のフラグが登録される。さらに、パトロール診断エリア毎にテーブルを設け、パトロール診断エリアに属する論理ブロックアドレス毎にフラグを設定してもよい。
【００５０】
図３（Ｂ）は、開始アドレス管理テーブル８７の一例を示す。ＨＤＤ毎にパトロール診断を開始する先頭の論理ブロックアドレス（開始ＬＢＡ）が登録される。そして、開始ＬＢＡは、パトロール診断が実施される度に更新される。
【００５１】
ＲＡＩＤ制御部１２は、パトロール診断管理テーブル８６を参照して、この開始ＬＢＡが属するパトロール診断エリアを検索する。そして、検索されたパトロール診断エリアにおける先頭ＬＢＡから最終ＬＢＡのパトロール診断が実施される。
【００５２】
つまり、１つのパトロール診断エリアの最終ＬＢＡに到達する前にパトロール診断が中断した場合、開始ＬＢＡが更新されないので、再度同じパトロール診断エリアに対してパトロール診断を実施することができる。ゆえに、パトロール診断を全ＬＢＡに対して確実に実施することができる。
【００５３】
図４は、定時パトロール診断の制御フローを示す図である。Ｓ１０１において、記憶デバイス１５ａ〜１５ｄであるＨＤＤ＃１〜ＨＤＤ＃４の電源がＯＮされる。Ｓ１０２において、ＲＡＩＤ制御部１２は、パトロール診断管理テーブル８６を作成する。Ｓ１０３において、ＲＡＩＤ制御部１２は、パトロール診断管理テーブル８６を参照する。
【００５４】
Ｓ１０４において、ＲＡＩＤ制御部１２は、診断対象のＨＤＤ（例えば、ＨＤＤ＃１）の全ての論理ブロックアドレス（全診断対象ＬＢＡ）におけるパトロール診断実施状況を示すフラグが全部１（実施済）であるか否かを判定する。
【００５５】
Ｓ１０５において、ＲＡＩＤ制御部１２は、フラグが全部１（Ｓ１０４、Ｙｅｓ）であれば、診断対象のＨＤＤの全ての論理ブロックアドレスにおけるパトロール診断が実施済である。従って、Ｉ／Ｏ制御部１３は全診断対象ＬＢＡのフラグを０（未実施）にクリアする。Ｓ１０４において、Ｎｏであれば、Ｓ１０６に進む。
【００５６】
Ｓ１０６において、予め定められた待機時間（例えば２秒）待機する。Ｓ１０７において、ＲＡＩＤ制御部１２は、パトロール診断管理テーブル８６と開始アドレス管理テーブル８７に登録された開始論理ブロックアドレス（開始ＬＢＡ）が属するパトロール診断エリアを検索する。ＲＡＩＤ制御部１２は、Ｉ／Ｏ制御部１３に指示して、検索されたパトロール診断エリアにおける先頭ＬＢＡから最終ＬＢＡに対してパトロール診断を実施する。
【００５７】
パトロール診断を実施した結果、全データ記憶領域の最終論理ブロックアドレス（最終ＬＢＡ）に到達していれば（Ｓ１０８、Ｙｅｓ）、Ｓ１０９において、ＲＡＩＤ制御部１２は、開始アドレス管理テーブル８７における開始ＬＢＡを０に設定する。
【００５８】
最終ＬＢＡに到達していなければ（Ｓ１０８、Ｎｏ）、Ｓ１１０に進む。Ｓ１１０において、ＲＡＩＤ制御部１２は、開始アドレス管理テーブル８７における開始ＬＢＡをインクリメントする。
【００５９】
Ｓ１１１において、ＲＡＩＤ制御部１２は、パトロール診断管理テーブル８６を参照する。ＲＡＩＤ制御部１２は、パトロール診断管理テーブル８６においてパトロール診断実施済の論理ブロックアドレスのフラグが０（未実施）であれば（Ｓ１１２、Ｙｅｓ）、Ｓ１１３において、フラグを１（実施済）に設定する。Ｓ１１２において、ＮｏであればＳ１０４に戻る。
【００６０】
図５は、Ｉ／Ｏ処理時パトロール診断を説明する図（その１）であり、パトロール診断をホストコンピュータ１からの要求されたＩ／Ｏ処理をトリガとして実施する場合（Ｉ／Ｏ処理時パトロール診断）の制御を模式的に示す。Ｉ／Ｏ処理時パトロール診断は、前述した定時パトロール診断とは独立したルーチンで実施される。
【００６１】
ＲＡＩＤ制御部１２は、ホストコンピュータ１からデータ再生を指示するＩ／Ｏ要求を受信する。ＲＡＩＤ制御部１２は、このＩ／Ｏ要求（再生要求）に対応してＩ／Ｏ制御部１３に再生要求の実行指示を出す。図５において、Ｉ／Ｏ制御部１３は、再生要求に対応して、記憶デバイス１５ａであるＨＤＤ＃１に対するホスト要求リードコマンド（Ｈ−Ｉ／Ｏコマンド）（１）〜（４）を準備する。ＨＤＤ＃１に対して冗長構成をとる記憶デバイス１５ｂであるＨＤＤ＃２に対するＨ−Ｉ／Ｏコマンド［１］〜［４］を準備する。
【００６２】
そして、ＲＡＩＤ制御部１２は、アクセス対象のＩ／Ｏ要求ＬＢＡ範囲（ＬＢＡ９８０〜０ｘＢ７Ｆ）が属するパトロール診断エリア（エリア２：ＬＢＡ０ｘ８００〜ＬＢＡ０ｘＦＦＦ）について、パトロール診断管理テーブル８６を参照し、パトロール診断が実施済か否かを確認する。
【００６３】
パトロール診断が未実施であれば、ＲＡＩＤ制御部１２は、Ｉ／Ｏ制御部１３に指示して、Ｉ／Ｏ要求ＬＢＡ範囲（ＬＢＡ９８０〜０ｘＢ７Ｆ）が属するエリア２（ＬＢＡ０ｘ８００〜ＬＢＡ０ｘＦＦＦ）のパトロール診断を実施する。
【００６４】
なお、Ｉ／Ｏ要求ＬＢＡ範囲（ＬＢＡ９８０〜０ｘＢ７Ｆ）に対して、データ再生処理が実行されるので、この再生処理で取得したデータを利用してパトロール診断を実行することができる。
【００６５】
その為、Ｉ／Ｏ制御部１３は、後述するように、Ｉ／Ｏ要求ＬＢＡ範囲（ＬＢＡ９８０〜０ｘＢ７Ｆ）を除く、Ｉ／Ｏ要求ＬＢＡ範囲の前方のＬＢＡ範囲（ＬＢＡ０ｘ８００〜ＬＢＡ０ｘ９７Ｆ）と、後方のＬＢＡ範囲（ＬＢＡ０ｘＢ８０〜ＬＢＡ０ｘＦＦＦ）に対するパトロール診断を実施すれば良い。従って、後述するように、エリア２（ＬＢＡ０ｘ８００〜ＬＢＡ０ｘＦＦＦ）の全データ領域に対してパトロール診断を実施することができる。
【００６６】
図６は、Ｉ／Ｏ処理時パトロール診断を説明する図（その２）である。図６に示すように、Ｉ／Ｏ制御部１３は、パトロール診断エリア（エリア２）におけるＩ／Ｏ要求ＬＢＡ範囲以外の残りのＬＢＡ範囲に対する診断再生を指示する１２個の第２診断コマンド（診断リードコマンド：Ｐ−Ｉ／Ｏコマンド）を作成する。
【００６７】
つまり、Ｉ／Ｏ制御部１３は、Ｉ／Ｏ要求ＬＢＡ範囲の前方のＬＢＡ範囲（ＬＢＡ０ｘ８００〜ＬＢＡ０ｘ９７Ｆ）と、後方のＬＢＡ範囲（ＬＢＡ０ｘＢ８０〜ＬＢＡ０ｘＦＦＦ）を診断対象とした１２個のＰ−Ｉ／Ｏコマンド（１）〜（３）、（８）〜（１６）を作成する。冗長構成をとる記憶デバイス１５ｂであるＨＤＤ＃２に対しても、Ｐ−Ｉ／Ｏコマンド［１］〜［３］、［８］〜［１６］を同様に作成する。
【００６８】
そして、Ｉ／Ｏ制御部１３は、図５で示す４つのＨ−Ｉ／Ｏコマンドと、図６で示す１２個のＰ−Ｉ／Ｏコマンドを、それぞれが指定するアドレスが昇順になるように順番に並べる。そして、エリア２に対する１６個のコマンド（１）〜（１６）、［１］〜［１６］を作成する。その後、予め定められたタイミング毎にこれらのコマンド（１）〜（１６）、［１］〜［１６］を順次ＨＤＤ＃１、ＨＤＤ＃２にそれぞれ発行する。
【００６９】
１回のコマンドで指定することができるアドレス数は、デバイスインタフェースの規格に基づいて予め決めておく。従って、コマンド数は、このアドレス数やパトロール診断エリアのサイズに応じて変わるものであり、本実施の形態に限定されるものではない。
【００７０】
また、未記録のデータ記憶領域に対してダミーデータを予め記録しておく。従って、第１及び第２診断コマンドによって診断再生を実施した際に、確実にエラーを検出することができる。
【００７１】
ＨＤＤ＃１〜＃４は、キューイング機能とリオーダリング機能を備えている。キューイング機能は、コマンドが終了する前に次のコマンドをＨＤＤが受け取り、待ち行列（キュー）に入れる機能である。また、リオーダリング機能は、キューに入れられたコマンドを、ＨＤＤがシーク動作を効率的に処理することができる順番に並べ替えて、その順番でデータの記録又は再生等を実行する機能である。
【００７２】
従って、ＨＤＤ＃１、ＨＤＤ＃２のコントローラは、前述したキューイング機能を利用して、１６個のコマンドを順次受け取り、キューに入れておく。そして、ＨＤＤ＃１、ＨＤＤ＃２のコントローラは、リオーダリング機能を利用して、キューに蓄積されたコマンドに指定された論理ブロックアドレスを順番に並べ替えて処理を実行する。
【００７３】
つまり、ＨＤＤ＃１、ＨＤＤ＃２は、シーク動作を効率的に行うことができるように、処理対象の論理ブロックアドレスを回転待ちや磁気ヘッドの移動ができるだけ発生しないような順番に並べ替えて処理を実行する。
【００７４】
ここで、１６個のコマンドがそれぞれ指定する論理ブロックアドレスは昇順に並んで連続している。また、ハードディスク媒体の各トラックには、複数の物理セクタが設定されている。論理ブロックアドレスは、トラック一周の各物理セクタに対して磁気ヘッドのトラック追従方向に昇順に予め割当てられている。
【００７５】
さらに、各トラックの複数の物理セクタは、内周から外周のトラックにかけて、または外周から内周のトラックにかけて、論理ブロックアドレスが昇順に予め割当てられている。従って、ＨＤＤ＃１、ＨＤＤ＃２のコントローラは、論理ブロックアドレスを順番に処理することにより、磁気ヘッドを論理ブロックアドレスに対応付けられた物理セクタに対して順番に連続的に追従させて、データ再生処理を行うことができる。
【００７６】
つまり、ＨＤＤ＃１、ＨＤＤ＃２は、シーケンシャルアクセスで、Ｉ／Ｏ処理による再生及び診断処理による診断再生を実行することができる。なお、各コマンドの発行時間間隔が長いと、ＨＤＤの処理の方が早く終了し、各コマンドがキューイングされない。その為、発行間隔は、各ＨＤＤのキューイング機能が利用できるように、各ＨＤＤに予め設定された時間以内になるように予め決めておく。
【００７７】
従って、ＨＤＤ＃１、ＨＤＤ＃２は、自身のキューイング機能及びリオーダリング機能を利用して、１６個のコマンドの処理をシーケンシャルアクセスで実行することができる。その為、データ再生処理（Ｉ／Ｏ処理）のついでにパトロール診断を実施することができる。
【００７８】
そして、データ再生処理（Ｉ／Ｏ処理）と診断処理をシーケンシャルアクセスにして取得したデータを活用することで、記憶デバイスに対するパトロール診断の機会を増加させることが可能になる。従って、Ｉ／Ｏ処理のアクセス性能（アクセス速度）に影響を与えることがなく、パトロール診断を実施することができる。
【００７９】
図７は、Ｉ／Ｏ処理時パトロール診断の制御フローを示す図である。Ｓ２０１において、記憶デバイス１５ａ〜１５ｄであるＨＤＤ＃１〜ＨＤＤ＃４の電源がＯＮされる。Ｓ２０２において、ＲＡＩＤ制御部１２は、パトロール診断管理テーブル８６を作成する。Ｓ２０３において、ＲＡＩＤ制御部１２は、パトロール診断管理テーブル８６を参照する。
【００８０】
Ｓ２０４において、ＲＡＩＤ制御部１２は、アクセス及び診断対象のＨＤＤの全ての論理ブロックアドレス（全診断対象ＬＢＡ）における診断実施状況を示すフラグが全部１（実施済）であるか否かを判定する。
【００８１】
Ｓ２０５において、フラグが全部１（Ｓ２０４、Ｙｅｓ）であれば、診断対象の全ての論理ブロックアドレスにおけるパトロール診断が実施済であり、ＲＡＩＤ制御部１２は全診断対象ＬＢＡのフラグを０（未実施）にクリアする。Ｓ２０４において、Ｎｏであれば、Ｓ２０６に進む。
【００８２】
Ｓ２０６において、ＲＡＩＤ制御部１２は、ホストコンピュータからデータ再生を指示するＩ／Ｏ要求（再生要求）を受領する。Ｓ２０７において、Ｉ／Ｏ制御部１３は、ＲＡＩＤ制御部１２からの指示を受けて、この再生要求に対応するホスト要求リードコマンド（Ｈ−Ｉ／Ｏコマンド）を作成する。
【００８３】
Ｓ２０８において、ＲＡＩＤ制御部１２は、パトロール診断管理テーブル８６を参照する。ＲＡＩＤ制御部１２は、パトロール診断管理テーブル８６において、診断対象の論理ブロックアドレスのフラグが０（未実施）であれば（Ｓ２０９、Ｙｅｓ）、Ｓ２１０において、パトロール診断を行うための診断リードコマンド（Ｐ−Ｉ／Ｏコマンド）をさらに作成する。
【００８４】
Ｓ２０９において、ＮｏであればＳ２１０に進む。ここで、診断対象の論理ブロックアドレスについて、パトロール診断が実施済（フラグが１）であればＩ／Ｏ処理時パトロール診断を実施しない。つまり、定時パトロール診断や前回のＩ／Ｏ処理時パトロール診断によってパトロール診断が実施されている場合は、パトロール診断を実施せずに、Ｉ／Ｏ処理のみとする。従って、パトロール診断の効率化を図ることができる。
【００８５】
Ｓ２１０において、Ｉ／Ｏ制御部１３は、Ｈ−Ｉ／Ｏコマンド及びＰ−Ｉ／Ｏコマンドをシーケンシャルアクセスになるように、連続的に並べる。そしてＳ２１１において、予め定められたタイミングで、アクセス及び診断対象のＨＤＤに順次発行する。Ｓ２１２において、ＲＡＩＤ制御部１２は、パトロール診断管理テーブル８６に対して、パトロール診断実施済の論理ブロックアドレスのフラグを１（実施済）に設定し、Ｓ２０３に戻る。
【００８６】
従って、本実施の形態によれば、データ再生処理と診断処理をシーケンシャルアクセスにして取得したデータを活用することで、記憶デバイスに対するパトロール診断の機会を増加させることが可能になる。
【００８７】
ゆえに、本実施の形態によれば、パトロール診断の機会が増えることにより記憶デバイスに対するエラーの早期発見を可能にして、エラーリカバリやリビルドの信頼性を高めて、ストレージ装置の信頼性を向上させることができる。
【００８８】
また、アクセス及び診断対象の記憶デバイスと冗長構成をとる記憶デバイスに対しても、図６で説明したように、図７に示す制御フローを適用して、同様にパトロール診断を実施する。従って、本実施の形態によれば、冗長構成の複数の記憶デバイスに対するパトロール診断の機会も増加させることができる。
【００８９】
ゆえに、本実施の形態によれば、冗長構成の複数の記憶デバイスに対するエラーの早期発見を可能にして、エラーリカバリやリビルドの信頼性を高めて、ストレージ装置の信頼性を向上させることができる。
【００９０】
本発明は上記実施の形態に限定されるものではない。矛盾のない限りにおいて、複数の実施の形態を組み合わせても構わない。上記実施形態は例示であり、本発明の特許請求の範囲に記載された技術的思想と実質的に同一な構成を有し、同様な作用効果を奏するものは、いかなるものであっても本発明の技術的範囲に包含される。
【符号の説明】
【００９１】
１    ホストコンピュータ
２    ストレージ装置
３    コントローラモジュール
４    コントローラ（ＣＰＵ）
５    ディスクエンクロージャ
６    チャネルアダプタ
７    デバイスアダプタ
８    メモリ
１２  ＲＡＩＤ制御部
１３  入出力制御部（Ｉ／Ｏ制御部）
１５ａ〜１５ｄ  記憶デバイス
８１  キャッシュメモリ
８２  バッファメモリ
８６  パトロール診断管理テーブル
８７  開始アドレス管理テーブル
【図１】
2012247817.tif 000003
【図２】
2012247817.tif 000004
【図３】
2012247817.tif 000005
【図４】
2012247817.tif 000006
【図５】
2012247817.tif 000007
【図６】
2012247817.tif 000008
【図７】
2012247817.tif 000009