(57)【要約】【課題】仮想ボリュームの未割り当ての実領域に値が保証できないデータが作成されることを防止すること。【解決手段】管理部２は、冗長化されたデータを分散して管理する複数のディスク装置によって実現される仮想ボリューム内に設けられる論理ボリュームを管理する。再構築処理部３は、仮想ボリューム４を実現するディスク装置のうち、所定のディスク装置の故障に応じてデータの冗長性を確保する再構築処理を行う。そして、再構築処理部３は、仮想ボリューム４の領域に異常を検出したとき、この領域が、論理ボリュームが割り当てられている領域か否かを判断する。仮想ボリュームの論理ボリュームが割り当てられていない領域に異常を検出した場合に、この領域を初期化する。【選択図】図１
2011003046.tif 000002
【特許請求の範囲】
【請求項１】
冗長化されたデータを分散して管理する複数のディスク装置によって実現される仮想ボリューム内に設けられる論理ボリュームを管理する管理部と、
所定の前記ディスク装置の故障に応じてデータの冗長性を確保する再構築処理を行うに際し、前記仮想ボリュームの前記論理ボリュームが割り当てられていない領域に異常を検出した場合に、前記領域を初期化する再構築処理部と、
を有することを特徴とするディスク制御装置。
【請求項２】
前記再構築処理部は、前記仮想ボリュームの領域に異常を検出したとき、前記領域が前記論理ボリュームが割り当てられている領域か否かを判断することを特徴とする請求項１記載のディスク制御装置。
【請求項３】
前記再構築処理部は、前記領域が前記論理ボリュームが割り当てられている領域である場合に、前記領域が使用不能であることを示すデータを前記領域に書き込むことを特徴とする請求項２記載のディスク制御装置。
【請求項４】
コンピュータが、
冗長化されたデータを分散して管理する複数のディスク装置によって実現される仮想ボリューム内に設けられる論理ボリュームを管理しており、
所定の前記ディスク装置の故障に応じてデータの冗長性を確保する再構築処理を行うに際し、前記仮想ボリュームの領域に異常を検出したとき、前記領域が前記論理ボリュームが割り当てられている領域か否かを判断し、
前記論理ボリュームが割り当てられていない場合に、前記領域を初期化する、
ことを特徴とするディスク制御方法。
【請求項５】
前記領域が前記論理ボリュームが割り当てられている領域である場合に、前記領域が使用不能であることを示すデータを前記領域に書き込むことを特徴とする請求項４記載のディスク制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はディスク制御装置およびディスク制御方法に関する。
【背景技術】
【０００２】
複数のディスク装置とディスクコントローラを有するディスクアレイシステムでは、ディスク故障によるデータ損失を防ぎ、さらに処理性能を向上させるため、ＲＡＩＤ（Redundant Array of Inexpensive Disks）が採用されている。ＲＡＩＤが採用されるシステムをＲＡＩＤシステムと言う。
【０００３】
ＲＡＩＤシステムでは、データを複数のディスク装置に分散し、冗長性を持たせている。但し、「ＲＡＩＤ  ０」を除く。
ＲＡＩＤグループを構成しているディスク装置の１つが故障等によって使用不能となり冗長性を失った場合は、このディスク装置の代わりに予備のディスク装置を割り当て、予備のディスク装置にデータを再構築することで冗長性を復活させる再構築（Rebuild）処理が行われる。
【０００４】
再構築処理では、使用不能となったディスク装置のデータの再構築のために、ある一定の処理単位毎に正常なディスク装置からデータを読み出し、復旧したデータを予備のディスク装置であるホットスペアディスク（Hot Spare Disk）に書き込む処理が繰り返される。
【０００５】
ところで、正常なディスク装置からのデータ読み出し処理にて、冗長度より多い本数のディスクドライブの同一ブロックで異常を検出した場合、当該ブロックに格納されているデータの読み出しは不可能となる。
【０００６】
このような状況でも再構築処理を継続し、また当該ブロックでのデータロストを明示する必要があるため、異常を検出したディスク装置およびホットスペアディスクに対応するＢＡＤデータを作成し、これを当該ブロックに書き込んだ上で再構築処理を継続する。
【０００７】
ここで、ＢＡＤデータとは、何らかの要因により、ボリューム（後述）上の当該ブロックのデータが使用不能であることを明示的に示すためのものである。ＢＡＤデータの内容は、例えば、当初のデータとは別のデータが書き込まれている状態となる。ホストコンピュータからのデータ読み出し要求の際に要求範囲内にＢＡＤデータが含まれていれば、ＢＡＤデータ応答をホストコンピュータに返すことで、ホストコンピュータはデータ読み出し要求の失敗を認識することができる。このため、誤ったデータをそのまま使用することはない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−１３４９８７号公報
【特許文献２】特表平１１−５１０２９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ＲＡＩＤグループが有するボリュームの種別としては、通常ボリュームまたは仮想ボリュームが存在する。
図１５は、通常ボリュームと仮想ボリュームを説明する図である。
【００１０】
通常ボリューム８００では、ホストコンピュータに認識させる論理ボリューム８１０、８２０を作成するときに、作成する論理ボリューム８１０、８２０と同容量分の実領域をＲＡＩＤグループ上に割り当てる。
【００１１】
図１５（ａ）では、通常ボリューム８００の実領域８００ａ、８００ｂは、それぞれ、フォーマット処理や再構築処理等を実行する対象の領域である。
図１５（ａ）では、通常ボリューム８００の実領域８００ａを、論理ボリューム名がＶｏｌ＃０の論理ボリューム８１０に割り当てている。また、通常ボリューム８００の実領域８００ｂを論理ボリューム名がＶｏｌ＃１の論理ボリューム８２０に割り当てている。
【００１２】
このように、通常ボリューム８００では、論理ボリューム８１０、８２０として使用される実領域とホストコンピュータから認識される領域８００ａ、８００ｂに対応する実領域は等しい。
【００１３】
従って、論理ボリューム作成時には実領域上の当該領域（ホストコンピュータから認識される領域）のみフォーマット処理を行い、また前述した再構築処理を実施する必要があるときも、当該領域のみに対して行えばよい。
【００１４】
これに対し仮想ボリューム９００では、論理ボリューム９１０、９２０を作成するときには実領域は割り当てず、実際にホストコンピュータからＩ／Ｏ要求があった時点で、Ｉ／Ｏ要求があった範囲のみに実領域をその都度割り当てていく。
【００１５】
従って、仮想ボリューム９００は、その全てがフォーマット処理や再構築処理等を実行する対象の領域となる。
図１５（ｂ）では、仮想ボリューム９００の所定の大きさのブロック単位に区切られた領域９００ａ、９００ｂ、９００ｃを、論理ボリューム名がＶｏｌ＃２の論理ボリューム９１０に割り当てている。また、仮想ボリューム９００の所定の大きさのブロック単位に区切られた領域９００ｄ、９００ｅ、９００ｆを論理ボリューム名がＶｏｌ＃３の論理ボリューム９２０に割り当てている。
【００１６】
このように、仮想ボリュームは、通常ボリュームとは異なり、論理ボリュームに使用される実領域とホストコンピュータから認識される領域に対応する実領域は等しくない。言い換えると、論理ボリュームに使用される可能性があるが、未だホストコンピュータから認識されていない領域が存在する。
【００１７】
この仮想ボリューム９００において、再構築処理を実施すると、実施中に未割り当ての実領域においてもＢＡＤデータが発生する場合がある。
この場合、ホストコンピュータから論理ボリューム上に新たに実領域を割り当てる際にＢＡＤデータを含んだ領域を割り当ててしまう。これにより、これから使用しようとする領域に既に異常状態が存在するという状況に陥るという不都合が発生するという問題がある。
【００１８】
本発明はこのような点に鑑みてなされたものであり、仮想ボリュームの未割り当ての実領域に値が保証できないデータが作成されることを防止することができるディスク制御装置およびディスク制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１９】
上記目的を達成するために、開示のディスク制御装置が提供される。このディスク制御装置は、管理部と、再構築処理部とを有している。
管理部は、冗長化されたデータを分散して管理する複数のディスク装置によって実現される仮想ボリューム内に設けられる論理ボリュームを管理する。
【００２０】
再構築処理部は、所定のディスク装置の故障に応じてデータの冗長性を確保する再構築処理を行うに際し、仮想ボリュームの論理ボリュームが割り当てられていない領域に異常を検出した場合に、この領域を初期化する。
【発明の効果】
【００２１】
開示のディスク制御装置によれば、再構築処理を行う際に仮想ボリュームの未割り当ての領域に値が保証できないデータが作成されることを確実に防止することができる。
【図面の簡単な説明】
【００２２】
【図１】実施の形態のディスク制御装置の概要を示す図である。
【図２】実施の形態のシステムを示す図である。
【図３】実施の形態のディスク装置の構成例を示す図である。
【図４】制御モジュールの機能を示すブロック図である。
【図５】実施の形態の再構築処理を説明する図である。
【図６】実施の形態の再構築処理を説明する図である。
【図７】実施の形態の再構築処理を説明する図である。
【図８】実施の形態の再構築処理を説明する図である。
【図９】ＴＰＰＳ管理テーブルを示す図である。
【図１０】ＴＰＰＥ管理テーブルを示す図である。
【図１１】ＯＬＵ管理テーブルを示す図である。
【図１２】制御モジュールの再構築処理を示すフローチャートである。
【図１３】制御モジュールの再構築処理を示すフローチャートである。
【図１４】ＢＡＤデータ作成判断処理を示す図である。
【図１５】通常ボリュームと仮想ボリュームを説明する図である。
【発明を実施するための形態】
【００２３】
以下、実施の形態を、図面を参照して詳細に説明する。
まず、実施の形態のディスク制御装置について説明し、その後、実施の形態をより具体的に説明する。
【００２４】
＜第１の実施の形態＞
図１は、実施の形態のディスク制御装置の概要を示す図である。
実施の形態のディスク制御装置１は、管理部２と、再構築処理部３とを有している。
【００２５】
管理部２は、冗長化されたデータを分散して管理する複数のディスク装置によって実現される仮想ボリューム内に設けられる論理ボリュームを管理する。
図１では、複数のディスク装置によって実現される仮想ボリューム４が設けられている。管理部２は、仮想ボリューム４の実領域を所定の管理単位４ａ〜４ｄで分割した管理単位領域毎に、仮想ボリューム４の実領域が割り当てられた論理ボリューム５、６を管理している。
【００２６】
再構築処理部３は、仮想ボリューム４を実現するディスク装置のうち、所定のディスク装置の故障に応じてデータの冗長性を確保する再構築処理を行う。
再構築処理は、具体的には、ディスク装置の記憶領域を所定の管理単位で分割した管理単位領域毎に、故障が発生したディスク装置のデータをこのディスク装置以外のディスク装置のデータを用いて復元して予め用意された予備のディスクに書き込み、この予備ディスクにデータを再構築する処理である。
【００２７】
ところで、図１に示す仮想ボリューム４には、論理ボリュームに使用される可能性があるが、未だホストコンピュータから認識されていない管理単位４ｆが存在する。
再構築処理部３は、再構築処理において、この管理単位４ｆ等、将来割り当てられる可能性のあるディスク上の実領域全てについてデータを再構築する。
【００２８】
そして、再構築処理部３は、仮想ボリューム４の領域に異常を検出したとき、この領域が、論理ボリュームが割り当てられている領域か否かを判断する。
換言すれば、仮想ボリューム４の論理ボリューム５、６が割り当てられていない領域に値が保証できないデータが作成される状況か否かを判断する。
【００２９】
値が保証できないデータが作成される状況とは、例えば、冗長度より多い本数のディスクドライブの同一管理単位で異常を検出したような状況を言う。この場合、当該管理単位に格納されているデータの読み出しは不可能となる。
【００３０】
再構築処理部３は、仮想ボリュームの論理ボリュームが割り当てられていない領域に異常を検出した場合に、この領域を初期化する。
この領域を初期化することにより、未割り当ての実領域に値が保証できないデータが作成されることを確実に防止する。これにより、当該領域に対する上書き命令をホストコンピュータから受け取ることなく、その領域を使用することができる環境を確保することができる。
【００３１】
なお、再構築処理部３は、前述した判断により、仮想ボリューム４の論理ボリュームが割り当てられている管理単位４ａ〜４ｅのいずれかに異常を検出した場合には、その管理単位が使用不能であることを示すデータを書き込むようにするのが好ましい。
【００３２】
これにより、当該管理単位のデータが使用不能であることを明示的に示すことができる。
＜第２の実施の形態＞
以下、第２の実施の形態では、ＲＡＩＤ機能「ＲＡＩＤ  ５」を実現するディスクアレイシステムを例に図面を参照して開示のディスク制御装置を詳細に説明する。
【００３３】
図２は、実施の形態のシステムを示す図である。
実施の形態のＲＡＩＤシステム１０００は、ＲＡＩＤ機能「ＲＡＩＤ  ５」を実現するディスクアレイが有する論理ディスク２００、２０１、２０２と、ホストコンピュータ３００とが、制御モジュール（ＣＭ：Control Module）１００、１１０、１２０を介して接続されている。
【００３４】
論理ディスク２００、２０１、２０２は、それぞれ、１つ、または、複数の物理ディスクを有している。
ここで、論理ディスク２００を識別するディスク名は「ＲＬＵ＃０」である。論理ディスク２０１を識別するディスク名は「ＲＬＵ＃１」である。論理ディスク２０２を識別するディスク名は「ＲＬＵ＃２」である。
【００３５】
また、制御モジュール１００を識別するモジュール名は「ＣＭ＃０」である。制御モジュール１１０を識別するモジュール名は「ＣＭ＃１」である。制御モジュール１２０を識別するモジュール名は「ＣＭ＃２」である。
【００３６】
制御モジュール１００、制御モジュール１１０間は、ルータ（ＲＴ）１３０によって接続されている。また、制御モジュール１１０、制御モジュール１２０間は、ルータ１４０によって接続されている。
【００３７】
制御モジュール１００、制御モジュール１１０および制御モジュール１２０は、ホストコンピュータ３００から取得したＩ／Ｏ要求を実行するとともに、管理下のディスクアレイの一部が故障したときには、そのデータをホットスペアディスク上に再構築する再構築処理を行うディスク制御装置である。
【００３８】
また、これらは、それぞれも冗長な構成となっており、いずれかの制御モジュールが故障すると、他がこれをバックアップする。
ここで、制御モジュール１００のハードウェア構成について説明する。
【００３９】
制御モジュール１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０６を介してメモリ１０２、チャネルアダプタ（Channel Adapter）１０４、ディスクインタフェース（Disk Interface）１０５等が接続されている。
【００４０】
ＣＰＵ１０１とメモリ１０２とは図示しないバッテリーでバックアップされ、メモリの一部がキャッシュ１０３として使用される。
チャネルアダプタ１０４は、ホストコンピュータ３００と接続するホストインタフェースを処理する回路である。
【００４１】
ディスクインタフェース１０５は、ディスク装置と接続するディスクインタフェースを処理する回路である。
なお、制御モジュール１１０、制御モジュール１２０の構成も同様であり、それぞれキャッシュ１１３、１２３、チャネルアダプタ１１４、１２４、および、ディスクインタフェース１１５、１２５を備えている。
【００４２】
次に、ディスク装置の構成について説明する。
図３は、実施の形態のディスク装置の構成例を示す図である。
図３に示す例では、４台のディスク装置、ディスク２１０、ディスク２２０、ディスク２３０、ディスク２４０と、予備のディスク装置であるホットスペアディスク２５０とによりＲＡＩＤ機能「ＲＡＩＤ  ５」が実現される。
【００４３】
ここで、ディスク２１０を識別するディスク名は、ディスク＃０である。ディスク２２０を識別するディスク名は、ディスク＃１である。ディスク２３０を識別するディスク名は、ディスク＃２である。ディスク２４０を識別するディスク名は、ディスク＃３である。
【００４４】
ディスク２１０、ディスク２２０、ディスク２３０、ディスク２４０には、ストライプサイズに分割されたデータと、分割データから生成されたパリティが、同一ストライプに格納されている。
【００４５】
例えば、データＡは、データＡ１、データＡ２、データＡ３に分割され、パリティＰAとともに、それぞれディスク２１０のブロック２１１、ディスク２２０のブロック２２１、ディスク２３０のブロック２３１、ディスク２４０のブロック２４１に格納される。
【００４６】
データＢも同様に、データＢ１、データＢ２、データＢ３に分割され、パリティＰBとともに、それぞれブロック２１２、ブロック２２２、ブロック２４２、ブロック２３２に格納される。
【００４７】
このような構成とすることで、いずれか１つのディスク装置が故障したとき、他の正常なディスク装置に格納される同一ストライプの分割データと、パリティデータとから、故障ディスク装置のデータを復元できる。
【００４８】
また、ホットスペアディスク２５０側のデータＡに対応するストライプ領域をブロック２５１、データＢに対応するストライプ領域をブロック２５２とする。
再構築処理の処理単位とする管理単位領域は、ディスク上の領域を所定の単位で分割した領域とし、１つの領域をＴＰＰＳ（前述した管理単位４ａ〜４ｆに対応）と言う。１つのＴＰＰＳは、例えば３２ＭＢである。
【００４９】
ところで、ＲＡＩＤシステム１０００では、ＲＡＩＤグループを仮想ボリュームとして扱っている。
仮想ボリュームでは、ディスク２１０、ディスク２２０、ディスク２３０、ディスク２４０上の実領域の全てが再構築の対象領域となる。前述したように仮想ボリュームでは、論理ボリュームを作成するときには実領域は割り当てず、実際にホストコンピュータ３００からＩ／Ｏ要求があった時点で、Ｉ／Ｏ要求があった範囲のみに実領域をその都度割り当てていく。
【００５０】
仮想ボリュームでは、実領域の割り当ては、ＴＰＰＳ単位で行われる。
次に、制御モジュール１００の機能を説明する。
図４は、制御モジュールの機能を示すブロック図である。
【００５１】
制御モジュール１００は、システム監視部１００ａと、構成管理部１００ｂと、保守制御部１００ｃと、チャネルアダプタドライバ１００ｄと、リソース制御部１００ｅと、キャッシュ制御部１００ｆと、仮想ボリューム制御部１００ｇと、ＲＡＩＤリカバリ制御部１００ｈと、ボリューム・サービス・マネージャ１００ｉと、ＲＡＩＤ制御部１００ｊと、ディスクドライバ１００ｋとを有している。
【００５２】
システム監視部１００ａは、電源や温度等のアラームや部品のマウント情報等、図示しない監視モジュールから通知されるイベントを制御モジュール１００内で同期させ、必要な処理を起動する。
【００５３】
構成管理部１００ｂは、制御モジュール１００の構成と状態を制御モジュール１００全体で矛盾が生じないように管理する。また、必要な情報は電力が供給されていない状態でも保持するように管理する。
【００５４】
また、構成管理部１００ｂは、保守制御部１００ｃからの指示による構成の変更・初期化や内部のエラー等による状態変化等を契機に、制御モジュール１００内の情報の同期を取ったり、メモリ１０２へ情報を格納したりする。
【００５５】
保守制御部１００ｃは、ＣＧＩからのコマンドの受け口として動作する。また、制御モジュール１００のファームウェアを管理する。
チャネルアダプタドライバ１００ｄは、チャネルアダプタ１０４を制御する。ホストコンピュータ３００からのＩ／Ｏ要求を受け付け、制御モジュール１００内のスレッド（Thread）層とコミュニケーションを行う。
【００５６】
リソース制御部１００ｅは、ホストコンピュータ３００のＩ／Ｏの排他制御や監視を行う。
具体的には、リソース制御部１００ｅは、EXTENT排他制御、ボリューム排他制御、クロスアクセス制御、センス管理制御、サブシステムコマンドの排他制御等を行う。
【００５７】
キャッシュ制御部１００ｆは、データをディスク２１０、ディスク２２０、ディスク２３０、ディスク２４０から読み出すときのＩ／Ｏに使用するキャッシュ１０３を管理する。また、キャッシュ制御部１００ｆは、データをディスク２１０、ディスク２２０、ディスク２３０、ディスク２４０に書き込むときのＩ／Ｏに使用するキャッシュ１０３を管理する。
【００５８】
キャッシュ制御部１００ｆは、データのＩ／Ｏに対するヒット、ミス（Hit/Miss）判定、および、ステージング（Staging）や、ライトバック（WriteBack）等のスケジュールを行う。
【００５９】
仮想ボリューム制御部１００ｇは、仮想ボリュームのＴＰＰＶ／ＴＰＰＥ／ＴＰＰＳの割り当てや、論理ボリュームとの関連付けを管理する。なお、管理方法については後述する。
【００６０】
ＲＡＩＤリカバリ制御部１００ｈは、ディスク２１０、ディスク２２０、ディスク２３０、ディスク２４０の障害時や活性保守時に、ホットスペアディスク２５０の割り当てや、ＲＡＩＤグループの状態遷移を制御する。
【００６１】
ボリューム・サービス・マネージャ１００ｉは、ＲＡＩＤリカバリ制御部１００ｈ、ＲＡＩＤレイヤと連携し、再構築処理の制御や、コピーバック制御を行う。
ここで、コピーバック制御とは、ホットスペアディスク２５０に書き込まれた冗長データを、図示しない他のディスクに書き込む処理である。
【００６２】
ＲＡＩＤ制御部１００ｊは、各ＲＡＩＤレベルでのディスク２１０、ディスク２２０、ディスク２３０、ディスク２４０へのデータのＩ／Ｏを制御するレイヤである。
ディスクドライバ１００ｋは、ディスク２１０、ディスク２２０、ディスク２３０、ディスク２４０への通信制御を実施する。
【００６３】
次に、再構築処理を簡単に説明する。
図５〜８は、実施の形態の再構築処理を説明する図である。
図５では、ディスク２１０、ディスク２２０、ディスク２３０、ディスク２４０のデータが割り当てられている割り当て済み領域２１０ａを斜線で示している。
【００６４】
ディスク２１０、ディスク２２０、ディスク２３０、ディスク２４０が正常な状態では、ホストからのＩ／Ｏ要求が受け付けられると、ＲＡＩＤ制御部１００ｊが通常のＩ／Ｏ要求処理を実行し、応答をホストコンピュータ３００へ返す。
【００６５】
ここで、仮想ボリュームとして扱っているＲＡＩＤグループにてディスク故障が発生した場合を想定する。ディスク２１０、ディスク２２０、ディスク２３０、ディスク２４０のうちの１台が故障したことが検出されると、ＲＡＩＤ制御部１００ｊが、再構築処理を行う。図５では、ディスク２３０が故障したとする。
【００６６】
このとき、構成管理部１００ｂは、ホットスペアディスク２５０を故障したディスク２３０の代替ディスクとして割り当て、ＲＡＩＤ制御部１００ｊにリカバリ指示を送る。
リカバリ指示を受け取ったＲＡＩＤ制御部１００ｊは、再構築処理を開始する。
【００６７】
まず、ＲＡＩＤ制御部１００ｊは、ボリューム・サービス・マネージャ１００ｉが決定した再構築を行う１回あたりの範囲（以下、「再構築単位領域」と言う）毎に、正常なディスク２１０、ディスク２２０、ディスク２４０の分割データを読み出す。そして、故障したディスク２３０の再構築単位領域のデータを復元する。
【００６８】
図６に示すように、ディスク２１０、ディスク２２０、ディスク２４０からデータを読み出し、読み出したデータのＸＯＲ（排他的論理和）を取る。
ＸＯＲを取ったデータは、ホットスペアディスク２５０に書き込まれ、データがホットスペアディスク２５０に再構築される。
【００６９】
再構築単位領域の再構築処理完了後、再構築管理情報の当該再構築単位領域に関する「再構築処理実施状況」は、再構築処理完了に設定される。
ここで、再構築処理中に、ディスク２１０の１つのＴＰＰＳにて媒体エラー領域２１０ｂを検出した場合であって、このＴＰＰＳが、ディスク２３０との間で冗長性を確保していた場合、既に冗長性の無い状態となる。
【００７０】
このとき、ＲＡＩＤ制御部１００ｊは、ＢＡＤデータ作成判断処理を行う。
この処理の結果、媒体エラー領域２１０ｂが論理ボリュームに割り当てられているか否かが分かる。なお、ＢＡＤデータ作成判断処理については後述する。
【００７１】
図７では、媒体エラー領域２１０ｂが、データ未割り当ての領域に存在している。この場合、当該媒体エラー領域２１０ｂに対しフォーマット処理を実施する。これにより、図８に示すように、媒体エラー領域２１０ｂは、フォーマット済み領域２１０ｃとなり、データ未割り当ての領域にＢＡＤデータが生成されることを防止することができる。
【００７２】
また、ホットスペアディスク２５０の媒体エラー領域２１０ｂに対応する領域（対応領域）は、割り当て済み領域であるので、本領域にはＢＡＤデータを書き込む。これにより、図８に示すように、ホットスペアディスク２５０の対応領域がＢＡＤデータ２５０ａになる。
【００７３】
その後、再構築処理を継続して行う。
次に、媒体エラー領域２１０ｂにデータが割り当てられているか否かを判断する方法を説明する。
【００７４】
ＲＡＩＤ制御部１００ｊ部は、ＢＡＤデータ作成判断処理時に、仮想ボリューム制御部１００ｇに媒体エラー領域２１０ｂのＴＰＰＳにデータが割り当てられているか否かを問い合わせる。
【００７５】
仮想ボリューム制御部１００ｇは、キャッシュ１０３内に設けられた以下に示す３種類のテーブルを用いてＴＰＰＳにデータが割り当てられているか否かを判断する。そして、ＲＡＩＤ制御部１００ｊ部は、その結果に基づいて、前述したフォーマット処理を実施する。
【００７６】
図９は、ＴＰＰＳ管理テーブルを示す図である。
ＴＰＰＳ管理テーブル１０３ａは、ＴＰＰＳをＴＰＰＳ単位で管理するテーブルであり、複数設けられている。
【００７７】
図９では１つのＴＰＰＳ管理テーブル１０３ａを図示しており、１つのＴＰＰＳ管理テーブル１０３ａは、１つのＴＰＰＳに対応している。
ＴＰＰＳには、オフセット（off set）、バイト（Byte）０、バイト１、バイト２、バイト３の欄が設けられている。
【００７８】
オフセット「００００」のバイト０、バイト１には、制御モジュール１００内部で管理する論理ボリュームの番号を示す「SLU Number」が設定されている。
オフセット「００００」のバイト３、および、オフセット「０００４」のバイト１〜バイト３には、ＳＬＵとしての実領域上のアドレスを示す「SLU LBA」が設定されている。なお、「SLU LBA」の上限は５１２ＴＢである。
【００７９】
さらにキャッシュ１０３には、ホストコンピュータ３００からの要求に応じてＴＰＰＳを特定するためのＴＰＰＥ管理テーブルおよびＯＬＵ管理テーブルが設けられている。
図１０は、ＴＰＰＥ管理テーブルを示す図である。
【００８０】
ＴＰＰＥ管理テーブル１０３ｂには、オフセット、バイト０、バイト１、バイト２、バイト３の欄が設けられている。
オフセット「００００」のバイト０、バイト１には、ホストコンピュータ３００に認識させる、割り当て先の論理ボリューム番号を示す「OLU Number」が設定されている。
【００８１】
オフセット「００００」のバイト２、バイト３には、「SLU Number」が設定されている。
オフセット「０００８」のバイト０〜バイト３、および、オフセット「０００Ｃ」のバイト０〜バイト３には、割り当て済み、または、未割り当てのＴＰＰＳを識別する４２ビットのビットマップ（ビット列）が設定されている。すなわち、１つのＴＰＰＥ管理テーブル１０３ｂには、４２個のＴＰＰＳを識別するビットマップが設定されている。
【００８２】
図１１は、ＯＬＵ管理テーブルを示す図である。
ＯＬＵ管理テーブル１０３ｃには、オフセット、バイト０、バイト１、バイト２、バイト３の欄が設けられている。
【００８３】
オフセット「００００」のバイト０〜バイト３には、ＴＰＰＥ管理テーブル１０３ｂを特定する情報「ＴＰＰＥエントリ」が設定されている。
オフセット「０００４」のバイト０〜バイト３には、特定したＴＰＰＥ管理テーブル１０３ｂ内のオフセット番号を特定する情報「ＴＰＰＥ内オフセット」が設定されている。
【００８４】
このようなＴＰＰＳ管理テーブル１０３ａ、ＴＰＰＥ管理テーブル１０３ｂ、および、ＯＬＵ管理テーブル１０３ｃを備えることにより、ＴＰＰＳにデータが割り当てられているか否かを確実に判断することができる。
【００８５】
具体的には、ホストコンピュータ３００からデータのＩ／Ｏが要求された際、仮想ボリューム制御部１００ｇは、ＯＬＵ管理テーブル１０３ｃを参照し、要求範囲に該当するＴＰＰＥ管理テーブル１０３ｂと当該ＴＰＰＥ管理テーブル１０３ｂ内のオフセットを特定する。そして、当該ＴＰＰＥ管理テーブル１０３ｂを経由して該当するＴＰＰＳ管理テーブル１０３ａの「SLU LBA」を参照する。これにより、該当するＳＬＵとしてのＬＢＡを特定することができる。
【００８６】
次に、制御モジュール１００の再構築処理を詳しく説明する。
図１２、１３は、制御モジュールの再構築処理を示すフローチャートである。
ディスクに故障が発生した場合、構成管理部１００ｂが、ＲＡＩＤグループの構成状態を縮退状態に変更する（ステップＳ１）。
【００８７】
これにより、ＲＡＩＤリカバリ制御部１００ｈが、使用可能なホットスペアディスク（ＨＳ）２５０が存在するか否かを判断する（ステップＳ２）。
使用可能なホットスペアディスク２５０が存在しない場合（ステップＳ２のＮｏ）、処理を終了する。
【００８８】
一方、使用可能なホットスペアディスク２５０が存在する場合（ステップＳ２のＹｅｓ）、ＲＡＩＤリカバリ制御部１００ｈが、存在する旨を構成管理部１００ｂに通知する。これにより、構成管理部１００ｂが、ＲＡＩＤグループの構成状態を再構築処理実施状態に変更する（ステップＳ３）。
【００８９】
これにより、ＲＡＩＤリカバリ制御部１００ｈは、ボリューム・サービス・マネージャ１００ｉとともに、以下（１）〜（４）の処理（初期処理）を行う（ステップＳ４）。
（１）ホットスペアディスク２５０の構成状態を変更する。
【００９０】
（２）ＲＡＩＤグループの状態をチェックする。
（３）再構築処理の対象となるディスクの状態をチェックする。
（４）再構築処理を開始するための初期設定を行う。
【００９１】
次に、ボリューム・サービス・マネージャ１００ｉが、ディスク２１０、ディスク２２０、ディスク２３０、ディスク２４０のデータの再構築を行う再構築単位領域を決定する（ステップＳ５）。
【００９２】
次に、ＲＡＩＤ制御部１００ｊが、ディスク２１０、ディスク２２０、ディスク２３０、ディスク２４０からデータを読み出すディスクを選択する（ステップＳ６）。
次に、ＲＡＩＤ制御部１００ｊが、選択したディスクにディスク読み出しコマンドを発行する（ステップＳ７）。発行したコマンドは、ディスクドライバ１００ｋが、選択したディスクに通知する。
【００９３】
これにより、選択されたディスクからデータが読み出される。
次に、ＲＡＩＤ制御部１００ｊが、ディスクドライバ１００ｋを介して選択したディスクから受け取る情報に基づいて、ディスクからのデータの読み出しが、正常に終了したか否かを判断する（ステップＳ８）。
【００９４】
ディスクからのデータの読み出しが正常に終了した場合（ステップＳ８のＹｅｓ）、ＲＡＩＤ制御部１００ｊが、データの再生成が必要か否かを判断する（ステップＳ９）。
データの再生成が必要ではない場合（ステップＳ９のＮｏ）、ステップＳ１１に移行する。
【００９５】
一方、データの再生成が必要である場合（ステップＳ９のＹｅｓ）、ＲＡＩＤ制御部１００ｊが、データ再生成の為の計算（ＸＯＲ処理）を行う（ステップＳ１０）。
その後、ＲＡＩＤ制御部１００ｊが、ディスク書き込みコマンドを発行する（ステップＳ１１）。発行したコマンドは、ディスクドライバ１００ｋが、ホットスペアディスク２５０に通知する。これにより、ホットスペアディスク２５０にデータが書き込まれる。その後、ステップＳ１７に移行する。
【００９６】
以後、ステップＳ７のディスク読み出しコマンドの発行からステップＳ１１のディスク書き込みコマンドの発行までの処理を基本単位処理と言う。
ところで、ステップＳ８において、ディスクからのデータの読み出しが正常に終了しなかった場合（ステップＳ８のＮｏ）、ＲＡＩＤ制御部１００ｊが、データを読み出し可能なディスクが他に存在するか否かを判断する（ステップＳ１２）。
【００９７】
データを読み出し可能なディスクが他に存在する場合（ステップＳ１２のＹｅｓ）、ステップＳ６に移行し、そのディスクを選択する（ステップＳ６）。その後、ステップＳ７以降の処理を引き続き行う。
【００９８】
一方、データを読み出し可能なディスクが他に存在しない場合、（ステップＳ１２のＮｏ）、ＲＡＩＤ制御部１００ｊが、読み出した正常に終了しなかったディスクに、媒体異常等の局所的なエラーが発生したか否かを判断する（ステップＳ１３）。
【００９９】
局所的なエラーが発生していないと判断した場合（ステップＳ１３のＮｏ）、ステップＳ１７に移行する。
一方、局所的なエラーが発生したと判断した場合（ステップＳ１３のＹｅｓ）、ＲＡＩＤ制御部１００ｊが、エラーが発生したＴＰＰＳの直前のＴＰＰＳまでは基本単位処理を実施する（ステップＳ１４）。
【０１００】
次に、エラー発生したＴＰＰＳについて、ＲＡＩＤ制御部１００ｊが、ＢＡＤデータ作成判断処理を実施する（ステップＳ１５）。なお、この処理については、後に詳述する。
次に、ＲＡＩＤ制御部１００ｊが、エラーが発生したＴＰＰＳ以降のＴＰＰＳに対して基本単位処理を実施する（ステップＳ１６）。
【０１０１】
次に、ボリューム・サービス・マネージャ１００ｉが、ステップＳ５にて決定した再構築単位領域について、再構築処理が正常に終了したか否かを判断する（ステップＳ１７）。
【０１０２】
今回の再構築単位領域について、再構築処理が正常に終了した場合（ステップＳ１７のＹｅｓ）、ボリューム・サービス・マネージャ１００ｉが、再構築処理の実施済み範囲の更新依頼を構成管理部１００ｂに通知する。これにより、構成管理部１００ｂが、再構築処理の実施済み範囲を更新する（ステップＳ１８）。
【０１０３】
次に、ボリューム・サービス・マネージャ１００ｉが、再構築処理の未実施の領域が存在するか否かを判断する（ステップＳ１９）。
再構築処理の未実施の領域が存在する場合（ステップＳ１９のＹｅｓ）、ステップＳ５に移行し、ボリューム・サービス・マネージャ１００ｉが、再構築処理の未実施の領域について、データの再構築を行う再構築単位領域を決定する。そしてステップＳ６以降の処理を引き続き行う。
【０１０４】
一方、再構築処理の未実施の領域が存在しない場合（ステップＳ１９のＮｏ）、構成管理部１００ｂが、ＲＡＩＤグループの構成状態を再構築処理完了状態に変更する（ステップＳ２０）。その後、処理を終了する。
【０１０５】
一方、ステップＳ１７において、今回の再構築単位領域について、再構築処理が正常に終了しなかった場合（ステップＳ１７のＮｏ）、構成管理部１００ｂが、ＲＡＩＤグループの構成状態を縮退状態に変更する（ステップＳ２１）。その後、処理を終了する。
【０１０６】
次に、ＢＡＤデータ作成判断処理を説明する。
図１４は、ＢＡＤデータ作成判断処理を示す図である。
まず、仮想ボリューム制御部１００ｇが、対象となるＲＡＩＤグループは、仮想ボリュームのプール用か否かを判断する（ステップＳ３１）。
【０１０７】
対象となるＲＡＩＤグループが仮想ボリュームのプール用ではない場合（ステップＳ３１のＮｏ）、ＢＡＤデータを作成する（ステップＳ３２）。その後、ステップＳ３６に移行する。
【０１０８】
一方、対象となるＲＡＩＤグループが、仮想ボリュームのプール用である場合（ステップＳ３１のＹｅｓ）、エラーが発生したＴＰＰＳのデータの割り当て状況を仮想ボリューム制御部１００ｇに問い合わせる（ステップＳ３３）。
【０１０９】
そして、問い合わせた結果に基づいて、エラーが発生したＴＰＰＳにデータが割り当て済みか否かを判断する（ステップＳ３４）。
エラーが発生したＴＰＰＳにデータが割り当て済みである場合（ステップＳ３４のＹｅｓ）、ＢＡＤデータ作成処理を行い、ＢＡＤデータを作成する（ステップＳ３２）。
【０１１０】
エラー発生したＴＰＰＳにデータが割り当て済みではない場合（ステップＳ３４のＮｏ）、フォーマット処理を行い、フォーマットデータを作成する（ステップＳ３５）。
次に、作成したデータをエラーが発生したＴＰＰＳを有するディスク、および、ホットスペアディスク２５０に書き込む（ステップＳ３６）。
【０１１１】
具体的には、ステップＳ３２においてＢＡＤデータを作成した場合は、作成したＢＡＤデータを局所的なエラーが発生したディスクのＴＰＰＳ、および、ホットスペアディスク２５０に書き込む。
【０１１２】
また、ステップＳ３５にてフォーマットデータを作成した場合は、作成したフォーマットデータをエラーが発生したＴＰＰＳを有するディスク、および、ホットスペアディスク２５０に書き込む。例えば、図１１に示す例であれば、ディスク２１０の媒体エラー領域２１０ｂおよびホットスペアディスク２５０の対応領域にフォーマットデータを書き込む。これにより、ディスク２１０には、フォーマット済み領域２１０ｃが形成される。また、ホットスペアディスク２５０には、フォーマット済み領域２５０ａが形成される。
【０１１３】
その後、ＢＡＤデータ作成判断処理を終了する。
以上述べたように、ＲＡＩＤシステム１０００によれば、制御モジュール１００が、仮想ボリュームにて未割り当ての実領域にエラーが発生した場合には、ＢＡＤデータではなくフォーマットデータを書き込むようにした。
【０１１４】
具体的には、次のようなフローを実現する論理を実装するようにした。
ＢＡＤデータ作成時に、まず、当該ディスクが所属するＲＡＩＤグループが仮想ボリュームの為の実領域であるかどうかを確認する。そうであれば、実領域の当該領域が論理ボリュームに割り当てられているかどうかを問い合わせる。未割り当てであれば当該領域のみのフォーマット処理を実施する。
【０１１５】
これにより、仮想ボリュームの未割り当て領域にＢＡＤデータが存在する状況を確実に防止することができる。
従って、ホストコンピュータ３００からのフォーマット命令を受け取ることなく初期値を確実に保証することができる。これにより、ディスク資源を有効に活用することができる。
【０１１６】
なお、本実施の形態では、ＲＡＩＤ機能「ＲＡＩＤ  ５」を例にとって、制御モジュール１００の処理を説明したが、これに限らず、他のＲＡＩＤ機能にも適用することができる。
【０１１７】
以上、本発明のディスク制御装置およびディスク制御方法を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【０１１８】
また、本発明は、前述した各実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、制御モジュール１００が有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープ等が挙げられる。光ディスクとしては、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等が挙げられる。光磁気記録媒体としては、例えば、ＭＯ（Magneto-Optical disk）等が挙げられる。
【０１１９】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１２０】
ディスク制御プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【符号の説明】
【０１２１】
１  ディスク制御装置
２  管理部
３  再構築処理部
４  仮想ボリューム
４ａ〜４ｆ  管理単位
５、６  論理ボリューム
１００、１１０、１２０  制御モジュール
１０１  ＣＰＵ
１０２  メモリ
１０３、１１３、１２３  キャッシュ
１０４、１１４、１２４  チャネルアダプタ
１００ａ  システム監視部
１００ｂ  構成管理部
１００ｃ  保守制御部
１００ｄ  チャネルアダプタドライバ
１００ｅ  リソース制御部
１００ｆ  キャッシュ制御部
１００ｇ  仮想ボリューム制御部
１００ｈ  ＲＡＩＤリカバリ制御部
１００ｉ  ボリューム・サービス・マネージャ
１００ｊ  ＲＡＩＤ制御部
１００ｋ  ディスクドライバ
１３０、１４０  ルータ
２００、２０１、２０２  論理ディスク
２１０、２２０、２３０、２４０  ディスク
２１０ａ  割り当て済み領域
２１０ｂ  媒体エラー領域
２１０ｃ、２５０ａ  フォーマット済み領域
２１１、２１２、２２１、２２２、２３１、２３２、２４１、２４２、２５１、２５２  ブロック
２５０  ホットスペアディスク
３００  ホストコンピュータ
１０００  ＲＡＩＤシステム
【図１】
2011003046.tif 000003
【図２】
2011003046.tif 000004
【図３】
2011003046.tif 000005
【図４】
2011003046.tif 000006
【図５】
2011003046.tif 000007
【図６】
2011003046.tif 000008
【図７】
2011003046.tif 000009
【図８】
2011003046.tif 000010
【図９】
2011003046.tif 000011
【図１０】
2011003046.tif 000012
【図１１】
2011003046.tif 000013
【図１２】
2011003046.tif 000014
【図１３】
2011003046.tif 000015
【図１４】
2011003046.tif 000016
【図１５】
2011003046.tif 000017