(57)【特許請求の範囲】
【請求項１】
２ｍ本（ｍは自然数）のディスク群から構成され、ｍ本のディスク群と他のｍ本のディスク群がミラーリング関係にあり、各ｍ本のディスク群がストライピングされているディスク群からなるＲＡＩＤグループに、２ｎ（ｎは自然数）のディスク群を追加して、２（ｍ＋ｎ）本のディスクから構成され、ｍ＋ｎ本のディスク群と他のｍ＋ｎ本のディスク群がミラーリング関係にあり、各ｍ＋ｎ本のディスク群がストライピングされているディスク群からなるＲＡＩＤグループに変換するＲＡＩＤ装置における容量拡張方法であって、
上記２ｍ本のディスク群のうちのｍ本のディスク群にｎ本のディスクを追加し、ｎ本のディスクにより容量を拡張する第１のステップと、
上記２ｍ本の内の残りのｍ本のディスク群に、残りのｎ本のディスクを追加し、上記容量が拡張されたディスク群とミラーリング関係を持つようにする第２のステップを有することを特徴とするＲＡＩＤ装置における容量の拡張方法。
【請求項２】
２ｍ本（ｍは自然数）のディスク群から構成され、ｍ本のディスク群と他のｍ本のディスク群がミラーリング関係にあり、各ｍ本のディスク群がストライピングされているディスク群からなるＲＡＩＤグループを有するＲＡＩＤ装置であって、
上記ＲＡＩＤ装置は、ディスク容量を拡張するための容量拡張手段を備え、
上記容量拡張手段は、上記２ｍ本のディスク群に２ｎ本（ｎは自然数）のディスク群を追加する際、まず、プライマリディスク群である上記ｍ本のディスク群に、ｎ本のディスクを追加してプライマリディスク群のディスク容量を拡張し、
セカンダリディスク群であるその他のｍ本のディスクに、残りのｎ本のディスク群を追加し、上記プライマリディスク群に対してミラーリング関係を持つようにする
ことを特徴とするＲＡＩＤ装置。
【請求項３】
上記容量拡張手段は、上記プライマリディスク群と、セカンダリディスク群が、同時に同一の論理ブロックアドレスについて拡張を行わないようにした
ことを特徴とする請求項２のＲＡＩＤ装置。
【請求項４】
プライマリディスク群の拡張を追いかけるように、セカンダリディスク群の拡張を行う
ことを特徴とする請求項３のＲＡＩＤ装置。
【請求項５】
プライマリディスク群を論理ブロックアドレスの小さい方もしくは大きい方から拡張し、セカンダリディスク群の拡張を、上記とは逆の論理ブロックアドレスが大きい方もしくは小さい方から行う
ことを特徴とする請求項３のＲＡＩＤ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は複数台の記憶装置を用いてデータを冗長管理するディスクアレイ装置［以下、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks ）装置という］における容量拡張方法および容量拡張手段を備えたＲＡＩＤ装置に関する。
【背景技術】
【０００２】
ＲＡＩＤ装置は、保存データの信頼性や、装置の信頼性を高めるため冗長構成を採用しており、ＲＡＩＤ０、ＲＡＩＤ１、ＲＡＩＤ０＋１、ＲＡＩＤ２、ＲＡＩＤ３、ＲＡＩＤ４、ＲＡＩＤ５などが知られている。
例えばＲＡＩＤ０はデータをブロック単位で分散して格納するストライピング構成を用いたものであり、ＲＡＩＤ１は複数のディスクに同一のデータを格納するミラーリング構成を用いたものである。このストライピング構成とミラーリング構成を併用し、ストライピング構成のディスク群からなるプライマリディスク群とセカンダリディスク群の間にミラーリング関係を持たせたＲＡＩＤグループを、ここではＲＡＩＤ０＋１という。
上記冗長度はユーザのシステム構成等に基づき設定するが、システム運用開始後、冗長度や容量、ＲＡＩＤレベルを変更したいと場合も生ずる。
システムを停止すれば上記冗長度等の変更は容易に行うことが可能であるが、システムを停止することなく、活性状態（ホストからのＩ／Ｏを受け付けながら）で、冗長度や容量、ＲＡＩＤレベルを変更する技術が従来から種々提案されている（例えば特許文献１、特許文献２等参照）。
【０００３】
上記のように、主に活性状態で既に存在するＲＡＩＤグループにディスクを追加することで、ＲＡＩＤグループとしての容量を拡張したり、ＲＡＩＤレベルを変換する機能を、ＬＤＥ（Logical Device Expansion）といい、一般的にはＲＡＩＤグループの拡張された部分に新たにボリュームを追加作成するという利用の仕方をする。
【特許文献１】特開２００４−２１３０６４号公報
【特許文献２】特開２００５−１０７８４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述したＬＤＥでは、新構成（ＬＤＥ後のＲＡＩＤグループ）と旧構成（ＬＤＥ前のＲＡＩＤグループ）でのボリュームが重なっている場合がある。処理としては、旧構成としてＲｅａｄを行い、そのデータを一時的にバッファ上に格納してから、新構成としてＷｒｉｔｅを行うという方法で実行するが、上記処理過程において、一時的にもバッファ上にしかデータが存在しない瞬間が発生する。
より詳細にいうと、まさにＷｒｉｔｅ中の間は、実際のディスクにどこまで書き込まれたかが判らないため、ディスク上のＷｒｉｔｅを要求した領域のデータは信用できないものになっているということである。やむおえない事情で、上記バッファが、停電時にバッテリーバックアップされない場合やハード的なメモリ故障の場合に、上述のディスクへのＷｒｉｔｅが失敗すると上記バッファ内のデータが失われる恐れがある。
本発明は上述した従来の問題点を解決するためになされたものであって、本発明の目的は、ＲＡＩＤ１あるいはＲＡＩＤ０＋１といったミラーリングを行うＲＡＩＤグループから、偶数本のディスクを追加し、より容量の大きいＲＡＩＤ０＋１への拡張を行うに際し、一時的にもディスク上にデータが存在しない状態をなくしてＬＤＥを実行できるようにすることである。
【課題を解決するための手段】
【０００５】
本発明においては、上記課題を次のように解決する。
（１）ＲＡＩＤ１あるいはＲＡＩＤ０＋１のＲＡＩＤグループである、２ｍ本（ｍは自然数）のディスク群から構成され、ｍ本のディスク群と他のｍ本のディスク群がミラーリング関係にあり、各ｍ本のディスク群がストライピングされているディスク群からなるＲＡＩＤグループを有するＲＡＩＤ装置において、上記２ｍ本のディスク群に２ｎ本（ｎは自然数）のディスク群を以下のように追加し容量を拡張する。
旧構成のＲＡＩＤグループで、プライマリディスク群である上記ｍ本のディスク群に、ｎ本のディスクを追加して、新構成のＲＡＩＤグループでミラーリングの関係をもつディスク群の一方になるように処理を実施し、この処理完了後に、上述で処理を実施しなかったセカンダリディスク群であるその他のｍ本のディスクに、残りのｎ本のディスク群を追加し、上記プライマリディスク群に対してミラーリング関係を持つようにする。
ＲＡＩＤ１あるいはＲＡＩＤ０＋１では、ミラーリングしているので、ミラーの一方のデータが無くなってもＲＡＩＤグループとしては冗長性を失うだけで、ディスク上データは残っていることになる。
本発明ではこれを利用して、ＬＤＥ処理全体の中間状態として、ディスク上のデータが、ミラーの一方を旧構成で、ミラーの一方を新構成で格納されている状態を作りあげることで、常にディスク上にデータが存在する状況を実現可能としている。
（２）上記（１）の容量拡張に際し、上記プライマリディスク群と、セカンダリディスク群が、同時に同一の論理ブロックアドレスについて拡張を行わないようにする。
（３）上記（２）において、プライマリディスク群の拡張を追いかけるように、セカンダリディスク群の拡張を行う。
（４）上記（２）において、プライマリディスク群を論理ブロックアドレスの小さい方もしくは大きい方から拡張し、セカンダリディスク群の拡張を、上記とは逆の論理ブロックアドレスが大きい方もしくは小さい方から行う。
【発明の効果】
【０００６】
本発明においては、以下の効果を得ることができる。
（１）容量拡張に際し、ＬＤＥ処理全体の中間状態として、ディスク上のデータが、ミラーの一方を旧構成で、ミラーの一方を新構成で格納されている状態を作りあげ、常にディスク上にデータが存在する状況を実現可能としているので、停電時にバッテリーバックアップされない場合やハード的なメモリ故障の場合、ディスクへのライトが失敗しても、データが失われることがない。
（２）上記容量拡張に際し、プライマリディスク群と、セカンダリディスク群が、同時に同一の論理ブロックアドレスについて拡張を行わないように、例えばプライマリディスク群の拡張を追いかけるようにセカンダリディスク群の拡張を行うことで、プライマリディスク群とセカンダリディスク群の拡張処理を同時に行うことができ、処理時間を短縮することができる。
【発明を実施するための最良の形態】
【０００７】
図１は本発明の実施例のＲＡＩＤ装置の概略構成を示す図である。
同図において、１はＲＡＩＤコントローラ、２−１〜２−ｎはデータなどを記憶するディスクであり、ＲＡＩＤコントローラ１は直接もしくはネットワーク機器を介してホスト３に接続され、ホスト３からのリード、ライト要求に応じて、大量のデータを高速かつランダムに上記ディスクに読み書きする。
ＲＡＩＤコントローラ１は、データを読み書きする際に一時的にデータを格納するバッファ１ａと、容量拡張時、容量拡張処理を行う容量拡張手段１ｂを備え、また、ＲＡＩＤグループの構成情報１ｃの定義を保持する。なお、図１では本発明に係わる機能構成のみを示しているが、ＲＡＩＤコントローラのハードウェア構成の詳細については、例えば前記特許文献１などを参照されたい。
【０００８】
上記ディスク２−１〜２−ｎは、前述したように２ｍ本（ｍは自然数）のディスク群から構成され、ｍ本のディスク群と他のｍ本のディスク群がミラーリング関係にあり、各ｍ本のディスク群がストライピングされているディスク群からなるＲＡＩＤ１あるいはＲＡＩＤ０＋１のＲＡＩＤグループに構成されており、本発明では、ディスク容量を拡張する際、このディスク群に２ｎ本のディスクを追加して、２（ｍ＋ｎ）本のディスクから構成されるＲＡＩＤ０＋１のＲＡＩＤグループを構成する。
例えば、図２（ａ）に示すように、ミラーリングされた一対のディスク２−１，２−２に２本のディスク２−３，２−４を追加して、がミラーリングされ、ストライピングされた各２本のディスク２−１，２−３および２−２，２−４からなるＲＡＩＤ０＋１のＲＡＩＤグループを構成する。
あるいは、図２（ｂ）に示すように、ＲＡＩＤ０＋１のＲＡＩＤグループに２本のディスク２−９，２−１０を追加して、ＲＡＩＤ０＋１のＲＡＩＤグループを構成する。
【０００９】
以下、上記のように２ｍ本のディスクから構成されるＲＡＩＤ０＋１のＲＡＩＤグループに２ｎ本のディスクを追加してディスク容量を拡張する際の、前記容量拡張手段１ｂにおける処理について説明する。
図３は本発明の実施例のＬＤＥ処理を説明する図である。
図３（ａ）は、ＬＤＥ前の状態を示し、プライマリのディスク群２−１〜２−４、およびセカンダリのディスク群２−５〜２−８がそれぞれストライピングされ、ディスク群２−１〜２−４とディスク群２−５〜２−８がミラーリング構成となっている。
この状態から図３（ｂ）に示すように、追加ディスク２本の内、１本のディスク２−１０を使って、セカンダリのディスク群２−５〜２−８を拡張する（この状態を中間状態という）。ここで、この段階では、プライマリのディスク群２−１〜２−４は変更がなく、追加されたディスク２−１０はミラーリングの関係にない。
次に、図３（ｃ）に示すように、２本の追加ディスクの内の残りの一本のディスク２−９を追加してプライマリのディスク群２−１〜２−４を拡張し、追加したディスクをミラーリングさせる。
【００１０】
図４は上記処理手順を示すフローチャートである。
まず、構成定義をセカンダリ拡張中の状態に変更する（ステップＳ１）。ついで、進捗を確認し（ステップＳ２）、拡張前の領域があれば、プライマリのディスク群２−１〜２−４から旧構成のマッピングでリードし、セカンダリのディスク群２−５〜２−８へ新構成のマッピングでライトする（ステップＳ３，Ｓ４）。        
ついで進捗を更新し（ステップＳ５）、ステップＳ２に戻り、拡張前の領域がなくなるまでこの処理を繰り返す。
上記処理が最後まで終了したら、ステップＳ６に行き、構成定義をプライマリ拡張中の状態に変更する。ついで、進捗を確認し（ステップＳ７）、拡張前の領域があれば、セカンダリのディスク群２−５〜２−８から新構成のマッピングでリードし、プライマリのディスク群２−１〜２−４へ新構成のマッピングでライトする（ステップＳ８，Ｓ９）。ついで進捗を更新し（ステップＳ１０）、ステップＳ７に戻り、拡張前の領域がなくなるまでこの処理を繰り返す。最後まで終了したら、構成定義を拡張語の状態に変更し、処理を終わる。
【００１１】
以上の実施例では、ミラーリングの関係をもつディスクの一方だけについて拡張を行った後で、他方を拡張する場合について説明したが、次に、常にディスク上にデータが存在するように管理しながらも、処理時間を短縮することが可能な改善された上記実施例の改善例について説明する。
この実施例の概要は、ミラーリングの関係をもつディスク群の一方と他方が、同時に同一ＬＢＡ（論理ブロックアドレス）について拡張を行わないように管理しながら、両ディスク群共、平行して拡張していくという方式である。
以下では、「後追い方式」と「前後方式」の二つを述べる。
【００１２】
（１）後追い方式
プライマリのディスク群の拡張を追いかけるようにセカンダリのディスク群の拡張を行うようにし、これら両者が同一のＬＢＡ領域を処理しないように管理する方式である。図５に後追い方式による拡張処理の概要を示す。図５では、ミラーリング構成のディスク２−１，２−２からなるＲＡＩＤ１に２本のディスク２−３，２−４を追加してＲＡＩＤ０＋１を構成する場合について示している。
まず、図５（ａ）に示すように追加ディスク２本の内、１本のディスク２−４を追加し領域Ｒ１を拡張する（領域Ｒ１は中間状態）。この段階では、ディスク２−１は変更がない。
【００１３】
次に、図５（ｂ）に示すように、２本の追加ディスクの内の残りの一本のディスク２−３を追加して、上記拡張された領域Ｒ１と、追加したディスク２−３の領域Ｒ１’をミラーリングさせる（領域Ｒ１，Ｒ１’は最終状態）。また、これと同時に、追加されたディスク２−４について領域Ｒ２を拡張する（領域Ｒ２は中間状態）。
さらに、上記と同様、図５（ｃ）に示すように、追加されたディスク２−４の上記拡張された領域Ｒ２と、追加したディスク２−３の領域Ｒ２’をミラーリングさせる（領域Ｒ２，Ｒ２’は最終状態）。また、これと同時に、追加されたディスク２−４ついて領域Ｒ３を拡張する（領域Ｒ３は中間状態）。
以下、全ての領域の拡張処理が終わるまで、同様の処理を行う。
【００１４】
ここで、上記後追い方式では、具体的には以下の２つの方式が考えられる。
一つ目の方式は、あるＬＢＡ範囲についてプライマリのディスク群の拡張が終了した後で、プライマリとして、次のＬＢＡ範囲に処理を移るのと同時に、プライマリのディスク群で拡張が終了したのと同じＬＢＡ範囲についてセカンダリの拡張を開始させる方式である。
二つ目の方式は、プライマリのディスク群の拡張とセカンダリのディスク群の拡張についてそれぞれが進捗を独自に管理して平行に拡張を行っておくが、プライマリが拡張中のＬＢＡ領域についてセカンダリでも拡張を開始しようとした時に、セカンダリの処理開始を一定時間待ち合わせるという方式である。
この場合、待ち合わせた後で、また、該当するＬＢＡ領域がプライマリのディスク群で拡張中のかどうかを調べ、処理中であれば一定時間の待ち合わせを行い、処理中でなければセカンダリのディスク群の処理を開始させる。
【００１５】
（２）前後方式  
プライマリのディスク群の拡張をＬＢＡの小さい方から大きい方へ行い、セカンダリのディスク群の拡張をこの逆でＬＢＡの大きい方から小さい方へ行う方式である。
図６に前後方式による拡張処理の概要を示す。図６では、図５と同様、ミラーリング構成のディスク２−１，２−２からなるＲＡＩＤ１に２本のディスク２−３，２−４を追加してＲＡＩＤ０＋１を構成する場合について示している。
まず、図６（ａ）に示すように追加ディスク２本の内、１本のディスク２−４を追加し、ＬＢＡの大きな方から領域Ｒ１を拡張する（領域Ｒ１は中間状態）。この段階では、ディスク２−１は変更がない。
【００１６】
次に、図６（ｂ）に示すように、２本の追加ディスクの内の残りの一本のディスク２−３を追加して、上記拡張された領域Ｒ１と、追加したディスク２−３の領域Ｒ１’をミラーリングさせる（領域Ｒ１，Ｒ１’は最終状態）。またこれと同時に、追加されたディスク２−３についてＬＢＡの小さな方から領域Ｒ２を拡張する（領域Ｒ２は中間状態）。
さらに、上記と同様、図６（ｃ）に示すように、追加されたディスク２−３の上記拡張された領域Ｒ２と、追加したディスク２−４の領域Ｒ２’をミラーリングさせる（領域Ｒ２，Ｒ２’は最終状態）。また、これと同時に、追加されたディスク２−３について、ＬＢＡの大きな方から領域Ｒ３を拡張する（領域Ｒ３は中間状態）。
以下、全ての領域の拡張処理が終わるまで、同様の処理を行う。
なお、この場合、ＲＡＩＤグループの中点付近でプライマリとセカンダリのディスク群が同一ＬＢＡ範囲を処理しようとすることがあるので、プライマリとセカンダリのどちらかが処理しようとしているＬＢＡ範囲が、もう一方で拡張中であった場合には、それが終わるまで待ち合わせるという処理が必要となる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施例のＲＡＩＤ装置の概略構成を示す図である。
【図２】ＲＡＩＤ１またはＲＡＩＤ０＋１にディスクを追加して容量を拡張する場合を説明する図である。
【図３】本発明の実施例のＬＤＥ処理を説明する図である。
【図４】本発明の実施例のＬＤＥ処理手順を示すフローチャートである。
【図５】本発明の実施例における後追い方式を説明する図である。
【図６】本発明の実施例における前後方式を説明する図である。
【符号の説明】
【００１８】
１              ＲＡＩＤコントローラ
１ａ            バッファ
１ｂ            容量拡張手段
１ｃ            構成情報
２−１〜２−ｎ  ディスク
３              ホスト
【図１】
0004799277.tif 000002
【図２】
0004799277.tif 000003
【図３】
0004799277.tif 000004
【図４】
0004799277.tif 000005
【図５】
0004799277.tif 000006
【図６】
0004799277.tif 000007