ストレージシステム、ストレージ制御装置およびストレージ制御方法
【課題】記憶装置の状況に応じてリビルド処理を実行できるようにする。
【解決手段】制御装置20は、記録するデータが異なる記憶装置に冗長化されるように記憶装置11〜14を管理する。エラー監視部21は、記憶装置11〜14のそれぞれにおけるエラーの発生を監視し、エラーの発生状況を示す情報を記憶装置ごとにエラー情報記憶部22に登録する。リビルド制御部23は、記憶装置14の使用を中止したとき、エラー情報記憶部22に登録された情報を参照し、記憶装置11〜13における過去のエラーの発生状況に基づいてリビルド処理の実行タイミングを決定する。
【解決手段】制御装置20は、記録するデータが異なる記憶装置に冗長化されるように記憶装置11〜14を管理する。エラー監視部21は、記憶装置11〜14のそれぞれにおけるエラーの発生を監視し、エラーの発生状況を示す情報を記憶装置ごとにエラー情報記憶部22に登録する。リビルド制御部23は、記憶装置14の使用を中止したとき、エラー情報記憶部22に登録された情報を参照し、記憶装置11〜13における過去のエラーの発生状況に基づいてリビルド処理の実行タイミングを決定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージシステム、ストレージ制御装置およびストレージ制御方法に関する。
【背景技術】
【0002】
近年、HDD(Hard Disk Drive)などの記憶装置を複数用いたストレージシステムが広く使用されている。このようなストレージシステムでは、一般的に、RAID(Redundant Arrays of Inexpensive Disks)技術を用いて、データが2つ以上の記憶装置に冗長化されるような記録制御が行われることで、記録されるデータの安全性が高められている。
【0003】
また、データが冗長化されたストレージシステムにおいて、故障などによって1つの記憶装置の使用が中止されると、使用が中止された記憶装置に記憶されていたデータが再構築されて、他の記憶装置に格納される。このような処理は、一般に「リビルド処理」と呼ばれる。多くのストレージシステムでは、ホットスペア(Hot Spare)と呼ばれる予備用記憶装置が用意されており、このホットスペアを用いてリビルド処理が行われることが多い。記憶装置が故障したとき、ホットスペアをデータ格納先としたリビルド処理が即座に行われることで、データが冗長化された状態に短時間で戻し、データの安全性を短時間で回復させることができる。
【0004】
なお、予備用記憶装置を用いてデータの安全性を回復させる技術としては、例えば、エラー発生回数などを基に、故障発生の可能性が高い記憶装置を予測し、その記憶装置のデータを予備用記憶装置にあらかじめコピーしておく方法がある。
【0005】
また、記憶装置の故障発生時の制御例としては、記憶装置での障害発生時に、冗長度に余裕がない場合には、通常の読み書き処理より障害回復処理を優先するように制御するシステムがある。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2010−128773号公報
【特許文献2】特開2005−100259号公報
【特許文献3】特開平5−314674号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
リビルド処理では、使用を継続する残りの記憶装置の少なくとも1つからのデータ読み出しや、他の記憶装置へのデータ書き込みが行われる。このため、リビルド処理の実行中には、使用を継続する残りの記憶装置でのアクセス処理負荷や、記憶装置でのアクセスを制御する制御装置の処理負荷が高くなり、ホスト装置からの要求に応じたデータのアクセス速度が低下してしまう可能性がある。
【0008】
上記のように、データが冗長化された状態で、記憶装置の使用を中止したとき、できるだけ早くリビルド処理が行われることで、データの冗長性を短時間で回復させることができる。しかしながら、記憶装置の使用中止から短時間でリビルド処理の実行を開始すると、記憶装置の使用中止後の所定期間において、ホスト装置からの要求に応じたデータのアクセス速度が低下してしまう可能性がある。
【0009】
本発明はこのような課題に鑑みてなされたものであり、記憶装置の状況に応じてリビルド処理を実行できるようにしたストレージシステム、ストレージ制御装置およびストレージ制御方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するために、複数の記憶装置と、複数の記憶装置に記録するデータが異なる記憶装置に冗長化されるように複数の記憶装置に対するデータ記録を制御する制御装置とを備えたストレージシステムが提供される。このストレージシステムにおいて、制御装置は、エラー監視部と、リビルド制御部とを有する。エラー監視部は、複数の記憶装置のそれぞれにおけるエラーの発生を監視し、エラーの発生状況を示す情報を記憶装置ごとにエラー情報記憶部に登録する。リビルド制御部は、複数の記憶装置のうち一の記憶装置の使用を中止したとき、エラー情報記憶部に登録された情報を参照し、上記の複数の記憶装置のうち上記の一の記憶装置以外の記憶装置における過去のエラーの発生状況に基づいて、上記の一の記憶装置に記憶されていたデータを生成して他の記憶装置に格納するリビルド処理の実行タイミングを決定する。
【0011】
また、上記目的を達成するために、上記の制御装置と同様の処理を実行するストレージ制御装置およびストレージ制御方法が提供される。
【発明の効果】
【0012】
上記のストレージシステム、ストレージ制御装置およびストレージ制御方法によれば、記憶装置におけるエラー発生状況に応じてリビルド処理の実行タイミングを決定できるようになる。
【図面の簡単な説明】
【0013】
【図1】第1の実施の形態に係るストレージシステムの構成例を示す図である。
【図2】第2の実施の形態に係るストレージシステムの全体構成例を示す図である。
【図3】CMのハードウェア構成例を示す図である。
【図4】CMの処理機能の構成例を示すブロック図である。
【図5】ディスク管理テーブルに登録される情報の例を示す図である。
【図6】RAID管理テーブルに登録される情報の例を示す図である。
【図7】エラー点数テーブルに登録される情報の例を示す図である。
【図8】ホットスペアに対するリビルド処理およびコピーバック処理の実行手順例を示す図である。
【図9】図8の処理実行時におけるディスク管理テーブルおよびRAID管理テーブルの遷移例を示す図(その1)である。
【図10】図8の処理実行時におけるディスク管理テーブルおよびRAID管理テーブルの遷移例を示す図(その2)である。
【図11】図8の処理実行時におけるディスク管理テーブルおよびRAID管理テーブルの遷移例を示す図(その3)である。
【図12】交換されたHDDに対するリビルド処理の実行手順例を示す図である。
【図13】図12の処理実行時におけるディスク管理テーブルおよびRAID管理テーブルの遷移例を示す図である。
【図14】エラー監視部によるパトロール処理手順の例を示すフローチャートである。
【図15】リビルド制御部によるリビルド制御処理手順の例を示すフローチャートである。
【発明を実施するための形態】
【0014】
以下、実施の形態について図面を参照して詳細に説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るストレージシステムの構成例を示す図である。
【0015】
図1に示すストレージシステム1は、複数の記憶装置11〜15と、制御装置20とを備える。記憶装置11〜15のそれぞれは、例えば、HDD、SSD(Solid State Drive)などの不揮発性記憶装置である。なお、ストレージシステム1が備える記憶装置の数は、2以上の任意の数であればよい。
【0016】
制御装置20は、図示しないホスト装置からの、ストレージシステム1に含まれる記憶装置に記録されたデータに対するアクセスを制御する。また、制御装置20は、ストレージシステム1に含まれる2以上の所定数の記憶装置を用いて、これら所定数の記憶装置に記録するデータが複数の記憶装置に冗長化されるように管理する。
【0017】
ここで、データが複数の記憶装置に冗長化されるように管理するための記憶装置の単位を、「RAIDグループ」と呼ぶ。図1の例では、4つの記憶装置11〜14が1つのRAIDグループに属するものとする。制御装置20は、例えば、RAID−1,4,5のいずれかを用いて、記憶装置11〜14においてデータが2重に冗長化されるように管理する。あるいは、制御装置20は、RAID−6を用いて、記憶装置11〜14においてデータが3重に冗長化されるように管理してもよい。
【0018】
制御装置20は、エラー監視部21、エラー情報記憶部22およびリビルド制御部23を備える。エラー監視部21およびリビルド制御部23の処理は、例えば、制御装置20が備える図示しないCPU(Central Processing Unit)が所定のプログラムを実行することで実現される。エラー情報記憶部22は、例えば、SSDなどの各種の不揮発性記憶装置によって実現される。なお、エラー情報記憶部22は、制御装置20の外部に設けられていてもよい。
【0019】
エラー監視部21は、少なくとも、RAIDグループに属する記憶装置11〜14におけるエラーの発生を監視し、エラーの発生状況を示す情報を記憶装置ごとにエラー情報記憶部22に登録する。エラーの発生状況を示す情報としては、例えば、記憶装置ごとのエラー発生履歴、エラーの発生状況に応じて加算される記憶装置ごとのエラー点数などがある。
【0020】
なお、エラー監視部21は、例えば、記憶装置11〜14に対して定期的にアクセスすることで、エラーが発生したか否かを検査する。また、エラー監視部21は、例えば、ホスト装置からのアクセス要求に応じて制御装置20が記憶装置11〜14へアクセスしたときにエラーが検知された場合に、エラーが発生したことをエラー情報記憶部22に登録してもよい。
【0021】
リビルド制御部23は、RAIDグループに属する記憶装置11〜14のうち、いずれかの記憶装置の使用を中止したとき、使用を中止した記憶装置に記憶されていたデータを生成して他の記憶装置に格納する「リビルド処理」を実行する。
【0022】
ここで、記憶装置の使用を中止する場合とは、例えば、故障により記憶装置にアクセスできなくなった場合、エラー監視部21によって検知された、記憶装置におけるエラーの発生回数が所定数に達した場合、交換などを目的として記憶装置を取り外す場合などである。
【0023】
以下、例として、図1に示すように、記憶装置14の使用を中止するものとして説明する。
また、リビルド制御部23は、リビルド処理において、RAIDグループに属する記憶装置11〜14のうち、使用を中止した記憶装置14以外の少なくとも1つの記憶装置に記憶されたデータを基に、記憶装置14に記憶されていたデータを生成する。例えば、記憶装置11〜14を用いてRAID−5による書き込み制御が行われているものとすると、リビルド制御部23は、記憶装置11〜13に記憶されたデータを基に、記憶装置14に記憶されていたデータを計算によって復元する。また、記憶装置11〜14を用いてデータがミラーリングされている場合、リビルド制御部23は、記憶装置11〜13のいずれかから、記憶装置14に記憶されているデータに対応するミラーデータを読み出す。
【0024】
なお、リビルド処理におけるデータの格納先は、任意に決定可能である。例えば、記憶装置15が、ストレージシステム1にあらかじめ用意された予備用記憶装置であるものとすると、図1の点線矢印に示すように、リビルド処理におけるデータの格納先を、記憶装置15とすることが可能である。
【0025】
リビルド制御部23は、記憶装置14の使用を中止したとき、エラー情報記憶部22に登録された記憶装置11〜13についての情報に基づいて、記憶装置11〜13における過去のエラー発生状況を判定し、その判定結果に基づいて、リビルド処理の実行タイミングを制御する。リビルド制御部23は、記憶装置11〜13のうちの少なくとも1つについて、過去のエラー発生状況から過去の動作状況が良好でないと判定した場合には、それ以外の場合より早いタイミングでリビルド処理を実行する。
【0026】
例えば、上記のようにエラー監視部21がエラー情報記憶部22に対してエラー点数を登録する場合、リビルド制御部23は、エラー点数が所定のしきい値未満の場合、そのエラー点数に対応する記憶装置の過去のエラー発生回数が少なく、その記憶装置の過去の動作状況が良好であると判定する。一方、リビルド制御部23は、エラー点数が所定のしきい値以上の場合、そのエラー点数に対応する記憶装置の過去の動作状況が良好でないと判定する。あるいは、リビルド制御部23は、記憶装置において過去に一度もエラーが発生していない場合に、過去の動作状況が良好であると判定し、過去に一度でもエラーが発生していた場合に、過去の動作状況が良好でないと判定してもよい。
【0027】
ここで、RAIDグループに属する記憶装置11〜14では、データが冗長化されているので、1つの記憶装置14の使用が中止された場合でも、残りの記憶装置11〜13を用いて、ホスト装置からの要求に基づくデータアクセス処理を継続できる。一方、リビルド処理では、使用を継続する記憶装置11〜13の少なくとも1つからのデータ読み出しや、記憶装置15などの他の記憶装置へのデータ書き込みが行われる。このため、リビルド処理中には、記憶装置11〜13でのアクセス処理や制御装置20によるアクセス制御処理の負荷が高くなり、ホスト装置からの要求に応じたデータアクセス速度が低下してしまう可能性がある。
【0028】
記憶装置14の使用が中止されたとき、できるだけ早くリビルド処理を実行することで、データの冗長度を使用中止前の状態に短時間で戻すことができ、データの安全性を保つことができる。その反面、リビルド処理の実行により、ホスト装置からの要求に応じたデータアクセス速度が低下してしまう可能性がある。
【0029】
これに対し、記憶装置14の使用中止時からリビルド処理の実行タイミングを遅らせることが可能であれば、例えば、業務時間外など、記憶装置へのアクセスが少ない任意の時間帯にリビルド処理を実行できるようになる。その反面、リビルド処理の実行タイミングが遅れるほど、データの安全性が低下している期間が長くなる。
【0030】
リビルド制御部23は、記憶装置14の使用を中止したとき、記憶装置11〜13の少なくとも1つについての過去の動作状況が良好でない場合には、今後に記憶装置11〜13のいずれかで故障が発生する可能性が高いと推定する。この場合、リビルド制御部23は、データの安全性を保つためにはできるだけ早くリビルド処理を実行すべきと判断し、過去の動作状況が良好である場合と比較して、リビルド処理を早いタイミングで実行する。
【0031】
一方、リビルド制御部23は、記憶装置14の使用を中止したとき、記憶装置11〜13のすべてについての過去の動作状況が良好である場合には、今後に記憶装置11〜13のいずれかで故障が発生する可能性が低いと推定する。この場合、リビルド制御部23は、ある程度の期間リビルド処理を実行しなくてもデータの安全性が保たれると判断し、過去の動作状況が良好でない場合と比較して、リビルド処理を遅いタイミングで実行する。これにより、データの安全性をできるだけ保ちつつも、記憶装置14の使用を中止した後の所定期間における記憶装置11〜13でのアクセス処理負荷や制御装置20の処理負荷を軽減することができる。
【0032】
以上のリビルド制御部23の処理によれば、故障した記憶装置14以外の記憶装置11〜13における過去のエラー発生状況を参照することで、記憶装置11〜14に記憶されたデータの安全性をできるだけ保ちながら、リビルド処理の実行タイミングを決定できるようになる。
【0033】
なお、リビルド制御部23は、例えば、記憶装置14の使用を中止したとき、記憶装置11〜13における過去のエラー発生状況に応じて、リビルド処理の実行タイミングだけでなく、リビルド処理におけるデータの格納先を変えてもよい。例えば、リビルド制御部23は、記憶装置11〜13の少なくとも1つについての過去の動作状況が良好でない場合には、ストレージシステム1にあらかじめ用意された予備用の記憶装置15に対して、記憶装置14に記憶されていたデータを格納する。一方、リビルド制御部23は、記憶装置11〜13のすべてについての過去の動作状況が良好である場合には、記憶装置14が新たな記憶装置14aに交換されたことを検知した後、交換後の記憶装置14aに対して、記憶装置14に記憶されていたデータを格納する(図1の破線矢印に対応)。
【0034】
後者の処理によれば、記憶装置14が搭載されていた位置に新たな記憶装置14aが搭載されることから、制御装置20は、RAIDグループの構成を記憶装置14の使用中止前の状態に戻して、RAIDグループにおけるアクセス制御を続行できる。従って、データの安全性をできるだけ保ちつつも、制御装置20によるRAIDグループの管理を容易にすることができる。
【0035】
さらに、記憶装置15がいわゆるホットスペアである場合には、リビルド制御部23は、リビルド処理において記憶装置15にデータを格納した後、記憶装置14が新たな記憶装置14aに交換されたときに、記憶装置15に格納したデータを新たな記憶装置14aに書き戻す「コピーバック処理」を実行する。この場合、リビルド制御部23は、上記のように、記憶装置14の使用を中止する際に、記憶装置11〜13のすべてについての過去の動作状況が良好である場合には、リビルド処理におけるデータの格納先を交換後の記憶装置14aとすることで、コピーバック処理を実行する必要がなくなる。これにより、記憶装置11〜13,14aでのアクセス処理の負荷や、制御装置20による処理負荷をさらに軽減できる。
【0036】
〔第2の実施の形態〕
次に、第2の実施の形態として、ホットスペアの記憶装置を備えるとともに、RAID−6を用いて記憶装置が管理されるストレージシステムの例について説明する。
【0037】
図2は、第2の実施の形態に係るストレージシステムの全体構成例を示す図である。図2に示すストレージシステム100は、CE(Controller Enclosure)200、DE(Drive Enclosure)300およびホスト装置400を含む。
【0038】
CE200は、CM(Controller Module)201,202を備える。CM201,202のそれぞれは、ホスト装置400からの要求に応じて、DE300内の記憶装置に対するデータの読み書きを行う。CM201,202は、DE300内の記憶装置によって実現される物理記憶領域をRAIDによって管理し、これらの物理記憶領域に対するアクセスを制御する。
【0039】
なお、CMは、CE200内に1つのみ設けられてもよいし、3つ以上設けられてもよい。ただし、CMが複数設けられることで、DE300に対するアクセス制御系統が冗長化され、アクセス制御処理の信頼性が向上する。
【0040】
DE300は、CM201,202からのアクセス制御対象となる複数の記憶装置を備える。本実施の形態において、DE300は、記憶装置としてHDDを備えるディスクアレイ装置である。なお、DE300が備える記憶装置としては、SSDなどの他の種類の不揮発性記憶装置を使用することもできる。また、CE200には、複数のDE300が接続されていてもよい。
【0041】
ホスト装置400は、ユーザの操作に応じて、CM201,202に対して、DE300内のHDDへのアクセスを要求する。ホスト装置400は、例えば、ユーザの操作に応じて、CM201,202のいずれかを通じて、DE300内のHDDからのデータの読み出しや、DE300内のHDDに対するデータの書き込みを行うことができる。
【0042】
なお、CE200内のCM201,202は、ともに同様の構成を有し、同様の処理を実行可能である。そこで、以下、CM201についてのみ説明し、CM202についての説明を省略する。
【0043】
図3は、CMのハードウェア構成例を示す図である。
CM201は、CPU211によって装置全体が制御されている。CPU211には、RAM(Random Access Memory)212および複数の周辺機器が、バス217を介して接続されている。RAM212は、CM201の主記憶装置として使用され、CPU211に実行させるプログラムの少なくとも一部や、このプログラムによる処理に必要な各種データを一時的に記憶する。
【0044】
CPU211には、周辺機器の例として、SSD213、入力I/F(インタフェース)214、CA(Channel Adapter)215およびDI(Drive Interface)216が接続されている。
【0045】
SSD213は、CM201の二次記憶装置として使用され、CPU211によって実行されるプログラムやその実行に必要な各種のデータなどを記憶する。なお、二次記憶装置としては、例えば、HDDなどの他の種類の不揮発性記憶装置が使用されてもよい。
【0046】
入力I/F214には、操作キーなどを備える入力装置214aが接続されている。入力I/F214は、入力装置214aに対する操作入力に応じた信号をCPU211に出力する。
【0047】
CA215は、ホスト装置400とCM201との間でデータを送受信するインタフェース処理を実行する。CA215とホスト装置400とは、例えば、FC(Fibre Channel)規格に従って通信する。
【0048】
DI216は、DE300とCM201との間でデータを送受信するインタフェース処理を実行する。DI216とDE300とは、例えば、SAS(Serial Attached SCSI,SCSI:Small Computer System Interface)規格に従って通信する。
【0049】
図4は、CMの処理機能の構成例を示すブロック図である。
CM201は、アクセス制御部221、エラー監視部222およびリビルド制御部223を備える。これらの各処理ブロックの処理は、例えば、CM201のCPU211が所定のプログラムを実行することで実現される。また、CM201の記憶装置には、ディスク管理テーブル230、RAID管理テーブル240およびエラー点数テーブル250が記憶される。ディスク管理テーブル230、RAID管理テーブル240およびエラー点数テーブル250は、例えばSSD213に記憶される。
【0050】
アクセス制御部221は、ホスト装置400からの要求に応じて、DE300内のHDDにアクセスする。アクセス制御部221は、例えば、ホスト装置400からデータの読み出し要求を受けたとき、要求されたデータをDE300内の所定のHDDから読み出して、ホスト装置400に送信する。一方、アクセス制御部221は、ホスト装置400からデータの書き込み要求を受けたとき、ホスト装置400から受信した書き込み対象のデータを、DE300内の所定のHDDに書き込む。
【0051】
また、アクセス制御部221は、ディスク管理テーブル230およびRAID管理テーブル240に設定された情報に基づいて、DE300内のHDDに記録するデータをRAIDによって管理する。本実施の形態では、アクセス制御部221は、少なくともRAID−5,6を用いたデータ記録制御を行うことが可能になっている。
【0052】
ディスク管理テーブル230は、DE300に設けられるHDDごとに、HDDの識別番号や、HDDの状態を示す情報を保持する。RAID管理テーブル240は、それぞれ所定のRAIDレベルを用いて管理されるRAIDグループごとに、RAIDグループの識別番号、適用されるRAIDレベル、RAIDグループに属するHDDを示す情報、RAIDグループの制御状態を示す情報などを保持する。
【0053】
アクセス制御部221は、RAID管理テーブル240を参照することで、例えば、データを記録する際の記録先のHDDや、その記録の際に用いるRAIDレベルなどを判定する。また、アクセス制御部221は、RAID管理テーブル240に登録されたHDDに対応するディスク管理テーブル230のレコードを参照することで、そのHDDの状態を認識することができる。
【0054】
さらに、アクセス制御部221は、ホスト装置400からの要求に応じてDE300内のHDDにアクセスしたとき、アクセス先のHDDからの応答を基にエラーを検出した場合には、エラーを検出したことを、エラー検出先のHDDを識別する情報とともに、エラー監視部222に通知する。また、アクセス制御部221は、エラー監視部222やリビルド制御部223からの要求に応じて、DE300内のHDDにアクセスする場合もある。
【0055】
エラー監視部222は、DE300内のHDDのエラーの発生状況を定期的に監視する「パトロール処理」を実行する。パトロール処理では、エラー監視部222は、アクセス制御部221に、DE300内のHDDのそれぞれに対して所定のコマンドを定期的に送信させ、コマンドに対する応答からエラー発生の有無を判定する。なお、エラー監視部222は、RAID管理テーブル240に登録された後述するパトロールフラグを参照し、パトロールフラグが「1」の場合には、「0」の場合よりエラー発生状況を検査する間隔を短くして、パトロールを強化する。
【0056】
エラー監視部222は、HDDごとのエラーの発生状況を、エラー点数テーブル250に登録する。エラー点数テーブル250には、HDDの識別番号ごとにエラー点数が登録される。エラー監視部222は、エラーの発生を検出すると、エラー発生を検出したHDDに対応する、エラー点数テーブル250内のエラー点数をインクリメントする。なお、エラー監視部222は、ホスト装置400からの要求に応じたHDDへのアクセス時に、アクセス制御部221からエラー検出の通知を受けた場合にも、エラーが検出されたHDDに対応するエラー点数をインクリメントしてもよい。
【0057】
さらに、エラー監視部222は、エラー点数テーブル250内のエラー点数が所定のしきい値に達した場合には、しきい値に達したエラー点数に対応するHDDが故障したと判定する。このとき、エラー監視部222は、故障が発生したことを、故障したHDDの識別情報とともにリビルド制御部223に通知する。なお、エラー監視部222は、例えば、エラー点数に関係なく、パトロール処理や、アクセス制御部221によるHDDへのアクセス処理の際に、アクセス先のHDDと接続できないなどの深刻なエラーを検出した場合にも、HDDが故障したと判定して、リビルド制御部223に通知してもよい。
【0058】
リビルド制御部223は、エラー監視部222によってDE300内のHDDの故障が検出された場合に、故障したHDDに記録されていたデータを再構築して別のHDDに格納する「リビルド処理」を、アクセス制御部221に実行させる。後述するように、リビルド制御部223は、エラー点数テーブル250のエラー点数に基づき、故障したHDDと同じRAIDグループに属する他のHDDにおける過去のエラー発生状況に応じて、リビルド処理によるデータの格納先を、ホットスペアのHDD、または、故障したHDDと交換された新たなHDDのいずれかに決定する。
【0059】
また、リビルド制御部223は、データの格納先をホットスペアのHDDとしてリビルド処理を実行させた場合には、その後にホットスペアのHDDのデータを交換後の新たなHDDに書き戻す「コピーバック処理」を、アクセス制御部221に実行させる。
【0060】
さらに、リビルド制御部223は、リビルド処理やコピーバック処理の実行制御に伴って、ディスク管理テーブル230やRAID管理テーブル240の情報を更新することにより、アクセス制御部221に適用するRAIDレベルを変更する。
【0061】
図5は、ディスク管理テーブルに登録される情報の例を示す図である。ディスク管理テーブル230には、DE300内のHDDごとにそれぞれレコード231が設けられる。各レコード231には、HDDを識別する「ディスク番号」と、HDDの状態を示す「ディスク状態」とが登録される。
【0062】
「ディスク番号」は、CM201に接続されているHDDのそれぞれをCM201が管理するための番号であり、例えば、DE300におけるHDDの位置を示すものであってもよい。なお、図5の例のように、ディスク番号は「DISK#xxxx」で表されるものとし、以下の説明では、ディスク番号が「DISK#xxxx」であるHDDを、単に「DISK#xxxx」と呼ぶ。
【0063】
「ディスク状態」には、リビルド制御部223の処理により、例えば、「正常」「正常HS」「故障」「構築中」のいずれかを示す情報が設定される。
「正常」は、対応するHDDが正常に動作していることを示す。ただし、対応するHDDが正常に動作しており、かつそのHDDがホットスペアとして設定されている場合には、ディスク状態には「正常HS」と設定される。なお、ストレージシステム100の初期状態では、DE300内のHDDのうちあらかじめ決められたディスク番号に対応するHDDが、ホットスペアに設定される。
【0064】
「故障」は、対応するHDDが故障していることを示す。ディスク状態が「故障」に設定される場合とは、エラー監視部222によって対応するHDDが故障していると判定された場合である。また、故障と判定されたHDDが新たなHDDに交換されるまでの間、ディスク状態は「故障」に設定されたままになる。
【0065】
「構築中」は、対応するHDDを格納先としてリビルド処理またはコピーバック処理が行われていることを示す。
図6は、RAID管理テーブルに登録される情報の例を示す図である。RAID管理テーブル240には、CM201に設定されたRAIDグループごとにそれぞれレコード241が設けられる。各レコード241には、「RAIDグループ番号」「RAIDレベル」「使用ディスク数」「RAIDグループ状態」「初期ディスク番号」「使用ディスク番号」「パトロールフラグ」が登録される。
【0066】
「RAIDグループ番号」は、RAIDグループを識別する情報である。「RAIDレベル」は、対応するRAIDグループに設定されるRAIDレベルを示す。「使用ディスク数」は、対応するRAIDグループに属するHDDの数を示す。
【0067】
「RAIDグループ状態」は、対応するRAIDグループについて正常に運用されているかを示す情報である。「RAIDグループ状態」には、リビルド制御部223の処理により、例えば「正常」「縮退中」「リビルド中」「コピーバック中」「HS使用中」「異常」のいずれかを示す情報が設定される。
【0068】
「正常」は、対応するRAIDグループが正常に運用されていることを示す。「縮退中」は、RAIDレベルがRAID−6に設定されている場合にのみ設定され得る。「縮退中」は、対応するRAIDグループに属するHDDのうち1台が故障により縮退した状態であり、残りのHDDによってRAID−5で運用を継続している状態を示す。
【0069】
「リビルド中」は、対応するRAIDグループに属するHDDのうちの1台を格納先としてリビルド処理が行われていることを示す。「コピーバック中」は、対応するRAIDグループに属するHDDのうちの1台を格納先としてコピーバック処理が行われていることを示す。
【0070】
「HS使用中」は、対応するRAIDグループが正常に運用されているものの、RAIDグループに属するHDDのうちの1台がホットスペアであることを示す。「異常」は、対応するRAIDグループが運用できない状態であることを示す。例えば、RAIDグループに属するHDDの故障によりデータを冗長化できない状態であることを示す。
【0071】
「初期ディスク番号」および「使用ディスク番号」は、ともに対応するRAIDグループに属するHDDを示す。「初期ディスク番号」の欄は、「使用ディスク数」に設定された数と同数だけ設けられる。また、「使用ディスク番号」の欄も、「使用ディスク数」に設定された数と同数だけ設けられる。
【0072】
「初期ディスク番号」は、対応するRAIDグループに属するHDDとして初期設定されたHDDのディスク番号を示す。「RAIDグループ状態」が「正常」である場合、「初期ディスク番号」に設定された番号に対応するHDDが実際に使用される。「初期ディスク番号」には、ホットスペアのHDDを示すディスク番号は設定されない。
【0073】
「使用ディスク番号」は、対応するRAIDグループに属するものとして現在実際に使用されているHDDのディスク番号を示す。「RAIDグループ状態」が「正常」である場合、「使用ディスク番号」のそれぞれに設定されるディスク番号は、「初期ディスク番号」のそれぞれに設定されるディスク番号と一致する。一方、例えば、「RAIDグループ状態」が「HS使用中」である場合、「使用ディスク番号」のうちの1つがホットスペアのHDDのディスク番号を示すようになり、このディスク番号は、対応する「初期ディスク番号」に設定されたディスク番号と一致しない。
【0074】
「パトロールフラグ」は、リビルド制御部223によって設定されるフラグ情報であり、エラー監視部222によるパトロールが強化されているか否かを示す。後述するように、RAIDグループにおけるデータの冗長度が正常状態より低い状態(具体的には、RAIDレベルがRAID−6からRAID−5に変更されている場合)において、パトロールが強化される。「パトロールフラグ」には、パトロールが強化されているとき、「1」が設定され、パトロールが強化されていないとき、「0」が設定される。なお、「パトロールフラグ」の初期値は「0」である。
【0075】
図7は、エラー点数テーブルに登録される情報の例を示す図である。
エラー点数テーブル250には、DE300内のHDDごとにそれぞれレコード251が設けられる。各レコード251には、HDDを識別する「ディスク番号」と、エラー監視部222によって対応するHDDのエラーが検出されるたびに累積加算される「エラー点数」とが設定される。なお、「エラー点数」の初期値は「0」である。
【0076】
次に、CM201によるリビルド処理およびコピーバック処理について説明する。
CM201は、RAIDグループに属するHDDのうちの1つが故障した場合に、リビルド制御部223の制御の下で、ホットスペアのHDDに対するリビルド処理と、故障したHDDから交換された新たなHDD(以下、「交換されたHDD」と呼ぶ)に対するリビルド処理のどちらかを実行する。また、CM201は、ホットスペアに対するリビルド処理を実行した場合には、故障したHDDが交換された後、交換されたHDDに対するコピーバック処理を実行する。
【0077】
図8は、ホットスペアに対するリビルド処理およびコピーバック処理の実行手順例を示す図である。また、図9〜図11は、図8の処理実行時におけるディスク管理テーブルおよびRAID管理テーブルの遷移例を示す図である。これらの図8〜図11を用いて、ホットスペアに対するリビルド処理と、その後のコピーバック処理について説明する。
【0078】
図8の初期状態では、例えば図8の左下に示すように、DE300内のHDDのうち4台のDISK#0000〜DISK#0003が、RAID−6で運用されるRAIDグループ「GP#00」に属する。また、DE300に設けられたDISK#0100は、ホットスペアに設定されている。
【0079】
図9〜図11には、RAID管理テーブル240のレコード241のうち、RAIDグループ「GP#00」に対応するレコード241aを示す。また、図9〜図11には、ディスク管理テーブル230のレコード231のうち、DISK#0000,#0001,#0002,#0003,#0100にそれぞれ対応するレコード231a,231b,231c,231d,231eを示す。
【0080】
図9の上段に示すように、RAIDグループ「GP#00」が正常に運用されている初期状態では、RAID管理テーブル240のレコード241aにおける「RAIDグループ状態」には「正常」が設定され、「初期ディスク番号」および「使用ディスク番号」には、ともにDISK#0000〜DISK#0003が設定されている。また、「初期ディスク番号」に設定された各ディスク番号に対応する、ディスク管理テーブル230のレコード231a〜231dでは、すべての「ディスク状態」に「正常」が設定されている。さらに、ホットスペアのDISK#0100に対応するディスク管理テーブル230のレコード231eでは、「ディスク状態」に「正常HS」が設定されている。
【0081】
以上の状態から、CM201のエラー監視部222がDISK#0002が故障したと判定したとする(図8のステップS11)。エラー監視部222は、DISK#0002が故障したことをリビルド制御部223に通知する。リビルド制御部223は、図9の下段に示すように、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」を「縮退」に更新するとともに、DISK#0002に対応するレコード231cの「ディスク状態」を「故障」に更新する。
【0082】
このようなテーブル更新処理により、リビルド制御部223は、アクセス制御部221に、データの冗長度を下げたRAID−5によってRAIDグループ「GP#00」の運用を継続させる(図8のステップS12)。アクセス制御部221は、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」が「縮退」に更新され、DISK#0002に対応するレコード231cの「ディスク状態」が「故障」に更新されたことを認識すると、故障したHDD以外のDISK#0000,#0001,#0003を用いたRAID−5によるデータ記録制御を実行する。
【0083】
リビルド制御部223は、後述する判定処理を行い、その結果、リビルド処理におけるデータの格納先をホットスペアのDISK#0100に決定する。リビルド制御部223は、図10の上段に示すように、RAIDグループ「GP#00」に対応するレコード241aにおいて、「RAIDグループ状態」を「リビルド中」に更新するとともに、DISK#0002が設定されていた「使用ディスク番号」をDISK#0100に更新する。さらに、リビルド制御部223は、ホットスペアのDISK#0100に対応するレコード231eの「ディスク状態」を「構築中」に更新する。
【0084】
このようなテーブル更新処理により、リビルド制御部223は、アクセス制御部221に、ホットスペアのDISK#0100に対するリビルド処理を開始させる(図8のステップS13)。アクセス制御部221は、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」が「リビルド中」に更新されたことを認識する。これとともに、アクセス制御部221は、故障したHDDに対応する「使用ディスク番号」がDISK#0100に更新されていることから、リビルド処理におけるデータの格納先をDISK#0100と認識する。アクセス制御部221は、DISK#0000,#0001,#0003に記録されたデータを基に、故障したDISK#0002に記録されていたデータを再構築して、ホットスペアのDISK#0100に格納する。
【0085】
なお、DISK#0100に対するリビルド処理が実行されている間、アクセス制御部221は、ホスト装置400からの要求に応じた、RAIDグループ「GP#00」に属するHDDへのアクセス処理も継続する。
【0086】
ここで、リビルド処理におけるデータの再構築の方法について補足説明する。
RAIDグループ「GP#00」が正常に運用されている状態では、アクセス制御部221は、ホスト装置400からの書き込み対象データをストライプに分割し、分割したストライプのうち2つのストライプ(第1/第2のストライプ)を基に、それぞれ異なる演算方法によって第1/第2のパリティを計算する。アクセス制御部221は、第1/第2のストライプおよび第1/第2のパリティという4つのデータを、1つのデータが1つのHDDに割り当てられるように、RAIDグループ「GP#00」に属する4つのDISK#0000〜#0003に記録する。また、アクセス制御部221は、上記の第1/第2のストライプおよび第1/第2のパリティについての、DISK#0000〜#0003への割り当て方を順次変更していく。
【0087】
故障したDISK#0002に記録されていた第1のストライプを再構築する場合、アクセス制御部221は、残りのDISK#0000,#0001,#0003のうちの2つから、第2のストライプと、第1のパリティまたは第2のパリティとを読み出し、読み出したデータを基に第1のストライプを計算により復元する。故障したDISK#0002に記録されていた第2のストライプを再構築する場合も、同様に、アクセス制御部221は、残りのDISK#0000,#0001,#0003のうちの2つから、第1のストライプと、第1のパリティまたは第2のパリティとを読み出し、読み出したデータを基に第2のストライプを計算により復元する。故障したDISK#0002に記録されていた第1のパリティまたは第2のパリティを再構築する場合、アクセス制御部221は、残りのDISK#0000,#0001,#0003のうち2つから、第1/第2のストライプを読み出し、読み出したデータを基に第1のパリティまたは第2のパリティを再計算する。
【0088】
DISK#0100に対するリビルド処理が終了すると、リビルド制御部223は、図10の下段に示すように、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」を「HS使用中」に更新するとともに、DISK#0100に対応するレコード231eの「ディスク状態」を「正常」に更新する。
【0089】
このようなテーブル更新処理により、リビルド制御部223は、アクセス制御部221に、ホットスペアのHDDを用いて、RAIDグループ「GP#00」をRAID−6によって暫定的に運用させる(図8のステップS14)。アクセス制御部221は、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」が「HS使用中」に更新され、かつ、DISK#0100に対応するレコード231cの「ディスク状態」が「故障」に更新されたことを認識すると、レコード241aの「使用ディスク」に設定されたDISK#0000,#0001,#0100,#0003を用いたRAID−6によるデータ記録制御を実行する。
【0090】
その後、管理者によって、故障したDISK#0002が新たなHDDに交換される。リビルド制御部223は、例えばアクセス制御部221を通じて、DISK#0002が交換されたことを検知する(図8のステップS15)。DISK#0002が交換されたことを検知したリビルド制御部223は、図11の上段に示すように、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」を「コピーバック中」に更新するとともに、DISK#0002に対応するレコード231cの「ディスク状態」を「構築中」に更新する。
【0091】
このようなテーブル更新処理により、リビルド制御部223は、アクセス制御部221に、DISK#0002に対するコピーバック処理を開始させる(図8のステップS16)。アクセス制御部221は、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」が「コピーバック中」に更新されたことを認識する。このとき、アクセス制御部221は、「初期ディスク番号」に設定されたHDDのうちDISK#0002に対応するレコード231cの「ディスク状態」が「構築中」に更新されていることから、コピーバック処理におけるデータの格納先がDISK#0002であることを認識するとともに、コピーバック処理におけるデータの読み出し元が、DISK#0002が設定された「初期ディスク番号」に対応する「使用ディスク番号」に設定されたDISK#0100であることを認識する。アクセス制御部221は、DISK#0100に記録されているデータをDISK#0002に転送する。
【0092】
なお、DISK#0002に対するコピーバック処理が実行されている間、アクセス制御部221は、ホスト装置400からの要求に応じた、RAIDグループ「GP#00」に属するHDDへのアクセス処理も継続する。
【0093】
DISK#0002に対するコピーバック処理が終了すると、リビルド制御部223は、図11の下段に示すように、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」を「正常」に更新するとともに、DISK#0002に対応するレコード231cの「ディスク状態」を「正常」に更新する。このようなテーブル更新処理により、リビルド制御部223は、RAIDグループ「GP#00」を正常な運用状態に復帰させる(図8のステップS17)。
【0094】
アクセス制御部221は、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」が「正常」に更新されたことを認識すると、レコード241aの「使用ディスク」に設定されたDISK#0000〜#0003を用いたRAID−6によるデータ記録制御を実行する。
【0095】
また、リビルド制御部223は、DISK#0100に対応するレコード231eの「ディスク状態」を「正常HS」に更新して、DISK#0100をホットスペアとして使用可能な状態に戻す。
【0096】
次に、図12は、交換されたHDDに対するリビルド処理の実行手順例を示す図である。また、図13は、図12の処理実行時におけるディスク管理テーブルおよびRAID管理テーブルの遷移例を示す図である。これらの図12,図13と、前述の図9とを用いて、交換されたHDDに対するリビルド処理について説明する。
【0097】
図12の初期状態では、前述の図8と同様に、DE300内のHDDのうち4台のDISK#0000〜DISK#0003が、RAID−6で運用されるRAIDグループ「GP#00」に属する。また、DE300に設けられたDISK#0100は、ホットスペアに設定されている。このとき、RAIDグループ「GP#00」に対応するレコード241aと、DISK#0000〜#0003,#0100にそれぞれ対応するレコード231a〜231eとは、図9の上段の状態となる。
【0098】
この状態から、CM201のエラー監視部222がDISK#0002が故障したと判定したとする(図12のステップS21)。エラー監視部222は、DISK#0002が故障したことをリビルド制御部223に通知する。リビルド制御部223は、図9の下段に示すように、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」を「縮退」に更新するとともに、DISK#0002に対応するレコード231cの「ディスク状態」を「故障」に更新する。このようなテーブル更新処理により、RAID−5によってRAIDグループ「GP#00」の運用が継続される(図12のステップS22)。
【0099】
リビルド制御部223は、後述する判定処理を行い、その結果、リビルド処理におけるデータの格納先を、交換後のHDDと決定する。この場合、リビルド制御部223は、故障したDISK#0002が新たなHDDに交換されたかを監視する。そして、DISK#0002が新たなHDDに交換されたことを検知すると(図12のステップS23)、リビルド制御部223は、図13の上段に示すように、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」を「リビルド中」に更新するとともに、DISK#0002に対応するレコード231cの「ディスク状態」を「構築中」に更新する。
【0100】
このようなテーブル更新処理により、リビルド制御部223は、アクセス制御部221に、DISK#0002に対するリビルド処理を開始させる(図12のステップS24)。アクセス制御部221は、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」が「リビルド中」に更新されたことを認識する。このとき、アクセス制御部221は、故障状態であったDISK#0002に対応するレコード231cの「ディスク状態」が「構築中」に更新されていることから、リビルド処理におけるデータの格納先がDISK#0002であることを認識する。アクセス制御部221は、DISK#0000,#0001,#0003に記録されたデータを基に、故障した交換前のDISK#0002に記録されていたデータを再構築して、交換されたDISK#0002に格納する。
【0101】
DISK#0002に対するリビルド処理が終了すると、リビルド制御部223は、図13の下段に示すように、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」を「正常」に更新するとともに、DISK#0002に対応するレコード231cの「ディスク状態」を「正常」に更新する。このようなテーブル更新処理により、リビルド制御部223は、RAIDグループ「GP#00」を正常な運用状態に復帰させる(図12のステップS25)。
【0102】
アクセス制御部221は、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」が「正常」に更新されたことを認識すると、レコード241aの「使用ディスク」に設定されたDISK#0000〜#0003を用いたRAID−6によるデータ記録制御を実行する。
【0103】
ところで、ホットスペアのHDDに対するリビルド処理を実行する場合には、図8に示したように、RAIDグループに属するHDDが故障したとき、即座にホットスペアのHDDをデータの格納先として割り当てて、リビルド処理を開始できる。リビルド処理が終了するまでの期間では冗長度が低下するものの、リビルド処理が終了すると、データの冗長度を元の状態に復帰できる。従って、HDDに記録されたデータの安全性を比較的高く保つことができる。
【0104】
しかしながら、ホットスペアのHDDはあくまで一時的なデータの格納先であることから、ホットスペアのHDDに対するリビルド処理を実行した場合には、その後に、交換されたHDDに対するコピーバック処理を実行する必要が生じる。コピーバック処理は、RAIDグループに属するHDDのうち故障していないHDDからのデータ読み出し処理や、読み出したデータに基づくCM201での計算処理などを含む。このため、ホスト装置400からの要求に応じてアクセス制御処理を継続しつつ、コピーバック処理を実行すると、RAIDグループに属するHDDにおけるアクセス処理負荷や、CM201のCPU211の処理負荷が増大してしまう。これにより、ホスト装置400からのアクセス要求に対する応答速度が低下する可能性があるという問題がある。最悪の場合には、ホスト装置400からの要求に応じたHDDへのアクセスを実行できない可能性もある。
【0105】
このような問題を回避するために、HDDの故障が発生したとき、ホットスペアのHDDを用いず、交換されたHDDに対するリビルド処理を実行することを望むユーザも存在する。図12に示したように、交換されたHDDに対するリビルド処理を実行した場合には、リビルド処理が終了すると、コピーバック処理を行うことなく、RAIDグループを元通りに運用できる。このように、コピーバック処理を実行しない分だけ、HDDでのアクセス処理負荷やCM201のCPU211の処理負荷を軽減でき、ホスト装置400からのアクセス要求に対する応答速度が低下する可能性を低減できる。
【0106】
しかしながら、交換されたHDDに対するリビルド処理を実行する場合には、HDDの故障が発生してから、リビルド処理が終了するまでの時間が長くなる可能性が高まる。リビルド処理が終了するまでの期間では、RAID−6からRAID−5に変更されて運用が継続されることで、データの冗長度が低下した状態となる。このため、交換されたHDDに対するリビルド処理を実行する場合は、ホットスペアのHDDに対するリビルド処理を実行する場合と比較して、HDDに記録されたデータの安全性が低下するという問題がある。リビルド処理が終了するまでの間、RAID−5で運用が継続されることで、さらに1台のHDDが故障した場合にはデータの冗長度が失われてしまう。また、RAID−5で運用された状態でさらに2台のHDDが故障した場合には、データの一部が失われてしまう。そして、故障したHDDが交換されるまでの時間が長くなるほど、記録されたデータの安全性は低くなる。
【0107】
本実施の形態のCM201は、RAIDグループに属する1台のHDDが故障したとき、データの冗長度を落とした状態でも記録されたデータの安全性をある程度維持できる状態かを判定する。CM201は、記録されたデータの安全性をある程度維持できると判定した場合には、故障されたHDDが交換されるのを待ち、交換されたHDDをデータの格納先としたリビルド処理を実行する。これにより、記録されたデータの安全性をある程度維持しつつ、HDDでのアクセス負荷やCM201の処理負荷を軽減する。一方、CM201は、記録されたデータの安全性を維持できないと判定した場合には、ホットスペアのHDDをデータの格納先としたリビルド処理を実行し、記録されたデータの安全性が著しく低下することを防止する。
【0108】
以上のように、リビルド処理時のデータ格納先を交換されたHDDまたはホットスペアのHDDのどちらにするかを自動的に判定することで、ホスト装置400からのアクセス要求に対する応答速度を維持したいというユーザの要望に応えることを可能にしつつ、記録されたデータの安全性もある程度維持できるようになる。
【0109】
以下、CM201の処理を、フローチャートを用いて説明する。なお、以下の図14,図15の処理では、処理対象のRAIDグループに設定されたRAIDレベルがRAID−6であるものとする。
【0110】
まず、図14は、エラー監視部によるパトロール処理手順の例を示すフローチャートである。この図14の処理は、RAID管理テーブル240に登録されたRAIDグループごとに実行される。
【0111】
[ステップS41]エラー監視部222は、自身が備える計時機能のカウント値を「0」にリセットする。
[ステップS42]エラー監視部222は、アクセス制御部221に、RAIDグループに属するHDDに対するエラー検査を実行させる。
【0112】
具体的には、エラー監視部222は、RAID管理テーブル240内の、処理対象のRAIDグループに対応するレコード241から、「初期ディスク番号」に設定されたディスク番号を読み込む。エラー監視部222はさらに、読み込んだディスク番号のうち、各ディスク番号に対応するディスク管理テーブル230内のレコード231における「ディスク状態」に「正常」が設定されたディスク番号を選別し、選別したディスク番号に対応するHDDをエラー検査の実行対象に決定する。エラー監視部222は、エラー検査の実行対象に決定したHDDのディスク番号をアクセス制御部221に通知し、エラー検査の実行対象のHDDに対して所定のコマンドを送信するように要求する。
【0113】
アクセス制御部221は、エラー監視部222からの要求に応じて、エラー検査の実行対象のHDDに対して所定のコマンドを送信する。アクセス制御部221は、コマンド送信に対する応答から、コマンド送信先のHDDにおけるエラーの発生の有無を判定し、HDDごとのエラーの判定結果をエラー監視部222に通知する。
【0114】
[ステップS43]エラー監視部222は、ステップS42でのエラー検査の実行により、HDDでエラーが発生したかを判定する。エラー監視部222は、アクセス制御部221から1つ以上のHDDでエラーが発生したことの通知を受けた場合(S43:Yes)、ステップS44の処理を実行する。一方、エラー監視部222は、アクセス制御部221から全HDDでエラーが発生しなかったことの通知を受けた場合(S43:No)、ステップS48の処理を実行する。
【0115】
[ステップS44]エラー監視部222は、エラーが発生したHDDのディスク番号を、リビルド制御部223に通知する。なお、このステップS44の処理は、ステップS43でエラーが発生したと判定され、かつ、後述するステップS48で「Yes」と判定された場合に実行されてもよい。
【0116】
[ステップS45]エラー監視部222は、エラーが発生したHDDに対応するエラー点数テーブル250のエラー点数を「1」だけインクリメントする。なお、エラー監視部222は、例えば、発生したエラーの種類に応じた異なる値をエラー点数に加算してもよい。
【0117】
[ステップS46]エラー監視部222は、ステップS44で加点したエラー点数が所定の値に達したかを判定する。エラー監視部222は、エラー点数が所定値に達した場合(S46:Yes)、ステップS47の処理を実行する一方、エラー点数が所定値に達していない場合(S46:No)、ステップS48の処理を実行する。
【0118】
[ステップS47]エラー監視部222は、エラー点数が所定値に達したHDDについて、故障が発生したと判定する。エラー監視部222は、故障が発生したHDDのディスク番号と、このHDDが属するRAIDグループとを、リビルド制御部223に通知する。
【0119】
なお、故障が発生したHDDが1台の場合、故障発生の通知を受けたリビルド制御部223は、後述する図15の処理の実行を開始する。ただし、故障が発生したHDDが2台以上の場合、リビルド制御部223は、例えば、RAIDグループの運用を停止する。
【0120】
[ステップS48]エラー監視部222は、RAID管理テーブル240内の、処理対象のRAIDグループに対応するレコード241から、パトロールフラグに設定された値を読み込み、パトロールが強化されているかを判定する。パトロールフラグが「0」である場合(S48:No)、エラー監視部222は、パトロールが強化されていないと判定して、ステップS49の処理を実行する。一方、パトロールフラグが「1」である場合(S48:Yes)、エラー監視部222は、パトロールが強化されていると判定して、ステップS50の処理を実行する。
【0121】
[ステップS49]エラー監視部222は、カウント上限値をT1(例えば1.0秒)に設定し、時間のカウントを開始する。
[ステップS50]エラー監視部222は、カウント上限値を、T1より小さいT2(例えば0.2秒)に設定し、時間のカウントを開始する。
【0122】
[ステップS51]エラー監視部222は、時間のカウント値が、ステップS49またはステップS50で設定されたカウント上限値に達したかを判定し、カウント上限値に達したとき(S51:Yes)、ステップS41の処理を実行する。これにより、HDDに対するエラー検査が再度実行される。
【0123】
以上の図14の処理では、処理対象のRAIDグループに属するHDDにおいてエラーが検出された場合(S43:Yes)、エラー監視部222は、エラーが検出されたHDDに対応するエラー点数を加点する(S45)。このとき、加点したエラー点数が所定値に達した場合(S46:Yes)には、エラー監視部222は、リビルド制御部223に対して故障の発生を通知する(S47)。
【0124】
なお、エラー監視部222は、例えば、ステップS42でのエラー検査や、ホスト装置400からの要求に応じたアクセス制御部221によるHDDへのアクセス処理において、深刻なエラーが検出された場合には、エラー点数に関係なく、リビルド制御部223に対して故障の発生を通知してもよい。
【0125】
また、図14の処理において、エラー監視部222は、パトロールフラグが「1」である場合(S48:Yes)には、「0」である場合(S48:No)より、エラー検査を実行する間隔を短くする(S50)。これにより、パトロールフラグが「1」である状態では、処理対象のRAIDグループに属するHDDに対するパトロールが強化される。
【0126】
図15は、リビルド制御部によるリビルド制御処理手順の例を示すフローチャートである。この図15の処理は、図14のステップS47において、エラー監視部222からリビルド制御部223に対してHDDの故障発生が通知されたときに、リビルド制御部223によって実行される。なお、図15の処理は、HDDの故障発生時だけでなく、故障発生以外の要因でHDDの使用が中止される場合に実行されてもよい。
【0127】
[ステップS61]リビルド制御部223は、エラー監視部222から、故障が発生したHDDのディスク番号と、このHDDが属するRAIDグループの通知を受ける。リビルド制御部223は、エラー監視部222から通知されたディスク番号に対応するレコード231をディスク管理テーブル230から抽出し、抽出したレコード231における「ディスク状態」を「故障」に更新する。これとともに、リビルド制御部223は、エラー監視部222から通知されたRAIDグループに対応するレコード241をRAID管理テーブル240から抽出し、抽出したレコード241における「RAIDグループ状態」を「縮退」に更新する。これにより、リビルド制御部223は、故障したHDDが属するRAIDグループについて、データの冗長度が低下するRAID−5によって運用を継続させる。
【0128】
なお、以上のステップS61の処理は、図8のステップS12または図12のステップS22に対応する。
[ステップS62]リビルド制御部223は、自身が備える計時機能のカウント値を「0」に初期化し、時間のカウントを開始する。
【0129】
[ステップS63]リビルド制御部223は、ステップS61でRAID管理テーブル240から抽出したレコード241において、「初期ディスク番号」に設定された未選択のディスク番号を1つ選択する。ただし、このステップS63で選択の対象とするディスク番号には、ステップS61で故障が発生したと判定されているHDDのディスク番号を含まない。
【0130】
[ステップS64]リビルド制御部223は、エラー点数テーブル250に基づき、ステップS63で選択したディスク番号が示すHDDについての過去のエラー発生状況を判定する。具体的には、リビルド制御部223は、ステップS63で選択したディスク番号に対応するエラー点数を、エラー点数テーブル250から読み込む。リビルド制御部223は、読み込んだエラー点数が所定のしきい値Th以上である場合(S64:Yes)には、ステップS73の処理を実行する一方、エラー点数がしきい値Th未満である場合(S64:No)には、ステップS65の処理を実行する。なお、しきい値Thは、1以上の任意の値に設定可能である。
【0131】
[ステップS65]リビルド制御部223は、ステップS61でRAID管理テーブル240から抽出したレコード241の「初期ディスク番号」に設定されたディスク番号をすべて選択済みか判定する。リビルド制御部223は、未選択のディスク番号がある場合(S65:No)、ステップS63の処理を実行する一方、すべてのディスク番号を選択済みである場合(S65:Yes)、ステップS66の処理を実行する。
【0132】
[ステップS66]リビルド制御部223は、ステップS61でRAID管理テーブル240から抽出したレコード241の「パトロールフラグ」を、「0」から「1」に更新する。
【0133】
[ステップS67]リビルド制御部223は、ステップS63で選択したディスク番号が示すHDDのうちの1つにおいて、エラー監視部222からエラーが発生したことの通知を受けたかを判定する。このステップS67でエラー発生の通知を受ける場合とは、図14のステップS44で、エラー監視部222がリビルド制御部223にエラー発生を通知する場合である。リビルド制御部223は、エラー発生の通知を受けた場合(S67:Yes)、ステップS72の処理を実行する一方、エラー発生の通知を受けなかった場合(S67:No)、ステップS68の処理を実行する。
【0134】
[ステップS68]リビルド制御部223は、ステップS62で時間のカウントを開始してから、所定の時間Tが経過したかを判定する。リビルド制御部223は、時間Tが経過していない場合(S68:No)、ステップS69の処理を実行する一方、時間Tが経過した場合(S68:Yes)、ステップS72の処理を実行する。
【0135】
[ステップS69]リビルド制御部223は、故障が発生したHDDが新たなHDDに交換されたかを判定する。なお、アクセス制御部221は、HDDがDE300から取り外された後、取り外された位置にHDDが取り付けられて、取り付けられたHDDとの通信が可能になったことを検知すると、HDDが交換されたことを、交換されたHDDのディスク番号とともにリビルド制御部223に通知する。リビルド制御部223は、HDDが交換されたことを検知しなかった場合(S69:No)、ステップS67の処理を実行する一方、HDDが交換されたことを検知した場合(S69:Yes)、ステップS70の処理を実行する。
【0136】
[ステップS70]リビルド制御部223は、ステップS61でRAID管理テーブル240から抽出したレコード241の「パトロールフラグ」を、「0」に戻す。
[ステップS71]リビルド制御部223は、アクセス制御部221に、交換されたHDDに対するリビルド処理を開始させる。この処理は、図12のステップS24で説明した通りである。また、リビルド制御部223は、交換されたHDDに対するリビルド処理が終了すると、図12のステップS25で説明したように、リビルド処理が終了したRAIDグループのRAIDレベルをRAID−6に戻して、このRAIDグループの運用状態をHDDの故障前の状態に復帰させる。
【0137】
[ステップS72]リビルド制御部223は、ステップS61でRAID管理テーブル240から抽出したレコード241の「パトロールフラグ」を、「0」に戻す。
[ステップS73]リビルド制御部223は、アクセス制御部221に、ホットスペアのHDDに対するリビルド処理を開始させる。この処理は、図8のステップS13で説明した通りである。また、リビルド制御部223は、ホットスペアのHDDに対するリビルド処理が終了すると、図8のステップS14〜S17で説明した処理を実行する。
【0138】
以上の図15の処理では、リビルド制御部223は、RAID−6で運用されていたRAIDグループに属するHDDが故障したとき、同じRAIDグループに属する他のHDDについての過去のエラー発生状況を判定する(S64)。
【0139】
リビルド制御部223は、いずれかのHDDについてのエラー点数がしきい値Th以上である場合(S64:Yes)、同じRAIDグループに属する、故障したHDD以外のHDDにおいて今後に故障が発生する可能性が高いと推定する。この場合、リビルド制御部23は、データの安全性を保つためにはできるだけ早くリビルド処理を実行するべきと判断して、ホットスペアのHDDに対するリビルド処理を即座に実行させる(S73)。これにより、正常運用時よりデータの冗長性が低いRAID−5で運用される期間の長さが最小限になり、さらなるHDDの故障によって、データの冗長性を失う、あるいはデータの一部を失うといった事態の発生確率を低くすることができる。
【0140】
一方、リビルド制御部223は、すべてのHDDについてエラー点数がしきい値Th未満である場合(S64:No)には、同じRAIDグループに属する、故障したHDD以外のHDDにおいて今後に故障が発生する可能性が低いと推定する。この場合、リビルド制御部223は、ある程度の期間リビルド処理を実行しなくてもデータの安全性が保たれると判断し、故障したHDDが新たなHDDに交換されるまで、リビルド処理を実行しない。そして、故障したHDDが新たなHDDが交換されると(S69:Yes)、リビルド制御部223は、交換されたHDDに対するリビルド処理を実行させる(S71)。この場合、コピーバック処理を実行する必要がなくなり、RAIDグループ内のHDDにおけるアクセス処理負荷や、CM201のCPU211の処理負荷が軽減される。
【0141】
このように、同じRAIDグループに属する、故障したHDD以外のHDDにおいて今後に故障が発生する可能性が低いと推定される場合にのみ、交換されたHDDに対するリビルド処理を行うようにすることで、データの安全性をある程度維持しながらも、HDDにおけるアクセス処理負荷や、CM201のCPU211の処理負荷を軽減することができる。
【0142】
すなわち、図15の処理により、ホスト装置400からのアクセス要求に対する応答速度を維持したいというユーザの要望に応えることを可能にしつつ、記録されたデータの安全性もある程度維持できるようになる。また、ユーザが、HDDの故障時に即座にリビルド処理を実行する運用方法と、HDDを交換した後にリビルド処理を実行する運用方法のどちらを望んでいるかに関係なく、これらの運用方法が自動的に選択される。このため、データの安全性をある程度維持しながらも、ユーザによる設定操作を不要にし、設定忘れや設定誤りを防止できる。
【0143】
また、ユーザによる故障したHDDの交換作業は、何らかの理由で遅れてしまう場合がある。HDDの交換作業が遅れるなどの要因により、リビルド処理の実行開始までの期間が長くなるほど、同じRAIDグループに属する他のHDDで故障が発生する確率が高くなる。このことから、リビルド制御部223は、故障したHDD以外のHDDにおいて今後に故障が発生する可能性が低いと推定される場合(S64:No)であっても、HDDの故障発生から所定の時間Tが経過するまでの期間に、故障したHDDが交換されなかった場合には(S68:Yes)、ホットスペアのHDDに対するリビルド処理を実行させる(S73)。これにより、データの冗長度が低下した、RAID−5で運用される期間を時間T以下に抑えることができ、データの安全性が向上する。
【0144】
さらに、リビルド制御部223は、故障したHDD以外のHDDにおいて今後に故障が発生する可能性が低いと推定された場合(S64:No)であっても、HDDの故障発生から所定の時間Tが経過するまでの間に、故障したHDD以外のHDDでエラーが発生した場合には(S67:Yes)、故障したHDD以外のHDDで故障が発生する可能性が高いと推定する。この場合、リビルド制御部223は、ホットスペアのHDDに対するリビルド処理を実行させる(S73)。これにより、データの安全性が著しく低下しないようにすることができる。
【0145】
また、リビルド制御部223は、同じRAIDグループに属する、故障したHDD以外のHDDにおいて今後に故障が発生する可能性が低いと推定した場合(S64:No)には、パトロールフラグを「1」に設定する(S66)。そして、リビルド制御部223は、リビルド処理を開始させるまでの間、パトロールフラグを「1」のままにする。図14に示したように、パトロールフラグが「1」の状態では、故障したHDD以外のHDDに対するエラー検査の実行間隔が短くなり(S50)、パトロールが強化される。エラー検査の実行間隔が短くなることで、新たなエラーの発生(S67)を早いタイミングで検出できるようになる。パトロールフラグが「1」である期間は、データの冗長度が低下していることから、上記のように新たなエラーの発生を早いタイミングで検出できることで、さらなるデータの冗長度の低下やデータロストの発生を未然に防ぐことができる。
【0146】
なお、上記の第2の実施の形態では、正常運用状態では、データが3重に冗長化されたRAID−6で運用される場合について説明したが、正常運用状態で例えばRAID−1,4,5などを適用してデータが2重に冗長化されるようにしてもよい。この場合、RAIDグループに属する1つのHDDが故障してからリビルド処理が終了するまでの間、データの冗長性が失われた状態になるが、図14,図15の処理を実行することで、データロストが発生する確率を低くすることができる。
【0147】
以上の実施の形態に関し、さらに以下の付記を開示する。
(付記1) 複数の記憶装置と、前記複数の記憶装置に記録するデータが異なる記憶装置に冗長化されるように前記複数の記憶装置に対するデータ記録を制御する制御装置とを備えたストレージシステムにおいて、
前記制御装置は、
前記複数の記憶装置のそれぞれにおけるエラーの発生を監視し、エラーの発生状況を示す情報を記憶装置ごとにエラー情報記憶部に登録するエラー監視部と、
前記複数の記憶装置のうち一の記憶装置の使用を中止したとき、前記エラー情報記憶部に登録された情報を参照し、前記複数の記憶装置のうち前記一の記憶装置以外の記憶装置における過去のエラーの発生状況に基づいて、前記一の記憶装置に記憶されていたデータを生成して他の記憶装置に格納するリビルド処理の実行タイミングを決定するリビルド制御部と、
を有することを特徴とするストレージシステム。
【0148】
(付記2) 前記エラー監視部は、エラーの発生に応じたエラー点数を記憶装置ごとに前記エラー情報記憶部に登録し、
前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外の少なくとも1つの記憶装置に対応するエラー点数が所定値以上である場合には、前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が所定値未満である場合より、前記リビルド処理を早いタイミングで実行する、
ことを特徴とする付記1記載のストレージシステム。
【0149】
(付記3) 前記ストレージシステムは、前記複数の記憶装置のいずれかの代わりに使用される予備用記憶装置をさらに備え、
前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、
前記複数の記憶装置のうち前記一の記憶装置以外の少なくとも1つの記憶装置に対応するエラー点数が前記所定値以上である場合には、前記一の記憶装置に記憶されていたデータを生成して前記予備用記憶装置に格納し、
前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記一の記憶装置が新たな記憶装置に交換されたことを検知した後、前記一の記憶装置に記憶されていたデータを生成して前記新たな記憶装置に格納する、
ことを特徴とする付記2記載のストレージシステム。
【0150】
(付記4) 前記リビルド制御部は、前記一の記憶装置に記憶されていたデータを前記予備用記憶装置に格納した後、前記一の記憶装置が新たな記憶装置に交換されたことを検知したとき、前記予備用記憶装置に格納されたデータを前記新たな記憶装置に書き戻すことを特徴とする付記3記載のストレージシステム。
【0151】
(付記5) 前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記一の記憶装置の使用を中止してからの時間経過を監視し、一定時間が経過するまでに前記一の記憶装置が交換されなかった場合には、前記一の記憶装置に記憶されていたデータを生成して前記予備用記憶装置に格納することを特徴とする付記3または4記載のストレージシステム。
【0152】
(付記6) 前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記複数の記憶装置のうち前記一の記憶装置以外の記憶装置におけるエラーの発生を監視し、前記一の記憶装置が交換されたことを検知するまでの間にエラーが発生した場合には、前記一の記憶装置に記憶されていたデータを生成して前記予備用記憶装置に格納することを特徴とする付記3〜5のいずれか1つに記載のストレージシステム。
【0153】
(付記7) 前記エラー監視部は、前記複数の記憶装置のそれぞれにおいてエラーが発生したかを定期的に検査し、
前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記一の記憶装置が交換されるまでの間、前記エラー監視部がエラーの発生を検査する間隔を前記一の記憶装置の使用を中止する前より短くする、
ことを特徴とする付記6記載のストレージシステム。
【0154】
(付記8) 複数の記憶装置に記録するデータが異なる記憶装置に冗長化されるように前記複数の記憶装置に対するデータ記録を制御するストレージ制御装置において、
前記複数の記憶装置のそれぞれにおけるエラーの発生を監視し、エラーの発生状況を示す情報を記憶装置ごとにエラー情報記憶部に登録するエラー監視部と、
前記複数の記憶装置のうち一の記憶装置の使用を中止したとき、前記エラー情報記憶部に登録された情報を参照し、前記複数の記憶装置のうち前記一の記憶装置以外の記憶装置における過去のエラーの発生状況に基づいて、前記一の記憶装置に記憶されていたデータを生成して他の記憶装置に格納するリビルド処理の実行タイミングを決定するリビルド制御部と、
を有することを特徴とするストレージ制御装置。
【0155】
(付記9) 前記エラー監視部は、エラーの発生に応じたエラー点数を記憶装置ごとに前記エラー情報記憶部に登録し、
前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外の少なくとも1つの記憶装置に対応するエラー点数が所定値以上である場合には、前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が所定値未満である場合より、前記リビルド処理を早いタイミングで実行する、
ことを特徴とする付記8記載のストレージ制御装置。
【0156】
(付記10) 前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、
前記複数の記憶装置のうち前記一の記憶装置以外の少なくとも1つの記憶装置に対応するエラー点数が前記所定値以上である場合には、前記一の記憶装置に記憶されていたデータを生成して、生成したデータをあらかじめ用意された予備用記憶装置に格納し、
前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記一の記憶装置が新たな記憶装置に交換されたことを検知した後、前記一の記憶装置に記憶されていたデータを生成して前記新たな記憶装置に格納する、
ことを特徴とする付記9記載のストレージ制御装置。
【0157】
(付記11) 前記リビルド制御部は、前記一の記憶装置に記憶されていたデータを前記予備用記憶装置に格納した後、前記一の記憶装置が新たな記憶装置に交換されたことを検知したとき、前記予備用記憶装置に格納されたデータを前記新たな記憶装置に書き戻すことを特徴とする付記10記載のストレージ制御装置。
【0158】
(付記12) 前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記一の記憶装置の使用を中止してからの時間経過を監視し、一定時間が経過するまでに前記一の記憶装置が交換されなかった場合には、前記一の記憶装置に記憶されていたデータを生成して前記予備用記憶装置に格納することを特徴とする付記10または11記載のストレージ制御装置。
【0159】
(付記13) 前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記複数の記憶装置のうち前記一の記憶装置以外の記憶装置におけるエラーの発生を監視し、前記一の記憶装置が交換されたことを検知するまでの間にエラーが発生した場合には、前記一の記憶装置に記憶されていたデータを生成して前記予備用記憶装置に格納することを特徴とする付記10〜12のいずれか1つに記載のストレージ制御装置。
【0160】
(付記14) 複数の記憶装置と、前記複数の記憶装置に記録するデータが異なる記憶装置に冗長化されるように前記複数の記憶装置に対するデータ記録を制御する制御装置とを備えたストレージシステムにおけるストレージ制御方法であって、
前記制御装置が、
前記複数の記憶装置のそれぞれにおけるエラーの発生を監視して、エラーの発生状況を示す情報を記憶装置ごとにエラー情報記憶部に登録し、
前記複数の記憶装置のうち一の記憶装置の使用を中止したとき、前記エラー情報記憶部に登録された情報を参照し、前記複数の記憶装置のうち前記一の記憶装置以外の記憶装置における過去のエラーの発生状況に基づいて、前記一の記憶装置に記憶されていたデータを生成して他の記憶装置に格納するリビルド処理の実行タイミングを決定する、
ことを特徴とするストレージ制御方法。
【0161】
(付記15) 前記エラーの発生状況を示す情報として、エラーの発生に応じたエラー点数を記憶装置ごとに前記エラー情報記憶部に登録し、
前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外の少なくとも1つの記憶装置に対応するエラー点数が所定値以上である場合には、前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が所定値未満である場合より、前記リビルド処理を早いタイミングで実行する、
ことを特徴とする付記14記載のストレージ制御方法。
【0162】
(付記16) 前記一の記憶装置の使用を中止したとき、
前記複数の記憶装置のうち前記一の記憶装置以外の少なくとも1つの記憶装置に対応するエラー点数が前記所定値以上である場合には、前記一の記憶装置に記憶されていたデータを生成して、生成したデータをあらかじめ用意された予備用記憶装置に格納し、
前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記一の記憶装置が新たな記憶装置に交換されたことを検知した後、前記一の記憶装置に記憶されていたデータを生成して前記新たな記憶装置に格納する、
ことを特徴とする付記15記載のストレージ制御方法。
【0163】
(付記17) 前記一の記憶装置に記憶されていたデータを前記予備用記憶装置に格納した場合、その後、前記一の記憶装置が新たな記憶装置に交換されたことを検知したとき、前記予備用記憶装置に格納されたデータを前記新たな記憶装置に書き戻すことを特徴とする付記16記載のストレージ制御方法。
【0164】
(付記18) 前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記一の記憶装置の使用を中止してからの時間経過を監視し、一定時間が経過するまでに前記一の記憶装置が交換されなかった場合には、前記一の記憶装置に記憶されていたデータを生成して前記予備用記憶装置に格納することを特徴とする付記16または17記載のストレージ制御方法。
【0165】
(付記19) 前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記複数の記憶装置のうち前記一の記憶装置以外の記憶装置におけるエラーの発生を監視し、前記一の記憶装置が交換されたことを検知するまでの間にエラーが発生した場合には、前記一の記憶装置に記憶されていたデータを生成して前記予備用記憶装置に格納することを特徴とする付記16〜18のいずれか1つに記載のストレージ制御方法。
【0166】
(付記20) 前記複数の記憶装置のそれぞれにおけるエラーの発生を監視する処理では、前記複数の記憶装置のそれぞれにおいてエラーが発生したかを定期的に検査し、
前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記一の記憶装置が交換されるまでの間、前記エラー監視部がエラーの発生を検査する間隔を前記一の記憶装置の使用を中止する前より短くする、
ことを特徴とする付記19記載のストレージ制御方法。
【符号の説明】
【0167】
1 ストレージシステム
11〜15,14a 記憶装置
20 制御装置
21 エラー監視部
22 エラー情報記憶部
23 リビルド制御部
【技術分野】
【0001】
本発明は、ストレージシステム、ストレージ制御装置およびストレージ制御方法に関する。
【背景技術】
【0002】
近年、HDD(Hard Disk Drive)などの記憶装置を複数用いたストレージシステムが広く使用されている。このようなストレージシステムでは、一般的に、RAID(Redundant Arrays of Inexpensive Disks)技術を用いて、データが2つ以上の記憶装置に冗長化されるような記録制御が行われることで、記録されるデータの安全性が高められている。
【0003】
また、データが冗長化されたストレージシステムにおいて、故障などによって1つの記憶装置の使用が中止されると、使用が中止された記憶装置に記憶されていたデータが再構築されて、他の記憶装置に格納される。このような処理は、一般に「リビルド処理」と呼ばれる。多くのストレージシステムでは、ホットスペア(Hot Spare)と呼ばれる予備用記憶装置が用意されており、このホットスペアを用いてリビルド処理が行われることが多い。記憶装置が故障したとき、ホットスペアをデータ格納先としたリビルド処理が即座に行われることで、データが冗長化された状態に短時間で戻し、データの安全性を短時間で回復させることができる。
【0004】
なお、予備用記憶装置を用いてデータの安全性を回復させる技術としては、例えば、エラー発生回数などを基に、故障発生の可能性が高い記憶装置を予測し、その記憶装置のデータを予備用記憶装置にあらかじめコピーしておく方法がある。
【0005】
また、記憶装置の故障発生時の制御例としては、記憶装置での障害発生時に、冗長度に余裕がない場合には、通常の読み書き処理より障害回復処理を優先するように制御するシステムがある。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2010−128773号公報
【特許文献2】特開2005−100259号公報
【特許文献3】特開平5−314674号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
リビルド処理では、使用を継続する残りの記憶装置の少なくとも1つからのデータ読み出しや、他の記憶装置へのデータ書き込みが行われる。このため、リビルド処理の実行中には、使用を継続する残りの記憶装置でのアクセス処理負荷や、記憶装置でのアクセスを制御する制御装置の処理負荷が高くなり、ホスト装置からの要求に応じたデータのアクセス速度が低下してしまう可能性がある。
【0008】
上記のように、データが冗長化された状態で、記憶装置の使用を中止したとき、できるだけ早くリビルド処理が行われることで、データの冗長性を短時間で回復させることができる。しかしながら、記憶装置の使用中止から短時間でリビルド処理の実行を開始すると、記憶装置の使用中止後の所定期間において、ホスト装置からの要求に応じたデータのアクセス速度が低下してしまう可能性がある。
【0009】
本発明はこのような課題に鑑みてなされたものであり、記憶装置の状況に応じてリビルド処理を実行できるようにしたストレージシステム、ストレージ制御装置およびストレージ制御方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するために、複数の記憶装置と、複数の記憶装置に記録するデータが異なる記憶装置に冗長化されるように複数の記憶装置に対するデータ記録を制御する制御装置とを備えたストレージシステムが提供される。このストレージシステムにおいて、制御装置は、エラー監視部と、リビルド制御部とを有する。エラー監視部は、複数の記憶装置のそれぞれにおけるエラーの発生を監視し、エラーの発生状況を示す情報を記憶装置ごとにエラー情報記憶部に登録する。リビルド制御部は、複数の記憶装置のうち一の記憶装置の使用を中止したとき、エラー情報記憶部に登録された情報を参照し、上記の複数の記憶装置のうち上記の一の記憶装置以外の記憶装置における過去のエラーの発生状況に基づいて、上記の一の記憶装置に記憶されていたデータを生成して他の記憶装置に格納するリビルド処理の実行タイミングを決定する。
【0011】
また、上記目的を達成するために、上記の制御装置と同様の処理を実行するストレージ制御装置およびストレージ制御方法が提供される。
【発明の効果】
【0012】
上記のストレージシステム、ストレージ制御装置およびストレージ制御方法によれば、記憶装置におけるエラー発生状況に応じてリビルド処理の実行タイミングを決定できるようになる。
【図面の簡単な説明】
【0013】
【図1】第1の実施の形態に係るストレージシステムの構成例を示す図である。
【図2】第2の実施の形態に係るストレージシステムの全体構成例を示す図である。
【図3】CMのハードウェア構成例を示す図である。
【図4】CMの処理機能の構成例を示すブロック図である。
【図5】ディスク管理テーブルに登録される情報の例を示す図である。
【図6】RAID管理テーブルに登録される情報の例を示す図である。
【図7】エラー点数テーブルに登録される情報の例を示す図である。
【図8】ホットスペアに対するリビルド処理およびコピーバック処理の実行手順例を示す図である。
【図9】図8の処理実行時におけるディスク管理テーブルおよびRAID管理テーブルの遷移例を示す図(その1)である。
【図10】図8の処理実行時におけるディスク管理テーブルおよびRAID管理テーブルの遷移例を示す図(その2)である。
【図11】図8の処理実行時におけるディスク管理テーブルおよびRAID管理テーブルの遷移例を示す図(その3)である。
【図12】交換されたHDDに対するリビルド処理の実行手順例を示す図である。
【図13】図12の処理実行時におけるディスク管理テーブルおよびRAID管理テーブルの遷移例を示す図である。
【図14】エラー監視部によるパトロール処理手順の例を示すフローチャートである。
【図15】リビルド制御部によるリビルド制御処理手順の例を示すフローチャートである。
【発明を実施するための形態】
【0014】
以下、実施の形態について図面を参照して詳細に説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るストレージシステムの構成例を示す図である。
【0015】
図1に示すストレージシステム1は、複数の記憶装置11〜15と、制御装置20とを備える。記憶装置11〜15のそれぞれは、例えば、HDD、SSD(Solid State Drive)などの不揮発性記憶装置である。なお、ストレージシステム1が備える記憶装置の数は、2以上の任意の数であればよい。
【0016】
制御装置20は、図示しないホスト装置からの、ストレージシステム1に含まれる記憶装置に記録されたデータに対するアクセスを制御する。また、制御装置20は、ストレージシステム1に含まれる2以上の所定数の記憶装置を用いて、これら所定数の記憶装置に記録するデータが複数の記憶装置に冗長化されるように管理する。
【0017】
ここで、データが複数の記憶装置に冗長化されるように管理するための記憶装置の単位を、「RAIDグループ」と呼ぶ。図1の例では、4つの記憶装置11〜14が1つのRAIDグループに属するものとする。制御装置20は、例えば、RAID−1,4,5のいずれかを用いて、記憶装置11〜14においてデータが2重に冗長化されるように管理する。あるいは、制御装置20は、RAID−6を用いて、記憶装置11〜14においてデータが3重に冗長化されるように管理してもよい。
【0018】
制御装置20は、エラー監視部21、エラー情報記憶部22およびリビルド制御部23を備える。エラー監視部21およびリビルド制御部23の処理は、例えば、制御装置20が備える図示しないCPU(Central Processing Unit)が所定のプログラムを実行することで実現される。エラー情報記憶部22は、例えば、SSDなどの各種の不揮発性記憶装置によって実現される。なお、エラー情報記憶部22は、制御装置20の外部に設けられていてもよい。
【0019】
エラー監視部21は、少なくとも、RAIDグループに属する記憶装置11〜14におけるエラーの発生を監視し、エラーの発生状況を示す情報を記憶装置ごとにエラー情報記憶部22に登録する。エラーの発生状況を示す情報としては、例えば、記憶装置ごとのエラー発生履歴、エラーの発生状況に応じて加算される記憶装置ごとのエラー点数などがある。
【0020】
なお、エラー監視部21は、例えば、記憶装置11〜14に対して定期的にアクセスすることで、エラーが発生したか否かを検査する。また、エラー監視部21は、例えば、ホスト装置からのアクセス要求に応じて制御装置20が記憶装置11〜14へアクセスしたときにエラーが検知された場合に、エラーが発生したことをエラー情報記憶部22に登録してもよい。
【0021】
リビルド制御部23は、RAIDグループに属する記憶装置11〜14のうち、いずれかの記憶装置の使用を中止したとき、使用を中止した記憶装置に記憶されていたデータを生成して他の記憶装置に格納する「リビルド処理」を実行する。
【0022】
ここで、記憶装置の使用を中止する場合とは、例えば、故障により記憶装置にアクセスできなくなった場合、エラー監視部21によって検知された、記憶装置におけるエラーの発生回数が所定数に達した場合、交換などを目的として記憶装置を取り外す場合などである。
【0023】
以下、例として、図1に示すように、記憶装置14の使用を中止するものとして説明する。
また、リビルド制御部23は、リビルド処理において、RAIDグループに属する記憶装置11〜14のうち、使用を中止した記憶装置14以外の少なくとも1つの記憶装置に記憶されたデータを基に、記憶装置14に記憶されていたデータを生成する。例えば、記憶装置11〜14を用いてRAID−5による書き込み制御が行われているものとすると、リビルド制御部23は、記憶装置11〜13に記憶されたデータを基に、記憶装置14に記憶されていたデータを計算によって復元する。また、記憶装置11〜14を用いてデータがミラーリングされている場合、リビルド制御部23は、記憶装置11〜13のいずれかから、記憶装置14に記憶されているデータに対応するミラーデータを読み出す。
【0024】
なお、リビルド処理におけるデータの格納先は、任意に決定可能である。例えば、記憶装置15が、ストレージシステム1にあらかじめ用意された予備用記憶装置であるものとすると、図1の点線矢印に示すように、リビルド処理におけるデータの格納先を、記憶装置15とすることが可能である。
【0025】
リビルド制御部23は、記憶装置14の使用を中止したとき、エラー情報記憶部22に登録された記憶装置11〜13についての情報に基づいて、記憶装置11〜13における過去のエラー発生状況を判定し、その判定結果に基づいて、リビルド処理の実行タイミングを制御する。リビルド制御部23は、記憶装置11〜13のうちの少なくとも1つについて、過去のエラー発生状況から過去の動作状況が良好でないと判定した場合には、それ以外の場合より早いタイミングでリビルド処理を実行する。
【0026】
例えば、上記のようにエラー監視部21がエラー情報記憶部22に対してエラー点数を登録する場合、リビルド制御部23は、エラー点数が所定のしきい値未満の場合、そのエラー点数に対応する記憶装置の過去のエラー発生回数が少なく、その記憶装置の過去の動作状況が良好であると判定する。一方、リビルド制御部23は、エラー点数が所定のしきい値以上の場合、そのエラー点数に対応する記憶装置の過去の動作状況が良好でないと判定する。あるいは、リビルド制御部23は、記憶装置において過去に一度もエラーが発生していない場合に、過去の動作状況が良好であると判定し、過去に一度でもエラーが発生していた場合に、過去の動作状況が良好でないと判定してもよい。
【0027】
ここで、RAIDグループに属する記憶装置11〜14では、データが冗長化されているので、1つの記憶装置14の使用が中止された場合でも、残りの記憶装置11〜13を用いて、ホスト装置からの要求に基づくデータアクセス処理を継続できる。一方、リビルド処理では、使用を継続する記憶装置11〜13の少なくとも1つからのデータ読み出しや、記憶装置15などの他の記憶装置へのデータ書き込みが行われる。このため、リビルド処理中には、記憶装置11〜13でのアクセス処理や制御装置20によるアクセス制御処理の負荷が高くなり、ホスト装置からの要求に応じたデータアクセス速度が低下してしまう可能性がある。
【0028】
記憶装置14の使用が中止されたとき、できるだけ早くリビルド処理を実行することで、データの冗長度を使用中止前の状態に短時間で戻すことができ、データの安全性を保つことができる。その反面、リビルド処理の実行により、ホスト装置からの要求に応じたデータアクセス速度が低下してしまう可能性がある。
【0029】
これに対し、記憶装置14の使用中止時からリビルド処理の実行タイミングを遅らせることが可能であれば、例えば、業務時間外など、記憶装置へのアクセスが少ない任意の時間帯にリビルド処理を実行できるようになる。その反面、リビルド処理の実行タイミングが遅れるほど、データの安全性が低下している期間が長くなる。
【0030】
リビルド制御部23は、記憶装置14の使用を中止したとき、記憶装置11〜13の少なくとも1つについての過去の動作状況が良好でない場合には、今後に記憶装置11〜13のいずれかで故障が発生する可能性が高いと推定する。この場合、リビルド制御部23は、データの安全性を保つためにはできるだけ早くリビルド処理を実行すべきと判断し、過去の動作状況が良好である場合と比較して、リビルド処理を早いタイミングで実行する。
【0031】
一方、リビルド制御部23は、記憶装置14の使用を中止したとき、記憶装置11〜13のすべてについての過去の動作状況が良好である場合には、今後に記憶装置11〜13のいずれかで故障が発生する可能性が低いと推定する。この場合、リビルド制御部23は、ある程度の期間リビルド処理を実行しなくてもデータの安全性が保たれると判断し、過去の動作状況が良好でない場合と比較して、リビルド処理を遅いタイミングで実行する。これにより、データの安全性をできるだけ保ちつつも、記憶装置14の使用を中止した後の所定期間における記憶装置11〜13でのアクセス処理負荷や制御装置20の処理負荷を軽減することができる。
【0032】
以上のリビルド制御部23の処理によれば、故障した記憶装置14以外の記憶装置11〜13における過去のエラー発生状況を参照することで、記憶装置11〜14に記憶されたデータの安全性をできるだけ保ちながら、リビルド処理の実行タイミングを決定できるようになる。
【0033】
なお、リビルド制御部23は、例えば、記憶装置14の使用を中止したとき、記憶装置11〜13における過去のエラー発生状況に応じて、リビルド処理の実行タイミングだけでなく、リビルド処理におけるデータの格納先を変えてもよい。例えば、リビルド制御部23は、記憶装置11〜13の少なくとも1つについての過去の動作状況が良好でない場合には、ストレージシステム1にあらかじめ用意された予備用の記憶装置15に対して、記憶装置14に記憶されていたデータを格納する。一方、リビルド制御部23は、記憶装置11〜13のすべてについての過去の動作状況が良好である場合には、記憶装置14が新たな記憶装置14aに交換されたことを検知した後、交換後の記憶装置14aに対して、記憶装置14に記憶されていたデータを格納する(図1の破線矢印に対応)。
【0034】
後者の処理によれば、記憶装置14が搭載されていた位置に新たな記憶装置14aが搭載されることから、制御装置20は、RAIDグループの構成を記憶装置14の使用中止前の状態に戻して、RAIDグループにおけるアクセス制御を続行できる。従って、データの安全性をできるだけ保ちつつも、制御装置20によるRAIDグループの管理を容易にすることができる。
【0035】
さらに、記憶装置15がいわゆるホットスペアである場合には、リビルド制御部23は、リビルド処理において記憶装置15にデータを格納した後、記憶装置14が新たな記憶装置14aに交換されたときに、記憶装置15に格納したデータを新たな記憶装置14aに書き戻す「コピーバック処理」を実行する。この場合、リビルド制御部23は、上記のように、記憶装置14の使用を中止する際に、記憶装置11〜13のすべてについての過去の動作状況が良好である場合には、リビルド処理におけるデータの格納先を交換後の記憶装置14aとすることで、コピーバック処理を実行する必要がなくなる。これにより、記憶装置11〜13,14aでのアクセス処理の負荷や、制御装置20による処理負荷をさらに軽減できる。
【0036】
〔第2の実施の形態〕
次に、第2の実施の形態として、ホットスペアの記憶装置を備えるとともに、RAID−6を用いて記憶装置が管理されるストレージシステムの例について説明する。
【0037】
図2は、第2の実施の形態に係るストレージシステムの全体構成例を示す図である。図2に示すストレージシステム100は、CE(Controller Enclosure)200、DE(Drive Enclosure)300およびホスト装置400を含む。
【0038】
CE200は、CM(Controller Module)201,202を備える。CM201,202のそれぞれは、ホスト装置400からの要求に応じて、DE300内の記憶装置に対するデータの読み書きを行う。CM201,202は、DE300内の記憶装置によって実現される物理記憶領域をRAIDによって管理し、これらの物理記憶領域に対するアクセスを制御する。
【0039】
なお、CMは、CE200内に1つのみ設けられてもよいし、3つ以上設けられてもよい。ただし、CMが複数設けられることで、DE300に対するアクセス制御系統が冗長化され、アクセス制御処理の信頼性が向上する。
【0040】
DE300は、CM201,202からのアクセス制御対象となる複数の記憶装置を備える。本実施の形態において、DE300は、記憶装置としてHDDを備えるディスクアレイ装置である。なお、DE300が備える記憶装置としては、SSDなどの他の種類の不揮発性記憶装置を使用することもできる。また、CE200には、複数のDE300が接続されていてもよい。
【0041】
ホスト装置400は、ユーザの操作に応じて、CM201,202に対して、DE300内のHDDへのアクセスを要求する。ホスト装置400は、例えば、ユーザの操作に応じて、CM201,202のいずれかを通じて、DE300内のHDDからのデータの読み出しや、DE300内のHDDに対するデータの書き込みを行うことができる。
【0042】
なお、CE200内のCM201,202は、ともに同様の構成を有し、同様の処理を実行可能である。そこで、以下、CM201についてのみ説明し、CM202についての説明を省略する。
【0043】
図3は、CMのハードウェア構成例を示す図である。
CM201は、CPU211によって装置全体が制御されている。CPU211には、RAM(Random Access Memory)212および複数の周辺機器が、バス217を介して接続されている。RAM212は、CM201の主記憶装置として使用され、CPU211に実行させるプログラムの少なくとも一部や、このプログラムによる処理に必要な各種データを一時的に記憶する。
【0044】
CPU211には、周辺機器の例として、SSD213、入力I/F(インタフェース)214、CA(Channel Adapter)215およびDI(Drive Interface)216が接続されている。
【0045】
SSD213は、CM201の二次記憶装置として使用され、CPU211によって実行されるプログラムやその実行に必要な各種のデータなどを記憶する。なお、二次記憶装置としては、例えば、HDDなどの他の種類の不揮発性記憶装置が使用されてもよい。
【0046】
入力I/F214には、操作キーなどを備える入力装置214aが接続されている。入力I/F214は、入力装置214aに対する操作入力に応じた信号をCPU211に出力する。
【0047】
CA215は、ホスト装置400とCM201との間でデータを送受信するインタフェース処理を実行する。CA215とホスト装置400とは、例えば、FC(Fibre Channel)規格に従って通信する。
【0048】
DI216は、DE300とCM201との間でデータを送受信するインタフェース処理を実行する。DI216とDE300とは、例えば、SAS(Serial Attached SCSI,SCSI:Small Computer System Interface)規格に従って通信する。
【0049】
図4は、CMの処理機能の構成例を示すブロック図である。
CM201は、アクセス制御部221、エラー監視部222およびリビルド制御部223を備える。これらの各処理ブロックの処理は、例えば、CM201のCPU211が所定のプログラムを実行することで実現される。また、CM201の記憶装置には、ディスク管理テーブル230、RAID管理テーブル240およびエラー点数テーブル250が記憶される。ディスク管理テーブル230、RAID管理テーブル240およびエラー点数テーブル250は、例えばSSD213に記憶される。
【0050】
アクセス制御部221は、ホスト装置400からの要求に応じて、DE300内のHDDにアクセスする。アクセス制御部221は、例えば、ホスト装置400からデータの読み出し要求を受けたとき、要求されたデータをDE300内の所定のHDDから読み出して、ホスト装置400に送信する。一方、アクセス制御部221は、ホスト装置400からデータの書き込み要求を受けたとき、ホスト装置400から受信した書き込み対象のデータを、DE300内の所定のHDDに書き込む。
【0051】
また、アクセス制御部221は、ディスク管理テーブル230およびRAID管理テーブル240に設定された情報に基づいて、DE300内のHDDに記録するデータをRAIDによって管理する。本実施の形態では、アクセス制御部221は、少なくともRAID−5,6を用いたデータ記録制御を行うことが可能になっている。
【0052】
ディスク管理テーブル230は、DE300に設けられるHDDごとに、HDDの識別番号や、HDDの状態を示す情報を保持する。RAID管理テーブル240は、それぞれ所定のRAIDレベルを用いて管理されるRAIDグループごとに、RAIDグループの識別番号、適用されるRAIDレベル、RAIDグループに属するHDDを示す情報、RAIDグループの制御状態を示す情報などを保持する。
【0053】
アクセス制御部221は、RAID管理テーブル240を参照することで、例えば、データを記録する際の記録先のHDDや、その記録の際に用いるRAIDレベルなどを判定する。また、アクセス制御部221は、RAID管理テーブル240に登録されたHDDに対応するディスク管理テーブル230のレコードを参照することで、そのHDDの状態を認識することができる。
【0054】
さらに、アクセス制御部221は、ホスト装置400からの要求に応じてDE300内のHDDにアクセスしたとき、アクセス先のHDDからの応答を基にエラーを検出した場合には、エラーを検出したことを、エラー検出先のHDDを識別する情報とともに、エラー監視部222に通知する。また、アクセス制御部221は、エラー監視部222やリビルド制御部223からの要求に応じて、DE300内のHDDにアクセスする場合もある。
【0055】
エラー監視部222は、DE300内のHDDのエラーの発生状況を定期的に監視する「パトロール処理」を実行する。パトロール処理では、エラー監視部222は、アクセス制御部221に、DE300内のHDDのそれぞれに対して所定のコマンドを定期的に送信させ、コマンドに対する応答からエラー発生の有無を判定する。なお、エラー監視部222は、RAID管理テーブル240に登録された後述するパトロールフラグを参照し、パトロールフラグが「1」の場合には、「0」の場合よりエラー発生状況を検査する間隔を短くして、パトロールを強化する。
【0056】
エラー監視部222は、HDDごとのエラーの発生状況を、エラー点数テーブル250に登録する。エラー点数テーブル250には、HDDの識別番号ごとにエラー点数が登録される。エラー監視部222は、エラーの発生を検出すると、エラー発生を検出したHDDに対応する、エラー点数テーブル250内のエラー点数をインクリメントする。なお、エラー監視部222は、ホスト装置400からの要求に応じたHDDへのアクセス時に、アクセス制御部221からエラー検出の通知を受けた場合にも、エラーが検出されたHDDに対応するエラー点数をインクリメントしてもよい。
【0057】
さらに、エラー監視部222は、エラー点数テーブル250内のエラー点数が所定のしきい値に達した場合には、しきい値に達したエラー点数に対応するHDDが故障したと判定する。このとき、エラー監視部222は、故障が発生したことを、故障したHDDの識別情報とともにリビルド制御部223に通知する。なお、エラー監視部222は、例えば、エラー点数に関係なく、パトロール処理や、アクセス制御部221によるHDDへのアクセス処理の際に、アクセス先のHDDと接続できないなどの深刻なエラーを検出した場合にも、HDDが故障したと判定して、リビルド制御部223に通知してもよい。
【0058】
リビルド制御部223は、エラー監視部222によってDE300内のHDDの故障が検出された場合に、故障したHDDに記録されていたデータを再構築して別のHDDに格納する「リビルド処理」を、アクセス制御部221に実行させる。後述するように、リビルド制御部223は、エラー点数テーブル250のエラー点数に基づき、故障したHDDと同じRAIDグループに属する他のHDDにおける過去のエラー発生状況に応じて、リビルド処理によるデータの格納先を、ホットスペアのHDD、または、故障したHDDと交換された新たなHDDのいずれかに決定する。
【0059】
また、リビルド制御部223は、データの格納先をホットスペアのHDDとしてリビルド処理を実行させた場合には、その後にホットスペアのHDDのデータを交換後の新たなHDDに書き戻す「コピーバック処理」を、アクセス制御部221に実行させる。
【0060】
さらに、リビルド制御部223は、リビルド処理やコピーバック処理の実行制御に伴って、ディスク管理テーブル230やRAID管理テーブル240の情報を更新することにより、アクセス制御部221に適用するRAIDレベルを変更する。
【0061】
図5は、ディスク管理テーブルに登録される情報の例を示す図である。ディスク管理テーブル230には、DE300内のHDDごとにそれぞれレコード231が設けられる。各レコード231には、HDDを識別する「ディスク番号」と、HDDの状態を示す「ディスク状態」とが登録される。
【0062】
「ディスク番号」は、CM201に接続されているHDDのそれぞれをCM201が管理するための番号であり、例えば、DE300におけるHDDの位置を示すものであってもよい。なお、図5の例のように、ディスク番号は「DISK#xxxx」で表されるものとし、以下の説明では、ディスク番号が「DISK#xxxx」であるHDDを、単に「DISK#xxxx」と呼ぶ。
【0063】
「ディスク状態」には、リビルド制御部223の処理により、例えば、「正常」「正常HS」「故障」「構築中」のいずれかを示す情報が設定される。
「正常」は、対応するHDDが正常に動作していることを示す。ただし、対応するHDDが正常に動作しており、かつそのHDDがホットスペアとして設定されている場合には、ディスク状態には「正常HS」と設定される。なお、ストレージシステム100の初期状態では、DE300内のHDDのうちあらかじめ決められたディスク番号に対応するHDDが、ホットスペアに設定される。
【0064】
「故障」は、対応するHDDが故障していることを示す。ディスク状態が「故障」に設定される場合とは、エラー監視部222によって対応するHDDが故障していると判定された場合である。また、故障と判定されたHDDが新たなHDDに交換されるまでの間、ディスク状態は「故障」に設定されたままになる。
【0065】
「構築中」は、対応するHDDを格納先としてリビルド処理またはコピーバック処理が行われていることを示す。
図6は、RAID管理テーブルに登録される情報の例を示す図である。RAID管理テーブル240には、CM201に設定されたRAIDグループごとにそれぞれレコード241が設けられる。各レコード241には、「RAIDグループ番号」「RAIDレベル」「使用ディスク数」「RAIDグループ状態」「初期ディスク番号」「使用ディスク番号」「パトロールフラグ」が登録される。
【0066】
「RAIDグループ番号」は、RAIDグループを識別する情報である。「RAIDレベル」は、対応するRAIDグループに設定されるRAIDレベルを示す。「使用ディスク数」は、対応するRAIDグループに属するHDDの数を示す。
【0067】
「RAIDグループ状態」は、対応するRAIDグループについて正常に運用されているかを示す情報である。「RAIDグループ状態」には、リビルド制御部223の処理により、例えば「正常」「縮退中」「リビルド中」「コピーバック中」「HS使用中」「異常」のいずれかを示す情報が設定される。
【0068】
「正常」は、対応するRAIDグループが正常に運用されていることを示す。「縮退中」は、RAIDレベルがRAID−6に設定されている場合にのみ設定され得る。「縮退中」は、対応するRAIDグループに属するHDDのうち1台が故障により縮退した状態であり、残りのHDDによってRAID−5で運用を継続している状態を示す。
【0069】
「リビルド中」は、対応するRAIDグループに属するHDDのうちの1台を格納先としてリビルド処理が行われていることを示す。「コピーバック中」は、対応するRAIDグループに属するHDDのうちの1台を格納先としてコピーバック処理が行われていることを示す。
【0070】
「HS使用中」は、対応するRAIDグループが正常に運用されているものの、RAIDグループに属するHDDのうちの1台がホットスペアであることを示す。「異常」は、対応するRAIDグループが運用できない状態であることを示す。例えば、RAIDグループに属するHDDの故障によりデータを冗長化できない状態であることを示す。
【0071】
「初期ディスク番号」および「使用ディスク番号」は、ともに対応するRAIDグループに属するHDDを示す。「初期ディスク番号」の欄は、「使用ディスク数」に設定された数と同数だけ設けられる。また、「使用ディスク番号」の欄も、「使用ディスク数」に設定された数と同数だけ設けられる。
【0072】
「初期ディスク番号」は、対応するRAIDグループに属するHDDとして初期設定されたHDDのディスク番号を示す。「RAIDグループ状態」が「正常」である場合、「初期ディスク番号」に設定された番号に対応するHDDが実際に使用される。「初期ディスク番号」には、ホットスペアのHDDを示すディスク番号は設定されない。
【0073】
「使用ディスク番号」は、対応するRAIDグループに属するものとして現在実際に使用されているHDDのディスク番号を示す。「RAIDグループ状態」が「正常」である場合、「使用ディスク番号」のそれぞれに設定されるディスク番号は、「初期ディスク番号」のそれぞれに設定されるディスク番号と一致する。一方、例えば、「RAIDグループ状態」が「HS使用中」である場合、「使用ディスク番号」のうちの1つがホットスペアのHDDのディスク番号を示すようになり、このディスク番号は、対応する「初期ディスク番号」に設定されたディスク番号と一致しない。
【0074】
「パトロールフラグ」は、リビルド制御部223によって設定されるフラグ情報であり、エラー監視部222によるパトロールが強化されているか否かを示す。後述するように、RAIDグループにおけるデータの冗長度が正常状態より低い状態(具体的には、RAIDレベルがRAID−6からRAID−5に変更されている場合)において、パトロールが強化される。「パトロールフラグ」には、パトロールが強化されているとき、「1」が設定され、パトロールが強化されていないとき、「0」が設定される。なお、「パトロールフラグ」の初期値は「0」である。
【0075】
図7は、エラー点数テーブルに登録される情報の例を示す図である。
エラー点数テーブル250には、DE300内のHDDごとにそれぞれレコード251が設けられる。各レコード251には、HDDを識別する「ディスク番号」と、エラー監視部222によって対応するHDDのエラーが検出されるたびに累積加算される「エラー点数」とが設定される。なお、「エラー点数」の初期値は「0」である。
【0076】
次に、CM201によるリビルド処理およびコピーバック処理について説明する。
CM201は、RAIDグループに属するHDDのうちの1つが故障した場合に、リビルド制御部223の制御の下で、ホットスペアのHDDに対するリビルド処理と、故障したHDDから交換された新たなHDD(以下、「交換されたHDD」と呼ぶ)に対するリビルド処理のどちらかを実行する。また、CM201は、ホットスペアに対するリビルド処理を実行した場合には、故障したHDDが交換された後、交換されたHDDに対するコピーバック処理を実行する。
【0077】
図8は、ホットスペアに対するリビルド処理およびコピーバック処理の実行手順例を示す図である。また、図9〜図11は、図8の処理実行時におけるディスク管理テーブルおよびRAID管理テーブルの遷移例を示す図である。これらの図8〜図11を用いて、ホットスペアに対するリビルド処理と、その後のコピーバック処理について説明する。
【0078】
図8の初期状態では、例えば図8の左下に示すように、DE300内のHDDのうち4台のDISK#0000〜DISK#0003が、RAID−6で運用されるRAIDグループ「GP#00」に属する。また、DE300に設けられたDISK#0100は、ホットスペアに設定されている。
【0079】
図9〜図11には、RAID管理テーブル240のレコード241のうち、RAIDグループ「GP#00」に対応するレコード241aを示す。また、図9〜図11には、ディスク管理テーブル230のレコード231のうち、DISK#0000,#0001,#0002,#0003,#0100にそれぞれ対応するレコード231a,231b,231c,231d,231eを示す。
【0080】
図9の上段に示すように、RAIDグループ「GP#00」が正常に運用されている初期状態では、RAID管理テーブル240のレコード241aにおける「RAIDグループ状態」には「正常」が設定され、「初期ディスク番号」および「使用ディスク番号」には、ともにDISK#0000〜DISK#0003が設定されている。また、「初期ディスク番号」に設定された各ディスク番号に対応する、ディスク管理テーブル230のレコード231a〜231dでは、すべての「ディスク状態」に「正常」が設定されている。さらに、ホットスペアのDISK#0100に対応するディスク管理テーブル230のレコード231eでは、「ディスク状態」に「正常HS」が設定されている。
【0081】
以上の状態から、CM201のエラー監視部222がDISK#0002が故障したと判定したとする(図8のステップS11)。エラー監視部222は、DISK#0002が故障したことをリビルド制御部223に通知する。リビルド制御部223は、図9の下段に示すように、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」を「縮退」に更新するとともに、DISK#0002に対応するレコード231cの「ディスク状態」を「故障」に更新する。
【0082】
このようなテーブル更新処理により、リビルド制御部223は、アクセス制御部221に、データの冗長度を下げたRAID−5によってRAIDグループ「GP#00」の運用を継続させる(図8のステップS12)。アクセス制御部221は、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」が「縮退」に更新され、DISK#0002に対応するレコード231cの「ディスク状態」が「故障」に更新されたことを認識すると、故障したHDD以外のDISK#0000,#0001,#0003を用いたRAID−5によるデータ記録制御を実行する。
【0083】
リビルド制御部223は、後述する判定処理を行い、その結果、リビルド処理におけるデータの格納先をホットスペアのDISK#0100に決定する。リビルド制御部223は、図10の上段に示すように、RAIDグループ「GP#00」に対応するレコード241aにおいて、「RAIDグループ状態」を「リビルド中」に更新するとともに、DISK#0002が設定されていた「使用ディスク番号」をDISK#0100に更新する。さらに、リビルド制御部223は、ホットスペアのDISK#0100に対応するレコード231eの「ディスク状態」を「構築中」に更新する。
【0084】
このようなテーブル更新処理により、リビルド制御部223は、アクセス制御部221に、ホットスペアのDISK#0100に対するリビルド処理を開始させる(図8のステップS13)。アクセス制御部221は、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」が「リビルド中」に更新されたことを認識する。これとともに、アクセス制御部221は、故障したHDDに対応する「使用ディスク番号」がDISK#0100に更新されていることから、リビルド処理におけるデータの格納先をDISK#0100と認識する。アクセス制御部221は、DISK#0000,#0001,#0003に記録されたデータを基に、故障したDISK#0002に記録されていたデータを再構築して、ホットスペアのDISK#0100に格納する。
【0085】
なお、DISK#0100に対するリビルド処理が実行されている間、アクセス制御部221は、ホスト装置400からの要求に応じた、RAIDグループ「GP#00」に属するHDDへのアクセス処理も継続する。
【0086】
ここで、リビルド処理におけるデータの再構築の方法について補足説明する。
RAIDグループ「GP#00」が正常に運用されている状態では、アクセス制御部221は、ホスト装置400からの書き込み対象データをストライプに分割し、分割したストライプのうち2つのストライプ(第1/第2のストライプ)を基に、それぞれ異なる演算方法によって第1/第2のパリティを計算する。アクセス制御部221は、第1/第2のストライプおよび第1/第2のパリティという4つのデータを、1つのデータが1つのHDDに割り当てられるように、RAIDグループ「GP#00」に属する4つのDISK#0000〜#0003に記録する。また、アクセス制御部221は、上記の第1/第2のストライプおよび第1/第2のパリティについての、DISK#0000〜#0003への割り当て方を順次変更していく。
【0087】
故障したDISK#0002に記録されていた第1のストライプを再構築する場合、アクセス制御部221は、残りのDISK#0000,#0001,#0003のうちの2つから、第2のストライプと、第1のパリティまたは第2のパリティとを読み出し、読み出したデータを基に第1のストライプを計算により復元する。故障したDISK#0002に記録されていた第2のストライプを再構築する場合も、同様に、アクセス制御部221は、残りのDISK#0000,#0001,#0003のうちの2つから、第1のストライプと、第1のパリティまたは第2のパリティとを読み出し、読み出したデータを基に第2のストライプを計算により復元する。故障したDISK#0002に記録されていた第1のパリティまたは第2のパリティを再構築する場合、アクセス制御部221は、残りのDISK#0000,#0001,#0003のうち2つから、第1/第2のストライプを読み出し、読み出したデータを基に第1のパリティまたは第2のパリティを再計算する。
【0088】
DISK#0100に対するリビルド処理が終了すると、リビルド制御部223は、図10の下段に示すように、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」を「HS使用中」に更新するとともに、DISK#0100に対応するレコード231eの「ディスク状態」を「正常」に更新する。
【0089】
このようなテーブル更新処理により、リビルド制御部223は、アクセス制御部221に、ホットスペアのHDDを用いて、RAIDグループ「GP#00」をRAID−6によって暫定的に運用させる(図8のステップS14)。アクセス制御部221は、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」が「HS使用中」に更新され、かつ、DISK#0100に対応するレコード231cの「ディスク状態」が「故障」に更新されたことを認識すると、レコード241aの「使用ディスク」に設定されたDISK#0000,#0001,#0100,#0003を用いたRAID−6によるデータ記録制御を実行する。
【0090】
その後、管理者によって、故障したDISK#0002が新たなHDDに交換される。リビルド制御部223は、例えばアクセス制御部221を通じて、DISK#0002が交換されたことを検知する(図8のステップS15)。DISK#0002が交換されたことを検知したリビルド制御部223は、図11の上段に示すように、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」を「コピーバック中」に更新するとともに、DISK#0002に対応するレコード231cの「ディスク状態」を「構築中」に更新する。
【0091】
このようなテーブル更新処理により、リビルド制御部223は、アクセス制御部221に、DISK#0002に対するコピーバック処理を開始させる(図8のステップS16)。アクセス制御部221は、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」が「コピーバック中」に更新されたことを認識する。このとき、アクセス制御部221は、「初期ディスク番号」に設定されたHDDのうちDISK#0002に対応するレコード231cの「ディスク状態」が「構築中」に更新されていることから、コピーバック処理におけるデータの格納先がDISK#0002であることを認識するとともに、コピーバック処理におけるデータの読み出し元が、DISK#0002が設定された「初期ディスク番号」に対応する「使用ディスク番号」に設定されたDISK#0100であることを認識する。アクセス制御部221は、DISK#0100に記録されているデータをDISK#0002に転送する。
【0092】
なお、DISK#0002に対するコピーバック処理が実行されている間、アクセス制御部221は、ホスト装置400からの要求に応じた、RAIDグループ「GP#00」に属するHDDへのアクセス処理も継続する。
【0093】
DISK#0002に対するコピーバック処理が終了すると、リビルド制御部223は、図11の下段に示すように、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」を「正常」に更新するとともに、DISK#0002に対応するレコード231cの「ディスク状態」を「正常」に更新する。このようなテーブル更新処理により、リビルド制御部223は、RAIDグループ「GP#00」を正常な運用状態に復帰させる(図8のステップS17)。
【0094】
アクセス制御部221は、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」が「正常」に更新されたことを認識すると、レコード241aの「使用ディスク」に設定されたDISK#0000〜#0003を用いたRAID−6によるデータ記録制御を実行する。
【0095】
また、リビルド制御部223は、DISK#0100に対応するレコード231eの「ディスク状態」を「正常HS」に更新して、DISK#0100をホットスペアとして使用可能な状態に戻す。
【0096】
次に、図12は、交換されたHDDに対するリビルド処理の実行手順例を示す図である。また、図13は、図12の処理実行時におけるディスク管理テーブルおよびRAID管理テーブルの遷移例を示す図である。これらの図12,図13と、前述の図9とを用いて、交換されたHDDに対するリビルド処理について説明する。
【0097】
図12の初期状態では、前述の図8と同様に、DE300内のHDDのうち4台のDISK#0000〜DISK#0003が、RAID−6で運用されるRAIDグループ「GP#00」に属する。また、DE300に設けられたDISK#0100は、ホットスペアに設定されている。このとき、RAIDグループ「GP#00」に対応するレコード241aと、DISK#0000〜#0003,#0100にそれぞれ対応するレコード231a〜231eとは、図9の上段の状態となる。
【0098】
この状態から、CM201のエラー監視部222がDISK#0002が故障したと判定したとする(図12のステップS21)。エラー監視部222は、DISK#0002が故障したことをリビルド制御部223に通知する。リビルド制御部223は、図9の下段に示すように、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」を「縮退」に更新するとともに、DISK#0002に対応するレコード231cの「ディスク状態」を「故障」に更新する。このようなテーブル更新処理により、RAID−5によってRAIDグループ「GP#00」の運用が継続される(図12のステップS22)。
【0099】
リビルド制御部223は、後述する判定処理を行い、その結果、リビルド処理におけるデータの格納先を、交換後のHDDと決定する。この場合、リビルド制御部223は、故障したDISK#0002が新たなHDDに交換されたかを監視する。そして、DISK#0002が新たなHDDに交換されたことを検知すると(図12のステップS23)、リビルド制御部223は、図13の上段に示すように、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」を「リビルド中」に更新するとともに、DISK#0002に対応するレコード231cの「ディスク状態」を「構築中」に更新する。
【0100】
このようなテーブル更新処理により、リビルド制御部223は、アクセス制御部221に、DISK#0002に対するリビルド処理を開始させる(図12のステップS24)。アクセス制御部221は、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」が「リビルド中」に更新されたことを認識する。このとき、アクセス制御部221は、故障状態であったDISK#0002に対応するレコード231cの「ディスク状態」が「構築中」に更新されていることから、リビルド処理におけるデータの格納先がDISK#0002であることを認識する。アクセス制御部221は、DISK#0000,#0001,#0003に記録されたデータを基に、故障した交換前のDISK#0002に記録されていたデータを再構築して、交換されたDISK#0002に格納する。
【0101】
DISK#0002に対するリビルド処理が終了すると、リビルド制御部223は、図13の下段に示すように、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」を「正常」に更新するとともに、DISK#0002に対応するレコード231cの「ディスク状態」を「正常」に更新する。このようなテーブル更新処理により、リビルド制御部223は、RAIDグループ「GP#00」を正常な運用状態に復帰させる(図12のステップS25)。
【0102】
アクセス制御部221は、RAIDグループ「GP#00」に対応するレコード241aの「RAIDグループ状態」が「正常」に更新されたことを認識すると、レコード241aの「使用ディスク」に設定されたDISK#0000〜#0003を用いたRAID−6によるデータ記録制御を実行する。
【0103】
ところで、ホットスペアのHDDに対するリビルド処理を実行する場合には、図8に示したように、RAIDグループに属するHDDが故障したとき、即座にホットスペアのHDDをデータの格納先として割り当てて、リビルド処理を開始できる。リビルド処理が終了するまでの期間では冗長度が低下するものの、リビルド処理が終了すると、データの冗長度を元の状態に復帰できる。従って、HDDに記録されたデータの安全性を比較的高く保つことができる。
【0104】
しかしながら、ホットスペアのHDDはあくまで一時的なデータの格納先であることから、ホットスペアのHDDに対するリビルド処理を実行した場合には、その後に、交換されたHDDに対するコピーバック処理を実行する必要が生じる。コピーバック処理は、RAIDグループに属するHDDのうち故障していないHDDからのデータ読み出し処理や、読み出したデータに基づくCM201での計算処理などを含む。このため、ホスト装置400からの要求に応じてアクセス制御処理を継続しつつ、コピーバック処理を実行すると、RAIDグループに属するHDDにおけるアクセス処理負荷や、CM201のCPU211の処理負荷が増大してしまう。これにより、ホスト装置400からのアクセス要求に対する応答速度が低下する可能性があるという問題がある。最悪の場合には、ホスト装置400からの要求に応じたHDDへのアクセスを実行できない可能性もある。
【0105】
このような問題を回避するために、HDDの故障が発生したとき、ホットスペアのHDDを用いず、交換されたHDDに対するリビルド処理を実行することを望むユーザも存在する。図12に示したように、交換されたHDDに対するリビルド処理を実行した場合には、リビルド処理が終了すると、コピーバック処理を行うことなく、RAIDグループを元通りに運用できる。このように、コピーバック処理を実行しない分だけ、HDDでのアクセス処理負荷やCM201のCPU211の処理負荷を軽減でき、ホスト装置400からのアクセス要求に対する応答速度が低下する可能性を低減できる。
【0106】
しかしながら、交換されたHDDに対するリビルド処理を実行する場合には、HDDの故障が発生してから、リビルド処理が終了するまでの時間が長くなる可能性が高まる。リビルド処理が終了するまでの期間では、RAID−6からRAID−5に変更されて運用が継続されることで、データの冗長度が低下した状態となる。このため、交換されたHDDに対するリビルド処理を実行する場合は、ホットスペアのHDDに対するリビルド処理を実行する場合と比較して、HDDに記録されたデータの安全性が低下するという問題がある。リビルド処理が終了するまでの間、RAID−5で運用が継続されることで、さらに1台のHDDが故障した場合にはデータの冗長度が失われてしまう。また、RAID−5で運用された状態でさらに2台のHDDが故障した場合には、データの一部が失われてしまう。そして、故障したHDDが交換されるまでの時間が長くなるほど、記録されたデータの安全性は低くなる。
【0107】
本実施の形態のCM201は、RAIDグループに属する1台のHDDが故障したとき、データの冗長度を落とした状態でも記録されたデータの安全性をある程度維持できる状態かを判定する。CM201は、記録されたデータの安全性をある程度維持できると判定した場合には、故障されたHDDが交換されるのを待ち、交換されたHDDをデータの格納先としたリビルド処理を実行する。これにより、記録されたデータの安全性をある程度維持しつつ、HDDでのアクセス負荷やCM201の処理負荷を軽減する。一方、CM201は、記録されたデータの安全性を維持できないと判定した場合には、ホットスペアのHDDをデータの格納先としたリビルド処理を実行し、記録されたデータの安全性が著しく低下することを防止する。
【0108】
以上のように、リビルド処理時のデータ格納先を交換されたHDDまたはホットスペアのHDDのどちらにするかを自動的に判定することで、ホスト装置400からのアクセス要求に対する応答速度を維持したいというユーザの要望に応えることを可能にしつつ、記録されたデータの安全性もある程度維持できるようになる。
【0109】
以下、CM201の処理を、フローチャートを用いて説明する。なお、以下の図14,図15の処理では、処理対象のRAIDグループに設定されたRAIDレベルがRAID−6であるものとする。
【0110】
まず、図14は、エラー監視部によるパトロール処理手順の例を示すフローチャートである。この図14の処理は、RAID管理テーブル240に登録されたRAIDグループごとに実行される。
【0111】
[ステップS41]エラー監視部222は、自身が備える計時機能のカウント値を「0」にリセットする。
[ステップS42]エラー監視部222は、アクセス制御部221に、RAIDグループに属するHDDに対するエラー検査を実行させる。
【0112】
具体的には、エラー監視部222は、RAID管理テーブル240内の、処理対象のRAIDグループに対応するレコード241から、「初期ディスク番号」に設定されたディスク番号を読み込む。エラー監視部222はさらに、読み込んだディスク番号のうち、各ディスク番号に対応するディスク管理テーブル230内のレコード231における「ディスク状態」に「正常」が設定されたディスク番号を選別し、選別したディスク番号に対応するHDDをエラー検査の実行対象に決定する。エラー監視部222は、エラー検査の実行対象に決定したHDDのディスク番号をアクセス制御部221に通知し、エラー検査の実行対象のHDDに対して所定のコマンドを送信するように要求する。
【0113】
アクセス制御部221は、エラー監視部222からの要求に応じて、エラー検査の実行対象のHDDに対して所定のコマンドを送信する。アクセス制御部221は、コマンド送信に対する応答から、コマンド送信先のHDDにおけるエラーの発生の有無を判定し、HDDごとのエラーの判定結果をエラー監視部222に通知する。
【0114】
[ステップS43]エラー監視部222は、ステップS42でのエラー検査の実行により、HDDでエラーが発生したかを判定する。エラー監視部222は、アクセス制御部221から1つ以上のHDDでエラーが発生したことの通知を受けた場合(S43:Yes)、ステップS44の処理を実行する。一方、エラー監視部222は、アクセス制御部221から全HDDでエラーが発生しなかったことの通知を受けた場合(S43:No)、ステップS48の処理を実行する。
【0115】
[ステップS44]エラー監視部222は、エラーが発生したHDDのディスク番号を、リビルド制御部223に通知する。なお、このステップS44の処理は、ステップS43でエラーが発生したと判定され、かつ、後述するステップS48で「Yes」と判定された場合に実行されてもよい。
【0116】
[ステップS45]エラー監視部222は、エラーが発生したHDDに対応するエラー点数テーブル250のエラー点数を「1」だけインクリメントする。なお、エラー監視部222は、例えば、発生したエラーの種類に応じた異なる値をエラー点数に加算してもよい。
【0117】
[ステップS46]エラー監視部222は、ステップS44で加点したエラー点数が所定の値に達したかを判定する。エラー監視部222は、エラー点数が所定値に達した場合(S46:Yes)、ステップS47の処理を実行する一方、エラー点数が所定値に達していない場合(S46:No)、ステップS48の処理を実行する。
【0118】
[ステップS47]エラー監視部222は、エラー点数が所定値に達したHDDについて、故障が発生したと判定する。エラー監視部222は、故障が発生したHDDのディスク番号と、このHDDが属するRAIDグループとを、リビルド制御部223に通知する。
【0119】
なお、故障が発生したHDDが1台の場合、故障発生の通知を受けたリビルド制御部223は、後述する図15の処理の実行を開始する。ただし、故障が発生したHDDが2台以上の場合、リビルド制御部223は、例えば、RAIDグループの運用を停止する。
【0120】
[ステップS48]エラー監視部222は、RAID管理テーブル240内の、処理対象のRAIDグループに対応するレコード241から、パトロールフラグに設定された値を読み込み、パトロールが強化されているかを判定する。パトロールフラグが「0」である場合(S48:No)、エラー監視部222は、パトロールが強化されていないと判定して、ステップS49の処理を実行する。一方、パトロールフラグが「1」である場合(S48:Yes)、エラー監視部222は、パトロールが強化されていると判定して、ステップS50の処理を実行する。
【0121】
[ステップS49]エラー監視部222は、カウント上限値をT1(例えば1.0秒)に設定し、時間のカウントを開始する。
[ステップS50]エラー監視部222は、カウント上限値を、T1より小さいT2(例えば0.2秒)に設定し、時間のカウントを開始する。
【0122】
[ステップS51]エラー監視部222は、時間のカウント値が、ステップS49またはステップS50で設定されたカウント上限値に達したかを判定し、カウント上限値に達したとき(S51:Yes)、ステップS41の処理を実行する。これにより、HDDに対するエラー検査が再度実行される。
【0123】
以上の図14の処理では、処理対象のRAIDグループに属するHDDにおいてエラーが検出された場合(S43:Yes)、エラー監視部222は、エラーが検出されたHDDに対応するエラー点数を加点する(S45)。このとき、加点したエラー点数が所定値に達した場合(S46:Yes)には、エラー監視部222は、リビルド制御部223に対して故障の発生を通知する(S47)。
【0124】
なお、エラー監視部222は、例えば、ステップS42でのエラー検査や、ホスト装置400からの要求に応じたアクセス制御部221によるHDDへのアクセス処理において、深刻なエラーが検出された場合には、エラー点数に関係なく、リビルド制御部223に対して故障の発生を通知してもよい。
【0125】
また、図14の処理において、エラー監視部222は、パトロールフラグが「1」である場合(S48:Yes)には、「0」である場合(S48:No)より、エラー検査を実行する間隔を短くする(S50)。これにより、パトロールフラグが「1」である状態では、処理対象のRAIDグループに属するHDDに対するパトロールが強化される。
【0126】
図15は、リビルド制御部によるリビルド制御処理手順の例を示すフローチャートである。この図15の処理は、図14のステップS47において、エラー監視部222からリビルド制御部223に対してHDDの故障発生が通知されたときに、リビルド制御部223によって実行される。なお、図15の処理は、HDDの故障発生時だけでなく、故障発生以外の要因でHDDの使用が中止される場合に実行されてもよい。
【0127】
[ステップS61]リビルド制御部223は、エラー監視部222から、故障が発生したHDDのディスク番号と、このHDDが属するRAIDグループの通知を受ける。リビルド制御部223は、エラー監視部222から通知されたディスク番号に対応するレコード231をディスク管理テーブル230から抽出し、抽出したレコード231における「ディスク状態」を「故障」に更新する。これとともに、リビルド制御部223は、エラー監視部222から通知されたRAIDグループに対応するレコード241をRAID管理テーブル240から抽出し、抽出したレコード241における「RAIDグループ状態」を「縮退」に更新する。これにより、リビルド制御部223は、故障したHDDが属するRAIDグループについて、データの冗長度が低下するRAID−5によって運用を継続させる。
【0128】
なお、以上のステップS61の処理は、図8のステップS12または図12のステップS22に対応する。
[ステップS62]リビルド制御部223は、自身が備える計時機能のカウント値を「0」に初期化し、時間のカウントを開始する。
【0129】
[ステップS63]リビルド制御部223は、ステップS61でRAID管理テーブル240から抽出したレコード241において、「初期ディスク番号」に設定された未選択のディスク番号を1つ選択する。ただし、このステップS63で選択の対象とするディスク番号には、ステップS61で故障が発生したと判定されているHDDのディスク番号を含まない。
【0130】
[ステップS64]リビルド制御部223は、エラー点数テーブル250に基づき、ステップS63で選択したディスク番号が示すHDDについての過去のエラー発生状況を判定する。具体的には、リビルド制御部223は、ステップS63で選択したディスク番号に対応するエラー点数を、エラー点数テーブル250から読み込む。リビルド制御部223は、読み込んだエラー点数が所定のしきい値Th以上である場合(S64:Yes)には、ステップS73の処理を実行する一方、エラー点数がしきい値Th未満である場合(S64:No)には、ステップS65の処理を実行する。なお、しきい値Thは、1以上の任意の値に設定可能である。
【0131】
[ステップS65]リビルド制御部223は、ステップS61でRAID管理テーブル240から抽出したレコード241の「初期ディスク番号」に設定されたディスク番号をすべて選択済みか判定する。リビルド制御部223は、未選択のディスク番号がある場合(S65:No)、ステップS63の処理を実行する一方、すべてのディスク番号を選択済みである場合(S65:Yes)、ステップS66の処理を実行する。
【0132】
[ステップS66]リビルド制御部223は、ステップS61でRAID管理テーブル240から抽出したレコード241の「パトロールフラグ」を、「0」から「1」に更新する。
【0133】
[ステップS67]リビルド制御部223は、ステップS63で選択したディスク番号が示すHDDのうちの1つにおいて、エラー監視部222からエラーが発生したことの通知を受けたかを判定する。このステップS67でエラー発生の通知を受ける場合とは、図14のステップS44で、エラー監視部222がリビルド制御部223にエラー発生を通知する場合である。リビルド制御部223は、エラー発生の通知を受けた場合(S67:Yes)、ステップS72の処理を実行する一方、エラー発生の通知を受けなかった場合(S67:No)、ステップS68の処理を実行する。
【0134】
[ステップS68]リビルド制御部223は、ステップS62で時間のカウントを開始してから、所定の時間Tが経過したかを判定する。リビルド制御部223は、時間Tが経過していない場合(S68:No)、ステップS69の処理を実行する一方、時間Tが経過した場合(S68:Yes)、ステップS72の処理を実行する。
【0135】
[ステップS69]リビルド制御部223は、故障が発生したHDDが新たなHDDに交換されたかを判定する。なお、アクセス制御部221は、HDDがDE300から取り外された後、取り外された位置にHDDが取り付けられて、取り付けられたHDDとの通信が可能になったことを検知すると、HDDが交換されたことを、交換されたHDDのディスク番号とともにリビルド制御部223に通知する。リビルド制御部223は、HDDが交換されたことを検知しなかった場合(S69:No)、ステップS67の処理を実行する一方、HDDが交換されたことを検知した場合(S69:Yes)、ステップS70の処理を実行する。
【0136】
[ステップS70]リビルド制御部223は、ステップS61でRAID管理テーブル240から抽出したレコード241の「パトロールフラグ」を、「0」に戻す。
[ステップS71]リビルド制御部223は、アクセス制御部221に、交換されたHDDに対するリビルド処理を開始させる。この処理は、図12のステップS24で説明した通りである。また、リビルド制御部223は、交換されたHDDに対するリビルド処理が終了すると、図12のステップS25で説明したように、リビルド処理が終了したRAIDグループのRAIDレベルをRAID−6に戻して、このRAIDグループの運用状態をHDDの故障前の状態に復帰させる。
【0137】
[ステップS72]リビルド制御部223は、ステップS61でRAID管理テーブル240から抽出したレコード241の「パトロールフラグ」を、「0」に戻す。
[ステップS73]リビルド制御部223は、アクセス制御部221に、ホットスペアのHDDに対するリビルド処理を開始させる。この処理は、図8のステップS13で説明した通りである。また、リビルド制御部223は、ホットスペアのHDDに対するリビルド処理が終了すると、図8のステップS14〜S17で説明した処理を実行する。
【0138】
以上の図15の処理では、リビルド制御部223は、RAID−6で運用されていたRAIDグループに属するHDDが故障したとき、同じRAIDグループに属する他のHDDについての過去のエラー発生状況を判定する(S64)。
【0139】
リビルド制御部223は、いずれかのHDDについてのエラー点数がしきい値Th以上である場合(S64:Yes)、同じRAIDグループに属する、故障したHDD以外のHDDにおいて今後に故障が発生する可能性が高いと推定する。この場合、リビルド制御部23は、データの安全性を保つためにはできるだけ早くリビルド処理を実行するべきと判断して、ホットスペアのHDDに対するリビルド処理を即座に実行させる(S73)。これにより、正常運用時よりデータの冗長性が低いRAID−5で運用される期間の長さが最小限になり、さらなるHDDの故障によって、データの冗長性を失う、あるいはデータの一部を失うといった事態の発生確率を低くすることができる。
【0140】
一方、リビルド制御部223は、すべてのHDDについてエラー点数がしきい値Th未満である場合(S64:No)には、同じRAIDグループに属する、故障したHDD以外のHDDにおいて今後に故障が発生する可能性が低いと推定する。この場合、リビルド制御部223は、ある程度の期間リビルド処理を実行しなくてもデータの安全性が保たれると判断し、故障したHDDが新たなHDDに交換されるまで、リビルド処理を実行しない。そして、故障したHDDが新たなHDDが交換されると(S69:Yes)、リビルド制御部223は、交換されたHDDに対するリビルド処理を実行させる(S71)。この場合、コピーバック処理を実行する必要がなくなり、RAIDグループ内のHDDにおけるアクセス処理負荷や、CM201のCPU211の処理負荷が軽減される。
【0141】
このように、同じRAIDグループに属する、故障したHDD以外のHDDにおいて今後に故障が発生する可能性が低いと推定される場合にのみ、交換されたHDDに対するリビルド処理を行うようにすることで、データの安全性をある程度維持しながらも、HDDにおけるアクセス処理負荷や、CM201のCPU211の処理負荷を軽減することができる。
【0142】
すなわち、図15の処理により、ホスト装置400からのアクセス要求に対する応答速度を維持したいというユーザの要望に応えることを可能にしつつ、記録されたデータの安全性もある程度維持できるようになる。また、ユーザが、HDDの故障時に即座にリビルド処理を実行する運用方法と、HDDを交換した後にリビルド処理を実行する運用方法のどちらを望んでいるかに関係なく、これらの運用方法が自動的に選択される。このため、データの安全性をある程度維持しながらも、ユーザによる設定操作を不要にし、設定忘れや設定誤りを防止できる。
【0143】
また、ユーザによる故障したHDDの交換作業は、何らかの理由で遅れてしまう場合がある。HDDの交換作業が遅れるなどの要因により、リビルド処理の実行開始までの期間が長くなるほど、同じRAIDグループに属する他のHDDで故障が発生する確率が高くなる。このことから、リビルド制御部223は、故障したHDD以外のHDDにおいて今後に故障が発生する可能性が低いと推定される場合(S64:No)であっても、HDDの故障発生から所定の時間Tが経過するまでの期間に、故障したHDDが交換されなかった場合には(S68:Yes)、ホットスペアのHDDに対するリビルド処理を実行させる(S73)。これにより、データの冗長度が低下した、RAID−5で運用される期間を時間T以下に抑えることができ、データの安全性が向上する。
【0144】
さらに、リビルド制御部223は、故障したHDD以外のHDDにおいて今後に故障が発生する可能性が低いと推定された場合(S64:No)であっても、HDDの故障発生から所定の時間Tが経過するまでの間に、故障したHDD以外のHDDでエラーが発生した場合には(S67:Yes)、故障したHDD以外のHDDで故障が発生する可能性が高いと推定する。この場合、リビルド制御部223は、ホットスペアのHDDに対するリビルド処理を実行させる(S73)。これにより、データの安全性が著しく低下しないようにすることができる。
【0145】
また、リビルド制御部223は、同じRAIDグループに属する、故障したHDD以外のHDDにおいて今後に故障が発生する可能性が低いと推定した場合(S64:No)には、パトロールフラグを「1」に設定する(S66)。そして、リビルド制御部223は、リビルド処理を開始させるまでの間、パトロールフラグを「1」のままにする。図14に示したように、パトロールフラグが「1」の状態では、故障したHDD以外のHDDに対するエラー検査の実行間隔が短くなり(S50)、パトロールが強化される。エラー検査の実行間隔が短くなることで、新たなエラーの発生(S67)を早いタイミングで検出できるようになる。パトロールフラグが「1」である期間は、データの冗長度が低下していることから、上記のように新たなエラーの発生を早いタイミングで検出できることで、さらなるデータの冗長度の低下やデータロストの発生を未然に防ぐことができる。
【0146】
なお、上記の第2の実施の形態では、正常運用状態では、データが3重に冗長化されたRAID−6で運用される場合について説明したが、正常運用状態で例えばRAID−1,4,5などを適用してデータが2重に冗長化されるようにしてもよい。この場合、RAIDグループに属する1つのHDDが故障してからリビルド処理が終了するまでの間、データの冗長性が失われた状態になるが、図14,図15の処理を実行することで、データロストが発生する確率を低くすることができる。
【0147】
以上の実施の形態に関し、さらに以下の付記を開示する。
(付記1) 複数の記憶装置と、前記複数の記憶装置に記録するデータが異なる記憶装置に冗長化されるように前記複数の記憶装置に対するデータ記録を制御する制御装置とを備えたストレージシステムにおいて、
前記制御装置は、
前記複数の記憶装置のそれぞれにおけるエラーの発生を監視し、エラーの発生状況を示す情報を記憶装置ごとにエラー情報記憶部に登録するエラー監視部と、
前記複数の記憶装置のうち一の記憶装置の使用を中止したとき、前記エラー情報記憶部に登録された情報を参照し、前記複数の記憶装置のうち前記一の記憶装置以外の記憶装置における過去のエラーの発生状況に基づいて、前記一の記憶装置に記憶されていたデータを生成して他の記憶装置に格納するリビルド処理の実行タイミングを決定するリビルド制御部と、
を有することを特徴とするストレージシステム。
【0148】
(付記2) 前記エラー監視部は、エラーの発生に応じたエラー点数を記憶装置ごとに前記エラー情報記憶部に登録し、
前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外の少なくとも1つの記憶装置に対応するエラー点数が所定値以上である場合には、前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が所定値未満である場合より、前記リビルド処理を早いタイミングで実行する、
ことを特徴とする付記1記載のストレージシステム。
【0149】
(付記3) 前記ストレージシステムは、前記複数の記憶装置のいずれかの代わりに使用される予備用記憶装置をさらに備え、
前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、
前記複数の記憶装置のうち前記一の記憶装置以外の少なくとも1つの記憶装置に対応するエラー点数が前記所定値以上である場合には、前記一の記憶装置に記憶されていたデータを生成して前記予備用記憶装置に格納し、
前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記一の記憶装置が新たな記憶装置に交換されたことを検知した後、前記一の記憶装置に記憶されていたデータを生成して前記新たな記憶装置に格納する、
ことを特徴とする付記2記載のストレージシステム。
【0150】
(付記4) 前記リビルド制御部は、前記一の記憶装置に記憶されていたデータを前記予備用記憶装置に格納した後、前記一の記憶装置が新たな記憶装置に交換されたことを検知したとき、前記予備用記憶装置に格納されたデータを前記新たな記憶装置に書き戻すことを特徴とする付記3記載のストレージシステム。
【0151】
(付記5) 前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記一の記憶装置の使用を中止してからの時間経過を監視し、一定時間が経過するまでに前記一の記憶装置が交換されなかった場合には、前記一の記憶装置に記憶されていたデータを生成して前記予備用記憶装置に格納することを特徴とする付記3または4記載のストレージシステム。
【0152】
(付記6) 前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記複数の記憶装置のうち前記一の記憶装置以外の記憶装置におけるエラーの発生を監視し、前記一の記憶装置が交換されたことを検知するまでの間にエラーが発生した場合には、前記一の記憶装置に記憶されていたデータを生成して前記予備用記憶装置に格納することを特徴とする付記3〜5のいずれか1つに記載のストレージシステム。
【0153】
(付記7) 前記エラー監視部は、前記複数の記憶装置のそれぞれにおいてエラーが発生したかを定期的に検査し、
前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記一の記憶装置が交換されるまでの間、前記エラー監視部がエラーの発生を検査する間隔を前記一の記憶装置の使用を中止する前より短くする、
ことを特徴とする付記6記載のストレージシステム。
【0154】
(付記8) 複数の記憶装置に記録するデータが異なる記憶装置に冗長化されるように前記複数の記憶装置に対するデータ記録を制御するストレージ制御装置において、
前記複数の記憶装置のそれぞれにおけるエラーの発生を監視し、エラーの発生状況を示す情報を記憶装置ごとにエラー情報記憶部に登録するエラー監視部と、
前記複数の記憶装置のうち一の記憶装置の使用を中止したとき、前記エラー情報記憶部に登録された情報を参照し、前記複数の記憶装置のうち前記一の記憶装置以外の記憶装置における過去のエラーの発生状況に基づいて、前記一の記憶装置に記憶されていたデータを生成して他の記憶装置に格納するリビルド処理の実行タイミングを決定するリビルド制御部と、
を有することを特徴とするストレージ制御装置。
【0155】
(付記9) 前記エラー監視部は、エラーの発生に応じたエラー点数を記憶装置ごとに前記エラー情報記憶部に登録し、
前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外の少なくとも1つの記憶装置に対応するエラー点数が所定値以上である場合には、前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が所定値未満である場合より、前記リビルド処理を早いタイミングで実行する、
ことを特徴とする付記8記載のストレージ制御装置。
【0156】
(付記10) 前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、
前記複数の記憶装置のうち前記一の記憶装置以外の少なくとも1つの記憶装置に対応するエラー点数が前記所定値以上である場合には、前記一の記憶装置に記憶されていたデータを生成して、生成したデータをあらかじめ用意された予備用記憶装置に格納し、
前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記一の記憶装置が新たな記憶装置に交換されたことを検知した後、前記一の記憶装置に記憶されていたデータを生成して前記新たな記憶装置に格納する、
ことを特徴とする付記9記載のストレージ制御装置。
【0157】
(付記11) 前記リビルド制御部は、前記一の記憶装置に記憶されていたデータを前記予備用記憶装置に格納した後、前記一の記憶装置が新たな記憶装置に交換されたことを検知したとき、前記予備用記憶装置に格納されたデータを前記新たな記憶装置に書き戻すことを特徴とする付記10記載のストレージ制御装置。
【0158】
(付記12) 前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記一の記憶装置の使用を中止してからの時間経過を監視し、一定時間が経過するまでに前記一の記憶装置が交換されなかった場合には、前記一の記憶装置に記憶されていたデータを生成して前記予備用記憶装置に格納することを特徴とする付記10または11記載のストレージ制御装置。
【0159】
(付記13) 前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記複数の記憶装置のうち前記一の記憶装置以外の記憶装置におけるエラーの発生を監視し、前記一の記憶装置が交換されたことを検知するまでの間にエラーが発生した場合には、前記一の記憶装置に記憶されていたデータを生成して前記予備用記憶装置に格納することを特徴とする付記10〜12のいずれか1つに記載のストレージ制御装置。
【0160】
(付記14) 複数の記憶装置と、前記複数の記憶装置に記録するデータが異なる記憶装置に冗長化されるように前記複数の記憶装置に対するデータ記録を制御する制御装置とを備えたストレージシステムにおけるストレージ制御方法であって、
前記制御装置が、
前記複数の記憶装置のそれぞれにおけるエラーの発生を監視して、エラーの発生状況を示す情報を記憶装置ごとにエラー情報記憶部に登録し、
前記複数の記憶装置のうち一の記憶装置の使用を中止したとき、前記エラー情報記憶部に登録された情報を参照し、前記複数の記憶装置のうち前記一の記憶装置以外の記憶装置における過去のエラーの発生状況に基づいて、前記一の記憶装置に記憶されていたデータを生成して他の記憶装置に格納するリビルド処理の実行タイミングを決定する、
ことを特徴とするストレージ制御方法。
【0161】
(付記15) 前記エラーの発生状況を示す情報として、エラーの発生に応じたエラー点数を記憶装置ごとに前記エラー情報記憶部に登録し、
前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外の少なくとも1つの記憶装置に対応するエラー点数が所定値以上である場合には、前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が所定値未満である場合より、前記リビルド処理を早いタイミングで実行する、
ことを特徴とする付記14記載のストレージ制御方法。
【0162】
(付記16) 前記一の記憶装置の使用を中止したとき、
前記複数の記憶装置のうち前記一の記憶装置以外の少なくとも1つの記憶装置に対応するエラー点数が前記所定値以上である場合には、前記一の記憶装置に記憶されていたデータを生成して、生成したデータをあらかじめ用意された予備用記憶装置に格納し、
前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記一の記憶装置が新たな記憶装置に交換されたことを検知した後、前記一の記憶装置に記憶されていたデータを生成して前記新たな記憶装置に格納する、
ことを特徴とする付記15記載のストレージ制御方法。
【0163】
(付記17) 前記一の記憶装置に記憶されていたデータを前記予備用記憶装置に格納した場合、その後、前記一の記憶装置が新たな記憶装置に交換されたことを検知したとき、前記予備用記憶装置に格納されたデータを前記新たな記憶装置に書き戻すことを特徴とする付記16記載のストレージ制御方法。
【0164】
(付記18) 前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記一の記憶装置の使用を中止してからの時間経過を監視し、一定時間が経過するまでに前記一の記憶装置が交換されなかった場合には、前記一の記憶装置に記憶されていたデータを生成して前記予備用記憶装置に格納することを特徴とする付記16または17記載のストレージ制御方法。
【0165】
(付記19) 前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記複数の記憶装置のうち前記一の記憶装置以外の記憶装置におけるエラーの発生を監視し、前記一の記憶装置が交換されたことを検知するまでの間にエラーが発生した場合には、前記一の記憶装置に記憶されていたデータを生成して前記予備用記憶装置に格納することを特徴とする付記16〜18のいずれか1つに記載のストレージ制御方法。
【0166】
(付記20) 前記複数の記憶装置のそれぞれにおけるエラーの発生を監視する処理では、前記複数の記憶装置のそれぞれにおいてエラーが発生したかを定期的に検査し、
前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記一の記憶装置が交換されるまでの間、前記エラー監視部がエラーの発生を検査する間隔を前記一の記憶装置の使用を中止する前より短くする、
ことを特徴とする付記19記載のストレージ制御方法。
【符号の説明】
【0167】
1 ストレージシステム
11〜15,14a 記憶装置
20 制御装置
21 エラー監視部
22 エラー情報記憶部
23 リビルド制御部
【特許請求の範囲】
【請求項1】
複数の記憶装置と、前記複数の記憶装置に記録するデータが異なる記憶装置に冗長化されるように前記複数の記憶装置に対するデータ記録を制御する制御装置とを備えたストレージシステムにおいて、
前記制御装置は、
前記複数の記憶装置のそれぞれにおけるエラーの発生を監視し、エラーの発生状況を示す情報を記憶装置ごとにエラー情報記憶部に登録するエラー監視部と、
前記複数の記憶装置のうち一の記憶装置の使用を中止したとき、前記エラー情報記憶部に登録された情報を参照し、前記複数の記憶装置のうち前記一の記憶装置以外の記憶装置における過去のエラーの発生状況に基づいて、前記一の記憶装置に記憶されていたデータを生成して他の記憶装置に格納するリビルド処理の実行タイミングを決定するリビルド制御部と、
を有することを特徴とするストレージシステム。
【請求項2】
前記エラー監視部は、エラーの発生に応じたエラー点数を記憶装置ごとに前記エラー情報記憶部に登録し、
前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外の少なくとも1つの記憶装置に対応するエラー点数が所定値以上である場合には、前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が所定値未満である場合より、前記リビルド処理を早いタイミングで実行する、
ことを特徴とする請求項1記載のストレージシステム。
【請求項3】
前記ストレージシステムは、前記複数の記憶装置のいずれかの代わりに使用される予備用記憶装置をさらに備え、
前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、
前記複数の記憶装置のうち前記一の記憶装置以外の少なくとも1つの記憶装置に対応するエラー点数が前記所定値以上である場合には、前記一の記憶装置に記憶されていたデータを生成して前記予備用記憶装置に格納し、
前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記一の記憶装置が新たな記憶装置に交換されたことを検知した後、前記一の記憶装置に記憶されていたデータを生成して前記新たな記憶装置に格納する、
ことを特徴とする請求項2記載のストレージシステム。
【請求項4】
前記リビルド制御部は、前記一の記憶装置に記憶されていたデータを前記予備用記憶装置に格納した後、前記一の記憶装置が新たな記憶装置に交換されたことを検知したとき、前記予備用記憶装置に格納されたデータを前記新たな記憶装置に書き戻すことを特徴とする請求項3記載のストレージシステム。
【請求項5】
前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記一の記憶装置の使用を中止してからの時間経過を監視し、一定時間が経過するまでに前記一の記憶装置が交換されなかった場合には、前記一の記憶装置に記憶されていたデータを生成して前記予備用記憶装置に格納することを特徴とする請求項3または4記載のストレージシステム。
【請求項6】
前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記複数の記憶装置のうち前記一の記憶装置以外の記憶装置におけるエラーの発生を監視し、前記一の記憶装置が交換されたことを検知するまでの間にエラーが発生した場合には、前記一の記憶装置に記憶されていたデータを生成して前記予備用記憶装置に格納することを特徴とする請求項3〜5のいずれか1項に記載のストレージシステム。
【請求項7】
前記エラー監視部は、前記複数の記憶装置のそれぞれにおいてエラーが発生したかを定期的に検査し、
前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記一の記憶装置が交換されるまでの間、前記エラー監視部がエラーの発生を検査する間隔を前記一の記憶装置の使用を中止する前より短くする、
ことを特徴とする請求項6記載のストレージシステム。
【請求項8】
複数の記憶装置に記録するデータが異なる記憶装置に冗長化されるように前記複数の記憶装置に対するデータ記録を制御するストレージ制御装置において、
前記複数の記憶装置のそれぞれにおけるエラーの発生を監視し、エラーの発生状況を示す情報を記憶装置ごとにエラー情報記憶部に登録するエラー監視部と、
前記複数の記憶装置のうち一の記憶装置の使用を中止したとき、前記エラー情報記憶部に登録された情報を参照し、前記複数の記憶装置のうち前記一の記憶装置以外の記憶装置における過去のエラーの発生状況に基づいて、前記一の記憶装置に記憶されていたデータを生成して他の記憶装置に格納するリビルド処理の実行タイミングを決定するリビルド制御部と、
を有することを特徴とするストレージ制御装置。
【請求項9】
複数の記憶装置と、前記複数の記憶装置に記録するデータが異なる記憶装置に冗長化されるように前記複数の記憶装置に対するデータ記録を制御する制御装置とを備えたストレージシステムにおけるストレージ制御方法であって、
前記制御装置が、
前記複数の記憶装置のそれぞれにおけるエラーの発生を監視して、エラーの発生状況を示す情報を記憶装置ごとにエラー情報記憶部に登録し、
前記複数の記憶装置のうち一の記憶装置の使用を中止したとき、前記エラー情報記憶部に登録された情報を参照し、前記複数の記憶装置のうち前記一の記憶装置以外の記憶装置における過去のエラーの発生状況に基づいて、前記一の記憶装置に記憶されていたデータを生成して他の記憶装置に格納するリビルド処理の実行タイミングを決定する、
ことを特徴とするストレージ制御方法。
【請求項1】
複数の記憶装置と、前記複数の記憶装置に記録するデータが異なる記憶装置に冗長化されるように前記複数の記憶装置に対するデータ記録を制御する制御装置とを備えたストレージシステムにおいて、
前記制御装置は、
前記複数の記憶装置のそれぞれにおけるエラーの発生を監視し、エラーの発生状況を示す情報を記憶装置ごとにエラー情報記憶部に登録するエラー監視部と、
前記複数の記憶装置のうち一の記憶装置の使用を中止したとき、前記エラー情報記憶部に登録された情報を参照し、前記複数の記憶装置のうち前記一の記憶装置以外の記憶装置における過去のエラーの発生状況に基づいて、前記一の記憶装置に記憶されていたデータを生成して他の記憶装置に格納するリビルド処理の実行タイミングを決定するリビルド制御部と、
を有することを特徴とするストレージシステム。
【請求項2】
前記エラー監視部は、エラーの発生に応じたエラー点数を記憶装置ごとに前記エラー情報記憶部に登録し、
前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外の少なくとも1つの記憶装置に対応するエラー点数が所定値以上である場合には、前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が所定値未満である場合より、前記リビルド処理を早いタイミングで実行する、
ことを特徴とする請求項1記載のストレージシステム。
【請求項3】
前記ストレージシステムは、前記複数の記憶装置のいずれかの代わりに使用される予備用記憶装置をさらに備え、
前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、
前記複数の記憶装置のうち前記一の記憶装置以外の少なくとも1つの記憶装置に対応するエラー点数が前記所定値以上である場合には、前記一の記憶装置に記憶されていたデータを生成して前記予備用記憶装置に格納し、
前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記一の記憶装置が新たな記憶装置に交換されたことを検知した後、前記一の記憶装置に記憶されていたデータを生成して前記新たな記憶装置に格納する、
ことを特徴とする請求項2記載のストレージシステム。
【請求項4】
前記リビルド制御部は、前記一の記憶装置に記憶されていたデータを前記予備用記憶装置に格納した後、前記一の記憶装置が新たな記憶装置に交換されたことを検知したとき、前記予備用記憶装置に格納されたデータを前記新たな記憶装置に書き戻すことを特徴とする請求項3記載のストレージシステム。
【請求項5】
前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記一の記憶装置の使用を中止してからの時間経過を監視し、一定時間が経過するまでに前記一の記憶装置が交換されなかった場合には、前記一の記憶装置に記憶されていたデータを生成して前記予備用記憶装置に格納することを特徴とする請求項3または4記載のストレージシステム。
【請求項6】
前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記複数の記憶装置のうち前記一の記憶装置以外の記憶装置におけるエラーの発生を監視し、前記一の記憶装置が交換されたことを検知するまでの間にエラーが発生した場合には、前記一の記憶装置に記憶されていたデータを生成して前記予備用記憶装置に格納することを特徴とする請求項3〜5のいずれか1項に記載のストレージシステム。
【請求項7】
前記エラー監視部は、前記複数の記憶装置のそれぞれにおいてエラーが発生したかを定期的に検査し、
前記リビルド制御部は、前記一の記憶装置の使用を中止したとき、前記複数の記憶装置のうち前記一の記憶装置以外のすべての記憶装置に対応するエラー点数が前記所定値未満である場合には、前記一の記憶装置が交換されるまでの間、前記エラー監視部がエラーの発生を検査する間隔を前記一の記憶装置の使用を中止する前より短くする、
ことを特徴とする請求項6記載のストレージシステム。
【請求項8】
複数の記憶装置に記録するデータが異なる記憶装置に冗長化されるように前記複数の記憶装置に対するデータ記録を制御するストレージ制御装置において、
前記複数の記憶装置のそれぞれにおけるエラーの発生を監視し、エラーの発生状況を示す情報を記憶装置ごとにエラー情報記憶部に登録するエラー監視部と、
前記複数の記憶装置のうち一の記憶装置の使用を中止したとき、前記エラー情報記憶部に登録された情報を参照し、前記複数の記憶装置のうち前記一の記憶装置以外の記憶装置における過去のエラーの発生状況に基づいて、前記一の記憶装置に記憶されていたデータを生成して他の記憶装置に格納するリビルド処理の実行タイミングを決定するリビルド制御部と、
を有することを特徴とするストレージ制御装置。
【請求項9】
複数の記憶装置と、前記複数の記憶装置に記録するデータが異なる記憶装置に冗長化されるように前記複数の記憶装置に対するデータ記録を制御する制御装置とを備えたストレージシステムにおけるストレージ制御方法であって、
前記制御装置が、
前記複数の記憶装置のそれぞれにおけるエラーの発生を監視して、エラーの発生状況を示す情報を記憶装置ごとにエラー情報記憶部に登録し、
前記複数の記憶装置のうち一の記憶装置の使用を中止したとき、前記エラー情報記憶部に登録された情報を参照し、前記複数の記憶装置のうち前記一の記憶装置以外の記憶装置における過去のエラーの発生状況に基づいて、前記一の記憶装置に記憶されていたデータを生成して他の記憶装置に格納するリビルド処理の実行タイミングを決定する、
ことを特徴とするストレージ制御方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2013−41443(P2013−41443A)
【公開日】平成25年2月28日(2013.2.28)
【国際特許分類】
【出願番号】特願2011−178280(P2011−178280)
【出願日】平成23年8月17日(2011.8.17)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成25年2月28日(2013.2.28)
【国際特許分類】
【出願日】平成23年8月17日(2011.8.17)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]