(57)【要約】【課題】記憶装置に対するパトロール診断を効率的に短時間で行うことができる制御装置を提供する。【解決手段】制御装置は、記憶装置に対するパトロール診断を行う機能を有し、診断対象の記憶装置がＳＳＤの場合、ブロック単位でパトロール診断を行う診断部、を備える。また、制御装置は、ＳＳＤからブロックサイズの情報を取得する手段を備える。【選択図】図１
2020113132.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置に対するパトロール診断を行う機能を有し、診断対象の記憶装置がＳＳＤの場合、ブロック単位でパトロール診断を行う診断部、
を備える制御装置。
【請求項２】
前記記憶装置の構成情報を取得する構成情報取得部、をさらに備え、
前記構成情報取得部は、前記記憶装置がＳＳＤの場合、前記ＳＳＤの識別情報と、前記ＳＳＤを構成するブロックのブロックサイズと、前記ＳＳＤの容量の情報を取得し、
前記診断部は、前記構成情報取得部が取得した前記ブロックサイズに基づいて、ブロック単位で前記ＳＳＤのパトロール診断を行う、
請求項１に記載の制御装置。
【請求項３】
前記診断部は、前記記憶装置の識別情報に基づいて、ＳＳＤの識別情報とブロックサイズとを対応付けた所定のテーブルを参照し、前記識別情報に対応する前記ブロックサイズを読み出し、当該ブロックサイズに基づいて、ブロック単位で前記ＳＳＤのパトロール診断を行う、
請求項１又は請求項２に記載の制御装置。
【請求項４】
前記診断部は、前記ブロック内の少なくとも１つのアドレスに対して発行された診断用のコマンドに対する応答に基づいて当該ブロックに対する診断を行い、次の診断時には、他のブロック内の少なくとも１つのアドレスに基づいて、当該他のブロックに対する診断を行う、
請求項１から請求項３の何れか１項に記載の制御装置。
【請求項５】
前記記憶装置の識別情報と、前記記憶装置のタイプを示す情報と、前記タイプがＳＳＤの場合に当該ＳＳＤのブロックサイズの情報とを対応付けて記憶するドライブ情報記憶テーブル、
をさらに備え、
前記診断部は、診断対象の前記記憶装置の識別情報に基づいて、前記ドライブ情報記憶テーブルを参照し、
前記記憶装置がＳＳＤの場合には、診断対象のアドレスを前記ブロックサイズ分ずつ進めて前記記憶装置の診断を行う、
請求項１から請求項４の何れか１項に記載の制御装置。
【請求項６】
前記診断部は、診断対象の前記記憶装置の識別情報に基づいて、前記ドライブ情報記憶テーブルを参照し、
前記記憶装置がＨＤＤの場合には、診断対象のアドレスを１セクタずつ進めて前記診断を行う、
請求項５に記載の制御装置。
【請求項７】
複数の記憶装置と、
請求項１から請求項６の何れか１項に記載の制御装置と、
を備えるディスクアレイ装置。
【請求項８】
診断対象の記憶装置がＳＳＤの場合、ブロック単位で記憶装置の診断を行う、
パトロール診断方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置、ディスクアレイ装置及びパトロール診断方法に関する。
【背景技術】
【０００２】
ディスクアレイ装置では、搭載しているドライブの故障を検出するためにパトロール診断を実施している。パトロール診断では、一定周期で各ドライブに対してリードコマンドやベリファイコマンドを発行し、エラー応答が返却されるかどうかを確認する。パトロール診断は、ドライブの全領域のアドレスに対して実施する必要があるが、近年採用されているような大容量のドライブでは全領域のチェックが完了するまでに時間がかかるという問題がある。
【０００３】
このような問題に対し、特許文献１には、ドライブごとにパトロール診断を行うアドレスを発生させるアドレス発生回路を設け、通常は、アドレス発生回路が発生したアドレスに基づいて、アドレスをスキップしつつパトロール診断を行い、エラー発生時には１ずつアドレスを増加させてパトロール診断を行う方法が開示されている。この方法を用いると、短時間でパトロール診断を実行し、早期にエラーを検知することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特公昭６０−４２５０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の技術には、専用のアドレス発生回路が必要になるという課題がある。また、近年、データアクセスの高速性の観点から、ディスクアレイ装置を構成するドライブにＳＳＤ（Solid State Drive）を用いることが増えている。ＳＳＤに対するパトロール診断を効率的に短時間で行う方法が求められている。
【０００６】
そこでこの発明は、上述の課題を解決する制御装置、ディスクアレイ装置及びパトロール診断方法を提供することを目的としている。
【課題を解決するための手段】
【０００７】
本発明の一態様によれば、記憶装置に対するパトロール診断を行う機能を有し、診断対象の記憶装置がＳＳＤの場合、ブロック単位でパトロール診断を行う診断部、を備える制御装置である。
【０００８】
また、本発明の一態様によれば、複数の記憶装置と、上記の制御装置とを備えるディスクアレイ装置である。
【０００９】
また、本発明の他の一態様によれば、診断対象の記憶装置がＳＳＤの場合、ブロック単位で記憶装置の診断を行う、パトロール診断方法である。
【発明の効果】
【００１０】
本発明によれば、ＳＳＤに対するパトロール診断の実行時間を短縮し、早期に故障を検出することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態に係る情報処理システムの概略図である。
【図２】本発明の一実施形態によるドライブ情報記憶テーブルの一例を示す図である。
【図３】本発明の一実施形態によるＳＳＤ製品識別コードテーブルの一例を示す図である。
【図４】本発明の一実施形態によるドライブ構成情報の登録処理の一例を示すフローチャートである。
【図５】本発明の一実施形態によるパトロール診断処理の一例を示すフローチャートである。
【図６】ＳＳＤへのアクセスを説明する第１の図である。
【図７】ＳＳＤへのアクセスを説明する第２の図である。
【図８】本発明の一実施形態における制御装置の最小構成を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の一実施形態に係るＲＡＩＤ（Redundant Array of Inexpensive Disks）を構成する各ドライブへのパトロール診断について図面を参照して説明する。
図１は、本発明の一実施形態に係る情報処理システムの概略図である。
図示するように情報処理システム１００は、ホスト装置１ａ，１ｂ，〜１ｍ、ディスクアレイ装置１と、ドライブ群４０とを含む。ホスト装置１ａ〜１ｍは、ディスクアレイ装置１と接続されている。ディスクアレイ装置１は、ドライブ群４０と接続されている。ディスクアレイ装置１に接続されるホスト装置は１台であってもよい。ドライブ群４０は、複数のドライブ＃０〜＃ｎを含む。複数のドライブ＃０〜＃ｎは、例えば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などの記憶装置である。ドライブ＃０〜＃ｎは、ＲＡＩＤによる冗長化構成とされている。なお、ドライブ＃０〜＃ｎは、ディスクアレイ装置１の内部に搭載されていてもよい。
【００１３】
ホスト装置１ａ〜１ｍは、ＣＰＵ（central processing unit）等のプロセッサを備えたコンピュータである。ホスト装置１ａ〜１ｍでは、ＣＰＵによりＯＳ（operating system）が稼働している。ＯＳは、ディスクアレイ装置１が管理する論理ボリュームを対象とするＩＯ命令をディスクアレイ装置１へ出力する。
【００１４】
ディスクアレイ装置１は、ドライブ群４０のドライブ＃０〜＃ｎによってＲＡＩＤを構成して管理している。また、ディスクアレイ装置１は、ホスト装置１ａ等によるＩＯ命令に従い、論理ボリュームに対応するドライブへの書き込みや、ドライブからの読み出しを行う。ディスクアレイ装置１は、ホスト制御部１０と、キャッシュメモリ２０と、ドライブ制御部３０とを備えている。ホスト制御部１０は、ホスト装置１ａ〜１ｍから受信したコマンドを解析して実行する。キャッシュメモリ２０は、種々の情報を記憶する。例えば、キャッシュメモリ２０は、ドライブ群４０のドライブの構成情報を記憶する構成情報記憶領域２１と、ホスト装置１ａ〜１ｍとの間で送受信するデータを格納するデータキャッシュ領域２４を備えている。構成情報記憶領域２１には、ドライブ情報記憶テーブル２２と、ＳＳＤ製品識別コードテーブル２３とが格納される。これらのテーブルについては後述する。
【００１５】
ドライブ制御部３０は、ドライブ群４０を制御する。ドライブ制御部３０は、コマンド発行部３１と、診断部３３とを備える。コマンド発行部３１は、ドライブ群４０に含まれる各ドライブへコマンドを発行する。例えば、コマンド発行部３１は、パトロール診断時に、診断対象のアドレスへリードコマンドまたはベリファイコマンドを発行する。また、コマンド発行部３１は、ＳＳＤ情報取得インターフェース３２を備える。ＳＳＤ情報取得インターフェース３２は、ＳＳＤに対してＮＡＮＤチップの構成情報を取得するコマンドを発行する。診断部３３は、ドライブ群４０の各ドライブに対するパトロール診断を行う。パトロール診断とは、ＨＤＤやＳＤＤに故障が生じていないかどうかを検査する処理である。診断部３３は、検査すべきアドレスを決定し、そのアドレスに対して、コマンド発行部３１を介してリードコマンド等を発行する。診断部３３は、リードコマンドに対する応答を確認し、例えば、コマンドに対する応答があれば当該アドレスは正常で、応答が無ければ当該アドレスは故障していると判定する。診断部３３は、ドライブがＳＳＤの場合に、ブロック単位でパトロール診断を行う機能を有している。
【００１６】
ここで、図６、図７を用いてＳＳＤに対するパトロール診断について説明する。
図６、図７は、それぞれ、ＳＳＤへのアクセスを説明する第１の図、第２の図である。
ＳＳＤは、ＮＡＮＤチップと呼ばれるフラッシュメモリで構成された記憶素子を複数備えた記憶装置である。図示するように、記憶領域は、複数のブロックで構成されている。１ブロックの容量は、５１２ＫＢや１ＭＢである。また、各ブロックは、複数のセルによって構成されている。ＳＳＤでは、一度書き込んだデータについては、セル単位ではなく、ブロック単位で書き込みを行う。例えば、図６の例では、ＬＢＡ（Logical Block Addressing）１０００〜１４００のアドレスがブロック０と対応付けられている。そして、ホスト装置１ａ等が、ＬＢＡ１０００〜１４００の何れかのアドレスに書き込んだデータを更新等するときには、当該データが格納されたセルではなく、ブロック０全体のデータを書き換える。
【００１７】
また、一つのセルが劣化して読み書きができなくなった場合、通常は、ＳＳＤのコントローラがチップ内に持っている誤り訂正符号と別のセルのデータを用いて、読み出せなくなったデータを生成し、ブロック単位で別のブロックにデータをコピーして復旧する。しかし、ブロック内で複数のセルが劣化した場合、誤り訂正符号でも復旧できなくなる。すると、ブロック単位で読み書きができなくなり、同じブロック内の劣化していないセルに格納されたデータの読み書きもできなくなる。従って、ブロック内の任意のアドレスに対してデータを読み取れるかどうかをチェックすれば、ブロック内の別のアドレスに対してもチェックを実施したことになる。つまり、パトロール診断の対象ドライブがＳＳＤの場合、複数セルの劣化による復旧不能な故障は、ブロック内の任意のアドレスに対するチェックの実施により検出可能である。本実施形態では、この性質を利用して、診断部３３が、ＳＳＤに対してブロック単位でパトロール診断を行う。これにより、１アドレスずつ全アドレスを対象として診断を行う処理と比べ、パトロール診断の実行時間を短縮化することができる。例えば、図６の構成例であれば、ブロック０〜ブロックｎの各々に対し１回ずつ診断（ベリファイコマンド等を発行し、その応答を確認）すれば、診断部３３は、ＬＢＡ１０００〜１４００の範囲のアドレスが正常か異常かを診断することができる。
なお、ブロック単位での診断とは、各ブロックにつき１アドレスを対象とする診断を行い、それを全ブロック分繰り返すということである。
【００１８】
ところで、ＳＳＤのブロックのサイズは、ＮＡＮＤチップの容量や数に依存するため、ＳＳＤの製品や世代によって異なる。ブロック単位での診断を行うためには、診断対象ＳＳＤのブロックサイズの情報が必要である。そこで、コマンド発行部３１は、例えば、ドライブが接続されたときにＩＮＱＵＩＲＹコマンドを発行し、ドライブの製品識別コード、タイプ（ＨＤＤまたはＳＳＤ）、容量などの情報を取得する。また、タイプがＳＳＤの場合、コマンド発行部３１は、ＳＳＤ情報取得インターフェース３２を介して、ＳＳＤからＮＡＮＤチップのブロックサイズの情報を取得し、キャッシュメモリ２０の構成情報記憶領域２１が記憶するドライブ情報記憶テーブル２２に記録する。診断部３３は、ドライブ情報記憶テーブル２２に記録されたブロックサイズの情報を用いて、ＳＳＤに対するブロック単位のパトロール診断を実行する。
【００１９】
また、ＳＳＤ情報取得インターフェース３２を介して、ブロックサイズの情報が取得できない場合、診断部３３は、キャッシュメモリ２０の構成情報記憶領域２１が記憶するＳＳＤ製品識別コードテーブル２３を参照して、ＩＮＱＵＩＲＹコマンドにより得たＳＳＤドライブの製品識別コードに対応するブロックサイズの情報を取得する。診断部３３は、ＳＳＤ製品識別コードテーブル２３から読み出したブロックサイズの情報を用いて、ＳＳＤに対するブロック単位のパトロール診断を実行する。
【００２０】
次にドライブ情報記憶テーブル２２、ＳＳＤ製品識別コードテーブル２３について説明する。
図２は、本発明の一実施形態によるドライブ情報記憶テーブルの一例を示す図である。
図２に示すようにドライブ情報記憶テーブル２２には、ドライブごとに「製品識別コード」、「タイプ」、「容量」、「パトロール診断アドレス」、「ＮＡＮＤブロックサイズ」の各情報を格納するフィールドが設けられている。例えば、図２の例では、ドライブ＃１の製品識別コードは「ＨＤＤ８０００８」、タイプは「ＨＤＤ」、容量は「８ＴＢ」、パトロール診断アドレスは「４００００セクタ」、ＮＡＮＤブロックサイズは「無効」である。同様にドライブ＃２の製品識別コードは「ＳＳＤ１６０００Ａ」、タイプは「ＳＳＤ」、容量は「１６ＴＢ」、パトロール診断アドレスは「１００００セクタ」、ＮＡＮＤブロックサイズは「５１２ＫＢ」である。
【００２１】
コマンド発行部３１は、ドライブ＃１が接続されたときにＩＮＱＵＩＲＹコマンドをドライブ＃１へ発行し、製品識別コード（「ＨＤＤ８０００８」）、ドライブタイプの情報（「ＨＤＤ」）、ドライブ容量の情報（「８ＴＢ」）を取得し、取得した情報をドライブ＃１に対応付けてドライブ情報記憶テーブル２２へ登録する。ドライブタイプが「ＨＤＤ」の場合、「ＮＡＮＤブロックサイズ」フィールドには「無効」を登録する。また、「パトロール診断アドレス」フィールドには「０」を登録する。そして、パトロール診断を実行したときに、診断部３３が、次に診断すべきアドレスの値を「パトロール診断アドレス」フィールドに登録する。接続されたドライブがＳＳＤの場合も同様に、コマンド発行部３１は、ＩＮＱＵＩＲＹコマンドの発行により取得した情報をそのドライブと対応付けてドライブ情報記憶テーブル２２に格納する。ＳＳＤの場合、図２のドライブ＃２、＃３に例示するように「ＮＡＮＤブロックサイズ」フィールドに、ＳＳＤへの書き込み単位であるブロックのサイズが登録される。このとき、接続されたＳＳＤが、ＳＳＤ情報取得インターフェース３２に対応するＳＳＤであれば、コマンド発行部３１は、ＩＮＱＵＩＲＹコマンドの発行により、ブロックサイズを取得することができる。しかし、接続されたＳＳＤが、ＳＳＤ情報取得インターフェース３２に対応するＳＳＤでは無い場合、ＩＮＱＵＩＲＹコマンドの発行により、ブロックサイズを取得することができない可能性がある。このような場合、ドライブ制御部３０は、ＩＮＱＵＩＲＹコマンドの発行によって取得した製品識別コード（SSDのProduct Identification情報など）に基づいて、次に説明するＳＳＤ製品識別コードテーブル２３を参照し、製品識別コードに対応するブロックサイズの情報を取得する。そして、ドライブ制御部３０は、ＳＳＤ製品識別コードテーブル２３から取得したブロックサイズの情報を、ドライブ情報記憶テーブル２２の「ＮＡＮＤブロックサイズ」フィールドに登録する。
【００２２】
そして、診断部３３は、ドライブの接続時にドライブ情報記憶テーブル２２に格納された情報を用いて、パトロール診断を実行する。例えば、ドライブがＨＤＤの場合、診断部３３は、ドライブ情報記憶テーブル２２を参照して、診断対象のドライブの「パトロール診断アドレス」フィールドからアドレスの値を取得し、当該アドレスに対して診断を行う。診断後、診断部３３は、「パトロール診断アドレス」フィールドの値に診断したセクタサイズを加算する。加算後の値は、次回の診断アドレスを示す。
【００２３】
ドライブがＳＳＤの場合も同様に、診断部３３は、ドライブ情報記憶テーブル２２を参照して診断対象のドライブの「パトロール診断アドレス」フィールドからアドレスの値を取得し、当該アドレスに対して診断を行う。診断後、診断部３３は、「パトロール診断アドレス」フィールドの値にブロックサイズの値を加算する。図２のドライブ＃２であれば、今回の診断アドレス１００００に５１２を加算する。加算後の値は、次回の次の診断対象のブロックにおける診断用の１つのアドレスを示す。
【００２４】
次にＳＳＤ製品識別コードテーブル２３について説明する。
図３は、本発明の一実施形態によるＳＳＤ製品識別コードテーブルの一例を示す図である。
図３に例示するように、ＳＳＤ製品識別コードテーブル２３には、ＳＳＤの製品識別コードとＮＡＮＤブロックサイズ（ＳＳＤのブロックサイズ）とが対応付けて格納されている。これらの情報は、市場に提供されている、あるいは、提供されていた、様々な世代の様々なＳＳＤ製品についての識別情報とブロックサイズの情報が収集されて登録されたものである。ＳＳＤ製品識別コードテーブル２３は、予めキャッシュメモリ２０の構成情報記憶領域２１に格納されている。ＳＳＤ製品識別コードテーブル２３を参照すると、ＳＳＤの識別情報が分かっていれば、そのＳＳＤのブロックサイズの情報を取得することができる。従って、ＳＳＤのパトロール診断を行う際に、ブロック単位での診断を行うことができる。
【００２５】
次にドライブ情報記憶テーブル２２へＳＳＤのブロックサイズ等を登録する処理について説明する。
図４は、本発明の一実施形態によるドライブ構成情報の登録処理の一例を示すフローチャートである。
前提として、キャッシュメモリ２０には、ドライブ情報記憶テーブル２２とＳＳＤ製品識別コードテーブル２３が格納されているとする。
まず、ドライブ群４０に新しいドライブが挿入される。ドライブ制御部３０は、このドライブの挿入を検出する（ステップＳ１０１）。ドライブ制御部３０は、コマンド発行部３１へドライブの構成情報の取得を指示する。すると、コマンド発行部３１が、ＩＮＱＵＩＲＹコマンドを、挿入が検出されたドライブへ発行する（ステップＳ１０２）。挿入が検出されたドライブは、ＩＮＱＵＩＲＹコマンドに対して自ドライブの構成に関する情報を回答する。ドライブ制御部３０は、回答された情報の中から、製品識別コード、ドライブのタイプ、ドライブの容量の情報を、挿入が検出されたドライブ（例えば、ドライブの挿入位置を示すスロット番号）と対応付けてドライブ情報記憶テーブル２２に登録する。また、コマンド発行部３１は、ドライブ情報記憶テーブル２２の「パトロール診断アドレス」フィールドに「０」を登録する（ステップＳ１０３）。
【００２６】
次にドライブ制御部３０は、回答された情報のタイプがＳＳＤかどうかを判定する（ステップＳ１０４）。タイプがＳＳＤではない場合（ステップＳ１０４；Ｎｏ）、後述するステップＳ１１２の処理を行う。タイプがＳＳＤの場合（ステップＳ１０４；Ｙｅｓ）、ドライブ制御部３０は、コマンド発行部３１へＳＳＤのブロックサイズ等の取得を指示する。すると、コマンド発行部３１が、ＳＳＤ情報取得インターフェース３２を介して、所定の一般的なＳＳＤ情報取得コマンドを、挿入が検出されたドライブへ発行する（ステップＳ１０５）。ドライブ制御部３０は、このコマンドへの応答がエラー応答かどうかを判定する（ステップＳ１０６）。
【００２７】
ＳＳＤ情報取得コマンドに対し、エラーが応答された場合（ステップＳ１０６；Ｙｅｓ）、ドライブ制御部３０は、先にＩＮＱＵＩＲＹコマンドによって取得したドライブの製品識別コードをドライブ情報記憶テーブル２２から読み出す。ドライブ制御部３０は、ＳＳＤ製品識別コードテーブル２３を参照し（ステップＳ１０７）、読み出した製品識別コードに一致するデータが登録されているかどうか判定する（ステップＳ１０８）。
【００２８】
一致する製品識別コードが登録されている場合（ステップＳ１０８；Ｎｏ）、ドライブ制御部３０は、製品識別コードが一致したレコードの「ＮＡＮＤブロックサイズ」フィールドの値を読み出して（図３）、その値を、ドライブ情報記憶テーブル２２における対象となる製品識別コードが格納されたデータ（レコード）の「ＮＡＮＤブロックサイズ」フィールドに登録する（ステップＳ１１１）。
【００２９】
一致する製品識別コードが登録されていない場合（ステップＳ１０８；Ｙｅｓ）、ドライブ制御部３０は、ドライブ情報記憶テーブル２２における対象となる製品識別コードが格納されたレコードの「ＮＡＮＤブロックサイズ」フィールドに「無効」を登録する（ステップＳ１０９）。
【００３０】
また、ＳＳＤ情報取得コマンドに対し、エラーが応答されなかった場合（ステップＳ１０６；Ｎｏ）、ドライブ制御部３０は、ＳＳＤ情報取得コマンドによって取得したブロックサイズの情報を、ドライブ情報記憶テーブル２２における対象となる製品識別コードが格納されたレコードの「ＮＡＮＤブロックサイズ」フィールドに登録する（ステップＳ１１０）。
【００３１】
以上の処理により、ドライブ制御部３０は、挿入が検出されたドライブに関する構成情報のドライブ情報記憶テーブル２２への登録を完了する（ステップＳ１１２）。このようにドライブの挿入時にドライブの構成情報の登録を行うので、ドライブ情報記憶テーブル２２には、ドライブ群４０に含まれるドライブ＃０〜＃ｎに関する構成情報がすべて登録される。特にドライブがＳＳＤの場合、ドライブ情報記憶テーブル２２には、ブロックサイズが取得できなかった場合を除き、ブロックサイズの情報が格納されている。診断部３３は、このブロックサイズの情報を用いて、効率よくＳＳＤのパトロール診断を行う。
【００３２】
次に診断部３３によるパトロール診断処理の流れについて説明する。
図５は、本発明の一実施形態によるパトロール診断処理の一例を示すフローチャートである。
診断部３３は、例えば、所定の周期で所定回数だけドライブ＃０〜＃ｎに対するパトロール診断を行うものとする。図５のフローチャートは、そのうちの１回のパトロール診断処理を示している。例えば、診断部３３は、所定の周期で、以下に説明する処理を所定回数だけ行ってもよい。
パトロール診断を行うべきタイミングが到来すると、まず、診断部３３は、ドライブ情報記憶テーブル２２を参照し（ステップＳ２０１）、診断アドレスを取得する（ステップＳ２０２）。具体的には、診断部３３は、ドライブ情報記憶テーブル２２の診断対象ドライブにおける「パトロール診断アドレス」フィールドの値を読み出す。
【００３３】
次に診断部３３は、診断アドレスに対する診断を実施する（ステップＳ２０３）。具体的には、診断部３３は、コマンド発行部３１へ、診断アドレスに対する診断用コマンドの発行を指示する。コマンド発行部３１は、指示されたアドレスへリードコマンド又はベリファイコマンドを発行する。診断部３３は、発行されたコマンドに対する応答を取得して、診断アドレスが故障しているかどうかを判定する。例えば、診断部３３は、コマンドに対して所定時間内に応答がある場合、故障していないと判定する。また、例えば、診断部３３は、所定時間内に応答が無い場合やエラーコードが返ってきた場合、当該アドレスは故障していると判定する。
【００３４】
今回の診断アドレスに対する診断を終えると、診断部３３は、次回診断するアドレスを決定する。まず、診断部３３は、ドライブ情報記憶テーブル２２を参照し、ブロックサイズの情報を取得する。具体的には、診断部３３は、ドライブ情報記憶テーブル２２の診断対象ドライブにおける「ＮＡＮＤブロックサイズ」フィールドの値を参照する。診断部３３は、ブロックサイズの登録の有無を判定する（ステップＳ２０４）。ブロックサイズの登録が有る場合とは、ドライブがＳＳＤで、且つブロックサイズを取得できた場合である。ブロックサイズの登録が無い場合とは、ドライブがＨＤＤ、又は、ドライブがＳＳＤ且つブロックサイズが取得できなかった場合である。
【００３５】
（ＳＳＤでブロックサイズが判明している場合）
ブロックサイズの登録が有る場合（ステップＳ２０４；Ｙｅｓ）、診断部３３は、ブロックサイズ（「ＮＡＮＤブロックサイズ」フィールドの値）をドライブ情報記憶テーブル２２から、読み出して取得する（ステップＳ２０６）。診断部３３は、診断アドレスをブロックアドレス分進める（ステップＳ２０７）。例えば、診断部３３は、今回の診断アドレスに、取得したブロックサイズを加算する。加算後の値は、次のブロックに含まれるアドレスである。診断部３３は、加算後の値で「パトロール診断アドレス」フィールドの値を更新する。更新後の値は、次回の診断対象のアドレスである。
【００３６】
（ＨＤＤ、又は、ＳＳＤでブロックサイズ不明の場合）
ブロックサイズの登録が無い場合（ステップＳ２０４；Ｎｏ）、診断部３３は、診断アドレスを診断セクタ分進める（ステップＳ２０５）。例えば、診断部３３は、今回の診断アドレスに、今回診断を行ったセクタ分のアドレスを加算する。例えば、１セクタ分の診断を行ったのであれば、１セクタ分進めた次セクタのアドレスを算出する。診断部３３は、算出した値で「パトロール診断アドレス」フィールドの値を更新する。更新後の値は、次回の診断対象のアドレスである。
【００３７】
なお、ステップＳ２０５、Ｓ２０７の処理で、パトロール診断アドレスがドライブ情報記憶テーブル２２のドライブ容量（「容量」フィールドの値）よりも大きい値であれば、診断部３３は、「パトロール診断アドレス」フィールドに「０」を格納して、次回の診断は先頭から実施する。
【００３８】
以上の処理により、診断部３３は、今回の診断を完了する（ステップＳ２０８）。
このように診断部３３は、診断対象がＳＳＤでブロックサイズが判明している場合、ブロック単位で診断を行うことができるので、１回当たりの診断を短時間で行うことができる。また、ブロックの代表アドレスへ１回診断処理を行うだけでよいので、ＳＳＤの全領域に渡る診断についても短時間で完了することができる。また、診断対象がＳＳＤでブロックサイズが不明な場合や診断対象がＨＤＤの場合でも、一般的なパトロール診断と同様に診断を行うことができるので、ドライブ群４０に含まれるドライブのタイプに関わらず、パトロール診断を行うことができる。
【００３９】
複数のドライブを搭載し、それらをＲＡＩＤ構成で管理しているディスクアレイ装置に大容量ドライブが含まれる場合、全アドレスの診断に時間を要し、診断処理の完了前に故障が発生するというリスクがある。これに対し、本実施形態によれば、ドライブにＳＳＤが含まれている場合、当該ＳＳＤのＮＡＮＤチップの構成情報を取得し、記憶する領域を設ける。そして、パトロール診断を行うときには、ブロックごとに１つのアドレスの診断だけを行う処理を各ブロックに対して行う。これにより、ＳＳＤが大容量ドライブであっても短時間で効率的に全領域に対するパトロール診断を完了することができる。従って、大容量ドライブの場合に起こりがちな全アドレスの診断に時間を要し、診断処理の完了前に故障が発生するというリスクを低減し、早期な故障検知が可能になる。
【００４０】
図８は、本発明の一実施形態における制御装置の最小構成を示す図である。
図示するように制御装置２００は、少なくとも診断部２０１を備える。
診断部２０１は、ドライブ（記憶装置）に対してパトロール診断を行う機能を有している。診断部２０１は、対象の記憶装置がＳＳＤの場合、ブロック単位でパトロール診断を行う。例えば、ＳＳＤがブロック０〜ブロックｎで構成されている場合、診断部２０１は、ブロック０の任意のアドレスに対して診断を行い、ブロック０が故障しているかどうかを判定する。すると診断部２０１は、次にブロック１の任意のアドレスに対して１回の診断を行い、故障検知を行う。以下、同様に診断部２０１は、ブロック２〜ｎに対して、それぞれのブロックを代表するアドレスを任意に選択して、各ブロックに対して１回だけ診断を行う。これにより、ＳＳＤが大容量で、且つ、多数のＳＳＤを対象にパトロール診断を行わなければならない状況でも、ストレージの全領域について１アドレスずつ全アドレスに対して診断を行う場合と比較して大幅に診断時間を削減することができる。
図１の構成と対比すると、制御装置２００はドライブ制御部３０、診断部２０１は診断部３３に相当する。
【００４１】
その他、本発明の趣旨を逸脱しない範囲で、上記した実施の形態における構成要素を周知の構成要素に置き換えることは適宜可能である。また、この発明の技術範囲は上記の実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲において種々の変更を加えることが可能である。
例えば、ＳＳＤに対する診断は、各ブロックに対して少なくとも１回（１アドレス）行えばよいが、その回数は１回に限定されない。パトロール診断の実行時間を短縮できる効果が得られる回数であればよい。例えば、各ブロックに対して２〜３回の診断を行ってもよい。また、ブロックに対する診断を行うアドレスは、必ずしも、今回診断を行ったアドレスにブロックサイズを加算した値に限定されない。例えば、今回診断を行ったアドレスにブロックサイズを加算した値から１を引いた値であってもよい。また、ＩＮＱＵＩＲＹコマンドの発行によるドライブ情報記憶テーブル２２へのドライブの構成情報の登録は、ドライブ挿入時に限定されない。なお、コマンド発行部３１は、構成情報取得部の一例である。ドライブ＃０〜＃ｎは、記憶装置の一例である。
【符号の説明】
【００４２】
１００・・・情報処理システム
１ａ，１ｂ，〜１ｍ・・・ホスト装置
１・・・ディスクアレイ装置
１０・・・ホスト制御部
２０・・・キャッシュメモリ
２１・・・構成情報記憶領域
２２・・・ドライブ情報記憶テーブル
２３・・・ＳＳＤ製品識別コードテーブル
２４・・・データキャッシュ領域
３０・・・ドライブ制御部
３１・・・コマンド発行部
３２・・・ＳＳＤ情報取得インターフェース
３３、２０１・・・診断部
４０・・・ドライブ群
２００・・・制御装置
【図１】
2020113132.tif 000003
【図２】
2020113132.tif 000004
【図３】
2020113132.tif 000005
【図４】
2020113132.tif 000006
【図５】
2020113132.tif 000007
【図６】
2020113132.tif 000008
【図７】
2020113132.tif 000009
【図８】
2020113132.tif 000010