説明

ストレージシステム、ストレージ制御装置およびストレージ制御方法

【課題】多数のHDDがスピンダウンした場合の制御装置の処理負荷を軽減する。
【解決手段】磁気ディスク装置10のスピンアップ制御部12は、HDD11a〜11eへの電源供給が瞬断した場合に、HDD11a〜11eをスピンアップさせる。一方、制御装置20のスピンアップ制御部21は、磁気ディスク装置10内のHDDへのアクセスに対する応答を基にアクセス先のHDDのスピンダウンを検知した場合に、そのHDDをスピンアップさせる。切り離し制御部22は、一定数以上のHDDがスピンダウンした場合、磁気ディスク装置10を一定時間使用不許可にする。磁気ディスク装置10が使用不許可である間、磁気ディスク装置10のスピンアップ制御部12によってHDDがスピンアップされる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージシステム、ストレージ制御装置およびストレージ制御方法に関する。
【背景技術】
【0002】
HDD(Hard Disk Drive)は、長時間アクセスがないときや、電源の供給が一時的に断絶したときには、磁気ディスクの回転を停止した「スピンダウン」の状態になる。HDDがスピンダウンしたときには、制御装置がHDDに対して「スピンアップ」を要求するコマンドを送信することで、HDDの動作を復旧させることができる。
【0003】
一方、HDDなどの記憶装置における異常発生時の制御技術としては、次のようなものがある。例えば、複数のHDDおよびHDDへの電源ラインの電圧監視機能を備える記憶装置に接続し、電源ラインの電圧低下が検出されると、記憶装置とのデータラインを一時的に切断し、電圧復旧後にHDDへ起動コマンドを送信する制御装置がある。
【0004】
また、他の例として、HDDに供給されるDC電圧の低下を検出すると、RAID(Redundant Arrays of Inexpensive Disks)構成情報に電源不具合情報を記憶するとともにHDDに対する読み書きを中断し、DC電圧の復帰を検出すると、RAID構成情報から電源不具合情報を解除するとともにHDDに対する読み書きを再開する制御装置がある。
【0005】
さらに、他の例として、RAID装置内でRAID閉塞可否を判定すべき事象が発生するたびに、閉塞判定対象となるRAIDグループごとに、そのRAIDグループに属する各ディスクを複数のカテゴリに分類し、分類単位ごとに該当するディスクの数の集計結果を基にRAIDグループを閉塞させるかを判定する制御装置がある。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2006−133926号公報
【特許文献2】特開2007−122263号公報
【特許文献3】特開2007−304728号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
ところで、ストレージシステムにおいては、制御装置に対して多数のHDDが接続される場合がある。多数のHDDを備えるストレージシステムにおいて、スピンダウンしたHDDを制御装置の制御によって復旧させるように構成した場合、多数のHDDが一度にスピンダウンしてしまうと、HDDの復旧処理のために制御装置の処理負荷が増大してしまう。スピンダウンしたHDDの復旧処理のために制御装置の処理負荷が増大すると、スピンダウンしていないHDDへのアクセス処理が停滞する、あるいは、スピンダウンしたHDDのそれぞれが復旧するまでに要する時間が長くなるなどの問題が生じる。
【0008】
本発明はこのような課題に鑑みてなされたものであり、多数のHDDがスピンダウンした場合の制御装置の処理負荷を軽減できるようにしたストレージシステム、ストレージ制御装置およびストレージ制御方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
上記目的を達成するために、複数の磁気ディスクドライブを備える磁気ディスク装置と、磁気ディスク装置内の磁気ディスクドライブへのアクセスを制御する制御装置とを有するストレージシステムが提供される。このストレージシステムにおいて、磁気ディスク装置は、自装置内のスピンダウンした磁気ディスクドライブをスピンアップさせる第1のスピンアップ制御部を有する。また、制御装置は、磁気ディスク装置内のスピンダウンした磁気ディスクドライブをスピンアップさせる第2のスピンアップ制御部と、磁気ディスク装置内のスピンダウンした磁気ディスクドライブの数が所定のしきい値に達した場合に、磁気ディスク装置を使用不許可にし、一定時間後に磁気ディスク装置の使用を許可する切り離し制御部と、を有する。
【0010】
また、上記目的を達成するために、上記の制御装置と同様の処理を実行するストレージ制御装置およびストレージ制御方法が提供される。
【発明の効果】
【0011】
上記のストレージシステムおよびストレージ制御方法によれば、多数の磁気ディスクドライブがスピンダウンしたときの制御装置の処理負荷を軽減できる。
また、上記のストレージ制御装置によれば、多数の磁気ディスクドライブがスピンダウンしたときのストレージ制御装置の処理負荷を軽減できる。
【図面の簡単な説明】
【0012】
【図1】第1の実施の形態に係るストレージシステムの構成例を示す図である。
【図2】第2の実施の形態に係るストレージシステムのシステム構成例を示す図である。
【図3】CMのハードウェア構成例を示す図である。
【図4】DEのハードウェア構成例を示す図である。
【図5】DEループの構成例を示す図である。
【図6】デバイス管理テーブルに登録される情報の例を示す図である。
【図7】RAID管理テーブルに登録される情報の例を示す図である。
【図8】CMが備える処理機能の例を示すブロック図である。
【図9】HDDリカバリ制御部の内部構成例を示す図である。
【図10】PSUにおける入力電圧と出力電圧の関係について示す図である。
【図11】PSUごとの限界時間について示す図である。
【図12】自動スピンアップ処理について示す図である。
【図13】DEリカバリ制御部の内部構成例を示す図である。
【図14】切り離し制御部による処理の一例を示す図である。
【図15】HDDリカバリ制御部のリカバリ処理部の処理手順の例を示すフローチャートである。
【図16】割り込み発生時におけるリカバリタスクの処理手順の例を示すフローチャートである。
【図17】DEリカバリ制御部のカウント部の処理手順の例を示すフローチャートである。
【図18】DEリカバリ制御部の切り離し制御部の処理手順の例を示すフローチャートである。
【発明を実施するための形態】
【0013】
以下、実施の形態について図面を参照して詳細に説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るストレージシステムの構成例を示す図である。
【0014】
図1に示すストレージシステム1は、制御装置10と、複数のHDD11a〜11eを備える磁気ディスク装置10と、磁気ディスク装置10内のHDD11a〜11eに対するアクセスを制御する制御装置20とを含む。なお、磁気ディスク装置10が備えるHDDの数は、図1のように5台に限るものではない。
【0015】
磁気ディスク装置10は、スピンアップ制御部12を備える。スピンアップ制御部12は、磁気ディスク装置10内のスピンダウンしたHDDをスピンアップさせる。スピンアップ制御部12は、例えば、HDD11a〜11eに供給される電源の電圧が所定のしきい値電圧未満からそのしきい値電圧以上に上昇したときに、磁気ディスク装置10内のHDDにスピンアップを要求する。この場合、スピンアップ制御部12は、磁気ディスク装置10内のHDD11a〜11eのすべてに対して、スピンアップを要求してもよい。
【0016】
一方、制御装置20は、スピンアップ制御部21および切り離し制御部22を備える。スピンアップ制御部21および切り離し制御部22の処理は、例えば、制御装置20が備えるCPU(Central Processing Unit)が所定のプログラムを実行することで実現される。
【0017】
スピンアップ制御部21は、磁気ディスク装置10内のスピンダウンしたHDDをスピンアップさせる。スピンアップ制御部21は、例えば、磁気ディスク装置10内のHDDへのアクセスに対する応答に基づいて、アクセス先のHDDがスピンダウンしていると判定した場合に、アクセス先のHDDに対してスピンアップを要求する。例えば、磁気ディスク装置10内のHDD11cにアクセスしたときに、HDD11cがスピンダウンしていると判定した場合に、図1中の点線矢印で示すように、HDD11cに対してスピンアップを要求する。
【0018】
切り離し制御部22は、磁気ディスク装置10内のスピンダウンしたHDDの数が所定のしきい値に達した場合に、磁気ディスク装置10を使用不許可にし、その一定時間後に、磁気ディスク装置10の使用を許可する。ここで、磁気ディスク装置10を使用不許可にしている間、スピンアップ制御部21はHDDに対してスピンアップを要求できなくなるものの、磁気ディスク装置10内のスピンアップ制御部12の処理によって、スピンダウンしたHDDがスピンアップする。切り離し制御部22が磁気ディスク装置10を使用不許可にする時間は、磁気ディスク装置10のスピンアップ制御部12の制御によってHDDがスピンアップするまでの時間以上とされる。これにより、切り離し制御部22は、磁気ディスク装置10の使用を再度許可した後、制御装置20は、磁気ディスク装置10内のHDD11a〜11eに対してすぐにアクセスできる。
【0019】
仮に、磁気ディスク装置10内の多数のHDDがスピンダウンした場合、制御装置20のスピンアップ制御部21は、スピンダウンしたHDDのそれぞれに対してスピンアップを要求する。このため、スピンダウンしたHDDの数が多くなるほど、制御装置20の処理負荷が高くなる。制御装置20の処理負荷が高くなった場合、例えば、スピンダウンしたHDDの1台当たりのスピンアップに要する時間が長くなる可能性がある。また、制御装置20において実行される、HDDをスピンアップさせる処理以外の処理が停滞してしまう可能性もある。
【0020】
これに対して、切り離し制御部22の処理によれば、一定数以上のHDDがスピンダウンした場合には、制御装置20のスピンアップ制御部21ではなく、磁気ディスク装置10のスピンアップ制御部12の処理によって、HDDがスピンアップされる。これにより、多数のHDDがスピンダウンした場合における制御装置20の処理負荷が軽減される。
【0021】
なお、前述のように、磁気ディスク装置10のスピンアップ制御部12は、HDD11a〜11eに供給される電源の電圧が所定のしきい値電圧未満からそのしきい値電圧以上に上昇したときに、磁気ディスク装置10内のHDDにスピンアップを要求してもよい。この場合、例えば、磁気ディスク装置10に供給される電源の電圧が一時的に低下したことなどによって、磁気ディスク装置10内の多数のHDDがスピンダウンした場合に、制御装置20の処理負荷を増大させることなく、多数のHDDをスピンアップさせることができる。
【0022】
一方、制御装置20のスピンアップ制御部21は、前述のように、磁気ディスク装置10内のHDDへのアクセスに対する応答に基づいて、アクセス先のHDDがスピンダウンしていると判定した場合に、アクセス先のHDDにスピンアップを要求してもよい。さらに、切り離し制御部22は、このようなスピンアップ制御部21によってスピンダウンしていると判定されたHDDの数が、所定のしきい値に達した場合に、磁気ディスク装置10を使用不許可にしてもよい。このようなスピンアップ制御部21および切り離し制御部22の各処理によれば、例えば、深刻でない一時的な異常などによって少数のHDDがスピンダウンしたような場合に、磁気ディスク装置10全体が使用可能な状態に保たれ、磁気ディスク装置10内のスピンアップしているHDDへのアクセス処理を継続できる。
【0023】
また、切り離し制御部22は、例えば、磁気ディスク装置10内のスピンダウンしたHDDの数が所定のしきい値に達した場合に、磁気ディスク装置10が備える、制御装置20と通信する通信インタフェース回路を使用不許可にしてもよい。このような処理によれば、スピンダウンしたHDDの数が多いとき、制御装置20は、磁気ディスク装置10内のインタフェース回路を使用不許可にするという簡単な処理によって、スピンダウンした多数のHDDをスピンアップさせることができる。
【0024】
〔第2の実施の形態〕
図2は、第2の実施の形態に係るストレージシステムのシステム構成例を示す図である。図2に示すストレージシステム100は、CE(Controller Enclosure)200と、DE(Drive Enclosure)300a〜300fと、ホスト装置400とを含む。
【0025】
CE200は、CM(Controller Module)300a,300bと、PSU(Power Supply Unit)202とを備える。
CM300a,300bのそれぞれは、ホスト装置400からの要求に応じて、DE300a〜300f内のHDDに対するデータの読み書きを行う。CM300a,300bは、DE300a〜300f内のHDDによって実現される物理記憶領域をRAIDによって管理し、これらの物理記憶領域に対するアクセスを制御する。
【0026】
なお、CMは、CE200内に1つのみ設けられてもよいし、3つ以上設けられてもよい。ただし、CMが複数設けられることで、DE300a〜300fに対するアクセス制御系統が冗長化され、アクセス制御処理の信頼性が向上する。
【0027】
PSU202は、CM201a,201bに対して電源を供給する。本実施の形態では例として、PSU202は、CM201a,201bに対して5Vの直流電源を供給する。
【0028】
DE300a〜300fのそれぞれは、CM201a,201bからのアクセス制御対象となる複数の記憶装置を備える。本実施の形態では、DE300a〜300fのそれぞれは、記憶装置としてHDDを備えるディスクアレイ装置である。なお、DE300a〜300fが備える記憶装置としては、SSD(Solid State Drive)などの他の種類の不揮発性記憶装置を使用することもできる。
【0029】
DE300a〜300f内のHDDと、CM201a,201bとは、例えば、SAS(Serial Attached SCSI,SCSI:Small Computer System Interface)規格に従って通信する。ここで、DE300a〜300c、およびDE300d〜300fは、それぞれ1つの「DEループ(DE Loop)」を構成する。「DEループ」とは、CM201a,201bのそれぞれに対して直列に連結されたDEの一群である。このDEループとCMとの接続関係については、後の図5で説明する。
【0030】
なお、本実施の形態では、例として、それぞれ6台のHDDを備える6台のDEが設けられるとともに、3台のDEで構成されるDEループが2つ存在するものとするが、DE内のHDDの台数、DEが設けられる数、DEループに含まれるDEの台数、および、DEループの数は、さらに多くてもよい。例えば、1つのDEに搭載されるHDDの最大数が24台、ストレージシステムに設けられるDEの最大数が40台、DEループに含まれるDEの最大数が10台とされてもよい。この場合、ストレージシステムには、960台のHDDが接続されることになる。
【0031】
ホスト装置400は、ユーザの操作に応じて、CM201a,201bに対して、DE300a〜300f内のHDDへのアクセスを要求する。なお、ホスト装置400とCM201a,201bとは、例えば、FC(Fibre Channel)ケーブルを介して接続されている。
【0032】
図3は、CMのハードウェア構成例を示す図である。なお、CM201a,201bは同様のハードウェア構成を有するので、以下の説明では、主にCM201aの構成についてのみ説明する。
【0033】
CM201aは、CPU211によって装置全体が制御されている。CPU211には、RAM212および複数の周辺機器が接続されている。RAM212は、CM201aの主記憶装置として使用され、CPU211に実行させるプログラムの少なくとも一部や、このプログラムによる処理に必要な各種データを一時的に記憶する。
【0034】
CPU211には、周辺機器の例として、フラッシュメモリ213、CA(Channel Adapter)214およびIOC(In/Out Controller)215が接続されている。フラッシュメモリ213は、例えば、図示しないPCH(Platform Controller Hub)を介してCPU211と接続される。また、CA214およびIOC215は、例えば、PCI(Peripheral Component Interconnect)スイッチ216を通じてCPU211と接続されている。
【0035】
フラッシュメモリ213は、CM201aの二次記憶装置として使用され、CPU211によって実行されるプログラムやその実行に必要な各種のデータなどを記憶する。なお、二次記憶装置としては、例えば、HDDなどの他の種類の不揮発性記憶装置が使用されてもよい。
【0036】
CA214は、ホスト装置400とCM201aとの間でデータを送受信するインタフェース処理を実行する。
IOC215は、SASインタフェース処理を実行する回路である。CM201aのIOC215は、CM201aに設けられたSASエクスパンダ217と、CM201bに設けられたSASエクスパンダ217の両方に接続されている。CM201bのIOC215も同様に、CM201aに設けられたSASエクスパンダ217と、CM201bに設けられたSASエクスパンダ217の両方に接続されている。CM201aのSASエクスパンダ217と、CM201bのSASエクスパンダ217は、ともに、DEループを構成するDEのうちの1つに接続されている。
【0037】
なお、CM201aのPCIスイッチ216は、他方のCM201bのPCIスイッチ216と接続されている。CM201aのCPU211と、CM201bのCPU211とは、CM201aのPCIスイッチ216とCM201bのPCIスイッチ216とを接続する通信経路を通じて、互いにデータを送受信できるようになっている。
【0038】
図4は、DEのハードウェア構成例を示す図である。なお、DE300a〜300fは同様のハードウェア構成を有するので、図4では、代表してDE300aの構成について説明する。
【0039】
DE300aは、IOM(In/Out Module)310,320、HDD331〜336およびPSU351,352を備えている。
IOM310,320は、DE300aを統括的に制御するとともに、SASエクスパンダとしての処理を実行する。IOM310は、中継部311、電源監視部312および制御部313を備える。IOM320は、中継部321、電源監視部322および制御部323を備える。
【0040】
IOM310において、中継部311は、CM201aのSASエクスパンダ217、DE300a内部のHDD331〜336、および、DE300aと同一のDEループに属する他の1つのDE(DE300b)の中継部と接続され、接続されたこれらの機器の間でデータを中継する。
【0041】
電源監視部312は、PSU352がDE300a内のHDD331〜336に供給する電源の電圧を監視し、電源供給の瞬断(すなわち、電源供給が停止し、一定時間以内に復旧する現象)を検出すると、その旨を制御部313に通知する。
【0042】
制御部313は、DE300a全体を制御する処理と、中継部311での中継動作を制御する処理とを実行する。制御部313は、DE300a全体の制御処理の1つとして、電源監視部312によって電源供給の瞬断が検出されたとき、DE300a内のHDD331〜336に対してスピンアップを要求する「自動スピンアップ処理」を実行する。
【0043】
IOM320の中継部321、電源監視部322および制御部323は、それぞれ、IOM310の中継部311、電源監視部312および制御部313と同様の処理を実行する。中継部321は、CM201bのSASエクスパンダ217、DE300a内部のHDD331〜336、および、DE300aと同一のDEループに属する他の1つのDE(DE300b)の中継部と接続されている。電源監視部322と、制御部323によるDE300aの制御機能とは、例えば、IOM310が運用系として正常動作中であるとき、待機系となる。
【0044】
HDD331〜336のそれぞれは、SASインタフェース処理を実行するコントローラ回路341〜346をそれぞれ備える。コントローラ回路341〜346は、アクセス元(CM201aまたはCM201b)から受信したコマンドに応じて、HDDの内部を制御するとともに、コマンドに対する応答を返す。
【0045】
PSU351は、IOM310,320に対して、例えば5Vの直流電源を供給する。PSU352は、HDD331〜336に対して、例えば12Vの直流電源を供給する。PSU352は、HDD331〜336が備えるモータを駆動するために、PSU351より大きな電源電圧を出力する。
【0046】
ここで、図5は、DEループの構成例を示す図である。
前述のように、本実施の形態のストレージシステム100では、複数のDEがDEループを構成する。DEループは、CM201a,201bのそれぞれに対して直列に連結されたDEの一群であり、図2に示したように、DE300a〜300cおよびDE300d〜300fがそれぞれ個別のDEループを構成する。
【0047】
図5では例として、DE300a〜300cで構成されるDEループの接続関係を示している。DE300aのIOM310は、CM201aのSASエクスパンダ217に接続され、DE300aのIOM320は、CM201bのSASエクスパンダ217と接続されている。
【0048】
DE300bのIOM310は、DE300aのIOM310を介して、CM201aのSASエクスパンダ217と接続されている。また、DE300bのIOM320は、DE300aのIOM320を介して、CM201bのSASエクスパンダ217と接続されている。
【0049】
DE300cのIOM310は、DE300bのIOM310と、DE300aのIOM310とを介して、CM201aのSASエクスパンダ217と接続されている。また、DE300bのIOM320は、DE300bのIOM310と、DE300aのIOM320とを介して、CM201bのSASエクスパンダ217と接続されている。
【0050】
このように、DEループを構成するDEは、CMに対してシリアルな伝送路を通じて接続されている。
なお、CM201aのIOC215は、CM201aのSASエクスパンダ217を通じて、DE300a,300b,300cのそれぞれが備えるHDDにアクセスできるとともに、他方のCM201bのSASエクスパンダ217を通じて、DE300a,300b,300cのそれぞれが備えるHDDにアクセスすることもできる。このように、CM201aと、DEループを構成するDEとを接続する伝送路が冗長化されることで、CM201aからDEループ内の各HDDへのアクセス処理の信頼性が向上する。
【0051】
また、CM201bについても同様に、CM201bのIOC215と、DEループ内の各DEとを接続する伝送路は、CM201bのSASエクスパンダ217を通る経路と、他方のCM201aのSASエクスパンダ217を通る経路とに冗長化されている。これにより、CM201bからDEループ内の各HDDへのアクセス処理の信頼性が向上する。
【0052】
次に、CM201aが保持する情報について説明する。CM201aが備えるフラッシュメモリ213には、デバイス管理テーブルおよびRAID管理テーブルが格納される。
図6は、デバイス管理テーブルに登録される情報の例を示す図である。
【0053】
デバイス管理テーブル220は、CM201aに接続されたデバイスの状態を示す情報を保持するテーブルである。デバイス管理テーブル220には、デバイスを識別する「デバイス名」に対応付けて、「デバイスステータス」が登録される。
【0054】
「デバイス名」に登録されるデバイスとしては、CM201aに接続されたDE内のIOMおよびHDDがある。デバイス管理テーブル220において、IOMおよびHDDはDEごとに分類され、さらに、DEはDEループごとに分類されている。例えば、図6中の「DE#00」「DE#01」「DE#02」は、それぞれ図2中のDE300a,300b,300cに対応し、1つのDEループを構成する。また、図6中の「IOM#000」「IOM#001」「Disk#000」は、それぞれDE300a内のIOM310、IOM320、HDD341に対応する。
【0055】
「デバイスステータス」は、対応するデバイスが使用可能な状態か否かを示すフラグ情報である。対応するデバイスが使用可能である場合、「デバイスステータス」は「1」である一方、対応するデバイスが使用不可能な状態である場合、「デバイスステータス」は「0」である。CM201aは、「デバイスステータス」を「1」から「0」にすることで、対応するデバイスをCM201aから切り離す。逆に、CM201aは、「デバイスステータス」を「0」から「1」にすることで、対応するデバイスをCM201aに組み込む。
【0056】
なお、図6のような情報が登録されるデバイス管理テーブル220は、CM201bも保持している。CM201aとCM201bとは、例えば、それぞれ個別の情報が登録されたデバイス管理テーブル220を保持してもよい。あるいは、CM201aが保持するデバイス管理テーブル220と、CM201bが保持するデバイス管理テーブル220とが、同期されるようにしてもよい。
【0057】
図7は、RAID管理テーブルに登録される情報の例を示す図である。
RAID管理テーブル230は、RAIDに関する情報を保持するテーブルである。RAID管理テーブル230には、RAIDグループを識別する「RAIDグループ番号」に対応付けて、「RAIDレベル」、「使用ディスク」、「デバイスステータス」、「冗長性ステータス」、「運用可否ステータス」および「論理ボリューム情報」が登録される。
【0058】
「RAIDレベル」には、RAIDグループに設定されたRAIDレベルが登録される。
「使用ディスク」には、DE300a〜300f内のHDDのうち、RAIDグループで使用されるHDDを識別する情報が登録される。「使用ディスク」には、通常、1つのRAIDグループに対して複数のHDDが登録される。
【0059】
「デバイスステータス」は、「使用ディスク」が示すHDDの状態を示すフラグである。「デバイスステータス」に登録される値は、デバイス管理テーブル220において同じHDDに対応付けられた「デバイスステータス」と同じになる。
【0060】
「冗長性ステータス」は、RAIDグループにおいてデータに冗長性があるか否かを示す。データに冗長性がある場合、「冗長性ステータス」は「1」である一方、データに冗長性がない場合、「冗長性ステータス」は「0」である。「データに冗長性がある」とは、RAIDグループの物理領域を構成する複数のHDDのいずれか1つが使用不能の場合でも、データの復元が可能である状態を言う。例えば、RAID管理テーブル230において、「RAIDレベル」にRAID1,4,5のいずれかが設定されたRAIDグループに対応付けられた複数のHDDのうち、1つでも「デバイスステータス」が「0」であれば、データに冗長性はない。
【0061】
「運用可否ステータス」は、RAIDグループの運用が可能か否かを示す。RAIDグループの運用が可能である場合、「運用可否ステータス」は「1」である一方、RAIDグループの運用が不可能である場合、「運用可否ステータス」は「0」である。RAIDグループの運用が可能か否かは、基本的に、RAIDグループを構成するHDDのうち「デバイスステータス」が「0」であるHDDの数によって決まる。例えば、RAID管理テーブル230において、「RAIDレベル」にRAID1,4,5のいずれかが設定されたRAIDグループに対応付けられた複数のHDDのうち、2つ以上のHDDについて「デバイスステータス」が「0」である場合は、RAIDグループの運用は不可能である。
【0062】
なお、「RAIDレベル」にRAID1,4,5のいずれかが設定されたRAIDグループでは、「デバイスステータス」が「0」であるHDDが1つのみの場合、「冗長性ステータス」は「0」になるものの、「運用可否ステータス」は「1」になる。この場合、データに冗長性がない状態のまま、RAIDグループの運用を続行可能である。
【0063】
「論理ボリューム情報」には、RAIDグループに対して設定された論理ボリュームに関する情報が登録される。論理ボリュームに関する情報としては、例えば、設定された論理ボリュームの番号、論理ボリュームとして使用されるHDD上の物理領域の位置情報などがある。
【0064】
次に、図8は、CMが備える処理機能の例を示すブロック図である。なお、CM201aとCM201bは、ともに同様の処理を実行可能であるので、以下、代表してCM201aについて説明する。
【0065】
CM201aは、アクセス制御部240、HDDリカバリ制御部250およびDEリカバリ制御部260を備える。アクセス制御部240、HDDリカバリ制御部250およびDEリカバリ制御部260の処理は、例えば、CM201aのCPU211が所定のプログラムを実行することで実現される。
【0066】
アクセス制御部240は、ホスト装置400からの要求に応じて、DE300a〜300f内のHDDにアクセスする。アクセス制御部240は、RAID管理テーブル230に設定された論理ボリュームに含まれるデータに対するアクセス要求をホスト装置400から受け付け、RAID管理テーブル230の「論理ボリューム情報」に登録された情報を基に、アクセスを要求されたデータにアクセスする。
【0067】
また、アクセス制御部240は、RAID管理テーブル230の情報に基づいて、DE300a〜300f内のHDDに記録するデータをRAIDによって管理する。アクセス制御部240は、データのアクセス要求を受けた場合、RAID管理テーブル230内の「デバイスステータス」、「冗長性ステータス」および「運用可否ステータス」を基に、HDDへのアクセスを制御する。
【0068】
例えば、「RAIDレベル」にRAID4,5のいずれかが設定されている場合のデータ読み出し処理は、次のように行われる。なお、アクセス制御部240は、「運用可否ステータス」が「1」である場合にのみ、RAIDグループに含まれる論理ボリューム内のデータにアクセスすることができる。
【0069】
「使用ディスク」が示すすべてのHDDの「デバイスステータス」が「1」であり、「冗長性ステータス」および「運用可否ステータス」がともに「1」である場合、アクセス制御部240は、「使用ディスク」が示すいずれかのHDDからデータを読み出す。
【0070】
「使用ディスク」が示すHDDのうち1つのHDDの「デバイスステータス」が「0」であり、「冗長性ステータス」が「0」、「運用可否ステータス」が「1」である場合、アクセス制御部240は、次のいずれかの読み出し処理を行う。アクセス制御部240は、「使用ディスク」が示すHDDのうち「デバイスステータス」が「1」であるいずれかのHDDからデータを読み出す。あるいは、アクセス制御部240は、「使用ディスク」が示すHDDのうち「デバイスステータス」が「1」であるすべてのHDDからデータおよびパリティを読み出し、読み出したデータおよびパリティを基に読み出し対象のデータを復元する。
【0071】
また、アクセス制御部240は、書き込みや読み出しなどを要求するコマンドをHDDに送信したとき、HDDから返信されたセンス情報から、HDDがスピンダウンしたと判定すると、スピンダウンしたHDDの識別情報をHDDリカバリ制御部250に通知する。なお、アクセス制御部240は、例えば、HDDから返信されたセンス情報を構成するSK(Sense Key)/ASC(Additional Sense Code)/ASCQ(Additional Sense Code Qualifier)の組合せが、「02h/04h/01h」または「02h/04h/02h」(「h」は16進数表記を示す)のとき、HDDがスピンダウンしたと判定する。
【0072】
HDDリカバリ制御部250およびDEリカバリ制御部260は、ともに、スピンダウンしたHDDを復旧させる処理を実行する。HDDリカバリ制御部250は、前述したスピンダウンリカバリ処理を実行することで、スピンダウンしたHDDを復旧させる。スピンダウンリカバリ処理では、HDDの切り離しや、HDDに対するスピンアップ要求、HDDの再組み込みなどの処理が、スピンダウンしたHDDごとに個別に行われる。一方、DEリカバリ制御部260は、スピンダウンしたHDDをDE単位で復旧させる。DEリカバリ制御部260は、スピンダウンしたHDDを所定数以上含むDE群を一定時間切り離す。DEリカバリ制御部260によってDE群が一定時間切り離されている間、切り離されたDE内のHDDは、IOMによる自動スピンアップ処理によってスピンアップされる。
【0073】
図9は、HDDリカバリ制御部の内部構成例を示す図である。HDDリカバリ制御部250は、スピンダウン検知部251と、リカバリ処理部252とを備える。
HDDリカバリ制御部250は、CM201aのRAM212内にスピンダウンリスト253を生成する。HDDリカバリ制御部250は、アクセス制御部240からスピンダウンしたHDDの識別情報が通知されると、スピンダウンしたHDDの識別情報をスピンダウンリスト253に登録する。
【0074】
リカバリ処理部252は、スピンダウンリスト253に登録されたHDDのそれぞれについて、前述したスピンダウンリカバリ処理を実行する。リカバリ処理部252は、スピンダウンリスト253にHDDが登録されるたびに、登録されたHDDに対応するリカバリタスク252aを起動する。また、リカバリ処理部252は、CM201aのRAM212に、起動したリカバリタスク252aにそれぞれ対応するワークエリア254を確保し、リカバリタスク252aの実行に必要な各種データを、実行するリカバリタスク252aに対応するワークエリア254に格納する。
【0075】
リカバリタスク252aは、処理対象のHDDを切り離す処理、処理対象のHDDにスピンアップを要求するコマンドを発行する処理、および、処理対象のHDDを再度組み込む処理を含む。これらの処理のうち、HDDを切り離す処理では、デバイス管理テーブル220において、処理対象のHDDに対応する「デバイスステータス」が「1」から「0」に更新されるとともに、RAID管理テーブル230において、処理対象のHDDに対応する「デバイスステータス」も同様に「1」から「0」に更新される。さらに、RAID管理テーブル230において、処理対象のHDDが属するRAIDグループに対応する「冗長性ステータス」および「運用可否ステータス」も、必要に応じて更新される。
【0076】
ここで、スピンダウンしたHDDを切り離しても「運用可否ステータス」が「1」のままである場合には、切り離したHDDが属するRAIDグループの運用を続行できる。すなわち、スピンダウンリカバリ処理は、RAIDグループの運用をできる限り継続しながら、スピンダウンしたHDDを復旧させることを可能にする処理である。
【0077】
なお、リカバリ処理部252は、DEリカバリ制御部260から、割り込みを受け付ける場合がある。後述するように、DEリカバリ制御部260は、割り込みを発生する際には、DEループを識別する情報をリカバリ処理部252に通知する。リカバリ処理部252は、割り込みを受け付けたとき、DEリカバリ制御部260から通知されたDEループに設けられたHDDについてのリカバリタスク252aを実行中である場合には、そのリカバリタスク252aの実行を中断する。
【0078】
なお、CM201aのDEリカバリ制御部260の詳細については、後の図13において説明する。
次に、ストレージシステム100内のPSUの動作について説明する。図10は、PSUにおける入力電圧と出力電圧の関係について示す図である。
【0079】
CE200が備えるPSU202、および、DE300a〜300fがそれぞれ備えるPSU351,352は、外部から供給される直流または交流電源を、それぞれ所定の電圧の直流電源に変換する。前述のように、PSU202,351は5Vの直流電源を出力し、PSU352は12Vの直流電源を出力する。
【0080】
また、PSUに入力される電源は、例えば雷などの影響によって、瞬断する(すなわち、電源電圧が一時的に低下する)ことがある。各PSUは、外部から入力される電源が瞬断した場合でも、電源電圧が所定値以下である時間が所定時間以内であれば、出力電圧を一定値に維持することができる。例えば、時刻T1にPSUへの入力電圧が所定値以下に低下したとすると、図10中の「ケース1」のように、電圧が所定値以下である時間が限界時間t0以下の場合は、PSUからの出力電圧は変化しない。しかし、図10中の「ケース2」「ケース3」のように、電圧が所定値以下である時間が限界時間t0を超えた場合には、PSUからの出力電圧も低下する。ただし、「ケース2」のように、電圧が所定値以下である時間が限界時間t0にある程度近い場合には、PSUからの出力電圧は一時的に低下するものの、元の電圧に戻る。逆に、「ケース3」のように、電圧が所定値以下である時間が限界時間t0よりはるかに長い場合には、PSUからの出力電圧は低下したままになる。この「ケース3」は、例えば停電時などに相当する。
【0081】
図11は、PSUごとの限界時間について示す図である。
5V出力のPSU202,351と、12V出力のPSU352とは、出力電圧を一定値に維持可能な、入力電圧が低下する限界時間が、それぞれ異なる。PSU202,351の限界時間t1は、PSU352の限界時間t2より長い。
【0082】
ここで、PSU202,351,352のそれぞれに対する入力電圧が、時刻T2から時間tだけ所定値以下に低下した場合を考える。入力電圧が所定値以下に低下した時間tが、PSU202,351の限界時間t1以下であるが、PSU352の限界時間t2より長い場合(t≦t1かつt>t2)には、図11に示すように、PSU202,351のそれぞれからの出力電圧は変化しないものの、PSU352からの出力電圧は一時的に低下する。
【0083】
PSU352からの出力電圧が一時的に低下すると、その電圧低下時間によっては、PSU352から供給される電源によって動作するHDDはスピンダウンする場合がある。あるDE内のPSU352からの出力電圧が一時的に低下すると、そのDE内の複数のHDDがスピンダウンすることもあり得る。一方、図11のようなケースでは、PSU352からの出力電圧は低下しないので、PSU352から供給される電源によって動作するIOMは、正常に動作し続ける。同様に、図11のようなケースでは、PSU202からの出力電圧も低下しないので、PSU202から供給される電源によって動作するCMも、正常に動作し続ける。
【0084】
この図11のようなケースでは、CMからIOMを通じてHDDにコマンドを送信できるものの、コマンド送信先のHDDがスピンダウンしていることがあり得る。コマンド送信先のHDDがスピンダウンしている場合、コマンド送信先のHDDのコントローラ回路は、コマンド送信元のCMに対して、スピンダウンしていることを判定可能なセンス情報を返信する。図8に示したアクセス制御部240は、HDDから受信したセンス情報からHDDがスピンダウンしていることを判定すると、その旨をHDDリカバリ制御部250に通知する。通知を受けたHDDリカバリ制御部250は、前述のスピンダウンリカバリ処理を実行することで、スピンダウンしたHDDを復旧させる。
【0085】
ところで、DE内のIOMも、同じDE内のHDDをスピンアップさせる「自動スピンアップ処理」を実行可能である。IOMは、PSU352からHDDの電源供給が停止状態から復旧したときに、自動スピンアップ処理を実行する。
【0086】
図12は、自動スピンアップ処理について示す図である。この図12では、例としてDE300aでの自動スピンアップ処理について示す。
DE300aにおいて、IOM310の電源監視部312は、PSU352からHDD331〜336に対して供給されている電源の電圧が、所定のしきい値未満の状態からしきい値以上に上昇したことを検出すると、HDDへの電源供給が回復したことを制御部313に通知する。
【0087】
制御部313は、電源監視部312から電源供給回復の通知を受けると、DE300a内のHDD331〜336のすべてに対して、スピンアップを要求するコマンドを送信する。なお、スピンアップを要求するためのSCSIコマンドは、コード「1Bh」のコマンドである。
【0088】
ここで、電源監視部312が電源供給回復を検出するケースとしては、図11に示したように、外部からPSU352への電源供給が瞬断したことにより、PSU352からの出力電圧が一時的に低下した場合を含む。また、停電などから復旧したことによりPSU351からの電源供給が再開された場合も含む。これらいずれの場合でも、DE300a内のHDD331〜336のうちスピンダウンしたHDDは、CMからのコマンドを受けることなく、IOM310からのコマンドに応じてスピンアップすることができる。
【0089】
次に、CM201aにおいてHDDのスピンダウンが検出された場合の処理について説明する。
図9で説明したように、CM201aのアクセス制御部240がHDDにアクセスしたときに、アクセス先のHDDがスピンダウンしていることが検出された場合、HDDリカバリ制御部250は、スピンダウンしたHDDに対するスピンダウンリカバリ処理を実行する。複数のHDDのスピンダウンが検出された場合には、スピンダウンリスト253に複数のHDDが登録され、登録されたHDDのそれぞれについてリカバリタスク252aが起動する。
【0090】
このようなHDDリカバリ制御部250の処理では、スピンダウンしたHDDが多くなるほど、多数のリカバリタスク252aが起動するため、CM201aのCPU211の処理負荷が高くなるという問題がある。CM201aのCPU211の処理負荷が高くなると、アクセス制御部240によるアクセス処理速度が著しく低下する、あるいは、スピンダウンしたHDD1台当たりの復旧に要する時間が長くなるといった事態を招く。
【0091】
また、起動するリカバリタスク252aが多くなるほど、RAM212に多くのワークエリア254が確保される。RAM212の容量が足りなくなってワークエリア254が確保できない場合には、スピンダウンリカバリ処理が停滞してしまう可能性がある。さらに、アクセス制御部240によるアクセス処理など、スピンダウンリカバリ処理以外の処理を実行できなくなる場合もあり得る。
【0092】
ここで、例えば、HDDのスピンダウンの原因が、そのHDDに対するPSU352からの電源の瞬断にある場合には、そのHDDが搭載されたDE内の多数のHDDがスピンダウンしている可能性が高い。このような場合、アクセス制御部240によって多数のHDDのスピンダウンが検出され、HDDリカバリ制御部250によって多数のリカバリタスク252aが起動してしまう。
【0093】
特に、図11に示したように、IOMへの電源電圧は低下しなかったものの、同じDE内のHDDへの電源電圧は瞬断したケースでは、アクセス制御部240は、正常に動作し続けているIOMを通じて、HDDへのアクセスが可能になってしまう。このため、アクセス制御部240は、アクセスに対する応答から多数のHDDがスピンダウンしていることを検出してしまう可能性が高い。
【0094】
そこで、CM201aのDEリカバリ制御部260は、スピンダウンしているHDDをDEループ単位でカウントし、カウント値が所定数に達した場合に、DEループ内のDEのうちHDDがスピンダウンしているHDDを含むDEを一定時間切り離す。DEを切り離している間、切り離されたDEでは、IOMによって前述の自動スピンアップ処理が実行される。すなわち、スピンダウンしている多数のHDDをDE側の処理によって復旧させることで、CM201aの処理負荷を高めることなく、多数のHDDを復旧させることができるようにする。
【0095】
図13は、DEリカバリ制御部の内部構成例を示す図である。DEリカバリ制御部260は、カウント部261と、切り離し制御部262とを備える。
カウント部261は、デバイス管理テーブル220を参照しながら、スピンダウンしているHDDの数を、DEループごとにカウントする。カウント部261は、スピンダウンしているHDDの数を、スピンダウンリスト253に登録されたHDDの数をカウントすることによって判定する。本実施の形態では、カウント部261は、DE300a〜300cを含むDEループについてのカウント値C0と、DE300d〜300fを含むDEループについてのカウント値C1とをカウントする。カウント値C0,C1は、例えば、CM201aのRAM212に記憶される。
【0096】
切り離し制御部262は、カウント部261によるカウント値が所定数に達した場合に、そのカウント値に対応するDEループに含まれるDEのうち、スピンダウンしたHDDを含むDEを、CM201aから切り離す。このとき、切り離し制御部262は、スピンダウンしたHDDを含むDEのうち最もCM201aに近いDEのIOMのみを切り離す。また、切り離し制御部262は、HDDリカバリ制御部250のリカバリ処理部252に対して割り込みを行い、切り離したDEに含まれるHDDについてのリカバリタスク252aを中断させる。
【0097】
切り離し制御部262は、カウント値が所定数に達してから一定時間が経過すると、切り離したDEの再組み込みを行う。このとき、切り離し制御部262は、リカバリタスク252aを中断させたHDDについて、RAIDのリビルドを行うように、HDDリカバリ制御部250のリカバリ処理部252に要求する。また、切り離し制御部262は、再組み込みを行ったDEに含まれるHDDを、スピンダウンリスト253から消去する。
【0098】
ここで、図14は、切り離し制御部による処理の一例を示す図である。
図14では、DEループを構成するDE300a〜300c内のHDDのうち、スピンダウンしたHDDが所定のしきい値に達した場合の状態を示している。図14では例として、DE300b内のHDD331〜333と、DE300c内のHDD331,332とがスピンダウンしているものとする。
【0099】
このとき、CM201aの切り離し制御部262は、スピンダウンしているHDDが搭載されたDEのうち、最もCM201aに近いDE300bに設けられたIOM310,320を切り離す。これにより、DE300b,300cは使用不許可状態になるが、CM201a,201bからDE300aのHDDへのアクセスは可能になり、ストレージシステム100の運用をできる限り継続させることができる。
【0100】
次に、CM201aのHDDリカバリ制御部250およびDEリカバリ制御部260の処理について、フローチャートを用いて説明する。まず、図15は、HDDリカバリ制御部のリカバリ処理部の処理手順の例を示すフローチャートである。
【0101】
[ステップS11]CM201aのスピンダウン検知部251によって、スピンダウンリスト253に新たなHDDが登録されると、CM201aのリカバリ処理部252は、スピンダウンリスト253に新たに登録されたHDDを選択する。リカバリ処理部252は、選択したHDDについてのリカバリタスク252a(ステップS12〜S18の処理)を実行する。
【0102】
[ステップS12]リカバリ処理部252は、CM201aのRAM212にワークエリア254を確保する。リカバリ処理部252は、次のステップS13以降の処理を、確保したワークエリア254を利用して実行する。
【0103】
[ステップS13]リカバリ処理部252は、デバイス管理テーブル220において、ステップS11で選択したHDDに対応付けられた「デバイスステータス」を、「1」から「0」に更新することで、HDDを切り離す。また、リカバリ処理部252は、RAID管理テーブル230において、切り離したHDDに対応付けられた「デバイスステータス」を、「1」から「0」に更新する。このとき、リカバリ処理部252は、切り離したHDDが属するRAIDグループに対応付けられた「RAIDレベル」と、このRAIDグループに属する他のHDDについての「デバイスステータス」とに基づいて、このRAIDグループに対応付けられた「冗長性ステータス」および「運用可否ステータス」を必要に応じて更新する。
【0104】
例えば、「RAIDレベル」がRAID1,4,5のいずれかであるとき、リカバリ処理部252は、切り離したHDDと同じRAIDグループに属する他のHDDのすべてについて、「デバイスステータス」が「1」である場合には、「冗長性ステータス」を「0」に更新するものの、「運用可否ステータス」を「1」のままにする。これにより、切り離したHDDを使用しない状態でRAIDグループの運用が継続される。
【0105】
また、「デバイスステータス」を「0」に更新したHDDと同じRAIDグループに属する他のHDDのうち、1つでも「デバイスステータス」が「0」であるHDDがある場合には、「運用可否ステータス」を「1」から「0」に更新する。これにより、RAIDグループの運用は停止される。なお、「運用可否ステータス」がすでに「0」であれば、リカバリ処理部252は「運用可否ステータス」を「0」のまま更新しない。
【0106】
[ステップS14]リカバリ処理部252は、ステップS13で切り離したHDDに対して、スピンアップを要求するコマンドを送信する。これにより、切り離されたHDDがスピンアップする。
【0107】
[ステップS15]リカバリ処理部252は、デバイス管理テーブル220において、ステップS13で切り離したHDDに対応付けられた「デバイスステータス」を「0」から「1」に更新することで、切り離したHDDの再組み込みを行う。また、リカバリ処理部252は、RAID管理テーブル230において、ステップS13で切り離したHDDに対応付けられた「デバイスステータス」を「0」から「1」に更新する。
【0108】
[ステップS16]ステップS15におけるRAID管理テーブル220内の「デバイスステータス」の更新処理により、再組み込みを行ったHDDが属するRAIDグループにおいて、データに冗長性がない状態から冗長性がある状態に移行できる場合、リカバリ処理部252は、リビルド処理を実行する。リビルド処理は、RAIDグループに属する論理ボリューム内のデータについて、データのコピーやパリティの再計算などを行うことで、論理ボリューム内の最新の記録データに冗長性を持たせるようにする処理である。なお、リビルド処理は、少なくとも、再組み込みを行ったHDDが属するRAIDグループに対応付けられた「冗長性ステータス」および「運用可否ステータス」が、それぞれ「0」「1」である場合に実行される。
【0109】
例えば、RAID1の場合、リビルド処理では、組み込み済みであった一方のHDDから、再組み込みされたHDDに対してデータのコピーが行われる。また、RAID4,5の場合、リビルド処理では、パリティの再計算およびデータの再配置が行われる。リカバリ処理部252は、リビルド処理が完了すると、RAID管理テーブル230において、再組み込みを行ったHDDが属するRAIDグループに対応付けられた「冗長性ステータス」を、「0」から「1」に更新する。
【0110】
なお、ステップS15においてHDDの再組み込みを行ったことにより、データに冗長性がない状態でRAIDグループの運用を再開できる場合には、リカバリ処理部252は、RAID管理テーブル230において、再組み込みを行ったHDDが属するRAIDグループに対応付けられた「運用可否ステータス」を、「0」から「1」に更新する。このとき、同じRAIDグループに対応付けられた「冗長性ステータス」は「0」のままになる。
【0111】
また、ステップS15においてHDDの再組み込みを行っても、再組み込みを行ったHDDが属するRAIDグループにおいてデータに冗長性を持たせられない場合には、ステップS16の処理はスキップされる。この場合、再組み込みを行ったHDDが属するRAIDグループに対応付けられた「冗長性ステータス」および「運用可否ステータス」は、ともに「0」のままになる。
【0112】
[ステップS17]リカバリ処理部252は、再組み込みを行ったHDDを、スピンダウンリスト253から消去する。
[ステップS18]リカバリ処理部252は、ステップS12で確保したワークエリア254を解放し、リカバリタスク252aを終了する。
【0113】
なお、DEリカバリ制御部260の切り離し制御部262から、HDDリカバリ制御部250に対して割り込みが発生した場合、リカバリ処理部252は、リカバリタスクの実行を中断する。
【0114】
ここで、図16は、割り込み発生時におけるリカバリタスクの処理手順の例を示すフローチャートである。なお、図16の処理は、リカバリタスク252aの実行対象であるHDDごとに実行される。
【0115】
[ステップS31]リカバリ処理部252は、ある1つのHDDを処理対象としたリカバリタスク252aの実行中に、その処理対象のHDDが属するDEループを指定した割り込みを切り離し制御部262から受信すると、リカバリタスク252aの実行を中断する。
【0116】
[ステップS32]リカバリ処理部252は、切り離し制御部262からのリビルド要求を監視する。リビルド要求は、割り込みの解除を通知する情報である。リカバリ処理部252は、ステップS31での処理対象のHDDが属するDEループを指定したリビルド要求を受信すると(S32:Yes)、ステップS33の処理を実行する。
【0117】
[ステップS33〜S35]ステップS33〜S35の処理は、中断したリカバリタスク252aにおける残りの処理である。ステップS33,S34,S35の処理は、それぞれ図15のステップS15,S16,S18の処理と同様である。ただし、割り込みを受信したタイミングによっては、ステップS33〜S35の処理は適宜スキップされる。
【0118】
例えば、図15のステップS12の実行前に割り込みを受信した場合、ステップS33〜S35の処理はスキップされる。図15のステップS12まで実行された段階で割り込みを受信した場合、ステップS33,S34の処理はスキップされる。図15のステップS13まで実行された段階で割り込みを受信した場合、ステップS33〜S35の処理はスキップされずに実行される。
【0119】
次に、図17は、DEリカバリ制御部のカウント部の処理手順の例を示すフローチャートである。
[ステップS51]CM201aのカウント部261は、スピンダウンリスト253に対して新たなHDDが登録されたことを検知すると、ステップS52の処理を実行する。
【0120】
[ステップS52]カウント部261は、デバイス管理テーブル220に基づき、ステップS51でスピンダウンリスト253に新たに登録されたHDDが搭載されたDEを特定する。カウント部261はさらに、デバイス管理テーブル220に基づき、特定したDEが属するDEループを特定する。
【0121】
[ステップS53]カウント部261は、ステップS52で特定したDEループに対応するカウント値を「1」だけカウントアップする。カウント部261は、ステップS52で特定したDEループがDE300a〜300cを含むものである場合、図13のカウント値C0をカウントアップする。一方、カウント部261は、ステップS52で特定したDEループがDE300d〜300fを含むものである場合、図13のカウント値C1をカウントアップする。
【0122】
図18は、DEリカバリ制御部の切り離し制御部の処理手順の例を示すフローチャートである。なお、図18の処理は、カウント値C0,C1のそれぞれについて実行される。
[ステップS71]CM201aの切り離し制御部262は、監視対象のカウント値(例えばカウント値C0)が、しきい値nに達したことを検知すると、ステップS72の処理を実行する。
【0123】
[ステップS72]切り離し制御部262は、監視対象のカウント値に対応するDEループに属するDEの中から、スピンダウンしたHDDが搭載されたDEを特定し、特定したDEのうちCM201aに最も近いDE内のIOMを切り離す。この処理は、例えば次のように行われる。
【0124】
切り離し制御部262は、デバイス管理テーブル220に基づき、スピンダウンリスト253に登録されたHDDの中から、監視対象のカウント値に対応するDEループ内のHDDを特定する。この処理では、切り離し制御部262は、スピンダウンリスト253に登録されたHDDを1つずつ読み込み、デバイス管理テーブル220に基づいて、読み込んだHDDが搭載されたDEを特定し、さらに、特定したDEが属するDEループを特定する。切り離し制御部262は、特定したDEループが監視対象のカウント値に対応するかを判別する。
【0125】
次に、切り離し制御部262は、デバイス管理テーブル220に基づき、特定したHDDが搭載されたDEの中から、CM201aに最も近いDEを特定する。例えば、特定したHDDが搭載されたDEのうち、デバイス管理テーブル220において最も上段に登録されたDEが、CM201aに最も近いDEとなる。
【0126】
次に、切り離し制御部262は、デバイス管理テーブル220において、特定したDE内のIOMに対応付けられた「デバイスステータス」を、「1」から「0」に更新する。これにより、特定したDE内のIOMが切り離され、アクセス制御部240は、切り離されたIOMが搭載されたDE内のHDD、および、切り離されたIOMの配下に直列に接続されたDE内のHDDに対して、アクセスできなくなる。
【0127】
[ステップS73]切り離し制御部262は、リカバリ処理部252に対して、監視対象のカウント値に対応するDEループを指定した割り込みを行う。図16で説明したように、割り込みを受信したリカバリ処理部252は、指定されたDEループ内のHDDについてのリカバリタスク252aを実行中であった場合には、このリカバリタスク252aの実行を中断する。
【0128】
[ステップS74]切り離し制御部262は、監視対象のカウント値を「0」にリセットする。
[ステップS75]切り離し制御部262は、スピンダウンリスト253に登録されたHDDのうち、監視対象のカウント値に対応するDEループ内のHDDを、スピンダウンリスト253から消去する。このとき、スピンダウンリスト253からはn個のHDDが消去される。
【0129】
[ステップS76]切り離し制御部262は、ステップS71でカウント値がしきい値nに達したことを検知してから、所定時間が経過するまで待ち状態となる。そして、所定時間が経過したとき(S76:Yes)、切り離し制御部262は、ステップS77の処理を実行する。
【0130】
このステップS76において監視する経過時間は、DEのIOMが、HDDに対する供給電圧の復帰を検出してから自動スピンアップ処理が完了するまでの時間以上の長さとされる。切り離し制御部262が待ち状態の間、ステップS72で切り離したIOMと、このIOMの配下に直列に接続されたDE内のIOMとが、それぞれ自動スピンアップ処理を実行する。同じDEループ内の複数のDEにおいてHDDがスピンダウンした場合には、複数のDEのそれぞれが備えるIOMが、自動スピンアップ処理を並列に実行することになる。そして、ステップS76で所定時間が経過したと判定されたとき、ステップS72で切り離したIOMと同じDE内のすべてのHDDと、切り離したIOMの配下に直列に接続されたDE内のすべてのHDDとが、スピンアップした状態になる。
【0131】
[ステップS77]切り離し制御部262は、デバイス管理テーブル220において、ステップS72で切り離したIOMについての「デバイスステータス」を「0」から「1」に更新することで、切り離したIOMの再組み込みを行う。
【0132】
なお、上記のステップS74,S75の処理は、ステップS71でカウント値がしきい値nに達したことを検知してから、ステップS77の再組み込み処理の実行を開始する前までの期間であれば、どのタイミングで実行されてもよい。
【0133】
[ステップS78]切り離し制御部262は、リカバリ処理部252に対して、監視対象のカウント値に対応するDEループを指定したリビルドを要求して、割り込みを解除する。リビルド要求を受けた切り離し制御部262は、図16のステップS33〜S35に示した処理を実行する。これにより、リカバリタスク252aの実行開始によって切り離されていたHDDの再組み込みが行われる。HDDの再組み込みが行われることにより、「冗長性ステータス」が「0」のまま運用されていたRAIDグループにおいて、データに冗長性を持たせることができる場合や、運用を停止していたRAIDグループの運用を再開できる場合がある。
【0134】
以上説明したストレージシステム100では、電源供給の断絶などによって多数のHDDがスピンダウンした場合に、CM側でなく、スピンダウンしたHDDと同じDEに搭載されたIOMの処理によって、HDDをスピンアップさせることができる。また、多数のHDDがスピンダウンした場合、CMは主に、IOMの切り離しおよび再組み込み(具体的には「デバイスステータス」の更新)という簡単な処理を実行する。
【0135】
このため、多数のHDDがスピンダウンした場合でも、CMの処理負荷が極端に高くなることなく、HDDをスピンアップさせることができる。HDDをスピンアップさせるためのCMの処理負荷が軽減することで、HDDを復旧させながら、切り離されていないDE内のHDDに対するアクセス制御部240によるアクセス処理を継続できるようになり、システムの運用継続性が向上する。また、HDDがスピンアップし、スピンアップしたHDDを用いてRAIDグループの運用を再開できるようになるまでの時間を短縮できる。
【0136】
一方、スピンダウンしたHDDの数が少ない場合には、CMのリカバリ処理部252の処理によって、HDD単位で復旧処理が行われる。DEリカバリ制御部260による復旧処理では、DE単位で切り離しが発生するため、スピンダウンしていないHDDに対してもアクセスできなくなる場合がある。これに対して、リカバリ処理部252はHDD単位で復旧処理を行うことから、例えば、個々のHDDでの小規模な異常によってHDDが一時的にスピンダウンしたような場合には、RAIDの運用を継続しながら、スピンダウンしたHDDを復旧させることができる。
【0137】
なお、上記のストレージシステム100では、例えば、停電などによって比較的長時間にわたってシステム全体に対する電源供給が断絶した後に、電源供給が復活した場合でも、DE300a〜300f内のHDDを、CMの処理負荷を増大させることなく短時間で復旧させることができる。
【0138】
以上の各実施の形態に関し、さらに以下の付記を開示する。
(付記1) 複数の磁気ディスクドライブを備える磁気ディスク装置と、前記磁気ディスク装置内の磁気ディスクドライブへのアクセスを制御する制御装置とを有するストレージシステムにおいて、
前記磁気ディスク装置は、自装置内のスピンダウンした磁気ディスクドライブをスピンアップさせる第1のスピンアップ制御部を有し、
前記制御装置は、
前記磁気ディスク装置内のスピンダウンした磁気ディスクドライブをスピンアップさせる第2のスピンアップ制御部と、
前記磁気ディスク装置内のスピンダウンした磁気ディスクドライブの数が所定のしきい値に達した場合に、前記磁気ディスク装置を使用不許可にし、一定時間後に前記磁気ディスク装置の使用を許可する切り離し制御部と、
を有することを特徴とするストレージシステム。
【0139】
(付記2) 前記第1のスピンアップ制御部は、自装置内の磁気ディスクドライブに供給される電源の電圧が所定のしきい値電圧未満から前記しきい値電圧以上に上昇したことを検出した場合に、自装置内の磁気ディスクドライブに対してスピンアップを要求することを特徴とする付記1記載のストレージシステム。
【0140】
(付記3) 前記切り離し制御部は、前記磁気ディスク装置内のスピンダウンした磁気ディスクドライブの数が前記しきい値に達した場合に、前記磁気ディスク装置が備える、前記制御装置と通信するインタフェース回路を使用不許可にすることを特徴とする付記1または2記載のストレージシステム。
【0141】
(付記4) 前記第2のスピンアップ制御部は、前記磁気ディスク装置内の磁気ディスクドライブへのアクセスに対する応答に基づいて、アクセス先の磁気ディスクドライブがスピンダウンしていると判定した場合に、アクセス先の磁気ディスクドライブをスピンアップさせ、
前記切り離し制御部は、前記第2のスピンアップ制御部によってスピンダウンしていると判定された磁気ディスクドライブの数が前記しきい値に達した場合に、前記磁気ディスク装置を使用不許可にする、
ことを特徴とする付記1〜3のいずれか1つに記載のストレージシステム。
【0142】
(付記5) 前記制御装置には、それぞれ複数の磁気ディスクドライブと前記第1のスピンアップ制御部とを備える複数の磁気ディスク装置が、直列に連結されており、
前記切り離し制御部は、前記複数の磁気ディスク装置におけるスピンダウンした磁気ディスクドライブの数が前記しきい値に達したとき、前記複数の磁気ディスク装置の中のスピンダウンした磁気ディスクドライブを備える磁気ディスク装置のうち、最も前記制御装置に近い磁気ディスク装置を使用不許可にする、
ことを特徴とする付記1または2記載のストレージシステム。
【0143】
(付記6) 前記切り離し制御部は、前記複数の磁気ディスク装置におけるスピンダウンした磁気ディスクドライブの数が前記しきい値に達したとき、前記複数の磁気ディスク装置の中のスピンダウンした磁気ディスクドライブを備える磁気ディスク装置のうち、最も前記制御装置に近い磁気ディスク装置が備える、前記制御装置と通信するインタフェース回路を使用不許可にすることを特徴とする付記5記載のストレージシステム。
【0144】
(付記7) 複数の磁気ディスクドライブを備える磁気ディスク装置に接続し、前記磁気ディスク装置内の磁気ディスクドライブへのアクセスを制御するストレージ制御装置において、
前記磁気ディスク装置内のスピンダウンした磁気ディスクドライブをスピンアップさせるスピンアップ制御部と、
前記磁気ディスク装置内のスピンダウンした磁気ディスクドライブの数が所定のしきい値に達した場合に、前記磁気ディスク装置を使用不許可にし、前記磁気ディスク装置が自装置内のスピンダウンした磁気ディスクドライブをスピンアップさせるのに要する時間以上の所定時間が経過した後に、前記磁気ディスク装置の使用を許可する切り離し制御部と、
を有することを特徴とするストレージ制御装置。
【0145】
(付記8) 前記切り離し制御部は、前記磁気ディスク装置内のスピンダウンした磁気ディスクドライブの数が前記しきい値に達した場合に、前記磁気ディスク装置が備える、前記制御装置と通信するインタフェース回路を使用不許可にすることを特徴とする付記7記載のストレージ制御装置。
【0146】
(付記9) 前記スピンアップ制御部は、前記磁気ディスク装置内の磁気ディスクドライブへのアクセスに対する応答に基づいて、アクセス先の磁気ディスクドライブがスピンダウンしていると判定した場合に、アクセス先の磁気ディスクドライブをスピンアップさせ、
前記切り離し制御部は、前記スピンアップ制御部によってスピンダウンしていると判定された磁気ディスクドライブの数が前記しきい値に達した場合に、前記磁気ディスク装置を使用不許可にする、
ことを特徴とする付記7または8記載のストレージ制御装置。
【0147】
(付記10) 前記ストレージ制御装置には、それぞれ複数の磁気ディスクドライブを備える複数の磁気ディスク装置が直列に連結されており、
前記切り離し制御部は、前記複数の磁気ディスク装置におけるスピンダウンした磁気ディスクドライブの数が前記しきい値に達したとき、前記複数の磁気ディスク装置の中のスピンダウンした磁気ディスクドライブを備える磁気ディスク装置のうち、最も前記ストレージ制御装置に近い磁気ディスク装置を使用不許可にする、
ことを特徴とする付記7記載のストレージ制御装置。
【0148】
(付記11) 前記切り離し制御部は、前記複数の磁気ディスク装置におけるスピンダウンした磁気ディスクドライブの数が前記しきい値に達したとき、前記複数の磁気ディスク装置の中のスピンダウンした磁気ディスクドライブを備える磁気ディスク装置のうち、最も前記ストレージ制御装置に近い磁気ディスク装置が備える、前記ストレージ制御装置と通信するインタフェース回路を使用不許可にすることを特徴とする付記10記載のストレージ制御装置。
【0149】
(付記12) 複数の磁気ディスクドライブを備える磁気ディスク装置と、前記磁気ディスク装置内の磁気ディスクドライブへのアクセスを制御する制御装置とを有するストレージシステムにおけるストレージ制御方法であって、
前記制御装置が、前記磁気ディスク装置内のスピンダウンした磁気ディスクドライブをスピンアップさせ、
前記磁気ディスク装置が、自装置内のスピンダウンした磁気ディスクドライブをスピンアップさせ、
前記制御装置が、前記磁気ディスク装置内のスピンダウンした磁気ディスクドライブの数が所定のしきい値に達した場合に、前記磁気ディスク装置を使用不許可にし、一定時間後に前記磁気ディスク装置の使用を許可する、
ことを特徴とするストレージ制御方法。
【0150】
(付記13) 前記磁気ディスク装置は、自装置内の磁気ディスクドライブに供給される電源の電圧が所定のしきい値電圧未満から前記しきい値電圧以上に上昇したことを検出した場合に、自装置内の磁気ディスクドライブに対してスピンアップを要求することを特徴とする付記12記載のストレージ制御方法。
【0151】
(付記14) 前記制御装置は、前記磁気ディスク装置内のスピンダウンした磁気ディスクドライブの数が前記しきい値に達した場合、前記磁気ディスク装置が備える、前記制御装置と通信するインタフェース回路を使用不許可にすることを特徴とする付記12または13記載のストレージ制御方法。
【0152】
(付記15) 前記制御装置は、
前記磁気ディスク装置内の磁気ディスクドライブへのアクセスに対する応答に基づいて、アクセス先の磁気ディスクドライブがスピンダウンしていると判定した場合に、アクセス先の磁気ディスクドライブをスピンアップさせ、
前記応答に基づいてスピンダウンしていると判定された磁気ディスクドライブの数が前記しきい値に達した場合に、前記磁気ディスク装置を使用不許可にする、
ことを特徴とする付記12〜14のいずれか1つに記載のストレージ制御方法。
【0153】
(付記16) 前記制御装置には、それぞれ複数の磁気ディスクドライブを備える複数の磁気ディスク装置が直列に連結されており、
前記制御装置は、前記複数の磁気ディスク装置におけるスピンダウンした磁気ディスクドライブの数が前記しきい値に達したとき、前記複数の磁気ディスク装置の中のスピンダウンした磁気ディスクドライブを備える磁気ディスク装置のうち、最も前記制御装置に近い磁気ディスク装置を使用不許可にする、
ことを特徴とする付記12または13記載のストレージ制御方法。
【0154】
(付記17) 前記制御装置は、前記複数の磁気ディスク装置におけるスピンダウンした磁気ディスクドライブの数が前記しきい値に達したとき、前記複数の磁気ディスク装置の中のスピンダウンした磁気ディスクドライブを備える磁気ディスク装置のうち、最も前記制御装置に近い磁気ディスク装置が備える、前記制御装置と通信するインタフェース回路を使用不許可にすることを特徴とする付記16記載のストレージ制御方法。
【符号の説明】
【0155】
1 ストレージシステム
10 磁気ディスク装置
11a〜11e HDD
12,21 スピンアップ制御部
20 制御装置
22 切り離し制御部

