(57)【特許請求の範囲】
【請求項１】
ＲＡＩＤグループが設定された複数のハードディスクと、
前記ＲＡＩＤグループに１つ又は複数の使用領域を設定する使用領域設定部と、
前記ＲＡＩＤグループに設定された最も小さい使用領域のサイズよりも未使用領域のサイズが小さい場合、前記使用領域が設定されている領域のみを診断対象の領域と決定し、未使用領域のサイズが前記ＲＡＩＤグループに設定された最も小さい使用領域のサイズ以上の場合、前記ＲＡＩＤグループの全ての領域を診断対象の領域と決定する診断対象決定部と、
前記診断対象決定部が決定した診断対象の領域に対して周期的な診断を実行する診断実行部と
を備えたことを特徴とするディスクアレイ装置。
【請求項２】
前記診断対象決定部は、前記ＲＡＩＤグループにおける全ての領域に対する未使用領域の割合を求め、求めた割合が所定値より小さい場合、前記使用領域が設定されている領域のみを診断対象とし、求めた割合が所定値以上の場合、前記ＲＡＩＤグループの全ての領域を診断対象とすることを特徴とする請求項１に記載のディスクアレイ装置。 
【請求項３】
前記診断対象決定部は、前記ＲＡＩＤグループの未使用領域が所定サイズよりも小さい場合、前記使用領域が設定されている領域のみを診断対象とし、前記ＲＡＩＤグループの未使用領域が所定サイズ以上の場合、前記ＲＡＩＤグループの全ての領域を診断対象とすることを特徴とする請求項１に記載のディスクアレイ装置。 
【請求項４】
複数のハードディスクを用いて設定されたＲＡＩＤグループに１つ又は複数の使用領域を設定し、
前記ＲＡＩＤグループに設定された最も小さい使用領域のサイズよりも未使用領域のサイズが小さい場合、前記使用領域が設定されている領域のみを診断対象の領域と決定し、未使用領域のサイズが前記ＲＡＩＤグループに設定された最も小さい使用領域のサイズ以上の場合、前記ＲＡＩＤグループの全ての領域を診断対象の領域と決定し、
決定した診断対象の領域に対して周期的な診断を実行する
ことを特徴とするディスクアレイ装置制御方法。
【請求項５】
ＲＡＩＤグループが設定された複数のハードディスクと、
前記ＲＡＩＤグループに１つ又は複数の使用領域を設定する使用領域設定部と、
前記ＲＡＩＤグループにおける全ての領域に対する未使用領域の割合を求め、求めた割合が所定値より小さい場合、前記使用領域が設定されている領域のみを診断対象の領域と決定し、求めた割合が所定値以上の場合、前記ＲＡＩＤグループの全ての領域を診断対象の領域と決定する診断対象決定部と、
前記診断対象決定部が決定した診断対象の領域に対して周期的な診断を実行する診断実行部と
を備えたことを特徴とするディスクアレイ装置。
【請求項６】
ＲＡＩＤグループが設定された複数のハードディスクと、
前記ＲＡＩＤグループに１つ又は複数の使用領域を設定する使用領域設定部と、
前記ＲＡＩＤグループの未使用領域が所定サイズよりも小さい場合、前記使用領域が設定されている領域のみを診断対象の領域と決定し、前記ＲＡＩＤグループの未使用領域が所定サイズ以上の場合、前記ＲＡＩＤグループの全ての領域を診断対象の領域と決定する診断対象決定部と、
前記診断対象決定部が決定した診断対象の領域に対して周期的な診断を実行する診断実行部と
を備えたことを特徴とするディスクアレイ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクアレイ装置及びディスクアレイ装置制御方法に関する。
【背景技術】
【０００２】
ディスクアレイ装置では、搭載しているハードディスクの状態、特にヘッドや媒体面の状況を確認することが必要である。そこで、ディスクアレイ装置には、ハードディスクの状態をチェックする機能が搭載されている。
【０００３】
このハードディスクの状態をチェックする機能には、ある一定周期で各ディスク装置のデータを一定量ずつアクセスし、ディスクドライブの媒体チェック、ＲＡＩＤ（Redundant  Arrays  of  Inexpensive  Disks）グループのデータ整合性チェック等を行う機能がある。このような周期的なディスクチェックには、ライトチェック（Write  Check）と呼ばれる機能及びデータチェック（Data  Check）と呼ばれる機能を有するものがある。ライトチェックとは、主にヘッドを確認するためにWrite/Read/Compareを行う機能である。また、データチェックとは、主にディスク媒体面を確認するためにユーザの使用領域をベリファイさせる機能である。ここで、ベリファイとは、障害が発生している領域を検出し、その領域の正常なデータを正常な領域に移すことである。この２つの機能を有するディスクチェックを周期的に行う機能として、例えば「データパトロール」と呼ばれるものがある。
【０００４】
ここで、データチェックでベリファイを実施する領域として、次の２つの考え方が存在する。１つは、ボリュームを設定している領域のみに対してベリファイを行うという考え方である。また、もう１つは、ボリュームを設定している領域及びボリュームを設定していない未使用領域の両方ベリファイを行うという考え方である。そして、このような２つの考え方のうちどちらを選択してベリファイを実施する領域をどのように決定するかは、ディスクアレイ装置を使用する上で重要な事項である。このようにベリファイを実施する領域を決定する上で、ディスクアレイ装置の使用状態が重要な鍵を握っている。
【０００５】
以前は、１台のディスクアレイ装置を特定のユーザで占有使用する場合が多かった。そのため、以前はボリュームを出荷時に設定し、出荷後は変更しないという運用が一般的であった。そのため、以前は、ボリュームを設定している領域が適切なデータチェックの領域といえた。
【０００６】
これに対して、近年では、大規模なディスクアレイ装置の内部資源を分割して、複数のユーザがこれを同時に利用するという運用が増加してきている。そして、各ユーザがボリュームの作成や変更を自由に行う運用が増加してきている。そのため、最近では、ボリュームを設定している領域のみ又は未使用領域まで含めた領域、どちらか適切なデータチェックの領域かは一概には言えなくなってきている。これは、以前であれば、未使用領域とは今後も使用しない領域といえたが、近年においては、未使用領域とは現在は使っていないが将来使うかもしれない領域といえるからである。
【０００７】
この点、ボリュームを設定している領域のみについてデータチェックを行った場合、未使用領域に対して新規にボリュームを作成したときに対象領域に媒体の異常があったとしても事前に検知できず、ボリュームの作成作業が遅延してしまう。また、未使用領域まで含めた領域に対してデータチェックを常に行なっていては、当面使用する可能性の低い領域についてもデータチェックを行うことになり、非効率である。
【０００８】
このようなデータチェックの対象領域を決める技術として、ディスク等の使用率を計測してある使用率に達すると、未使用領域の検査を実施し、検査済みの領域を新たに使用する従来技術がある。また、演算装置の稼動状態を基に記憶装置の使用状態を求め、未使用領域の試験容量を決定する従来技術がある。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００９−１７６１０１号公報
【特許文献２】特開平０４−１６７０４６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、演算装置の稼動状態を基に未使用領域の試験容量を決定する従来技術では、未使用領域を決定するための処理の負荷が大きく、ディスクアレイ装置の本来の処理のＩＯ（Input  Output）性能に影響が出てしまう。また、ディスク等の使用率を基に未使用領域の検査を実施する従来技術では、その未使用領域が使用される直前の状態が把握できないため、経年劣化などに対応することができない。
【００１１】
開示の技術は、上記に鑑みてなされたものであって、未使用領域を使用する場合のディスク故障の発生を軽減するディスクアレイ装置及びディスクアレイ装置制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本願の開示するディスクアレイ装置及びディスクアレイ装置制御方法は、一つの態様において、ＲＡＩＤグループが設定された複数のハードディスクを有する。そして、使用領域設定部は、前記ＲＡＩＤグループに１つ又は複数の使用領域を設定する。診断対象決定部は、前記ＲＡＩＤグループに設定された最も小さい使用領域のサイズよりも未使用領域のサイズが小さい場合、前記使用領域が設定されている領域のみを診断対象の領域と決定し、未使用領域のサイズが前記ＲＡＩＤグループに設定された最も小さい使用領域のサイズ以上の場合、前記ＲＡＩＤグループの全ての領域を診断対象の領域と決定する。診断実行部は、前記診断対象決定部が決定した診断対象の領域に対して周期的な診断を実行する。
【発明の効果】
【００１３】
本願の開示するディスクアレイ装置及びディスクアレイ装置制御方法の一つの態様によれば、未使用領域を使用する場合のディスク故障の発生を軽減することができるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施例に係るディスクアレイ装置のブロック図である。
【図２】図２は、構成定義の概要を表す図である。
【図３】図３は、データチェックの対象領域決定の処理のフローチャートである。
【図４】図４は、データチェックの対象領域決定及びデータチェックの処理のフローチャートである。
【図５】図５は、実施例に係るディスクアレイ装置のコントロールモジュールのハードウェアの構成図である。
【発明を実施するための形態】
【００１５】
以下に、本願の開示するディスクアレイ装置及びディスクアレイ装置制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示するディスクアレイ装置及びディスクアレイ装置制御方法が限定されるものではない。
【実施例１】
【００１６】
図１は、実施例に係るディスクアレイ装置のブロック図である。図１に示すように、ディスクアレイ装置１は、ホスト２と接続されている。
【００１７】
ホスト２は、パーソナルコンピュータやサーバといった情報処理装置である。ホスト２は、ディスクアレイ装置１に対して、データの読み出し及び書き込みといった命令を出力する。そして、ホスト２は、読み出し命令への応答として、要求したデータをディスクアレイ装置１から取得する。
【００１８】
ディスクアレイ装置１は、コントロールモジュール（「ＣＭ（Control  Module）」とも呼ばれる。）１０及びハードディスク群１１を有している。
【００１９】
ハードディスク群１１は、複数のハードディスクを有している。ハードディスク群１１に含まれるハードディスクとは、例えば、ハードディスク１１０などである。そして、ハードディスク群１１は、複数のハードディスクを用いて構成された論理グループを有する。本実施例では、ハードディスク群１１は、ＲＡＩＤグループ１１１〜１１３という３つの論理グループを有している。また、グループ１１４は、各ＲＡＩＤグループのホットスペアとなっているディスクの集合である。
【００２０】
コントロールモジュール１０は、ＣＡ（Channel  Adaptor）制御部１０１、キャッシュ制御部１０２、ＲＡＩＤ制御部１０３、構成記憶部１０４、データチェック制御部１０５、ＤＡ（Device  Adaptor）制御部１０６を有している。
【００２１】
ＣＡ制御部１０１は、ホスト２とのインタフェースであるチャネルアダプタ（ＣＡ）を制御する。具体的には、ＣＡ制御部１０１は、ホスト２から送信されたデータや命令をチャネルアダプタにより受信する。例えば、ＣＡ制御部１０１は、書き込み対象のデータと共に書き込み命令をホスト２から受信する。また、ＣＡ制御部１０１は、データの読み出し命令をホスト２から受信する。その他にも、ＣＡ制御部１０１は、論理グループであるＲＡＩＤの構築命令などをホスト２から受信する。そして、ＣＡ制御部１０１は、受信したデータをキャッシュ制御部１０２へ出力する。また、ＣＡ制御部１０１は、受信した命令をＲＡＩＤ制御部１０３へ出力する。
【００２２】
また、ＣＡ制御部１０１は、データの読み出し命令をキャッシュ制御部１０２へ通知する。そして、ＣＡ制御部１０１は、指定したデータをキャッシュ制御部１０２から取得する。そして、ＣＡ制御部１０１は、取得したデータをホスト２へ出力する。
【００２３】
データの書込みの場合、キャッシュ制御部１０２は、データの入力をＣＡ制御部１０１から受ける。そして、キャッシュ制御部１０２は、ＣＡ制御部１０１から受信したデータをキャッシュに蓄積する。また、キャッシュ制御部１０２は、ＲＡＩＤ制御部１０３からデータの読み出し命令を受信する、そして、キャッシュ制御部１０２は、指定されたデータをＲＡＩＤ制御部１０３へ出力する。
【００２４】
また、データの読み出しの場合、キャッシュ制御部１０２は、データの入力をＲＡＩＤ制御部１０３から受ける。そして、キャッシュ制御部１０２は、ＲＡＩＤ制御部１０３から受信したデータをキャッシュに蓄積する。また、キャッシュ制御部１０２は、ＣＡ制御部１０１からデータの読み出し命令を受信する、そして、キャッシュ制御部１０２は、指定されたデータをＣＡ制御部１０１へ出力する。
【００２５】
構成記憶部１０４は、ハードディスクやメモリなどの記憶装置である。構成記憶部１０４は、構成定義１４１を記憶する。構成定義１４１は、ＲＡＩＤグループの構成情報や、ボリュームの設定情報及びデータチェックの管理情報などが含まれている。構成定義１４１については後で詳細に説明する。
【００２６】
ＲＡＩＤ制御部１０３は、ボリューム設定部１３１及びデータチェック実行部１３２を有する。
【００２７】
ＲＡＩＤ制御部１０３は、ホスト２からの命令をＣＡ制御部１０１から受ける。例えば、ＲＡＩＤ制御部１０３は、ＲＡＩＤの構築命令を受けた場合、構築の指示に従い指定されたディスクに対して指定されたＲＡＩＤレベルでＲＡＩＤを構築する。そして、ＲＡＩＤ制御部１０３は、構築したＲＡＩＤグループの情報を用いて構成定義１４１を生成し、生成した構成定義１４１を構成記憶部１０４に記憶させる。
【００２８】
また、ＲＡＩＤ制御部１０３がボリュームの設定命令をＣＡ制御部１０１から受けた場合、ボリューム設定部１３１は、設定の指示に従い、指定されたＲＡＩＤグループに対して指定されたサイズのボリュームを設定する。このボリュームが「使用領域」の一例にあたる。そして、ＲＡＩＤ制御部１０３は、ボリューム設定部１３１が設定したボリュームの情報をそのボリュームを設定したＲＡＩＤグループの構成定義１４１に登録する。このボリューム設定部１３１が、「使用領域設定部」の一例にあたる。
【００２９】
ここで、構成定義について説明する。図２は、構成定義の概要を表す図である。構成定義は、ＲＡＩＤグループ毎に生成される。図２の構成定義２０１は、ある１つのＲＡＩＤグループの構成定義を表している。ここでは、ＲＡＩＤグループがｎ個のハードディスクで構成されている場合を例に説明する。以下では、構成定義２０１に記載されたＲＡＩＤグループを記載ＲＡＩＤグループと呼ぶ。構成定義２０１は、ＲＡＩＤグループ番号、ＲＡＩＤグループサイズ及びＲＡＩＤ  Ｌｅｖｅｌが格納されている。ＲＡＩＤグループ番号は、記載ＲＡＩＤグループを一意に識別するための識別子である。ＲＡＩＤグループサイズは、記載ＲＡＩＤグループの全ての容量を表す。ＲＡＩＤ  Ｌｅｖｅｌは、記載ＲＡＩＤグループの構築に用いられたＲＡＩＤの種類である。
【００３０】
また、構成定義２０１は、ボリューム数及び各ボリュームの情報を有している。ここで、ボリューム数は、記載ＲＡＩＤグループに設定されたボリュームの数を表している。また、各ボリュームの情報は、図２では、ボリューム［１］〜［３］にあたる。ここでは、記載ＲＡＩＤグループに３つのボリュームを作成した場合を例に説明する。ボリュームの情報として記載されている内容の詳細としては、図２における各ボリュームの情報から延びる矢印の先に示された情報が記載されている。ボリューム情報２１１は、ボリューム［１］と表されているボリュームの情報である。また、ボリューム情報２１２は、ボリューム［２］と表されているボリュームの情報である。さらに、ボリューム情報２１３は、ボリューム［３］と表されているボリュームの情報である。ボリューム情報２１１〜２１３に示すように、ボリュームの情報としては、ボリューム番号、ボリュームサイズ及び開始ＲＡＩＤグループＬＢＡ（Logical  Block  Addressing）が含まれている。ボリューム番号とは、記載ＲＡＩＤにおいて各ボリュームを識別するための識別子である。例えば、ボリューム情報２１１には、ボリューム番号として＃００００が記載されており、ボリューム情報２１２には、ボリューム番号として＃０００１が記載されており、ボリューム情報２１３には、ボリューム番号として＃０００２が記載されている。ボリュームサイズは、各ボリュームの容量である。また、開始ＲＡＩＤグループＬＢＡは、各ボリュームの開始位置を示すアドレスである。
【００３１】
さらに、構成定義２０１は、Ｄｉｓｋ数及び各Ｄｉｓｋの情報を有している。Ｄｉｓｋ数は、記載ＲＡＩＤを構成するハードディスクの数である。また、各Ｄｉｓｋの情報は、図２では、Ｄｉｓｋ［１］〜［ｎ］にあたる。Ｄｉｓｋの情報として記載されている内容の詳細としては、図２における各Ｄｉｓｋの情報から延びる矢印の先に示された情報が記載されている。Ｄｉｓｋ情報２２１は、Ｄｉｓｋ［１］と表されているハードディスクの情報である。また、Ｄｉｓｋ情報２２２は、Ｄｉｓｋ［２］と表されているハードディスクの情報である。また、Ｄｉｓｋ情報２２３は、Ｄｉｓｋ［３］と表されているハードディスクの情報である。さらに、Ｄｉｓｋ情報２２４は、ボリューム［ｎ］と表されているハードディスクの情報である。Ｄｉｓｋ情報２２１〜２２４に示すように、Ｄｉｓｋの情報としては、Ｄｉｓｋ番号、Ｄｉｓｋサイズ及びチェック進捗が記載されている。Ｄｉｓｋ番号は、記載ＲＡＩＤグループを構成する各ハードディスクを一意に識別するための識別子である。例えば、Ｄｉｓｋ２２１には、Ｄｉｓｋ番号として＃００００が記載されており、Ｄｉｓｋ２２２には、Ｄｉｓｋ番号として＃０００１が記載されている。また、Ｄｉｓｋ２２３には、ボリューム番号として＃０００２が記載されており、Ｄｉｓｋ２２４には、ボリューム番号として＃０００ｎが記載されている。
【００３２】
図１に戻り、ＲＡＩＤ制御部１０３は、データの書き込み命令を受けた場合、書き込みの指定を受けたデータをキャッシュ制御部１０２から取得する。そして、ＲＡＩＤ制御部１０３は、指定されたＲＡＩＤグループの指定されたボリュームに対して取得したデータを書き込むようにＤＡ制御部１０６へ指示する。また、ＲＡＩＤ制御部１０３は、データの読み出し命令を受けた場合、指定されたＲＡＩＤグループの指定されたボリュームから指定されたデータを読み出すようにＤＡ制御部１０６へ指示する。そして、ＲＡＩＤ制御部１０３は、読み出しを指示したデータをＤＡ制御部１０６から取得する。その後、ＲＡＩＤ制御部１０３は、取得したデータをキャッシュ制御部１０２へ出力する。
【００３３】
また、データチェック実行部１３２は、例えば、読み出しや書き込みなどの処理を行っていないときを使用して、周期的に、ハードディスクの媒体面のエラーの有無を確認及びベリファイを行うデータチェックを実行する。このデータチェックは、「データパトロール」と呼ばれる場合がある。より詳しくは、データチェック実行部１３２は、１回のデータチェックを行うと、一定期間データチェック処理を停止し、その後前回データチェックが終了した位置からデータチェックを再開することを繰り返す。そこで、データチェックの動作について詳細に説明する。
【００３４】
データチェック実行部１３２は、データチェックを行うにあたり、データチェック制御部１０５に対して、データチェックの管理情報を問い合わせる。データチェックの管理情報には、データチェックの対象とするＲＡＩＤグループ、データチェックの開始位置、１回にデータチェックを行う量及びデータチェックを行う対象領域の情報が含まれる。データチェックを行う対象領域の情報とは、ボリュームが設定されている領域のみを対象領域とするか、ボリュームが設定されている領域に加えて未使用領域も対象領域とするかを示す情報である。また、１回にデータチェックを行う量は、本実施例では、例えば、１ＭＢ又は２ＭＢなどと指定されている。そして、データチェック実行部１３２は、問合せに対する応答としてデータチェックの管理情報の入力をデータチェック制御部１０５から受ける。
【００３５】
次に、データチェック実行部１３２は、データチェックの管理情報により指定されたＲＡＩＤグループにおける指定された開始位置からデータチェックを開始する。
【００３６】
データチェックの具体的な内容としては、次のような処理を行う。データチェック実行部１３２は、データチェックの対象領域から順次データを読み出す。そして、データチェック実行部１３２は、読み出しエラーが発生した場合には、読み出しエラーの発生したデータ領域に代わる予備領域を確保する。そして、データチェック実行部１３２は、ＲＡＩＤグループを構成するハードディスクを用いて読み出しエラーが発生した箇所のデータの再構築を行う。さらに、データチェック実行部１３２は、再構築したデータを確保した領域に記録する。その後、指定された量のデータチェックが完了すると、データチェック実行部１３２は、データチェックが完了した位置のアドレスをデータチェック制御部１０５へ通知する。
【００３７】
また、データチェック実行部１３２は、指定された対象領域に対するデータチェックを全て完了すると、次に行うデータチェックの管理情報を、データチェック制御部１０５に対して問い合わせる。そして、データチェック実行部１３２は、未使用領域も対象領域としている場合、ボリュームが設定されている領域のデータチェックに続いて、未使用領域のデータチェックを行う。これに対して、ボリュームが設定されている領域のみを対象領域としている場合、データチェック実行部１３２は、あるＲＡＩＤグループのボリュームが設定されている領域のデータチェックが終わると、次のＲＡＩＤグループのデータチェックに移る。データチェック実行部１３２は、全てのＲＡＩＤグループの指定された対象領域に対するデータチェックが完了すると、最初にデータチェックを行ったＲＡＩＤグループのデータチェックに戻ることをデータチェック制御部１０５から指示される。このデータチェック実行部１３２が、「診断実行部」の一例にあたる。
【００３８】
データチェック制御部１０５は、周期的に構成定義１４１から各ＲＡＩＤグループの全体の容量及び各ＲＡＩＤグループに設定された各ボリュームのサイズを取得する。さらに、データチェック制御部１０５は、各ＲＡＩＤグループの全体の容量からそのＲＡＩＤグループに設定されたボリュームのサイズの総計を減算して未使用領域のサイズを求める。そして、データチェック制御部１０５は、各ＲＡＩＤグループの全体の容量、各ＲＡＩＤグループに設定された各ボリュームのサイズ及び未使用領域を用いて、各ＲＡＩＤグループに対するデータチェックの対象領域を求める。その後、データチェック制御部１０５は、求めた各ＲＡＩＤグループに対するデータチェックの対象領域を構成定義１４１に登録する。ここで、データチェック制御部１０５が、データチェックの対象領域を決定し登録する周期は、データチェック実行部１３２が実際にデータチェックを行う周期とは無関係に決定してよい。例えば、データチェックの対象領域を決定し登録する周期は、ディスクアレイ装置の運用状況に合わせて、ボリュームの構成が変わったことを適切に反映できるように決定することが好ましい。
【００３９】
データチェック制御部１０５は、データチェックの管理情報の問合せをデータチェック実行部１３２から受ける。データチェック制御部１０５は、データチェックの対象とするＲＡＩＤグループ、データチェックの開始位置、１回にデータチェックを行う量及びデータチェックを行う対象領域の情報などを構成定義１４１から取得する。そして、データチェック制御部１０５は、取得した情報をデータチェックの管理情報としてデータチェック実行部１３２へ出力する。
【００４０】
さらに、データチェック制御部１０５は、指定したＲＡＩＤグループの対象領域に対するデータチェックが完了した場合、次に行うデータチェックの管理情報の問合せをデータチェック実行部１３２から受ける。そして、データチェック制御部１０５は、次にデータチェックを行うＲＡＩＤグループのデータチェックの管理情報を構成定義１４１から取得する。そして、データチェック制御部１０５は、取得した次にデータチェックを行うＲＡＩＤグループのデータチェックの管理情報をデータチェック実行部１３２へ出力する。ここで、データチェック制御部１０５は、例えば、各ＲＡＩＤグループのＲＡＩＤグループ番号の小さい順にデータチェックを行う対象としていく。さらに、全てのＲＡＩＤグループに対するデータチェックが完了した場合、データチェック制御部１０５は、ＲＡＩＤグループ番号が最小のＲＡＩＤグループに戻り、再度ＲＡＩＤグループ番号の小さい順にデータチェックの対象としていく。
【００４１】
また、データチェック制御部１０５は、１回のデータチェックが終わる毎に、データチェックが完了した位置のアドレスの入力をデータチェック実行部１３２から受ける。そして、データチェック制御部１０５は、受信したアドレスを構成定義１４１の進捗の欄に書き込む。例えば、図２の構成定義２０１で表されるＲＡＩＤグループのＤｉｓｋ情報２２１で表されるハードディスクの特定の位置までデータチェックが終わった場合、データチェック制御部１０５は、そのハードディスクのデータチェックが完了したアドレスを受信する。そして、データチェック制御部１０５は、構成定義２０１のＤｉｓｋ情報２２１の進捗の欄に受信したアドレスを登録する。これにより、データチェック制御部１０５は、各ハードディスクの進捗の欄を検索することで、次のデータチェックの開始位置を取得することができる。このデータチェック制御部１０５が、「診断対象決定部」の一例にあたる。
【００４２】
ここで、本実施例では、データチェックの管理情報を一元管理するため、データチェック実行部１３２は、データチェックを開始する度及び対象領域のデータチェックが完了した場合にデータチェック制御部１０５からデータチェックの管理情報を取得している。しかし、これは他の方法でもよく、例えば、データチェック実行部１３２は、データチェックを行う際に直接構成定義１４１から必要な情報を取得するようにしてもよい。
【００４３】
ここで、図３を参照して、データチェック制御部１０５によるデータチェックの対象領域決定の流れについて説明する。図３は、データチェックの対象領域決定の処理のフローチャートである。ここでは、あるＲＡＩＤグループに対するデータチェック対象領域決定について説明する。以下では、ここでのデータチェックの対象領域決定の対象とするＲＡＩＤグループを「対象ＲＡＩＤグループ」と呼ぶ。
【００４４】
データチェック制御部１０５は、構成定義１４１から取得した対象ＲＡＩＤグループに設定された各ボリュームのボリュームサイズの中から最小のボリュームサイズを取得するする（ステップＳ１）。
【００４５】
データチェック制御部１０５は、取得した最小ボリュームサイズと未使用領域のサイズとを比較する（ステップＳ２）。そして、データチェック制御部１０５は、未使用領域のサイズが最小ボリュームサイズよりも大きいか否かを判定する（ステップＳ３）。未使用領域のサイズが最小ボリュームサイズよりも大きい場合（ステップＳ３：肯定）、データチェック制御部１０５は、対象ＲＡＩＤグループにおけるデータチェックの対象領域を、ボリュームが設定されている領域及び未使用領域の両方と決定する（ステップＳ８）。これは、未使用領域のサイズが最小のボリュームサイズよりも大きい場合、未使用領域にさらにボリュームを登録する可能性が高い。そこで、予め未使用領域のデータチェックを行っておき、いつ未使用領域にボリュームが設定されても障害の発生を回避することができるようにするためである。
【００４６】
これに対して、未使用領域のサイズが最小ボリュームサイズ以下の場合（ステップＳ３：否定）、データチェック制御部１０５は、対象ＲＡＩＤグループに設定されたボリュームの数が予め決められた閾値Ｎよりも大きいか否かを判定する（ステップＳ４）。対象ＲＡＩＤグループに設定された数が小さければ（ステップＳ４：否定）、データチェック制御部１０５は、対象ＲＡＩＤグループにおけるデータチェックの対象領域を、ボリュームが設定されている領域のみとする（ステップＳ９）。これは、設定されたボリューム数が多い場合には、統計数が多くなるため、ボリュームサイズを用いた判断によって未使用領域の使用の予想が高い確度で判定できる。そして、未使用領域のサイズが最小のボリュームサイズ以下の場合、未使用領域にさらにボリュームを登録する可能性は低い。そこで、迅速なデータチェック及び負荷の軽減のため、未使用領域はデータチェックの対象とせずに、ボリュームが既に設定されている領域のみをデータチェックの対象としている。
【００４７】
これに対して、設定されたボリュームが少ない場合（ステップＳ４：肯定）、ボリュームサイズを用いた判断だけでは、未使用領域の使用不使用の予測の確度が下がるため、より正確を期すために、他の判断基準も用いる。そこで、データチェック制御部１０５は、対象ＲＡＩＤグループの全容量に対する未使用領域の比率を求める（ステップＳ５）。
【００４８】
次に、データチェック制御部１０５は、求めた未使用領域の比率が予め決められた閾値ｘ以上か否かを判定する（ステップＳ６）。未使用領域の比率が予め決められた閾値ｘより小さい場合（ステップＳ６：否定）、データチェック制御部１０５は、対象ＲＡＩＤグループにおけるデータチェックの対象領域を、ボリュームが設定されている領域のみとする（ステップＳ９）。例えば、閾値ｘを０．１とすることが考えられる。その場合、未使用領域の比率が０．１未満であれば、データチェック制御部１０５は、対象ＲＡＩＤグループにおけるデータチェックの対象領域を、ボリュームが設定されている領域のみとする。これは、未使用領域の割合がＲＡＩＤグループ全体に対してある程度小さければ、未使用領域を使用する可能性は低いと考えられるからである。ここで、本実施例では、一例として、ｘ＝０．１として説明したが、閾値ｘは他の値でもよく、運用状態に合わせて、全体から見て未使用領域の比率がその値より小さくなればほぼ未使用領域を使うことがないという値に決定されることが好ましい。
【００４９】
これに対して、未使用領域の比率が予め決められた閾値ｘ以上の場合（ステップＳ６：肯定）、データチェック制御部１０５は、未使用領域のサイズが予め決められた閾値ｙ以上か否かを判定する（ステップＳ７）。未使用領域のサイズが予め決められた閾値ｙより小さい場合（ステップＳ７：否定）、対象ＲＡＩＤグループにおけるデータチェックの対象領域を、ボリュームが設定されている領域のみとする（ステップＳ９）。例えば、閾値ｙを１０ＧＢとすることが考えられる。その場合、未使用領域のサイズが１０ＧＢより小さければ、データチェック制御部１０５は、対象ＲＡＩＤグループにおけるデータチェックの対象領域を、ボリュームが設定されている領域のみとする。これは、未使用領域のサイズがある程度小さければ、未使用領域を使用する可能性は低いと考えられるからである。ここで、本実施例では、一例として、ｙ＝１０ＧＢとして説明したが、閾値ｙは他の値でもよく、運用状態に合わせて、そのサイズより小さくなればボリュームを割り当てることは考えにくいという値に決定されることが好ましい。
【００５０】
ＤＡ制御部１０６は、データを書き込むＲＡＩＤグループ及びボリュームの指定、並びに書き込むデータの入力をＲＡＩＤ制御部１０３から受ける。ＤＡ制御部１０６は、指定されたＲＡＩＤグループの指定されたボリュームに対して受信したデータを書き込む。
【００５１】
また、ＤＡ制御部１０６は、データを読み出す先のＲＡＩＤグループ及びボリュームの指定をＲＡＩＤ制御部１０３から受ける。ＤＡ制御部１０６は、指定されたＲＡＩＤグループの指定されたボリュームの中からデータを読み出す。そして、ＤＡ制御部１０６は、読み出したデータをＲＡＩＤ制御部１０６へ出力する。
【００５２】
次に、図４を参照して、データチェックの対象領域決定及びデータチェックの処理の流れを説明する。図４は、データチェックの対象領域決定及びデータチェックの処理のフローチャートである。図４の紙面に向かって左側のフローはデータチェック制御部１０５によるデータチェックの対象領域の決定の処理を示しており、紙面に向かって右側のフローはデータチェック実行部１３２によるデータチェックの処理を示している。また、図４の点線矢印は、データチェック制御部１０５からデータチェック実行部１３２へのデータチェックの管理情報の送信を表している。
【００５３】
データチェック制御部１０５は、一定周期で繰り返されるデータチェックの対象領域決定のタイミングが到来したか否かを判定する（ステップＳ１０１）。
【００５４】
タイミングが到来している場合（ステップＳ１０１：肯定）、データチェック制御部１０５は、データチェックの対象領域の決定を行う（ステップＳ１０２）。このステップＳ１０２では、具体的には、データチェック制御部１０５は、図３のフローチャートに示した処理を行う。これに対して、タイミングが到来していない場合（ステップＳ１０１：否定）、データチェック制御部１０５は、ステップＳ１０３に進む。
【００５５】
データチェック制御部１０５は、ディスクアレイ装置が停止したか否かを判定する（ステップＳ１０３）。ディスクアレイ装置が停止していない場合（ステップＳ１０３：否定）、データチェック制御部１０５は、ステップＳ１０１へ戻る。これに対して、ディスクアレイ装置が停止した場合（ステップＳ１０３：肯定）、データチェック制御部１０５は、データチェックの対象領域決定の処理を終了する。
【００５６】
データチェック実行部１３２は、一定周期で繰り返されるデータチェックのタイミングが到来したか否かを判定する（ステップＳ２０１）。
【００５７】
タイミングが到来している場合（ステップＳ２０１：肯定）、データチェック実行部１３２は、データチェックの管理情報をデータチェック制御部１０５から取得する（ステップＳ２０２）。そして、データチェック実行部１３２は、受信したデータチェックの管理情報で指定された対象領域において、指定されたＲＡＩＤグループのボリュームに対して指定された量のデータチェックを行う（ステップＳ２０３）。これに対して、タイミングが到来していない場合（ステップＳ２０１：否定）、データチェック実行部１３２は、ステップＳ２０４に進む。
【００５８】
データチェック実行部１３２は、ディスクアレイ装置が停止したか否かを判定する（ステップＳ２０４）。ディスクアレイ装置が停止していない場合（ステップＳ２０４：否定）、データチェック実行部１３２は、ステップＳ２０１へ戻る。これに対して、ディスクアレイ装置が停止した場合（ステップＳ２０４：肯定）、データチェック実行部１３２は、データチェックの処理を終了する。
【００５９】
〔ハードウェア構成〕
次に、図５を参照して、本実施例に係るディスクアレイ装置のコントロールモジュールのハードウェア構成について説明する。図５は、実施例に係るディスクアレイ装置のコントロールモジュールのハードウェアの構成図である。ここでは、ディスクアレイ装置がコントロールモジュール３０１とコントロールモジュール３０２とを有しており、コントロールモジュール３０１とコントロールモジュール３０２が接続されている場合で説明する。また、コントロールモジュール３０１とコントロールモジュール３０２とは、同じ構成を有するため、コントロールモジュール３０１を例に説明する。
【００６０】
コントロールモジュール（ＣＭ）３０１は、チャネルアダプタ（ＣＡ）３１１及び３１２、ＣＰＵ（Central  Processing  Unit）３１３、メモリ３１４、キャッシュ３１５、並びにデバイスアダプタ（ＤＡ）３１６及び３１７を有している。
【００６１】
チャネルアダプタ３１１及び３１２、メモリ３１４、キャッシュ３１５、並びにデバイスアダプタ３１６及び３１７は、ＣＰＵ３１３にバスで接続されている。また、コントロールモジュール３０１のバスは、コントロールモジュール３０２のバスに接続されている。
【００６２】
チャネルアダプタ３１１及び３１２は、図１に示すようなホスト（不図示）に接続されている。チャネルアダプタ３１１及び３１２、並びにＣＰＵ３１３によって、例えば、図１に示したＣＡ制御部１０１の機能が実現される。
【００６３】
また、デバイスアダプタ３１６及び３１７は、図１に示すようなハードディスク群（不図示）に接続されている。キャッシュ３１５及びＣＰＵ３１３によって、例えば、図１に示したキャッシュ制御部１０２の機能が実現される。
【００６４】
また、デバイスアダプタ３１６及び３１７、並びにＣＰＵ３１３によって、例えば、図１に示したＤＡ制御部１０６の機能が実現される。
【００６５】
また、メモリ３１４は、図１に示す構成記憶部１０４の機能を実現する。
【００６６】
さらに、ＣＰＵ３１３及びメモリ３１４は、例えば、図１に示した、ＲＡＩＤ制御部１０３及びデータチェック制御部１０５などの機能を実現する。例えば、メモリ３１４は、図１に例示したＲＡＩＤ制御部１０３、ボリューム設定部１３１、データチェック実行部１３２及びデータチェック制御部１０５などの各部による処理を実現する各種プログラムを記憶している。そして、ＣＰＵ３１３は、これら各種プログラムをメモリ３１４から読み出して展開することで、上述した機能を実現するプロセスを生成する。そして、ＣＰＵ３１３は、生成したプロセスに基づいて上述した各機能を実行する。
【００６７】
以上に説明したように、本実施例に係るディスクアレイ装置は、周期的にデータチェックの対象領域を決定し、その決定した対象領域に対して周期的にデータチェックを行う。さらに、本実施例に係るディスクアレイ装置は、未使用領域のサイズとボリュームサイズの関係、未使用領域の割合及び未使用領域のサイズなどを用いてデータチェックの対象領域を決定する。このような基準を用いることで、未使用領域が使用される可能性を高い確度で判定することができる。さらに、データチェックの対象領域として決定した領域に対して、周期的にデータチェックを行うことで、いつ未使用領域が使用されてもデータチェックを行ってからの期間を短く抑えることができる。そのため、未使用領域を使用開始する場合のディスク故障の発生を軽減することができる。
【００６８】
ここで、本実施例では、より高い確度で未使用領域の使用可能性を判定するため、未使用領域のサイズとボリュームサイズの関係による判定、未使用領域の割合による判定、未使用領域のサイズによる判定という３つの判定を組み合わせて判定を行なっている。ただし、未使用領域の使用可能性の判定に求められる正確さに応じて、判定方法を決定してもよい。例えば、それほど正確な判定を求めずに、判定処理の負荷を軽減することが望ましければ、いずれか一つの判定のみを用いてもよい。また、判定の正確性及び判定処理の負荷のバランスをとる場合には、いずれか二つの判定を組み合わせて判定を行なってもよい。
【符号の説明】
【００６９】
１  ディスクアレイ装置
２  ホスト
１０  コントロールモジュール（ＣＭ）
１１  ハードディスク群
１０１  ＣＡ制御部
１０２  キャッシュ制御部
１０３  ＲＡＩＤ制御部
１０４  構成記憶部
１０５  データチェック制御部
１０６  ＤＡ制御部
１１０  ハードディスク
１１１〜１１３  ＲＡＩＤグループ
１３１  ボリューム設定部
１３２  データチェック実行部
１４１  構成定義
【図１】
0005821445.tif 000002
【図２】
0005821445.tif 000003
【図３】
0005821445.tif 000004
【図４】
0005821445.tif 000005
【図５】
0005821445.tif 000006