(57)【特許請求の範囲】
【請求項１】
データを記憶するディスク装置１台以上によって構成されるドライブ列を複数と、論理記憶領域を設定する論理記憶領域設定手段と、該論理記憶領域を複数の論理ブロックに分割するブロック設定手段と、各論理ブロックに前記ドライブ列の物理ブロックを割り当てる際に前記論理記憶領域において互いに隣接する前記論理ブロックにはそれぞれ別の前記ドライブ列の物理ブロックを割り当てる割当手段と、前記複数のドライブ列を並列に動作させるドライブ制御手段とを備えるディスクアレイにおいて、ドライブ列が増設された際に、増設分のドライブ列の構成が既設のドライブ列の構成と同じであることを前提として、既設のドライブ列に対応する論理記憶領域と増設分のドライブ列に対応する論理記憶領域とを統合するための論理記憶領域統合方法であって、
前記ドライブ列が増設されると、前記既設分のドライブ列に対応する前記論理記憶領域を第１の論理記憶領域とし、該増設分のドライブ列に応じた第２の論理記憶領域と該第２の論理記憶領域とは別の第３の論理記憶領域を設定し、該第２の論理記憶領域を複数の論理ブロックに分割して、論理ブロック番号を前記第１の論理記憶領域と前記第２の論理記憶領域とで異なるように割り振ってから、
該第１および第２の論理記憶領域の未使用の論理ブロックをそれぞれが属していた論理記憶領域から分離させ、該分離させた論理ブロックを前記第３の論理記憶領域に属する論理ブロックとする併合ステップと、
前記第１および第２の論理記憶領域の論理ブロックに割り当てられている前記物理ブロックのデータを前記第３の論理記憶領域の論理ブロックに割り当てられた前記物理ブロックに移動させて該論理ブロックを前記未使用の論理ブロックとするデータ移動ステップとを、
前記第１および第２の論理記憶領域に属していた前記論理ブロックがすべて前記第３の論理記憶領域に属するまで繰り返し実行し、前記第１および第２の論理記憶領域に属していた前記論理ブロックを前記第３の論理記憶領域に併合する毎に前記第１および第２の論理記憶領域の論理ブロック数を前記分離させたブロック数分減算し、前記第３の論理記憶領域の論理ブロック数を該併合されたブロック数分加算することを特徴とするディスクアレイにおける論理記憶領域統合方法。
【請求項２】
請求項１記載のディスクアレイにおける論理記憶領域統合方法において、
前記併合ステップを実行する前に前記第１の論理記憶領域に未使用の論理ブロックが存在しないときには、該第１の論理記憶領域のいずれかの論理ブロックに割り当てられている前記物理ブロックのデータを前記第２の論理記憶領域の未使用の論理ブロックに割り当てられている前記物理ブロックに移動させるブロック解放ステップを実行することを特徴とするディスクアレイにおける論理記憶領域統合方法。
【請求項３】
データを記憶するディスク装置１台以上によって構成されるドライブ列を複数と、論理記憶領域を設定する論理記憶領域設定手段と、該論理記憶領域を複数の論理ブロックに分割するブロック設定手段と、各論理ブロックに前記ドライブ列の物理ブロックを割り当てる際に前記論理記憶領域において互いに隣接する前記論理ブロックにはそれぞれ別の前記ドライブ列の物理ブロックを割り当てる割当手段と、前記複数のドライブ列を並列に動作させるドライブ制御手段とを備えるディスクアレイ装置において、
増設分のドライブ列の構成が既設のドライブ列の構成と同じである前記ドライブ列が増設されると、前記既設分のドライブ列に対応する前記論理記憶領域を第１の論理記憶領域とし、前記論理領域設定手段は該増設分のドライブ列に応じた第２の論理記憶領域と該第２の論理記憶領域とは別の第３の論理記憶領域を設定し、
前記ブロック設定手段は該第２の論理記憶領域を複数の論理ブロックに分割して、論理ブロック番号を前記第１の論理記憶領域と前記第２の論理記憶領域とで異なるように割り振る構成であり、
該第１および第２の論理記憶領域の未使用の論理ブロックをそれぞれが属していた論理記憶領域から分離させ、該分離させた論理ブロックを前記第３の論理記憶領域に属する論理ブロックとする領域併合手段と、
前記第１および第２の論理記憶領域の論理ブロックに割り当てられている前記物理ブロックのデータを前記第３の論理記憶領域の論理ブロックに割り当てられた前記物理ブロックに移動させて該論理ブロックを前記未使用の論理ブロックとするデータ移動手段と、
前記第１および第２の論理記憶領域に属していた前記論理ブロックがすべて前記第３の論理記憶領域に属するまで前記領域併合手段とデータ移動手段とを作動させ、前記第１および第２の論理記憶領域に属していた前記論理ブロックが前記第３の論理記憶領域に組み込まれる毎に前記第１および第２の論理記憶領域の論理ブロック数を前記分離させたブロック数分減算し、前記第３の論理記憶領域の論理ブロック数を該組み込んだブロック数分加算する併合制御手段とを設けた
ことを特徴とするディスクアレイ装置。
【請求項４】
請求項３記載のディスクアレイ装置において、前記第１の論理記憶領域に未使用の論理ブロックが存在しないときには、該第１の論理記憶領域のいずれかの論理ブロックに割り当てられている前記物理ブロックのデータを前記第２の論理記憶領域の未使用の論理ブロックに割り当てられている前記物理ブロックに移動させるブロック解放手段を設けたことを特徴とするディスクアレイ装置。
【請求項５】
請求項３または４記載のディスクアレイ装置において、
該ディスクアレイ装置の稼働中における前記ドライブ列の増設を検出する増設検知手段を設けたことを特徴とするディスクアレイ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ディスクアレイ装置に関する。
【０００２】
【従来の技術】
従来、データを記憶するディスク装置１台以上によって構成されるドライブ列を複数と、論理記憶領域を設定する論理記憶領域設定手段と、論理記憶領域を複数の論理ブロックに分割するブロック設定手段と、各論理ブロックにドライブ列の物理ブロックを割り当てる際に、論理記憶領域において互いに隣接する論理ブロックにはそれぞれ別のドライブ列の物理ブロックを割り当てる割当手段と、複数のドライブ列を並列に動作させるドライブ制御手段とを備えるディスクアレイ装置が知られている。
【０００３】
論理記憶領域において互いに隣接する論理ブロックにはそれぞれ別のドライブ列の物理ブロックを割り当てて、複数のドライブ列を並列に動作させることにより、外部からのアクセスに対する応答の高速化を図る手法はストライピングと呼ばれており、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ Ａｒｒａｙｓ ｏｆ Ｉｎｅｘｐｅｎｓｉｖｅ Ｄｉｓｋｓ）レベル０，３，４，５等に応用されている。
【０００４】
このストライピングの一例を図８を参照して具体的に説明する。これはＲＡＩＤレベル４に相当するもので、論理ディスクにはチャンク０、１、２、３・・・が設定されていて、Ａ〜Ｄの４台のディスク装置に順次チャンク０，１，２，３を書き込み、それらチャンク０〜３に対応するパリティデータＰ（０−３）を残りの１台のＥディスク装置に書き込む。同様に、Ａ〜Ｄディスク装置に順次チャンク４，５，６，７を書き込み、それらデータ４〜７に対応するパリティデータＰ（４−７）を残りのＥディスク装置に書き込む。チャンク８以降についても同様である。
【０００５】
このストライピングを実行すると、ファイルを書き込む際、ファイルを構成するファイルブロックが論理ディスク上の連続したチャンクに順次配置されるときには、その連続するチャンクはそれぞれ別のディスク装置のチャンクに配置される。そのため、ファイルをシーケンシャルに読み出す場合には、同一のディスク装置から連続して読み出されることがなく、あるディスク装置のチャンクからのデータ転送中に別のディスク装置のチャンクをシークしたり、さらにはキャッシュへの先読みなどを行える。このように複数のディスク装置を並列に動作させることができるので、全体として非常に高速なデータ読み出しが可能であった。また、多数のディスク装置を使用できることから大容量のデータを格納することも可能であった。
【０００６】
つまり、大容量と高速読み出しが両立するわけで、こうした特質を活かして例えばビデオサーバ等に利用されていた。
【０００７】
【発明が解決しようとする課題】
しかしながら、例えばビデオサーバの場合、映像データをディスクアレイ装置に蓄積していけば、それ以上データを蓄積できない満杯状態がいつかは訪れる。このとき、それ以上の映像データを記憶させようとすれば、通常のディスクアレイ装置では映像データの送出を中断し、既に蓄積済みの映像データを一旦外部の記憶装置に保存するか、または新規の大容量のディスクアレイ装置へ転送するかしか手段がなかった。何れにしてもその為に要する時間は短くなく、その間そのビデオサーバはサービスを停止せざるを得ないのが実状であった。
【０００８】
また、ストライピングを行うシステムにおいてその高速性を維持するためには、ディスクアレイ装置を構成する全ディスク装置を共通の論理記憶領域下にコントロールする必要がある。ところが、単にディスク装置を増設しただけでは既設分の論理記憶領域とは別に増設分の論理記憶領域が設定されてしまうので、ストライピングの利点を活かすことができなかった。
【０００９】
このディスクアレイ装置の記憶容量を増加するためにはシステムを一旦停止しなければならないという問題、単にディスク装置を増設しただけではストライピングの利点が活かせないという問題は、ビデオサーバ以外でも存在した。本発明は、上述した問題点を解決するためになされたものであり、ストライピングを行うディスクアレイ装置において、ストライピングの利点を損なわずに、しかもその稼働を中断せずに記憶データの増加やディスク装置の増設を可能とすることを目的としている。
【００１０】
【課題を解決するための手段】
上記課題を解決するための手段として、請求項１記載のディスクアレイにおける論理記憶領域統合方法は、データを記憶するディスク装置１台以上によって構成されるドライブ列を複数と、論理記憶領域を設定する論理記憶領域設定手段と、該論理記憶領域を複数の論理ブロックに分割するブロック設定手段と、各論理ブロックに前記ドライブ列の物理ブロックを割り当てる際に前記論理記憶領域において互いに隣接する前記論理ブロックにはそれぞれ別の前記ドライブ列の物理ブロックを割り当てる割当手段と、前記複数のドライブ列を並列に動作させるドライブ制御手段とを備えるディスクアレイにおいて、ドライブ列が増設された際に、増設分のドライブ列の構成が既設のドライブ列の構成と同じであることを前提として、既設のドライブ列に対応する論理記憶領域と増設分のドライブ列に対応する論理記憶領域とを統合するための論理記憶領域統合方法であって、
前記ドライブ列が増設されると、前記既設分のドライブ列に対応する前記論理記憶領域を第１の論理記憶領域とし、該増設分のドライブ列に応じた第２の論理記憶領域と該第２の論理記憶領域とは別の第３の論理記憶領域を設定し、該第２の論理記憶領域を複数の論理ブロックに分割して、論理ブロック番号を前記第１の論理記憶領域と前記第２の論理記憶領域とで異なるように割り振ってから、
該第１および第２の論理記憶領域の未使用の論理ブロックをそれぞれが属していた論理記憶領域から分離させ、該分離させた論理ブロックを前記第３の論理記憶領域に属する論理ブロックとする併合ステップと、
前記第１および第２の論理記憶領域の論理ブロックに割り当てられている前記物理ブロックのデータを前記第３の論理記憶領域の論理ブロックに割り当てられた前記物理ブロックに移動させて該論理ブロックを前記未使用の論理ブロックとするデータ移動ステップとを、
前記第１および第２の論理記憶領域に属していた前記論理ブロックがすべて前記第３の論理記憶領域に属するまで繰り返し実行し、前記第１および第２の論理記憶領域に属していた前記論理ブロックを前記第３の論理記憶領域に併合する毎に前記第１および第２の論理記憶領域の論理ブロック数を前記分離させたブロック数分減算し、前記第３の論理記憶領域の論理ブロック数を該併合されたブロック数分加算することを特徴とする。
【００１１】
請求項２記載のディスクアレイにおける論理記憶領域統合方法は、請求項１記載のディスクアレイにおける論理記憶領域統合方法において、
前記併合ステップを実行する前に前記第１の論理記憶領域に未使用の論理ブロックが存在しないときには、該第１の論理記憶領域のいずれかの論理ブロックに割り当てられている前記物理ブロックのデータを前記第２の論理記憶領域の未使用の論理ブロックに割り当てられている前記物理ブロックに移動させるブロック解放ステップを実行することを特徴とする。
【００１２】
また、請求項１記載の方法を実行可能な装置としての請求項３記載のディスクアレイ装置は、データを記憶するディスク装置１台以上によって構成されるドライブ列を複数と、論理記憶領域を設定する論理記憶領域設定手段と、該論理記憶領域を複数の論理ブロックに分割するブロック設定手段と、各論理ブロックに前記ドライブ列の物理ブロックを割り当てる際に前記論理記憶領域において互いに隣接する前記論理ブロックにはそれぞれ別の前記ドライブ列の物理ブロックを割り当てる割当手段と、前記複数のドライブ列を並列に動作させるドライブ制御手段とを備えるディスクアレイ装置において、
増設分のドライブ列の構成が既設のドライブ列の構成と同じである前記ドライブ列が増設されると、前記既設分のドライブ列に対応する前記論理記憶領域を第１の論理記憶領域とし、前記論理領域設定手段は該増設分のドライブ列に応じた第２の論理記憶領域と該第２の論理記憶領域とは別の第３の論理記憶領域を設定し、
前記ブロック設定手段は該第２の論理記憶領域を複数の論理ブロックに分割して、論理ブロック番号を前記第１の論理記憶領域と前記第２の論理記憶領域とで異なるように割り振る構成であり、
該第１および第２の論理記憶領域の未使用の論理ブロックをそれぞれが属していた論理記憶領域から分離させ、該分離させた論理ブロックを前記第３の論理記憶領域に属する論理ブロックとする領域併合手段と、
前記第１および第２の論理記憶領域の論理ブロックに割り当てられている前記物理ブロックのデータを前記第３の論理記憶領域の論理ブロックに割り当てられた前記物理ブロックに移動させて該論理ブロックを前記未使用の論理ブロックとするデータ移動手段と、
前記第１および第２の論理記憶領域に属していた前記論理ブロックがすべて前記第３の論理記憶領域に属するまで前記領域併合手段とデータ移動手段とを作動させ、前記第１および第２の論理記憶領域に属していた前記論理ブロックが前記第３の論理記憶領域に組み込まれる毎に前記第１および第２の論理記憶領域の論理ブロック数を前記分離させたブロック数分減算し、前記第３の論理記憶領域の論理ブロック数を該組み込んだブロック数分加算する併合制御手段とを設けた。
【００１３】
請求項２記載の方法を実行可能な装置としての請求項４記載のディスクアレイ装置は、請求項３記載のディスクアレイ装置において、前記第１の論理記憶領域に未使用の論理ブロックが存在しないときには、該第１の論理記憶領域のいずれかの論理ブロックに割り当てられている前記物理ブロックのデータを前記第２の論理記憶領域の未使用の論理ブロックに割り当てられている前記物理ブロックに移動させるブロック解放手段を設けたことを特徴とする。
【００１４】
請求項５記載のディスクアレイ装置は、請求項３または４記載のディスクアレイ装置において、該ディスクアレイ装置の稼働中における前記ドライブ列の増設を検出する増設検知手段を設けたことを特徴とする。
【００１５】
【発明の実施の形態】
上記の構成になる請求項１記載のディスクアレイにおける論理記憶領域統合方法は、データを記憶するディスク装置１台以上によって構成されるドライブ列を複数、論理記憶領域を設定する論理記憶領域設定手段、論理記憶領域を複数の論理ブロックに分割するブロック設定手段、各論理ブロックにドライブ列の物理ブロックを割り当てる際に論理記憶領域において互いに隣接する論理ブロックにはそれぞれ別のドライブ列の物理ブロックを割り当てる割当手段および複数のドライブ列を並列に動作させるドライブ制御手段を備えるディスクアレイに適用される。なお、ドライブ列は、データを記憶するディスク装置１台以上によって構成されるから、ディスク装置１台で１つのドライブ列を構成することもある。
【００１６】
この論理記憶領域統合方法は、増設分のドライブ列の構成が既設のドライブ列の構成と同じであることを前提としており、ドライブ列が増設されると、既設分のドライブ列に対応する論理記憶領域を第１の論理記憶領域とし、増設分のドライブ列に応じた第２の論理記憶領域と第２の論理記憶領域とは別の第３の論理記憶領域を設定し、第２の論理記憶領域を複数の論理ブロックに分割して、論理ブロック番号を第１の論理記憶領域と第２の論理記憶領域とで異なるように割り振る。
その後、第１および第２の論理記憶領域の未使用の論理ブロックをそれぞれが属していた論理記憶領域から分離させ、分離させた論理ブロックを第３の論理記憶領域に属する論理ブロックとする併合ステップと、第１および第２の論理記憶領域の論理ブロックに割り当てられている物理ブロックのデータを第３の論理記憶領域の論理ブロックに割り当てられた物理ブロックに移動させて該論理ブロックを前記未使用の論理ブロックとするデータ移動ステップとを、第１および第２の論理記憶領域に属していた論理ブロックがすべて第３の論理記憶領域に属するまで繰り返し実行する。
また、第１および第２の論理記憶領域に属していた論理ブロックを第３の論理記憶領域に併合する毎に第１および第２の論理記憶領域の論理ブロック数を分離させたブロック数分減算し、第３の論理記憶領域の論理ブロック数を併合されたブロック数分加算する。
【００１７】
つまり、第１および第２の論理記憶領域の未使用の部分を第３の論理記憶領域に併合し、その併合された部分に対応する物理ブロックに他の物理ブロックのデータを移動させることによって第１および第２の論理記憶領域に未使用の論理ブロックを作り出し、その未使用の論理ブロックを第３の論理記憶領域に併合することを繰り返す。そして、最終的には、第１および第２の論理記憶領域は消滅して第３の論理記憶領域だけになる。
【００１８】
この残った第３の論理記憶領域は、既設のディスク装置および増設されたディスク装置のすべてを共通に管理する論理記憶領域となるから、ディスク装置の増設によってストライピングの利点が損なわれることはない。また、既設のディスク装置に蓄積されていたデータを他のディスクアレイに移転させるわけではないから、このディスクアレイからの読み出しは可能であり、稼働を中断させる必要はない。
【００１９】
ところで、ディスク装置を増設した際には、例えば既設のディスク装置が満杯あるいは満杯に近くて、第１の論理記憶領域のすべての論理ブロックが使用されている可能性もある。このような場合には、いきなり併合ステップを実行するわけにはいかない。
【００２０】
そこで、請求項２記載のように、併合ステップを実行する前に第１の論理記憶領域に未使用の論理ブロックが存在しないときには、第１の論理記憶領域のいずれかの論理ブロックに割り当てられている物理ブロックのデータを第２の論理記憶領域の未使用の論理ブロックに割り当てられている物理ブロックに移動させるブロック解放ステップを実行すれば、第１の論理記憶領域に未使用の論理ブロックができるから、そこで併合ステップを実行できる。なお、増設分のディスク装置は、増設時には使用されている物理ブロックがないのが普通であるから、ブロック解放ステップの実行に支障はない。
【００２１】
次に、請求項１記載の方法を実行可能な装置としての請求項３記載のディスクアレイ装置においては、ドライブ列は、データを記憶するディスク装置１台以上によって構成され、ディスク装置１台で１つのドライブ列を構成することもある。このディスクアレイ装置は、そうしたドライブ列を複数備えている。
なお、増設されるドライブ列の構成は既設のドライブ列の構成と同じにされる。
【００２２】
論理記憶領域設定手段は、ディスクアレイ装置を構成するディスク装置の記憶容量に応じて論理記憶領域を設定し、ブロック設定手段は、例えばディスクアレイ装置の構築に際して設定される論理ブロックのサイズに基づいて、論理記憶領域を複数の論理ブロックに分割する。そして、割当手段は、各論理ブロックにドライブ列の物理ブロックを割り当てる際に、論理記憶領域において互いに隣接する論理ブロックにはそれぞれ別のドライブ列の物理ブロックを割り当てる。
【００２３】
これによりストライピングが可能となり、ファイルを書き込む際に、ファイルを構成するファイルブロックが論理記憶領域の連続した論理ブロックに順次配置されるときには、その連続する論理ブロックはそれぞれ別のドライブ列の物理ブロックに配置される。そのため、ファイルをシーケンシャルに読み出す場合には、同一のドライブ列から連続して読み出されることはない。そこで、ドライブ制御手段により複数のドライブ列を並列に動作させれば、あるドライブ列の物理ブロックからのデータ転送中に別のドライブ列の物理ブロックをシークしたり、さらにはキャッシュへの先読みなどを行える。このように複数のドライブ列を並列に動作させることができるので、全体として非常に高速なデータ読み出しが可能である。
【００２４】
さらに、このディスクアレイ装置においては、ドライブ列が増設されると、論理領域設定手段は、既設分のドライブ列に対応する論理記憶領域を第１の論理記憶領域として、増設分のドライブ列に応じた第２の論理記憶領域とこの第２の論理記憶領域とは別の第３の論理記憶領域を設定し、ブロック設定手段は第２の論理記憶領域を複数の論理ブロックに分割して、論理ブロック番号を第１の論理記憶領域と第２の論理記憶領域とで異なるように割り振る。
【００２５】
領域併合手段は、第１および第２の論理記憶領域の未使用の論理ブロックをそれぞれが属していた論理記憶領域から分離させ、分離させた論理ブロックを第３の論理記憶領域に属する論理ブロックとする。
【００２６】
データ移動手段は、第１および第２の論理記憶領域の論理ブロックに割り当てられている物理ブロックのデータを第３の論理記憶領域の論理ブロックに割り当てられた物理ブロックに移動させて、その論理ブロックを未使用の論理ブロックとする。併合制御手段は、第１および第２の論理記憶領域に属していた論理ブロックがすべて第３の論理記憶領域に属するまで領域併合手段とデータ移動手段とを作動させる。また、第１および第２の論理記憶領域に属していた論理ブロックを第３の論理記憶領域に併合する毎に第１および第２の論理記憶領域の論理ブロック数を分離させたブロック数分減算し、第３の論理記憶領域の論理ブロック数を併合されたブロック数分加算する。
【００２７】
このような、各手段の作用により、請求項１について述べたとおりの効果が発揮される。また、請求項４の構成とすれば、ブロック解放手段は、第１の論理記憶領域に未使用の論理ブロックが存在しないときには、第１の論理記憶領域のいずれかの論理ブロックに割り当てられている物理ブロックのデータを第２の論理記憶領域の未使用の論理ブロックに割り当てられている物理ブロックに移動させるから、請求項２について述べたとおりの効果が得られる。
【００２８】
さらに、請求項５記載の構成とすれば、増設検知手段によって、ディスクアレイ装置の稼働中におけるドライブ列の増設を検出することができるから、外部から特別な操作をしたり、あるいはディスク装置の増設をディスクアレイ装置に認識させるためにシステムをリセットする必要もない。
【００２９】
【具体例】
次に、本発明の具体例を説明することにより発明の実施の形態を詳しく説明する。図１は、本具体例のディスクアレイ装置６の概略構成を説明するブロック図である。この図１に示すように、ディスクアレイ装置６は、ディスクアレイ装置６全体の制御手段となるアレイコントローラ８と複数のディスク装置５０とを備えている。
【００３０】
このアレイコントローラ８は、論理記憶領域設定手段、ブロック設定手段、割当手段、領域併合手段、データ移動手段、併合制御手段、ブロック解放手段および増設検知手段として機能するＣＰＵ３０を中心にして構成されている。ＣＰＵ３０には、ＣＰＵ３０が実行するプログラムを格納しているＲＯＭ２０、ＣＰＵ３０のワークエリアとなるＲＡＭ１０、図示しないホスト装置とのデータの送受などを行うための通信手段としてのインタフェース（Ｉ／Ｆ）３５、ドライブ制御手段でありＣＰＵ３０と共同してデータ移動手段およびブロック解放手段として機能する複数のドライブ制御装置４０が接続されている。
【００３１】
各ドライブ制御装置４０には、それぞれ複数のディスク装置５０が、バスライン５５によりパラレルに接続されている。図においては、各ドライブ制御装置４０は、すでに３台のディスク装置５０（ドライブ０、１、２）が接続されていて、そこに新たに３台のディスク装置５０（ドライブ３、４、５）が増設された状態を示している。各ドライブ制御装置４０の同じドライブ番号（例えばドライブ０）同士によって１つのドライブ列が構成されており、ディスク装置５０の増設前にあってはドライブ列０、１、２の３つのドライブ列が存在し、増設後はドライブ列３、４、５が増えて６つのドライブ列が存在している。なお、ディスク装置５０は、いわゆる物理的なディスクドライブユニットとそれを制御するコントロールユニットとが一体化されたものである。
【００３２】
アレイコントローラ８のＣＰＵ３０は、ＲＯＭ２０内のアレイ管理ソフトウェア等に基づき、各ドライブ制御装置４０を介して各ドライブ列のディスク装置５０を同期させて動作させることができ、しかも複数のドライブ列を並列に動作させことができる。
【００３３】
本具体例では、ＣＰＵ３０が、システムの起動時に接続されているディスク装置５０の台数と記憶容量とを認識して、総記憶容量に応じた論理記憶領域を設定し、図２に示される論理ブロック→物理ブロック変換テーブルを作成しＲＡＭ１０に記憶させておき、このテーブルに基づいてディスク装置５０へのデータの書き込み、読み出しを行う。
【００３４】
ホスト装置から例えば論理ブロック番号０〜２のデータの読み出し要求を受けたとすると、ＣＰＵ３０は、まず論理ブロック番号０に対応するドライブ列（ドライブ列番号０）の物理ブロック番号０の読み出しを、各ドライブ制御装置４０に指示する。すると、各ドライブ制御装置４０が、この指示に応じてドライブ０のディスク装置５０を作動させて、それぞれの物理ブロック０に記録されているデータを読み出させる。読み出されたデータは、インタフェース３５を通じてホスト装置に送出されるのであるが、ＣＰＵ３０は、ドライブ列０からの読み出しと並行させて、ドライブ列１のディスク装置５０を作動させて物理ブロック０のシークや先読みを行わせ、あるいはさらにドライブ列２の物理ブロック０のシークや先読みを行わせる。このように、例えばドライブ列０から連続して読み出しすることをせずに、ドライブ列０〜２を並列に作動させることで、ホスト装置からのアクセス要求に高速で対応することができる。
【００３５】
ところが、図１に示されるようにドライブ列３〜５が増設された際に、ドライブ列０〜２に対応する論理記憶領域とドライブ列３〜５に対応する論理記憶領域が別々であると、すなわち図２に示されるようなブロック→物理ブロック変換テーブルを２つ持っていたのでは、ドライブ列０〜２におけるストライピングとドライブ列３〜５におけるストライピングが別々になってしまうから、ディスクアレイ装置６全体としての記憶容量は増加するとしても、高速性の点では不十分と言わざるを得ない。
【００３６】
そこで、本具体例のディスクアレイ装置６では、次に説明するように既設のドライブ列０〜２と増設されたドライブ列３〜５の論理記憶領域を統合している。ディスクアレイ装置６が稼働しているときには、アレイコントローラ８のＣＰＵ３０は、図３に示されるディスクアレイメイン処理を実行している。この処理においては、ＣＰＵ３０は、ホスト装置からのアクセス要求があるか否かを判断し（ステップ１００、以下ステップをＳと略記する）、アクセス要求があれば（Ｓ１００：ＹＥＳ）、その要求に応じたディスクアレイアクセス処理（書き込みまたは読み出し）を実行する（Ｓ１１０）。ホスト装置からのアクセス要求がなかった場合（Ｓ１００：ＮＯ）またはＳ１１０の実行後に、ＣＰＵ３０は、各ドライブ制御装置４０に接続されているディスク装置５０の台数を取得して、ドライブ列の増設があったか否かを判断する（Ｓ１２０）。もし、ドライブ列の増設があれば（Ｓ１２０：ＹＥＳ）、ＣＰＵ３０は領域併合処理を起動してＳ１００に戻る。なお、ＣＰＵ３０は、この領域併合処理をディスクアレイメイン処理と並列に実行することができる。また、ドライブ列の増設がなければ（Ｓ１２０：ＮＯ）、そのままＳ１００に戻る。
【００３７】
図４に示すように、ＣＰＵ３０は、領域併合処理を開始すると、まず増設されたドライブ列（図１に示される例ではドライブ列３〜５）の合計の記憶容量に対応する新たな論理記憶領域（新領域）を設定する（Ｓ２００）。この新領域の設定では、新領域の先頭論理ブロックアドレスを併合後の論理ブロックアドレスの末尾＋１とし、論理ブロック数を増設される論理ブロックの数として、論理ブロック→物理ブロック変換テーブルが作成される。なお、論理ブロックのサイズは予め設定されているから、増設されたドライブ列３〜５の記憶容量が判れば、増設される論理ブロックの数を決定できる。また、この増設される論理ブロック数と既設のドライブ列０〜２の論理ブロック数の和が併合後の論理ブロック数になる。ＣＰＵ３０は、このようにして新領域の「論理ブロック→物理ブロック変換テーブル」が作成されると、既設分のドライブ列０〜２の論理記憶領域（旧領域）の「論理ブロック→物理ブロック変換テーブル」と合わせて、図５（ａ）に示される構造の論理ブロック→物理ブロック変換テーブル」としてＲＡＭ１０に記憶させる。図５（ａ）では、論理ブロック番号０〜８が既設分（旧領域）、論理ブロック番号１８〜２６が増設分（新領域）である。
【００３８】
次に、ＣＰＵ３０は、旧領域と新領域とを併合するための論理記憶領域（併合領域）を設定する（Ｓ２１０）。設定時の併合領域の先頭論理ブロックアドレスは新領域の先頭論理ブロックアドレス（図５（ａ）の例では論理ブロック番号１８）であり、論理ブロック数は０である。この併合領域が設定された際の状態を、図６（ａ）、（イ）に示す。
【００３９】
続いて、ＣＰＵ３０は、この領域併合処理が終了するまで（併合完了まで）、ディスクアレイ装置６に新たなファイルの書き込みを禁じるための処理を行う（Ｓ２２０）。後述するように、この領域併合処理においては未使用の論理ブロック（当然ながらその論理ブロックに割り当てられている物理ブロックも未使用）の存在が不可欠である。したがって、Ｓ２２０の処理（書き込み禁止）により未使用の論理ブロックが無くなってしまうことを防止している。
【００４０】
次に、ＣＰＵ３０は、旧領域の末尾部分に有効データが存在するか否かを判断する（Ｓ２３０）。図５（ａ）に示される状態では論理ブロック番号８が末尾となっている。なお、この末尾部分は、以下の処理が進むに従って変更される。また、末尾部分という場合、必ずしも末尾の１ブロックだけを指しているわけではない。
【００４１】
旧領域の末尾部分に有効データがあれば（Ｓ２３０：ＹＥＳ）、併合領域に未使用の論理ブロックがあるか否かを判断する（Ｓ２４０）。そして、併合領域に未使用の論理ブロックがあれば（Ｓ２４０：ＹＥＳ）、旧領域の末尾部分のデータを併合領域の未使用の論理ブロックに移動する。具体的には、ＣＰＵ３０は、各ドライブ制御装置４０に指示して、旧領域の末尾部分の論理ブロックに割り当てられている物理ブロックのデータを併合領域の未使用の論理ブロックに割り当てられている物理ブロックに移動させる。
【００４２】
また、併合領域に未使用の論理ブロックがなければ（Ｓ２４０：ＮＯ）、ＣＰＵ３０は、旧領域の末尾部分のデータを新領域の先頭方向にある空きの論理ブロックへ移動する（Ｓ２６０）。具体的には、ＣＰＵ３０は、各ドライブ制御装置４０に指示して、旧領域の末尾部分の論理ブロックに割り当てられている物理ブロックのデータを新領域の先頭方向にある未使用の論理ブロックに割り当てられている物理ブロックに移動させる。ここで、先頭方向とは、論理ブロックアドレスが小さい側ということであり、空きの論理ブロックが複数あればその中で論理ブロックアドレスが最小のものという意味である。
【００４３】
なお、この領域併合処理が起動された直後（ドライブ列が増設された直後）では、併合領域は「空」（Ｓ２１０参照）で、未使用の論理ブロックもないから、Ｓ２４０で否定判断となり、Ｓ２６０が実行されることになる。Ｓ２５０またはＳ２６０の処理後またはＳ２３０で否定判断の場合には、ＣＰＵ３０は、新領域の末尾部分に有効データが存在するか否かを判断する（Ｓ２７０）。新領域の末尾部分に有効データが存在すれば（Ｓ２７０：ＹＥＳ）、ＣＰＵ３０は、その有効データを併合領域へ移動してから（Ｓ２８０）、Ｓ２９０に進む。また、新領域の末尾部分に有効データが存在しなければ（Ｓ２７０：ＮＯ）、ＣＰＵ３０は、Ｓ２８０を実行することなく、Ｓ２９０に進む。なお、この領域併合処理が起動された直後（ドライブ列が増設された直後）では、増設分のドライブ列には有効データは存在しないはずであるから、Ｓ２７０で否定判断となり、Ｓ２８０は実行されない。
【００４４】
Ｓ２３０〜Ｓ２６０の処理により旧領域の末尾部分の論理ブロック（正確にはこの論理ブロックに割り当てられている物理ブロック）には有効データは存在しないからこの論理ブロックを旧領域から切り離しても問題はない。そこで、Ｓ２９０では、ＣＰＵ３０は、旧領域の末尾部分の論理ブロックを切り離し、旧領域のブロック数を切り離したブロック数分減算する。
【００４５】
続いて、ＣＰＵ３０は、新領域の末尾部分を切り離し、新領域の論理ブロック数を切り離したブロック数分減算する（Ｓ３００）。Ｓ２７０〜Ｓ２８０の処理により新領域の末尾部分の論理ブロック（正確にはこの論理ブロックに割り当てられている物理ブロック）には有効データは存在しないからこの論理ブロックを新領域から切り離しても問題はない。
【００４６】
次にＣＰＵ３０は、Ｓ２９０およびＳ３００において切り離された新旧領域の末尾部分を併合領域の先頭側に結合して、併合領域の先頭論理ブロックアドレスを結合したブロック数分減算し、併合領域の論理ブロック数を結合したブロック数分加算して、「論理ブロック→物理ブロック変換テーブル」を更新する（Ｓ３１０）。Ｓ２９０で旧領域の論理ブロック番号８番であった論理ブロックが切り離されて、Ｓ３００では新領域の論理ブロック番号２６番であった論理ブロックが切り離されたとして、このＳ３１０においては、論理ブロックが２つ結合されるから、併合領域の先頭論理ブロックアドレスは、１８（Ｓ２１０で設定）−２＝１６、併合領域の論理ブロック数は０（Ｓ２１０で設定）＋２＝２となる。
【００４７】
次に、ＣＰＵ３０は、例えば併合領域の末尾論理ブロックアドレスに基づいて、新旧領域にあった全ての論理ブロックが併合領域に結合されたか否かを判断し（Ｓ３２０）、否定判断であればＳ２３０に回帰し、肯定判断であればこの領域併合処理を終了する。
【００４８】
Ｓ２３０〜Ｓ３１０の処理を何回か実行すると、「論理ブロック→物理ブロック変換テーブル」は図５（ｂ）に例示されるようになり、旧領域、新領域および併合領域の状態は、図６（ｂ）、（ロ）に示すようになっている。さらにＳ２３０〜Ｓ３１０の処理が繰り返されて併合完了直前となると「論理ブロック→物理ブロック変換テーブル」は図５（ｃ）に例示されるようになり、旧領域、新領域および併合領域の状態は、図６（ｃ）、（ハ）に示すようになっている。そして、併合が完了した際には、「論理ブロック→物理ブロック変換テーブル」は図５（ｄ）に例示されるようになり、図６（ｄ）、（ニ）に示すように、旧領域および新領域は消滅し（厳密には空領域となり）併合領域のみが存在している。
【００４９】
以上のように、本具体例のディスクアレイ装置６では、ドライブ列の増設があると、ＣＰＵ３０がこれを認識して領域併合処理を起動する。この領域併合処理においては、旧領域の末尾部分に有効データがなければ、そのまま末尾部分を切り離し、旧領域の末尾部分に有効データがあれば、そのデータを併合領域または新領域に移動させることによって、この末尾部分から有効データを無くしてから、その末尾部分を切り離す。同様に、新領域の末尾部分に有効データがなければ、そのまま末尾部分を切り離し、新領域の末尾部分に有効データがあれば、そのデータを併合領域に移動させることによって、この末尾部分から有効データを無くしてから、その末尾部分を切り離す。そして、切り離された新旧領域の末尾部分を併合領域の先頭側に結合する。こうした処理を繰り返すことによって、新旧２つの論理記憶領域を併合している。この併合後の論理記憶領域は、既設のドライブ列０〜２および増設されたドライブ列３〜５のすべてを共通に管理する論理記憶領域となるから、ドライブ列の増設によってストライピングの利点が損なわれることはない。また、既設のドライブ列に蓄積されていたデータを他のディスクアレイ装置に移転させるわけではないから、このディスクアレイ装置６からの読み出しは可能であり、稼働を中断させる必要はない。
（変形例）
上述の例はディスクアレイ装置６の稼働中にドライブ列の増設を認識して、領域併合処理を起動する例であるが、この処理をシステムの起動時（正確には再起動時）に実行させる構成も可能である。図７にそのための処理の一例を示す。
【００５０】
図７に示すように、ディスクアレイ装置６が起動された直後のディスクアレイ初期化処理において、ＣＰＵ３０は、ドライブ列の増設があったか否かを判断し（Ｓ４００）、ドライブ列の増設があれば（Ｓ４００：ＹＥＳ）、領域併合処理を起動する（Ｓ４１０）。
【００５１】
このような構成とすれば、例えば定期点検や何らかのトラブルでディスクアレイ装置６を停止させた際などにドライブ列を増設したときには、再起動した直後ににその増設に対処できる。また、具体例の構成（稼働中にドライブ列の増設を認識して領域併合処理を起動する構成）と、この変形例の構成とを併せ持つ構成とすれば、ドライブ列の増設に一層適切に対処できる。
【００５２】
以上、具体例に従って、本発明の実施の形態について説明したが、本発明はこのような具体例に限定されるものではなく、本発明の要旨を逸脱しない範囲でさまざまに実施できることは言うまでもない。例えば、具体例ではディスクアレイメイン処理でドライブ列の増設の有無を判断しているが、ドライブ列の増設の有無を判断して、増設があれば領域併合処理を起動するウォッチ処理を一定の周期、例えば１時間周期で実行する構成や割り込み信号が有る毎にウォッチ処理を実行する構成としてもよい。
【００５３】
【発明の効果】
以上説明したように、請求項１記載のディスクアレイにおける論理記憶領域統合方法によれば、ディスクアレイにおいてディスク装置が増設された際に、既設分に対応する論理記憶領域と増設分に対応する論理記憶領域とを併合して、統合された論理記憶領域（併合論理記憶領域）にすることができる。
【００５４】
この統合された論理記憶領域は、既設のディスク装置および増設されたディスク装置のすべてを共通に管理する論理記憶領域となるから、ディスク装置の増設によってストライピングの利点が損なわれることはない。また、既設のディスク装置に蓄積されていたデータを他のディスクアレイに移転させるわけではないから、このディスクアレイからの読み出しは可能であり、稼働を中断させる必要はない。
【００５５】
また請求項２記載の構成とすれば、既設のディスク装置が満杯あるいは満杯に近くても、請求項１記載の方法を実施できる。請求項３記載のディスクアレイ装置は、請求項１記載の方法を実行するのに好適である。
【００５６】
請求項４のディスクアレイ装置は、請求項２記載の方法を実行するのに好適である。さらに、請求項５記載の構成とすれば、増設検知手段によって、ディスクアレイ装置の稼働中におけるドライブ列の増設を検出することができるから、外部から特別な操作をしたり、あるいはディスク装置の増設をディスクアレイ装置に認識させるためにシステムをリセットする必要もない。
【図面の簡単な説明】
【図１】 具体例のディスクアレイ装置の構成を説明するブロック図である。
【図２】 具体例のディスクアレイ装置のＣＰＵが構築する論理ブロック→物理ブロック変換テーブルの一例の説明図である。
【図３】 具体例のディスクアレイ装置のＣＰＵが実行するディスクアレイメイン処理のフローチャートである。
【図４】 具体例のディスクアレイ装置のＣＰＵが実行する領域併合処理のフローチャートである。
【図５】 具体例のディスクアレイ装置における領域併合処理での論理ブロック→物理ブロック変換テーブルの変遷の説明図であり、図５（ａ）は併合開始前、図５（ｂ）は併合開始直後、図５（ｃ）は併合完了直前、図５（ｄ）は併合完了直後の論理ブロック→物理ブロック変換テーブルの説明図である。
【図６】 具体例のディスクアレイ装置における各領域の変遷の説明図であり、図６（ａ）は併合開始前、図６（ｂ）は併合開始直後、図６（ｃ）は併合完了直前、図６（ｄ）は併合完了直後における各領域の関係の説明図、図６（イ）は併合開始前、図６（ロ）は併合開始直後、図６（ハ）は併合完了直前、図６（ニ）は併合完了直後における論理ブロックアドレスの説明図である。
【図７】 変形例のディスクアレイ初期化処理のフローチャートである。
【図８】 ストライピングの説明図である。
【符号の説明】
６・・・ディスクアレイ装置、８・・・アレイコントローラ、１０・・・ＲＡＭ、２０・・・ＲＯＭ、３０・・・ＣＰＵ（論理記憶領域設定手段、ブロック設定手段、割当手段、領域併合手段、データ移動手段、併合制御手段、ブロック解放手段、増設検知手段）、３５・・・インタフェース、４０・・・ドライブ制御装置（ドライブ制御手段、データ移動手段、ブロック解放手段）、５０・・・ディスク装置、５５・・・バスライン。
【図１】
0003748631.tif 000002
【図２】
0003748631.tif 000003
【図３】
0003748631.tif 000004
【図４】
0003748631.tif 000005
【図５】
0003748631.tif 000006
【図６】
0003748631.tif 000007
【図７】
0003748631.tif 000008
【図８】
0003748631.tif 000009