説明

ディスク制御装置およびディスク制御方法

【課題】仮想ボリュームの未割り当ての実領域に値が保証できないデータが作成されることを防止すること。
【解決手段】管理部2は、冗長化されたデータを分散して管理する複数のディスク装置によって実現される仮想ボリューム内に設けられる論理ボリュームを管理する。再構築処理部3は、仮想ボリューム4を実現するディスク装置のうち、所定のディスク装置の故障に応じてデータの冗長性を確保する再構築処理を行う。そして、再構築処理部3は、仮想ボリューム4の領域に異常を検出したとき、この領域が、論理ボリュームが割り当てられている領域か否かを判断する。仮想ボリュームの論理ボリュームが割り当てられていない領域に異常を検出した場合に、この領域を初期化する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はディスク制御装置およびディスク制御方法に関する。
【背景技術】
【0002】
複数のディスク装置とディスクコントローラを有するディスクアレイシステムでは、ディスク故障によるデータ損失を防ぎ、さらに処理性能を向上させるため、RAID(Redundant Array of Inexpensive Disks)が採用されている。RAIDが採用されるシステムをRAIDシステムと言う。
【0003】
RAIDシステムでは、データを複数のディスク装置に分散し、冗長性を持たせている。但し、「RAID 0」を除く。
RAIDグループを構成しているディスク装置の1つが故障等によって使用不能となり冗長性を失った場合は、このディスク装置の代わりに予備のディスク装置を割り当て、予備のディスク装置にデータを再構築することで冗長性を復活させる再構築(Rebuild)処理が行われる。
【0004】
再構築処理では、使用不能となったディスク装置のデータの再構築のために、ある一定の処理単位毎に正常なディスク装置からデータを読み出し、復旧したデータを予備のディスク装置であるホットスペアディスク(Hot Spare Disk)に書き込む処理が繰り返される。
【0005】
ところで、正常なディスク装置からのデータ読み出し処理にて、冗長度より多い本数のディスクドライブの同一ブロックで異常を検出した場合、当該ブロックに格納されているデータの読み出しは不可能となる。
【0006】
このような状況でも再構築処理を継続し、また当該ブロックでのデータロストを明示する必要があるため、異常を検出したディスク装置およびホットスペアディスクに対応するBADデータを作成し、これを当該ブロックに書き込んだ上で再構築処理を継続する。
【0007】
ここで、BADデータとは、何らかの要因により、ボリューム(後述)上の当該ブロックのデータが使用不能であることを明示的に示すためのものである。BADデータの内容は、例えば、当初のデータとは別のデータが書き込まれている状態となる。ホストコンピュータからのデータ読み出し要求の際に要求範囲内にBADデータが含まれていれば、BADデータ応答をホストコンピュータに返すことで、ホストコンピュータはデータ読み出し要求の失敗を認識することができる。このため、誤ったデータをそのまま使用することはない。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2008−134987号公報
【特許文献2】特表平11−510292号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
RAIDグループが有するボリュームの種別としては、通常ボリュームまたは仮想ボリュームが存在する。
図15は、通常ボリュームと仮想ボリュームを説明する図である。
【0010】
通常ボリューム800では、ホストコンピュータに認識させる論理ボリューム810、820を作成するときに、作成する論理ボリューム810、820と同容量分の実領域をRAIDグループ上に割り当てる。
【0011】
図15(a)では、通常ボリューム800の実領域800a、800bは、それぞれ、フォーマット処理や再構築処理等を実行する対象の領域である。
図15(a)では、通常ボリューム800の実領域800aを、論理ボリューム名がVol#0の論理ボリューム810に割り当てている。また、通常ボリューム800の実領域800bを論理ボリューム名がVol#1の論理ボリューム820に割り当てている。
【0012】
このように、通常ボリューム800では、論理ボリューム810、820として使用される実領域とホストコンピュータから認識される領域800a、800bに対応する実領域は等しい。
【0013】
従って、論理ボリューム作成時には実領域上の当該領域(ホストコンピュータから認識される領域)のみフォーマット処理を行い、また前述した再構築処理を実施する必要があるときも、当該領域のみに対して行えばよい。
【0014】
これに対し仮想ボリューム900では、論理ボリューム910、920を作成するときには実領域は割り当てず、実際にホストコンピュータからI/O要求があった時点で、I/O要求があった範囲のみに実領域をその都度割り当てていく。
【0015】
従って、仮想ボリューム900は、その全てがフォーマット処理や再構築処理等を実行する対象の領域となる。
図15(b)では、仮想ボリューム900の所定の大きさのブロック単位に区切られた領域900a、900b、900cを、論理ボリューム名がVol#2の論理ボリューム910に割り当てている。また、仮想ボリューム900の所定の大きさのブロック単位に区切られた領域900d、900e、900fを論理ボリューム名がVol#3の論理ボリューム920に割り当てている。
【0016】
このように、仮想ボリュームは、通常ボリュームとは異なり、論理ボリュームに使用される実領域とホストコンピュータから認識される領域に対応する実領域は等しくない。言い換えると、論理ボリュームに使用される可能性があるが、未だホストコンピュータから認識されていない領域が存在する。
【0017】
この仮想ボリューム900において、再構築処理を実施すると、実施中に未割り当ての実領域においてもBADデータが発生する場合がある。
この場合、ホストコンピュータから論理ボリューム上に新たに実領域を割り当てる際にBADデータを含んだ領域を割り当ててしまう。これにより、これから使用しようとする領域に既に異常状態が存在するという状況に陥るという不都合が発生するという問題がある。
【0018】
本発明はこのような点に鑑みてなされたものであり、仮想ボリュームの未割り当ての実領域に値が保証できないデータが作成されることを防止することができるディスク制御装置およびディスク制御方法を提供することを目的とする。
【課題を解決するための手段】
【0019】
上記目的を達成するために、開示のディスク制御装置が提供される。このディスク制御装置は、管理部と、再構築処理部とを有している。
管理部は、冗長化されたデータを分散して管理する複数のディスク装置によって実現される仮想ボリューム内に設けられる論理ボリュームを管理する。
【0020】
再構築処理部は、所定のディスク装置の故障に応じてデータの冗長性を確保する再構築処理を行うに際し、仮想ボリュームの論理ボリュームが割り当てられていない領域に異常を検出した場合に、この領域を初期化する。
【発明の効果】
【0021】
開示のディスク制御装置によれば、再構築処理を行う際に仮想ボリュームの未割り当ての領域に値が保証できないデータが作成されることを確実に防止することができる。
【図面の簡単な説明】
【0022】
【図1】実施の形態のディスク制御装置の概要を示す図である。
【図2】実施の形態のシステムを示す図である。
【図3】実施の形態のディスク装置の構成例を示す図である。
【図4】制御モジュールの機能を示すブロック図である。
【図5】実施の形態の再構築処理を説明する図である。
【図6】実施の形態の再構築処理を説明する図である。
【図7】実施の形態の再構築処理を説明する図である。
【図8】実施の形態の再構築処理を説明する図である。
【図9】TPPS管理テーブルを示す図である。
【図10】TPPE管理テーブルを示す図である。
【図11】OLU管理テーブルを示す図である。
【図12】制御モジュールの再構築処理を示すフローチャートである。
【図13】制御モジュールの再構築処理を示すフローチャートである。
【図14】BADデータ作成判断処理を示す図である。
【図15】通常ボリュームと仮想ボリュームを説明する図である。
【発明を実施するための形態】
【0023】
以下、実施の形態を、図面を参照して詳細に説明する。
まず、実施の形態のディスク制御装置について説明し、その後、実施の形態をより具体的に説明する。
【0024】
<第1の実施の形態>
図1は、実施の形態のディスク制御装置の概要を示す図である。
実施の形態のディスク制御装置1は、管理部2と、再構築処理部3とを有している。
【0025】
管理部2は、冗長化されたデータを分散して管理する複数のディスク装置によって実現される仮想ボリューム内に設けられる論理ボリュームを管理する。
図1では、複数のディスク装置によって実現される仮想ボリューム4が設けられている。管理部2は、仮想ボリューム4の実領域を所定の管理単位4a〜4dで分割した管理単位領域毎に、仮想ボリューム4の実領域が割り当てられた論理ボリューム5、6を管理している。
【0026】
再構築処理部3は、仮想ボリューム4を実現するディスク装置のうち、所定のディスク装置の故障に応じてデータの冗長性を確保する再構築処理を行う。
再構築処理は、具体的には、ディスク装置の記憶領域を所定の管理単位で分割した管理単位領域毎に、故障が発生したディスク装置のデータをこのディスク装置以外のディスク装置のデータを用いて復元して予め用意された予備のディスクに書き込み、この予備ディスクにデータを再構築する処理である。
【0027】
ところで、図1に示す仮想ボリューム4には、論理ボリュームに使用される可能性があるが、未だホストコンピュータから認識されていない管理単位4fが存在する。
再構築処理部3は、再構築処理において、この管理単位4f等、将来割り当てられる可能性のあるディスク上の実領域全てについてデータを再構築する。
【0028】
そして、再構築処理部3は、仮想ボリューム4の領域に異常を検出したとき、この領域が、論理ボリュームが割り当てられている領域か否かを判断する。
換言すれば、仮想ボリューム4の論理ボリューム5、6が割り当てられていない領域に値が保証できないデータが作成される状況か否かを判断する。
【0029】
値が保証できないデータが作成される状況とは、例えば、冗長度より多い本数のディスクドライブの同一管理単位で異常を検出したような状況を言う。この場合、当該管理単位に格納されているデータの読み出しは不可能となる。
【0030】
再構築処理部3は、仮想ボリュームの論理ボリュームが割り当てられていない領域に異常を検出した場合に、この領域を初期化する。
この領域を初期化することにより、未割り当ての実領域に値が保証できないデータが作成されることを確実に防止する。これにより、当該領域に対する上書き命令をホストコンピュータから受け取ることなく、その領域を使用することができる環境を確保することができる。
【0031】
なお、再構築処理部3は、前述した判断により、仮想ボリューム4の論理ボリュームが割り当てられている管理単位4a〜4eのいずれかに異常を検出した場合には、その管理単位が使用不能であることを示すデータを書き込むようにするのが好ましい。
【0032】
これにより、当該管理単位のデータが使用不能であることを明示的に示すことができる。
<第2の実施の形態>
以下、第2の実施の形態では、RAID機能「RAID 5」を実現するディスクアレイシステムを例に図面を参照して開示のディスク制御装置を詳細に説明する。
【0033】
図2は、実施の形態のシステムを示す図である。
実施の形態のRAIDシステム1000は、RAID機能「RAID 5」を実現するディスクアレイが有する論理ディスク200、201、202と、ホストコンピュータ300とが、制御モジュール(CM:Control Module)100、110、120を介して接続されている。
【0034】
論理ディスク200、201、202は、それぞれ、1つ、または、複数の物理ディスクを有している。
ここで、論理ディスク200を識別するディスク名は「RLU#0」である。論理ディスク201を識別するディスク名は「RLU#1」である。論理ディスク202を識別するディスク名は「RLU#2」である。
【0035】
また、制御モジュール100を識別するモジュール名は「CM#0」である。制御モジュール110を識別するモジュール名は「CM#1」である。制御モジュール120を識別するモジュール名は「CM#2」である。
【0036】
制御モジュール100、制御モジュール110間は、ルータ(RT)130によって接続されている。また、制御モジュール110、制御モジュール120間は、ルータ140によって接続されている。
【0037】
制御モジュール100、制御モジュール110および制御モジュール120は、ホストコンピュータ300から取得したI/O要求を実行するとともに、管理下のディスクアレイの一部が故障したときには、そのデータをホットスペアディスク上に再構築する再構築処理を行うディスク制御装置である。
【0038】
また、これらは、それぞれも冗長な構成となっており、いずれかの制御モジュールが故障すると、他がこれをバックアップする。
ここで、制御モジュール100のハードウェア構成について説明する。
【0039】
制御モジュール100は、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101には、バス106を介してメモリ102、チャネルアダプタ(Channel Adapter)104、ディスクインタフェース(Disk Interface)105等が接続されている。
【0040】
CPU101とメモリ102とは図示しないバッテリーでバックアップされ、メモリの一部がキャッシュ103として使用される。
チャネルアダプタ104は、ホストコンピュータ300と接続するホストインタフェースを処理する回路である。
【0041】
ディスクインタフェース105は、ディスク装置と接続するディスクインタフェースを処理する回路である。
なお、制御モジュール110、制御モジュール120の構成も同様であり、それぞれキャッシュ113、123、チャネルアダプタ114、124、および、ディスクインタフェース115、125を備えている。
【0042】
次に、ディスク装置の構成について説明する。
図3は、実施の形態のディスク装置の構成例を示す図である。
図3に示す例では、4台のディスク装置、ディスク210、ディスク220、ディスク230、ディスク240と、予備のディスク装置であるホットスペアディスク250とによりRAID機能「RAID 5」が実現される。
【0043】
ここで、ディスク210を識別するディスク名は、ディスク#0である。ディスク220を識別するディスク名は、ディスク#1である。ディスク230を識別するディスク名は、ディスク#2である。ディスク240を識別するディスク名は、ディスク#3である。
【0044】
ディスク210、ディスク220、ディスク230、ディスク240には、ストライプサイズに分割されたデータと、分割データから生成されたパリティが、同一ストライプに格納されている。
【0045】
例えば、データAは、データA1、データA2、データA3に分割され、パリティPAとともに、それぞれディスク210のブロック211、ディスク220のブロック221、ディスク230のブロック231、ディスク240のブロック241に格納される。
【0046】
データBも同様に、データB1、データB2、データB3に分割され、パリティPBとともに、それぞれブロック212、ブロック222、ブロック242、ブロック232に格納される。
【0047】
このような構成とすることで、いずれか1つのディスク装置が故障したとき、他の正常なディスク装置に格納される同一ストライプの分割データと、パリティデータとから、故障ディスク装置のデータを復元できる。
【0048】
また、ホットスペアディスク250側のデータAに対応するストライプ領域をブロック251、データBに対応するストライプ領域をブロック252とする。
再構築処理の処理単位とする管理単位領域は、ディスク上の領域を所定の単位で分割した領域とし、1つの領域をTPPS(前述した管理単位4a〜4fに対応)と言う。1つのTPPSは、例えば32MBである。
【0049】
ところで、RAIDシステム1000では、RAIDグループを仮想ボリュームとして扱っている。
仮想ボリュームでは、ディスク210、ディスク220、ディスク230、ディスク240上の実領域の全てが再構築の対象領域となる。前述したように仮想ボリュームでは、論理ボリュームを作成するときには実領域は割り当てず、実際にホストコンピュータ300からI/O要求があった時点で、I/O要求があった範囲のみに実領域をその都度割り当てていく。
【0050】
仮想ボリュームでは、実領域の割り当ては、TPPS単位で行われる。
次に、制御モジュール100の機能を説明する。
図4は、制御モジュールの機能を示すブロック図である。
【0051】
制御モジュール100は、システム監視部100aと、構成管理部100bと、保守制御部100cと、チャネルアダプタドライバ100dと、リソース制御部100eと、キャッシュ制御部100fと、仮想ボリューム制御部100gと、RAIDリカバリ制御部100hと、ボリューム・サービス・マネージャ100iと、RAID制御部100jと、ディスクドライバ100kとを有している。
【0052】
システム監視部100aは、電源や温度等のアラームや部品のマウント情報等、図示しない監視モジュールから通知されるイベントを制御モジュール100内で同期させ、必要な処理を起動する。
【0053】
構成管理部100bは、制御モジュール100の構成と状態を制御モジュール100全体で矛盾が生じないように管理する。また、必要な情報は電力が供給されていない状態でも保持するように管理する。
【0054】
また、構成管理部100bは、保守制御部100cからの指示による構成の変更・初期化や内部のエラー等による状態変化等を契機に、制御モジュール100内の情報の同期を取ったり、メモリ102へ情報を格納したりする。
【0055】
保守制御部100cは、CGIからのコマンドの受け口として動作する。また、制御モジュール100のファームウェアを管理する。
チャネルアダプタドライバ100dは、チャネルアダプタ104を制御する。ホストコンピュータ300からのI/O要求を受け付け、制御モジュール100内のスレッド(Thread)層とコミュニケーションを行う。
【0056】
リソース制御部100eは、ホストコンピュータ300のI/Oの排他制御や監視を行う。
具体的には、リソース制御部100eは、EXTENT排他制御、ボリューム排他制御、クロスアクセス制御、センス管理制御、サブシステムコマンドの排他制御等を行う。
【0057】
キャッシュ制御部100fは、データをディスク210、ディスク220、ディスク230、ディスク240から読み出すときのI/Oに使用するキャッシュ103を管理する。また、キャッシュ制御部100fは、データをディスク210、ディスク220、ディスク230、ディスク240に書き込むときのI/Oに使用するキャッシュ103を管理する。
【0058】
キャッシュ制御部100fは、データのI/Oに対するヒット、ミス(Hit/Miss)判定、および、ステージング(Staging)や、ライトバック(WriteBack)等のスケジュールを行う。
【0059】
仮想ボリューム制御部100gは、仮想ボリュームのTPPV/TPPE/TPPSの割り当てや、論理ボリュームとの関連付けを管理する。なお、管理方法については後述する。
【0060】
RAIDリカバリ制御部100hは、ディスク210、ディスク220、ディスク230、ディスク240の障害時や活性保守時に、ホットスペアディスク250の割り当てや、RAIDグループの状態遷移を制御する。
【0061】
ボリューム・サービス・マネージャ100iは、RAIDリカバリ制御部100h、RAIDレイヤと連携し、再構築処理の制御や、コピーバック制御を行う。
ここで、コピーバック制御とは、ホットスペアディスク250に書き込まれた冗長データを、図示しない他のディスクに書き込む処理である。
【0062】
RAID制御部100jは、各RAIDレベルでのディスク210、ディスク220、ディスク230、ディスク240へのデータのI/Oを制御するレイヤである。
ディスクドライバ100kは、ディスク210、ディスク220、ディスク230、ディスク240への通信制御を実施する。
【0063】
次に、再構築処理を簡単に説明する。
図5〜8は、実施の形態の再構築処理を説明する図である。
図5では、ディスク210、ディスク220、ディスク230、ディスク240のデータが割り当てられている割り当て済み領域210aを斜線で示している。
【0064】
ディスク210、ディスク220、ディスク230、ディスク240が正常な状態では、ホストからのI/O要求が受け付けられると、RAID制御部100jが通常のI/O要求処理を実行し、応答をホストコンピュータ300へ返す。
【0065】
ここで、仮想ボリュームとして扱っているRAIDグループにてディスク故障が発生した場合を想定する。ディスク210、ディスク220、ディスク230、ディスク240のうちの1台が故障したことが検出されると、RAID制御部100jが、再構築処理を行う。図5では、ディスク230が故障したとする。
【0066】
このとき、構成管理部100bは、ホットスペアディスク250を故障したディスク230の代替ディスクとして割り当て、RAID制御部100jにリカバリ指示を送る。
リカバリ指示を受け取ったRAID制御部100jは、再構築処理を開始する。
【0067】
まず、RAID制御部100jは、ボリューム・サービス・マネージャ100iが決定した再構築を行う1回あたりの範囲(以下、「再構築単位領域」と言う)毎に、正常なディスク210、ディスク220、ディスク240の分割データを読み出す。そして、故障したディスク230の再構築単位領域のデータを復元する。
【0068】
図6に示すように、ディスク210、ディスク220、ディスク240からデータを読み出し、読み出したデータのXOR(排他的論理和)を取る。
XORを取ったデータは、ホットスペアディスク250に書き込まれ、データがホットスペアディスク250に再構築される。
【0069】
再構築単位領域の再構築処理完了後、再構築管理情報の当該再構築単位領域に関する「再構築処理実施状況」は、再構築処理完了に設定される。
ここで、再構築処理中に、ディスク210の1つのTPPSにて媒体エラー領域210bを検出した場合であって、このTPPSが、ディスク230との間で冗長性を確保していた場合、既に冗長性の無い状態となる。
【0070】
このとき、RAID制御部100jは、BADデータ作成判断処理を行う。
この処理の結果、媒体エラー領域210bが論理ボリュームに割り当てられているか否かが分かる。なお、BADデータ作成判断処理については後述する。
【0071】
図7では、媒体エラー領域210bが、データ未割り当ての領域に存在している。この場合、当該媒体エラー領域210bに対しフォーマット処理を実施する。これにより、図8に示すように、媒体エラー領域210bは、フォーマット済み領域210cとなり、データ未割り当ての領域にBADデータが生成されることを防止することができる。
【0072】
また、ホットスペアディスク250の媒体エラー領域210bに対応する領域(対応領域)は、割り当て済み領域であるので、本領域にはBADデータを書き込む。これにより、図8に示すように、ホットスペアディスク250の対応領域がBADデータ250aになる。
【0073】
その後、再構築処理を継続して行う。
次に、媒体エラー領域210bにデータが割り当てられているか否かを判断する方法を説明する。
【0074】
RAID制御部100j部は、BADデータ作成判断処理時に、仮想ボリューム制御部100gに媒体エラー領域210bのTPPSにデータが割り当てられているか否かを問い合わせる。
【0075】
仮想ボリューム制御部100gは、キャッシュ103内に設けられた以下に示す3種類のテーブルを用いてTPPSにデータが割り当てられているか否かを判断する。そして、RAID制御部100j部は、その結果に基づいて、前述したフォーマット処理を実施する。
【0076】
図9は、TPPS管理テーブルを示す図である。
TPPS管理テーブル103aは、TPPSをTPPS単位で管理するテーブルであり、複数設けられている。
【0077】
図9では1つのTPPS管理テーブル103aを図示しており、1つのTPPS管理テーブル103aは、1つのTPPSに対応している。
TPPSには、オフセット(off set)、バイト(Byte)0、バイト1、バイト2、バイト3の欄が設けられている。
【0078】
オフセット「0000」のバイト0、バイト1には、制御モジュール100内部で管理する論理ボリュームの番号を示す「SLU Number」が設定されている。
オフセット「0000」のバイト3、および、オフセット「0004」のバイト1〜バイト3には、SLUとしての実領域上のアドレスを示す「SLU LBA」が設定されている。なお、「SLU LBA」の上限は512TBである。
【0079】
さらにキャッシュ103には、ホストコンピュータ300からの要求に応じてTPPSを特定するためのTPPE管理テーブルおよびOLU管理テーブルが設けられている。
図10は、TPPE管理テーブルを示す図である。
【0080】
TPPE管理テーブル103bには、オフセット、バイト0、バイト1、バイト2、バイト3の欄が設けられている。
オフセット「0000」のバイト0、バイト1には、ホストコンピュータ300に認識させる、割り当て先の論理ボリューム番号を示す「OLU Number」が設定されている。
【0081】
オフセット「0000」のバイト2、バイト3には、「SLU Number」が設定されている。
オフセット「0008」のバイト0〜バイト3、および、オフセット「000C」のバイト0〜バイト3には、割り当て済み、または、未割り当てのTPPSを識別する42ビットのビットマップ(ビット列)が設定されている。すなわち、1つのTPPE管理テーブル103bには、42個のTPPSを識別するビットマップが設定されている。
【0082】
図11は、OLU管理テーブルを示す図である。
OLU管理テーブル103cには、オフセット、バイト0、バイト1、バイト2、バイト3の欄が設けられている。
【0083】
オフセット「0000」のバイト0〜バイト3には、TPPE管理テーブル103bを特定する情報「TPPEエントリ」が設定されている。
オフセット「0004」のバイト0〜バイト3には、特定したTPPE管理テーブル103b内のオフセット番号を特定する情報「TPPE内オフセット」が設定されている。
【0084】
このようなTPPS管理テーブル103a、TPPE管理テーブル103b、および、OLU管理テーブル103cを備えることにより、TPPSにデータが割り当てられているか否かを確実に判断することができる。
【0085】
具体的には、ホストコンピュータ300からデータのI/Oが要求された際、仮想ボリューム制御部100gは、OLU管理テーブル103cを参照し、要求範囲に該当するTPPE管理テーブル103bと当該TPPE管理テーブル103b内のオフセットを特定する。そして、当該TPPE管理テーブル103bを経由して該当するTPPS管理テーブル103aの「SLU LBA」を参照する。これにより、該当するSLUとしてのLBAを特定することができる。
【0086】
次に、制御モジュール100の再構築処理を詳しく説明する。
図12、13は、制御モジュールの再構築処理を示すフローチャートである。
ディスクに故障が発生した場合、構成管理部100bが、RAIDグループの構成状態を縮退状態に変更する(ステップS1)。
【0087】
これにより、RAIDリカバリ制御部100hが、使用可能なホットスペアディスク(HS)250が存在するか否かを判断する(ステップS2)。
使用可能なホットスペアディスク250が存在しない場合(ステップS2のNo)、処理を終了する。
【0088】
一方、使用可能なホットスペアディスク250が存在する場合(ステップS2のYes)、RAIDリカバリ制御部100hが、存在する旨を構成管理部100bに通知する。これにより、構成管理部100bが、RAIDグループの構成状態を再構築処理実施状態に変更する(ステップS3)。
【0089】
これにより、RAIDリカバリ制御部100hは、ボリューム・サービス・マネージャ100iとともに、以下(1)〜(4)の処理(初期処理)を行う(ステップS4)。
(1)ホットスペアディスク250の構成状態を変更する。
【0090】
(2)RAIDグループの状態をチェックする。
(3)再構築処理の対象となるディスクの状態をチェックする。
(4)再構築処理を開始するための初期設定を行う。
【0091】
次に、ボリューム・サービス・マネージャ100iが、ディスク210、ディスク220、ディスク230、ディスク240のデータの再構築を行う再構築単位領域を決定する(ステップS5)。
【0092】
次に、RAID制御部100jが、ディスク210、ディスク220、ディスク230、ディスク240からデータを読み出すディスクを選択する(ステップS6)。
次に、RAID制御部100jが、選択したディスクにディスク読み出しコマンドを発行する(ステップS7)。発行したコマンドは、ディスクドライバ100kが、選択したディスクに通知する。
【0093】
これにより、選択されたディスクからデータが読み出される。
次に、RAID制御部100jが、ディスクドライバ100kを介して選択したディスクから受け取る情報に基づいて、ディスクからのデータの読み出しが、正常に終了したか否かを判断する(ステップS8)。
【0094】
ディスクからのデータの読み出しが正常に終了した場合(ステップS8のYes)、RAID制御部100jが、データの再生成が必要か否かを判断する(ステップS9)。
データの再生成が必要ではない場合(ステップS9のNo)、ステップS11に移行する。
【0095】
一方、データの再生成が必要である場合(ステップS9のYes)、RAID制御部100jが、データ再生成の為の計算(XOR処理)を行う(ステップS10)。
その後、RAID制御部100jが、ディスク書き込みコマンドを発行する(ステップS11)。発行したコマンドは、ディスクドライバ100kが、ホットスペアディスク250に通知する。これにより、ホットスペアディスク250にデータが書き込まれる。その後、ステップS17に移行する。
【0096】
以後、ステップS7のディスク読み出しコマンドの発行からステップS11のディスク書き込みコマンドの発行までの処理を基本単位処理と言う。
ところで、ステップS8において、ディスクからのデータの読み出しが正常に終了しなかった場合(ステップS8のNo)、RAID制御部100jが、データを読み出し可能なディスクが他に存在するか否かを判断する(ステップS12)。
【0097】
データを読み出し可能なディスクが他に存在する場合(ステップS12のYes)、ステップS6に移行し、そのディスクを選択する(ステップS6)。その後、ステップS7以降の処理を引き続き行う。
【0098】
一方、データを読み出し可能なディスクが他に存在しない場合、(ステップS12のNo)、RAID制御部100jが、読み出した正常に終了しなかったディスクに、媒体異常等の局所的なエラーが発生したか否かを判断する(ステップS13)。
【0099】
局所的なエラーが発生していないと判断した場合(ステップS13のNo)、ステップS17に移行する。
一方、局所的なエラーが発生したと判断した場合(ステップS13のYes)、RAID制御部100jが、エラーが発生したTPPSの直前のTPPSまでは基本単位処理を実施する(ステップS14)。
【0100】
次に、エラー発生したTPPSについて、RAID制御部100jが、BADデータ作成判断処理を実施する(ステップS15)。なお、この処理については、後に詳述する。
次に、RAID制御部100jが、エラーが発生したTPPS以降のTPPSに対して基本単位処理を実施する(ステップS16)。
【0101】
次に、ボリューム・サービス・マネージャ100iが、ステップS5にて決定した再構築単位領域について、再構築処理が正常に終了したか否かを判断する(ステップS17)。
【0102】
今回の再構築単位領域について、再構築処理が正常に終了した場合(ステップS17のYes)、ボリューム・サービス・マネージャ100iが、再構築処理の実施済み範囲の更新依頼を構成管理部100bに通知する。これにより、構成管理部100bが、再構築処理の実施済み範囲を更新する(ステップS18)。
【0103】
次に、ボリューム・サービス・マネージャ100iが、再構築処理の未実施の領域が存在するか否かを判断する(ステップS19)。
再構築処理の未実施の領域が存在する場合(ステップS19のYes)、ステップS5に移行し、ボリューム・サービス・マネージャ100iが、再構築処理の未実施の領域について、データの再構築を行う再構築単位領域を決定する。そしてステップS6以降の処理を引き続き行う。
【0104】
一方、再構築処理の未実施の領域が存在しない場合(ステップS19のNo)、構成管理部100bが、RAIDグループの構成状態を再構築処理完了状態に変更する(ステップS20)。その後、処理を終了する。
【0105】
一方、ステップS17において、今回の再構築単位領域について、再構築処理が正常に終了しなかった場合(ステップS17のNo)、構成管理部100bが、RAIDグループの構成状態を縮退状態に変更する(ステップS21)。その後、処理を終了する。
【0106】
次に、BADデータ作成判断処理を説明する。
図14は、BADデータ作成判断処理を示す図である。
まず、仮想ボリューム制御部100gが、対象となるRAIDグループは、仮想ボリュームのプール用か否かを判断する(ステップS31)。
【0107】
対象となるRAIDグループが仮想ボリュームのプール用ではない場合(ステップS31のNo)、BADデータを作成する(ステップS32)。その後、ステップS36に移行する。
【0108】
一方、対象となるRAIDグループが、仮想ボリュームのプール用である場合(ステップS31のYes)、エラーが発生したTPPSのデータの割り当て状況を仮想ボリューム制御部100gに問い合わせる(ステップS33)。
【0109】
そして、問い合わせた結果に基づいて、エラーが発生したTPPSにデータが割り当て済みか否かを判断する(ステップS34)。
エラーが発生したTPPSにデータが割り当て済みである場合(ステップS34のYes)、BADデータ作成処理を行い、BADデータを作成する(ステップS32)。
【0110】
エラー発生したTPPSにデータが割り当て済みではない場合(ステップS34のNo)、フォーマット処理を行い、フォーマットデータを作成する(ステップS35)。
次に、作成したデータをエラーが発生したTPPSを有するディスク、および、ホットスペアディスク250に書き込む(ステップS36)。
【0111】
具体的には、ステップS32においてBADデータを作成した場合は、作成したBADデータを局所的なエラーが発生したディスクのTPPS、および、ホットスペアディスク250に書き込む。
【0112】
また、ステップS35にてフォーマットデータを作成した場合は、作成したフォーマットデータをエラーが発生したTPPSを有するディスク、および、ホットスペアディスク250に書き込む。例えば、図11に示す例であれば、ディスク210の媒体エラー領域210bおよびホットスペアディスク250の対応領域にフォーマットデータを書き込む。これにより、ディスク210には、フォーマット済み領域210cが形成される。また、ホットスペアディスク250には、フォーマット済み領域250aが形成される。
【0113】
その後、BADデータ作成判断処理を終了する。
以上述べたように、RAIDシステム1000によれば、制御モジュール100が、仮想ボリュームにて未割り当ての実領域にエラーが発生した場合には、BADデータではなくフォーマットデータを書き込むようにした。
【0114】
具体的には、次のようなフローを実現する論理を実装するようにした。
BADデータ作成時に、まず、当該ディスクが所属するRAIDグループが仮想ボリュームの為の実領域であるかどうかを確認する。そうであれば、実領域の当該領域が論理ボリュームに割り当てられているかどうかを問い合わせる。未割り当てであれば当該領域のみのフォーマット処理を実施する。
【0115】
これにより、仮想ボリュームの未割り当て領域にBADデータが存在する状況を確実に防止することができる。
従って、ホストコンピュータ300からのフォーマット命令を受け取ることなく初期値を確実に保証することができる。これにより、ディスク資源を有効に活用することができる。
【0116】
なお、本実施の形態では、RAID機能「RAID 5」を例にとって、制御モジュール100の処理を説明したが、これに限らず、他のRAID機能にも適用することができる。
【0117】
以上、本発明のディスク制御装置およびディスク制御方法を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【0118】
また、本発明は、前述した各実施の形態のうちの、任意の2以上の構成(特徴)を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、制御モジュール100が有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープ等が挙げられる。光ディスクとしては、例えば、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等が挙げられる。光磁気記録媒体としては、例えば、MO(Magneto-Optical disk)等が挙げられる。
【0119】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROM等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0120】
ディスク制御プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【符号の説明】
【0121】
1 ディスク制御装置
2 管理部
3 再構築処理部
4 仮想ボリューム
4a〜4f 管理単位
5、6 論理ボリューム
100、110、120 制御モジュール
101 CPU
102 メモリ
103、113、123 キャッシュ
104、114、124 チャネルアダプタ
100a システム監視部
100b 構成管理部
100c 保守制御部
100d チャネルアダプタドライバ
100e リソース制御部
100f キャッシュ制御部
100g 仮想ボリューム制御部
100h RAIDリカバリ制御部
100i ボリューム・サービス・マネージャ
100j RAID制御部
100k ディスクドライバ
130、140 ルータ
200、201、202 論理ディスク
210、220、230、240 ディスク
210a 割り当て済み領域
210b 媒体エラー領域
210c、250a フォーマット済み領域
211、212、221、222、231、232、241、242、251、252 ブロック
250 ホットスペアディスク
300 ホストコンピュータ
1000 RAIDシステム

