(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024042424
(43)【公開日】2024-03-28
(54)【発明の名称】RAIDコントローラ及びRAID装置
(51)【国際特許分類】
G06F 3/06 20060101AFI20240321BHJP
【FI】
G06F3/06 306Z
G06F3/06 540
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2022147122
(22)【出願日】2022-09-15
(71)【出願人】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(71)【出願人】
【識別番号】598076591
【氏名又は名称】東芝インフラシステムズ株式会社
(74)【代理人】
【識別番号】110004026
【氏名又は名称】弁理士法人iX
(72)【発明者】
【氏名】伊藤 孝明
(57)【要約】
【課題】ホスト計算機の本来の機能に及ぼす影響を抑えつつ、再構築の時間を短縮できるRAIDコントローラ及びRAID装置を提供する。
【解決手段】RAIDコントローラは、ホスト計算機から入力されたデータを複数の記憶装置に書き込み、前記複数の記憶装置から読み出したデータを前記ホスト計算機に出力すると共に、一の前記記憶装置が故障したときに、他の前記記憶装置に前記一の記憶装置が記憶していたデータを再構築する。前記RAIDコントローラは、前記書き込み及び読み出しの負荷が高いほど、前記書き込み及び読み出しに対する前記再構築の優先度を低くする。
【選択図】
図2
【特許請求の範囲】
【請求項1】
ホスト計算機から入力されたデータを複数の記憶装置に書き込み、前記複数の記憶装置から読み出したデータを前記ホスト計算機に出力すると共に、一の前記記憶装置が故障したときに、他の前記記憶装置に前記一の記憶装置が記憶していたデータを再構築し、前記書き込み及び読み出しの負荷が高いほど、前記書き込み及び読み出しに対する前記再構築の優先度を低くするRAIDコントローラ。
【請求項2】
前記負荷が高いほど、単位時間あたりに前記再構築に割り当てる時間を短くする請求項1に記載のRAIDコントローラ。
【請求項3】
前記再構築の優先度の水準は2水準である請求項1に記載のRAIDコントローラ。
【請求項4】
前記負荷が第1閾値よりも高くなったときに前記優先度を低い水準とし、前記負荷が前記第1閾値以下である第2閾値未満となったときに前記優先度を高い水準とする請求項3に記載のRAIDコントローラ。
【請求項5】
前記第2閾値は前記第1閾値未満である請求項4に記載のRAIDコントローラ。
【請求項6】
前記再構築の優先度の水準は3水準以上であり、前記負荷に連動して決定される請求項1に記載のRAIDコントローラ。
【請求項7】
前記負荷は1以上の指数の関数として定義される請求項1に記載のRAIDコントローラ。
【請求項8】
前記指数は、前記書き込み及び読み出しに伴うデータ転送量、単位時間あたりの前記書き込み及び読み出しの回数、単位時間あたりの前記書き込み及び読み出しの平均応答時間、及び、同時に実行している前記書き込み及び読み出しの回数からなる群より選択された1以上の指数である請求項7に記載のRAIDコントローラ。
【請求項9】
前記負荷の変動の予測値にも基づいて、前記再構築の優先度を決定する請求項1に記載のRAIDコントローラ。
【請求項10】
請求項1~9のいずれか1つに記載のRAIDコントローラと、
前記ホスト計算機と、
前記複数の記憶装置と、
を備えたRAID装置。
【請求項11】
前記再構築の優先度の決定は、前記ホスト計算機に格納されたプログラムによって実行される請求項10に記載のRAID装置。
【請求項12】
前記再構築の優先度の決定は、前記RAIDコントローラに格納されたプログラムによって実行される請求項10に記載のRAID装置。
【発明の詳細な説明】
【技術分野】
【0001】
実施形態は、RAIDコントローラ及びRAID装置に関する。
【背景技術】
【0002】
複数の記憶装置をRAID(Redundant Arrays of Inexpensive Disks)技術によって束ねて、性能向上または冗長性を実現するRAID装置が使用されている。RAID装置において冗長性を実現するRAIDレベルが選択されている場合は、RAID装置内の1台の記憶装置が故障したときに、故障した記憶装置に記憶されていたデータを他の記憶装置に復元させて、冗長性を回復する。この動作を「再構築(リビルド)」という。
【0003】
一方、RAID装置は、ホスト計算機からの命令に基づいて、記憶装置に対するデータの書き込み及び読み出しの処理(以下、「IO処理」という)も行っている。ホスト計算機の本体の機能を維持するためには、再構築よりもIO処理を優先させざるを得ないが、そうすると再構築が長引くため、冗長性が低下または消失し、且つ、IO処理速度も低下した状態が長引く。一方、再構築を短時間で完了させるために、IO処理よりも再構築を優先させると、IO処理の速度が大きく低下し、ホスト計算機の本来の機能を維持できなくなる。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
実施形態の目的は、ホスト計算機の本来の機能に及ぼす影響を抑えつつ、再構築の時間を短縮できるRAIDコントローラ及びRAID装置を提供することである。
【課題を解決するための手段】
【0006】
実施形態に係るRAIDコントローラは、ホスト計算機から入力されたデータを複数の記憶装置に書き込み、前記複数の記憶装置から読み出したデータを前記ホスト計算機に出力すると共に、一の前記記憶装置が故障したときに、他の前記記憶装置に前記一の記憶装置が記憶していたデータを再構築する。前記RAIDコントローラは、前記書き込み及び読み出しの負荷が高いほど、前記書き込み及び読み出しに対する前記再構築の優先度を低くする。
【0007】
実施形態に係るRAID装置は、前記RAIDコントローラと、前記ホスト計算機と、前記複数の記憶装置と、を備える。
【図面の簡単な説明】
【0008】
【
図1】
図1は、第1の実施形態に係るRAID装置を示すブロック図である。
【
図2】
図2(a)は横軸に時間をとり縦軸にIO負荷をとってIO負荷の変動を示すグラフであり、
図2(b)は横軸に時間をとり縦軸に再構築の優先度をとって優先度の変化を示すグラフであり、
図2(c)は横軸に時間をとり縦軸にインターバル時間をとってインターバル時間の変化を示すグラフである。
【
図3】
図3(a)及び(b)はRAIDコントローラの処理時間の割り当てを示す図であり、(a)は優先度が高い場合を示し、(b)は優先度が低い場合を示す。
【
図4】
図4は、第3の実施形態に係るRAID装置を示すブロック図である。
【
図5】
図5は、第4の実施形態に係るRAID装置を示すブロック図である。
【発明を実施するための形態】
【0009】
<第1の実施形態>
図1は、本実施形態に係るRAID装置を示すブロック図である。
なお、
図1は概念的なものであり、主としてソフトウェア的な構成を示している。後述する他のブロック図も同様である。
【0010】
図1に示すように、本実施形態に係るRAID装置1においては、ホスト計算機10、RAIDコントローラ20、複数の記憶装置30が設けられている。ホスト計算機10はRAIDコントローラ20に接続されており、RAIDコントローラ20は複数の記憶装置30に接続されている。
【0011】
ホスト計算機10は、例えば、サーバ又は産業用コンピュータであり、何らかの機能を果たすために設けられている。以下、ホスト計算機10が本来果たすべき機能を「本来機能」ともいう。ホスト計算機10が例えばサーバであれば、本来機能はデータベースの管理や通信の管理である。ホスト計算機10が例えば工場用のコンピュータであれば、本来機能は工場に設置された装置の制御や管理である。ホスト計算機10が例えば鉄道用のコンピュータであれば、本来機能は例えば自動改札機の制御や管理である。
【0012】
記憶装置30は、HDD(Hard Disk Drive)又はSSD(Solid State Drive)等の大容量のデータを記憶する装置である。RAID装置1において、複数の記憶装置30が設けられている。一例では、RAID装置1には8台の記憶装置30が設けられており、そのうち2台の記憶装置30によってRAID1が構成されて、OS(Operating System)が格納されている。また、5台の記憶装置30によってRAID5が構成されており、ホスト計算機10の本来機能に伴うデータが記憶される。残りの1台の記憶装置30は予備(ホットスペア)である。但し、記憶装置30の構成はこれには限定されない。
【0013】
RAIDコントローラ20は、ホスト計算機10と複数の記憶装置30との間に介在し、RAID技術によって複数の記憶装置30を束ねる。RAIDコントローラ20は、ホスト計算機10から入力されたデータを複数の記憶装置30に分散して書き込む。また、ホスト計算機10から入力される命令に応じて、記憶装置30からデータを読み出し、必要であれば統合し、ホスト計算機10に対して出力する。このように、RAIDコントローラ20はホスト計算機10の本来機能に伴うIO処理を行う。また、RAIDコントローラ20は、記憶装置30のうち1台が故障した場合は、故障した記憶装置30に記憶されていたデータを他の記憶装置30又は故障した記憶装置30と交換した新たな記憶装置30に再構築(リビルド)する。
【0014】
以下、各部を詳細に説明する。
図1には、ホスト計算機10のうち、RAIDコントローラ20に関連する機能のみを示している。
図1に示すように、ホスト計算機10においては、ユーザプログラム11、ファイルシステム12、管理プログラム13、デバイスドライバ14、及び、エージェント15が設けられている。
【0015】
ユーザプログラム11は、ホスト計算機10の本来機能を実行するプログラムである。ユーザプログラム11は、RAID装置1の外部と通信すると共に、ファイルシステム12に対してファイルの書き込み及び読み出しを行う。ファイルシステム12は、ユーザプログラム11によるファイルの書き込み及び読み出しを、データの書き込み及び読み出しに変換して、デバイスドライバ14に受け渡す。管理プログラム13は、RAIDコントローラ20を制御するための命令を出力すると共に、RAIDコントローラ20からRAIDコントローラ20の状態を示す信号が入力され、これに基づいてRAIDコントローラ20の状態を管理する。
【0016】
デバイスドライバ14は、ファイルシステム12から入力されたデータをRAIDコントローラ20に対して出力すると共に、RAIDコントローラ20から入力されたデータをファイルシステム12に対して出力する。すなわち、RAIDコントローラ20に対してIO処理を行う。また、デバイスドライバ14は、管理プログラム13から入力された命令をRAIDコントローラ20に対して出力すると共に、RAIDコントローラ20から入力された信号を管理プログラム13に受け渡す。
【0017】
デバイスドライバ14は、IO処理に伴いRAIDコントローラ20に生じる負荷(以下、「IO負荷」という)に関する統計データを取得して、保持する。エージェント15は、定期的に、例えば1秒間毎に、デバイスドライバ14が保持しているIO負荷の統計データを取得する。
【0018】
エージェント15は、ホスト計算機10に格納され、ホスト計算機10上で実行されて、再構築(リビルド)の優先度を決定するプログラムである。エージェント15は、データの再構築(リビルド)を行う際には、IO負荷の統計データに基づいて再構築の優先度を決定し、RAIDコントローラ20に対して出力する。再構築の優先度を決定する動作については、後述する。
【0019】
RAIDコントローラ20においては、データ用ホストインターフェース21、命令用ホストインターフェース22、RAID処理プログラム23、及び、記憶装置インターフェース24が設けられている。
【0020】
データ用ホストインターフェース21は、ホスト計算機10のデバイスドライバ14との間でデータの入出力(IO処理)を行う。命令用ホストインターフェース22は、ホスト計算機10のデバイスドライバ14から命令が入力されると共に、RAIDコントローラ20の状態を示す信号をデバイスドライバ14に対して出力する。RAID処理プログラム23はIO処理及び再構築(リビルド)を行う。IO処理及び再構築の詳細は後述する。記憶装置インターフェース24は、RAID処理プログラム23と複数の記憶装置30との間で、データを入出力する。
【0021】
次に、本実施形態に係るRAID装置1の動作について説明する。
図2(a)は横軸に時間をとり縦軸にIO負荷をとってIO負荷の変動を示すグラフであり、
図2(b)は横軸に時間をとり縦軸に再構築の優先度をとって優先度の変化を示すグラフであり、
図2(c)は横軸に時間をとり縦軸にインターバル時間をとってインターバル時間の変化を示すグラフである。
図3(a)及び(b)はRAIDコントローラの処理時間の割り当てを示す図であり、(a)は優先度が高い場合を示し、(b)は優先度が低い場合を示す。
【0022】
いずれの記憶装置30も故障していないときは、ホスト計算機10は本来機能を遂行し、それに伴い、RAIDコントローラ20を介して複数の記憶装置30との間でデータをやりとりする。RAIDコントローラ20は、ホスト計算機10の命令に従い、IO処理を行う。IO処理においては、ホスト計算機10からデータ用ホストインターフェース21を介して入力されたデータをRAID処理プログラム23が分割し、必要であればパリティー(誤り訂正符号)を生成して、複数の記憶装置30に分散して書き込む。また、ホスト計算機10からの命令に基づいて、RAID処理プログラム23が複数の記憶装置30からデータを読み出し、必要であれば統合して、データ用ホストインターフェース21を介してホスト計算機10に出力する。
【0023】
記憶装置30のうちの1台が故障したときは、予備の記憶装置30(ホットスペア)があれば、RAIDコントローラ20は再構築(リビルド)を開始する。すなわち、故障していない記憶装置30に記憶されているデータに基づいて、故障した記憶装置30の記憶されていたデータを復元し、予備の記憶装置30に記憶させる。上述の8台の記憶装置30が設けられている例では、予備の1台の記憶装置30にデータを再構築する。予備の記憶装置30(ホットスペア)が無い場合は、故障していない記憶装置30のみで縮退運転を行い、適切なタイミングで故障した記憶装置30を新たな記憶装置30に交換し、この新たな記憶装置30にデータを再構築する。RAID装置1の用途によっては、RAIDコントローラ20が再構築を行っている間も、ホスト計算機10は本来機能を停止できない場合がある。以下、そのような場合について説明する。
【0024】
ホスト計算機10は本来機能を遂行しているが、その負荷は必ずしも一定ではなく、時間と共に変動する場合が多い。ホスト計算機10における本来機能の負荷が変動すると、RAIDコントローラ20におけるIO負荷も変動する。そこで本実施形態においては、その時々のIO負荷を評価し、IO負荷が高いときには再構築(リビルド)の優先度を下げて、IO負荷が低いときには再構築の優先度を上げる。再構築の優先度が低いほど、IO処理が優先されて高速化する。
【0025】
以下、具体的に説明する。
再構築が開始されると、ホスト計算機10のエージェント15が、デバイスドライバ14に蓄積されているIO負荷の統計データを読み込み、この統計データに基づいて指数を算出し、IO負荷を評価する。エージェント15は、再構築中はIO負荷の評価を定期的に、例えば、1秒間毎に行う。IO負荷を評価するための指数は特に限定されないが、例えば、下記(α)~(γ)が考えられる。
【0026】
(α)データ転送量
(β)1秒あたりのIO処理数、又は、1秒あたりの平均応答時間
(γ)同時発行IO数
【0027】
上記(α)の「データ転送量」は、IO処理におけるデータの転送量、すなわち、ホスト計算機10と記憶装置30との間のデータの流通量である。エージェント15は、データ転送量が大きければIO負荷が高いと判断し、データ転送量が小さければIO負荷が低いと判断する。
【0028】
上記(β)の「1秒あたりのIO処理数」は、1秒間あたりにホスト計算機10がRAIDコントローラ20に要求するIO処理の回数である。エージェント15は、1秒あたりのIO処理数が多ければIO負荷が高いと判断し、1秒あたりのIO処理数が少なければIO負荷が低いと判断する。
【0029】
上記(β)の「1秒あたりの平均応答時間」は、ホスト計算機10がRAIDコントローラ20に要求したIO処理の平均応答時間である。例えば、ホスト計算機10が1秒間に1回のみIO処理を要求した場合の平均応答時間は1秒間とする。ホスト計算機10が1秒間に10回のIO処理を要求した場合の平均応答時間は0.1秒間とする。エージェント15は、1秒あたりの平均応答時間が短ければIO負荷が高いと判断し、1秒あたりの平均応答時間が長ければIO負荷が低いと判断する。なお、「1秒あたりのIO処理数」と「1秒あたりの平均応答時間」は互いに逆数の関係にあるため、どちらか一方を採用すればよい。
【0030】
上記(γ)の「同時発行IO数」は、RAIDコントローラ20が同時に実行しているIO処理数である。エージェント15は、同時発行IO数が多ければIO負荷が高いと判断し、同時発行IO数が少なければIO負荷が低いと判断する。
【0031】
図2(a)に示すように、エージェント15は、これらの指数のうちいずれか1つ又は複数の指数に基づいて、IO負荷を評価する。IO負荷は時間の経過に伴って変化する。また、本実施形態においては、再構築の優先度の水準は「高」及び「低」の2水準とする。
【0032】
そして、
図2(a)及び(b)に示すように、IO負荷が閾値T
Aを超えたときに、エージェント15はIO負荷が高いと判断し、再構築の優先度を「低」とする。また、IO負荷が閾値T
B未満となったときに、エージェント15はIO負荷が低いと判断し、再構築の優先度を「高」とする。
【0033】
閾値TAは閾値TB以上とする。すなわち、TA≧TBとする。IO負荷が急激に変動した場合でも再構築の優先度をある程度安定させるためには、閾値TAは閾値TBよりも高いことが好ましい。すなわち、TA>TBとすることが好ましい。この場合、初期状態においてIO負荷が閾値TB以上かつ閾値TA以下の範囲になった場合に備えて、優先度の初期設定を「低」又は「高」に決めておく。
【0034】
なお、複数の指数を用いる場合には、指数毎にIO負荷を算出してもよい。この場合は、本来機能の性質に応じて、全てのIO負荷がそれぞれの閾値を超えた場合に再構築の優先度を切り替えてもよく、または、いずれかのIO負荷が閾値TAを超えたときに優先度を「低」に切り替え、全てのIO負荷が閾値TBを下回ったときに優先度を「高」に切り替えてもよい。
【0035】
そして、再構築の優先度が「低」の場合は、RAID処理プログラム23の処理時間のうち、再構築に割り当てる時間の割合を少なくし、IO処理に割り当てる時間の割合を多くする。一方、再構築の優先度が「高」の場合は、RAID処理プログラム23の処理時間のうち、再構築に割り当てる時間の割合を多くし、IO処理に割り当てる時間の割合を少なくする。
【0036】
例えば、データの再構築はストライプ毎に行う。1つのストライプには、例えば256kBのデータが含まれる。
図3(a)及び(b)に示すように、あるストライプを再構築してから、次のストライプを再構築するまでの間に、インターバルを設ける。インターバルにおいては、RAID処理プログラム23はIO処理を行う。
【0037】
そして、
図2(c)、
図3(a)及び(b)に示すように、再構築の優先度が「低」であるときのインターバルは再構築の優先度が「高」であるときのインターバルよりも長くする。例えば、再構築の優先度が「低」であるときのインターバルは10ms(ミリ秒)とし、再構築の優先度が「高」であるときのインターバルは1msとする。
【0038】
次に、本実施形態の効果について説明する。
本実施形態においては、再構築の優先度として、「高」と「低」の2水準を設定している。そして、IO負荷が高い場合には再構築の優先度を「低」として、IO処理を優先させる。この場合は、IO処理の速度の低下を抑制できる。この結果、ホスト計算機10において本来機能の負荷が高いときに、本来機能に及ぼす影響を抑制できる。一方、IO負荷が低い場合には再構築の優先度を「高」として、再構築を優先させる。これにより、本来機能の負荷が低いときに、再構築を進めておくことができる。このように、本実施形態によれば、IO処理と再構築のバランスを自動的に調整できる。この結果、ホスト計算機10の本来機能に及ぼす影響を抑えつつ、再構築に要する時間を短縮できる。
【0039】
なお、仮に再構築の優先度を固定的に設定する場合は、本来機能の負荷のピークに合わせて再構築の優先度を低く設定せざるを得ない。このため、再構築に要する時間が増大する。特に、記憶装置が大容量化すると、再構築に要する時間が長くなるため、この問題は深刻である。
【0040】
<第2の実施形態>
第1の実施形態においては、再構築(リビルド)の優先度が「高」と「低」の2水準である例を示したが、本実施形態においては、より多くの水準を設ける例を説明する。本実施形態においては、一例として、再構築の優先度を「10」(低)から「90」(高)の81水準とする。
【0041】
本実施形態においては、IO負荷を指数の関数として定義する。下記数式(1)において、yはIO負荷であり、xは指数である。
【0042】
y=f(x) … (1)
【0043】
例えば、上記数式(1)は、a、bを正の定数として、下記数式(2)のように表現できる。
【0044】
y=-a・x+b … (2)
【0045】
例えば、yが10以上91未満の値をとるように定数a、bの値を設定し、yの値の整数部分を再構築(リビルド)の優先度とする。
【0046】
また、IO負荷を複数の指数により算出する場合は、IO負荷は下記数式(3)のように定義できる。下記数式(3)において、yはIO負荷であり、x1、x2、x3は指数である。
【0047】
y=f(x1,x2,x3) … (3)
【0048】
例えば、上記数式(3)は、a、b、c、dを正の定数として、下記数式(4)のように表現できる。例えば、x1はデータ転送量であり、x2は1秒あたりのIO処理数であり、x3は同時発行IO数である。
【0049】
y=-a・x1-b・x2-c・x3+d … (4)
【0050】
そして、yが10以上91未満の値をとるように定数a、b、c、dの値を設定し、yの値の整数部分を再構築の優先度とする。
【0051】
本実施形態によれば、第1の実施形態と比較して、再構築とIO処理のバランスをより高精度にとることができる。本実施形態における上記以外の構成、動作及び効果は、第1の実施形態と同様である。
【0052】
<第3の実施形態>
図4は、本実施形態に係るRAID装置を示すブロック図である。
図4に示すように、本実施形態に係るRAID装置3においては、ホスト計算機10にメモリ16が設けられている。メモリ16は過去のIO負荷を記憶している。そして、エージェント15は、メモリ16に記憶された過去のIO負荷に基づいて、現在及び未来のIO負荷を予測し、これに基づいて再構築(リビルド)の優先度を決定する。
【0053】
ホスト計算機10が行う本来機能の種類によっては、IO負荷が一定の周期で同じパターンに基づいて変化する場合がある。例えば、ホスト計算機10がバッチ処理を行うシステムである場合は、バッチ間においてIO負荷が低下する。また、例えば、ホスト計算機10が工場用のコンピュータである場合は、工場が稼働する平日の昼間はIO負荷が高く、工場が稼働しない夜間及び休日はIO負荷が低い。さらに、ホスト計算機10が鉄道用のコンピュータであれば、始発電車から最終電車までの時間帯はIO負荷が高く、それ以外の時間帯はIO負荷が低い。このような場合には、IO負荷の予測が可能である。本来機能の種類によっては、IO負荷はより複雑に変化するが、その場合でも何らかのパターンを見いだすことが可能である場合が多い。
【0054】
IO負荷の変動パターンが単純な場合には、IO負荷の予測は手動で行ってもよい。IO負荷の変動パターンが複雑な場合には、IO負荷の予測は予測プログラムを用いて行うことができる。IO負荷の変動パターンがより複雑な場合には、IO負荷の予測は人工知能(AI)による機械学習によって行ってもよい。
【0055】
前述の第1又は第2の実施形態においては、直前のIO負荷に基づいて再構築の優先度を決めているため、IO負荷が急激に変化する場合は、再構築の優先度の決定がIO負荷の変化に追従できず、再構築の優先度を効果的に決定できない場合がある。これに対して、本実施形態によれば、IO負荷が一定の変動パターンをとる場合に、再構築の優先度を効果的に決定できる。
【0056】
また、本実施形態におけるIO負荷の予測値に基づいて再構築の優先度を決定する方法と、前述の第1又は第2の実施形態において説明したIO負荷の測定値に基づいて再構築の優先度を決定する方法は、相互に組み合わせてもよい。
【0057】
例えば、本来機能の負荷が低いと予測されている時間帯においては、再構築の優先度は高く設定しておくが、突発的にIO負荷の測定値が増加した場合には、IO負荷の測定値に基づいて再構築の優先度を低下させてもよい。また、本来機能の負荷が高いと予測されている時間帯においては、再構築の優先度は低く設定しておき、一時的にIO負荷の測定値が低下しても、しばらく再構築の優先度を低く維持しておいてもよい。そして、IO負荷の測定値が一定の時間以上予測パターンから外れた場合には、本来機能にイレギュラーな事態が発生したものと判断し、IO負荷の予測値に基づく制御からIO負荷の測定値に基づく制御に切り替えてもよい。
【0058】
本実施形態によれば、本来機能の種類によっては、本来機能に及ぼす影響をより確実に抑えつつ、再構築の時間を短縮できる。本実施形態における上記以外の構成、動作及び効果は、第1の実施形態と同様である。
【0059】
<第4の実施形態>
図5は、本実施形態に係るRAID装置を示すブロック図である。
図5に示すように、本実施形態に係るRAID装置4は、第1の実施形態に係るRAID装置1と比較して、ホスト計算機10にエージェント15が設けられておらず、RAIDコントローラ20にエージェント25が設けられている点が異なっている。
【0060】
エージェント25は、RAIDコントローラ20に格納され、RAIDコントローラ20上で実行されて、再構築(リビルド)の優先度を決定するプログラムである。第1の実施形態においてはデバイスドライバ14が行っていたIO負荷に関する統計データの取得及び保持を、本実施形態においてはRAIDコントローラ20のデータ用ホストインターフェース21が行う。また、第1の実施形態においてエージェント15が行っていた一定の周期で統計データを読み出し、IO負荷を算出し、再構築の優先度を決定する作業を、本実施形態においてはエージェント25が行う。これにより、再構築の優先度を決定する作業に関して、ホスト計算機10に負荷をかけることがない。本実施形態における上記以外の構成、動作及び効果は、第1の実施形態と同様である。
【0061】
以上説明した実施形態によれば、ホスト計算機の本来の機能に及ぼす影響を抑えつつ、再構築の時間を短縮できるRAIDコントローラ及びRAID装置を実現できる。
【0062】
以上、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明及びその等価物の範囲に含まれる。また、前述の実施形態は、相互に組み合わせて実施することもできる。
【0063】
本発明は、以下の態様を含む。
【0064】
(付記1)
ホスト計算機から入力されたデータを複数の記憶装置に書き込み、前記複数の記憶装置から読み出したデータを前記ホスト計算機に出力すると共に、一の前記記憶装置が故障したときに、他の前記記憶装置に前記一の記憶装置が記憶していたデータを再構築し、前記書き込み及び読み出しの負荷が高いほど、前記書き込み及び読み出しに対する前記再構築の優先度を低くするRAIDコントローラ。
【0065】
(付記2)
前記負荷が高いほど、単位時間あたりに前記再構築に割り当てる時間を短くする付記1に記載のRAIDコントローラ。
【0066】
(付記3)
前記再構築の優先度の水準は2水準である付記1または2に記載のRAIDコントローラ。
【0067】
(付記4)
前記負荷が第1閾値よりも高くなったときに前記優先度を低い水準とし、前記負荷が前記第1閾値以下である第2閾値未満となったときに前記優先度を高い水準とする付記3に記載のRAIDコントローラ。
【0068】
(付記5)
前記第2閾値は前記第1閾値未満である付記4に記載のRAIDコントローラ。
【0069】
(付記6)
前記再構築の優先度の水準は3水準以上であり、前記負荷に連動して決定される付記1または2に記載のRAIDコントローラ。
【0070】
(付記7)
前記負荷は1以上の指数の関数として定義される付記1~6のいずれか1つに記載のRAIDコントローラ。
【0071】
(付記8)
前記指数は、前記書き込み及び読み出しに伴うデータ転送量、単位時間あたりの前記書き込み及び読み出しの回数、単位時間あたりの前記書き込み及び読み出しの平均応答時間、及び、同時に実行している前記書き込み及び読み出しの回数からなる群より選択された1以上の指数である付記7に記載のRAIDコントローラ。
【0072】
(付記9)
前記負荷の変動の予測値にも基づいて、前記再構築の優先度を決定する付記1~8のいずれか1つに記載のRAIDコントローラ。
【0073】
(付記10)
付記1~9のいずれか1つに記載のRAIDコントローラと、
前記ホスト計算機と、
前記複数の記憶装置と、
を備えたRAID装置。
【0074】
(付記11)
前記再構築の優先度の決定は、前記ホスト計算機に格納されたプログラムによって実行される付記10に記載のRAID装置。
【0075】
(付記12)
前記再構築の優先度の決定は、前記RAIDコントローラに格納されたプログラムによって実行される付記10に記載のRAID装置。
【符号の説明】
【0076】
1、3、4:RAID装置
10:ホスト計算機
11:ユーザプログラム
12:ファイルシステム
13:管理プログラム
14:デバイスドライバ
15:エージェント
16:メモリ
20:RAIDコントローラ
21:データ用ホストインターフェース
22:命令用ホストインターフェース
23:RAID処理プログラム
24:記憶装置インターフェース
25:エージェント
30:記憶装置
TA、TB:閾値