(57)【特許請求の範囲】
【請求項１】
データが記録された記録領域を含む物理ディスクに、追加データを記録するための予約割当領域が割り当てられ、前記予約割当領域に前記追加データを記録すると共に、前記物理ディスクに記録されている前記データ及び前記追加データの容量を前記物理ディスクの使用量として設定された検知タイミングに基づいて検知し、前回の前記物理ディスクの使用量に対する現在の前記物理ディスクの使用量の増減量を求めると共に、前記物理ディスクの使用量の増減量と前記予約割当領域の容量との比率を求め、前記比率に基づいて、前記予約割当領域の容量を変更するための変更容量を求める計算部と、
前記計算部で求めた変更容量の前記予約割当領域が前記物理ディスクにおいて連続するように、前記予約割当領域を前記物理ディスクに割り当てる割当部と、
前回の前記物理ディスクの使用量を示す情報と、現在の前記物理ディスクの使用量を示す情報と、予約割当領域の容量を示す情報と、が対応付けて登録されたテーブルを記憶する記憶部と、
を含み、
前記計算部は、前記設定された検知タイミングに基づいて、前記テーブルに格納された前記現在の前記物理ディスクの使用量を示す情報を前記前回の前記物理ディスクの使用量を示す情報として前記テーブルを更新しかつ、検知した前記物理ディスクに割り当てられた前記記録領域の容量を示す情報を現在の前記物理ディスクの使用量を示す情報として前記テーブルを更新すると共に、前記比率に基づいて、前記物理ディスクの使用量を示す情報に対応する前記予約割当領域の変更容量を示す情報を前記テーブルの予約割当領域の容量を示す情報として更新し、
前記割当部は、前記記憶部に記憶された前記テーブルに登録された容量の前記予約割当領域が前記物理ディスクにおいて連続するように、前記予約割当領域を前記物理ディスクに割り当てるストレージ制御装置。
【請求項２】
前記計算部は、前記比率に基づいて、前記物理ディスクの使用量の増減傾向を判定する判定部を含み、前記判定部で判定された前記物理ディスクの使用量の増減傾向に基づいて、前記物理ディスクの使用量に対応する前記予約割当領域の変更容量を求める
請求項１に記載のストレージ制御装置。
【請求項３】
前記記憶部は、前回の前記物理ディスクの使用量を示す情報と、現在の前記物理ディスクの使用量を示す情報と、予約割当領域の容量を示す情報と、前記テーブルに前記物理ディスクの使用量の増減傾向を示す判定値の情報と、が対応付けて登録された前記テーブルを記憶し、
前記計算部は、前記比率に基づいて、前記物理ディスクの使用量の増減傾向を判定した検定結果を示す情報を前記判定値の情報として前記テーブルを更新し、前記記憶部に格納された前記テーブルの前記判定値の情報に基づいて、前記物理ディスクの使用量に対応する前記予約割当領域の変更容量を求める
請求項１に記載のストレージ制御装置。
【請求項４】
前記記憶部は、維持、拡大及び縮小を示す情報を判定値として前記物理ディスクの使用量の増減傾向を判定するための前記比率の基準値が、前記判定値毎に前記物理ディスク全体の容量に対する前記物理ディスクの使用量の使用量率に対応付けて登録された基準テーブルを含み、
前記計算部は、前記物理ディスク全体の容量に対する前記物理ディスクの使用量の使用量率を求めると共に、前記記憶部に格納された前記テーブルの前記判定値の情報及び前記基準テーブルの前記使用量率に対応する前記基準値に基づいて、前記物理ディスクの使用量に対応する前記予約割当領域の変更容量を求める
請求項３に記載のストレージ制御装置。
【請求項５】
前記記憶部は、前記比率の基準値に対応する前記物理ディスクの使用量の増減傾向に対して拡大率または縮小率を示す情報が対応付けて登録された拡縮テーブルを含み、
前記計算部は、前記記憶部に記憶された前記拡縮テーブルに基づいて、前記物理ディスクの使用量に対応する前記予約割当領域の変更容量を求める
請求項４に記載のストレージ制御装置。
【請求項６】
物理ディスクを含む物理ストレージに対して仮想的な論理ディスクを含む仮想ストレージが対応され、前記仮想的な論理ディスクに対して前記データの記録が要求されたときに、前記計算部に前記予約割当領域の変更容量を求めさせかつ、前記割当部に前記予約割当領域を前記物理ディスクに割り当てさせる処理を実行させる実行部を含む
請求項１〜請求項５の何れか１項に記載のストレージ制御装置。
【請求項７】
データが記録された記録領域を含む物理ディスクに、追加データを記録するための予約割当領域が割り当てられ、前記予約割当領域に前記追加データを記録すると共に、前記物理ディスクに記録されている前記データ及び前記追加データの容量を前記物理ディスクの使用量として設定された検知タイミングに基づいて検知し、前回の前記物理ディスクの使用量に対する現在の前記物理ディスクの使用量の増減量を求めると共に、前記物理ディスクの使用量の増減量と前記予約割当領域の容量との比率を求め、前記比率に基づいて、前記予約割当領域の容量を変更するための変更容量を求める計算ステップと、
前記計算ステップで求めた変更容量の前記予約割当領域が前記物理ディスクにおいて連続するように、前記予約割当領域を前記物理ディスクに割り当てる割当ステップと、
を備え、
記憶部に、前回の前記物理ディスクの使用量を示す情報と、現在の前記物理ディスクの使用量を示す情報と、予約割当領域の容量を示す情報と、を対応付けて登録されたテーブルが記憶され、
前記計算ステップは、前記設定された検知タイミングに基づいて、前記テーブルに格納された前記現在の前記物理ディスクの使用量を示す情報を前記前回の前記物理ディスクの使用量を示す情報として前記テーブルを更新しかつ、検知した前記物理ディスクに割り当てられた前記記録領域の容量を示す情報を現在の前記物理ディスクの使用量を示す情報として前記テーブルを更新すると共に、前記比率に基づいて、前記物理ディスクの使用量を示す情報に対応する前記予約割当領域の変更容量を示す情報を前記テーブルの予約割当領域の容量を示す情報として更新し、
前記割当ステップは、前記記憶部に記憶された前記テーブルに登録された容量の前記予約割当領域が前記物理ディスクにおいて連続するように、前記予約割当領域を前記物理ディスクに割り当てるストレージ制御方法。
【請求項８】
前記計算ステップは、前記比率に基づいて、前記物理ディスクの使用量の増減傾向を判定する判定ステップを含み、前記判定ステップで判定された前記物理ディスクの使用量の増減傾向に基づいて、前記物理ディスクの使用量に対応する前記予約割当領域の変更容量を求める
請求項７に記載のストレージ制御方法。
【請求項９】
記憶部に、前回の前記物理ディスクの使用量を示す情報と、現在の前記物理ディスクの使用量を示す情報と、予約割当領域の容量を示す情報と、前記テーブルに前記物理ディスクの使用量の増減傾向を示す判定値の情報、を対応付けて登録された前記テーブルが記憶され、
前記計算ステップは、前記比率に基づいて、前記物理ディスクの使用量の増減傾向を判定した検定結果を示す情報を前記判定値の情報として前記テーブルを更新し、前記記憶部に格納された前記テーブルの前記判定値の情報に基づいて、前記物理ディスクの使用量に対応する前記予約割当領域の変更容量を求める
請求項７に記載のストレージ制御方法。
【請求項１０】
記憶部に、維持、拡大及び縮小を示す情報を判定値として前記物理ディスクの使用量の増減傾向を判定するための前記比率の基準値が、前記判定値毎に前記物理ディスク全体の容量に対する前記物理ディスクの使用量の使用量率に対応付けて登録された基準テーブルが含まれ、
前記計算ステップは、前記物理ディスク全体の容量に対する前記物理ディスクの使用量の使用量率を求めると共に、前記記憶部に格納された前記テーブルの前記判定値の情報及び前記基準テーブルの前記使用量率に対応する前記基準値に基づいて、前記物理ディスクの使用量に対応する前記予約割当領域の変更容量を求める
請求項９に記載のストレージ制御方法。
【請求項１１】
記憶部に、前記比率の基準値に対応する前記物理ディスクの使用量の増減傾向に対して拡大率または縮小率を示す情報が対応付けて登録された拡縮テーブルが含まれ、
前記計算ステップは、前記記憶部に記憶された前記拡縮テーブルに基づいて、前記物理ディスクの使用量に対応する前記予約割当領域の変更容量を求める
請求項１０に記載のストレージ制御方法。
【請求項１２】
物理ディスクを含む物理ストレージに対して仮想的な論理ディスクを含む仮想ストレージが対応され、前記仮想的な論理ディスクに対して前記データの記録が要求されたときに、前記計算ステップに前記予約割当領域の変更容量を求めさせかつ、前記割当ステップに前記予約割当領域を前記物理ディスクに割り当てさせる処理を実行させる実行ステップを含む
請求項７〜請求項１１の何れか１項に記載のストレージ制御方法。
【請求項１３】
コンピュータに、
前記コンピュータを、データが記録された記録領域を含む物理ディスクに、追加データを記録するための予約割当領域が割り当てられ、前記予約割当領域に前記追加データを記録すると共に、前記物理ディスクに記録されている前記データ及び前記追加データの容量を前記物理ディスクの使用量として設定された検知タイミングに基づいて検知し、前回の前記物理ディスクの使用量に対する現在の前記物理ディスクの使用量の増減量を求めると共に、前記物理ディスクの使用量の増減量と前記予約割当領域の容量との比率を求め、前記比率に基づいて、前記予約割当領域の容量を変更するための変更容量を求める計算ステップと、
前記計算ステップで求めた変更容量の前記予約割当領域が前記物理ディスクにおいて連続するように、前記予約割当領域を前記物理ディスクに割り当てる割当ステップと、
を含み、
記憶部に、前回の前記物理ディスクの使用量を示す情報と、現在の前記物理ディスクの使用量を示す情報と、予約割当領域の容量を示す情報と、を対応付けて登録されたテーブルが記憶され、
前記計算ステップは、前記設定された検知タイミングに基づいて、前記テーブルに格納された前記現在の前記物理ディスクの使用量を示す情報を前記前回の前記物理ディスクの使用量を示す情報として前記テーブルを更新しかつ、検知した前記物理ディスクに割り当てられた前記記録領域の容量を示す情報を現在の前記物理ディスクの使用量を示す情報として前記テーブルを更新すると共に、前記比率に基づいて、前記物理ディスクの使用量を示す情報に対応する前記予約割当領域の変更容量を示す情報を前記テーブルの予約割当領域の容量を示す情報として更新し、
前記割当ステップは、前記記憶部に記憶された前記テーブルに登録された容量の前記予約割当領域が前記物理ディスクにおいて連続するように、前記予約割当領域を前記物理ディスクに割り当てる処理を実行させるためのストレージ制御プログラム。
【請求項１４】
コンピュータを、請求項７〜請求項１２の何れか１項記載のストレージ制御方法に係る処理を実行させるためのストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、ストレージ制御方法、及びストレージ制御プログラムに関する。
【背景技術】
【０００２】
有限容量の物理的なディスク領域を有する物理的なストレージに対して、データを格納するためにユーザが要求した全容量を最初から割り当てるシックプロビジョニング方式という技術が知られている。シックプロビジョニング方式では、実際に使用する容量と無関係に要求された全容量が割り当てられるために、物理的なストレージを効率的に使用できい。
【０００３】
これに対して、物理的なディスク領域を効率的に利用するために、ユーザが要求した全容量を最初から割り当てるのではなく、データを格納するために実際に使用する容量を割り当てるシンプロビジョニング方式という技術が知られている。シンプロビジョニング方式では、ストレージに含まれる物理的なディスク領域を、ブロックと呼ばれる小さな領域（例えば、512KB）を単位として分割し、必要に応じて１ブロックずつ適宜割り当てる。つまり、割り当てられる容量が実際に格納するデータのデータ量に応じて１ブロック単位で徐々に拡縮する。例えば、１００ＧＢの仮想ディスクを作成した場合、作成と同時に物理的に１００ＧＢの領域を割り当てずに、実際にデータが格納される容量に応じたブロック数の領域が割り当てられる。
【０００４】
ところで、シンプロビジョニング方式では、物理的なストレージを効率的に利用できる一方で、個々のユーザに割り当てられる領域が物理的なディスク領域上で分散するため、シックプロビジョニング方式の技術に比べてＩ／Ｏ性能が悪化する場合がある。
【０００５】
そこで、仮想ディスクの作成時に物理的なディスク領域に固定数のブロックを予約しておく技術が知られている。この技術では、有限容量の物理的なディスク領域を有する物理的なストレージに仮想ディスクを作成するときに、固定数のブロックを予約している。
【０００６】
また、シンブロビジョニング方式を適用するときに、１つの論理ディスクに対して異なるＩ／Ｏパターンが存在している場合の性能向上を図る技術が知られている。この技術では、仮想的な論理ディスクを構築するストレージに対して、書込要求に応じてデータ領域を確保してデータの書き込む。このとき、シーケンシャルI／ＯまたはランダムI／ＯのデータのＩ／Ｏパターンに応じて、１つの論理ディスクに対して割り当てるポリシーを変更し、固定的なブロックを割り当てる。さらに、プログラムやデータを管理するファイリングシステムのファイル作成にあたって、ファイルを構成する物理ブロックの物理的な連続性を確保する技術が知られている。この技術では、ファイルの作成時に最初に確保した領域の直後に、連続的に物理ブロックを延長できる場合に、予備ブロックを拡張する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−２８２６０８号公報
【特許文献２】特開２０１０−０８６４２０号公報
【特許文献３】特開平２−０７７９４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、ストレージに格納するデータの容量は、時々刻々と変化する。従って、物理的なディスク領域に対して固定的なタイミング、例えば仮想ディスクの作成時や、ファイルの作成時にのみ、物理的なディスク領域上に割り当てる領域（ブロック）を考慮したのでは不充分である。また、物理的なディスク領域に対して固定的な領域を割り当てることでは、時々刻々と変化するストレージに格納するデータの容量に対応するには不充分である。
【０００９】
１つの側面では、ストレージのＩ／Ｏ性能の劣化の低減を図ることを目的とする。
【課題を解決するための手段】
【００１０】
開示の技術は、データが記録された記録領域を含む物理ディスクに、追加データを記録するための予約割当領域が割り当てられ、予約割当領域に追加データを記録する。これと共に、物理ディスクに記録されているデータ及び追加データの容量を物理ディスクの使用量として、設定された検知タイミングに基づいて検知し、前回の物理ディスクの使用量に対する現在の物理ディスクの使用量の増減量を求める。例えば、仮想化された環境の場合には、仮想ディスクを単位として、物理ディスクに記録されているデータ及び追加データの容量を物理ディスクの使用量とする。そして、設定された検知タイミングに基づいて検知し、前回の物理ディスクの使用量に対する現在の物理ディスクの使用量の増減量を求める。また、物理ディスクの使用量の増減量と予約割当領域の容量との比率を求め、比率に基づいて、予約割当領域の容量を変更するための変更容量を求める。求めた変更容量の予約割当領域が物理ディスクにおいて連続するように、予約割当領域を物理ディスクに割り当てる。
また、前回の物理ディスクの使用量を示す情報と、現在の物理ディスクの使用量を示す情報と、予約割当領域の容量を示す情報と、が対応付けて登録されたテーブルを記憶部に記憶する。また、設定された検知タイミングに基づいて、前記テーブルに格納された現在の物理ディスクの使用量を示す情報を前回の物理ディスクの使用量を示す情報として前記テーブルを更新する。かつ、検知した物理ディスクに割り当てられた記録領域の容量を示す情報を現在の物理ディスクの使用量を示す情報として前記テーブルを更新する。それと共に、前記比率に基づいて、物理ディスクの使用量を示す情報に対応する予約割当領域の変更容量を示す情報を前記テーブルの予約割当領域の容量を示す情報として更新する。そして、記憶部に記憶された前記テーブルに登録された容量の予約割当領域が物理ディスクにおいて連続するように、前記予約割当領域を物理ディスクに割り当てる。
【発明の効果】
【００１１】
１つの実施態様では、ストレージのＩ／Ｏ性能の劣化の低減を図ることができる、という効果を有する。
【図面の簡単な説明】
【００１２】
【図１】本実施形態に係るコンピュータシステムの概略構成を示すブロック図である。
【図２】本実施形態に係るコンピュータシステムの詳細構成例を示すブロック図である。
【図３】本実施形態に係るストレージ装置の物理的な概念構成と、仮想的な概念構成の一例を示すイメージ図である。
【図４】物理ディスク管理テーブルの一例を示すイメージ図である。
【図５】フリーリストの一例を示すイメージ図である。
【図６】仮想ストレージ管理テーブルの一例を示すイメージ図である。
【図７】仮想ディスク管理テーブルの一例を示すイメージ図である。
【図８】予約割当領域容量変更基準テーブルの一例を示すイメージ図である。
【図９】縮小率テーブルの一例を示すイメージ図である。
【図１０】拡大率テーブルの一例を示すイメージ図である。
【図１１】計算ブロセスの処理の流れを示すフローチャートである。
【図１２】仮想ストレージの空き容量に応じた拡大率及び縮小率の設定を模式的に示したイメージ図である。
【図１３】要求受付プロセスの処理の流れを示すフローチャートである。
【図１４】実行プロセスの処理の流れを示すフローチャートである。
【図１５】物理ディスク管理プロセスの処理の流れを示すフローチャートである。
【図１６】割当領域探索処理の流れを示すフローチャートである。
【図１７】割当プロセスの処理の流れを示すフローチャートである。
【図１８】予約割当領域を割り当てるときの具体的な一例を示すイメージ図である。
【図１９】予約割当領域を割り当てるときの具体的な一例を示すイメージ図である。
【図２０】予約割当領域を割り当てるときの具体的な一例を示すイメージ図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して開示の技術の実施形態の一例を詳細に説明する。
【００１４】
図１には、本実施形態に係るコンピュータシステム１０の概略構成が示されている。コンピュータシステム１０は、ＬＡＮ等によるネットワーク１６に、複数台のコンピュータ（本実施形態では、サーバ）１２と、サーバ１２の各々が利用するストレージ装置２１と、が各々接続されている。ストレージ装置２１は、複数台の物理ディスクHDD-01,HDD-02,・・・,HDD-n（ｎは自然数）を含むストレージ部１４と、ストレージ制御装置２０と、を備えている。ストレージ部１４とストレージ制御装置２０とは、接続線１８により接続されている。なお、ネットワーク１６はインターネット等の通信ネットワークを含むことができる。
【００１５】
なお、図１では、サーバ１２が複数台設けられた態様を示したが、複数台に限定されるものではなく、１台以上であればいくつであってもよい。
【００１６】
ストレージ制御装置２０は、ストレージ部１４の稼働を制御するためのものである。詳細は後述するが、ストレージ制御装置２０は例えばコンピュータで実現される。ストレージ制御装置２０は、受付部２２，実行部２４、管理部２６，制御部２８及び記憶部３４を備えている。制御部２８は、計算部３０及び割当部３２を含んでいる。また、記憶部３４は、物理ディスク管理テーブル３６，フリーリスト３７，仮想ディスク管理テーブル３８，仮想ストレージ管理テーブル３９，予約割当領域容量変更基準テーブル４０，縮小率テーブル４２及び拡大率テーブル４４の各情報が格納されている。
【００１７】
本実施形態では、ストレージ制御装置２０は、複数台のサーバ１２のデータを記録する装置として、シンプロビジョニング方式による技術によって、物理的なストレージ装置２１を効率的に使用する。具体的には、データを格納するために実際に使用する容量をブロックと呼ばれる小さな領域単位で割り当てる。
【００１８】
図３には、本実施形態に係るストレージ装置２１の物理的な概念イメージと、公知の仮想化技術によって実現される仮想的な概念イメージとが示されている。ストレージ装置２１は、複数台の物理ディスクHDD-01〜HDD-nを含んでいる。仮想化技術は、複数台の物理ディスクをまとめて、あたかも１つの大容量なストレージであるかのように取り扱える仮想ストレージを実現する。さらに、仮想ストレージ上に仮想ディスクを実現する。例えば、５００ＧＢの容量を持つ物理ディスク２つをまとめて１ＴＢの仮想ストレージとすると、物理ディスク単体の容量を超えた７００ＧＢの容量を持つディスクを仮想的に提供することもできる。ストレージ装置２１は、１つ以上の仮想ディスクdisk-01〜disk-m（ｍは自然数）を含む少なくとも１つの仮想ストレージvststorage-01として取り扱うことができるように機能される。
【００１９】
なお、本実施形態では物理ストレージであるストレージ装置２１を１つ以上の仮想ディスクdisk-01〜disk-m（ｍは自然数）を含む少なくとも１つの仮想ストレージvststorage-01として取り扱うときの一例を説明する。しかし、ストレージ装置２１を仮想ディスクや仮想ストレージとして取り扱うことのみに限定されるものではなく、例えば物理ストレージとして扱うストレージ装置を混在させて用いても良い。
【００２０】
図２には、例えばコンピュータにより実現されるストレージ装置２１を含むコンピュータシステム１０の概略構成が示されている。
【００２１】
サーバ１２は、例えば図２に示すコンピュータにより実現することができる。詳細には、サーバ１２はＣＰＵ９０Ａ、メモリ９０Ｂ、不揮発性の記憶部９０Ｃを備え、これらはバス９０Ｊを介して互いに接続されている。記憶部９０ＣはＨＤＤ(Hard Disk Drive)やフラッシュメモリ等によって実現できる。また、サーバ１２はネットワーク１６に接続するためのインタフェース（Ｉ／Ｏ）９０Ｄを備え、Ｉ／Ｏ９０Ｄはバス９０Ｊに接続されている。なお、サーバ１２は、一例として、ディスプレイ９０Ｅ、キーボード９０Ｆ、マウス９０Ｇ及び記録媒体が挿入されて挿入された記録媒体に対して読み書きするための装置（Ｒ／Ｗ）９０Ｈ等の入出力デバイスを備え、これらはバス９０Ｊに接続されている。なお、これらの入出力デバイスは、省略してもよく、必要に応じてバス９０Ｊに接続するようにしてもよい。サーバ１２の記憶部９０Ｃには、サーバ１２を機能させるためのＯＳ９２及びアプリケーションプログラム９４が記憶されている。ＣＰＵ９０Ａは、ＯＳ９２及びアプリケーションプログラム９４を記憶部９０Ｃから読み出してメモリ９０Ｂに展開して、処理を実行する。
【００２２】
ストレージ装置２１に含まれるストレージ部１４の物理ディスクHDD-01は、例えば図２に示すように接続線１８に接続するためのインタフェース（Ｉ／Ｆ）８２，コントローラ８４及びデータを格納するディスク８６を含んでいる。例えば、物理ディスクHDD-01は、接続線１８を介してＩ／Ｆ８２に入力されたコマンドやデータに応じて、コントローラ８４がディスク８６にデータを書き込んだり変更したり消去したりする。
【００２３】
また、ストレージ装置２１に含まれるストレージ制御装置２０は、例えば図２に示すコンピュータ５０により実現することができる。詳細には、コンピュータ５０はＣＰＵ５２、メモリ５４、不揮発性の記憶部５６を備え、これらはバス８０を介して互いに接続されている。記憶部５６はＨＤＤ(Hard Disk Drive)やフラッシュメモリ等によって実現できる。また、コンピュータ５０はネットワーク１６に接続するためのインタフェース（Ｉ／Ｏ）７４を備え、Ｉ／Ｏ７４はバス８０に接続されかつネットワーク１６に接続されている。また、コンピュータ５０は接続線１８に接続するためのインタフェース（Ｉ／Ｆ）７６を備え、Ｉ／Ｆ７６はバス８０に接続されかつ接続線１８に接続されている。なお、コンピュータ５０は、一例として、ディスプレイ７８Ａ、キーボード７８Ｂ、マウス７８Ｃ及び記録媒体が挿入されて挿入された記録媒体に対して読み書きするための装置（Ｒ／Ｗ）７８Ｄ等の入出力デバイス７８を備え、これらはバス８０に接続されている。なお、入出力デバイス７８の一部または全ては、省略してもよく、必要に応じてバス８０に接続するようにしてもよい。
【００２４】
コンピュータ５０の記憶部５６には、コンピュータ５０を、ストレージ部１４を制御する処理を実行するストレージ制御装置２０として機能させるためのストレージ制御プログラム５８が記憶されている。ＣＰＵ５２は、ストレージ制御プログラム５８を記憶部５６から読み出してメモリ５４に展開し、ストレージ制御プログラム５８に含まれるプロセスを順次実行する。つまり、ストレージ制御装置２０がコンピュータ５０で実現され、ＣＰＵ５２がストレージ制御プログラム５８を実行することで、コンピュータ５０はストレージ制御装置２０として動作される。
【００２５】
なお、ストレージ制御プログラム５８は、開示の技術におけるストレージ制御プログラムの一例である。また、ストレージ制御プログラム５８は、コンピュータ５０をストレージ制御装置２０として機能させるためのプログラムでもある。
【００２６】
ストレージ制御プログラム５８は、要求受付プロセス６０、実行プロセス６２、計算ブロセス６６と割当プロセス６８とを含む領域割当制御プロセス６４及び物理ディスク管理プロセス７０を有する。ＣＰＵ５２は、要求受付プロセス６０を実行することで、図１のストレージ制御装置２０における受付部２２として動作する。すなわち、ストレージ制御装置２０がコンピュータ５０で実現され、要求受付プロセス６０を実行することでコンピュータ５０はストレージ制御装置２０の受付部２２として動作される。また、ＣＰＵ５２は、実行プロセス６２を実行することで、図１のストレージ制御装置２０における実行部２４として動作する。すなわち、ストレージ制御装置２０がコンピュータ５０で実現され、実行プロセス６２を実行することでコンピュータ５０はストレージ制御装置２０の実行部２４として動作される。
【００２７】
また、ＣＰＵ５２は、領域割当制御プロセス６４を実行することで、図１のストレージ制御装置２０における制御部２８として動作する。すなわち、ストレージ制御装置２０がコンピュータ５０で実現され、領域割当制御プロセス６４を実行することで、コンピュータ５０はストレージ制御装置２０の制御部２８として動作される。なお、ＣＰＵ５２が、領域割当制御プロセス６４に含まれる計算ブロセス６６を実行することで、コンピュータ５０はストレージ制御装置２０の計算部３０として動作される。また、ＣＰＵ５２が、領域割当制御プロセス６４に含まれる割当プロセス６８を実行することで、コンピュータ５０はストレージ制御装置２０の割当部３２として動作される。
【００２８】
また、ＣＰＵ５２は、物理ディスク管理プロセス７０を実行することで、図１のストレージ制御装置２０における管理部２６として動作する。すなわち、ストレージ制御装置２０がコンピュータ５０で実現され、物理ディスク管理プロセス７０を実行することでコンピュータ５０はストレージ制御装置２０の管理部２６として動作される。
【００２９】
また、コンピュータ５０の記憶部５６には、データベース７２が記憶されている。データベース７２は、物理ディスク管理テーブル３６，フリーリスト３７，仮想ディスク管理テーブル３８，仮想ストレージ管理テーブル３９，予約割当領域容量変更基準テーブル４０，縮小率テーブル４２及び拡大率テーブル４４を含んでいる。コンピュータ５０の記憶部５６に記憶されたデータベース７２は図１のストレージ制御装置２０の記憶部３４に対応する。
【００３０】
物理ディスク管理テーブル３６は、ストレージ装置２１のストレージ部１４において物理ディスクと、仮想ストレージ及び仮想ディスクとの関係を示す情報をテーブルとしてデータベース７２に格納したものである。
【００３１】
データベース７２に格納される物理ディスク管理テーブル３６の一例を図４に示す。物理ディスク管理テーブル３６は、「物理ディスクの識別子」、「ブロック番号」、「状態」、「ゼロクリア」、「割当先の仮想ストレージ」、及び「割当先の仮想ディスク」の各情報が対応付けて各々登録されている。図４に示す物理ディスク管理テーブル３６における「物理ディスクの識別子」の情報は、ストレージ部１４に含まれる物理ディスクHDD-01〜HDD-nの何れかを識別するための識別子を示す情報である。また、「ブロック番号」の情報は、例えば５１２ＫＢの小さな領域を１ブロックとして物理ディスクHDD-01の記憶領域を複数のブロックに分割したときの物理ディスクHDD-01上における各ブロックの位置を示す情報である。なお、ブロック番号の最大値は、物理ディスクの容量に依存して決定される。
【００３２】
また、「状態」の情報は、初期状態及び通常状態のとき、「正常」を示すデータが格納される。例えば、ブロックが読取不能になった等のように壊れた場合に 「異常」を示すデータが格納される。また、「ゼロクリア」の情報は、ブロックが初期化された状態である場合に 「TRUE」を示すデータが格納される。例えば、データ書込み時には「FALSE」を示すデータが格納される。例えば、実行部２４がブロックへのデータ書込み時に管理部２６に通知し、通知を受けた管理部２６が当該ブロックの「ゼロクリア」の情報として「FALSE」を示すデータを格納する。また、「割当先の仮想ストレージ」の情報は、当該ブロックの割当先の仮想ストレージを示すデータ（例えば仮想ストレージの識別子）が格納される。
【００３３】
また、「割当先の仮想ディスク」の情報は、当該ブロックの割当先の仮想ディスクを示すデータ（例えば仮想ディスクの識別子）が格納される。なお、「ゼロクリア」及び「割当先の仮想ディスク」の情報は、関係性を有する。すなわち、「ゼロクリア」及び「割当先の仮想ディスク」の情報は、初期状態（未使用）のブロックの場合、「ゼロクリア」に「TRUE」が格納されかつ「割当先の仮想ディスク」に「−」が格納される。また、詳細を後述する予測により、データ書込みに先行して仮想ディスクに割当られたブロックの場合、「ゼロクリア」に「TRUE」が格納されかつ「割当先の仮想ディスク」に「仮想ディスクの識別子」が格納される。また、仮想ディスクに割当られて、データが書込まれたブロックの場合、「ゼロクリア」に「FALSE」が格納されかつ「割当先の仮想ディスク」に「仮想ディスクの識別子」が格納される。また、仮想ディスクが削除され、初期化中であるブロックの場合、「ゼロクリア」に「FALSE」が格納されかつ「割当先の仮想ディスク」に非割当を示す「−」が格納される。
【００３４】
図４の物理ディスク管理テーブル３６では、物理ディスクの使用状況に応じて配列した一例を示した。具体的には、テーブル欄３６−１では、物理ディスクHDD-01において、ブロック番号が0x000001〜0x00000F の領域に仮想ディスクdisk-01 のデータが書込まれていることを示す。テーブル欄３６−２では、物理ディスクHDD-01において、ブロック番号が0x000010〜0x000017 の領域に仮想ディスクdisk-02 のデータが書込まれていることを示す。テーブル欄３６−３では、物理ディスクHDD-01において、ブロック番号が0x000018〜0x00001E の領域に仮想ディスクdisk-01 のデータが書込まれていることを示す。テーブル欄３６−４では、物理ディスクHDD-01において、ブロック番号が0x00001F〜0x000022 の領域が仮想ディスクdisk-01 が使うことを予測して割当てられていることを示す。テーブル欄３６−５では、物理ディスクHDD-01のブロック番号が0x000023以降の領域及び物理ディスクHDD-02において、未使用の領域（空き領域）であることを示す。
【００３５】
なお、本実施形態では、管理部２６において、物理ディスク上の空き領域（初期状態のブロック）の管理を容易にするために、物理ディスク管理テーブル３６の他にフリーリスト３７を用いている。なお、フリーリスト３７は、開示の技術では必ずしも必要なものではなく、省略してもよい。フリーリスト３７は、空き領域の先頭ブロック番号と末尾ブロック番号の組を保持する。フリーリスト３７は、一例として図５に示すように、「仮想ストレージの識別子」、「物理ディスクの識別子」、「先頭ブロック番号」、及び「末尾のブロック番号」の各情報が対応付けて各々登録されている。
【００３６】
コンピュータ５０のデータベース７２に含まれる仮想ストレージ管理テーブル３９は、仮想ストレージと物理ディスクとが対応付けられた情報を登録したものである。仮想ストレージ管理テーブル３９の一例を図６に示す。仮想ストレージ管理テーブル３９には、「仮想ストレージの識別子」、「仮想ストレージの物理的容量」、「仮想ストレージの物理的空き容量」、「使用済み容量の割合」、及び「割り当てた物理ディスクの識別子」の各情報が対応付けて各々登録されている。なお、仮想ストレージの物理的な容量は、仮想ストレージに割り当てた物理ディスクの容量の合計値を示す情報である。また、仮想ストレージの物理的な空き容量は、仮想ストレージに割り当てた物理ディスクの空き容量の合計値を示す情報である。
【００３７】
また、データベース７２に含まれる仮想ディスク管理テーブル３８は、仮想ディスクの稼働状況を示す情報を登録したものである。仮想ディスク管理テーブル３８の一例を図７に示す。仮想ディスク管理テーブル３８には、「仮想ディスクの識別子」、「仮想ディスクの容量」、「割当済容量」の各情報が対応付けて各々登録されている。また、仮想ディスク管理テーブル３８には、「作成元の仮想ストレージの識別子」、「前回チェックの使用量」、「現在の実使用量」、「予約割当の容量」、及び「前回判定」の各情報が対応付けて各々登録されている。
【００３８】
図７に示す仮想ディスク管理テーブル３８における「仮想ディスクの識別子」の情報は、仮想ディスクを識別するための情報である。また、「仮想ディスクの容量」の情報は、仮想ディスクに対して予め定められた容量を示す情報である。また、「割当済容量」の情報は、データを書き込むために仮想ディスクに対して実際に割り当てられた容量を示す情報である。また、「作成元の仮想ストレージの識別子」の情報は、仮想ディスクが作成されたときの作成元の仮想ストレージを識別するための情報である。また、「前回チェックの使用量」の情報は、詳細を後述する領域割当制御処理によって仮想ディスクの使用量が定期的に検知されるときの前回の検知結果の実使用量を示す情報である。また、「現在の実使用量」の情報は、詳細を後述する領域割当制御処理による現在の検知結果の実使用量を示す情報である。また、「予約割当の容量」の情報は、詳細を後述する領域割当制御処理によって仮想ディスクの使用量が定期的に検知されるときに計算される予約割当領域の容量を示す情報である。また、「前回判定」の情報は、詳細を後述する領域割当制御処理による仮想ディスクの使用量に対して予約割当領域の増減または維持の判定結果を示す情報である。
【００３９】
また、データベース７２に含まれる予約割当領域容量変更基準テーブル４０は、予約割当領域容量を拡縮するときの判定基準を示す情報を登録したものである。具体的には、詳細を後述する領域割当制御処理によって仮想ディスクの使用量が定期的に検知されるときに、物理ディスクに連続したブロックを予約割当する領域の容量について拡大、縮小、及び割当中止の判定基準を示す。予約割当領域容量変更基準テーブル４０の一例を図８に示す。予約割当領域容量変更基準テーブル４０には、「状態名」、「閾値」、「Ｘ」、及び「Ｙ」の各情報が対応付けて各々登録されている。
【００４０】
図８に示す予約割当領域容量変更基準テーブル４０における「状態名」の情報は、仮想ストレージの物理的な空き容量の状態を示す情報である。つまり、仮想ストレージに属する物理ディスクの空き容量の総量についての状態である。本実施形態では、状態Ａ、状態Ｂ、状態Ｃ、及び状態Ｄの４つの状態を用いている。状態Ａは、仮想ストレージの物理的な空き容量に余裕がある状態を示す。状態Ｂは、仮想ストレージの物理的な空き容量が予め定めた標準的な状態を示す。状態Ｃは、仮想ストレージの物理的な空き容量が少ない状態を示す。状態Ｄは、仮想ストレージの物理的な空き容量がわずかである状態を示す。なお、本実施形態では、状態Ａ、状態Ｂ、状態Ｃ、及び状態Ｄの４つの状態を使用する場合を説明するが、開示の技術は、４つの状態に限定されるものではない。例えば、２つの状態や３つの状態でもよく、５つ以上の状態でもよい。
【００４１】
予約割当領域容量変更基準テーブル４０における「閾値」の情報は、上記「状態名」の情報である状態Ａ、状態Ｂ、状態Ｃ、及び状態Ｄの各々に対応する使用済容量の割合の閾値を示す。この使用済容量の割合とは、仮想ストレージの物理的な容量に対して仮想ストレージの物理的な空き容量の割合を示す。図８では、閾値として、状態Ａが３０％、状態Ｂが６０％、状態Ｃが８０％、及び状態Ｄが９０％のデータが格納される一例を示している。例えば、仮想ストレージの使用済容量の割合が３０％以下のとき余裕のある状態Ａ、３０％を超えて６０％未満のとき標準的な状態Ｂ、６０％を超えて８０％未満のとき警告を要する状態Ｃ、８０％を超えて９０％未満のとき逼迫状態Ｄとなる。この場合、仮想ストレージの使用済容量の割合が９０％以上のとき、緊急状態として他の処理へ移行することができる。なお、逼迫状態Ｄは、８０％を超えているときの状態としてもよい。つまり、８０％を超えて１００％までを逼迫状態Ｄとしてもよい。
【００４２】
また、予約割当領域容量変更基準テーブル４０における「Ｘ」及び「Ｙ」の情報は、拡大縮小の判定基準値を示す情報である。拡大縮小の判定基準値とは、予め割り当てられている予約割当領域の容量に対する実際の物理ディスクに記録されたデータの増減量の比率の判定基準値を示す。図８では、縮小の判定基準値Ｘとして、状態Ａが３０％、状態Ｂが５０％、及び状態Ｃが７０％のデータが格納される一例を示している。なお、状態Ｄのときの縮小の判定基準値Ｘは、仮想ストレージの物理的な空き容量がわずかであることが推測されるため、物理ディスクに予約割当領域を設定することを中止することを示す情報が格納される。また、拡大の判定基準値Ｙとして、状態Ａが８０％、状態Ｂが１００％、及び状態Ｃが１５０％のデータが格納される一例を示している。なお、状態Ｄのときの拡大の判定基準値Ｙは、縮小の判定基準値と同様に、物理ディスクに予約割当領域を設定することを中止することを示す情報が格納される。
【００４３】
縮小の判定基準値Ｘは、図９に示す縮小率テーブル４２と連動する。図９には、縮小率テーブル４２の一例を示す。縮小率テーブル４２には、「適用状態名」、「増加量の割合」、及び「縮小率」の各情報が対応付けて各々登録されている。予約割当領域容量変更基準テーブル４０の縮小の判定基準値Ｘに対して縮小率テーブル４２の増加量の割合が基準値となり、縮小率が設定される。例えば、余裕のある状態Ａで、増加量の割合が０〜３０％の場合に予約割当領域の容量に対する縮小率は、「０．７」が設定される。また、標準的な状態Ｂで、増加量の割合が０〜５０％の場合に予約割当領域の容量に対する縮小率は、「０．５」が設定される。なお、本実施形態では、警告を要する状態Ｃについて、段階的な縮小率を設定可能にしている。例えば増加量の割合を０〜７０％について３段階に分類して設定できる。つまり、状態Ｃで、増加量の割合が０〜３０％のとき予約割当領域の容量に対する縮小率は「０．３」が設定され、増加量の割合が３０〜５０％のとき縮小率は「０．５」が設定され、増加量の割合が５０〜７０％のとき縮小率は「０．７」が設定される。なお境界値（３０％または５０％）のときは、何れか一方の縮小率を使用する定義を予め設定すればよい。
【００４４】
また、拡大の判定基準値Ｙは、図１０に示す拡大率テーブル４４と連動する。図１０には、拡大率テーブル４４の一例を示す。拡大率テーブル４４には、「適用状態名」、「増加量の割合」、及び「拡大率」の各情報が対応付けて各々登録されている。予約割当領域容量変更基準テーブル４０の拡大の判定基準値Ｙに対して拡大率テーブル４４の増加量の割合が基準値となり、拡大率が設定される。本実施形態では、余裕のある状態Ａについて、段階的な拡大率を設定可能にしている。例えば増加量の割合が８０％以上について３段階に分類して設定できる。つまり、状態Ａで、増加量の割合が８０〜１００％のとき予約割当領域の容量に対する拡大率は「１．２」が設定され、増加量の割合が１００〜１５０％のとき拡大率は「１．５」が設定され、増加量の割合が１５０％〜のとき拡大率は「実績値」が設定される。なお、実績値は、増加量の実績値を予約割当領域の容量で除算した値を拡大率として用いる。また、境界値（１００％または１５０％）のときは、何れか一方の拡大率を使用する定義を予め設定すればよい。また、本実施形態では、標準的な状態Ｂについて、段階的な拡大率を設定可能にしている。例えば増加量の割合が１００％以上について２段階に分類して設定できる。つまり、状態Ｂで、増加量の割合が１００〜１５０％のとき予約割当領域の容量に対する拡大率は「１．５」が設定され、増加量の割合が１５０％〜のとき拡大率は「実績値」が設定される。また、状態Ｃでは、増加量の割合が１５０％〜の場合に予約割当領域の容量に対する拡大率は、「１．５」が設定される。
【００４５】
次に本実施形態の作用を説明する。
本実施形態では、ストレージ性能、例えばＩ／Ｏ性能の劣化を低減化するために、時々刻々と変化するストレージ装置２１に格納するデータの実際の容量を検知しつつ、物理ディスクに連続的なブロックを事前に予約割当領域として割り当てる。そこで、時々刻々と変化するストレージ装置２１に格納するデータの実際の容量を検知して、予約割当領域容量を求める予約割当領域の容量更新処理を、設定された検知タイミングに基づいて（例えば、一定時間毎に）実行する。
【００４６】
すなわち、本実施形態では、コンピュータ５０においてストレージ制御プログラム５８における、領域割当制御プロセス６４に含まれる計算ブロセス６６による処理が定期的に実行される。例えば、コンピュータ５０のＣＰＵ５２は、領域割当制御プロセス６４に含まれる計算ブロセス６６を記憶部５６から読み出してメモリ５４に展開して実行することで、予約割当領域の容量更新処理を実行する。なお、予約割当領域の容量更新処理は、例えば、ユーザによりキーボード７８Ｂ等の入出力デバイス７８で指示されて実行することもできる。
【００４７】
図１１は、本実施形態に係るコンピュータ５０で実行されるストレージ制御プログラム５８に含まれる計算ブロセス６６の流れを示すフローチャートである。つまり、コンピュータ５０において計算ブロセス６６が実行されることで、コンピュータ５０はストレージ制御装置２０における制御部２８の計算部３０として動作し、予約割当領域の容量更新処理を実行する。図１１に示すように、一定時間毎に（例えば５分毎に）、予約割当領域の容量更新処理が実行されて、ステップ１００へ進み、変数ｎを初期値（ｎ＝１）に設定し、次のステップ１０２において、仮想ディスク管理テーブル３８の第ｎ番目の仮想ディスクdisk-nで、仮想ディスクの作成元の仮想ストレージを特定する。仮想ストレージを特定するには、仮想ディスク管理テーブル３８を参照し、個々の仮想ディスクについて、仮想ディスク管理テーブル３８に登録されている作成元の仮想ストレージを抽出すればよい。
【００４８】
次のステップ１０４では、ステップ１０２で特定した仮想ストレージの物理的な空き容量を確認し、判定基準値Ｘ，Ｙを選択する。まず、仮想ストレージ管理テーブル３９を参照し、ステップ１０２で特定した仮想ストレージの物理的な空き容量を確認する。なお、詳細は後述するが、仮想ストレージ管理テーブル３９はストレージ制御装置２０における制御部２８の割当部３２によって更新されている。次に、仮想ストレージ管理テーブル３９における該当する仮想ストレージについて使用済み容量の割合を取得する。そして、予約割当領域容量変更基準テーブル４０を参照し、取得した仮想ストレージの使用済み容量の割合に対する縮小の判定基準値Ｘと拡大の判定基準値Ｙを取得する。
【００４９】
次に、ステップ１０６において、仮想ディスク管理テーブル３８の第ｎ番目の仮想ディスクdisk-nについて、実使用量の増加量を計算する。すなわち、現時点における第ｎ番目の仮想ディスクdisk-nについて、現在の実使用量から前回チェック（本実施形態では５分前）の使用量を減算することで、実使用量の増加量Ｊを計算する。次のステップ１０８では、実使用量の増加量Ｊと、現在の予約割当領域の容量Ｋの比率Ｇを計算する（Ｇ＝Ｊ／Ｋ）。現在の予約割当領域の容量Ｋは、仮想ディスク管理テーブル３８における予約割当のブロック数から求めることができる。つまり、本実施形態では、例えば１ブロックが５１２ＫＢであるので、ブロック数に５１２ＫＢを乗算することで求めればよい。
【００５０】
次のステップ１１０では、比率Ｇが縮小の判定基準値Ｘ以上か否かを判断し、肯定判断のときはステップ１１２へ進む。ステップ１１２では、比率Ｇが拡大の判定基準値Ｙ以上か否かが判断され、否定判断のときは、ステップ１１４において判定を「維持」に決定し、ステップ１２８へ進む。
【００５１】
一方、ステップ１１０で否定判断されるとステップ１１６において判定を「縮小」に決定し、ステップ１１８へ進む。ステップ１１８では、仮想ディスク管理テーブル３８を参照し、前回の判定が「拡大」であったか否かが判断され、肯定判断のときは、ステップ１１４において判定が「維持」に決定される。一方、ステップ１１８で否定判断のときは、ステップ１２０へ進み、予約割当領域の容量を縮小し、ステップ１２８へ進む。ステップ１２０では、縮小率テーブル４２を参照し、適合する状態に一致する状態における増加量の割合に該当する縮小率を取得する。そして、取得した縮小率を予約割当領域の容量（ブロック数）に乗算し、これから割り当てるべき予約割当領域の容量（ブロック数）を求める。このようにして求めたこれから割り当てるべき予約割当領域の容量（ブロック数）で、仮想ディスク管理テーブル３８における予約割当のブロック数を更新する。
【００５２】
また、ステップ１１２で肯定判断されると、ステップ１２２において判定を「拡大」に決定し、ステップ１２４へ進む。ステップ１２４では、仮想ディスク管理テーブル３８を参照し、前回の判定が「縮小」であったか否かが判断され、肯定判断のときは、ステップ１１４において判定が「維持」に決定される。一方、ステップ１２４で否定判断のときは、ステップ１２６へ進み、予約割当領域の容量を拡大し、ステップ１２８へ進む。ステップ１２６では、拡大率テーブル４４を参照し、適合する状態に一致する状態における増加量の割合に該当する拡大率を取得する。そして、取得した拡大率を予約割当領域の容量（ブロック数）に乗算し、これから割り当てるべき予約割当領域の容量（ブロック数）を求める。このようにして求めたこれから割り当てるべき予約割当領域の容量（ブロック数）で、仮想ディスク管理テーブル３８における予約割当のブロック数を更新する。
【００５３】
なお、ステップ１１４では、判定が「維持」のため、仮想ディスク管理テーブル３８における予約割当のブロック数の更新は不要である。
【００５４】
次に、ステップ１２８では、仮想ディスク管理テーブル３８を更新する。すなわち、ステップ１１４，ステップ１１６またはステップ１２２により決定された判定値を、仮想ディスク管理テーブル３８の前回判定の情報として更新する。また、ステップ１２８では、仮想ディスク管理テーブル３８に登録されている現在の実使用量を前回チェックの使用量に更新すると共に、現時点の使用量を現在の実使用量の情報として更新する。
【００５５】
次に、ステップ１３０において、変数ｎをインクリメントし、ステップ１３２において変数ｎが仮想ディスク管理テーブル３８における仮想ディスクの総数以上か否かが判断される。ステップ１３２で否定判断のときはステップ１０２へ戻り、残存する仮想ディスクについて上記と同様に処理を実行する。一方、ステップ１３２で肯定判断されると本処理ルーチンを終了する。なお、仮想ディスク管理テーブル３８に仮想ストレージが複数登録されているときには、次の仮想ストレージを特定し、ステップ１０４に戻り処理を繰り返す。
【００５６】
ここで、本実施形態では、ステップ１００〜１２６の処理によって、仮想ストレージの空き容量が多い場合は予約割当領域の割り当てを積極的に実施し、空き容量が少ない場合は予約割当領域の割り当てを抑制している。すなわち、仮想ストレージの物理的な空き容量に応じて、図８の予約割当領域容量変更基準テーブル４０を用いて、縮小／維持／拡大の判定基準を変更する。また、図９の縮小率テーブル４２、及び図１０の拡大率テーブル４４を用いて、縮小率または拡大率を変更する。このように、空き容量に応じて判定基準を調整する。これによって、仮想ストレージの空き容量に応じて、予約割当領域として割り当てる容量を調整できる。
【００５７】
図１２には、仮想ストレージの空き容量に応じた拡大率及び縮小率の設定を模式的に示した。図１２（Ａ）に示すように、仮想ストレージの空き容量に余裕のある状態Ａでは、増加量に対する予約割当容量の比率Ｇについて３段階に分類して拡大率を設定できる（拡大率：「１．２」、「１．５」、「実績値」）。また、図１２（Ｂ）に示すように、標準的な状態Ｂでは、比率Ｇについて２段階に分類して拡大率を設定できる（拡大率：「１．５」、「実績値」）。また、図１２（Ｃ）に示すように、警告を要する状態Ｃでは、比率Ｇについて３段階に分類して縮小率を設定できる（縮小率：「０．３」、「０．５」、「０．７」）。
【００５８】
また、本実施形態では、ステップ１１８またはステップ１２２において前回の判定結果を今回の判定に反映させている。これは、仮想ディスクに対して、例えば書き込んだデータの容量が瞬間的に変動するような、瞬間的な挙動の乱れが生じたときに、予約割当領域の容量が急激に増減することを防止するためである。例えば、今回の判定が前回チェックにおける判定と相反する場合は、予約割当領域の容量を変更せずに（現状維持として）、一定期間について判定を維持させる（本実施形態では、例えば、１回様子を見る。）。具体的には、前回の判定が「拡大」で、今回の判定が「縮小」の場合や前回の判定が「縮小」で、今回の判定が「拡大」の場合である。本実施形態では、２回同じ判定が続くとき（挙動の傾向が同じであるとき）、予約割当領域の容量について縮小または拡大を実施する。
【００５９】
以上のようにして、定期的に予約割当領域の容量更新処理が実行され、仮想ディスク管理テーブル３８が更新される。
【００６０】
次に、ストレージ制御装置２０の作動を説明する。ストレージ制御装置２０は、コンピュータ５０のストレージ制御プログラム５８が実行されることにより、実現される。すなわち、コンピュータ５０のＣＰＵ５２は、ストレージ制御プログラム５８を記憶部５６から読み出してメモリ５４に展開してプロセスを順に実行することで、ストレージ制御処理が実行される。
【００６１】
図１３は、本実施形態に係るコンピュータ５０で実行されるストレージ制御プログラム５８に含まれる要求受付プロセス６０の流れを示すフローチャートである。コンピュータシステム１０におけるコンピュータ５０においてストレージ制御プログラム５８の要求受付プロセス６０が実行されることで、コンピュータ５０はストレージ制御装置２０の受付部２２として動作し、要求受付処理を実行する。図１３に示すように、要求受付プロセス６０が実行されると、ステップ１４０へ進み、受付部２２はサーバ１２からストレージ装置２１に対して書き込み要求を受信するまで（ステップ１４０で肯定判断）、サーバ１２からの情報受信を継続する。
【００６２】
サーバ１２からストレージ装置２１に対してデータの書き込み要求等を受信すると、ストレージ制御装置２０の受付部２２は、ステップ１４２において、要求受付処理を実行する。要求受付処理は、サーバ１２から要求された、例えばデータの書き込み要求等のデータの容量、仮想ストレージ及び仮想ディスクの情報を確認する処理である。このステップ１４２では、サーバ１２から要求された、例えばデータの書き込み要求等のデータの容量、仮想ストレージ及び仮想ディスクの情報を実行部２４に対して確認を要求する。次に、ステップ１４４において実行部２４からの情報を受信するまで（ステップ１４４で肯定判断）、待機する。このとき、実行部２４は、後述する実行プロセス６２の処理ルーチン（図１４参照）が実行され、受付部２２に情報を返信する。
【００６３】
受付部２２は、実行部２４からの情報を受信すると、ステップ１４６において、受信した情報がエラー情報であるか否かを判断し、ステップ１４６で肯定されると、ステップ１５０においてエラー処理を実行し、本ルーチンを終了する。エラー情報の一例にはサーバ１２から書き込み要求がなされたデータの容量が残存する容量を超えた容量であることを示すディスクフルを示す情報がある。この場合、ステップ１５０のエラー処理では、ディスクフルを示す情報をサーバ１２へ返信する。一方、ステップ１４６で否定判断のときには、ステップ１４８において、サーバ１２へ書き込み指示を送信する。すなわち、サーバ１２へデータ送信を促す情報を送信する。これによって、サーバ１２はストレージ装置２１に書き込むためのデータ送信を開始する。なお、ステップ１４８では、サーバ１２から送信されたデータを２４へ転送する処理を含む。
【００６４】
次に、ストレージ制御装置２０は、コンピュータ５０のストレージ制御プログラム５８に含まれる実行プロセス６２が実行されることにより、実行処理が実行される。
【００６５】
図１４は、本実施形態に係るコンピュータ５０で実行されるストレージ制御プログラム５８に含まれる実行プロセス６２の流れを示すフローチャートである。コンピュータシステム１０のコンピュータ５０でストレージ制御プログラム５８の実行プロセス６２が実行されることで、コンピュータ５０はストレージ制御装置２０の実行部２４として動作し、ストレージ部１４に対しデータの書き込み等の実行処理を実行する。図１４に示すように、実行プロセス６２が実行されると、ステップ１６０へ進む。実行部２４は、受付部２２に対してデータの書き込み要求がなされ、受付部２２から要求受付の確認を示す情報を受信するまで（ステップ１６０で肯定判断）、待機する。
【００６６】
ステップ１６０で肯定判断のときには、ステップ１６２において、サーバ１２から要求されたデータの容量や仮想ストレージ及び仮想ディスクの情報についての確認処理を実行する。この確認処理は、サーバ１２から要求された、例えばデータの書き込み要求等のデータの容量、仮想ストレージ及び仮想ディスクの情報を取得する処理である。次のステップ１６４では、ステップ１６２で取得した情報を物理ディスクの管理部２６へ送信することによって、物理ディスクへの書き込み領域の情報を要求する。次に、ステップ１６６において物理ディスクの管理部２６からの情報を受信するまで（ステップ１６６で肯定判断）、待機する。このとき、物理ディスクの管理部２６は、後述する物理ディスク管理プロセス７０の処理ルーチン（図１５参照）が実行され、実行部２４に情報を返信する。
【００６７】
次に、実行部２４はステップ１６８において、管理部２６から受信した情報がエラー情報であるか否かを判断し、ステップ１６８で肯定されると、ステップ１７２においてエラー処理を実行し、本ルーチンを終了する。エラー処理の一例は、ディスクフルを示す情報を返信する処理である。一方、ステップ１６８で否定判断のときには、ステップ１７０において、サーバ１２からのデータを１４に書き込む処理を実行する。
【００６８】
次に、ストレージ制御装置２０は、コンピュータ５０のストレージ制御プログラム５８に含まれる物理ディスク管理プロセス７０が実行されることにより、物理ディスク管理処理が実行される。
【００６９】
図１５は、本実施形態に係るコンピュータ５０で実行されるストレージ制御プログラム５８に含まれる物理ディスク管理プロセス７０の流れを示すフローチャートである。コンピュータシステム１０におけるコンピュータ５０においてストレージ制御プログラム５８の物理ディスク管理プロセス７０が実行されることで、コンピュータ５０はストレージ制御装置２０の管理部２６として動作し、ストレージ部１４の管理処理を実行する。図１５に示すように、物理ディスク管理プロセス７０が実行されると、ステップ１８０へ進む。管理部２６は、実行部２４から物理ディスクへの書き込み領域に関する情報を示す書込領域情報を受信するまで（ステップ１８０で肯定判断）、待機する。
【００７０】
次に、管理部２６はステップ１８２において、実行部２４から要求されたストレージ部１４へ書き込むデータの容量、仮想ストレージ、及び仮想ディスクの情報を取得する。次に、物理ディスク管理テーブル３６を参照し、要求されたストレージ部１４へ書き込むデータに関するストレージ部１４の物理ディスクHDD-01〜HDD-nの領域を特定する。ここでは、予約割当領域として設定されているブロック番号を検知することによって、物理ディスクHDD-01〜HDD-n内の領域を特定する。
【００７１】
次のステップ１８４では、ステップ１８２で特定した物理ディスクの領域が、要求されたストレージ部１４へ書き込むデータの容量を超えるか否かが判断される。ステップ１８４で否定判断の場合にはステップ１８６において、ディスクフルを示すエラー情報を実行部２４へ返信するエラー処理を実行した後に、本処理ルーチンを終了する。
【００７２】
一方、ステップ１８４で肯定判断のときには、ステップ１８８において実行部２４へ物理ディスクへデータを書き込むための領域の情報を返信する。具体的には、ブロック番号を送信する。次のステップ１９０では、上記ステップ１８８で実行部２４へ返信した物理ディスクへデータを書き込むための領域（ブロック）について、物理ディスク管理テーブル３６におけるゼロクリアの情報を「FALSE」に更新する。次のステップ１９２では、制御部２８へ予約割当領域の更新設定を要求する。このとき、制御部２８は、後述する領域割当制御プロセス６４に含まれる割当プロセス６８の処理ルーチン（図１７参照）が実行され、管理部２６に情報を返信する。
【００７３】
次のステップ１９４では、制御部２８からの情報を受信するまで（ステップ１９４で肯定判断）、待機する。このとき、制御部２８が後述する割当プロセス６８を実行し、管理部２６に情報を返信する。割当プロセス６８を実行により返信される情報は、物理ディスクの管理部２６に対して、予約割当領域として設定可能な連続ブロックを探索する要求を示す情報である。
【００７４】
管理部２６が制御部２８からの情報を受信すると、次のステップ１９６において割当領域探索処理（図１６）が実行された後に、本処理ルーチンを終了する。
【００７５】
図１６は、管理部２６において実行される割当領域探索処理の流れを示すフローチャートである。管理部２６は、ステップ２００において、仮想ストレージに割り当てられている物理ディスクに変数size以上の連続した空き領域があるか否かを判断する。この変数sizeは、制御部２８から引数として渡される情報である（図１７参照）。本実施形態では、空き領域管理を容易にするためのフリーリスト３７を使用している。従って、ここでは、フリーリスト３７を参照して、空き領域を確認する。なお、フリーリスト３７を使用しない場合には、仮想ディスク管理テーブル３８、及び、仮想ストレージテーブル３９を参照して割り当てられている物理ディスクの識別子を特定する。次に、物理ディスク管理テーブル３６を参照して当該物理ディスクについて、ゼロクリアが「TRUE」でかつ、割当て先仮想ディスクが「−」である領域を抽出する。
【００７６】
管理部２６は、次のステップ２０２において、物理ディスクの空き領域を選択し、変数size分の領域を割り当てる。ここでは、物理ディスクの空き領域を選択するにあたり、候補となる連続した空き領域が複数ある場合に、周知技術を用いて適切な空き領域を選択すれば良い。例えば、変数sizeのブロック数を満たしかつ最初に見つかった空き領域を選択するファーストヒット法による技術が知られている。また他の例としては、変数sizeのブロック数に一番近い空き領域を選択するベストヒット法による技術が知られている。さらにまた他の例としては、一番大きな空き領域を選択するマキシマム法による技術が知られている。なお、ステップ２０２では、選択した空き領域の先頭ブロックから変数sizeの値のブロックを割り当てることとする。
【００７７】
次のステップ２０４では、フリーリスト３７を更新する。すなわち、ステップ２０２で割り当てられたブロックを、フリーリスト３７から除外する。次のステップ２０６では、ステップ２０２で割り当てた領域の情報を制御部２８へ渡し、本処理ルーチンを終了する。この制御部２８へ渡す情報は、物理ディスクの識別子、先頭ブロックの番号、及び末尾ブロックの番号を含む組情報である。
【００７８】
一方、ステップ２００で否定判断のときには、ステップ２０８へ進み、仮想ストレージに割り当てられている物理ディスクに空き領域が存在するか否かが判断される。ステップ２０８で肯定判断のときには、仮想ストレージに割り当てられている物理ディスクの空き領域で最大の連続空き領域が選択され、ステップ２０４へ処理を移行する。一方、ステップ２０８で否定判断のときには、空き領域が無または極小のため、ステップ２１２においてディスクフルを示すエラー情報が制御部２８へ渡される。
【００７９】
次に、ストレージ制御装置２０は、コンピュータ５０のストレージ制御プログラム５８に含まれる領域割当制御プロセス６４の割当プロセス６８が実行されることにより、領域割当処理が実行される。
【００８０】
図１７は、本実施形態に係るコンピュータ５０で実行されるストレージ制御プログラム５８に含まれる領域割当制御プロセス６４の割当プロセス６８の流れを示すフローチャートである。コンピュータシステム１０におけるコンピュータ５０においてストレージ制御プログラム５８の領域割当制御プロセス６４の割当プロセス６８が実行されることで、コンピュータ５０はストレージ制御装置２０における制御部２８の割当部３２として動作される。図１７に示すように、領域割当制御プロセス６４の割当プロセス６８が実行されると、ステップ２２０へ進む。制御部２８の割当部３２は、管理部２６から予約割当領域設定に関する情報を取得する。予約割当領域設定に関する情報の一例として、予約割当が要求された仮想ディスクの識別子がある。
【００８１】
次のステップ２２２では、予約割当の処理を実行するか否かを判断する。ステップ２２２の判断は、まず仮想ディスク管理テーブル３８を参照し、予約割当が要求された仮想ディスクの作成元の仮想ストレージを特定する。次に、仮想ストレージ管理テーブル３９を参照して、作成元の仮想ストレージの使用済容量の割合を取得し、予約割当領域容量変更基準テーブル４０における何れの状態であるかを特定することにより、ステップ２２２の判断処理とすることができる。つまり、状態Ｄであるときは、予約割当を実施しないと判断する。従って、ステップ２２２で否定判断のときには、ステップ２２４において、予約割当領域の容量Ｓに、初期値を設定し、ステップ２３０へ進む。ステップ２２４で設定する初期値の一例は、１ブロックであり、変数sizeに「１」を設定することができる。
【００８２】
一方、ステップ２２２で肯定判断のときには、ステップ２２６において、仮想ディスク管理テーブル３８から割当済容量Ｒ、予約割当領域の容量Ｓ、及び仮想ディスクの容量Ｕを取得する。また、予約割当領域の容量Ｓを変数sizeに設定する。次のステップ２２８では、Ｒ＋Ｓ≦Ｕか否かが判断される。ステップ２２８において否定判断のときには、ステップ２３０において、仮想ディスクの空き容量を変数sizeに設定し（size＝Ｕ−Ｒ）、ステップ２３２へ進む。すなわち、ステップ２３０では、仮想ディスクの容量Ｕから割当済領域の容量Ｒを減算した容量を変数sizeに設定する。なお、ステップ２２８で肯定判断のときには、そのままステップ２３２へ進む。
【００８３】
ステップ２３２では、仮想ディスク管理テーブル３８から仮想ディスクの作成元の仮想ストレージを特定し、仮想ストレージの識別子を抽出する。次のステップ２３４では、ステップ２３２で特定した仮想ストレージの識別子、及び上記で設定された変数sizeの値を引数として、物理ディスクの管理部２６に、物理領域の割当を要求する。
【００８４】
次に、ステップ２３６において物理ディスクの管理部２６からの情報を受信するまで（ステップ２３６で肯定判断）、待機する。このとき、物理ディスクの管理部２６は、上述の割当領域探索処理（図１６参照）が実行され、実行結果の情報が返信される。次に、制御部２８はステップ２３８において、管理部２６から受信した情報がエラー情報であるか否かを判断し、ステップ２３８で肯定されると、ステップ２４０においてエラー処理を実行し、本ルーチンを終了する。一方、ステップ２３８で否定判断のときには、ステップ２４２へ進む。
【００８５】
ステップ２４２では、割り当てられた物理領域について、物理ディスク管理テーブル３６の割当先の仮想ディスクの情報として、仮想ディスクの識別子を設定する。次のステップ２４４では、割り当てられた容量を求め、仮想ディスク管理テーブル３８の割当済容量、仮想ストレージ管理テーブル３９の物理的な空き領域及び使用済み容量の割合を更新して、本処理ルーチンを終了する。
【００８６】
上記で説明したストレージ制御装置２０によりストレージ部１４に対して予約割当領域を割り当てるときの具体例を図１８〜図２０に示した。なお、ここでは、実使用量の増加量は、現在の実使用量から前回チェックの実使用量を減算したものとする。また、１ブロックの容量は、５１２ＫＢとする。さらに、仮想ストレージvstorage-01の「物理的な空き容量」は５０％（標準）の状態であるものとする。
【００８７】
図１８の例では、仮想ディスクdisk-01については、現在の実使用量から前回チェックの使用量を減算することで求まる増加量３，２１９ＫＢが、予約割当領域の容量の８ブロック（＝４，０９６ＫＢ）に対して８７．６％である。従って、予約割当領域の容量を現状維持とする。仮想ディスクdisk-02については、増加量７，９３６ＫＢが、予約割当領域の容量の１０ブロック（＝５，１２０ＫＢ）に対して１５５％である。従って、予約割当領域の容量を１６ブロック（７９３６／５１２の端数切り上げ）に拡大する。仮想ディスクdisk-03については、増加量３７０ＫＢが、予約割当領域の容量の１ブロック（＝５１２ＫＢ）に対して７２．３％  である。従って、予約割当領域の容量を現状維持とする。
【００８８】
図１９の例では、仮想ディスクdisk-01については、増加量１，７１６ＫＢが、予約割当領域の容量の８ブロック（＝４，０９６ＫＢ）に対して４１．９％である。従って、縮小率テーブル４２に基づき、予約割当領域の容量を４ブロックに縮小する。仮想ディスクdisk-02については、増加量４，６３８ＫＢが、予約割当領域の容量の１６ブロック（＝８，１９２ＫＢ）に対して５６．６％である。従って、予約割当領域の容量を現状維持とする。仮想ディスクdisk-03については、増加量１２８ＫＢが、予約割当領域の容量の１ブロック（＝５１２ＫＢ）に対して２５．０％である。従って、予約割当領域の容量が１ブロック（最小値）であるので、現状維持とする。
【００８９】
図２０の例では、仮想ディスクdisk-01については、増加量５，１２０ＫＢが、予約割当領域の容量の４ブロック（＝４，０９６ＫＢ）に対して１２５．０％である。判定は、「拡大」の範囲だが、前回の判定（縮小）と逆傾向なので、現状維持とする。仮想ディスクdisk-02については、増加量３，８５４ＫＢが、予約割当領域の容量の１６ブロック（＝８，１９２ＫＢ）に対して４７．０％である。従って、縮小率テーブル４２に基づき、予約割当領域の容量を８ブロックに縮小する。仮想ディスクdisk-03については、増加量７４０ＫＢが、予約割当領域の容量の１ブロック（＝５１２ＫＢ）に対して１４４．５％である。従って、予約割当領域の容量を２ブロック（１×１．５＝１．５の端数切り上げ）に拡大する。
【００９０】
以上説明したように、本実施形態では、物理的なディスクを効率的に利用できるシンプロビジョニング方式の技術を応用し、仮想ディスクに割り当てられる領域が物理ディスク上で分散してＩ／Ｏ性能が悪化することを抑制する。すなわち、物理ディスク上に追加領域を割り当てるときに、１ブロック単位ではなく、書き込むデータ量を考慮して、複数のブロックを連続的に割り当てる。これによって、Ｉ／Ｏ性能の劣化を低減化できる。また、書き込まれるデータ量は、実際に書き込まれるまで分からないばかりか、時々刻々と変化する。そこで、本実施形態では、過去の実績値をもとに追加領域を割り当てる容量を予測して、複数のブロックを連続的に割り当てる。このために、定期的に実績値を確認して、予約割当領域の容量であるブロック数を調整する。
【００９１】
詳細には、物理的な空き容量に応じた判定基準を調整する。つまり物理的な空き容量に応じて、予約割当領域の容量であるブロックの数を縮小／維持／拡大の何れかに判定する仮想ディスクの実使用量の増加量の範囲と、縮小率または拡大率を自動的に調整する。また、定期的に実績値を確認して予約割当領域の容量を予測するときに、実績値の履歴を考慮することによって、予約割当領域の容量であるブロック数が急激に変動することを防止する。
【００９２】
これによって、仮想ディスクの空き容量が多い場合は予測割当領域の割り当てを積極的に行い、少ない場合は抑制できる。
【００９３】
なお、上記ではストレージ装置２１に対してデータの書き込み要求の装置としてサーバを一例としたコンピュータシステム１０を例に説明した。しかし、これらの構成に限定されるものではなく、上記説明した要旨を逸脱しない範囲において、各種の改良及び変更を行っても良いのはもちろんである。
【００９４】
また、上記ではプログラムがコンピュータの記憶部に予め記憶（インストール）されている態様を説明したが、処理プログラムは、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の記録媒体に記録されている形態で提供することも可能である。
【００９５】
本明細書に記載された全ての文献、特許出願及び技術規格は、個々の文献、特許出願及び技術規格が参照により取り込まれることが具体的かつ個々に記された場合と同程度に、本明細書中に参照により取り込まれる。
【００９６】
以上の実施形態に関し、更に以下の付記を開示する。
【００９７】
（付記１）
コンピュータに、
前記コンピュータを、物理ディスクにデータが記録された記録割当領域が割り当てられると共に、前記データが記録されるための予約割当領域が前記物理ディスクに割り当てられる場合に、設定された検知タイミングに基づいて前記物理ディスクに割り当てられた前記記録割当領域の容量を前記物理ディスクの使用量として検知し、前回の前記物理ディスクの使用量に対する現在の前記物理ディスクの使用量の増減量を求めると共に、前記物理ディスクの使用量の増減量と前記割り当てられた予約割当領域の容量との比率を求め、前記比率に基づいて、前記物理ディスクの使用量に対応する前記データが記録されるための予約割当領域の容量を求める計算ステップと、
前記計算部で求めた容量の前記予約割当領域が前記物理ディスクにおいて連続するように、前記予約割当領域を前記物理ディスクに割り当てる割当ステップと、
を含む処理を実行させるためのストレージ制御プログラムを記録したコンピュータ読み取り可能な記録媒体。
【００９８】
（付記２）
コンピュータに、請求項８〜請求項１４の何れか１項記載のストレージ制御方法に係る処理を実行させるためのストレージ制御プログラムを記録したコンピュータ読み取り可能な記録媒体。
【符号の説明】
【００９９】
１０    コンピュータシステム
１２    サーバ
１４    ストレージ部
２０    ストレージ制御装置
２１    ストレージ装置
２２    受付部
２４    実行部
２６    管理部
２８    制御部
３０    計算部
３２    割当部
３４    記憶部
３６    物理ディスク管理テーブル
３８    仮想ディスク管理テーブル
３９    仮想ストレージ管理テーブル
４０    予約割当領域容量変更基準テーブル
４２    縮小率テーブル
４４    拡大率テーブル
５０    コンピュータ
５２    ＣＰＵ
５４    メモリ
５６    記憶部
５８    ストレージ制御プログラム
６０    要求受付プロセス
６２    実行プロセス
６４    領域割当制御プロセス
６６    計算ブロセス
６８    割当プロセス
７０    物理ディスク管理プロセス
７２    データベース
【図１】
0005849794.tif 000002
【図２】
0005849794.tif 000003
【図３】
0005849794.tif 000004
【図４】
0005849794.tif 000005
【図５】
0005849794.tif 000006
【図６】
0005849794.tif 000007
【図７】
0005849794.tif 000008
【図８】
0005849794.tif 000009
【図９】
0005849794.tif 000010
【図１０】
0005849794.tif 000011
【図１１】
0005849794.tif 000012
【図１２】
0005849794.tif 000013
【図１３】
0005849794.tif 000014
【図１４】
0005849794.tif 000015
【図１５】
0005849794.tif 000016
【図１６】
0005849794.tif 000017
【図１７】
0005849794.tif 000018
【図１８】
0005849794.tif 000019
【図１９】
0005849794.tif 000020
【図２０】
0005849794.tif 000021