【特許請求の範囲】
【請求項1】
複数の磁気ディスクドライブを備える磁気ディスク装置と、前記磁気ディスク装置内の磁気ディスクドライブへのアクセスを制御する制御装置とを有するストレージシステムにおいて、
前記磁気ディスク装置は、自装置内のスピンダウンした磁気ディスクドライブをスピンアップさせる第1のスピンアップ制御部を有し、
前記制御装置は、
前記磁気ディスク装置内のスピンダウンした磁気ディスクドライブをスピンアップさせる第2のスピンアップ制御部と、
前記磁気ディスク装置内のスピンダウンした磁気ディスクドライブの数が所定のしきい値に達した場合に、前記磁気ディスク装置を使用不許可にし、一定時間後に前記磁気ディスク装置の使用を許可する切り離し制御部と、
を有することを特徴とするストレージシステム。
【請求項2】
前記第1のスピンアップ制御部は、自装置内の磁気ディスクドライブに供給される電源の電圧が所定のしきい値電圧未満から前記しきい値電圧以上に上昇したことを検出した場合に、自装置内の磁気ディスクドライブに対してスピンアップを要求することを特徴とする請求項1記載のストレージシステム。
【請求項3】
前記切り離し制御部は、前記磁気ディスク装置内のスピンダウンした磁気ディスクドライブの数が前記しきい値に達した場合に、前記磁気ディスク装置が備える、前記制御装置と通信するインタフェース回路を使用不許可にすることを特徴とする請求項1または2記載のストレージシステム。
【請求項4】
前記第2のスピンアップ制御部は、前記磁気ディスク装置内の磁気ディスクドライブへのアクセスに対する応答に基づいて、アクセス先の磁気ディスクドライブがスピンダウンしていると判定した場合に、アクセス先の磁気ディスクドライブをスピンアップさせ、
前記切り離し制御部は、前記第2のスピンアップ制御部によってスピンダウンしていると判定された磁気ディスクドライブの数が前記しきい値に達した場合に、前記磁気ディスク装置を使用不許可にする、
ことを特徴とする請求項1〜3のいずれか1項に記載のストレージシステム。
【請求項5】
前記制御装置には、それぞれ複数の磁気ディスクドライブと前記第1のスピンアップ制御部とを備える複数の磁気ディスク装置が、直列に連結されており、
前記切り離し制御部は、前記複数の磁気ディスク装置におけるスピンダウンした磁気ディスクドライブの数が前記しきい値に達したとき、前記複数の磁気ディスク装置の中のスピンダウンした磁気ディスクドライブを備える磁気ディスク装置のうち、最も前記制御装置に近い磁気ディスク装置を使用不許可にする、
ことを特徴とする請求項1または2記載のストレージシステム。
【請求項6】
前記切り離し制御部は、前記複数の磁気ディスク装置におけるスピンダウンした磁気ディスクドライブの数が前記しきい値に達したとき、前記複数の磁気ディスク装置の中のスピンダウンした磁気ディスクドライブを備える磁気ディスク装置のうち、最も前記制御装置に近い磁気ディスク装置が備える、前記制御装置と通信するインタフェース回路を使用不許可にすることを特徴とする請求項5記載のストレージシステム。
【請求項7】
複数の磁気ディスクドライブを備える磁気ディスク装置に接続し、前記磁気ディスク装置内の磁気ディスクドライブへのアクセスを制御するストレージ制御装置において、
前記磁気ディスク装置内のスピンダウンした磁気ディスクドライブをスピンアップさせるスピンアップ制御部と、
前記磁気ディスク装置内のスピンダウンした磁気ディスクドライブの数が所定のしきい値に達した場合に、前記磁気ディスク装置を使用不許可にし、前記磁気ディスク装置が自装置内のスピンダウンした磁気ディスクドライブをスピンアップさせるのに要する時間以上の所定時間が経過した後に、前記磁気ディスク装置の使用を許可する切り離し制御部と、
を有することを特徴とするストレージ制御装置。
【請求項8】
複数の磁気ディスクドライブを備える磁気ディスク装置と、前記磁気ディスク装置内の磁気ディスクドライブへのアクセスを制御する制御装置とを有するストレージシステムにおけるストレージ制御方法であって、
前記制御装置が、前記磁気ディスク装置内のスピンダウンした磁気ディスクドライブをスピンアップさせ、
前記磁気ディスク装置が、自装置内のスピンダウンした磁気ディスクドライブをスピンアップさせ、
前記制御装置が、前記磁気ディスク装置内のスピンダウンした磁気ディスクドライブの数が所定のしきい値に達した場合に、前記磁気ディスク装置を使用不許可にし、一定時間後に前記磁気ディスク装置の使用を許可する、
ことを特徴とするストレージ制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate