(57)【要約】      （修正有）【課題】ストレージモジュールにおける容量プールの空き記憶領域の容量を効率的に管理することのできる技術を提供する。【解決手段】メモリに格納された容量プール構成管理テーブルにおいて、容量プールの空き領域を管理し、プロセッサが新たに仮想ボリュームに割り当てる記憶領域の容量が、容量プールの空き領域の容量以上である場合、若しくは、仮想ボリュームに記憶領域を割り当てた後の容量プールの空き領域の容量が所定の閾値未満の場合、容量プールの少なくともいずれか１つの仮想ボリュームのデータを、他のストレージモジュールに移動し、当該仮想ボリュームに割り当てられていたの記憶領域を空き領域として、容量プールの空き容量を増加させる。【選択図】図２２
2008186172.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ記憶媒体の少なくとも一部の記憶領域を含む容量プールを管理するストレージモジュールにおいて、
前記容量プールの前記記憶領域の空き記憶領域を管理する容量プール管理テーブルと、
前記容量プールの前記空き記憶領域の容量が、前記容量プールの空き記憶領域の容量調整を行うための条件に合致するか否かを判定する調整判定部と、
前記調整判定部により前記条件に合致すると判定された場合に、前記ストレージモジュールと異なる他のストレージモジュールの管理下にあるデータ記憶媒体の記憶領域を利用して、前記容量プールにおける空き記憶領域の容量を増加させる空き容量増加部と
を有するストレージモジュール。
【請求項２】
前記容量プールの空き記憶領域の容量調整を行うための条件は、前記容量プールの空き記憶領域の容量が枯渇することである請求項１に記載のストレージモジュール。
【請求項３】
前記容量プールの空き記憶領域の容量調整を行うための条件は、前記容量プールの空き記憶領域の容量が枯渇することが予測されることである請求項１又は請求項２に記載のストレージモジュール。
【請求項４】
前記調整判定部は、前記空き記憶領域の容量が枯渇することが予測される条件に合致するか否かを、前記容量プールの前記空き記憶領域の容量が所定の閾値以下であるか否かにより判定する請求項３に記載のストレージモジュール。
【請求項５】
前記空き容量増加部は、前記容量プールの前記記憶領域に格納されたデータを前記他のストレージモジュールの管理下にある前記データ記憶媒体の記憶領域に移動させて、前記ストレージモジュールの当該データの記憶領域を空き記憶領域とすることにより、前記容量プールの空き記憶領域の容量を増加させる請求項１乃至請求項４のいずれか一項に記載のストレージモジュール。
【請求項６】
前記容量プールの前記記憶領域の少なくとも一部を仮想ボリュームに割り当てる記憶領域割当部を更に有し、
前記空き容量増加部は、前記仮想ボリュームに割り当てられた記憶領域のデータを単位として前記他のストレージモジュールの管理下にある記憶領域に移動させる請求項５に記載のストレージモジュール。
【請求項７】
前記記憶領域割当部は、前記容量プールの前記記憶領域を複数の仮想ボリュームに割り当て可能であり、
前記空き容量増加部は、前記複数の仮想モジュールに割り当てられた記憶領域の容量に基づいて、前記他のストレージモジュールの管理下にある前記記憶領域に移動させる仮想モジュールを選択する請求項６に記載のストレージモジュール。
【請求項８】
前記空き容量増加部は、前記複数の仮想モジュールに対するアクセス頻度に基づいて、前記他のストレージモジュールの管理下にある前記記憶領域に移動させる仮想モジュールを選択する請求項６に記載のストレージモジュール。
【請求項９】
前記空き容量増加部は、前記複数の仮想モジュールに対して要求される入出力性能に基づいて、前記他のストレージモジュールの管理下にある前記記憶領域に移動させる仮想モジュールを選択する請求項６に記載のストレージモジュール。
【請求項１０】
前記容量プールと、前記容量プールの前記記憶領域が割り当てられた仮想ボリュームとを対応付けて管理するボリューム管理テーブルを更に有し、
前記空き容量増加部により、前記仮想ボリュームのデータが他のストレージモジュールの管理下にある記憶領域に移動される際に、前記ボリューム管理テーブルにおける前記仮想ボリュームと前記容量プールとの対応付けを解消するテーブル管理部を更に有する請求項６乃至請求項９のいずれか一項に記載のストレージモジュール。
【請求項１１】
前記テーブル管理部は、前記仮想ボリュームの全てのデータが前記他のストレージモジュールに移動された後に、前記仮想ボリュームと前記容量プールとの対応付けを解消する
請求項１０に記載のストレージモジュール。
【請求項１２】
所定の仮想ボリュームに対するアクセス要求を受信する受信部と、
前記アクセス要求の対象の前記仮想ボリュームが前記ストレージモジュールの前記容量プールの前記記憶領域が割り当てられた仮想ボリュームであるか否かを判定する仮想ボリューム判定部と、
前記ストレージモジュールの前記容量プールの前記記憶領域が割り当てられた仮想ボリュームでないと判定した場合には、前記アクセス要求を、前記他のストレージモジュールに転送するアクセス要求転送部と
を更に有する請求項６乃至請求項１１のいずれか一項に記載のストレージモジュール。
【請求項１３】
前記空き容量増加部は、前記他のストレージモジュールの管理下にあるデータ記憶媒体の記憶領域の空き領域の少なくとも一部を、前記容量プールの記憶領域に追加することにより、前記容量プールの空き記憶領域の容量を増加させる請求項１乃至請求項４のいずれか一項に記載のストレージモジュール。
【請求項１４】
通信経路によって接続されたデータ記憶媒体に対してアクセス可能なアクセス制御部を備え、
前記アクセス制御部は、前記他のストレージモジュールの管理下にある前記データ記憶媒体に対して、前記他のストレージモジュールの管理下にある前記データ記憶媒体に対してアクセス可能な他のアクセス制御部を介さない通信経路によって接続され、前記通信経路を介して、前記容量プールの記憶領域に追加された前記他のストレージモジュールの管理下にある前記データ記憶媒体の記憶領域にアクセスする請求項１３に記載のストレージモジュール。
【請求項１５】
前記他のアクセス制御部を介さない通信経路は、スイッチを介して前記他のストレージモジュールの管理下にある前記データ記憶媒体に接続されている請求項１４に記載のストレージモジュール。
【請求項１６】
前記データ記憶媒体に格納すべきデータを一時的に記憶するキャッシュを備え、
前記調整判定部は、前記キャッシュに格納されたデータを前記データ記憶媒体に格納する際に、判定を行う請求項１乃至請求項１５のいずれか一項に記載のストレージモジュール。
【請求項１７】
通信可能な他のストレージモジュールから容量プールの空き記憶領域の容量の値を収集する収集部と、
前記ストレージモジュールの空き記憶領域の容量の値と、前記他のストレージモジュールから収集した空き記憶領域の容量の値とを集計する集計部と、
集計結果を外部装置に送信する送信部とを更に有する請求項１乃至請求項１６のいずれか一項に記載のストレージモジュール。
【請求項１８】
複数のデータ記憶媒体の少なくとも一部の記憶領域を含む容量プールを管理するストレージモジュールによる容量プール空き容量調整方法であって、
前記容量プールの前記記憶領域の空き記憶領域を管理し、
前記容量プールの前記空き記憶領域の容量が、前記容量プールの空き記憶領域の容量調整を行うための条件に合致するか否かを判定し、
前記条件に合致すると判定された場合に、前記ストレージモジュールと異なる他のストレージモジュールの管理下にあるデータ記憶媒体の記憶領域を利用して、前記容量プールにおける空き記憶領域の容量を増加させる
容量プール空き容量調整方法。
【請求項１９】
複数のデータ記憶媒体の少なくとも一部の記憶領域を含む容量プールを管理する第１ストレージモジュールと、複数のデータ記憶媒体を管理する第２ストレージモジュールと、を備えるストレージシステムであって、
前記第１ストレージモジュールは、
前記容量プールの前記記憶領域の空き記憶領域を管理する容量プール管理テーブルと、
前記容量プールの前記空き記憶領域の容量が、前記容量プールの空き記憶領域の容量調整を行うための条件に合致するか否かを判定する判定部と、
前記判定部により、前記条件に合致すると判定された場合に、前記第２ストレージモジュールの管理下の前記データ記憶媒体の記憶領域を利用して、前記容量プールの空き記憶領域の容量を増加させる空き容量増加部と
を有するストレージシステム。
【請求項２０】
複数のデータ記憶媒体の少なくとも一部の記憶領域を含む容量プールを管理する第１ストレージモジュール及び第２ストレージモジュールを備えるストレージシステムであって、
前記第１ストレージモジュールは、
前記第２ストレージモジュールに接続される第１インタフェースと、前記第１インタフェースに接続される第１プロセッサと、前記第１プロセッサに接続される第１メモリと、データを格納する第１データ記憶媒体と、を備え、
前記第２ストレージモジュールは、
前記第１ストレージモジュールに接続される第２インタフェースと、前記第２インタフェースに接続される第２プロセッサと、前記第２プロセッサに接続される第２メモリと、データを格納する第２データ記憶媒体と、を備え、
前記第１メモリは、前記第１ストレージモジュールにおける前記容量プールにまとめられている前記第１データ記憶媒体の前記記憶領域の空き記憶領域を管理する容量プール管理テーブルを記憶し
前記第１プロセッサは、前記第１ストレージモジュールにおける容量プールの空き記憶領域の容量が枯渇するか又は所定の閾値未満であるかを判定し、空き記憶領域の容量が枯渇する場合又は所定の閾値未満であると判定した場合に、前記第１インタフェースを介して前記第１ストレージモジュールの前記容量プールの記憶領域が割り当てられている少なくとも１つの仮想ボリュームのデータを前記第２ストレージモジュールに送信させ、前記少なくとも１つの仮想ボリュームのデータが前記第２ストレージモジュールの前記第２メモリに移動された後に、前記少なくとも１つの仮想ボリュームに割り当てられていた前記第１データ記憶媒体の記憶領域を空き記憶領域として前記容量プール管理テーブルに登録し、
前記第２プロセッサは、前記第２インタフェースを介して、前記第１ストレージモジュールからデータを受信し、当該データを前記第２ストレージモジュールにおける容量プールにまとめられている前記第２データ記憶媒体の記憶領域に格納するストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデータ記憶媒体の少なくとも一部の記憶領域を含む容量プールを管理するストレージモジュール及び容量プール空き容量調整方法等に関する。
【背景技術】
【０００２】
従来、ストレージモジュールでは複数の記憶媒体を集め、複数の記憶媒体を集約管理することで論理的に１台のストレージボリュームとして扱う方法が一般的に用いられている。このようなストレージモジュールにおいては、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）と呼ばれる構成を用いて、並列アクセスによる高性能及びデータの冗長化による高可用性を実現することができるようになっている。
【０００３】
近年、扱われる情報量の増大と共に、ストレージモジュールに要求される記憶容量も増大している。この問題を解決する為の手段として、以下の２つの手法を例示することができる。
【０００４】
一つ目の手法は、動的容量割り当て機能を用いる手法である（例えば、特許文献１及び特許文献２参照）。この動的容量割り当て機能は、ストレージモジュールが持つ記憶領域を纏めた容量プールと、物理的な記憶容量を持たない仮想ボリュームとより実現される。ここで、容量プールとは、ストレージモジュールが管理する１個以上の論理ボリュームを纏め、広大な記憶領域として扱う管理単位である。また、仮想ボリュームとは、物理的な記憶容量を持たないボリュームを指す。
【０００５】
動的容量割り当て機能では、仮想ボリュームに対するデータ書き込み発生を契機として、仮想ボリュームにおける書き込みデータ格納対象箇所に、容量プールの容量空間の一部を記憶領域として割り当てる機能である。この機能を実行することで、ボリュームのデータが格納された箇所にのみストレージの記憶容量が割当てられ、それ以外の箇所には記憶容量の割り当てが不要となるため、データの格納高効率化が可能となる。
【０００６】
二つ目の手法は、ストレージグリッドを用いる手法である。ストレージグリッドは、分散した複数のストレージモジュールを恰も１台のストレージモジュールであるかのように運用や管理を行うことで、ストレージモジュール１台のみで扱うことのできるデータ量を遥かに超えたデータ量のデータを扱うことを可能にする技術である。
【０００７】
【特許文献１】特開２００５−０１１３１６号公報
【特許文献２】特開２００６−３０２２５８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、動的容量割り当て機能をストレージグリッド技術に適用し、各ストレージモジュールが管理する、容量プールや容量プールを使用する仮想ボリュームを統一管理しようとした場合、動的容量割り当て機能で扱われる容量プールの管理はストレージモジュール内で閉じている為、あるストレージモジュールの容量プールの空き記憶領域の容量（空き容量）が枯渇しても他のストレージモジュールの空き容量を融通することが困難であるという問題が生じる。
【０００９】
そこで、本発明は、上記課題に鑑みなされたものであり、その目的は、ストレージモジュールにおける容量プールの空き記憶領域の容量を効率的に管理することのできる技術を提供することにある。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、本発明の一観点に従うストレージモジュールは、複数のデータ記憶媒体の少なくとも一部の記憶領域を含む容量プールを管理するストレージモジュールにおいて、前記容量プールの前記記憶領域の空き記憶領域を管理する容量プール管理テーブルと、前記容量プールの前記空き記憶領域の容量が、前記容量プールの空き記憶領域の容量調整を行うための条件に合致するか否かを判定する調整判定部と、前記調整判定部により前記条件に合致すると判定された場合に、前記ストレージモジュールと異なる他のストレージモジュールの管理下にあるデータ記憶媒体の記憶領域を利用して、前記容量プールにおける空き記憶領域の容量を増加させる空き容量増加部とを有する。
【発明を実施するための最良の形態】
【００１１】
本発明の実施形態について、図面を参照して説明する。尚、以下に説明する実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１２】
＜第１実施形態＞
図１は、本発明の第１実施形態に係る計算機システムの構成例を示す図である。
【００１３】
計算機システムにおいて、ストレージサブシステム１１０００とホストコンピュータ１００００とはストレージネットワーク１２０００に接続される。ホストコンピュータ１００００は、ストレージサブシステム１１０００に、データを書き込むための書き込み要求や、データを読み出すための読み出し要求を送信する。ストレージサブシステム１１０００は、ストレージモジュールの一例としてのストレージモジュール１１１００、ストレージモジュール１１２００、及びストレージ管理端末１１０１０を備える。ストレージモジュール１１１００及びストレージモジュール１１２００は、各々独立して動作することができる。尚、本実施形態では、ストレージモジュール１１１００とストレージモジュール１１２００との２つのストレージモジュールがストレージサブシステム１１０００に含まれるようにしているが、ストレージモジュールの数は、３以上であっても構わない。
【００１４】
ストレージ管理端末１１０１０は、ストレージモジュール１１１００及びストレージモジュール１１２００に対する各種管理機能を行う為の端末である。ストレージ管理端末１１０１０は、プロセッサ（ＣＰＵ）１１０１１、メモリ１１０１２、管理端末接続インタフェース（ＮＩＣ）１１０１３、ユーザインタフェース（ユーザＩ／Ｆ）１１０１４を備える。
【００１５】
プロセッサ１１０１１は、ストレージ管理端末１１０１０を構成する各部を制御する。メモリ１１０１２は、プロセッサ１１０１１が処理を行う為のプログラムや、制御テーブルを格納する為の記憶領域である。管理端末接続インタフェース１１０１３は、ストレージサブシステム１１０００との通信を行う為のインタフェースであり、管理端末接続インタフェース（ＮＩＣ）１１１１６及び管理端末接続インタフェース（ＮＩＣ）１１２１６に接続されている。ユーザインタフェース１１０１４は、ストレージユーザとストレージ管理端末１１０１０の情報入出力インタフェースであり、出力用にディスプレイが接続され、入力用にマウスやキーボード等の入力機器が接続されている。
【００１６】
ストレージモジュール１１１００は、データを記憶するためのデータ記憶媒体を格納する為のストレージユニット１１１６０と、ストレージモジュール１１１００全体を制御するコントローラ１１１１０とを備える。ストレージモジュール１１２００は、データ記憶媒体を格納する為のストレージユニット１１２６０と、ストレージモジュール１１２００全体を制御するコントローラ１１２１０とを備える。
【００１７】
ストレージユニット１１１６０には、データ記憶媒体の一例としてのハードディスクドライブ（ＨＤＤ）１１１６１が複数個備えられている。ストレージユニット１１２６０には、データ記憶媒体の一例としてのハードディスクドライブ１１２６１が複数個備えられている。
【００１８】
本実施形態では、データ記憶媒体として、ハードディスクドライブ１１１６１及びハードディスクドライブ１１２６１を用いているが、ハードディスクドライブ１１１６１又はハードディスクドライブ１１２６１の少なくとも一方に代えて、フラッシュメモリ等の他のデータ記憶媒体を用いるようにしてもよい。また、ストレージユニット１１１６０やストレージユニット１１２６０の少なくとも一方に代えて、外部ストレージユニットを接続するようにし、外部ストレージユニットの提供するデータ記憶媒体を用いるようにしてもよい。
【００１９】
ストレージモジュール１１１００のコントローラ１１１１０は、プロセッサ（ＣＰＵ）１１１１１、メモリ１１１１２、ストレージネットワークインタフェース（例えば、ＦＣ  Ｉ／Ｆ）１１１１５、ストレージモジュール間接続インタフェース（ＰＣＩ  Ｉ／Ｆ）１１１１３、ＨＤＤ接続インタフェース（ＳＣＳＩ  Ｉ／Ｆ）１１１１４、及び管理端末接続インタフェース（ＮＩＣ）１１１１６を備えている。
【００２０】
ストレージモジュール１１２００のコントローラ１１２１０は、プロセッサ（ＣＰＵ）１１２１１、メモリ１１２１２、ストレージネットワークインタフェース（例えば、ＦＣ  Ｉ／Ｆ）１１２１５、ストレージモジュール間接続インタフェース（例えば、ＰＣＩ  Ｉ／Ｆ）１１２１３、ＨＤＤ接続インタフェース（例えば、ＳＣＳＩ  Ｉ／Ｃ）１１２１４、及び管理端末接続インタフェース（例えば、ＮＩＣ）１１２１６を備えている。
【００２１】
プロセッサ１１１１１は、ストレージモジュール１１１００を構成する各部を制御する。プロセッサ１１２１１は、ストレージモジュール１１２００を構成する各部を制御する。ここで、調整判定部、空き容量増加部、記憶領域割当部、テーブル管理部、受信部、仮想ボリューム判定部、アクセス要求転送部、アクセス制御部、収集部、及び集計部は、主にプロセッサ１１１１１又はプロセッサ１１２１１が各種プログラムを実行することにより構成される。
【００２２】
ストレージモジュール間接続インタフェース１１１１３及びストレージモジュール間接続インタフェース１１２１３は、ストレージモジュール１１１００とストレージモジュール１１２００との間でデータを通信する為のインタフェースである。ストレージモジュール間接続インタフェース１１１１３及びストレージモジュール間接続インタフェース１１２１３は、互いにケーブルで接続されている。尚、ストレージモジュール間接続インタフェース１１１１３、ストレージモジュール間接続インタフェース１１２１３、及びケーブルにより形成される通信経路は、通信帯域が広いという特性を持つ。
【００２３】
ストレージネットワークインタフェース１１１１５及びストレージネットワークインタフェース１１２１５はストレージネットワーク１２０００と接続する為のインタフェースである。本実施形態では、ストレージネットワークインタフェース１１１１５のみがストレージネットワーク１２０００に接続されているが、ストレージネットワークインタフェース１１２１５もストレージネットワーク１２０００に接続されていても構わない。
【００２４】
ＨＤＤ接続インタフェース１１１１４は、ハードディスクドライブ１１１６１と接続する為のインタフェースである。また、ＨＤＤ接続インタフェース１１２１４は、ハードディスクドライブ１１２６１と接続する為のインタフェースである。
【００２５】
管理端末接続インタフェース１１１１６及び管理端末接続インタフェース１１２１６は、ストレージ管理端末１１０１０と接続する為のインタフェースである。本実施構成では、管理端末接続インタフェース１１１１６と管理端末接続インタフェース１１２１６とは互いに接続されているが、両者間は接続されていなくてもよい。
【００２６】
メモリ１１１１２は、プロセッサ１１１１１が処理を行う為のプログラムや、制御テーブル、ハードディスクドライブ１１１６１より読み出したデータや書き込むべきデータをキャッシングする為の記憶領域である。メモリ１１２１２は、プロセッサ１１２１１が処理を行う為のプログラムや、制御テーブル、ハードディスクドライブ１１２６１より読み出したデータや書き込むべきデータをキャッシングする為の記憶領域である。
【００２７】
図２は、メモリ１１１１２内の構造を示す図である。
【００２８】
メモリ１１１１２には、プログラムとして、コマンド処理プログラム１１１１２−００、メッセージ受信処理プログラム１１１１２−０１、容量プール操作プログラム１１１１２−０２、ボリューム操作プログラム１１１１２−０３、Ｉ／Ｏ処理プログラム１１１１２−０４、及びＨＤＤ操作プログラム１１１１２−０５が格納されている。また、メモリ１１１１２には、テーブルとして、ＲＡＩＤグループ管理テーブル１１１１２−１１、ボリューム管理テーブル１１１１２−１２、仮想ボリューム割り当て領域管理テーブル１１１１２−１３、容量プール管理テーブルの一例としての容量プール構成管理テーブル１１１１２−１４、及びキャッシュ領域管理テーブル１１１１２−１５が格納されている。メモリ１１１１２内の上記したプログラム及びテーブルを格納した領域以外の領域は、キャッシュ領域１１１１２−２０として使用される。
【００２９】
図３は、メモリ１１２１２内の構造を示す図である。
【００３０】
メモリ１１２１２には、プログラムとして、コマンド処理プログラム１１１１２−００、メッセージ受信処理プログラム１１１１２−０１、容量プール操作プログラム１１１１２−０２、ボリューム操作プログラム１１１１２−０３、Ｉ／Ｏ処理プログラム１１１１２−０４、及びＨＤＤ操作プログラム１１１１２−０５が格納されている。また、メモリ１１２１２には、テーブルとして、ＲＡＩＤグループ管理テーブル１１１１２−１１、ボリューム管理テーブル１１１１２−１２、仮想ボリューム割り当て領域管理テーブル１１１１２−１３、容量プール管理テーブルの一例としての容量プール構成管理テーブル１１１１２−１４、及びキャッシュ領域管理テーブル１１１１２−１５が格納されている。メモリ１１２１２内の上記したプログラム及びテーブルを格納した領域以外の領域は、キャッシュ領域１１１１２−２０として使用される。ここで、メモリ１１２１２中の各プログラムは、メモリ１１１１２中の各プログラムと同一の処理を実行するプログラムであり、メモリ１１２１２中の各テーブルは、メモリ１１１１２中の各テーブルと同一の構成となっている。但し、各テーブル内に格納されたパラメータは、メモリ１１２１２とメモリ１１１１２間で異なっている。
【００３１】
図４は、ＲＡＩＤグループ管理テーブル１１１１２−１１の構造図である。
【００３２】
ＲＡＩＤグループ管理テーブル１１１１２−１１は、ＲＡＩＤグループを構成するＨＤＤに関する情報を格納する。ＲＡＩＤグループ管理テーブル１１１１２−１１は、ＲＡＩＤグループ番号１１１１２−１１−０１、ＲＡＩＤレベル１１１１２−１１−０２、ＨＤＤ番号リスト１１１１２−１１−０３、ＨＤＤサイズ１１１１２−１１−０４のメンバを含む。
【００３３】
ＲＡＩＤグループ番号１１１１２−１１−０１には、任意のＨＤＤを纏めたグループ、例えば、ＲＡＩＤ構成とされているグループ（ＲＡＩＤグループ）を一意に特定する為の識別情報が格納される。尚、ＲＡＩＤグループに限らず、例えば、ＪＢＯＤ（Ｊｕｓｔ  ａ  Ｂｕｎｃｈ  Ｏｆ  Ｄｉｓｋｓ）構成のグループや、単一のＨＤＤ構成であるグループの識別情報を格納するようにしても良い。ＲＡＩＤレベル１１１１２−１１−０２には、ＲＡＩＤ構成を作成した場合のＲＡＩＤレベルが格納される。ＲＡＩＤレベルとは、ＲＡＩＤ構成における冗長化方法を表現する番号であり、レベル０〜６を示す“０”〜“６”、レベル１及びレベル０の組み合わせを示す”１０”のいずれかの値となる。ＨＤＤ番号リスト１１１１２−１１−０３には、対象のＲＡＩＤグループに属するハードディスクドライブ１１１６１やハードディスクドライブ１１２６１を特定する為の識別子が格納される。尚、ＲＡＩＤグループ管理テーブル１１１１２−１１がメモリ１１１１２に格納されている場合は、ストレージモジュール１１１００中のハードディスクドライブ１１１６１のいずれかに対応する１以上の識別子のみが格納可能であり、メモリ１１２１２に格納されている場合には、ストレージモジュール１１２００中のハードディスクドライブ１１２６１のいずれかに対応する１以上の識別子のみが格納可能である。ＨＤＤサイズ１１１１２−１１−０４には、対象のＲＡＩＤグループの総容量が格納される。尚、当該総容量には、冗長化によって利用不可能な領域の容量や、当該ＲＡＩＤグループに格納した各種制御テーブルの容量は含まれない。
【００３４】
図５は、ボリューム管理テーブル１１１１２−１２の構造図である。
【００３５】
ボリューム管理テーブル１１１１２−１２は、ストレージユーザに提供するボリュームに関する情報を格納する。ボリューム管理テーブル１１１１２−１２は、ボリューム番号（ＬＵＮ）１１１１２−１２−０１、容量プール番号１１１１２−１２−０２、ＲＡＩＤグループ番号１１１１２−１２−０３、データ領域１１１１２−１２−０４、Ｉ／Ｏ停止判別情報１１１１２−１２−０５のメンバを含む。
【００３６】
ボリューム番号１１１１２−１２−０１には、ストレージユーザに対して提供されるボリューム番号が格納される。ストレージユーザは当該ボリューム番号を基にデータを格納するボリュームを識別することができる。容量プール番号１１１１２−１２−０２には、対象のボリュームが仮想ボリュームである場合に、仮想ボリュームに対応付けられている容量プールの識別子が格納される。尚、対象のボリュームが仮想ボリュームでない、すなわち、論理ボリュームである場合には、論理ボリュームである旨（例えば、“Ｎ／Ａ”）が格納される。ＲＡＩＤグループ番号１１１１２−１２−０３には、対象のボリュームが論理ボリュームである場合に、データアクセス先として対応付けられたＲＡＩＤグループの識別子が格納される。尚、対象のボリュームが論理ボリュームでない、すなわち、仮想ボリュームである場合には、仮想ボリュームである旨（例えば、“Ｎ／Ａ”）が格納される。データ領域１１１１２−１２−０４には、対象ボリュームが論理ボリュームである場合には、ＲＡＩＤグループ番号１１１１２−１２−０３にて対応付けられたＲＡＩＤグループ内の、当該論理ボリュームが使用する範囲が格納される。これによって、１個のＲＡＩＤグループを、複数の論理ボリュームとして分割してユーザに提供することができるようになる。尚、対象のボリュームが論理ボリュームでない、すなわち、仮想ボリュームである場合には、仮想ボリュームである旨（例えば、“Ｎ／Ａ”）が格納される。Ｉ／Ｏ停止判別情報１１１１２−１２−０５には、対象のボリュームに対するＩ／Ｏを一時停止するか否かを示す情報として“ＯＮ”、“ＯＦＦ”の２値のいずれかが格納される。Ｉ／Ｏ停止判別情報１１１１２−１２−０５に“ＯＦＦ”が格納されている場合には、対象のボリュームに対するＩ／Ｏ発生時に、そのままＩ／Ｏを行うことが可能であるが、“ＯＮ”が格納されている場合には、Ｉ／Ｏ停止判別情報１１１１２−１２−０５が“ＯＦＦ”になるのを待つこととなる。
【００３７】
図６は、仮想ボリューム割り当て領域管理テーブル１１１１２−１３の構造図である。
【００３８】
仮想ボリューム割り当て領域管理テーブル１１１１２−１３は、対象の仮想ボリュームに割当てられたＨＤＤの記憶領域の対応関係を格納する。仮想ボリューム割り当て領域管理テーブル１１１１２−１３は、記憶領域割り当て元番号（先頭ＬＢＡ）１１１１２−１３−０１、記憶領域割り当て先ＲＡＩＤグループ番号１１１１２−１３−０２、記憶領域割り当て先番号（割当先先頭ＬＢＡ）１１１１２−１３−０３、更新有無情報１１１１２−１３−０４のメンバを含む。
【００３９】
記憶領域割り当て元番号１１１１２−１３−０１には、仮想ボリューム上のデータ位置を示す識別情報が格納される。記憶領域割り当て先ＲＡＩＤグループ番号１１１１２−１３−０２には、仮想ボリュームの記憶領域割り当て元番号１１１１２−１３−０１に格納された識別情報により示される記憶領域に割当てられた、記憶領域が格納されたＲＡＩＤグループを識別する情報が格納される。尚、対象の領域に記憶領域が割当てられていない場合には、未割り当てである旨を示す情報（例えば、“Ｎ／Ａ”）が格納される。記憶領域割り当て先番号１１１１２−１３−０３には、仮想ボリュームの記憶領域割り当て元番号１１１１２−１３−０１で示される領域に割当てられた、記憶領域を識別する情報が格納される。尚、対象の領域に記憶領域が割当てられていない場合には、未割り当てである旨を示す情報（例えば、“Ｎ／Ａ”）を格納する。更新有無情報１１１１２−１３−０４には、仮想ボリュームの記憶領域に対する更新有無の情報が格納される。
【００４０】
図７は、容量プール構成管理テーブル１１１１２−１４の構造図である。
【００４１】
容量プール構成管理テーブル１１１１２−１４は、仮想ボリュームに割り当てる記憶領域を管理する容量プールにおける空き領域の管理を行う為のテーブルである。容量プール構成管理テーブル１１１１２−１４は、ＲＡＩＤグループ番号１１１１２−１４−０１、容量プール番号１１１１２−１４−０２、空き領域情報１１１１２−１４−０３、容量プール番号１１１１２−１４−０４、容量プール作成有無１１１１２−１４−０５、容量プール空き容量１１１１２−１４−０６のメンバを含む。
【００４２】
ＲＡＩＤグループ番号１１１１２−１４−０１には、容量プールに属するＲＡＩＤグループを識別する為の番号が格納される。容量プール番号１１１１２−１４−０２には、ストレージサブシステム１１０００にて管理可能な容量プールが複数存在する場合に、対象のＲＡＩＤグループが属する容量プールを識別する情報が格納される。空き領域情報１１１１２−１４−０３には、対象のＲＡＩＤグループが管理する記憶領域の中で空き領域（未使用領域）、すなわち、仮想ボリュームに割当てられていない記憶領域を特定する為の情報が格納される。容量プール番号１１１１２−１４−０４には、容量プールを識別する為の番号が格納される。当該値は容量プール番号１１１１２−１４−０２に格納される値と共通のものである。容量プール作成有無１１１１２−１４−０５には、対象の容量プールの作成有無情報が格納され、有無情報が“有”ならば容量プールが作成済みであることを示し、“無”ならば未作成であることを示す。容量プール空き容量１１１１２−１４−０６には、対象の容量プールの空き領域の容量（空き容量）が格納され、当該値は対象の容量プールに関連付けられた空き領域情報１１１１２−１４−０３の示す空き領域の容量の総和と等しい。
【００４３】
図８は、プール操作プログラム１１１１２−０２を構成する処理の構成図である。
【００４４】
プール操作プログラム１１１１２−０２は、ストレージモジュール１１１００やストレージモジュール１１２００における容量プールを管理制御する為のプログラムである。プール操作プログラム１１１１２−０２は、容量プール作成制御処理１１１１２−０２−０１、容量プール作成処理１１１１２−０２−０２、容量プール容量追加処理１１１１２−０２−０３、容量プール状態取得処理１１１１２−０２−０６、容量プール状態収集制御１１１１２−０２−０７を含む。
【００４５】
容量プール作成制御処理１１１１２−０２−０１は、他のストレージモジュール（例えば、容量プール作成制御処理１１１１２−０２−０１がストレージモジュール１１１００で動作しているならば、ストレージモジュール１１２００）に任意のＩＤを持つ容量プール作成の要求を通知し、尚且つ自ストレージモジュールにも同一のＩＤを持つ容量プール作成の要求を通知して、ストレージモジュール１１１００及びストレージモジュール１１２００に同一ＩＤを持つ容量プールの作成を制御する処理である。容量プール作成処理１１１１２−０２−０２は、自ストレージモジュールの容量プール構成管理テーブル１１１１２−１４に、指定された容量プールの情報を登録する処理である。容量プール容量追加処理１１１１２−０２−０３は、自ストレージモジュールの容量プール構成管理テーブル１１１１２−１４に、指定されたＲＡＩＤグループを指定された容量プールのメンバとして登録する処理である。容量プール状態取得処理１１１１２−０２−０６は、自ストレージモジュールの容量プールを構成するＲＡＩＤグループや、空き容量といった情報を、ＲＡＩＤグループ番号１１１１２−１４−０１や容量プール空き容量１１１１２−１４−０６より取得する処理である。容量プール状態収集制御１１１１２−０２−０７は、ストレージサブシステム１１０００を構成する全モジュールより、各ストレージモジュールで実行されたプール状態取得処理１１１１２−０２−０６の結果を集約し、ホストコンピュータ１００００若しくはストレージ管理端末１１０１０へ転送する処理である。
【００４６】
図９は、ボリューム操作プログラム１１１１２−０３を構成する処理の構成図である。
【００４７】
ボリューム操作プログラム１１１１２−０３は、ストレージサブシステム１１０００がホストコンピュータ１００００に提供する論理ボリュームや仮想ボリュームに対する処理を制御する為のプログラムである。ボリューム操作プログラム１１１１２−０３は、論理ボリューム作成処理１１１１２−０３−０１、仮想ボリューム作成処理１１１１２−０３−０２、仮想ボリューム移動制御１１１１２−０３−０３、仮想ボリューム削除処理１１１１２−０３−０４、記憶領域割り当て処理１１１１２−０３−０５、記憶領域解放処理１１１１２−０３−０６、データ複製処理１１１１２−０３−０７を含む。
【００４８】
論理ボリューム作成処理１１１１２−０３−０１は、自ストレージモジュールのボリューム管理テーブル１１１１２−１２において、作成する論理ボリュームの情報として、ボリューム番号、使用するＲＡＩＤグループの番号、対象のＲＡＩＤグループ内の論理ボリュームに割り当てる範囲について、それぞれボリューム番号１１１１２−１２−０１、ＲＡＩＤグループ番号１１１１２−１２−０３、データ領域１１１１２−１２−０４に格納する処理である。
【００４９】
仮想ボリューム作成処理１１１１２−０３−０２は、自ストレージモジュールのボリューム管理テーブル１１１１２−１２において、作成する仮想ボリュームの情報として、ボリューム番号、使用する容量プールの番号について、それぞれボリューム番号１１１１２−１２−０１、容量プール番号１１１１２−１２−０２に格納する処理である。尚、本処理の実行を行うストレージモジュールとしては、作成済みの仮想ボリュームの容量と容量プールの空き容量との比を取り、該比率が小さいストレージモジュールを選択するのが望ましい。
【００５０】
仮想ボリューム移動制御１１１１２−０３−０３は、自ストレージモジュールより他ストレージモジュールへ、指定されたボリュームに関する管理の移動を制御する処理である。仮想ボリューム削除処理１１１１２−０３−０４は、自ストレージモジュールのボリューム管理テーブル１１１１２−１２より、削除対象の仮想ボリュームの情報であるボリューム番号１１１１２−１２−０１、プール番号１１１１２−１２−０２を削除する処理である。記憶領域割り当て処理１１１１２−０３−０５は、確保した容量プールの空き領域を、仮想ボリュームの任意の領域に割当てるため、割当対象の仮想ボリューム上のアドレス、割り当てる記憶領域のＲＡＩＤグループ番号、割り当てる記憶領域のＲＡＩＤグループ上のアドレスを、それぞれ、仮想ボリューム割り当て領域管理テーブル１１１１２−１３の記憶領域割り当て元番号１１１１２−１３−０１、記憶領域割り当て先ＲＡＩＤグループ番号１１１１２−１３−０２、記憶領域割り当て先番号１１１１２−１３−０３に格納する処理である。
【００５１】
記憶領域解放処理１１１１２−０３−０６は、記憶領域割り当て処理１１１１２−０３−０５が割り当てた記憶領域を解放する為、仮想ボリューム割り当て領域管理テーブル１１１１２−１３の記憶領域割り当て元番号１１１１２−１３−０１、記憶領域割り当て先ＲＡＩＤグループ番号１１１１２−１３−０２、及び記憶領域割り当て先番号１１１１２−１３−０３に格納された情報を消去する処理である。
【００５２】
図１０は、Ｉ／Ｏ処理プログラム１１１１２−０４を構成する処理の構成図である。
【００５３】
Ｉ／Ｏ処理プログラム１１１１２−０４は、任意のボリュームに対してホストコンピュータ１００００より受けたＩ／Ｏ処理及び、Ｉ／Ｏ処理に関する制御を行うプログラムである。Ｉ／Ｏ処理プログラム１１１１２−０４は、Ｉ／Ｏ停止処理１１１１２−０４−０１、Ｉ／Ｏ開始処理１１１１２−０４−０２、書き込みＩ／Ｏ処理１１１１２−０４−０３、読み出しＩ／Ｏ処理１１１１２−０４−０４を含む。
【００５４】
Ｉ／Ｏ停止処理１１１１２−０４−０１は、対象のボリュームに対するＩ／Ｏを停止する為に、ボリューム管理テーブル１１１１２−１２のＩ／Ｏ停止判別情報１１１１２−１２−０５を“ＯＮ”に更新する処理である。Ｉ／Ｏ開始処理１１１１２−０４−０２は、対象のボリュームに対するＩ／Ｏを開始する為に、ボリューム管理テーブル１１１１２−１２のＩ／Ｏ停止判別情報１１１１２−１２−０５を“ＯＦＦ”に更新する処理である。書き込みＩ／Ｏ処理１１１１２−０４−０３は、ホストコンピュータ１００００により発行された書き込み要求に伴い、ホストコンピュータ１００００からキャッシュ領域１１１１２−２０にデータを転送する処理である。読み出しＩ／Ｏ処理１１１１２−０４−０４は、ホストコンピュータ１００００により要求された読み出し要求に伴い、キャッシュ領域１１１１２−２０からホストコンピュータ１００００へデータを転送する処理である。
【００５５】
図１１は、コマンド処理プログラム１１１１２−００の処理手順を示すフローチャートである。コマンド処理プログラム１１１１２−００は、ホストコンピュータ１００００、他ストレージモジュール、若しくは自ストレージモジュールから発行された各種操作要求のコマンドに対する処理を行う。ここで、ストレージモジュール１１１００のメモリ１１１１２に格納されたコマンド処理プログラム１１１１２−００の処理について説明する。なお、ストレージモジュール１１２００のメモリ１１２１２に格納されたコマンド処理プログラム１１１１２−００の処理も同様である。
【００５６】
コマンド処理プログラム１１１１２−００は、例えば、所定の時間毎にプロセッサ１１１１１によって実行が開始される。まず、ストレージモジュール１１１００において、プロセッサ１１１１１がコマンド処理プログラム１１１１２−００を実行開始すると、ステップ１１１１２−００−０１に進む。
【００５７】
ステップ１１１１２−００−０１では、プロセッサ１１１１１がパワースイッチオフ等に伴うプログラム終了要求がないかを検知する。終了要求があった場合、処理完了となる。一方、終了要求がない場合、ステップ１１１１２−００−０２へ進む。
【００５８】
ステップ１１１１２−００−０２では、プロセッサ１１１１１が処理要求のコマンドの通知（受信）がないかを調査する。通知がなければステップ１１１１２−００−０１へ戻る。通知があれば、ステップ１１１１２−００−０３へ進む。
【００５９】
ステップ１１１１２−００−０３では、プロセッサ１１１１１が対象のコマンド処理対象が自ストレージモジュールで行うべきか他ストレージモジュールで行うべきか判断する。当該判断処理は、自ストレージモジュールがコマンド処理対象のストレージモジュールであるか、若しくはボリュームを指定したコマンドである場合には、対象のボリュームやＲＡＩＤグループが自ストレージモジュール１１１００にて管理されているかによって判断する。他ストレージモジュールで行う処理であると判断したならばステップ１１１１２−００−０４へ進み、自ストレージモジュール１１１００で行う処理であると判断したならば、ステップ１１１１２−００−０５へ進む。
【００６０】
ステップ１１１１２−００−０４では、プロセッサ１１１１１が、対象のコマンドを、実行すべきストレージモジュールに対して転送する。尚、転送データはストレージモジュール間接続インタフェース１１１１３とストレージモジュール間接続インタフェース１１２１３を結ぶケーブルを伝い、他ストレージモジュールへ転送される。該転送処理の完了の後、ステップ１１１１２−００−０１へ戻る。
【００６１】
ステップ１１１１２−００−０５では、プロセッサ１１１１１が要求されたコマンドが“容量プール作成”であるかを判断する。“容量プール作成”であるならば、ステップ１１１１２−００−０６へ進み、違うならばステップ１１１１２−００−０７へ進む。ステップ１１１１２−００−０６では、プロセッサ１１１１１が、図８及び図１４に示す容量プール作成制御処理１１１１２−０２−０１を実行する。容量プール作成制御処理１１１１２−０２−０１の完了後、ステップ１１１１２−００−０１へ戻る。
【００６２】
ステップ１１１１２−００−０７では、プロセッサ１１１１１が、要求されたコマンドが“容量プール容量追加”であるか判断する。“容量プール容量追加”であるならばステップ１１１１２−００−０８へ進み、違うならばステップ１１１１２−００−０９へ進む。ステップ１１１１２−００−０８では、プロセッサ１１１１１が、図８及び図１６に示す容量プール容量追加処理１１１１２−０２−０３を実行する。容量プール容量追加処理１１１１２−０２−０３の完了後、ステップ１１１１２−００−０１へ戻る。
【００６３】
ステップ１１１１２−００−０９では、プロセッサ１１１１１が、要求されたコマンドが“容量プール状態取得”であるか判断する。“容量プール状態取得”であるならばステップ１１１１２−００−１０へ進み、違うならばステップ１１１１２−００−１１へ進む。ステップ１１１１２−００−１０では、図８及び図１７に示す容量プール状態取得処理１１１１２−０２−０６を実行する。容量プール状態取得処理１１１１２−０２−０６の完了後、ステップ１１１１２−００−０１へ戻る。
【００６４】
ステップ１１１１２−００−１１では、プロセッサ１１１１１が、要求されたコマンドが“仮想ボリューム作成”であるか判断する。“仮想ボリューム作成”であるならばステップ１１１１２−００−１２へ進み、違うならばステップ１１１１２−００−１３へ進む。ステップ１１１１２−００−１２では、図９及び図１９に示す仮想ボリューム作成処理１１１１２−０３−０２を実行する。仮想ボリューム作成処理１１１１２−０３−０２の完了後、ステップ１１１１２−００−０１へ戻る。
【００６５】
ステップ１１１１２−００−１３では、プロセッサ１１１１１が、要求されたコマンドが“仮想ボリューム移動”であるか判断する。“仮想ボリューム移動”であるならばステップ１１１１２−００−１４へ進み、違うならば図１２のステップ１１１１２−００−１５へ進む。ステップ１１１１２−００−１４では、図９及び図２０に示す仮想ボリューム移動制御１１１１２−０３−０３を実行する。仮想ボリューム移動制御１１１１２−０３−０３の完了後、ステップ１１１１２−００−０１へ戻る。
【００６６】
図１２は、コマンド処理プログラム１１１１２−００の処理手順についての、図１１の続きのフローチャートである。
【００６７】
ステップ１１１１２−００−１５では、プロセッサ１１１１１が、要求されたコマンドが“書き込みＩ／Ｏ”であるか判断する。“書き込みＩ／Ｏ”であるならばステップ１１１１２−００−１６へ進み、違うならばステップ１１１１２−００−１７へ進む。ステップ１１１１２−００−１６では、図１０及び図２７に示す書き込みＩ／Ｏ処理１１１１２−０４−０３を実行する。Ｉ／Ｏ処理１１１１２−０４−０３の完了後、図１１のステップ１１１１２−００−０１へ戻る。
【００６８】
ステップ１１１１２−００−１７では、プロセッサ１１１１１が、要求されたコマンドが“読み出しＩ／Ｏ”であるか判断する。“読み出しＩ／Ｏ”であったならばステップ１１１１２−００−１８へ進み、違うならばエラーとする。ステップ１１１１２−００−１８では、プロセッサ１１１１１が、図１０及び図２８に示す読み出しＩ／Ｏ処理１１１１２−０４−０４を実行する。読み出しＩ／Ｏ処理１１１１２−０４−０４の完了後、図１１のステップ１１１１２−００−０１へ戻る。
【００６９】
図１３は、メッセージ受信処理プログラム１１１１２−０１の処理手順を示すフローチャートである。メッセージ受信処理プログラム１１１１２−０１は、複数のモジュール間で処理を連携して実行する為に、発行されたメッセージを処理する。
【００７０】
メッセージ受信処理プログラム１１１１２−０１は、例えば、所定の時間毎にプロセッサ１１１１１によって実行が開始される。まず、ストレージモジュール１１１００において、プロセッサ１１１１１がメッセージ受信処理プログラム１１１１２−０１を実行開始すると、開始後、ステップ１１１１２−０１−０１に進む。ステップ１１１１２−０１−０１では、プロセッサ１１１１１がパワースイッチオフ等に伴うプログラム終了要求がないかを判断する。終了要求があった場合、プロセッサ１１１１１が処理完了とする。終了要求がなければステップ１１１１２−０１−０２へ進む。
【００７１】
ステップ１１１１２−０１−０２では、プロセッサ１１１１１がメッセージの受信がないかを調査する。受信がなければステップ１１１１２−０１−０１へ戻る。受信があればステップ１１１１２−０１−０３へ進む。
【００７２】
ステップ１１１１２−０１−０３では、プロセッサ１１１１１が受信したメッセージが“容量プール作成要求”であるか判断する。“容量プール作成要求”であるならばステップ１１１１２−０１−０４へ進み、違うならばステップ１１１１２−０１−０７へ進む。ステップ１１１１２−０１−０４では、プロセッサ１１１１１が図８及び図１５に示す容量プール作成処理１１１１２−０２−０２を実行する。容量プール作成処理１１１１２−０２−０２の完了後、ステップ１１１１２−０１−０１へ戻る。
【００７３】
ステップ１１１１２−０１−０７では、プロセッサ１１１１１が、受信したメッセージが“容量プールデータ複製要求”であるか判断する。“容量プールデータ複製要求”であるならばステップ１１１１２−０１−０８へ進み、違うならばステップ１１１１２−０１−０９へ進む。ステップ１１１１２−０１−０８では、プロセッサ１１１１１が図９及び図２４に示すデータ複製処理１１１１２−０３−０７を実行する。データ複製処理１１１１２−０３−０７の完了後、ステップ１１１１２−０１−０１へ戻る。
【００７４】
ステップ１１１１２−０１−０９では、プロセッサ１１１１１が、受信したメッセージが“仮想ボリューム作成要求”であるか判断する。“仮想ボリューム作成要求”であるならばステップ１１１１２−０１−１０へ進み、違うならばステップ１１１１２−０１−１１へ進む。ステップ１１１１２−０１−１０では、プロセッサ１１１１１が仮想ボリューム作成要求処理を実行する。仮想ボリューム作成要求処理は、図９及び図１９に示す仮想ボリューム作成処理１１１１２−０３−０２において、更に、メッセージの送信元に対して処理の終了を通知する返信を行うステップを最後に実行するようにした処理である。仮想ボリューム作成要求処理の完了後、ステップ１１１１２−０１−０１へ戻る。
【００７５】
ステップ１１１１２−０１−１１では、プロセッサ１１１１１が、受信したメッセージが“ボリューム削除要求”であるか判断する。“ボリューム削除要求”であるならばステップ１１１１２−０１−１２へ進み、違うならばステップ１１１１２−０１−１３へ進む。ステップ１１１１２−０１−１２では、プロセッサ１１１１１が図９及び図２１に示すボリューム削除処理１１１１２−０３−０４を実行する。ボリューム削除処理１１１１２−０３−０４の完了後、ステップ１１１１２−０１−０１へ戻る。
【００７６】
ステップ１１１１２−０１−１３では、プロセッサ１１１１１が、受信したメッセージが“Ｉ／Ｏ停止要求”であるか判断する。“Ｉ／Ｏ停止要求”であるならばステップ１１１１２−０１−１４へ進み、違うならばステップ１１１１２−０１−１５へ進む。ステップ１１１１２−０１−１４では、プロセッサ１１１１１が図１０及び図２５に示すＩ／Ｏ停止処理１１１１２−０４−０１を実行する。Ｉ／Ｏ停止処理１１１１２−０４−０１の完了後、ステップ１１１１２−０１−０１へ戻る。
【００７７】
ステップ１１１１２−０１−１５では、プロセッサ１１１１１が、受信したメッセージが“Ｉ／Ｏ開始要求”であるか判断する。“Ｉ／Ｏ開始要求”であるならばステップ１１１１２−０１−１６へ進み、違うならばエラーとする。ステップ１１１１２−０１−１６では、プロセッサ１１１１１が図１０及び図２６に示すＩ／Ｏ開始処理１１１１２−０４−０２を実行する。Ｉ／Ｏ開始処理１１１１２−０４−０２の完了後、ステップ１１１１２−０１−０１へ戻る。
【００７８】
図１４は、容量プール作成制御処理１１１１２−０２−０１のフローチャートである。
【００７９】
まず、ストレージモジュール１１１００において、プロセッサ１１１１１がプール作成制御処理１１１１２−０２−０１を実行開始すると、開始後、ステップ１１１１２−０２−０１−０１に進む。ステップ１１１１２−０２−０１−０１では、プロセッサ１１１１１が作成対象の容量プールの容量プール構成管理テーブル１１１１２−１４への登録有無を調査することにより、作成対象の容量プールが既に作成済みであるかをチェックする。チェックの結果、作成済みであればエラーとする。一方、未作成であればステップ１１１１２−０２−０１−０２へ進む。
【００８０】
ステップ１１１１２−０２−０１−０２では、プロセッサ１１１１１が、ストレージサブシステム１１０００内の全ストレージモジュールに“容量プール作成要求”のメッセージを送信する。メッセージを送信した後、ステップ１１１１２−０２−０１−０３へ進む。
【００８１】
ステップ１１１１２−０２−０１−０３では、プロセッサ１１１１１が、全モジュールからの“容量プール作成完了“のメッセージ返信を待つ。全モジュールからの返信を検知した後、プロセッサ１１１１１は容量プール作成制御処理１１１１２−０２−０１を終了する。
【００８２】
図１５は、容量プール作成処理１１１１２−０２−０２のフローチャートである。
【００８３】
まず、ストレージモジュール１１１００において、プロセッサ１１１１１が容量プール作成処理１１１１２−０２−０２を実行開始すると、開始後、ステップ１１１１２−０２−０２−０１に進む。ステップ１１１１２−０２−０２−０１では、プロセッサ１１１１１が、容量プール構成管理テーブル１１１１２−１４から容量プール番号１１１１２−１４−０４が指定された容量プール番号に対応するレコードを検出し、当該レコードの容量プール作成有無１１１２−１４−０５に“有”を登録し、容量プール空き容量１１１１２−１４−０６に空き容量無を表す“０”を登録し、ステップ１１１１２−０２−０２−０２に進む。
【００８４】
ステップ１１１１２−０２−０２−０２では、プロセッサ１１１１１が、メッセージ送信元のモジュールに対し、“容量プール作成完了“のメッセージの返信を行い、その後、容量プール作成処理１１１１２−０２−０２を終了する。
【００８５】
図１６は、容量プール容量追加処理１１１１２−０２−０３のフローチャートである。
【００８６】
まず、ストレージモジュール１１１００において、プロセッサ１１１１１が容量プール容量追加処理１１１１２−０２−０３を実行開始すると、開始後、ステップ１１１１２−０２−０３−０１に進む。
【００８７】
ステップ１１１１２−０２−０３−０１では、プロセッサ１１１１１が、容量プール構成管理テーブル１１１１２−１４から容量プール番号１１１２−１４−０４が対象の容量プールに対応するレコードを検出し、当該レコードの容量プール作成有無１１１２−１４−０５に“有”が格納されていることを調査することで、対象容量プールが存在していることを確認する。プロセッサ１１１１１は、確認の結果、対象容量プールが存在するならばステップ１１１１２−０２−０３−０２へ進み、存在しないならばエラーとする。
【００８８】
ステップ１１１１２−０２−０３−０２では、プロセッサ１１１１１は、容量プール構成管理テーブル１１１１２−１４からＲＡＩＤグループ番号１１１１２−１４−０１が対象のＲＡＩＤグループに対応するレコードを検出し、当該レコードの容量プール番号１１１１２−１４−０２に容量プール番号が格納されていないことを調査することで、対象ＲＡＩＤグループが未使用であることを確認する。プロセッサ１１１１１は、確認の結果、対象ＲＡＩＤグループが未使用ならばステップ１１１１２−０２−０３−０３へ進み、使用済みならばエラーとする。
【００８９】
ステップ１１１１２−０２−０３−０３では、プロセッサ１１１１１は、容量プールに追加される対象のＲＡＩＤグループを構成するＨＤＤ１１１６１を初期化する。これにより、対象のＲＡＩＤグループよりデータを読み出した場合、“０”のデータを取得することができる。この後、ステップ１１１１２−０２−０３−０４へ進む。
【００９０】
ステップ１１１１２−０２−０３−０４では、プロセッサ１１１１１が容量プール構成管理テーブル１１１１２−１４の登録処理を行う。すなわち、プロセッサ１１１１１は、はじめに、対象の容量プールに対応するレコードの容量プール作成有無１１１２−１４−０５に“有”を格納する。次に、プロセッサ１１１１１は、初期化したＲＡＩＤグループに対応するレコードの容量プール番号１１１１２−１４−０２に容量追加対象の容量プールの識別子を登録する。次に、プロセッサ１１１１１は、当該レコードの空き領域情報１１１１２−１４−０３に該ＲＡＩＤグループの全領域を登録する。次に、プロセッサ１１１１１は、該ＲＡＩＤグループの容量を対応する容量プールの容量プール空き容量１１１１２−１４−０６に加算する。この後、プロセッサ１１１１１は、容量プール容量追加処理１１１１２−０２−０３を終了する。
【００９１】
図１７は、容量プール状態取得処理１１１１２−０２−０６のフローチャートである。
【００９２】
まず、ストレージモジュール１１１００において、プロセッサ１１１１１が容量プール状態取得処理１１１１２−０２−０６を実行開始すると、開始後、ステップ１１１１２−０２−０６−０１に進む。ステップ１１１１２−０２−０６−０１では、プロセッサ１１１１１が、容量プール構成管理テーブル１１１１２−１４の容量プール空き容量１１１１２−１４−０６から対象の容量プールにおける空き容量を取得し、その後、ステップ１１１１２−０２−０６−０２に進む。
【００９３】
ステップ１１１１２−０２−０６−０２では、プロセッサ１１１１１がステップ１１１１２−０２−０６−０１で取得した空き容量の情報と共に返信メッセージを、プール状態取得処理１１１１２−０２−０６の実行を要求したストレージモジュールに対して送信する。この後、プロセッサ１１１１１は、容量プール状態取得処理１１１１２−０２−０６を終了する。
【００９４】
図１８は、容量プール状態収集制御１１１１２−０２−０７のフローチャートである。
【００９５】
まず、ストレージモジュール１１１００において、プロセッサ１１１１１が容量プール状態収集制御１１１１２−０２−０７を実行開始すると、開始後、ステップ１１１１２−０２−０７−０１に進む。ステップ１１１１２−０２−０７−０１では、プロセッサ１１１１１が、容量プール構成管理テーブル１１１１２−１４から対象の容量プールに対応するレコードの容量プール作成有無１１１２−１４−０５に“有”が格納されていることを確認する。プロセッサ１１１１１は、“有”が格納されていれば、対象の容量プールは作成済みであるとして、ステップ１１１１２−０２−０７−０２へ進む一方、“無”が格納されていれば、対象の容量プールは未作成であるとして、エラー処理を行う。
【００９６】
ステップ１１１１２−０２−０７−０２では、プロセッサ１１１１１は、全ストレージモジュールに対して“容量プール状態取得要求”メッセージを送信し、その後、ステップ１１１１２−０２−０７−０３に進む。
【００９７】
ステップ１１１１２−０２−０７−０３では、プロセッサ１１１１１が、ステップ１１１１２−０２−０７−０２において全モジュールに対して送信したメッセージに対する返信を待つ。プロセッサ１１１１１は、全モジュールからの返信を確認後、ステップ１１１１２−０２−０７−０４に進む。
【００９８】
ステップ１１１１２−０２−０７−０４では、プロセッサ１１１１１が、ステップ１１１１２−０２−０７−０３で受信した返信メッセージに付随する各モジュールの容量プールの容量及び空き容量の値の総和を計算し、その後、ステップ１１１１２−０２−０７−０５に進む。
【００９９】
ステップ１１１１２−０２−０７−０５では、プロセッサ１１１１１が、ステップ１１１１２−０２−０７−０４で求めた、全モジュールの容量プールの容量及び空き容量の総和を、ホストコンピュータ１００００やストレージ管理端末１１０１０へ送信する。この後、プロセッサ１１１１１は、容量プール状態収集制御１１１１２−０２−０７を終了する。
【０１００】
図１９は、仮想ボリューム作成処理１１１１２−０３−０２のフローチャートである。
【０１０１】
まず、ストレージモジュール１１１００において、プロセッサ１１１１１が仮想ボリューム作成処理１１１１２−０３−０２を実行開始すると、開始後、ステップ１１１１２−０３−０２−０１に進む。ステップ１１１１２−０３−０２−０１では、プロセッサ１１１１１が、容量プール構成管理テーブル１１１１２−１４から容量プール番号１１１１２−１４−０４が作成対象の仮想ボリュームと関連付けられる容量プールに対応するレコードを検出し、当該レコードの容量プール作成有無１１１１２−１４−０５に“有”が格納されていることを調査することで、作成対象の仮想ボリュームと関連付けられる容量プールが存在していることを確認する。プロセッサ１１１１１は、確認の結果、対象容量プールが存在するならばステップ１１１１２−０３−０２−０２へ進み、存在しないならばエラーとする。
【０１０２】
ステップ１１１１２−０３−０２−０２では、プロセッサ１１１１１が、ボリューム管理テーブル１１１１２−１２からボリューム番号１１１１２−１２−０１が作成対象のボリュームの番号に対応するレコードを検出し、当該レコードのプール番号１１１１２−１２−０２及びＲＡＩＤグループ番号１１１１２−１２−０３に登録がないことを調査することで、作成対象のボリュームが未使用であることを確認する。プロセッサ１１１１１は、確認の結果、対象ボリュームが未使用ならばステップ１１１１２−０３−０２−０３へ進み、未使用でないならばエラーとする。
【０１０３】
ステップ１１１１２−０３−０２−０３では、プロセッサ１１１１１が、仮想ボリューム割り当て領域管理テーブル１１１１２−１３を初期化することで、作成対象の仮想ボリュームに容量プール上の記憶領域の割り当てがない状態を作り、その後、ステップ１１１１２−０３−０２−０４へ進む。ステップ１１１１２−０３−０２−０４では、プロセッサ１１１１１が、ボリューム管理テーブル１１１１２−１２に対する登録処理を行う。
ここでは、プロセッサ１１１１１は、ボリューム番号１１１１２−１２−０１が作成対象の仮想ボリュームに対応するレコードのプール番号１１１１２−１２−０２に、当該ボリューム番号に関連付けする容量プールの識別子を登録する。この後、プロセッサ１１１１１は、仮想ボリューム作成処理１１１１２−０３−０２を終了する。
【０１０４】
図２０は、仮想ボリューム移動制御１１１１２−０３−０３のフローチャートである。
【０１０５】
まず、ストレージモジュール１１１００において、プロセッサ１１１１１が仮想ボリューム移動制御１１１１２−０３−０３を実行開始すると、開始後、ステップ１１１１２−０３−０３−０１に進む。ステップ１１１１２−０３−０３−０１では、プロセッサ１１１１１が、送信対象のストレージモジュールを選択し、当該ストレージモジュールに対して“仮想ボリューム作成要求”メッセージを送信する。尚、プロセッサ１１１１１は、容量プールの空き容量が大きいストレージモジュールをメッセージ送信先として選択するようにしてもよい。その後、ステップ１１１１２−０３−０３−０２へ進む。
【０１０６】
ステップ１１１１２−０３−０３−０２では、プロセッサ１１１１１は、ステップ１１１１２−０３−０３−０１において送信したメッセージに対する完了の返信の到着を待ち、返信到着後、ステップ１１１１２−０３−０３−０３へ進む。
【０１０７】
ステップ１１１１２−０３−０３−０３では、プロセッサ１１１１１は、移動対象の仮想ボリュームに格納されたデータを、関連付けられた自モジュールの容量プールから移動対象のストレージモジュールの容量プールへデータコピーを行う為、図２４に示すデータ複製処理１１１１２−０３−０７を実行し、その後、ステップ１１１１２−０３−０３−０４へ進む。
【０１０８】
ステップ１１１１２−０３−０３−０４では、プロセッサ１１１１１は、移動対象の仮想ボリュームに対するＩ／Ｏを一時停止するため、図１０及び図２５に示すＩ／Ｏ停止処理１１１１２−０４−０１を実行する。Ｉ／Ｏ停止処理１１１１２−０４−０１の終了後、ステップ１１１１２−０３−０３−０５へ進む。
【０１０９】
ステップ１１１１２−０３−０３−０５では、プロセッサ１１１１１は、仮想ボリューム割り当て領域管理テーブル１１１１２−１３において、コピー元ボリュームに対応するレコードの更新有無情報１１１１２−１３−０４を調査し、“有”があるか否か、すなわち、差分があるか否かを確認する。プロセッサ１１１１１は、確認の結果、更新有無情報１１１１２−１３−０４に“有”があるならば、ステップ１１１１２−０３−０３−０６に進み、“有”がないならば、仮想ボリュームを完全に他のストレージモジュールに複製したことを意味するので、ステップ１１１１２−０３−０３−０７へ進む。
【０１１０】
ステップ１１１１２−０３−０３−０６では、移動対象の仮想ボリュームに対するＩ／Ｏを再開するため、図９及び図２６に示すＩ／Ｏ開始処理１１１１２−０４−０２を実行し、ステップ１１１１２−０３−０３−０３へ進む。
【０１１１】
ステップ１１１１２−０３−０３−０７では、プロセッサ１１１１１は、移動元ストレージモジュール（自ストレージモジュール）における移動対象の仮想ボリュームを削除するための処理を実行する。すなわち、プロセッサ１１１１１は、後述する図２３に示す記憶領域解放処理１１１１２−０３−０６を実行して移動対象の仮想ボリュームに割り当てられていた記憶領域を開放し、後述する図２１に示す仮想ボリューム削除処理１１１１２−０３−０４を実行して、移動対象の仮想ボリュームを容量プールから削除する。この後、プロセッサ１１１１１は、仮想ボリューム移動制御１１１１２−０３−０３を終了する。
【０１１２】
図２１は、仮想ボリューム削除処理１１１１２−０３−０４のフローチャートである。
【０１１３】
まず、ストレージモジュール１１１００において、プロセッサ１１１１１が仮想ボリューム削除処理１１１１２−０３−０４を開始すると、開始後、ステップ１１１１２−０３−０４−０１に進む。ステップ１１１１２−０３−０４−０１では、プロセッサ１１１１１が、ボリューム管理テーブル１１１１２−１２に登録された削除対象となる仮想ボリュームのプール番号１１１１２−１２−０２を“未登録状態”（“Ｎ／Ａ”）に変更する。これによって、ボリューム管理テーブル１１１１２−１２には、当該仮想ボリュームがストレージモジュール１１１０００の容量プールにおいて管理されていない状態となる。この後、プロセッサ１１１１１は、仮想ボリューム削除処理１１１１２−０３−０４を終了する。
【０１１４】
図２２は、記憶領域割り当て処理１１１１２−０３−０５のフローチャートである。
【０１１５】
まず、ストレージモジュール１１１００において、プロセッサ１１１１１が記憶領域割り当て処理１１１１２−０３−０５を開始すると、開始後、ステップ１１１１２−０３−０５−０１に進む。ステップ１１１１２−０３−０５−０１では、プロセッサ１１１１１が、容量プール構成管理テーブル１１１１２−１４の容量プール空き容量１１１１２−１４−０６を参照し、容量プールの空き容量が枯渇するか否か、すなわち、容量プールに記憶領域の割り当てに必要な容量の空きがあるか否かを確認する。プロセッサ１１１１１１は、確認の結果、割り当てに必要な容量の空きが確認されたならばステップ１１１１２−０３−０５−０２へ進み、確認できなかった場合ステップ１１１１２−０３−０５−０４へ進む。
【０１１６】
ステップ１１１１２−０３−０５−０２では、プロセッサ１１１１１は、容量プール構成管理テーブル１１１１２−１４から、記憶領域割り当て対象の仮想ボリュームに関連付けられた容量プールに対応するＲＡＩＤグループを特定し、特定したＲＡＩＤグループの中から適切なＲＡＩＤグループを選択し、当該ＲＡＩＤグループに対応するレコードの空き領域情報１１１１２−１４−０３より適当な記憶領域のアドレスを選択し、該選択された記憶領域のアドレスを空き領域情報１１１１２−１４−０３から削除する。
【０１１７】
その後、プロセッサ１１１１１は、仮想ボリューム割り当て領域管理テーブル１１１１２−１３の記憶領域割り当て元番号１１１１２−１３−０１から対象のデータに割り当てる仮想ボリュームの記憶領域番号を選択し、当該記憶領域番号を含むレコードの記憶領域割り当て先ＲＡＩＤグループ番号１１１１２−１３−０２に選択した記憶領域に関するＲＡＩＤグループ番号を格納し、当該レコードの記憶領域割り当て先番号１１１１２−１３−０３に、選択した記憶領域の先頭アドレスを格納し、当該レコードの更新有無情報１１１１２−１３−０４に“有”を格納する。その後、ステップ１１１１２−０３−０５−０３へ進む。
【０１１８】
ステップ１１１１２−０３−０５−０３では、プロセッサ１１１１１は、容量プール構成管理テーブル１１１１２−１４の容量プール空き容量１１１１２−１４−０６が予め定められた閾値未満であるか否かを確認することによって、容量プールの空き容量が枯渇すると予想されるか否かを確認する。尚、該閾値は、対象モジュール内の仮想ボリュームの総容量や、モジュールの容量プールからの比率に応じて動的に変更するようにしても良い。プロセッサ１１１１１は、確認の結果、閾値未満である場合には、容量プールが枯渇する可能性が高いことを意味しているので、ステップ１１１１２−０３−０５−０４へ進み、閾値以上である場合、記憶領域割り当て処理１１１１２−０３−０５を終了する。
【０１１９】
ステップ１１１１２−０３−０５−０４では、プロセッサ１１１１１は、容量プールの空き容量を増加させる為、移動対象の仮想ボリューム及び移動先のストレージモジュールを選択する。移動対象の仮想ボリュームとしては、例えば、割当てられた容量プールの記憶領域のサイズが大きい、アクセス頻度が高くない、要求されるＩ／Ｏ性能が大きくない等といった特徴を持つものを選択するのが望ましい。また、移動先のストレージモジュールとしては、移動先となり得る複数のストレージモジュールが存在する場合には、容量プールの空き容量が大きいという特徴を持つストレージモジュールを選択することが望ましい。この後、ステップ１１１１２−０３−０５−０５へ進む
ステップ１１１１２−０３−０５−０５では、プロセッサ１１１１１は、ステップ１１１１２−０３−０５−０４で選択した仮想ボリュームを、選択したストレージモジュールへ移動するための“仮想ボリューム移動”コマンドを自己宛に発行する。その後、プロセッサ１１１１１は、記憶領域割り当て処理１１１１２−０３−０５を終了する。
【０１２０】
図２３は、記憶領域解放処理１１１１２−０３−０６のフローチャートである。
【０１２１】
まず、ストレージモジュール１１１００において、プロセッサ１１１１１が記憶領域解放処理１１１１２−０３−０６を開始すると、開始後、ステップ１１１１２−０３−０６−０１に進む。ステップ１１１１２−０３−０６−０１では、プロセッサ１１１１１は、キャッシュ領域管理テーブル１１１１２−１５において管理される、記憶領域解放対象のボリュームに対応した制御情報を無効化することで、キャッシュ領域１１１１２−２０に格納していた当該ボリュームのキャッシュデータの破棄を行う。その後、ステップ１１１１２−０３−０６−０２へ進む。
【０１２２】
ステップ１１１１２−０３−０６−０２では、プロセッサ１１１１１は、記憶領域解放対象のボリュームに対応する仮想ボリューム割り当て領域管理テーブル１１１１２−１３の記憶領域割り当て先ＲＡＩＤグループ番号１１１１２−１３−０２及び記憶領域割り当て先番号１１１１２−１３−０３に、記憶領域を割り当てた情報が格納されていないかを確認する。プロセッサ１１１１１は、確認の結果、割り当てた情報がある場合はステップ１１１１２−０３−０６−０３へ進み、割り当てた情報がない場合は、記憶領域解放処理１１１１２−０３−０６を終了する。
【０１２３】
ステップ１１１１２−０３−０６−０３では、プロセッサ１１１１１は、ステップ１１１１２−０３−０６−０２で検出した記憶領域の情報に対する操作を行う。すなわち、プロセッサ１１１１１は、はじめに、記憶領域解放対象の記憶領域に対する対応関係を削除する為、仮想ボリューム割り当て領域管理テーブル１１１１２−１３の当該対象の記憶領域に対応するレコードの記憶領域割り当て先ＲＡＩＤグループ番号１１１１２−１３−０２及び記憶領域割り当て先番号１１１１２−１３−０３に無効値を格納する。次に、プロセッサ１１１１１は、対象の記憶領域を容量プールに返却する為、容量プール構成管理テーブル１１１１２−１４から、ＲＡＩＤグループ番号１１１１２−１４−０１が記憶領域割り当て先ＲＡＩＤグループ番号１１１１２−１３−０２に格納されていたＲＡＩＤグループとなっているレコードを検索し、当該レコードの空き領域情報１１１１２−１４−０３に記憶領域割り当て先番号１１１１２−１３−０３に格納されていた記憶領域を登録し、当該登録した記憶領域に対応する空き容量を、対応する容量プールのレコードの容量プール空き容量１１１１２−１４−０６に加算する。これによって、割り当てられていた記憶領域が空き領域となり、容量プールにおける記憶領域の割り当てに利用できるようになる。この後、ステップ１１１１２−０３−０６−０２へ進む。
【０１２４】
図２４は、データ複製処理１１１１２−０３−０７のフローチャートである。
【０１２５】
まず、ストレージモジュール１１１００において、プロセッサ１１１１１がデータ複製処理１１１１２−０３−０７を開始すると、開始後、ステップ１１１１２−０３−０７−０１に進む。ステップ１１１１２−０３−０７−０１では、プロセッサ１１１１１は、仮想ボリューム割り当て領域管理テーブル１１１１２−１３のコピー元ボリュームに対応する更新有無情報１１１１２−１３−０４を全て“有”とすることにより初期化する。その後、ステップ１１１１２−０３−０７−０２へ進む。
【０１２６】
ステップ１１１１２−０３−０７−０２では、プロセッサ１１１１１は、コピー元ボリュームに対応する更新有無情報１１１１２−１３−０４を調査し、“有”があるか否か、すなわち、差分があるか否かを確認する。プロセッサ１１１１１は、確認の結果、更新有無情報１１１１２−１３−０４に“有”が無いならばデータ複製処理１１１１２−０３−０７を終了し、“有”があるならばステップ１１１１２−０３−０７−０３へ進む。
【０１２７】
ステップ１１１１２−０３−０７−０３では、プロセッサ１１１１１は、ステップ１１１１２−０３−０７−０２で検出した“有”が対応付けられている記憶領域をコピー元として定め、その後、ステップ１１１１２−０３−０７−０４へ進む。
【０１２８】
ステップ１１１１２−０３−０７−０４では、プロセッサ１１１１１は、ステップ１１１１２−０３−０７−０３でコピー元と定めた記憶領域について、記憶領域割り当て先ＲＡＩＤグループ番号１１１１２−１３−０２及び記憶領域割り当て先番号１１１１２−１３−０３を参照し、記憶領域の割り当てがあるかを確認する。プロセッサ１１１１１は、確認の結果、記憶領域の割り当てが無いならばステップ１１１１２−０３−０７−１０へ進み、記憶領域の割り当てがあるならばステップ１１１１２−０３−０７−０５へ進む。
【０１２９】
ステップ１１１１２−０３−０７−０５では、プロセッサ１１１１１は、キャッシュ領域管理テーブル１１１１２−１５を検索することで、コピー元記憶領域のデータがキャッシュ領域１１１１２−２０上に格納されているかを確認する。プロセッサ１１１１１は、確認の結果、キャッシュ領域１１１１２−２０上に格納されているならばステップ１１１１２−０３−０７−０９へ進み、格納されていないならばステップ１１１１２−０３−０７−０６へ進む。
【０１３０】
ステップ１１１１２−０３−０７−０６では、プロセッサ１１１１１は、キャッシュ領域管理テーブル１１１１２−１５を検索し、空いているキャッシュ領域１１１１２−２０の領域を確保し、その後、ステップ１１１１２−０３−０７−０７へ進む。
【０１３１】
ステップ１１１１２−０３−０７−０７では、プロセッサ１１１１１は、記憶領域割り当て先ＲＡＩＤグループ番号１１１１２−１３−０２及び記憶領域割り当て先番号１１１１２−１３−０３を参照することで、ＨＤＤ１１１６１上のデータ格納位置を特定する。その後、ステップ１１１１２−０３−０７−０８へ進む。
【０１３２】
ステップ１１１１２−０３−０７−０８では、プロセッサ１１１１１は、コピー元の記憶領域が格納されたＨＤＤ１１１６１上のデータを、ステップ１１１１２−０３−０７−０７で確保したキャッシュ領域１１１１２−２０上の領域へ転送する。その後、ステップ１１１１２−０３−０７−０９へ進む。
【０１３３】
ステップ１１１１２−０３−０７−０９では、プロセッサ１１１１１は、キャッシュ領域１１１１２−２０上に格納されたコピー元記憶領域のデータを、コピー先ボリュームのストレージモジュール上のキャッシュ領域１１１１２−２０へ、ストレージモジュール間接続インタフェース１１１１３及びストレージモジュール間接続インタフェース１１２１３を結ぶケーブルを介して転送する。これにより、転送先のストレージモジュールにおいて、後述する図２９の処理が実行されることにより、コピー元の記憶領域のデータがストレージモジュールの容量プールの記憶領域に割り当てられて格納され、仮想ボリュームのデータ位置に対して、新たに割り当てられたＲＡＩＤグループ番号及び割り当てられた記憶領域の識別情報が対応付けられた仮想ボリューム割り当て領域管理テーブル１１１１２−１３が作成される。その後、ステップ１１１１２−０３−０７−１０へ進む。
【０１３４】
ステップ１１１１２−０３−０７−１０では、プロセッサ１１１１１は、仮想ボリューム割り当て領域管理テーブル１１１１２−１３におけるコピー元記憶領域に対応するレコードの更新有無情報１１１１２−１３−０４に“無”を格納する。その後、ステップ１１１１２−０３−０７−０２へ戻る。
【０１３５】
図２５は、Ｉ／Ｏ停止処理１１１１２−０４−０１のフローチャートである。
【０１３６】
まず、ストレージモジュール１１１００において、プロセッサ１１１１１がＩ／Ｏ停止処理１１１１２−０４−０１を開始すると、開始後、ステップ１１１１２−０４−０１−０１に進む。ステップ１１１１２−０４−０１−０１では、プロセッサ１１１１１は、ボリューム管理テーブル１１１１２−１２から、ボリューム番号１１１１２−１２−０１が対象のボリュームに対応するボリューム番号であるレコードを検索し、当該レコードのＩ／Ｏ停止判別情報１１１１２−１２−０５に“ＯＮ”を格納する。その後、プロセッサ１１１１１は、Ｉ／Ｏ停止処理１１１１２−０４−０１を終了する。
【０１３７】
図２６は、Ｉ／Ｏ開始処理１１１１２−０４−０２の処理手順を示すフローチャートである。
【０１３８】
まず、ストレージモジュール１１１００において、プロセッサ１１１１１がＩ／Ｏ開始処理１１１１２−０４−０２を開始すると、開始後、ステップ１１１１２−０４−０２−０１に進む。ステップ１１１１２−０４−０２−０１では、プロセッサ１１１１１は、ボリューム管理テーブル１１１１２−１２から、ボリューム番号１１１１２−１２−０１が対象のボリュームに対応するボリューム番号であるレコードを検索し、当該レコードのＩ／Ｏ停止判別情報１１１１２−１２−０５に“ＯＦＦ”を格納する。その後。プロセッサ１１１１１は、Ｉ／Ｏ開始処理１１１１２−０４−０２を終了する。
【０１３９】
図２７は、書き込みＩ／Ｏ処理１１１１２−０４−０３のフローチャートである。
【０１４０】
まず、ストレージモジュール１１１００において、プロセッサ１１１１１が書き込みＩ／Ｏ処理１１１１２−０４−０３を開始すると、開始後、ステップ１１１１２−０４−０３−０１に進む。ステップ１１１１２−０４−０３−０１では、プロセッサ１１１１１は、Ｉ／Ｏ処理の実行可否を判断する為、ボリューム管理テーブル１１１１２−１２の対象のボリュームに対応するレコードのＩ／Ｏ停止判別情報１１１１２−１２−０５を確認する。プロセッサ１１１１１は、確認の結果、“ＯＦＦ”が格納されていた場合、Ｉ／Ｏ処理実行の為にステップ１１１１２−０４−０３−０２へ進む。一方、“ＯＮ”が格納されていた場合、プロセッサ１１１１１は、“ＯＦＦ”に変わるまで次の処理を待つ。
【０１４１】
ステップ１１１１２−０４−０３−０２では、プロセッサ１１１１１は、キャッシュ領域１１１１２−２０上にデータ格納領域が既に確保されているか、キャッシュ領域管理テーブル１１１１２−１５を検索することで確認する。プロセッサ１１１１１は、確認の結果、データ格納領域が未確保の場合はステップ１１１１２−０４−０３−０３へ進み、確保済みの場合はステップ１１１１２−０４−０３−０４へ進む。
【０１４２】
ステップ１１１１２−０４−０３−０３では、プロセッサ１１１１１は、キャッシュ領域管理テーブル１１１１２−１５からキャッシュ領域１１１１２−２０の空き領域を検索し、当該空き領域を確保し、その後、ステップ１１１１２−０４−０３−０４に進む。
【０１４３】
ステップ１１１１２−０４−０３−０４では、プロセッサ１１１１１は、仮想ボリューム割り当て管理テーブル１１１１２−１２における当該書き込み処理により書き込むデータ位置に対応するレコードの更新有無情報１１１１２−１３−０４に対して“ＯＮ”の情報を格納する。その後、ステップ１１１１２−０４−０３−０５に進む。
【０１４４】
ステップ１１１１２−０４−０３−０５では、プロセッサ１１１１１は、ホストコンピュータ１００００から転送されたデータをキャッシュ領域１１１１２−２０に格納する。その後、プロセッサ１１１１１は、書き込みＩ／Ｏ処理１１１１２−０４−０３を終了する。
【０１４５】
図２８は、読み出しＩ／Ｏ処理１１１１２−０４−０４のフローチャートである。
【０１４６】
まず、ストレージモジュール１１１００において、プロセッサ１１１１１が読み出しＩ／Ｏ処理１１１１２−０４−０４を開始すると、開始後、ステップ１１１１２−０４−０４−０１に進む。ステップ１１１１２−０４−０４−０１では、プロセッサ１１１１１は、Ｉ／Ｏ処理の実行可否を判断する為、ボリューム管理テーブル１１１１２−１２の対象のボリュームに対応するレコードのＩ／Ｏ停止判別情報１１１１２−１２−０５を確認する。プロセッサ１１１１１は、確認の結果、“ＯＦＦ”が格納されている場合、Ｉ／Ｏ処理実行の為にステップ１１１１２−０４−０４−０２へ進む。プロセッサ１１１１１は、“ＯＮ”が格納されていた場合、“ＯＦＦ”に変わるまで処理を待つ。
【０１４７】
ステップ１１１１２−０４−０４−０２では、プロセッサ１１１１１は、キャッシュ領域１１１１２−２０上に読み出し対象のデータが格納されているか、キャッシュ領域管理テーブル１１１１２−１５を検索することで確認する。プロセッサ１１１１１は、確認の結果、データ格納済みの場合はステップ１１１１２−０４−０４−０３へ進み、データ未格納の場合はステップ１１１１２−０４−０４−０７へ進む。
【０１４８】
ステップ１１１１２−０４−０４−０３では、プロセッサ１１１１１は、キャッシュ領域管理テーブル１１１１２−１５よりキャッシュ領域１１１１２−２０の空き領域を検索し、空き領域を確保する。その後、ステップ１１１１２−０４−０４−０４に進む。
【０１４９】
ステップ１１１１２−０４−０４−０４では、プロセッサ１１１１１は、仮想ボリューム割り当て領域管理テーブル１１１１２−１３から記憶領域割り当て元番号１１１１２−１３−０１がＩ／Ｏ対象領域の番号となっているレコードを検索し、当該レコードの記憶領域割り当て先ＲＡＩＤグループ番号１１１１２−１３−０２及び記憶領域割り当て先番号１１１１２−１３−０３に値が格納されているか否かを確認する。プロセッサ１１１１１は、確認の結果、値が格納されていない場合は記憶領域が未割り当てであるとしてステップ１１１１２−０４−０４−０５へ進み、値が格納されている場合は記憶領域が割り当て済みであるとしてステップ１１１１２−０４−０４−０６へ進む。
【０１５０】
ステップ１１１１２−０４−０４−０５では、プロセッサ１１１１１は、ステップ１１１１２−０４−０４−０３で確保したキャッシュ領域１１１１２−２０の領域を“０”データで満たす。その後、ステップ１１１１２−０４−０４−０７に進む。
【０１５１】
ステップ１１１１２−０４−０４−０６では、プロセッサ１１１１１は、ステップ１１１１２−０４−０４−０４で検出した記憶領域に対応するＨＤＤ１１１６１から、ステップ１１１１２−０４−０４−０３で確保したキャッシュ領域１１１１２−２０の領域へデータ転送を行う。その後、ステップ１１１１２−０４−０４−０７に進む。
【０１５２】
ステップ１１１１２−０４−０４−０７では、プロセッサ１１１１１は、キャッシュ領域１１１１２−２０に格納されたデータをホストコンピュータ１００００に転送する。その後、プロセッサ１１１１１は、読み出しＩ／Ｏ処理１１１１２−０４−０４を終了する。
【０１５３】
図２９は、ＨＤＤ操作プログラム１１１１２−０５のフローチャートである。
【０１５４】
ＨＤＤ操作プログラム１１１１２−０５は、例えば、所定の時間毎にプロセッサ１１１１１によって実行が開始される。
【０１５５】
まず、ストレージモジュール１１１００において、プロセッサ１１１１１がＨＤＤ操作プログラム１１１１２−０５を開始すると、開始後、ステップ１１１１２−０５−０１に進む。ステップ１１１１２−０５−０１では、プロセッサ１１１１１は、パワースイッチオフ等に伴うプログラム終了要求がないかを判断する。プロセッサ１１１１１は、終了要求があった場合、処理を終了する。一方、終了要求がなければ、ステップ１１１１２−０５−０２へ進む。
【０１５６】
ステップ１１１１２−０５−０２では、プロセッサ１１１１１は、キャッシュ領域管理テーブル１１１１２−１５から、キャッシュ領域１１１１２−２０上に格納されたデータと、対応するＨＤＤ１１１６１上のデータとの不一致が生じているデータを検索する。プロセッサ１１１１１は、該当データが存在しなければステップ１１１１２−０５−０１に戻り、存在すればステップ１１１１２−０５−０３へ進む。
【０１５７】
ステップ１１１１２−０５−０３では、プロセッサ１１１１１は、ステップ１１１１２−０５−０２で検出したデータが仮想ボリュームのデータであるかを、ボリューム管理テーブル１１１１２−１２の当該データのボリューム番号に対応するレコードのプール番号１１１１２−１２−０２に容量プール識別子が格納されているか否かにより確認する。プロセッサ１１１１１は、確認の結果、容量プール識別子が格納されているならばステップ１１１１２−０５−０４へ進み、格納されていないならばステップ１１１１２−０５−０６へ進む。
【０１５８】
ステップ１１１１２−０５−０４では、プロセッサ１１１１１は、対象のデータ領域に対して記憶領域の割り当てが既に実行されているかを、仮想ボリューム割り当て領域管理テーブル１１１１２−１３の当該データ領域に対応する記憶領域割り当て元番号に対応するレコードの記憶領域割り当て先ＲＡＩＤグループ番号１１１１２−１３−０２及び記憶領域割り当て先番号１１１１２−１３−０３の値により確認する。プロセッサ１１１１１は、確認の結果、値が格納されているならばステップ１１１１２−０５−０６へ進み、格納されていないならばステップ１１１１２−０５−０５へ進む。
【０１５９】
ステップ１１１１２−０５−０５では、プロセッサ１１１１１は、図２２に示す記憶領域割り当て処理１１１１２−０３−０５を実行し、その後、ステップ１１１１２−０５−０６に進む。
【０１６０】
ステップ１１１１２−０５−０６では、プロセッサ１１１１１は、キャッシュ領域１１１１２−２０からデータ書き込み対象のＨＤＤ１１１６１へデータを転送する。また同時に、プロセッサ１１１１１は、キャッシュ領域管理テーブル１１１１２−１５に対し、キャッシュ領域１１１１２−２０とＨＤＤ１１１６１上のデータとが一致した旨を登録する。その後、プロセッサ１１１１１は、ＨＤＤ操作プログラム１１１１２−０５の実行を終了する。
【０１６１】
図３０は、ストレージ管理端末１１０１０のユーザインタフェース１１０１４の出力画面である。
【０１６２】
ストレージ管理端末１１０１０のプロセッサ１１０１１は、任意の容量プールの状態取得の為、各ストレージモジュール１１１００に対して“容量プール状態取得”コマンドを発行する。また、プロセッサ１１０１１は、該コマンドの応答として、各容量プールの総容量及び総空き容量を取得し、図３０に示すように、容量プールＩＤ１１０１４−１に、容量プールのＩＤを表示させ、容量プール総容量１１０１４−２に対応する容量プールの総容量を表示させ、容量プール総空き容量１１０１４−３に対応する容量プールの総空き容量を表示させる。尚、ユーザインタフェース１１０１４には詳細情報を取得したいユーザの為に、個々のモジュールについての容量及び空き容量を表示する画面を別途用意して、プロセッサ１１０１１は、当該画面を表示させるようにしてもよい。
【０１６３】
上記した第１実施形態によると、容量プールが枯渇することを検出した場合には、容量プールのデータを他のストレージモジュールの容量プールに移動することにより、容量プールの空き容量を増加させることができ、容量プールの枯渇を適切に防止することができ、例えば、容量プールの枯渇に伴う業務停止を防止することができる。また、容量プールの枯渇が予想される場合に、容量プールの空き容量を増加することができるので、以降の時点において容量プールが枯渇することをより効果的に防止することができる。
【０１６４】
＜第２実施形態＞
次に、本発明の第２実施形態に係る計算機システムについて説明する。なお、第２実施形態の図面及び説明部分においては、第１実施形態と同様な部分には、同一の番号を付すこととし、第１実施形態との差異を中心に説明することとする。
【０１６５】
図３１は、本発明の第２実施形態に係る計算機システムの構成例を示す図である。
【０１６６】
第２実施形態に係るストレージモジュール１１１００は、メディアユニット１１１６０及びコントローラ１１１１０に加えて、スイッチ１１１７０を備えている。また、ストレージモジュール１１２００は、メディアユニット１１２６０及びコントローラ１１２１０に加え、スイッチ１１２７０を備えている。
【０１６７】
スイッチ１１１７０は、ＨＤＤ接続インタフェース１１１１４及びハードディスクドライブ１１１６１に接続される。スイッチ１１２６０は、ＨＤＤ接続インタフェース１１２１４及びハードディスクドライブ１１１６１に接続される。更にスイッチ１１１６０とスイッチ１１２６０とは相互に接続されている。このような構成によって、コントローラ１１１１０からスイッチ１１１７０及び１１２７０を介してメディアユニット１１２６０のハードディスクドライブ１１２６１へ、また、コントローラ１１２１０からスイッチ１１２７０及び１１１７０を介してメディアユニット１１１６０のハードディスクドライブ１１１６１へのアクセスが可能となっている。
【０１６８】
第２実施形態においては、ストレージモジュール１１１００及びストレージモジュール１１２００は、ＲＡＩＤグループ管理テーブル１１１１２−１１として同一内容のものを保持し、ＨＤＤ番号リスト１１１１２−１１−０３には、いずれのストレージモジュールに備えられているＨＤＤ１１１６１、１１２６１の番号を格納することもできるようになっている。これによって、一のストレージモジュールが、他のストレージモジュールに備えられているＲＡＩＤグループに属するＨＤＤを把握することができるようになっている。
【０１６９】
図３２は、第２実施形態に係るプール操作プログラム１１１１２−０２を構成する処理の構成図である。尚、第１実施形態に係る図８に示すプール操作プログラム１１１１２−０２との差異を中心に説明する。
【０１７０】
第２実施形態に係るプール操作プログラム１１１１２−０２は、容量プール作成制御処理１１１１２−０２−０１、容量プール作成処理１１１１２−０２−０２、容量プール容量追加処理１１１１２−０２−０３、容量プール状態取得処理１１１１２−０２−０６、及び容量プール状態収集制御１１１１２−０２−０７に加えて、容量プール空き領域移動制御１１１１２−０２−０４と容量プール空き領域送信処理１１１１２−０２−０５とを備えている。
【０１７１】
容量プール空き領域移動制御１１１１２−０２−０４は、自ストレージモジュールで管理する容量プールに対して他ストレージモジュールで管理する容量プールの空き領域を追加する為の制御処理である。容量プール空き領域送信処理１１１１２−０２−０５は、自ストレージモジュールで管理する容量プールの空き領域を、他ストレージモジュールに対して通知する処理である。
【０１７２】
図３３は、第二の実施例におけるコマンド処理プログラム１１１１２−００の処理手順を示すフローチャートである。尚、第１実施形態に係る図１１に示すコマンド処理プログラム１１１１２−００の処理手順との差異を中心に説明する。
【０１７３】
ステップ１１１１２−００−０９では、プロセッサ１１１１１は、要求されたコマンドが“容量プール状態取得”であるか判断する。プロセッサ１１１１１は、“容量プール状態取得”であったならばステップ１１１１２−００−１０へ進み、違うならばステップ１１１１２−００−５１へ進む。
【０１７４】
ステップ１１１１２−００−５１では、プロセッサ１１１１１は、要求されたコマンドが“容量プール空き領域移動”であるか判断する。プロセッサ１１１１１は、“容量プール空き領域移動”であったならばステップ１１１１２−００−５２へ進み、違うならば図１２のステップ１１１１２−００−１５へ進む。尚、ステップ１１１１２−００−１５へ進むのではなく、図１１のステップ１１１１２−００−１３へ進むようにしてもよい。
【０１７５】
ステップ１１１１２−００−５１では、プロセッサ１１１１１は、図３２及び図３５に示すプール空き領域移動制御１１１１２−０２−０４を実行する。その後、ステップ１１１１２−００−０１へ戻る。
【０１７６】
図３４は、第２実施形態に係るメッセージ受信処理プログラム１１１１２−０１の処理手順を示すフローチャートである。尚、第１実施形態に係る図１３に示すメッセージ受信処理プログラム１１１１２−０１の処理手順との差異を中心に説明する。
【０１７７】
ステップ１１１１２−０１−０３では、プロセッサ１１１１１は、受信したメッセージが“容量プール作成要求”であるか判断する。プロセッサ１１１１１は、“容量プール作成要求”であったならばステップ１１１１２−０１−０４へ進み、違うならばステップ１１１１２−０１−５１へ進む。
【０１７８】
ステップ１１１１２−０１−５１では、プロセッサ１１１１１は、受信したメッセージが“容量プール空き領域送信要求”であるか判断する。プロセッサ１１１１１は、“容量プール空き領域送信要求”であったならばステップ１１１１２−０１−５２へ進み、違うならばステップ１１１１２−０１−０９へ進む。尚、ステップ１１１１２−０１−０９へ進むのではなく、図１３のステップ１１１１２−０１−０７へ進むようにしてもよい。
【０１７９】
ステップ１１１１２−０１−５２では、プロセッサ１１１１１は、図３３及び図３６に示す容量プール空き領域送信処理１１１１２−０２−０５を実行する。その後、ステップ１１１１２−０１−０１へ戻る。
【０１８０】
図３５は、容量プール空き領域移動制御１１１１２−０２−０４のフローチャートである。
【０１８１】
まず、ストレージモジュール１１１００において、プロセッサ１１１１１が容量プール空き領域移動制御１１１１２−０２−０４を開始すると、開始後、ステップ１１１１２−０２−０４−０１に進む。ステップ１１１１２−０２−０４−０１では、プロセッサ１１１１１は、送信先のストレージモジュールを選択し、当該ストレージモジュールに対して“容量プール空き領域送信要求”メッセージを送信する。尚、メッセージの送信先のストレージモジュールとしては、通信可能な複数のストレージモジュールが存在する場合には、容量プールの空き容量が大きいストレージモジュールを選択するようにしてもよい。その後、ステップ１１１１２−０２−０４−０２へ進む。
【０１８２】
ステップ１１１１２−０２−０４−０２では、プロセッサ１１１１１は、ステップ１１１１２−０２−０４−０１にて送信したメッセージに対する完了の返信の到着を待つ。プロセッサ１１１１１は、返信到着後、ステップ１１１１２−０２−０４−０３へ進む。
【０１８３】
ステップ１１１１２−０２−０４−０３では、プロセッサ１１１１１は、ステップ１１１１２−０２−０４−０２において受信した返信メッセージに付随する、後述する空き領域情報を容量プール構成管理テーブル１１１１２−１４に格納する。すなわち、プロセッサ１１１１１は、空き領域情報中の空き領域のＲＡＩＤグループ番号をＲＡＩＤグループ番号１１１１２−１４−０１に格納し、空き領域を追加した容量プールの番号を容量プール番号１１１１２−１４−０２に格納し、空き領域を示すアドレスを空き領域情報１１１１２−１４−０３に格納し、追加した容量を容量プール空き容量１１１１２−１４−０６に格納されている容量に追加して格納する。これによって、他のストレージモジュール１１２００に備えられているＨＤＤ１１２６１の記憶領域を容量プールにおける割当先の記憶領域として利用できるようになる。本実施形態では、このように利用可能となったＨＤＤ１１２６１に対して、プロセッサ１１１１１がスイッチ１１１７０及び１１２７０を介してアクセスする。その後、プロセッサ１１１１１は、容量プール空き領域移動制御１１１１２−０２−０４の処理を終了する。
【０１８４】
図３６は、容量プール空き領域送信処理１１１１２−０２−０５の処理手順を示すフローチャートである。まず、ストレージモジュール１１１００において、プロセッサ１１１１１が容量プール空き領域送信処理１１１１２−０２−０５を開始すると、開始後、ステップ１１１１２−０２−０５−０１に進む。ステップ１１１１２−０２−０５−０１では、プロセッサ１１１１１は、自モジュールの容量プール構成管理テーブル１１１１２−１４を調査し、適当な大きさの空き領域をいずれかのＲＡＩＤグループから確保し、確保した空き領域を示すアドレスを容量プール構成管理テーブル１１１１２−１４の当該ＲＡＩＤグループに対応するレコードの空き領域情報１１１１２−１４−０３から削除するとともに、当該レコードの容量プール空き容量１１１１２−１４−０６から確保した容量を減ずる。その後、ステップ１１１１２−０２−０５−０２へ進む。
【０１８５】
ステップ１１１１２−０２−０５−０２では、プロセッサ１１１１１は、ステップ１１１１２−０２−０５−０１において確保した空き領域の情報、例えば、ＲＡＩＤグループ番号、容量プール番号、アドレス、及び容量の情報を、図３５に示すステップ１１１１２−０２−０４−０１にて“容量プール空き領域送信要求”メッセージを発行したストレージモジュールに対して返信メッセージに付随して送信する。その後、プロセッサ１１１１１は、容量プール空き領域送信処理１１１１２−０２−０５を終了する。
【０１８６】
図３７は、第２実施形態に係る記憶領域割り当て処理１１１１２−０３−０５のフローチャートである。尚、第１実施形態に係る図２２に示す記憶領域割り当て処理１１１１２−０３−０５との差異を中心に説明する。第２実施形態に係る記憶領域割り当て処理１１１１２−０３−０５は、図２９のステップ１１１１２−０４−０５−０５において、図２２に示す記憶領域割り当て処理１１１１２−０３−０５に代わって実行される。
【０１８７】
ステップ１１１１２−０３−０５−０３では、プロセッサ１１１１１は、容量プール構成管理テーブル１１１１２−１４の容量プール空き容量１１１１２−１４−０６が予め定められた閾値未満であるか否かを確認する。プロセッサ１１１１１は、確認の結果、閾値未満である場合には、容量プールが枯渇する可能性が高いことを意味しているので、ステップ１１１１２−０３−０５−１４へ進み、閾値以上である場合、記憶領域割り当て処理１１１１２−０３−０５を終了する。
【０１８８】
ステップ１１１１２−０３−０５−１４では、プロセッサ１１１１１は、容量プールの空き容量を増加させる為、容量プール空き容量の移動元（提供元）となる適当な他のストレージモジュールを選択する。ここで、移動元のストレージモジュールとしては、“容量プールの空き容量が大きい”といった特徴を持つストレージモジュールを選択することが望ましい。その後、ステップ１１１１２−０３−０５−１５へ進む。
【０１８９】
ステップ１１１１２−０３−０５−１５では、プロセッサ１１１１１は、ステップ１１１１２−０３−０５−１４で選択したストレージモジュール内の容量プールの空き領域を移動するための“容量プール空き領域移動”コマンドを自モジュール宛に発行する。これにより、以降において図３５の容量プール空き領域移動制御１１１１２−０２−０４が開始されることとなる。その後、プロセッサ１１１１１は、記憶領域割り当て処理１１１１２−０３−０５を終了する。
【０１９０】
上記した第２実施形態によると、或るモジュールの容量プールが枯渇することを検出した場合には、他のストレージモジュールの容量プールの空き容量を取得することにより、当該或るモジュールの容量プールの空き容量を増加させることができ、容量プールの枯渇を適切に防止することができ、例えば、容量プールの枯渇に伴う業務停止を防止することができる。また、容量プールの枯渇が予想される場合に、容量プールの空き容量を増加することができるので、以降の時点において容量プールが枯渇することをより効果的に防止することができる。また、第２実施形態によると、容量プールに属する仮想ボリュームで管理するデータ自体を、他のストレージモジュールに送信する必要がないので、迅速に容量プールの空き容量を増加させることができる。また、第２実施形態によると、ホストコンピュータ１００００は、格納先のストレージモジュールを意識することなく、常に一のストレージモジュールに対してアクセス要求を出すことにより容量プールに属する仮想ボリュームのデータにアクセスすることができる。
【０１９１】
以上、本発明を複数の実施形態に基づいて説明したが、本発明は上述した実施形態に限られず、他の様々な態様に適用可能である。
【０１９２】
例えば、上記第１実施形態においては、一のストレージモジュールが自己に対するコマンドでない場合に、他のストレージモジュールに送信することにより、他のストレージモジュールに移動された仮想ボリュームのデータにアクセスできるようになっていたが、本発明はこれに限られず、例えば、移動させた仮想ボリュームの移動先のストレージモジュールをホストコンピュータに通知し、ホストコンピュータが通知されたストレージモジュールに仮想ボリュームへのアクセス要求を発生するようにしてもよい。
【０１９３】
また、上記第２実施形態おいては、ストレージモジュール１１１００のコントローラ１１１１０と、他のストレージモジュール１１２１０のメディアユニット１１２６０とをスイッチ１１１７０及びスイッチ１１２７０を介して接続することにより、ストレージモジュール１１１００のコントローラ１１１１０がストレージモジュール１１２００のコントローラ１１２１０を介さずに、直接メディアユニット１１２６０のＨＤＤ１１２６１にアクセスできるようにしているため、コントローラ１１２１０への負荷の増加や、コントローラ１１２１０の故障等の影響を適切に防止できるようにしていたが、本発明はこれに限られず、例えば、コントローラ１１１１０からコントローラ１１２１０を経由してメディアユニット１１２６０にアクセスするようにしてもよく、このようにしても、仮想ボリュームで管理するデータ自体を送信する必要がないので、容量プールの空き容量を迅速に増加させることができる。
【図面の簡単な説明】
【０１９４】
【図１】本発明の第１実施形態に係る計算機システムの構成例を示す図である。
【図２】メモリ１１１１２内の構造を示す図である。
【図３】メモリ１１２１２内の構造を示す図である。
【図４】ＲＡＩＤグループ管理テーブル１１１１２−１１の構造を示す図である。
【図５】ボリューム管理テーブル１１１１２−１２の構造を示す図である。
【図６】仮想ボリューム割り当て領域管理テーブル１１１１２−１３の構造を示す図である。
【図７】容量プール構成管理テーブル１１１１２−１４の構造を示す図である。
【図８】容量プール操作プログラム１１１１２−０２を構成する処理の構造を示す図である。
【図９】ボリューム操作プログラム１１１１２−０３を構成する処理の構造を示す図である。
【図１０】Ｉ／Ｏ処理プログラム１１１１２−０４を構成する処理の構造を示す図である。
【図１１】コマンド処理プログラム１１１１２−００により実行される処理手順を示すフローチャートである。
【図１２】コマンド処理プログラム１１１１２−００により実行される処理手順を示すフローチャートであり、図１１の続きである。
【図１３】メッセージ受信処理プログラム１１１１２−０１により実行される処理手順を示すフローチャートである。
【図１４】容量プール作成制御処理１１１１２−０２−０１のフローチャートである。
【図１５】容量プール作成処理１１１１２−０２−０２のフローチャートである。
【図１６】容量プール容量追加処理１１１１２−０２−０３のフローチャートである。
【図１７】容量プール状態取得処理１１１１２−０２−０６のフローチャートである。
【図１８】容量プール状態収集制御１１１１２−０２−０７の処理手順を示すフローチャートである。
【図１９】仮想ボリューム作成処理１１１１２−０３−０２のフローチャートである。
【図２０】仮想ボリューム移動制御１１１１２−０３−０３の処理手順を示すフローチャートである。
【図２１】仮想ボリューム削除処理１１１１２−０３−０４のフローチャートである。
【図２２】記憶領域割り当て処理１１１１２−０３−０５のフローチャートである。
【図２３】記憶領域解放処理１１１１２−０３−０６のフローチャートである。
【図２４】データ複製処理１１１１２−０３−０７のフローチャートである。
【図２５】Ｉ／Ｏ停止処理１１１１２−０４−０１のフローチャートである。
【図２６】Ｉ／Ｏ開始処理１１１１２−０４−０２のフローチャートである。
【図２７】書き込みＩ／Ｏ処理１１１１２−０４−０３のフローチャートである。
【図２８】読み出しＩ／Ｏ処理１１１１２−０４−０４のフローチャートである。
【図２９】ＨＤＤ操作プログラム１１１１２−０５により実行される処理手順を示すフローチャートである。
【図３０】ストレージ管理端末１１０１０のユーザインタフェース１１０１４の出力画面を示す図である。
【図３１】本発明の第２実施形態に係る計算機システムの構成例を示す図である。
【図３２】容量プール操作プログラム１１１１２−０２を構成する処理の構造を示す図である。
【図３３】コマンド処理プログラム１１１１２−００により実行される処理手順を示すフローチャートである。
【図３４】メッセージ受信処理プログラム１１１１２−０１により実行される処理手順を示すフローチャートである。
【図３５】容量プール空き領域移動制御１１１１２−０２−０４のフローチャートである。
【図３６】容量プール空き領域送信処理１１１１２−０２−０５のフローチャートである。
【図３７】記憶領域割り当て処理１１１１２−０３−０５のフローチャートである。
【符号の説明】
【０１９５】
１００００…ホストコンピュータ、１１０００…ストレージサブシステム、１１１００…ストレージモジュール、１１１１０…コントローラ、１１１１１…プロセッサ、１１１１２…メモリ、１１１１２−００…コマンド処理プログラム、１１１１２−０１…メッセージ受信処理プログラム、１１１１２−０２…プール操作プログラム、１１１１２−０３…ボリューム操作プログラム、１１１１２−０４…Ｉ／Ｏ処理プログラム、１１１１２−０５…ＨＤＤ操作プログラム、１１１１２−１１…ＲＡＩＤグループ管理テーブル、１１１１２−１２…ボリューム管理テーブル、１１１１２−１３…仮想ボリューム割り当て領域管理テーブル、１１１１２−１４…容量プール構成管理テーブル、１１１１２−１５…キャッシュ領域管理テーブル、１１１１２−２０…キャッシュ領域、１１１１３…ストレージモジュール間接続インタフェース、１１１１４…ＨＤＤ接続インタフェース、１１１１５…ストレージネットワークインタフェース、１１１１６…管理端末接続インタフェース、１１１６０…ストレージユニット、１１１６１…ハードディスクドライブ、１１２００…ストレージモジュール、１１２１０…コントローラ、１１２１１…プロセッサ、１１２１２…メモリ、１１２１３…ストレージモジュール間接続インタフェース、１１２１４…ＨＤＤ接続インタフェース、１１２１５…ストレージネットワークインタフェース、１１２１６…管理端末接続インタフェース、１１２６０…ストレージユニット、１１２６１…ハードディスクドライブ、１１０１０…ストレージ管理端末、１１０１３…管理端末接続インタフェース、１１０１４…ユーザインタフェース、１２０００…ストレージネットワーク。
【図１】
2008186172.tif 000003
【図２】
2008186172.tif 000004
【図３】
2008186172.tif 000005
【図４】
2008186172.tif 000006
【図５】
2008186172.tif 000007
【図６】
2008186172.tif 000008
【図７】
2008186172.tif 000009
【図８】
2008186172.tif 000010
【図９】
2008186172.tif 000011
【図１０】
2008186172.tif 000012
【図１１】
2008186172.tif 000013
【図１２】
2008186172.tif 000014
【図１３】
2008186172.tif 000015
【図１４】
2008186172.tif 000016
【図１５】
2008186172.tif 000017
【図１６】
2008186172.tif 000018
【図１７】
2008186172.tif 000019
【図１８】
2008186172.tif 000020
【図１９】
2008186172.tif 000021
【図２０】
2008186172.tif 000022
【図２１】
2008186172.tif 000023
【図２２】
2008186172.tif 000024
【図２３】
2008186172.tif 000025
【図２４】
2008186172.tif 000026
【図２５】
2008186172.tif 000027
【図２６】
2008186172.tif 000028
【図２７】
2008186172.tif 000029
【図２８】
2008186172.tif 000030
【図２９】
2008186172.tif 000031
【図３０】
2008186172.tif 000032
【図３１】
2008186172.tif 000033
【図３２】
2008186172.tif 000034
【図３３】
2008186172.tif 000035
【図３４】
2008186172.tif 000036
【図３５】
2008186172.tif 000037
【図３６】
2008186172.tif 000038
【図３７】
2008186172.tif 000039