【特許請求の範囲】
【請求項1】
冗長化されたデータを分散して管理する複数のディスク装置によって実現される仮想ボリューム内に設けられる論理ボリュームを管理する管理部と、
所定の前記ディスク装置の故障に応じてデータの冗長性を確保する再構築処理を行うに際し、前記仮想ボリュームの前記論理ボリュームが割り当てられていない領域に異常を検出した場合に、前記領域を初期化する再構築処理部と、
を有することを特徴とするディスク制御装置。
【請求項2】
前記再構築処理部は、前記仮想ボリュームの領域に異常を検出したとき、前記領域が前記論理ボリュームが割り当てられている領域か否かを判断することを特徴とする請求項1記載のディスク制御装置。
【請求項3】
前記再構築処理部は、前記領域が前記論理ボリュームが割り当てられている領域である場合に、前記領域が使用不能であることを示すデータを前記領域に書き込むことを特徴とする請求項2記載のディスク制御装置。
【請求項4】
コンピュータが、
冗長化されたデータを分散して管理する複数のディスク装置によって実現される仮想ボリューム内に設けられる論理ボリュームを管理しており、
所定の前記ディスク装置の故障に応じてデータの冗長性を確保する再構築処理を行うに際し、前記仮想ボリュームの領域に異常を検出したとき、前記領域が前記論理ボリュームが割り当てられている領域か否かを判断し、
前記論理ボリュームが割り当てられていない場合に、前記領域を初期化する、
ことを特徴とするディスク制御方法。
【請求項5】
前記領域が前記論理ボリュームが割り当てられている領域である場合に、前記領域が使用不能であることを示すデータを前記領域に書き込むことを特徴とする請求項4記載のディスク制御方法。

【図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


【公開番号】特開2011−3046(P2011−3046A)
【公開日】平成23年1月6日(2011.1.6)
【国際特許分類】
【出願番号】特願2009−146025(P2009−146025)
【出願日】平成21年6月19日(2009.6.19)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】