(57)【要約】ＲＡＩＤ装置の制御装置は、ディスクが増設された場合に、既存のストライプに対するセグメントの割当状況をストライプを形成するセグメントの数を変更することなく変更し、増設されるディスクを含む複数のディスクのうちストライプを形成するセグメントの数に等しい任意のディスクから未割り当て状態のセグメントを１つずつ取得し、取得した未割り当て状態のセグメントが割り当てられた新たなストライプを形成し、割り当ての変更及び新たなストライプの形成に対するセグメントの割り当て状況をマッピングテーブルに反映する。
2003077111.tif 000002
【特許請求の範囲】
【請求項１】
複数のディスクの記憶領域が固定サイズのセグメントに夫々分割され、所定数のセグメントからなるストライプが形成され、形成された１以上のストライプからなるＲＡＩＤ領域にデータを記憶するＲＡＩＤ装置の制御装置であって、
前記複数のディスクのうち前記所定数のディスクから任意の一つのセグメントを形成対象のストライプに夫々割り当てることによりストライプを形成する割当手段と、
ストライプに対するセグメントの割り当て状況を示すテーブルとを含み、
前記割当手段は、
少なくとも前記所定数のセグメントを持つ１以上のディスクが増設される場合に、既存の複数のディスクを用いて構成されたストライプに対するセグメントの割り当て状況を変更することなく新たなストライプを形成可能か否かを判定し、
新たなストライプが形成できないと判定した場合に、既存のストライプに対するセグメントの割り当て状況をストライプを形成するセグメントの数を変更することなく変更し、増設される１以上のディスクを含む複数のディスクのうち前記所定数の任意のディスクから未割り当て状態のセグメントを１つずつ取得し、取得した未割り当て状態のセグメントが割り当てられた新たなストライプを形成し、前記割り当ての変更及び新たなストライプの形成に対するセグメントの割り当て状況を前記テーブルに反映する、
ＲＡＩＤ装置の制御装置。
【請求項２】
前記割当手段は、
少なくとも前記所定数のセグメントを持つ１以上のディスクが増設される場合に、未割り当て状態のセグメントの数が最も大きいディスクの未割り当て状態のセグメントの数をＡとし、未割り当て状態のセグメントの数が最も大きいディスクを除くディスクの未割り当て状態のセグメントの数の総和をＢとし、前記所定数をｓとした場合に、下記条件が満たされるか否かを判定する判定手段と、
Ａ（ｓ−１）≦Ｂ
前記条件が満たされない場合に、未割り当て状態のセグメントの数が最も大きいディスク（Ｘ）と未割り当て状態のセグメントの数が最も小さいディスク（Ｙ）とを特定し、ディスク（Ｙ）を用いて形成されているストライプのうちディスク（Ｘ）を用いていないセグメントを特定する特定手段と、
前記ディスク（Ｘ）の任意の未割り当て状態のセグメントを、代替セグメントとして、前記特定手段によって特定された特定セグメントの代わりに、前記特定セグメントを用いて構成されているストライプに割り当て、この割り当ての変更を前記テーブルに反映する反映手段とを含む、
請求項１記載のＲＡＩＤ装置の制御装置。
【請求項３】
前記割当手段は、前記特定セグメントにデータが格納されている場合に、このデータを前記代替セグメントに移動するデータ移動手段をさらに含む、
請求項２記載のＲＡＩＤ装置の制御装置。
【請求項４】
複数のディスクの記憶領域が固定サイズのセグメントに夫々分割され、所定数のセグメントからなるストライプが形成され、形成された１以上のストライプからなるＲＡＩＤ領域にデータを記憶するＲＡＩＤ装置の制御装置であって、
各ディスクに未割り当て状態のセグメントが残る状態で、前記複数のディスクのうちストライプを形成する数のディスクから任意の一つのセグメントを形成対象のストライプに夫々割り当てることによりストライプを形成する割当手段と、
ストライプに対するセグメントの割り当て状況を示すテーブルとを含み、
前記割当手段は、ディスクが増設される場合に、増設されるディスクを含む複数のディスクの中から未割り当て状態のセグメントの数が大きい順で前記所定数と同じ数のディスクを選択し、選択した各ディスクから未割り当て状態のセグメントを一つずつ特定し、特定した各セグメントを新たなストライプに割り当て、この割り当て状態を前記テーブルに反映する、
ＲＡＩＤ装置の制御装置。
【請求項５】
前記割当手段は、ディスクが増設される場合に、増設されるディスクのセグメントの数をＣとし、増設されるディスクを含む複数のディスクの未割り当て状態のセグメントの数をＤとし、前記所定数をｓとした場合に、下記条件が満たされるか否かを判定し、
Ｄ＞Ｃ／（ｓ−１）
上記条件が満たされる間、前記セグメントの割当処理を繰り返し行う、請求項４記載のＲＡＩＤ装置の制御装置。
【発明の詳細な説明】
技術分野
本発明は、ＲＡＩＤ装置（ディスクアレイ装置）の制御装置に関する。
背景技術
ハードディスクに対するデータの読み書きに関する冗長性，低遅延性，広帯域幅を実現し、ハードディスクのクラッシュ時における回復可能性を高める技術として、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ：「ディスクアレイ」とも呼ばれる）がある。
ＲＡＩＤは、幾つかのディスクドライブ（以下、単に「ディスク」という）が組み合わせられたアレイ（配列）を持つ。各ディスクの物理的な記憶領域は、固定サイズを持つ複数の小さなブロック（「セグメント」と呼ばれる：例えば、１２８ＭＢ，１ＧＢ等）に分割され、複数のディスクのセグメントが一つづつ集められて「ストライプ（ストライプ・セット）」と呼ばれる仮想的な領域を形成する。ストライプは、セグメントを割り当て単位として、予め規定されたストライプの幅を構成するに必要な数のセグメントを各ディスクからストライプに割り当てることによって形成される。このように、ストライプは、ディスクアレイ内の複数のディスクから夫々一つずつ割り当てられたセグメントからなり、複数のディスクに分散する仮想的な領域である。ストライプは、幅すなわち自身を構成するセグメントの数を持つ。ＲＡＩＤ上に記憶されるデータは、複数のディスクに分散して記憶される。ディスクアレイは、ユーザ、すなわちホストコンピュータ側から見ると、単一の論理記憶装置又はドライブ（ボリューム）のように見える。これによって、小さな複数のディスクドライブからなるディスクアレイを大容量の単一のディスクドライブとして使用することができる。
ＲＡＩＤは、その目的に応じて様々なタイプを持つ。代表的なものとして、ＲＡＩＤレベル０，１，３，５がある。ＲＡＩＤレベル０は「ストライピング」と呼ばれており、ディスクアレイ上にストライプが形成され、データがストライプを構成する複数のセグメントに分散されて記憶される。これによって、データの読み書き速度の向上が図られる。ＲＡＩＤレベル１は「ミラーリング」と呼ばれており、ストライプ中の少なくとも二つのセグメントに同じデータを夫々記憶する。これによって、データの冗長性が担保される。ＲＡＩＤレベル３は、「ビット又はバイト単位のストライピング＋固定パリティ」と呼ばれ、ビット又はバイトを単位とするセグメントによりストライピングされたデータのパリティを１台のディスクに記録する。ＲＡＩＤレベル５は、「ブロック単位のストライピング＋分散パリティ」と呼ばれる。ＲＡＩＤレベル５では、ストライプを構成する複数のセグメントにデータが夫々記憶される一方で、一つのセグメントに他の複数のセグメントに記憶されたデータのパリティ情報が記憶される。これによって、一つのディスクがクラッシュしてもパリティ情報を用いて元のデータを復元することが可能になっている。
従来、ＲＡＩＤを使用しているコンピュータにハードディスクを増設する場合には、以下の方法が実施されている。
（従来例１）図１０（Ａ）に示すように、複数のディスクを新規に増設し、これらの複数のディスクで既存のＲＡＩＤとは別個のＲＡＩＤを構成する。従って、新規なＲＡＩＤは、既存のＲＡＩＤと異なるボリュームとして使用される。この従来例１には以下の問題があった。
（ａ）ストライプの幅（ストライプを構成するセグメントの数）と同じ数のディスクを追加しなければならないので費用がかかる。
（ｂ）コンピュータは、二つのボリュームを管理しなければならないので負担となる。
（ｃ）ユーザは、二つのボリュームを使い分けなくてはならず、また、ソフトウェアが二つのボリュームに跨ってインストールできないためにそのソフトウェアをインストールできないといった問題が起こる。
従来例１に対し、ストライプの幅より少ない数のディスクを増設し、且つ増設されたディスクを既存のディスクとともに一つのボリュームとして使用するための方法として、次の従来例２が提案されている。
（従来例２）図１０（Ｂ）に示すように、既存のＲＡＩＤに形成されたストライプの数と同じ数のセグメントを形成可能な一つのディスクを追加する。そして、既存のＲＡＩＤのストライプの幅を変更する（図１０（Ｂ）に示す例では、幅を４つから５つに変更）。
しかしながら、従来例２では、ストライプの幅を変更するため、既に記憶されているデータの殆どを移動させなくてはならなかった。従って、移動のための処理が複雑となっていた。また、ストライプに記憶されたデータがＲＡＩＤレベル５のようなパリティ情報を含む場合には、ストライプの構成の変更に伴って全てのパリティを再計算する処理が必要となっていた。さらに、パリティの構成が認識されない限りデータの移動やパリティの再計算はできないので、ストライプの幅の変更に当たって使用されるプログラムをＲＡＩＤレベル毎に用意しなければならなかった。
発明の開示
本発明の目的は、増設したディスクを単一のボリュームとして使用することができ、且つその増設に係る負荷や費用を抑えることができるＲＡＩＤ装置の制御装置を提供することである。
本発明の第１の発明は、複数のディスクの記憶領域が固定サイズのセグメントに夫々分割され、所定数のセグメントからなるストライプが形成され、形成された１以上のストライプからなるＲＡＩＤ領域にデータを記憶するＲＡＩＤ装置の制御装置（１０）であって、
前記複数のディスクのうち前記所定数のディスクから任意の一つのセグメントを形成対象のストライプに夫々割り当てることによりストライプを形成する割当手段（１２）と、
ストライプに対するセグメントの割り当て状況を示すテーブル（１４Ｃ）とを含み、
前記割当手段（１２）は、
少なくとも前記所定数のセグメントを持つ１以上のディスクが増設される場合に、既存の複数のディスクを用いて構成されたストライプに対するセグメントの割り当て状況を変更することなく新たなストライプを形成可能か否かを判定し、
新たなストライプが形成できないと判定した場合に、既存のストライプに対するセグメントの割り当て状況をストライプを形成するセグメントの数を変更することなく変更し、増設される１以上のディスクを含む複数のディスクのうち前記所定数の任意のディスクから未割り当て状態のセグメントを１つずつ取得し、取得した未割り当て状態のセグメントが割り当てられた新たなストライプを形成し、前記割り当ての変更及び新たなストライプの形成に対するセグメントの割り当て状況を前記テーブル（１４Ｃ）に反映する。
第１の発明における割当手段（１２）は、
少なくとも前記所定数のセグメントを持つ１以上のディスクが増設される場合に、未割り当て状態のセグメントの数が最も大きいディスクの未割り当て状態のセグメントの数をＡとし、未割り当て状態のセグメントの数が最も大きいディスクを除くディスクの未割り当て状態のセグメントの数の総和をＢとし、前記所定数をｓとした場合に、下記条件が満たされるか否かを判定する判定手段（１２）と、
Ａ（ｓ−１）≦Ｂ
前記条件が満たされない場合に、未割り当て状態のセグメントの数が最も大きいディスク（Ｘ）と未割り当て状態のセグメントの数が最も小さいディスク（Ｙ）とを特定し、ディスク（Ｙ）を用いて形成されているストライプのうちディスク（Ｘ）を用いていないセグメントを特定する特定手段（１２）と、
前記ディスク（Ｘ）の任意の未割り当て状態のセグメントを、代替セグメントとして、前記特定手段によって特定された特定セグメントの代わりに、前記特定セグメントを用いて構成されているストライプに割り当て、この割り当ての変更を前記テーブルに反映する反映手段（１２）とを含むように構成するのが好ましい。
また、第１の発明における割当手段（１２）は、前記特定セグメントにデータが格納されている場合に、このデータを前記代替セグメントに移動するデータ移動手段（１２）をさらに含むように構成するのが好ましい。
本発明の第２の発明は、複数のディスクの記憶領域が固定サイズのセグメントに夫々分割され、所定数のセグメントからなるストライプが形成され、形成された１以上のストライプからなるＲＡＩＤ領域にデータを記憶するＲＡＩＤ装置の制御装置（１０）であって、
各ディスクに未割り当て状態のセグメントが残る状態で、前記複数のディスクのうちストライプを形成する数のディスクから任意の一つのセグメントを形成対象のストライプに夫々割り当てることによりストライプを形成する割当手段（１２）と、
ストライプに対するセグメントの割り当て状況を示すテーブル（１４Ｄ）とを含み、
前記割当手段（１２）は、ディスクが増設される場合に、増設されるディスクを含む複数のディスクの中から未割り当て状態のセグメントの数が大きい順で前記所定数と同じ数のディスクを選択し、選択した各ディスクから未割り当て状態のセグメントを一つずつ特定し、特定した各セグメントを新たなストライプに割り当て、この割り当て状態を前記テーブル（１４Ｄ）に反映する。
第２の発明における割当手段（１２）は、ディスクが増設される場合に、増設されるディスクのセグメントの数をＣとし、増設されるディスクを含む複数のディスクの未割り当て状態のセグメントの数をＤとし、前記所定数をｓとした場合に、下記条件が満たされるか否かを判定し、
Ｄ＞Ｃ／（ｓ−１）
上記条件が満たされる間、前記セグメントの割当処理を繰り返し行うようにするのが好ましい。
発明を実施するための最良の形態
以下、本発明を実施するための最良の形態を説明する。以下の実施形態は例示であり、本発明は実施形態の構成に限定されるものではない。
〔第１実施形態〕
図１は、本発明によるＲＡＩＤ装置の実施形態を示す図である。図１において、ＲＡＩＤ装置は、ディスクアレイを形成する複数（ｎ＋１個：ｎ＝０，１，２，・・・，ｎ−１，ｎ）のディスクドライブ（ディスク）と、その制御装置１０とを備える。制御装置１０は、ディスクインターフェイス（Ｉ／Ｏ）１１と、ＣＰＵ１２と、メモリ１３とを備えている。
ディスクアレイは、ＲＡＩＤのタイプに応じて、少なくともストライプを形成するセグメントの数のディスクからなる。ディスクインターフェイス１１は、ＣＰＵ１２からの指示に従って、ディスクアレイに対するデータの読み書きを行う。ＣＰＵ１２は、ディスクインターフェイス１１を介したデータの読み書きを制御するとともに、例えばメモリ１３に記憶されたプログラムを実行することによってＲＡＩＤ領域を形成する。
ＣＰＵ１２は、ディスクアレイを形成する各ディスクの物理的な記憶領域を固定サイズを持つ小さな領域（セグメント）に分割する。セグメントは、所定数のセクタからなる。続いて、ＣＰＵ１２は、ストライプを形成するセグメントの数に等しい複数のディスクからセグメントを一つずつ集めて所定の幅を持つ「ストライプ」を形成する。例えば、図１に示すディスク＃０〜＃ｎから一つずつセグメントを特定し、特定したｎ＋１個のセグメントからなる（ｎ＋１の幅を持つ）ストライプを形成する。ストライプは、ＣＰＵ１２が各ディスクのセグメントを予め規定された幅を持つストライプに割り当てることによって形成される。このようにして形成されるストライプの集まりがＲＡＩＤ領域となる。すなわち、ＲＡＩＤ領域は、複数のストライプからなる仮想的な記憶空間である。そして、ＣＰＵ１２は、物理的な記憶空間（セグメント）を仮想的な記憶空間（ＲＡＩＤ領域（ストライプ））に割り当てる処理によって得られる関係をメモリ１３上に作成されるマッピングテーブル１４に格納する。
図２は、マッピングテーブル１４の例を示す図である。図２（Ａ）は、３台のディスクで構成されるＲＡＩＤレベル１（ミラーリング）のマッピングテーブル１４の例（マッピングテーブル１４Ａ）を示す図であり、図２（Ｂ）は、図２（Ａ）に示したマッピングテーブル１４Ａの説明図である。図２（Ｃ）は、５台のディスクで構成されるＲＡＩＤレベル０のマッピングテーブル１４の例（マッピングテーブル１４Ｂ）を示す図である。
図２（Ａ）に示すマッピングテーブル１４Ａにおいて、左側の列は、ＲＡＩＤ領域上の位置を示し、“０−４”，“４−８”，“８−１２”は、ＲＡＩＤ領域を構成するストライプ（ＲＡＩＤ１では「ミラー」と呼ばれる）のＲＡＩＤ領域上の範囲（アドレス）を示す。真ん中の列及び右側の列に示された“０”及び“１”は、各ストライプを構成するセグメントの番号を示す。番号“０”及び“１”に対応する、例えば“ＤＩＳＫ０：０−４”及び“ＤＩＳＫ１：０−４”は、ストライプを構成するセグメントのディスク上の領域を示す。そして、ＲＡＩＤ領域上の各ブロック範囲“０−４”，“４−８”及び“８−１２”に対応する行に記載されたセグメントの組がストライプを夫々構成する。
図２（Ａ）に示す例では、図２（Ｂ）に示すように、３台のディスク（ＤＩＳＫ  ０，１，２）の記憶領域が夫々二つのセグメントに分割され、ディスク０のセグメント“Ａ０−４”とディスク１のセグメント“Ｂ０−４”とがＲＡＩＤ領域“０−４”のストライプ（ストライプ“０−４”）に割り当てられている。また、ディスク０のセグメント“Ａ４−８”とディスク２のセグメント“Ｂ４−８”とがＲＡＩＤ領域“４−８”のストライプ（ストライプ“４−８”）に割り当てられている。また、ディスク１のセグメント“Ａ８−１２”とディスク２のセグメント“Ｂ８−１２”がＲＡＩＤ領域“８−１２”のストライプ（ストライプ“８−１２”）に割り当てられている。そして、各ストライプを構成する二つのセグメント（例えば、セグメント“Ａ０−４”と“Ｂ０−４”）には、同じデータが夫々格納される。これによってデータの冗長性が図られる。
図２（Ｃ）に示すマッピングテーブル１４Ｂでは、マッピングテーブル１４Ａと同様の手法で、５つのディスク（ＤＩＳＫ  ０，１，２，３，４）における各セグメントがＲＡＩＤ領域上に形成された３つのストライプ“０−１６”，“１６−３２”及び“３２−４８”に夫々割り当てられている。
この場合、各ストライプを構成するセグメントの番号に対応する列は、ストライプの幅だけ用意され、ＲＡＩＤ領域上でのブロック範囲がストライプの幅（構成セグメント数：この例では４）倍で大きくなる。図２（Ｃ）に示す例では、ストライプの幅が４であるので、４つのセグメントの列（“０”，“１”，“２”，“３”）が用意され、ＲＡＩＤ領域上のブロック範囲は、“０−１６”，“１６−３２”及び“３２−４８”となっている。
ＲＡＩＤレベル０では、書込対象のデータは、ストライプを構成する各セグメントに分散して書き込まれる。これに代えて、ＲＡＩＤレベル４又は５がマッピングテーブル１４Ｂに適用される場合には、ＲＡＩＤレベルに従ったルールで、各ストライプ中のあるセグメントを除くセグメントにデータが分散して格納され、あるセグメントに分散されたデータのパリティ情報が格納される。なお、パリティの設定方法として、従来と同様の手法、即ち、各セグメントの同じ位置に記録されているビットの排他的論理和（ＸＯＲ）がどの位置に対しても０又は１になるようにパリティの値を設定する方法が適用される。
以上の様に、第１実施形態によるＲＡＩＤ装置の制御装置１０（ＣＰＵ１２）は、ＲＡＩＤの構成時に各ディスクを小さな範囲（セグメント：１２８メガバイト，１ギガバイト等）に分割する。続いて、制御装置１０は、セグメントをストライプへの割り当て単位として、ＲＡＩＤ領域を構成する各ストライプに割り当てる。そして、制御装置１０は、割り当て状況をマッピングしたマッピングテーブル１４を持つ。
第１実施形態の制御装置１０は、上記したマッピングテーブル１４が作成されている状況において、新たなディスクが増設された場合に、ＲＡＩＤ領域を構成する各ストライプの幅（セグメントの数）を変更することなくＲＡＩＤ領域を拡張する。ディスクの増設時において、もし新たなディスク以外のディスク（既存のディスク）の全てのセグメントの割り当てが済んでおり、且つ増設されるディスクの台数（本数）がストライプの幅よりも少ない場合には、増設されるディスクのセグメントをストライプに割り当てることができない。なぜなら、ストライプは異なるディスクのセグメントが集まって形成されるからである。このため、上記状況下では、ＣＰＵ１２は、既存のディスクに保存されているデータを増設されるディスクに移動させて、既存のディスクにストライプを形成するための空き領域（未割り当て状態のセグメント）を作成する。言い換えれば、既存のストライプに対し既存のセグメントの代わりに、追加されるディスクのセグメントを割り当てる。データの移動（セグメントの割り当て変更）が必要な条件は以下の条件式〈式１〉で示すことができる。
Ａ（ｓ−１）≦Ｂ  ・・・〈式１〉
但し、
Ａ＝残り容量が最も大きいディスクの残り容量
Ｂ＝残り容量が最も大きいディスク以外の残り容量の和
ｓ＝ストライプの幅
上記〈式１〉において、「残り容量」は空き状態のセグメント数を示し、「ストライプの幅」はストライプを構成するセグメントの数を示す。
図３は、第１実施形態の制御装置１０によるディスクの増設時におけるセグメントの割り当て方法の説明図であり、図４は、図３に示した割り当て方法を説明するフローチャートであり、図５は、図３及び図４に示した割り当て方法の実施によるマッピングテーブルの変化を示す図である。
図３（Ａ）に示す例では、既存のディスクに相当する複数のディスクが用意されている。複数のディスクは、この例では４つのディスク（ＤＩＳＫ＃０，＃１，＃２及び＃３）からなる。各ディスク＃０〜＃３は、同じ記憶容量を持ち、４つのセグメントに夫々分割されている。そして、各ディスク＃０〜＃３に跨る４つのストライプＳ０〜Ｓ３からなるＲＡＩＤ領域が形成されている。
図５（Ａ）は、図３（Ａ）に示したＲＡＩＤ領域（各ストライプに対するセグメントの割り当て状況）を示すマッピングテーブル１４Ｃを示す。このマッピングテーブル１４Ｃは、ＣＰＵ１２によってメモリ１３上に作成される。この例では、各セグメントは４つのセクタから構成されており、ディスクの特定情報とその位置を示す情報（例えばＤＩＳＫ０：０−３）で表されている。
具体的に説明すると、ストライプＳ０は４つのセグメント“ＤＩＳＫ０：０−３”，“ＤＩＳＫ１：０−３”，“ＤＩＳＫ２：０−３”及び“ＤＩＳＫ３：０−３”が割り当てられてなる。ストライプＳ１は４つのセグメント“ＤＩＳＫ０：４−７”，“ＤＩＳＫ１：４−７”，“ＤＩＳＫ２：４−７”及び“ＤＩＳＫ３：４−７”が割り当てられてなる。ストライプＳ２は４つのセグメント“ＤＩＳＫ０：８−１１”，“ＤＩＳＫ１：８−１１”，“ＤＩＳＫ２：８−１１”及び“ＤＩＳＫ３：８−１１”が割り当てられてなる。ストライプＳ３は４つのセグメント“ＤＩＳＫ０：１２−１５”，“ＤＩＳＫ１：１２−１５”，“ＤＩＳＫ２：１２−１５”及び“ＤＩＳＫ３：１２−１５”が割り当てられてなる。このように、各ストライプＳ０〜Ｓ３の幅は４となっている。
そして、各ストライプＳ０〜Ｓ３には、データがＲＡＩＤレベルに従って格納されている。この例では、ストライプＳ０にデータＡ０〜Ａ３が格納され、ストライプＳ１にデータＢ０〜Ｂ３が格納され、ストライプＳ２にデータＣ０〜Ｃ３が格納され、ストライプＳ３にデータＤ０〜Ｄ３が格納されている。この例は、例えばＲＡＩＤレベル５を示し、各ストライプＳ０〜Ｓ３に格納されたデータの一つは、パリティ情報である。
図３に戻って、図３（Ｂ）に示すように、新たな一つのディスク＃４（ＤＩＳＫ＃４）が増設されたとする。追加されるディスク＃４は、各ディスク＃０〜＃３と同じ記憶容量を持ち、４つのセグメントを持つ。ここで、上記したように、既存のディスクの各ストライプＳ０〜Ｓ３が既にデータで満たされている場合（空き領域がない場合）には、ディスク＃４は他のディスク＃０〜＃３との間でストライプを形成することができない。このため、ＣＰＵ１２は、本発明による割り当て手段，判定手段，及び特定手段として機能し、図４に示すフローチャートに従って、各ストライプに対するセグメントの割り当て変更処理を行う。
図４に示すように、ＣＰＵ１２は、ディスク＃４が増設されると、上記した式１（Ａ（ｓ−１）≦Ｂ）に従ってデータの移動（セグメントの割り当て変更（再割り当て））が必要か否かを判定する（ステップＳ０１）。ステップＳ０１の処理を図３（Ｂ）に従って説明すると、残り容量が最も大きなディスクはディスク＃４であり、その残り容量（空き状態（未割り当て状態）のセグメントの数）は４である。即ち、値ＡはＡ＝４である。一方、ディスク＃４以外のディスク＃０〜＃３には空き状態のセグメントはないので、値ＢはＢ＝０である。そして、ストライプの幅ｓは４である。以上を式１に当てはめると、
４（４−１）≦０  ・・・〈式１〉
となり、条件式１が満たされないので、データの移動が必要と判定され（Ｓ０１；ＹＥＳ）、処理がステップＳ０２に進む。以下のステップＳ０２〜Ｓ０５の処理では、例えば、以下の優先順位に従って該当する対象が検索される。即ち、番号が若い程優先順位が高くなるように設定されている。
（優先←→非優先）
・ディスク＃０→＃１→＃２→＃３→＃４
・ストライプＳ０→Ｓ１→Ｓ２→Ｓ３
ステップＳ０２では、ＣＰＵ１２は、空き容量（空き状態のセグメントの数）が最も多いディスク（Ｘ）を探す。この例では、ディスク（Ｘ）としてディスク＃４が見つかる。
次に、ＣＰＵ１２は、空き容量が最も少ないディスク（Ｙ）を探す（ステップＳ０３）。この例では、ディスク（Ｙ）としてディスク＃０，＃１，＃２及び＃３が見つかるが、ＣＰＵ１２は、優先順位に従って、ディスク＃０をディスク（Ｙ）として特定する。
次に、ＣＰＵ１２は、ディスク（Ｙ）を使って構成されているストライプの中でディスク（Ｘ）を使っていないセグメントを探す（ステップＳ０４）。ここに、ディスク（Ｙ）であるディスク＃０は、ストライプＳ０〜Ｓ４を構成するために使用されている。ＣＰＵ１２は、優先順位に従って、該当するセグメントとして、ストライプＳ０に割り当てられているセグメントＡ０（ＤＩＳＫ０：０−３）を特定する（見つける）。このセグメント“ＤＩＳＫ０：０−３”が特定セグメントに相当する。
ここで、同じストライプに含まれるデータが同一のディスク上にあるとＲＡＩＤにおけるデータの冗長性が失われる（ディスクが破損した場合にデータを復元することが不可能になる）。このため、ステップＳ０４の処理は、データの移動によって或るストライプに或るディスクの複数のセグメントが割り当てられる状態になることがないように、上記した処理によって、移動対象のデータを格納しているセグメントを特定する。
また、ステップＳ０４において、ディスク（Ｘ）におけるディスクの使用量（割当が済んでいる量）がディスク（Ｙ）の使用量（割り当てが済んでいる量）よりも小さければ、移動対象のデータ（割当変更すべきセグメント）を必ず見つけることができる。このため、同一容量の複数のディスクからなるＲＡＩＤに同一容量のディスクを増設すれば、必ず移動対象のデータを見つけることができる。
次に、ＣＰＵ１２は、ステップＳ０４にて見つけたセグメント中のデータをディスク（Ｘ）の任意の空きセグメント（代替セグメント）に移動する（ステップＳ０５）。この例では、代替セグメントは、各ディスクの記憶領域の先頭から順に使用されるように選択される。即ち、ＣＰＵ１２は、セグメント“ＤＩＳＫ０：０−３”に格納されたデータＡ０を、ディスク（Ｘ）であるディスク＃４の１番目のセグメント“ＤＩＳＫ４：０−３”に移動する（図３（Ｂ）参照）。このセグメント“ＤＩＳＫ４：０−３”が代替セグメントに相当する。これによって、セグメント“ＤＩＳＫ０：０−３”が空き状態（未割り当て状態）となる。
そして、ＣＰＵ１２は、マッピングテーブル１４Ｃを更新する（ステップＳ０６）。即ち、ＣＰＵ１２は、ステップＳ０５におけるデータの移動で発生したディスク（Ｙ）の空きセグメント（この例では、セグメント“ＤＩＳＫ０：０−３”）を新たなＲＡＩＤ領域（ストライプＳ４）に割り当て、この状況をマッピングテーブル１４Ｃに書き込む（図５（Ｂ）参照）。
このように、ＣＰＵ１２は、ディスク（Ｘ）の任意の未割り当て状態のセグメント“ＤＩＳＫ４：０−３”を、代替セグメントとして、特定された特定セグメント“ＤＩＳＫ０：０−３”の代わりに、この特定セグメント“ＤＩＳＫ０：０−３”を用いて構成されているストライプＳ０に割り当て、この割り当ての変更をテーブル（マッピングテーブル１４Ｃ）に反映する。
その後、処理がステップＳ０１に戻り、ＣＰＵ１２は、再び条件式〈式１〉が満たされるか否かの判定を行う。このとき、値ＡはＡ＝３（ディスク＃４）となり、値ＢはＢ＝１（ディスク＃０）となるので、条件式１は次の状態となる。
３（４−１）≦１  ・・・〈式１〉
このように、条件式〈式１〉が満たされないので、ＣＰＵ１２は、再び“ＹＥＳ”の判定（データの移動が必要との判定）を行い、処理をステップＳ０２に進める。ステップＳ０２では、ＣＰＵ１２は、ディスク（Ｘ）としてディスク＃４（残り容量；３）を見つける。次に、ＣＰＵ１２は、優先順位に従って、ディスク（Ｙ）としてディスク＃１（残り容量；０）を見つける（ステップＳ０３）。
次に、ＣＰＵ１２はディスク＃１を用いて構成されているストライプの中からディスク＃４を使っていないセグメントを探す（ステップＳ０４）。このとき、データＡ１格納したセグメント“ＤＩＳＫ１：０−３”が選択されると、ディスク＃４の２つのセグメントがストライプＳ０に割り当てられることになる。このため、ＣＰＵ１２はセグメント“ＤＩＳＫ１：０−３”の選択を避け、優先順位に従ってストライプＳ１を構成するセグメント“ＤＩＳＫ１：４−７”を特定セグメントとして選択する。
次に、ＣＰＵ１２は、セグメント“ＤＩＳＫ１：４−７”に格納されたデータＢ１をディスク（Ｙ）に相当するディスク＃４の空きセグメント“ＤＩＳＫ４：４−７”（代替セグメント）に移動する（ステップＳ０５；図３（Ｂ）参照）。これによって、セグメント“ＤＩＳＫ１：４−７”が空き状態となる。
そして、ＣＰＵ１２は、マッピングテーブル１４Ｃを更新する（ステップＳ０６）、即ち、ＣＰＵ１２は、ディスク＃４のセグメント“ＤＩＳＫ４：４−７”をストライプＳ１に割り当て、ディスク＃１のセグメント“ＤＩＳＫ１：４−７”を新たなストライプＳ４に割り当て、これらをマッピングテーブル１４Ｃに反映する（図５（Ｂ）参照）。その後、処理がステップＳ０１に戻る。
ステップＳ０１では、ＣＰＵ１２が再び条件式〈式１〉が満たされるか否かの判定を行う。このとき、値ＡはＡ＝２（ディスク＃４）となり、値ＢはＢ＝２（ディスク＃０及び＃１）となるので、条件式１は次の状態となる。
２（４−１）≦２  ・・・〈式１〉
このように、条件式〈式１〉が満たされないので、ＣＰＵ１２は、再び“ＹＥＳ”の判定（データの移動が必要との判定）を行い、処理をステップＳ０２に進める。ステップＳ０２では、ＣＰＵ１２は、ディスク（Ｘ）としてディスク＃４（残り容量；２）を見つける。次に、ＣＰＵ１２は、優先順位に従って、ディスク（Ｙ）としてディスク＃２（残り容量；０）を見つける（ステップＳ０３）。
次に、ＣＰＵ１２はディスク＃２を用いて構成されているストライプの中からディスク＃４を使っていないセグメントを探す（ステップＳ０４）。このとき、ＣＰＵ１２は、同じストライプにディスク＃４の２つのセグメントが割り当てられないように、優先順位に従ってストライプＳ２を構成するセグメント“ＤＩＳＫ２：８−１１”（特定セグメント）を選択する。
次に、ＣＰＵ１２は、セグメント“ＤＩＳＫ２：８−１１”に格納されたデータＣ２をディスク（Ｙ）に相当するディスク＃４の空きセグメント“ＤＩＳＫ４：８−１１”（代替セグメント）に移動する（ステップＳ０５）。
そして、ＣＰＵ１２は、マッピングテーブル１４Ｃを更新する（ステップＳ０６）、即ち、ＣＰＵ１２は、ディスク＃４のセグメント“ＤＩＳＫ４：８−１１”をストライプＳ２に割り当て、ディスク＃２のセグメント“ＤＩＳＫ２：８−１１”を新たなストライプＳ４に割り当て、これらをマッピングテーブル１４Ｃに反映する。その後、処理がステップＳ０１に戻る。
ステップＳ０１では、ＣＰＵ１２が再び条件式１が満たされるか否かの判定を行う。このとき、値ＡはＡ＝１（ディスク＃４，＃０，＃１，＃２の何れか）となり、値ＢはＢ＝３（ディスク＃４，＃０，＃１，＃２の何れか３つの合計）となるので、条件式〈式１〉は次の状態となる。
１（４−１）≦３  ・・・〈式１〉
このように、条件式〈式１＞が満たされるので、ＣＰＵ１２はデータの移動が必要ないものと判定し（ステップＳ０１；ＮＯ）、処理をステップＳ０７に進める。
ステップＳ０７では、ＣＰＵ１２は、追加されたディスクの空きセグメントを新たなストライプに割り当てる。即ち、ＣＰＵ１２は、ディスク＃４の空きセグメント“ＤＩＳＫ４：１２−１５”をストライプＳ４に割り当て、これをマッピングテーブル１４Ｃに反映する（図５（Ｂ）参照）。その後、割り当て処理が終了する。
図５（Ｂ）は、ディスク＃４の増設後のマッピングテーブル１４Ｃの説明図であり、ディスク＃４の増設によって各ストライプＳ０〜Ｓ３に対するセグメントの割り当てが変更されるとともに新たなストライプＳ４が形成され、ＲＡＩＤ領域（ボリューム）の記憶領域が拡張された様子を示す。
図５（Ｂ）において、太字で示されたセグメント（ディスク上の領域）は、データを移動した部分に相当し、斜体文字で示されたセグメントは追加されたディスク＃４のセグメントを示す。そして、新たに形成されたストライプＳ４を構成するセグメント“ＤＩＳＫ０：０−３”，“ＤＩＳＫ１：４−７”，“ＤＩＳＫ２：８−１１”及び“ＤＩＳＫ４：１２−１５”は、データ（データ及びパリティ情報）Ｅ０，Ｅ１，Ｅ２及びＥ３を格納するために使用される（図３（Ｃ）参照）。
第１実施形態の制御装置１０によれば、ディスクの増設にあたって、ストライプの幅を変更することなく新たなストライプを形成することによって、ＲＡＩＤ領域（ボリューム）を拡張する。即ち、データを移動し（ストライプに対するセグメントの割り当てを変更し）、ストライプを構成するディスク領域（セグメント）のマッピングテーブルを変更する。
この過程では、従来例２として説明した、ストライプの幅をディスクの追加後の台数に応じて変更する方法に比較して、セグメントの割り当ての変更量を大幅に抑えることができる。従って、ディスクの増設時の処理を速やかに終了し、通常動作に戻ることができる。
また、セグメントの割り当て変更に際して、変更対象のセグメント（特定セグメント）にデータが記憶されている場合には、そのデータは代替セグメントに移動される。データの移動は、特定セグメントに記憶されたデータに対してのみ行われるので、ディスクの増設時におけるデータの移動量は、従来例２と比較して数分の一に抑えることができる。この点でも、ディスクの増設時における処理の短縮化を図ることができる。
また、既存のディスクに形成されたストライプのデータの記憶位置は、必要に応じて（新たなストライプを形成するために）変更されるが、ストライプに格納されたデータの内容は変更されない（図３（Ｃ）及び図５（Ｃ）の各ストライプＳ０〜Ｓ３参照）。従って、ＣＰＵ１２は、各ストライプＳ０〜Ｓ３についてパリティを再計算する必要がない。このように、ＣＰＵ１２はデータの移動に伴ってパリティを再計算する必要がないので、ＣＰＵ１２に対する処理の負荷を軽減することができる。
また、第１実施形態による処理（図４に示したアルゴリズム）は、ＲＡＩＤレベル０，１，３，４についても適用することができる。即ち、図４に示した割り当て処理は、ＲＡＩＤレベルに拘わらず実施することができる。このため、ＲＡＩＤレベルに拘わらず同じプログラムを用いてディスクの増設に伴うセグメントの割り当て処理を実施することができる。
第１実施形態の構成は、次のように変形することができる。第１実施形態では、ストライプを構成するセグメントがマッピングテーブル１４上で明確になっていれば良いので、ストライプを構成するセグメントは、ディスク間で不連続となっていても良い。即ち、図３（Ｃ）に示したストライプＳ４のように、セグメントを表すディスク領域がディスク間で異なっていても良い。このため、図３〜５を用いて説明した割り当て処理におけるディスク及びセグメントの優先順位は適宜変更することができる。
また、第１実施形態では、ＲＡＩＤ領域を形成する複数のディスクの記憶領域を無駄なく使用するため、既存のディスクはストライプの幅に応じた台数からなり、各ディスクは夫々同一容量（セグメントの大きさ及び数が同じ）を持つようになっている。そして、既存の各ディスクと同一容量を持つディスク＃４が増設される例を示した。これに対し、その記憶領域を無駄なく使用するという観点からは、増設されるディスクから得られるセグメントの数がストライプの幅と同じになっていれば、追加ディスクの台数は、１≦追加ディスク台数≦ストライプの幅の範囲内で選択することができる。即ち、増設されるディスクは、少なくともストライプの幅以下の台数からなり、ストライプの幅に相当するセグメントの数を持つようにするのが好ましい。
図６（Ａ）〜（Ｆ）は、第１実施形態の変形例を示す図であり、増設により追加されるセグメントの数を変更することなくディスクの台数を変更したものである。図６（Ａ）〜（Ｆ）は、図３（Ｃ）に相当する図面であり、ディスクの増設により割り当て処理が終了した状態を示す。なお、図６（Ａ）〜（Ｆ）において、既存のディスク（ディスク＃０〜＃３）は図３（Ａ）と同様のストライプ構成を持つものとする。
図６（Ａ）は３つのセグメントを持つディスク＃４と１つのセグメントを持つディスク＃５を追加した例を示す。図６（Ｂ）は、２つのセグメントを夫々持つディスク＃４及び＃５を追加した例を示す。図６（Ｃ）は、１つのセグメントを持つディスク＃４と３つのセグメントを持つディスク＃５とを追加した例を示す。図６（Ｄ）は１つのセグメントを持つディスク＃４及び＃６と２つのセグメントを持つディスク＃５を追加した例を示す。図６（Ｅ）は、１つのセグメントを夫々持つディスク＃４及び＃５と２つのセグメントを持つディスク＃６を追加した例を示す。図６（Ｆ）は１つのセグメントを夫々持つ４つのディスク＃４，＃５，＃６及び＃７を追加した例を示す。
図６（Ａ）〜（Ｆ）に示す例では、図４に示したフローチャートに従って割り当て処理が行われることにより、各ディスクの記憶領域を単一のボリュームで無駄なく使用することができる。即ち、図３に示した例とほぼ同じ作用効果を持つ。
また、第１実施形態では、データの格納とストライプに対するセグメントの割り当てがほぼ同時に行われる例、言い換えれば、ストライプに割り当てられたセグメントにはデータが格納されていることを前提として説明した。但し、本発明は、ストライプに対するセグメントの割り当てと、ストライプに対するデータの格納とを切り分けて考えることが可能である。
即ち、第１実施形態の説明から、セグメントの割り当てに係る部分を抽出して本発明を構成することができる。この場合、ＣＰＵ１２は、記憶対象のデータの有無に拘わらず、各ディスクのセグメントをストライプに割り当ててＲＡＩＤ領域を形成し、ディスクが増設された場合に、新たなストライプの形成によってＲＡＩＤ領域を拡張するために、既存のストライプに対するセグメントの割り当てを変更するか否かをステップＳ０１にて判断する。
このとき、条件式〈式１〉における値Ａ及びＢの「残り容量」は未割り当てのセグメントを指し、割り当て済みのセグメントにデータが格納されているか否かは関係がない。同様に、ステップＳ０２及びＳ０３における「空き容量」は、未割り当てのセグメントの数を指す。また、ステップＳ０４は、移動対象のデータを格納したセグメントを特定する代わりに、新たなストライプに割り当てるべきセグメントを特定することになる。そして、ステップＳ０５は、特定されたセグメントにデータが格納されていれば実施される付加的なステップとなる。
〔第２実施形態〕
次に、本発明の第２実施形態を説明する。第２実施形態は第１実施形態と共通点を有するので、主として相違点について説明する。第２実施形態におけるＲＡＩＤ装置は、図１に示した構成と同じシステム構成を持つ。即ち、ＲＡＩＤ装置は、ＲＡＩＤ領域を形成する複数のディスク（ディスクアレイ）と、その制御装置１０とを持ち、ＣＰＵ１２が各ディスクのセグメントをストライプに割り当てた状況を示すマッピングテーブル１４をメモリ１３上に作成する点は第１実施形態と同じである。但し、ＣＰＵ１２による割り当て処理の内容が第１実施形態と異なる。
図７は、本発明の第２実施形態におけるＲＡＩＤ装置の制御装置１０によるディスク増設時におけるセグメントの割り当て方法を示す図であり、図８は、図７に示した割り当て方法を説明するフローチャートである。図９は、図７に示したセグメントの割り当ての前後におけるマッピングテーブル１４の例（マッピングテーブル１４Ｄ）を示す図である。
図７（Ａ）に示すように、第２実施形態では、４つのディスク（ＤＩＳＫ＃０，＃１，＃２，＃３）が既存のディスクとしてディスクアレイを形成している。各ディスク＃０〜＃３は、夫々ｍ＋１個（ｍは１以上の整数）のセグメントを持つ。そして、ディスク＃０〜＃３に跨るストライプＳ１１及びＳ１２が形成されている。
即ち、図９（Ａ）のマッピングテーブル１４Ｄに示すように、ＲＡＩＤ領域（ＲＡＩＤ上の位置）“０−１５”には、セグメント“ＤＩＳＫ０：０−３”，“ＤＩＳＫ１：０−３”，“ＤＩＳＫ２：０−３”及び“ＤＩＳＫ３：０−３”が割り当てられてなるストライプＳ１１が形成され、ＲＡＩＤ領域の位置“１６−３１”には、セグメント“ＤＩＳＫ０：４−７”，“ＤＩＳＫ１：４−７”，“ＤＩＳＫ２：４−７”及び“ＤＩＳＫ３：４−７”が割り当てられてなるストライプＳ１２が形成されている。但し、図７（Ａ）に示すように、各ディスク＃０〜＃３のストライプを構成している領域以外の領域は、未使用（未割り当て）となっている。このように、第２実施形態では、ＣＰＵ１２は既存のディスク＃０〜＃４に未割り当て状態のセグメントが残るようにストライプを形成する。
ここで、図７（Ｂ）に示すように、各ディスク＃０〜＃３と同一容量を持つ（ｍ＋１個のセグメントを持つ）新規のディスク＃４が増設（追加）され、新たなストライプＳ１３及びＳ１４を作成する命令がＣＰＵ１２に与えられたものとする。このディスクの増設において、ＣＰＵ１２は、割り当て手段，判定手段として機能し、図８のフローチャートに従ったセグメントの割り当て処理を実施する。
図８において、最初に、ＣＰＵ１２は、以下の条件式〈式２〉で示される条件２が満たされるか否かを判定する（ステップＳ００１）。
Ｄ＞Ｃ／（ｓ−１）  ・・・〈式２〉
但し、
Ｃ＝増設対象の１つのディスクの容量
Ｄ＝割り当てられていないディスク領域の容量（セグメントの数）の総和
ｓ＝ストライプの幅
ここで、簡単のためにｍ＝４とすると、
Ｃ＝５
Ｄ＝１７
１７＞５／（４−１）
となるので、条件２が成立する。この場合、ＣＰＵ１２は、条件２が成立するものとして（ステップＳ００１；ＯＫ）、処理をステップＳ００２に進める。
ステップＳ００２では、ＣＰＵ１２は、空き容量の大きい順（未割り当て状態のセグメントの数が多い順）に、ストライプの幅（ストライプを構成するセグメントの数）に相当する数のディスクを選択する。
ここでは、増設されるディスク＃４が最初に選択され、残りの３つのディスクが既存のディスク＃０〜＃３から選択される。このとき、空き容量が同じである複数のディスクが存在する場合には、ＣＰＵ１２は所定の優先順位に従ってディスクを選択する。例えば、ディスク番号が若い程優先順位が高いものとして、ディスクを選択する。これによって、ディスク＃４と、ディスク＃０〜＃２とが選択される。
次に、ＣＰＵ１２は、選んだ各ディスクから空きセグメントを１つづつ特定し、特定したセグメントを新たなストライプＳ１３に割り当てる（ステップＳ００３）。この例では、図９（Ｂ）に示すように、ＣＰＵ１２は、ディスク＃０のセグメント“ＤＩＳＫ０：８−１１”，ディスク＃１のセグメント“ＤＩＳＫ１：８−１１”，ディスク＃２のセグメント“ＤＩＳＫ２：８−１１”及びディスク＃４のセグメント“ＤＩＳＫ４：０−３”をストライプＳ１３に割り当てる。このように、セグメントは、各ディスクの記憶領域の先頭から順に使用されるように割り当てられる。
そして、ＣＰＵ１２は、割り当て結果に従ってマッピングテーブル１４Ｄを更新し（ステップＳ００４）、処理をステップＳ００１に戻す。続いて、ＣＰＵ１２が、条件２が成立するか否かを判定する。このとき、
Ｃ＝５
Ｄ＝１３
１３＞５／（４−１）
となるので、条件２が成立する。この場合、ＣＰＵ１２は、条件２が成立するものとして（ステップＳ００１；ＯＫ）、処理をステップＳ００２に進める。
ステップＳ００２では、ＣＰＵ１２は、空き容量の大きい順に、ストライプの幅に相当する数のディスクを選択する。ここでは、増設されるディスク＃４が最初に選択され、次に、ディスク＃３が選択され、残りの２つのディスクが既存のディスク＃０〜＃２から所定の優先順位に従って選択される。ここでは、ディスク＃０及び＃１とが選択される。
次に、ＣＰＵ１２は、選んだ各ディスクから空きセグメントを１つづつ特定し、特定したセグメントを新たなストライプＳ１４に割り当てる（ステップＳ００３）。この例では、図９（Ｂ）に示すように、ＣＰＵ１２は、ディスク＃０のセグメント“ＤＩＳＫ０：１２−１５”，ディスク＃１のセグメント“ＤＩＳＫ１：１２−１５”，ディスク＃３のセグメント“ＤＩＳＫ３：８−１１”及びディスク＃４のセグメント“ＤＩＳＫ４：４−７”をストライプＳ１４に割り当てる。
そして、ＣＰＵ１２は、割り当て結果に従ってマッピングテーブル１４Ｄを更新し、処理を終了する。以上のようにして、ディスク＃４の増設によって新たなＲＡＩＤ領域“３２−４７（ストライプＳ１３）”及び“４８−６３（ストライプＳ１４）”が作成される（図７（Ｂ）及び図９（Ｂ）参照）。
なお、図８のステップＳ００１において条件２が満たされない場合（ステップＳ００１；ＮＧ）には、ディスクの増設時における割り当て処理が終了する。但し、ディスクが増設された場合に、ステップＳ００１でＮＧの判断が行われるまで、ステップＳ００１〜Ｓ００４の処理が繰り返し行われるようにしても良い。
第２実施形態によれば、ディスクが増設される場合に、既に形成されているストライプに対するセグメントの再割り当て（割り当て変更）が起こらないように新たなストライプを形成する。従って、セグメントの再割り当てに伴うデータの移動が起こらない。従って、第２実施形態における制御装置１０では、ディスクの増設に際し、ＣＰＵ１２が、セグメントの再割り当て（割当変更）、データの移動、パリティの再計算等の処理を行わなくて済むので、第１実施形態に比べてその負荷がさらに軽減される。
【図面の簡単な説明】
図１は、ＲＡＩＤ装置の実施形態を示す図である。
図２（Ａ）、（Ｂ）及び（Ｃ）は、マッピングテーブルの説明図である。
図３は、ＲＡＩＤ装置の第１実施形態におけるディスク増設時の様子を示す説明図である。
図４は、第１実施形態のＣＰＵによるディスク増設時における割り当て処理を示すフローチャートである。
図５（Ａ）及び（Ｂ）は、第１実施形態のディスクの増設の前後におけるマッピングテーブルを示す図である。
図６（Ａ）〜（Ｆ）は、第１実施形態の変形例の説明図である。
図７は、ＲＡＩＤ装置の第２実施形態におけるディスク増設時の様子を示す説明図である。
図８は、第２実施形態のＣＰＵによるディスク増設時における割り当て処理を示すフローチャートである。
図９（Ａ）及び（Ｂ）は、第２実施形態のディスクの増設の前後におけるマッピングテーブルを示す図である。
図１０（Ａ）及び（Ｂ）は、従来技術の説明図である。
【図１】
2003077111.tif 000003
【図２】
2003077111.tif 000004
【図３】
2003077111.tif 000005
【図４】
2003077111.tif 000006
【図５】
2003077111.tif 000007
【図６】
2003077111.tif 000008
【図７】
2003077111.tif 000009
【図８】
2003077111.tif 000010
【図９】
2003077111.tif 000011
【図１０】
2003077111.tif 000012
【国際調査報告】
2003077111.tif 000013
2003077111.tif 000014
2003077111.tif 000015
2003077111.tif 000016