(57)【要約】【課題】ＲＡＩＤ１のディスクアレイの読出エラーに対する自動復旧を効率化にする。【解決手段】ＲＡＩＤ１における自動復旧の単位を、例えばハードディスク自体の読み書きの単位であるブロックとする。ＲＡＩＤ１制御部は、ディスクアレイの一方のハードディスクＡからの読出の際にエラーが生じると（Ｓ１４）、読出対象のブロックのデータをもう一方のハードディスクＢから読み出し（Ｓ１６）、読み出したデータをハードディスクＡに再度書き込む（Ｓ２０）。ここで読出エラーが検出されると、ハードディスクＡ自体が有するブロック再割当機構により、読出エラーのあったブロックに代わって予備領域のブロックが再割当されるので、Ｓ２０の再書込は再割当されたブロックに対して行われる。自動復旧の単位をブロックとすることで、ディスク全体あるいはパーティションを単位とした従来よりも復旧時のエラー発生率を大幅に下げることができる。【選択図】図２
2006120042.tif 000002
【特許請求の範囲】
【請求項１】
再割当機構を備えた複数のハードディスクと、それらハードディスクに対する読み書き動作を制御するＲＡＩＤ１制御部とを備えたＲＡＩＤ１方式のディスクアレイ装置であって、
前記ＲＡＩＤ１制御部は、前記ハードディスクを、該ハードディスクのパーティションよりも小さいサイズに設定された復旧単位ごとに領域分割して管理し、前記複数のハードディスクの一つからの読出時に読出エラーが生じた場合、その読出エラーが生じた復旧単位の領域のデータを前記複数のハードディスクのうちの他の一つから読み出し、読み出したデータを読出エラーが生じたハードディスクに書き込むことで冗長構成を復旧する、ことを特徴とするディスクアレイ装置。
【請求項２】
前記復旧単位の領域は、前記ハードディスクの読み書きの単位であるブロックであることを特徴とする請求項１記載のディスクアレイ装置。
【請求項３】
前記ＲＡＩＤ１制御部は、前記復旧単位の各領域と前記ハードディスクの読み書きの単位であるブロック群との対応関係を登録した対応管理テーブルを備え、読出エラーが生じたブロックが属する復旧単位の領域のブロック群を前記対応管理テーブルから求め、それらブロック群のデータを復旧単位の領域のデータとして読み出し、読出エラーが生じたハードディスクに書き込むことを特徴とする請求項１記載のディスクアレイ装置。
【請求項４】
再割当機構を備えた複数のハードディスクに対するＲＡＩＤ１方式での読み書き動作を制御するディスクアレイ制御方法であって、
前記ハードディスクを、該ハードディスクのパーティションよりも小さいサイズに設定された復旧単位ごとに領域分割して管理し、
前記複数のハードディスクの一つからの読出時に読出エラーが生じた場合、その読出エラーが生じた復旧単位の領域のデータを前記複数のハードディスクのうちの他の一つから読み出し、読み出したデータを読出エラーが生じたハードディスクに書き込むことで冗長構成を復旧する、
ことを特徴とするディスクアレイ制御方法。
【請求項５】
再割当機構を備えた複数のハードディスクに対するＲＡＩＤ１方式での読み書き動作を制御するディスクアレイ制御装置、としてコンピュータシステムを機能させるためのプログラムであって、該コンピュータシステムに、
前記ハードディスクを、該ハードディスクのパーティションよりも小さいサイズに設定された復旧単位ごとに領域分割して管理するステップと、
前記複数のハードディスクの一つからの読出時に読出エラーが生じた場合、その読出エラーが生じた復旧単位の領域のデータを前記複数のハードディスクのうちの他の一つから読み出すステップと、
読み出したデータを読出エラーが生じたハードディスクに書き込むことで冗長構成を復旧するステップと、
を実行させるプログラム。
【請求項６】
再割当機構を備えた複数のハードディスクに対するＲＡＩＤ１方式での読み書き動作を制御するディスクアレイ制御装置、としてコンピュータシステムを機能させるためのプログラムであって、該コンピュータシステムに、
前記複数のハードディスクの一つからデータを読み出す時に読出エラーが生じた場合、その読出エラーが生じたブロックのデータを前記複数のハードディスクのうちの他の一つから読み出すステップと、
読み出したブロックのデータを読出エラーが生じたハードディスクの当該ブロックに書き込むことで冗長構成を復旧するステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はディスクアレイに関し、特にＲＡＩＤ１のディスクアレイの復旧制御に関する。
【背景技術】
【０００２】
ディスクアレイ装置は、複数のハードディスクを並列接続してそれら全体を１つのディスク装置として動作させることで、データ読み書きの高速化、又は耐障害性の向上、あるいはその両方を実現する。このようなディスクアレイの装置の制御レベルとして、ＲＡＩＤ(redundant array of independent disks)０〜５やそれらの組み合わせが知られている。
【０００３】
このなかで、ＲＡＩＤ１は、ハードディスクを２台利用して、双方のディスクに同一のデータを記録することにより、データ記録機構を利用する上位システムに対してハードディスクの信頼性よりも遥かに高いデータ記録機構を提供するものである。１つのハードディスクの故障率をλとすると、ＲＡＩＤ１の故障率は双方のハードディスクが同時に故障する確率となるから２λ２である。いずれかのハードディスクが故障する確率は２λであり、一方が故障したときに残りが故障する確率がλであり、双方が同時に故障する確率はそれらの積となるからである。たとえば、λが１％(0.01)の場合には、ＲＡＩＤ１の故障率は0.02％となる。
【０００４】
しかし、ＲＡＩＤ１がこの信頼性を得るためには、２台が正常動作する冗長化状態を常に維持することが必要である。これに対し、一方のハードディスクが故障し、停止している状態（この状態を縮退状態と呼ぶ）では、ＲＡＩＤ１の故障率はλに低下してしまい、これでは信頼性の点では１台のハードディスクと変わるところがない。そこで、ＲＡＩＤ１の高い信頼性を維持するには、一方のハードディスクにエラーが生じた場合でも、できるだけすみやかに冗長化状態へ復旧させる必要がある。
【０００５】
さて、ハードディスクの故障の検出は、書込時と読出時の両方で行われる。エラーは、(a) ハードディスクの全体に関係する障害を原因とするもの、(b) 記録媒体の部分の障害を原因とするものとがある。(a) に属するエラーが発生した場合には、書込時および読出時ともに、この障害は復旧できないため、エラーを検出したハードディスクを切り離す。ＲＡＩＤ１の場合、この結果縮退状態になってしまうが、ディスク全体の障害なのでこれ自体は仕方がない。この場合、エラーの生じたハードディスクを新たなハードディスクに交換し、正常なディスクのデータをコピーすることで冗長性を回復するより他はない。
【０００６】
一方、(b) に属するエラーは、書込時のエラーであれば、ベリファイ処理を実施するハードディスクの場合にはハードディスク自体の再割当機構により自動的に修復される。しかし、ＩＤＥ（Integrated Drive Electronics）ハードディスクドライブのようにベリファイ処理を実施しない場合には、書込時に修復がなされないので、そのエラーが読出時に検出されることとなる。
【０００７】
上記(b) に属する読出時のエラーの場合は、一方のハードディスクからの読出においてエラーが発生しても、他方のハードディスクから読み出すことにより、上位システムからの読出要求には応えられるが、ハードディスク自体はエラーとなるために何らかの対応が必要である。そこで、従来のＲＡＩＤ１のディスクアレイ制御では、このような部分障害が一方のハードディスクの読出時に生じた場合には、もう一方のハードディスクの全体のデータをそのエラーを検出したハードディスクにコピーすることで、冗長性回復を図っていた。また、ソフトウエアＲＡＩＤ方式のＲＡＩＤ１ディスクアレイ・システムの中には、ハードディスク全体ではなく、エラーを検出したパーティションを単位として正常なハードディスクからデータコピーを行うことで冗長性復旧を図るものも知られている。
【０００８】
また、特許文献１には、冗長構成のハードディスクシステムにおけるディスク間の復旧コピーについて示されている。この文献に示される方式では、復旧時に正常なディスクから、異常を修復したディスクへとデータをコピーする際、コピー元からの読出にエラーが発生しても、強制的に続行することにより、少なくともエラーが発生しないデータの復旧を実施することにより、全体システムの動作継続を試みることを可能とするものである。
【０００９】
また特許文献２には、ディスクアレイ装置において、故障したディスクを交換した後のデータ再構築（リビルト）時の制御方式について示されている。この方式では、データ再構築時に読出エラーが発生した場合に、発生箇所が未使用領域であればエラーを無視することにより、復旧処理における実質的なエラー発生率を低減するものである。
【００１０】
また特許文献３には、ディスクアレイのディスク交換後のデータ復旧処理における二次障害の復旧支援のための方式が示されている。この方式は、復旧処理において読出エラーが発生した状況からの障害回復に際して、障害復旧技術者の支援を行うものである。
【００１１】
また特許文献４には、データ読出時に障害が発生した際に、他方の正常なハードディスクからデータを読み出して、障害が発生したハードディスクに再度書き込むことで冗長性を回復させるとともに、その再書込時には、過去にエラーが発生した領域を避けて新たな領域に書き込むという方式が開示されている。この文献には、エラーが発生したディスクの復旧のために、ＲＡＩＤ３〜５の場合は、他のディスクやパリティー用ディスクのうち、エラーの生じたブロック（セクタ）領域に対応するブロック（セクタ）領域内のデータを読み出して、エラーの生じたディスクに再書込する点が開示されている。また、ＲＡＩＤ１については「このとき読み出すデータは、ＲＡＩＤ１の場合はエラーが生じたディスク装置１４と全く同じデータが記録された他のディスク装置１４から読み込む同一のデータである。」と記載されている。
【００１２】
【特許文献１】特開平０５−２４２５９３号公報
【特許文献２】特開平０８−１８５２７４号公報
【特許文献３】特開平０９−３０５３２６号公報
【特許文献４】特開２００１−１００９４８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
特許文献１の方式は、エラーをあえて無視して全体システムの動作継続を試みるだけであって、正常なディスクで読出エラーが発生した部分については、復旧対象であるディスクには正常なデータが書き込まれないまま復旧が終了してしまう。これでは、復旧後にその読出エラーの発生した部分の読出が行われる場合、復旧したディスクからその部分を読み出すと、正しいデータがない部分から読出が行われるので、不正なデータを読み出し上位システムに返すことになり、その結果は全く予期できないものとなる。これは非常に危険な方法である。
【００１４】
特許文献２の方式は、ハードディスクの使用率の低さに依存してエラー発生率を低減するものであるが、未使用部分のエラーを無視するだけでは発生率はせいぜい数分の１に低減されるだけである。
【００１５】
特許文献３の方式は、自動復旧を試みるものではないため、縮退動作を避けることもできないし、これで縮退動作期間をどの程度低減できるかについては示されておらず、不明である。
【００１６】
特許文献４の方式は、ＲＡＩＤ３〜５のように、小さいサイズの記録単位制御を行うＲＡＩＤ方式には適用可能である。しかし、ＲＡＩＤ１のようにディスク全体やパーティションといった大きなサイズでしかデータ復旧を管理しない方式では、過去にエラーが発生した領域を避けた新たな領域を確保するといっても、同じディスク内にディスク全体やパーティションと同等な大きさの領域を設けることはコスト的に見合わないため、事実上採用不能である。
【００１７】
また、従来のＲＡＩＤ１のデータ復旧のように、正常なハードディスクからディスク全体又はエラーのあったパーティションに該当するパーティションのデータを読み出して、エラーのあったディスクにコピーする処理の場合、読出エラーが生じると双方のディスクがエラーになってしまい、自動処理による復旧が困難になる。ファイル単位の読出ではハードディスクが読出エラーを生じる可能性は低いが、ディスク全体やパーティションという大きいサイズの読出の場合、読出エラーが生じる可能性は無視できない。
【００１８】
この点について詳しく説明すると、例えば、ハードディスクの１ビットを読み出す際の復旧不能なエラー率をμ、復旧の単位をＳ[bit]とすると、この復旧処理においてエラーが発生する確率は、Ｓ・μとなる。たとえばμが１０−１３であるとし、復旧の単位Ｓがハードディスク全体で例えば１００[GByte](＝１００×１０９×８[bit])とすると、正常なハードディスクのすべてを読み出すときのエラー率は０．０８，すなわち８％となる。決して無視できない確率である。
【００１９】
近年ハードディスクの容量は増加の一途をたどっており、数百ＧＢｙｔｅが当たり前になってきている。またこれに伴い、ハードディスクのパーティションのサイズも大きくなっている。したがって、ディスク全体やパーティションを単位として復旧する方式では、復旧単位のサイズは少ない場合でも10GByte程度、大きい場合には300GByteを越えることが一般的であると考えられる。このように大きい単位を復旧のために連続して読み出せば、正常なハードディスクからの読出でも、上記のように無視できないエラー率で読出エラーが発生する。このように読出エラーが発生した場合には、双方のハードディスクが利用できない状態に陥る。このため、ハードディスクの内容を論理的に比較しながらの手作業での復旧が必要になり、この場合には必ずしも完全復旧が可能である保証はないし、その復旧作業に要する時間も見積もることは難しい。
【００２０】
ＲＡＩＤ１は、各種のＲＡＩＤ方式の中でも最も構成が簡単で、ソフトウェアでも実現可能なため、低コストで信頼性の高いハードディスクシステムを提供するためには有望な方式であるが、上述のように従来のＲＡＩＤ１のシステムではハードディスクに部分的な読出エラーが発生した場合に効果的な復旧方法が提供されていなかった。
【００２１】
本発明は、ＲＡＩＤ１方式のディスクアレイ装置において、いずれかのハードディスクに部分的な読出エラーが発生した場合の、効果的な復旧方法を提供する。
【課題を解決するための手段】
【００２２】
本発明は、再割当機構を備えた複数のハードディスクと、それらハードディスクに対する読み書き動作を制御するＲＡＩＤ１制御部とを備えたＲＡＩＤ１方式のディスクアレイ装置であって、前記ＲＡＩＤ１制御部は、前記ハードディスクを、該ハードディスクのパーティションよりも小さいサイズに設定された復旧単位ごとに領域分割して管理し、前記複数のハードディスクの一つからの読出時に読出エラーが生じた場合、その読出エラーが生じた復旧単位の領域のデータを前記複数のハードディスクのうちの他の一つから読み出し、読み出したデータを読出エラーが生じたハードディスクに書き込むことで冗長構成を復旧する、ことを特徴とするディスクアレイ装置を提供する。
【００２３】
ここで、前記復旧単位の領域は、前記ハードディスクの読み書きの単位であるブロックとすることも好ましい。
【００２４】
また、好適には、前記ＲＡＩＤ１制御部は、前記復旧単位の各領域と前記ハードディスクの読み書きの単位であるブロック群との対応関係を登録した対応管理テーブルを備え、読出エラーが生じたブロックが属する復旧単位の領域のブロック群を前記対応管理テーブルから求め、それらブロック群のデータを復旧単位の領域のデータとして読み出し、読出エラーが生じたハードディスクに書き込むようにする。
【発明を実施するための最良の形態】
【００２５】
以下、図面を参照して、本発明を実施するための最良の形態（以下「実施形態」と呼ぶ）について説明する。
【００２６】
本実施形態では、ＲＡＩＤ１のディスクアレイ装置において、読出エラー（上述の（ｂ）の障害に該当）の発生時の冗長化復旧を効率化する仕組みを提供する。
【００２７】
ＲＡＩＤ１において、記録されているデータのすべてが正常であるとみなす単位を、ディスク全体やパーティションという単位よりも小さく設定し、エラーを検出したときに復旧すべき単位を小さくする。例えばハードディスクの１ビットを読み出す際の復旧不能なエラー率を上述の従来例と同様１０−１３であるとした場合、復旧の単位を１メガバイト[MByte] とすれば、その復旧単位を読み出す際のエラー発生率は０．００００００８、すなわち０．００００８％まで下げることができる。十〜数百ギガバイト規模でパーティションやディスク全体を復旧のために読み出す場合と比べた場合、エラー発生率は４〜６桁低くなる。復旧の単位をブロックとすることで、そのサイズを４〜１６[KByte] とすれば、エラー発生率をさらに２桁程度低くすることができる。
【００２８】
復旧の単位はユーザ（ＲＡＩＤ１システムの運用者）が任意に設定できるようにしてももちろんよいが、ブロックあるいはセクタのようにハードディスク自体の読み書きの単位をその復旧の単位とすれば、更に制御が簡素化できる。
【００２９】
また、本実施形態では、現在のハードディスク装置が持ついくつかの機能を利用している。
【００３０】
例えば、現在のハードディスク装置は、書込時に、ディスクの回転速度やその微分値、ヘッドの位置が、ディスクに対し適切に書込処理が実行可能な範囲内であることを確認する機能を備えている。例えばＩＤＥ規格では、このように書込時に回転速度等が一定の範囲内にあることを以て正常に書込ができているものと判定する。この機能により、書き込むべき領域に正しく書込が行われ、かつ書き込んではいけない領域にはみ出て書き込まれることがないようにしている。なお、ＳＣＳＩ規格では、更に、書き込んだデータを即座に読み出し、読み出しエラーが発生しないことにより書き込みの結果を確認するというベリファイ処理が規定されている。ただし、ベリファイ処理は処理コストがかかるので、そのようなエラーが発生する確率も勘案して、ＩＤＥ規格のハードディスクにはベリファイ処理は実装されていない。
【００３１】
また、ハードディスクに書き込まれるデータはＣＲＣ（巡回冗長符号）と呼ばれるエラー訂正符号が付加されたものとなっており、適切に書き込まれていなかった場合でも、わずかな程度のエラーなら訂正可能であるとともに、訂正可能な範囲を超えた場合には読出時にエラーであることが判別できるようになっている。
【００３２】
また、現在のハードディスク装置では、あるブロックが読出エラーになった場合には、そのブロックはメディアエラー（ディスク表面の特定の領域が異常であることによる修復不能なエラー）であると判断され、ディスク上に用意された予備領域上の他のブロックが再割当される。再割当されたブロックは、元のブロックのブロック番号にマッピングされる。したがって、上位システムから見ればそのブロックへの書き込みが許されるが、ハードディスク内部ではそのブロックに対し再割当されたブロックへ書込が行われることとなる。この機能は、再割当(reassign)機構、あるいは交代機構と呼ばれる。
【００３３】
本実施形態では、これら現在のハードディスク装置が一般的に有している機能を利用して、ＲＡＩＤ１における読出エラー時の効率的なデータ復旧処理を実現する。この復旧処理について、以下に説明する。
【００３４】
まず図１を参照して、ＲＡＩＤ１のシステム構成を説明する。図１において、ＲＡＩＤ１のディスクアレイ装置（上位システム１０を含めた全体のコンピュータシステムからすれば、これはストレージサブシステムに該当する）は、ＲＡＩＤ１制御部２０と、ハードディスク３０Ａ及びハードディスク３０Ｂ（以下それぞれ「ハードディスクＡ」，「ハードディスクＢ」と呼ぶ）から構成される。このうちＲＡＩＤ１制御部２０が、それらハードディスクＡ，Ｂに対するデータの読み書きを制御する。パーソナルコンピュータやオペレーティングシステムで動作するストレージ用デバイスドライバよりも上位のプログラム等の上位システム１０は、ＲＡＩＤ１制御部２０に接続され、このＲＡＩＤ１制御部２０に対し、単体のハードディスク装置に対するのと同様の読出・書込の要求を送る。上位システム１０から要求を受けたＲＡＩＤ１制御部２０は、書込要求の場合は要求されたデータをハードディスクＡ，Ｂの両方に書き込み、読出要求の場合は要求されたデータをハードディスクＡ，Ｂのうちの一方（これはＲＡＩＤ１制御部２０にシステム管理者が予め設定しておいてもよいし、ＲＡＩＤ１制御部２０が自動判定してもよい）から読み出す。
【００３５】
以下、ＲＡＩＤ１制御部２０の制御動作について説明する。以下の例では、読出エラー発生時の復旧の単位を、ハードディスク自体の読み書きの単位であるブロック（セクタとも言う）とする。このようにブロックを復旧単位とするため、ハードディスクＡとＢは同一容量で、ブロックのサイズが同一のものとする。
【００３６】
まず書込時の処理では、ＲＡＩＤ１制御部２０は、上位システム１０から書込要求を受け付けると、両方のハードディスクＡ，Ｂにそのデータの書込要求を発する。この書込要求に対し、ハードディスクＡ，Ｂそれぞれから書込成功又はエラーを報せる応答が返される。ここでハードディスクＡ，Ｂの両方からエラーの応答があった場合は、ＲＡＩＤ１制御部２０は、ストレージサブシステムの停止を上位システム１０に通知してから、サブストレージシステムを停止する。ハードディスクＡ，Ｂの一方のみからエラーの応答があり他方からは書込成功の通知があった場合は、エラー応答のあったハードディスクをストレージサブシステムから切り離して縮退動作に移行する。そして、縮退動作に移行した旨を報せる通知を上位システム１０に対して行う。
【００３７】
以上が書込時の制御であり、これは従来のＲＡＩＤ１の制御と基本的に同様である。次に、読出時のＲＡＩＤ１制御部２０の制御動作を、図２を参照して説明する。
【００３８】
この手順では、ＲＡＩＤ１制御部２０は、上位システム１０からの読出要求を待つ（Ｓ１０）。上位システム１０からの読出要求には、読み出すべきブロックの番号の指定が含まれる。このような読出要求を受け取ると、ＲＡＩＤ１制御部２０は、読出対象に選ばれたハードディスク（図示例ではハードディスクＡ）から、その要求に指定されたブロックのデータの読出を行う（Ｓ１２）。この読出でエラーが発生しなければ（Ｓ１４の判定結果が否定（Ｎ））、ＲＡＩＤ１制御部２０は、読み出したデータを上位システム１０に返す（Ｓ２４）。
【００３９】
一方、Ｓ１２の読出動作時に、ハードディスクＡから読出エラーの通知があると（Ｓ１４の判定結果が肯定（Ｙ））、ＲＡＩＤ１制御部２０は、ハードディスクＢに対し、ハードディスクＡから読み出そうとしたのと同じブロックの読出を要求する（Ｓ１６）。この要求に対してハードディスクＢから正しくデータが読み出せると（Ｓ１８の判定結果が否定（Ｎ））、そのデータをハードディスクＡの当該ブロックに対して再書込する（Ｓ２０）。なお、ハードディスクＡ内部の制御部は、読出エラーを検知した時点で、その読出エラーの生じたブロックの再割当処理を行う。したがって、Ｓ２０の再書込では、ハードディスクＡに対し、Ｓ１２，１４で読出エラーが検知されたブロックの書込要求を行えば、ハードディスクＡではそのブロックにマッピングされた再割当ブロックに対して自動的にデータを書き込まれることになる。この再書込の際、ハードディスクＡから書込エラーの通知が無ければ（Ｓ２２の判定結果が否定（Ｎ））、ＲＡＩＤ１制御部２０は、Ｓ１６で読み出したデータを上位システム１０に返す（Ｓ２４）。
【００４０】
なお、Ｓ１６におけるハードディスクＢからの読出の際に読出エラーが発生した場合（Ｓ１８の判定結果がＹ）、ＲＡＩＤ１制御部２０は、ストレージサブシステムの停止を上位システム１０に通知し（Ｓ２６）、サブストレージシステムを停止する（Ｓ２８）。
【００４１】
また、Ｓ２０におけるハードディスクＡの冗長化復旧（再書込）の際に書込エラーが発生した場合、ＲＡＩＤ１制御部２０は、ハードディスクＡをストレージサブシステムから切り離してハードディスクＢのみの縮退動作に移行し（Ｓ３０）、縮退動作に移行した旨を上位システム１０に通知する（Ｓ３２）。
【００４２】
以上、読込時のＲＡＩＤ１制御部２０の制御動作の例を説明した。以上の例では、Ｓ１６でハードディスクＢから読み出したデータをすぐには上位システム１０に返さず、Ｓ１８でそのデータをハードディスクＡへ再書込して冗長化復旧を行った後で、Ｓ２４でそのデータを上位システム１０に返した。ただし、この順序はあくまで一例である。この逆に、Ｓ１６でハードディスクＢからデータを読み出した段階ですぐに上位システム１０にそのデータを返し、その後、そのデータをハードディスクＡに再書込するようにしてもシステムとしては成立する。もっともこの場合、タイミングの問題で、ハードディスクＡの冗長化復旧が完了する前に上位システム１０からの次の要求が来たりすると、再び読出エラーが発生してしまうなどの可能性があるので、このような問題の発生を回避する手順として、図２に示した手順は好ましい。
【００４３】
以上では、読出エラー時の復旧の単位として、ハードディスクの読み書きの単位であるブロックを採用したが、これより大きいサイズを復旧単位に採用することももちろん可能である。復旧単位をハードディスクや一般的なパーティションのサイズから小さいサイズとすれば、上で説明したように、復旧作業時の読出エラー発生率を低下させることができる。また、復旧単位を小さくすれば、復旧時の読出及び再書込の時間が短くなり、復旧作業に要する時間を全体として短縮することができる。復旧処理が完了するまではストレージサブシステムは冗長性を持たないため、この処理時間を低減することは上位システムから見たデータ記録機構としての信頼性を大幅に向上できる。復旧単位を１メガバイトなどのようにハードディスクやパーティションに比して数桁小さいサイズに設定すれば、復旧時の読出エラー発生率や復旧処理に要する時間を大幅に低減することができる。
【００４４】
ハードディスクの読み書きの単位であるブロックを復旧の単位とする前述の例では、ＲＡＩＤ１制御部２０は、上位システム１０から読出要求されたブロックに対して読出エラーがあればそのブロックの復旧を行えばよいので、復旧のために特別なハードディスク領域管理を行う必要はなかった。これに対し、そのようなブロックよりも大きい単位での復旧を実現するには、復旧単位とブロックとの対応付けを管理する、図３に示したような対応管理テーブルをＲＡＩＤ１制御部２０に持たせる。対応管理テーブルには、図示のごとく、各復旧単位の番号ごとに、その復旧単位に該当するブロックの番号が登録される。図示例では、連続するブロック群を復旧単位としているので、該当ブロック番号には、先頭と末尾のブロックのブロック番号が示されている。なお、復旧単位内のブロックにエラーが生じた場合でも、それはハードディスク内の制御で再割当がなされるので、この対応管理テーブル自体を修正する必要はない。
【００４５】
このように対応管理テーブルを持つ構成の場合、ＲＡＩＤ１制御部２０は、ハードディスクから読出エラーの通知を受けると、そのとき読出の対象であるブロックの番号が所属する復旧単位の番号を、図３に例示したような対応管理テーブルから求める。そして、求めた復旧単位に属するブロック群をその対応管理テーブルから求め、それらブロック群のデータをもう一方のハードディスクから読み出し、読出エラーのあったハードディスクに書き込む。以上の制御により、読出エラー時の冗長化復旧が可能になる。
【００４６】
復旧単位のサイズは、ＲＡＩＤ１制御部２０のパラメータ設定用のプログラム等を介して、システム管理者が設定できるようにすることもできる。この場合、管理者が復旧単位のサイズを例えばバイト数単位、あるいはブロック数単位で指定すると、そのプログラムがそのサイズに応じて各復旧単位の先頭及び末尾のブロック番号を計算し、それらを対応管理テーブルに登録するようにすればよい。
【００４７】
以上に説明したＲＡＩＤ１制御部２０は、ハードウエアのＲＡＩＤコントローラとして構成することも、ＲＡＩＤ制御用のプログラムとして構成することも、あるいはハードウエアとソフトウエアの折衷システムとして構成することもできる。
【００４８】
以上説明したように、本実施形態によれば、ＲＡＩＤ１のディスクアレイ装置において、ハードディスクの一部分につき読出エラーが生じたときに、冗長状態への自動復旧を行うことができる。しかも、その自動復旧の単位を従来のＲＡＩＤ１のシステムより大幅に小さくしたので、自動復旧時に正常なハードディスクからの読出エラーが生じる確率を大幅に減らすことができるとともに、自動復旧に要する時間も大幅に短くすることができる。本実施形態の方式は、特にＩＤＥディスクドライブを利用したディスクアレイ装置において最も効果が高い。なぜならばＩＤＥディスクドライブは書き込んだデータのベリファイ処理を実施しないために、読出時にエラーが発生する確率が高いからである。
【図面の簡単な説明】
【００４９】
【図１】ＲＡＩＤ１のシステム構成を示す図である。
【図２】読出時のＲＡＩＤ１制御部の制御動作の例を示すフローチャートである。
【図３】復旧単位とハードディスクのブロックとの対応管理テーブルの例を示す図である。
【符号の説明】
【００５０】
１０  上位システム、２０  ＲＡＩＤ１制御部、３０Ａ，３０Ｂ  ハードディスク。
【図１】
2006120042.tif 000003
【図２】
2006120042.tif 000004
【図３】
2006120042.tif 000005