(57)【要約】      （修正有）【課題】動的チャンク割当機能を持つシステムにおいて、データボリューム生成を制御するための方法と装置を提供する。【解決手段】複数のチャンクは一つ以上のデータボリュームに割り当てられているゼロ個以上の使用済みチャンクとゼロ個以上の使用済みチャンクではない残存チャンクを含む。新データボリュームを生成する為の新データボリューム生成動作は、ストレージシステム内の残存チャンクの総数に従って、新データボリュームが生成される前に禁止されるか又は警告される。残存チャンクは更に、一つ以上のデータボリューム内で使用するために予約されているが未だ割り当てられていない予約済みチャンクを含むことができる。【選択図】図６
2010282608.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
メモリ、及び
データボリュームに割り当てられ、それぞれが一つ以上のデータブロックを持つ複数のチャンクと、
から成り、
前記複数のチャンクは一つ以上のデータボリュームに割り当てられているゼロ個以上の使用済みチャンクと、使用済みチャンクではないゼロ個以上の残存チャンクを含み、
新データボリュームを生成する為の新データボリューム生成動作は、ストレージシステム内の前記残存チャンクの総数に従って、該新データボリュームが生成される前に禁止されるか又は警告される
ことを特徴とするストレージシステム。
【請求項２】
前記残存チャンクは、前記一つ以上のデータボリュームに割り当てられていない未使用チャンクと、一つ以上のデータボリューム内で使用するために予約されているが前記一つ以上のボリュームに未だ割り当てられていない予約済みチャンクを含む
ことを特徴とする請求項１によるストレージシステム。
【請求項３】
前記新データボリューム生成動作は、前記使用済みチャンクの総数と前記予約済みチャンクの総数の合計が、前記ストレージシステム内の前記チャンクの総数よりも大であれば禁止され、
前記新データボリューム生成動作は、前記使用済みチャンクの総数と前記予約済みチャンクの総数の合計が、前記ストレージシステム内の前記チャンクの総数の１００パーセントより小さいパーセンテージに等しい閾値よりも大であれば警告が発せられる、
ことを特徴とする請求項２によるストレージシステム。
【請求項４】
前記複数のチャンクは、前記一つ以上のデータボリュームのスナップショット世代を表わす或る時点に於ける一つ以上のデータボリュームのデータボリュームイメージに対して割り当てられている、一つ以上のスナップショットチャンクを含み、
前記複数のチャンクは、使用済みチャンクでなくスナップショットチャンクでもないゼロ個以上の残存チャンクを含む
ことを特徴とする請求項２によるストレージシステム。
【請求項５】
前記新データボリューム生成動作は、前記使用済みチャンクの総数、前記スナップショットチャンクの総数、及び前記予約済みチャンクの総数の合計が前記ストレージシステム内の前記チャンクの総数よりも大であれば禁止され、
前記新データボリューム生成動作は、前記使用済みチャンクの総数、前記スナップショットチャンクの総数、及び前記予約済みチャンクの総数の合計が、前記ストレージシステム内の前記チャンクの総数の１００パーセントより小さいパーセンテージに等しい閾値よりも大であれば警告が発せられる、
ことを特徴とする請求項４によるストレージシステム。
【請求項６】
前記メモリは、スナップショット削除要求を受信すると、一つ以上のスナップショットチャンクを未使用チャンクに変換するように構成されたスナップショットモジュールを有する
ことを特徴とする請求項４によるストレージシステム。
【請求項７】
前記メモリは、前記チャンク数、前記使用済みチャンク数、前記未使用チャンク数、前記予約済みチャンク数、及び前記スナップショットチャンク数を監視し、前記チャンクの将来の消費量を見積るように構成されたチャンク状態監視モジュールを有し、
前記新データボリューム生成動作は、前記チャンクの前記見積られた将来の消費量に従って、前記新データボリュームが生成される前に禁止されるか又は警告される
ことを特徴とする請求項４によるストレージシステム。
【請求項８】
プロセッサと、
メモリ、及び
少なくとも一つのプライマリボリュームと、該少なくとも一つのプライマリボリューム内に保存されたデータに基づくデータを保存するために使用される少なくとも一つのセカンダリボリュームと、を有するデータボリュームに割り当てられ、それぞれが一つ以上のデータブロックを持つ複数のチャンクと、
から成り、
前記複数のチャンクは一つ以上のデータボリュームに割り当てられているゼロ個以上の使用済みチャンクと、一つ以上のデータボリュームに割り当てられていないゼロ個以上の未使用チャンクを含み、
新データボリュームを生成する為の新データボリューム生成動作は、前記少なくとも一つのプライマリボリューム内の前記使用済みチャンクの総数に従って、該新データボリュームが生成される前に禁止されるか又は警告される
ことを特徴とするストレージシステム。
【請求項９】
前記新データボリューム生成動作は、前記少なくとも一つのプライマリボリュームと前記少なくとも一つのセカンダリボリューム内の前記使用済みチャンクの総数に従って、前記新データボリュームが生成される前に禁止されるか又は警告される
ことを特徴とする請求項８によるストレージシステム。
【請求項１０】
前記新データボリューム生成動作は、前記少なくとも一つのプライマリボリュームと前記少なくとも一つのセカンダリボリューム内の前記使用済みチャンクの総数と予約済みチャンクの総数に従って、前記新データボリュームが生成される前に禁止されるか又は警告され、
前記予約済みチャンクは前記少なくとも一つのプライマリボリュームと前記少なくとも一つのセカンダリボリューム内で使用するために予約されているがそれらのボリュームに未だ割り当てられていない
ことを特徴とする請求項９によるストレージシステム。
【請求項１１】
前記新データボリューム生成動作は、前記使用済みチャンクの総数と前記予約済みチャンクの総数の合計が前記ストレージシステム内の前記チャンクの総数よりも大であれば禁止され、
前記新データボリューム生成動作は、前記使用済みチャンクの総数と前記予約済みチャンクの総数の合計が、前記ストレージシステム内の前記チャンクの総数の１００パーセントより小さいパーセンテージに等しい閾値よりも大であれば警告が発せられる、
ことを特徴とする請求項１０によるストレージシステム。
【請求項１２】
前記メモリは、前記チャンク数、前記使用済みチャンク数、前記未使用チャンク数、及び前記予約済みチャンク数を監視し、前記チャンクの将来の消費量を見積るように構成されたチャンク状態監視モジュールを有し、
前記新データボリューム生成動作は、前記チャンクの前記見積られた将来の消費量に従って、前記新データボリュームが生成される前に禁止されるか又は警告される
ことを特徴とする請求項１０によるストレージシステム。
【請求項１３】
前記複数のチャンクは、前記少なくとも一つのプライマリボリュームのスナップショット世代を表わす或る時点に於ける前記少なくとも一つのプライマリボリュームのデータボリュームイメージに対して前記少なくとも一つのセカンダリボリュームに割り当てられた一つ以上のスナップショットチャンクを含む
ことを特徴とする請求項８によるストレージシステム。
【請求項１４】
前記メモリは、スナップショット削除要求を受信すると、前記セカンダリボリューム内の一つ以上のスナップショットチャンクを未使用チャンクに変換するように構成されたスナップショットモジュールを有する
ことを特徴とする請求項１３によるストレージシステム。
【請求項１５】
新データボリューム生成動作は、ストレージシステムが受信する書き込みコマンドに応答して新データボリュームを生成する為に実行され、
前記書き込みコマンドに応答した前記新データボリューム生成動作は、前記新データボリュームに指定された日時が期限満了するまで禁止される
ことを特徴とする請求項８によるストレージシステム。
【請求項１６】
プロセッサと、
メモリ、及び
データボリュームに割り当てられ、それぞれが一つ以上のデータブロックを持つ複数のチャンクと、
から成り、
前記複数のチャンクは一つ以上のデータボリュームに割り当てられているゼロ個以上の使用済みチャンクと、使用済みチャンクではないゼロ個以上の残存チャンクを含み、
データボリューム書き込み動作を受信していない前記データボリュームの一つに対する最初の書き込み動作は、前記ストレージシステム内の前記残存チャンクの総数に従って禁止されるか又は警告される
ことを特徴とするストレージシステム。
【請求項１７】
新データボリュームを生成する為に実行される新データボリューム生成動作は、前記ストレージシステム内の前記残存チャンクの総数に従って、該新データボリュームが生成される前に禁止されるか又は警告され、
前記残存チャンクは、前記一つ以上のデータボリュームに割り当てられていない未使用チャンクと、一つ以上のデータボリューム内で使用するために予約されているが前記一つ以上のボリュームに未だ割り当てられていない予約済みチャンクを含む
ことを特徴とする請求項１６によるストレージシステム。
【請求項１８】
前記新データボリューム生成動作は、前記使用済みチャンクの総数と前記予約済みチャンクの総数の合計が、前記ストレージシステム内の前記チャンクの総数よりも大であれば禁止され、
前記新データボリューム生成動作は、前記使用済みチャンクの総数と前記予約済みチャンクの総数の合計が、前記ストレージシステム内の前記チャンクの総数の１００パーセントより小さいパーセンテージに等しい閾値よりも大であれば警告が発せられる、
ことを特徴とする請求項１７によるストレージシステム。
【請求項１９】
前記複数のチャンクは、前記一つ以上のデータボリュームのスナップショット世代を表わす或る時点に於ける前記一つ以上のデータボリュームのデータボリュームイメージに対して割り当てられた一つ以上のスナップショットチャンクを含み、
前記複数のチャンクは前記使用済みチャンクでなく前記スナップショットチャンクでもないゼロ個以上の残存チャンクを含む
ことを特徴とする請求項１７によるストレージシステム。
【請求項２０】
前記メモリは、前記チャンク数、前記使用済みチャンク数、前記未使用チャンク数、前記予約済みチャンク数、及び前記スナップショットチャンク数を監視し、前記チャンクの将来の消費量を見積るように構成されたチャンク状態監視モジュールを有し、
前記新データボリューム生成動作は、前記チャンクの前記見積られた将来の消費量に従って、前記新データボリュームが生成される前に禁止されるか又は警告される
ことを特徴とする請求項１９によるストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
０００１    本発明は一般的にはストレージシステムに関連し、より具体的には動的チャンク割り当て機能を有するデータストレージシステムに於けるデータボリューム生成を制御するための方法及び装置に関連する。
【背景技術】
【０００２】
０００２    データボリューム中で消費される物理ブロックを少なくするために、ストレージシステムでは動的チャンク割り当て機能が採用される。この種のストレージシステムは、データボリュームが当初は物理ブロックを持たないという意味で特有のデータボリュームを持つ。ストレージシステムは、データボリュームが書き込みコマンドを受信し、書き込みコマンドで指定される適切なセグメントに未だチャンクが割り当てられていない時に、チャンクプールからチャンクを割り当てる。ここで「動的チャンク割り当てボリューム（ＤＣＡＶ）」と呼ばれるこの特有のデータボリュームがチャンクを消費することなく生成される。従って一度に膨大な数のＤＣＡＶを生成することがあり得る。例えば、膨大な数の仮想サーバが配備される場合には、膨大な数のＤＣＡＶが生成され、連携される。しかしながら、（例えば、ホストコンピュータからＯＳやアプリケーションソフトウェアをインストールするために）その後膨大な数のＤＣＡＶが一斉に使用され、チャンクが急速に消費される。チャンクの急速な消費の結果、ストレージシステムは短時間のうちに停止せざるを得ない。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
０００３    ストレージシステムに於ける動的チャンク割り当て機能の方法は、例えばＵＳ２００７／０２３４１０９号及び米国特許６，８３６，８１９号に開示されている。更に具体的には、これらの文献は使用済みチャンク数が予め決められた閾値を越えた時点で警告を発する方法を開示している。しかしながら、それらは使用済み／未使用チャンク数及び／又は容量増大情報に従ってデータボリューム生成を制御するためのいかなる方法も装置も開示していない。
【課題を解決するための手段】
【０００４】
０００４    本発明の典型的な実施例は、データストレージシステムに於けるデータボリューム生成を制御するための方法と装置を提供する。データストレージシステムは、データボリュームが書き込みコマンドを受信し、適切なセグメントに未だチャンクが割り当てられていない時に、チャンクプールからデータボリュームにチャンクが割り当てられる、動的チャンク割り当て機能を有する。データボリューム生成が制御される。
【０００５】
０００５    動的チャンク割り当てを備えるデータストレージシステムは警告機能を有する。使用済みチャンク数が予め決められた閾値を越えた時点で警告が発せられる。しかしながら、多数のデータボリュームが生成され、書き込み動作が一斉に実行されて、チャンク不足によりストレージシステムを停止させる必要が起こるであろう。例えば、複数のＯＳとアプリケーションソフトウェアのインストールはインストール開始後多数のチャンクを消費する。この停止を避けるために、ストレージシステム内の使用済み／未使用チャンク数及び／又は容量増大情報に従って、データボリュームの生成が禁止されるか又は警告される。従来技術ではデータボリューム生成を禁止していない。チャンク不足とストレージシステム停止はシステムが動的チャンク割り当てボリュームを使用開始後に起きる可能性がある。本発明は事前の見積りに従ってデータボリューム生成を禁止する。
【０００６】
０００６    ストレージシステムに於ける動的チャンク割り当てプログラムは、チャンクをチャンクプールからデータボリュームに割り当てる。この動的チャンク割り当てプログラムはチャンクプール管理テーブルとチャンクテーブルを使用する。ストレージシステムはデータボリュームを生成できるか禁止すべきかを決定するデータボリューム禁止プログラムを有する。データボリューム禁止プログラムは禁止を決定するために使用済み／未使用チャンク数及び／又は容量増大情報を参照する。
【０００７】
０００７    ストレージ装置は更に一つのデータボリュームに対して複数世代のスナップショットを取得するためのスナップショットプログラムを有する。スナップショットの各世代も又チャンクを消費する。その場合、データボリューム禁止プログラムは禁止を決定するために使用済み／未使用チャンク数、容量増大情報、及び／又はスナップショット世代に使用されるチャンク数を参照する。
【０００８】
０００８    本発明の一つの態様によれば、ストレージシステムはプロセッサ、メモリ、及びデータボリュームに割り当てられ、それぞれが一つ以上のデータブロックを持つ複数のチャンクから成る。複数のチャンクは一つ以上のデータボリュームに割り当てられているゼロ個以上の使用済みチャンクと、ゼロ個以上の使用済みチャンクでない残存チャンクを含む。新データボリュームを生成する為の新データボリューム生成動作は、ストレージシステム内の残存チャンクの総数に従って、新データボリュームが生成される前に禁止されるか又は警告される。
【０００９】
０００９    或る実施例では、残存チャンクは、一つ以上のデータボリュームに割り当てられていない未使用チャンクと、一つ以上のデータボリューム内で使用するために予約されているが一つ以上のボリュームに未だ割り当てられていない予約済みチャンクを含む。新データボリューム生成動作は、使用済みチャンクの総数と予約済みチャンクの総数の合計がストレージシステム内のチャンクの総数よりも大であれば禁止される。新データボリューム生成動作は、使用済みチャンクの総数と予約済みチャンクの総数の合計が、ストレージシステム内のチャンクの総数の１００パーセントより小さい或るパーセンテージに等しい閾値よりも大であれば警告が発せられる。複数のチャンクは一つ以上のデータボリュームのスナップショット世代を表わす、或る時点に於ける一つ以上のデータボリュームのデータボリュームイメージに対して割り当てられている、一つ以上のスナップショットチャンクを含む。複数のチャンクは使用済みチャンクでもスナップショットチャンクでもないゼロ個以上の残存チャンクを含む。
【００１０】
００１０    特定の実施例では、新データボリューム生成動作は、使用済みチャンクの総数、スナップショットチャンクの総数、及び予約済みチャンクの総数の合計がストレージシステム内のチャンクの総数よりも大であれば禁止される。新データボリューム生成動作は、使用済みチャンクの総数、スナップショットチャンクの総数、及び予約済みチャンクの総数の合計がストレージシステム内のチャンクの総数の、１００パーセントより小さい或るパーセンテージに等しい閾値よりも大であれば警告が発せられる。メモリは、スナップショット削除要求を受信すると、一つ以上のスナップショットチャンクを未使用チャンクに変換するように構成されたスナップショットモジュールを有する。メモリは、チャンク数、使用済みチャンク数、未使用チャンク数、予約済みチャンク数、及びスナップショットチャンク数を監視し、チャンクの将来消費量を見積るように構成されたチャンク状態監視モジュールを有する。新データボリューム生成動作は、見積ったチャンクの将来の消費量に従って、新データボリュームが生成される前に禁止されるか又は警告される。
【００１１】
００１１    本発明の別な態様によれば、ストレージシステムはプロセッサ、メモリ、及び少なくとも一つのプライマリボリュームと、該少なくとも一つのプライマリボリューム内に保存されるデータに基づくデータを保存するために使用される少なくとも一つのセカンダリボリュームと、を有するデータボリュームに割り当てられ、それぞれが一つ以上のデータブロックを持つ、複数のチャンクから成る。複数のチャンクは一つ以上のデータボリュームに割り当てられているゼロ個以上の使用済みチャンクと、一つ以上のデータボリュームに割り当てられていないゼロ個以上の未使用チャンクを含む。新データボリュームを生成する為の新データボリューム生成動作は、少なくとも一つのプライマリボリューム内の使用済みチャンクの総数に従って、新データボリュームが生成される前に禁止されるか又は警告される。
【００１２】
００１２    或る実施例では、新データボリューム生成動作は、少なくとも一つのプライマリボリュームと少なくとも一つのセカンダリボリューム内の使用済みチャンクの総数に従って、新データボリュームが生成される前に禁止されるか又は警告される。新データボリューム生成動作は、少なくとも一つのプライマリボリュームと少なくとも一つのセカンダリボリューム内の使用済みチャンクの総数と予約済みチャンクの総数に従って、新データボリュームが生成される前に禁止されるか又は警告される。この予約済みチャンクは少なくとも一つのプライマリボリュームと少なくとも一つのセカンダリボリュームに未だ割り当てられていないがここで使用するために予約されている。複数のチャンクは少なくとも一つのプライマリボリュームのスナップショット世代を表わす、或る時点に於ける少なくとも一つのプライマリボリュームのデータボリュームイメージに対して少なくとも一つのセカンダリボリュームに割り当てられている、一つ以上のスナップショットチャンクを含む。新データボリューム生成動作は、ストレージシステムが受信する書き込みコマンドに応答して新データボリュームを生成する為に実行される。書き込みコマンドに応答した新データボリューム生成動作は、新データボリュームに指定された指定の日時の期限が満了するまで禁止される。
【００１３】
００１３    本発明の別な態様によれば、ストレージシステムはプロセッサ、メモリ、データボリュームに割り当てられ、それぞれが一つ以上のデータブロックを持つ複数のチャンクから成る。複数のチャンクは一つ以上のデータボリュームに割り当てられているゼロ個以上の使用済みチャンクと、使用済みチャンクでないゼロ個以上の残存チャンクを含む。まだデータボリューム書き込み動作を受信していないデータボリュームの一つに対する最初の書き込み動作は、ストレージシステム内の残存チャンクの総数に従って禁止されるか又は警告される。
【００１４】
００１４    或る実施例では、新データボリュームを生成する為に実行される新データボリューム生成動作は、ストレージシステム内の残存チャンクの総数に従って、新データボリュームが生成される前に禁止されるか又は警告される。この残存チャンクは、一つ以上のデータボリュームに割り当てられていない未使用のチャンクと、一つ以上のデータボリューム内での使用のために予約されているが一つ以上のボリュームに未だ割り当てられていない予約済みチャンクを含む。
【００１５】
００１５    本発明のこれら及びその他の特徴や利点は以下の具体的な実施例の詳細な説明によってこの技術分野に於ける通常の知識を有する者（当業者）には明らかになるであろう。
【図面の簡単な説明】
【００１６】
【図１ａ】００１６    図１（ａ）は本発明の方法と装置が適用可能な情報システムのハードウェア構成の例を示す。
【図１ｂ】００１７    図１（ｂ）は図１（ａ）の情報システム内のストレージ装置のハードウェア構成と論理構造の例を示す。
【図２】００１８    図２は書き込みコマンド、動的チャンク割り当てボリューム、チャンクプール、チャンク、及びＨＤＤの関係を示す。
【図３ａ】００１９    図３（ａ）は図１（ｂ）のストレージ装置のメモリ内のチャンクプール管理テーブルの例を示す。
【図３ｂ】００１９    図３（ｂ）は図１（ｂ）のストレージ装置のメモリ内のチャンクプール管理テーブルの例を示す。
【図４】００２０    図４は動的チャンク割り当てボリュームに対する図１（ｂ）のストレージ装置のメモリ内のチャンクテーブル１６９の例を示す。
【図５ａ】００２１    図５（ａ）は図１（ｂ）のストレージ装置のメモリ内のチャンクプール状態テーブルの例を示す。
【図５ｂ】００２１    図５（ｂ）は図１（ｂ）のストレージ装置のメモリ内のチャンクプール状態テーブルの例を示す。
【図５ｃ】００２１    図５（ｃ）は図１（ｂ）のストレージ装置のメモリ内のチャンクプール状態テーブルの例を示す。
【図６】００２２    図６はＤＣＡＶプロビジョニングプロセスのプロセスフローダイアグラムの例を示す。
【図７ａ】００２３    図７（ａ）はＤＣＡＶを生成するための図１（ａ）の管理コンピュータ上の管理画面の例を示す。
【図７ｂ】００２３    図７（ｂ）はＤＣＡＶを生成するための図１（ａ）の管理コンピュータ上の管理画面の例を示す。
【図７ｃ】００２３    図７（ｃ）はＤＣＡＶを生成するための図１（ａ）の管理コンピュータ上の管理画面の例を示す。
【図７ｄ】００２３    図７（ｄ）はＤＣＡＶを生成するための図１（ａ）の管理コンピュータ上の管理画面の例を示す。
【図８ａ】００２４    図８（ａ）は図１（ａ）の管理コンピュータ内の予約済みチャンクのデフォルトテーブルの例を示す。
【図８ｂ】００２４    図８（ｂ）は図１（ａ）の管理コンピュータ内の予約済みチャンクのデフォルトテーブルの例を示す。
【図９】００２５    図９は第一の実施例による図１（ｂ）のストレージ装置のメモリ内の応答プログラム、動的チャンク割り当てプログラム、及びデータボリューム生成禁止プログラムを含む、書き込み動作のプロセスフローダイアグラムの例を示す。
【図１０】００２６    図１０は図１（ｂ）のストレージ装置のメモリ内の応答プログラムを含む読み出し動作のプロセスフローダイアグラムの例を示す。
【図１１】００２７    図１１はＲＡＩＤグループ内にチャンクを持つＲＡＩＤ構成の例を示す。
【図１２】００２８    図１２は第二の実施例による図１（ｂ）のストレージ装置のメモリ内のチャンクテーブルの例を示す。
【図１３】００２９    図１３は第二の実施例による図１（ｂ）のストレージ装置のメモリ内のスナップショットカタログテーブルの例を示す。
【図１４】００３０    図１４は第二の実施例による図１（ｂ）のストレージ装置のメモリ内の応答プログラム、動的チャンク割り当てプログラム、及びデータボリューム生成禁止プログラムを含むスナップショット付き書き込み動作のプロセスフローダイアグラムの例を示す。
【図１５】００３１    図１５はスナップショット選択動作に対する管理コンピュータの画面表示の例を示す。
【図１６】００３２    図１６はスナップショット世代数が減少時のデータボリュームの使用済み及び未使用チャンクを示す。
【図１７】００３３    図１７は第二の実施例による図１（ｂ）のストレージ装置のメモリ内の分類テーブルの例を示す。
【図１８】００３４    図１８は管理コンピュータでのスナップショット世代を含む選択のための画面表示の例を示す。
【図１９】００３５    図１９は管理コンピュータでの削除対象世代の選択動作画面の画面表示例を示す。
【図２０】００３６    図２０は図１（ｂ）のストレージ装置のメモリ内のチャンク消費量追跡テーブル１６６の例を示す。
【図２１】００３７    図２１はチャンク消費量追跡テーブルを可視化したグラフを示す。
【発明を実施するための最良の形態】
【００１７】
００３８    本発明の以下の詳細な説明に於いて、付随する図面が参照され、これら図面は発明の開示の一部を構成し、図中では本発明が実施可能な典型的な実施例が、限定する目的ではなく説明の目的で示される。図中では複数の図間で同じ数字は実質的に同じコンポーネントを表わす。更に、詳細な説明では以下に記述され図中で示されるように種々の典型的な実施例が提供されるが、本発明はここで記述され示された実施例に限定されるものでなく、当業者には既知であるか知るところになるであろう他の実施例に拡張可能であることに注意願いたい。明細書中の「一つの実施例」、「本実施例」、又は「これらの実施例」という言及は、その実施例に関連して記述された特定の特徴、構造、特性が本発明の少なくとも一つの実施例に含まれることを意味し、これらの語句が明細書中の種々の箇所で出現しても、必ずしもすべてが同じ実施例に言及しているわけでない。更に、以下の詳細な説明に於いて、本発明について完全に理解できるように、数多くの具体的な詳細が説明される。しかしながら、これらの具体的な詳細は、本発明を実施するのにすべてが必要なわけでないことは当業者には明白であろう。他の状況として、公知の構造、材料、回路、プロセス及びインタフェースは詳細には説明されておらず、及び／又は本発明を必ずしも不明確にしない範囲でブロックダイアグラム形式で示される場合もある。
【００１８】
００３９    更に、以下の詳細な説明の或る部分はコンピュータ内の動作のアルゴリズムや記号表現の観点から提供される。これらのアルゴリズムの記述や記号表現は、データ処理技術分野に於ける当業者が自らの革新的なアイデアの本質を、この技術分野に於ける他の当業者に最も効果的に伝えるために使用される手段である。アルゴリズムとは望ましい最終状態又は結果に導くための一連の定義されたステップである。本発明では、実行されるステップは実際の結果を達成するために実際の物理操作を必要とする。通常、必ずしも必然ではないが、これらの量は電気又は磁気信号、又は保存され、転送され、結合され、比較され、及びその他の方法で操作できる命令の形態をとる。時には、主として慣用されていると言う理由でこれらの信号を、ビット、値、要素、シンボル、文字、用語、数、命令等と呼ぶ、のが便利なことが分かっている。しかしながら、これらすべて及び同様な語句は相当する物理量に関連付けられるべきものであり、これらの量に適用される単なる便宜的な呼び方に過ぎないことを心に留めておく必要がある。特に個別に断らない限り、以下の議論で明らかなように、説明を通じて、「処理する」、「計算する」、「見積る」、「決定する」、「表示する」等の語句を使用した議論は、コンピュータシステムのレジスタやメモリ内の物理的（電子的）な量で表わされるデータを操作し、コンピュータシステムのメモリ又はレジスタ又は他の情報ストレージ、転送又は表示デバイス内の同様に物理的な量で表わされる他のデータへと変換する、コンピュータシステム又は他の情報処理装置の動作や処理を含むことができることは言うまでもない。
【００１９】
００４０    本発明は更に、ここで述べた動作を実行するための装置にも関連する。この装置は必要とされる目的のために特別に構築されたものであっても良いし、一つ以上のコンピュータプログラムにより選択的に起動され又は再構成される一つ以上の汎用コンピュータを含んでいても良い。そのようなコンピュータプログラムは光ディスク、磁気ディスク、リードオンリメモリ、ランダムアクセスメモリ、半導体デバイス及びドライブ、又は任意のその他の種類の電子的な情報を保存するのに適した媒体等、ただしこれらに限定されることなく、コンピュータ読み取り可能ストレージ媒体に保存することができる。ここで提供されるアルゴリズムやディスプレイは本質的にいかなる特定のコンピュータやそれ以外の装置にも関連しない。種々の汎用システムがここでの教示に従うプログラムとモジュールにより使用可能であるが、或いは望まれる方法ステップを実行するためにより専用の装置を構築するのが便利だと分かる可能性もある。更に、本発明はいかなる特定のプログラミング言語をも参照して記述してはいない。多様なプログラミング言語がここで記述された発明の教示を実行するために使用可能であることは言うまでもない。プログラミング言語の命令は一つ以上の処理装置、例えば中央処理装置（ＣＰＵ）、プロセッサ、又はコントローラ、によって実行可能である。
【００２０】
００４１    以下に、より詳細に記述する本発明の典型的な実施例は、動的チャンク割り当て機能を有するデータストレージシステムに於いて、データボリューム生成を制御するための装置、方法及びコンピュータプログラムを提供する。
【００２１】
００４２    第一の実施例
【００２２】
００４３    Ａ．システム構成と論理構造
【００２３】
００４４    図１は本発明の方法と装置が適用可能な情報システムのハードウェア構成の例を示す。本情報システムはホストコンピュータ１０、ストレージ装置１００、管理コンピュータ５００、データネットワーク５０、及び管理ネットワーク９０を有する。
【００２４】
００４５    少なくとも一つのホストコンピュータ１０はデータネットワーク５０を経由してストレージ装置１００に接続される。本実施例では、少なくとも一つのＯＳ（オペレーティングシステム）１３がホストコンピュータ１０上で実行される。アプリケーションプログラム１４はＯＳ１３上で実行することができる。ＯＳ１３とアプリケーションプログラム１４用のファイルとデータは、ストレージ装置１００によって提供されるデータボリューム内に保存される。ＯＳ１３とアプリケーションプログラム１４はストレージ装置１００に対して書き込み及び／又は読み出しコマンドを発行する。ＯＳ１３とアプリケーションプログラム１４は最初にインストールされる。インストール開始後には大量のデータがデータボリュームに書き込まれる。
【００２５】
００４６    本情報システムは少なくとも一つのストレージ装置１００を有し、それぞれにはストレージコントローラ１５０と一つ以上のＨＤＤ（ハードディスクドライブ）１０１が含まれる。ストレージ装置１００は一つ以上のＨＤＤ１０１から成る一つ以上のチャンクプール１１０を持つ。ストレージ装置１００はホストコンピュータ１０に一つ以上のデータボリュームを提供する。本実施例ではストレージ装置１００は動的チャンク割り当てプログラム１６０を有する（図１（ｂ）を参照）。データボリュームは動的チャンク割り当てボリューム（ＤＣＡＶ）として生成される。少なくとも一つの管理コンピュータ５００が管理ネットワーク９０を経由してストレージ装置に接続される。
【００２６】
００４７    ホストコンピュータ１０とストレージ装置１００はデータネットワーク５０を経由して接続される。本実施例ではデータネットワーク５０はファイバチャネルである。しかしながら、イーサネット（登録商標）やインフィニバンドのような他のネットワークも使用可能である。相互接続をするためにネットワークスイッチやハブが使用可能である。図１（ａ）に於いては、ホストコンピュータ１０とストレージ装置１００を接続するためにファイバチャネルスイッチ（ＦＣＳＷ）５５が使用される。ホストコンピュータ１０とストレージ装置１００はファイバチャネルデータネットワーク５０に接続するために一つ以上のファイバチャネルインタフェースボード（ＦＣＩＦ）１５、１５５を持つ。
【００２７】
００４８    ストレージ装置１００は管理ネットワーク９０を経由して管理コンピュータ５００に接続される。本実施例では管理ネットワーク９０はイーサネット（登録商標）である。しかしながら、他のネットワークや接続も使用可能である。相互接続するためにネットワークスイッチやハブが使用できる。ストレージ装置１００と管理コンピュータ５００はイーサネット（登録商標）管理ネットワーク９０に接続するために、一つ以上のイーサネット（登録商標）インタフェースボード（イーサＩＦ）１５９、５９０を持つ。
【００２８】
００４９    図１（ａ）で分かるように、ホストコンピュータ１０は、プログラムとデータを保存するメモリ１２内に保存されるプログラムを実行するためのＣＰＵ１１とデータネットワーク５０に接続するためのＦＣＩＦ１５を有する。少なくとも二つのプログラムがＣＰＵ１１によって実行される。本実施例では、メモリ１２はオペレーティングシステムプログラム１３（ＯＳ１３）とアプリケーションプログラム１４を保存する。
【００２９】
００５０    管理コンピュータ５００はプログラムとデータを保存するメモリ５２０内に保存されるプログラムを実行するためのＣＰＵ５１０と、管理ネットワーク９０に接続するためのイーサＩＦ５９０を有する。少なくとも二つのプログラムがＣＰＵ５１０によって実行される。本実施例では、メモリ５２０はストレージ装置１００にデータボリューム生成要求を発行するためのデータボリュームプロビジョニング要求プログラム５２１と、（第二の実施例で）スナップショット世代を管理するためのスナップショット管理プログラム５２２を保存する。
【００３０】
００５１    図１（ｂ）は図１（ａ）の情報システム内のストレージ装置１００のハードウェア構成と論理構造の例を示す。ストレージ装置１００は、データを保存するための一つ以上のＨＤＤ１０１と、ホストコンピュータ１０にデータボリュームを提供するための一つ以上のストレージコントローラ１５０を有する。ストレージコントローラ１５０はプログラムとデータを保存するメモリ１５２内に保存されるプログラムを実行するためのＣＰＵ１５１、データネットワーク５０に接続するためのＦＣＩＦ１５５、ＨＤＤ１０１に接続するためのＳＡＴＡ  ＩＦ１５６（もしＨＤＤ１０１がＦＣ、ＳＣＳＩ  ＳＡＳ等、別のインタフェースを持つのであれば、適切なインタフェースが実装されなければならない）、ホストコンピュータ１０から受信したデータやＨＤＤ１０１から読み出されたデータを保存するためのキャッシュ１５３、及び管理ネットワーク９０に接続するためのイーサＩＦ１５９を有する。少なくとも六つのプログラムがＣＰＵ１５１により実行される。
【００３１】
００５２    本実施例では、メモリ１５２は、書き込み要求が受信されチャンクが存在しない場合にデータボリュームにチャンクを割り当てるための動的チャンク割り当てプログラム１６０、ホストコンピュータ１０からの少なくともＲＥＡＤ  ＣＡＰＡＣＩＴＹ／ＲＥＡＤ／ＷＲＩＴＥコマンドに応答するための応答プログラム１６１、動的チャンク割り当てボリュームを生成しそれをホストコンピュータ１０に割り当てるためのデータボリューム割り当てプログラム１６２、チャンクプール状態テーブルを監視し、管理コンピュータ５００に警告を発するためのチャンクプール状態テーブル監視プログラム１６３、スナップショット番号を指定しスナップショット削除要求に従ってスナップショットチャンクを未使用チャンクに変換するためのスナップショットプログラム１６４、及び使用済みチャンク数及び／又は予約済みチャンク数に従ってデータボリュームが生成可能であるか又は禁止されるべきかを決定するためのデータボリューム生成禁止プログラム１６５を保存する。メモリ１５２は更にチャンク消費量追跡テーブル１６６、チャンクプール状態テーブル１６７、チャンクプール管理テーブル１６８、チャンクテーブル１６９、スナップショットカタログテーブル１７０、及び分類テーブル１７１を保存する。
【００３２】
００５３    動的チャンク割り当てボリューム（ＤＣＡＶ）は当初はデータブロックは割り当てられていない。図２は書き込みコマンド、動的チャンク割り当てボリューム１１１、チャンクプール１１０、チャンク、及びＨＤＤの関係を示す。ＤＣＡＶ１１１は例えば本実施例では１００ＧＢであるが、ＤＣＡＶ１１１の生成時点ではデータブロックは割り当てられていない。データボリュームのサイズのみが指定される。ＤＣＡＶ１１１がホストコンピュータ１０からデータを伴う書き込みコマンドを受信すると、ＤＣＡＶ１１１にデータブロックが割り当てられる。チャンクはＨＤＤ１０１内のデータブロックの集合である。動的チャンク割り当てボリュームは図２に示すように複数のセグメントに分割される。チャンクのサイズとセグメントのサイズは本実施例では同じである。
【００３３】
００５４    図２によりチャンクについても説明する。チャンクはＨＤＤ１０１内の一つ以上のデータブロックから成る。本実施例では、チャンクは一つのＨＤＤ１０１内のブロックから作られる。各チャンクはチャンクを識別するための固有のＩＤを持つ。チャンクはチャンクプールに集められる。チャンクプールはチャンクプール管理テーブル１６８によって管理される。本実施例では、ストレージ装置１００は一つのチャンクプール１１０を有する。従って、ストレージ装置１００は一つのチャンクプール管理テーブルを有する。しかしながら任意のチャンクプール数が使用可能である。
【００３４】
００５５    図３（ａ）−（ｂ）はチャンクプール管理テーブル１６８の例を示す。チャンクプール管理テーブル１６８はＲＡＩＤグループ番号（ＲＡＩＤ構成の場合、図１１を参照）を格納するための「ＲＡＩＤグループ番号」列１６８０１、ＨＤＤ番号を格納するための「ＨＤＤ番号」列１６８０２、チャンクに対応するＬＢＡ範囲を格納するための「ＬＢＡ範囲」列１６８０３、チャンクを識別するチャンク番号を格納するための「チャンク番号」列１６８０４、チャンクがデータボリュームに割り当てられているか（使用済みか）否か（未使用か）の状態を格納するための「割り当て済みか」列１６８０５、及びチャンクがセグメントに割り当てられているボリューム番号を格納するための「ボリューム番号」列１６８０６を有する。当初はＤＣＡＶ１１１にチャンクは割り当てられておらず、「割り当て済みか」列１６８０５と「ボリューム番号」列１６８０６内のすべての欄はヌルでなければならない。「ＲＡＩＤグループ番号」は図３（ｂ）に示すようにＲＡＩＤ構成の場合のみに使用される。図３（ａ）は「ＲＡＩＤグループ番号」列１６８０１がない例を示す。
【００３５】
００５６    図４は動的チャンク割り当てボリュームに対する図１（ｂ）のストレージ装置１００のメモリ１５２内のチャンクテーブル１６９の例を示す。各ＤＣＡＶ１１１はＤＣＡＶ１１１が生成されると、自身のチャンクテーブル１６９を持つ。チャンクテーブル１６９はセグメントを識別するセグメント番号を格納するための「セグメント番号」列１６９０１、チャンクが割り当て済みか否かの状態を格納するための「割り当て済みか」列１６９０２、及びチャンクに割り当てられているチャンク番号を格納するための「チャンク番号」列１６９０３を有する。当初はＤＣＡＶ１１１にチャンクは割り当てられておらず、「割り当て済みか」列１６９０２と「チャンク番号」列１６９０３内のすべての欄はヌルでなければならない。
【００３６】
００５７    図５（ａ）−（ｃ）は図１（ｂ）のストレージ装置１００のメモリ１５２内のチャンクプール状態テーブル１６７の例を示す。チャンクプール状態テーブル１６７は、ストレージ装置１００内のチャンクの総数を格納するための「チャンク総数」列１６７０１、ストレージ装置１００内の使用済みチャンクの総数を格納するための「使用済みチャンク総数」列１６７０２、チャンク状態テーブル監視プログラム１６３によって計算される閾値（本実施例ではチャンクの総数の９０％）を格納するための「閾値」列１６７０３、データボリューム番号を格納するための「ボリューム番号」列１６７０４、各ＤＣＡＶに於ける予約済みチャンクの総数を格納するための「予約済みチャンク」列１６７０５、各ＤＣＡＶに於ける使用済みチャンクの総数を格納するための「使用済みチャンク」列１６７０６、及びストレージ装置１００内の予約済みチャンクの総数を格納するための「予約済みチャンク総数」列１６７０７を有する。本実施例では、予約済みチャンク数は各ＤＣＡＶ毎に保存されるので、その結果データボリューム生成禁止プログラム１６５はそのＤＣＡＶが生成可能であるか禁止されるべきか決定することができる。
【００３７】
００５８    チャンクプール状態テーブル監視プログラム１６３はチャンクプール状態テーブル１６７を定期的に監視し、閾値を計算する。閾値はチャンクの総数の９０％として計算され、チャンクプール状態テーブル１６７内に格納される。ＨＤＤが増設されると、プログラムはチャンクの総数を更新し、閾値を再計算する。チャンクプール状態テーブル監視プログラム１６３は使用済みチャンク数が閾値よりも大であるかを判定する。もし大であれば、管理コンピュータ５００及び／又はホストコンピュータ１０に警告が発行される。警告はＨＤＤを早期に増設すべきことを示す。チャンクプール状態テーブル監視プログラム１６３は更に、使用済みチャンクの総数と予約済みチャンクの総数の合計が閾値よりも大であるか判定する。もし大であれば、管理コンピュータ５００及び／又はホストコンピュータ１０に警告が発行される。警告はＨＤＤを早期に増設すべきことを示す。
【００３８】
００５９    Ｂ．プロセスフロー
【００３９】
００６０    図６はＤＣＡＶプロビジョニングプロセス６００のプロセスフローダイアグラムの例を示す。このプロセスは管理コンピュータ５００上で管理者がデータボリュームプロビジョニング要求プログラム５２１を動作させて該データボリュームプロビジョニング要求プログラム５２１にデータボリューム生成を要求する時に起動される。ステップ６１０で、データボリュームプロビジョニング要求プログラム５２１はストレージコントローラ１５０上のデータボリューム割り当てプログラム１６２に予約済みチャンク数付きでデータボリュームプロビジョニング要求を発行する。ステップ６２０で、データボリューム割り当てプログラム１６２はチャンクプール状態テーブル１６７を一時的に更新する。ステップ６２２で、データボリューム生成禁止プログラム１６５は、閾値と、使用済みチャンクの総数と予約済みチャンクの総数の合計とを比較することで、要求されたデータボリュームの生成は可能であるか禁止すべきかをチェックする。使用済みチャンクの総数と予約済みチャンクの総数の合計が閾値よりも大である場合には、データボリューム生成は禁止され、チャンクプール状態テーブル１６７は元通りにされる（ステップ６３０）。次いで、ステップ６３２で、データボリューム生成禁止プログラム１６５は管理コンピュータ５００にエラーを発行する。使用済みチャンクの総数と予約済みチャンクの総数の合計が閾値以下の場合は、データボリュームが生成されチャンクテーブル１６９が生成される（ステップ６４０）。次いで、データボリューム割り当てプログラム１６２はチャンクプール状態テーブル１６７を確定し（ステップ６４２）、データボリューム割り当てプログラム１６２は管理コンピュータ５００にデータボリューム生成成功状態を発行する（ステップ６４４）。
【００４０】
００６１    チャンクプール状態テーブル１６７の例は図５（ａ）−（ｃ）に示される。本実施例では、一つのチャンクは２ＭＢ（４０９６ブロック、５１２バイト／ブロック）である。図５（ａ）では、ストレージ装置１００にはデータボリュームは存在しない。チャンクの総数は１，０００，０００である。使用済みチャンクの総数は０である。閾値は９００，０００である。図５（ｂ）で、管理コンピュータ５００は１０，０００の予約済みチャンク付きでデータボリューム生成を要求する。このデータボリュームはストレージシステム１００内の最初のデータボリュームとなる。この場合データボリューム生成は成功となる。図５（ｃ）で、管理コンピュータ５００は１０，０００の予約済みチャンク付きでデータボリューム生成を要求する。予約済みチャンクの総数はこの時点でのデータボリューム生成により１００，０００に達する。使用済みチャンク数は今や８０１，０００である。ＤＣＡＶ１１１−９９の生成は、使用済みチャンクの総数と予約済みチャンクの総数の合計が閾値を越える（１００，０００＋８０１，０００＝９０１，０００＞９００，０００）ので、データボリューム生成禁止プログラム１６５によって禁止される。管理コンピュータ５００にエラーが発行される。
【００４１】
００６２    図７（ａ）−（ｄ）は図１（ａ）の管理コンピュータ５００上のＤＣＡＶを生成するための管理画面の例を示す。図８（ａ）−（ｂ）は図１（ａ）の管理コンピュータ５００内の予約済みチャンクデフォルトテーブル５２９の例を示す。図７（ａ）で、管理者はＤＣＡＶ生成時にＤＣＡＶのサイズのみを指定して「ＯＫ」ボタンを押す。予約済みチャンクの予め決められた数（例えば１０，０００）が適用される。予約済みチャンクの予め決められた数は図８（ａ）に示すように予約済みチャンクデフォルトテーブル５２９に格納される。図７（ｂ）の画面では、管理者は全ＤＣＡＶのサイズとＤＣＡＶの初期サイズを指定する。ＤＣＡＶの初期サイズは、例えば、ＯＳとアプリケーションプログラムのインストール時のデータボリュームの初期サイズである。管理者はＤＣＡＶを生成するためにこの二種のサイズを指定し、「ＯＫ」ボタンを押す。図７（ｃ）の画面では、管理者はＤＣＡＶの全体サイズとＤＣＡＶの用途を指定する。各用途に対する予約済みチャンク数は図８（ｂ）に示すように予め決められて予約済みチャンクデフォルトテーブル５２９に格納される。選択された用途は予約済みチャンク数に変換され、次いでデータボリューム割り当てプログラム１６２に提供される。図７（ｄ）の画面では、管理者はＤＣＡＶの全体サイズ、ＤＣＡＶの用途、及びＤＣＡＶの開始日時を指定する。いかなる書き込みコマンドも開始日時までは拒絶される。
【００４２】
００６３    生成された新データボリュームは、データボリュームが動的チャンク割り当てボリュームＤＣＡＶ１１１であるために当初は何もチャンクを持たない。ホストコンピュータ１０はストレージ装置１００から容量情報を取得することができる。応答プログラム１６１はたとえＤＣＡＶ１１１が何もチャンクを持たなくてもＲＥＡＤ  ＣＡＰＡＣＩＴＹコマンドの結果としてホストコンピュータ１０に容量情報付きで応答する。こうして、ホストコンピュータ１０はストレージ装置１００内に或るサイズを持つデータボリュームが存在することを認識する。
【００４３】
００６４    図９は第一の実施例による図１（ｂ）のストレージ装置１００のメモリ１５２内の応答プログラム１６１、動的チャンク割り当てプログラム１６０、及びデータボリューム生成禁止プログラム１６５を含むストレージ装置プログラムによる書き込み動作のプロセスフローダイアグラムの例を示す。
【００４４】
００６５    ステップ９１０で、ストレージ装置プログラムは、このＤＣＡＶ１１１が何もチャンクを持っていないかをチェックする。もし持っていなければ、プログラムはステップ９１２に進む。ステップ９１２で、プログラムは使用済みチャンクの総数と予約済みチャンクの総数の合計がチャンクの総数よりも大であるかをチェックする。もし大であれば、プログラムはステップ９１９に進む。（ステップ９１２は予め決められたモードに従いスキップ可能なことに注意願いたい。）大でない場合は、プログラムはステップ９１４に続き、使用済みチャンクの総数と予約済みチャンクの総数の合計が閾値よりも大であるかをチェックする。もし大であれば、プログラムはステップ９１９に進む。（ステップ９１４は予め決められたモードに従いスキップ可能であることに注意願いたい。）大でない場合は、プログラムはステップ９１６に続き、データボリュームに指定された日時が期限満了したかをチェックする。（このステップはデータボリュームにデータ及び時間が指定されていないならスキップされる。）もし満了していないならば、プログラムはステップ９１９に進み、ホストコンピュータ１０にカットオーバエラーを送信する。もし満了しているならば、プログラムはステップ９２０に進む。
【００４５】
００６６    ステップ９２０で、プログラムは書き込みコマンドに対応するデータボリューム内のセグメント番号を計算する。次いで、ステップ９２２で、プログラムはそのセグメントがチャンクを持っているか否かをチェックする。もしセグメントが既にチャンクを持っていれば、プログラムはステップ９８０に進む。そうでない場合は、プログラムはステップ９３０に続き、チャンクプールからチャンクの取得を試みる。ステップ９３２で、プログラムはチャンク割り当てが成功したかをチェックする。もし成功でなければ、プログラムはステップ９３９に進み、ホストコンピュータ１０に書き込みエラーを送信する。もし成功であれば、プログラムはステップ９５０に続き、チャンクプール管理テーブル１６８を更新する。ステップ９５２で、プログラムはチャンクテーブル１６９を更新する。ステップ９５４で、プログラムはチャンクプール状態テーブル１６７を更新する。これに伴い、予約済みチャンク数は現在値がゼロでないならば減少し、使用済みチャンク数は増加し、使用済みチャンクの総数を更新し、予約済みチャンクの総数を更新することになる。次いで、ステップ９６０で、プログラムは使用済みチャンクの総数と予約済みチャンクの総数の合計がチャンクの総数よりも大であるかチェックする。もし大であれば、プログラムはステップ９６９に進み、管理コンピュータ５００に警告を発する。大でない場合は、プログラムはステップ９７０に進み、使用済みチャンクの総数と予約済みチャンクの総数の合計が閾値よりも大であるかチェックする。もし大であれば、プログラムはステップ９７９に進み、管理コンピュータ５００に警告を発する。大でない場合は、プログラムはステップ９８０に進み、セグメントに割り当てられたチャンクにデータを書き込む。ステップ９９９で、プログラムはコマンド完了応答を発行する。
【００４６】
００６７    ステップ９１０、９１２、９１４と９１９に従い、書き込みコマンドは、最初の書き込み動作がＤＣＡＶに実行される時点では、予約済みチャンクの総数によって拒絶される。このシーケンスはＤＣＡＶが予め、恐らくずっと以前であって、使用済みチャンクの総数と予約済みチャンクの総数の合計が閾値と同等以下であった或る時点で生成されていて、その後他のＤＣＡＶがチャンクを消費し続けている場合には重要となる。現時点では、使用済みチャンクの総数と予約済みチャンクの総数の合計はチャンクの総数よりも大となっている（ステップ９１２）か、又は使用済みチャンクの総数と予約済みチャンクの総数の合計は閾値よりも大になっている（ステップ９１４）。
【００４７】
００６８    図１０は図１（ｂ）のストレージ装置１００のメモリ１５２内の応答プログラム１６１を含む読み出し動作のプロセスフローダイアグラムの例を示す。ステップ１０１０で、プログラムは読み出しコマンドに対応するデータボリューム内のセグメント番号を計算する。ステップ１０１２で、プログラムはセグメントがチャンクを持っているか否かをチェックする。もし既にセグメントがチャンクを持っていれば、プログラムはステップ１０７０に進む。もしセグメントがチャンクを持っていなければ、プログラムはステップ１０８０に進む。ステップ１０７０で、プログラムはセグメントに割り当てられたチャンクのデータを転送する。ステップ１０８０で、プログラムはデフォルトデータパターン（例えば全てゼロのパターン）を転送する。最後に、ステップ１０９９で、プログラムはコマンド完了応答を発行する。
【００４８】
００６９    一つの変形例によれば、ＨＤＤ１０１をＲＡＩＤグループに置き換えることができる。図１１はＲＡＩＤグループ内にチャンク（１００００、１０００１、１０００２）を持つＲＡＩＤ構成の例を示す。ＲＡＩＤ（独立したディスクの冗長アレイ）グループは、ＲＡＩＤアルゴリズムにより複数のＨＤＤ（１０１−０１、１０１−０２、１０１−０３、１０１−０４、１０１−０５）から構成される。ＲＡＩＤアルゴリズムはストレージコントローラ１５０内で実装される。図３（ｂ）に示すチャンクプール管理テーブル１６８がＲＡＩＤ構成に使われる。
【００４９】
００７０    第二の実施例
【００５０】
００７１    第二の実施例では、スナップショット機能を伴ったＤＣＡＶが提供される。スナップショットは指定されたタイミングに於けるデータボリュームイメージの一つである。管理コンピュータ５００又はホストコンピュータ１０はスナップショット要求をＤＣＡＶ１１１に発行することができる。或いは、ストレージ装置１００自体が定期的にスナップショットを取得してもよい（そのサイクルは予め決めることができる）。図１２は第二の実施例による図１（ｂ）のストレージ装置１００のメモリ１５２内のチャンクテーブル１６９の例を示す。図１３はメモリ１５２内のスナップショットカタログテーブル１７０の例を示す。スナップショットプログラム１６４は新たなスナップショット番号を指定し、図１３のスナップショットカタログテーブル１７０内に日時を記録する。図１２のチャンクテーブル１６９は各スナップショット番号に対応したチャンク番号を格納することができる。
【００５１】
００７２    図１３のスナップショットカタログテーブル１７０は、ストレージ装置１００内のデータボリューム番号を格納するための「ボリューム番号」列１７００１、指定されたスナップショット番号を格納するための「スナップショット番号」列１７００２、及びスナップショットが取得される時点のタイムスタンプを格納するための「タイムスタンプ」列１７００３を有する。
【００５２】
００７３    第二の実施例のスナップショット動作では、各ＤＣＡＶ１１１に於いて１時間間隔でスナップショットが取得される。スナップショットプログラム１６４は新たなスナップショット番号を指定し、スナップショットカタログテーブル１７０にスナップショット番号とタイムスタンプを格納する。図１３は、ＤＣＡＶ１１１−００が２００９／４／２９午後１時から午後１０時までに取得されたスナップショット番号１１１−００−００から１１１−００−０９の１０個のスナップショットイメージを持つことを示す。
【００５３】
００７４    図１４は第二の実施例による図１（ｂ）のストレージ装置１００のメモリ１５２内の応答プログラム１６１、動的チャンク割り当てプログラム１６０、及びデータボリューム生成禁止プログラム１６５を含むストレージ装置プログラムによるスナップショット付き書き込み動作１４００のプロセスフローダイアグラムの例を示す。図９（第一の実施例の書き込み動作）のフローダイアグラムと異なっている特徴部分をアンダーラインで示す。
【００５４】
００７５    ステップ１４１０で、ストレージ装置プログラムは、このＤＣＡＶはチャンクを持っていないかチェックする。もし持っていなければ、プログラムはステップ１４１２に進む。ステップ１４１２で、プログラムは使用済みチャンクの総数と予約済みチャンクの総数の合計がチャンクの総数よりも大であるかチェックする。もし大であれば、プログラムはステップ１４１９に進む。（ステップ１４１２は予め決められたモードに従いスキップ可能なことに注意願いたい。）大でない場合は、プログラムはステップ１４１４に続き、使用済みチャンクの総数と予約済みチャンクの総数の合計が閾値よりも大であるかチェックする。もし大であれば、プログラムはステップ１４１９に進む。（ステップ１４１４は予め決められたモードに従いスキップ可能なことに注意願いたい。）大でない場合は、プログラムはステップ１４１６に続き、データボリュームに指定された日時が期限満了したかをチェックする。（このステップはデータボリュームにデータ及び時間が指定されていないならスキップされる。）もし満了していないならば、プログラムはステップ１４１９に進み、ホストコンピュータ１０にカットオーバエラーを送信する。もし満了していれば、プログラムはステップ１４２０に進む。
【００５５】
００７６    ステップ１４２０で、プログラムは書き込みコマンドに対応するデータボリューム内のセグメント番号を計算する。次いで、ステップ１４２２で、プログラムはセグメントが現在のスナップショット番号のチャンクを持っているかをチェックする。もしセグメントが既にチャンクを持っていれば、プログラムはステップ１４８０に進む。そうでない場合は、プログラムはステップ１４３０に続き、チャンクプールからチャンクの取得を試みる。ステップ１４３２で、プログラムはチャンク割り当てが成功したかをチェックする。もし成功でなければ、プログラムはステップ１４３９に進み、ホストコンピュータ１０に書き込みエラーを送信する。もし成功であれば、プログラムはステップ１４５０に続き、チャンクプール管理テーブル１６８を更新する。ステップ１４５２で、プログラムはチャンクテーブル１６９を更新する。ステップ１４５４で、プログラムはチャンクプール状態テーブル１６７を更新する。これに伴い、予約済みチャンク数は現在値がゼロでないならば減少し、使用済みチャンク数は増加し、使用済みチャンクの総数を更新し、予約済みチャンクの総数を更新することになる。次いで、ステップ１４５６で、プログラムは指定されたチャンクに対し、一つ前のスナップショット番号でのチャンクのデータをコピーする。（このステップは書き込みコマンドがチャンク内の全データをオーバライトするか又は一つ前のチャンクが存在しない場合はスキップすることができる。）ステップ１４６０で、プログラムは使用済みチャンクの総数と予約済みチャンクの総数の合計がチャンクの総数よりも大であるかチェックする。もし大であれば、プログラムはステップ１４６９に進み、管理コンピュータ５００に警告を発する。大でない場合は、プログラムはステップ１４７０に進み、使用済みチャンクの総数と予約済みチャンクの総数の合計が閾値よりも大であるかチェックする。もし大であれば、プログラムはステップ１４７９に進み、管理コンピュータ５００に警告を発する。大でない場合は、プログラムはステップ１４８０に続き、セグメントに割り当てられたチャンクにデータを書き込む。ステップ１４９９で、プログラムはコマンド完了応答を発行する。これらの取得されたスナップショットは古いデータボリュームイメージを参照するために使用される。例えば、古いデータボリュームイメージからの古いファイルの復元は典型的な利用ケースである。
【００５６】
００７７    一つの例では、書き込みデータはストレージ装置１００の一つ以上のプライマリボリュームに保存され、一つ以上のプライマリボリュームのスナップショットは一つ以上のセカンダリボリュームに保存される。ストレージ装置プログラムは、一つのケースでは一つ以上のプライマリボリューム内のチャンク数に基づき、別のケースでは一つ以上のプライマリボリュームと一つ以上のセカンダリボリューム内のチャンク数に基づいて、新たなボリュームにチャンクを割り当てることに対して禁止又は警告を発することができる。このチャンク数は使用済みチャンク数であっても良いし、又は使用済みチャンク数と予約済みチャンク数の合計であっても良い。チャンクは使用済みチャンクを含んでいても良いし、又は使用済みチャンクと予約済みチャンクの両者を含んでいても良い。
【００５７】
００７８    図１５はスナップショット選択動作に対する管理コンピュータ５００の画面表示の例を示す。管理コンピュータ５００はこの画面上にスナップショットカタログを表示する。スナップショット管理プログラム５２２はストレージ装置１００に（スナップショットカタログテーブル１７０に格納された）スナップショットカタログ情報を要求し、それを表示する。図１５に示す画面上で、管理者は復元したいファイルのイメージを選択する。図１５ではデータボリューム１１１−００が選択される。２００９／４／２９  ６：００ｐｍのスナップショットイメージが選択される。画面上で「ＯＫ」ボタンが押されると、スナップショット管理プログラム５２２はデータボリュームにスナップショット番号を発行する。データボリュームの読み出し動作が指定されたスナップショットイメージに対して実行される。
【００５８】
００７９    指定されたスナップショット番号の読み出し動作を、図１０（第一の実施例の読み出し動作）を参照して説明する。第二の実施例と第一の実施例間の唯一の相違はステップ１０７０で発生する。ステップ１０７０で、プログラムはセグメントに割り当てられたチャンクのデータを転送する。第二の実施例では、指定されたスナップショット番号に最も近いチャンクが選択される。もしセグメントが１１１−００−００２（３：００ｐｍ）と１１１−００−００４（５：００ｐｍ）の二つのチャンクを持っており、スナップショット番号１１１−００−０５（６：００ｐｍ）が指定されたら、１１１−００−００４（５：００ｐｍ）のチャンクが選択される。もしセグメントが１１１−００−００２（３：００ｐｍ）と１１１−００−００６（７：００ｐｍ）の二つのチャンクを持っており、スナップショット番号１１−００−０５（６：００ｐｍ）が指定されたら、１１−００−００２（３：００ｐｍ）のチャンクが選択される。
【００５９】
００８０    第二の実施例では、チャンクは三つのカテゴリに分類される。未使用カテゴリでは、チャンクは何もデータを持たない。使用済みカテゴリでは、チャンクはデータを持ち、そのデータは現在のボリュームとしてホストコンピュータに応答するために必要となる。スナップショットカテゴリでは、チャンクはデータを持ち、そのデータは指定されたスナップショットイメージとして応答するために必要となる。
【００６０】
００８１    図１６はスナップショット世代数が減少した時のデータボリュームの使用済み及び未使用チャンクを示す。定期的にスナップショットを取得し、データボリュームにデータを書き込み続けると、いつかは、未使用チャンクは使い尽くされることになる。各チャンクは二つのカテゴリ即ち使用済みとスナップショットのみに分類されることになる。スナップショットカテゴリのチャンクは未使用チャンクに変換可能である。しかしながら、この場合スナップショット世代数は、図１６に示すように減少することになる。
【００６１】
００８２    図１７は第二の実施例による図１（ｂ）のストレージ装置１００のメモリ１５２内の分類テーブル１７１の例を示す。各チャンクは分類されて分類テーブル１７１に登録される。スナップショットカテゴリのチャンクはスナップショット番号とタイムスタンプを付けて登録される。分類テーブル１７１はチャンクを管理するために使用され、特に指定されたスナップショット世代を削除するために使用される。
【００６２】
００８３    使用済みチャンク数とスナップショットチャンク数の合計が閾値に達した時は、二つの選択肢が考えられる。一つは更にＨＤＤを増設することである。もう一つはスナップショット世代数を減少させることである。スナップショット世代数を維持するためには一つ以上のＨＤＤを増設しなければならない。スナップショットプログラム１６４は管理コンピュータ５００に警告を発生する。管理コンピュータ５００は選択を行うために図１８に示す画面を表示する。管理者が「世代数減少」を押すと、スナップショットプログラム１６４から取得された分類テーブル１７１に基づいて図１９に示す次の管理画面が表示される。図１９は管理コンピュータでの削除世代選択動作の画面ディスプレイの例を示す。図１９の管理画面では、管理者はチェックボックスをチェックすることで世代を選択することができる。解放チャンク数の見積値がリアルタイムで領域１８００１に表示される。削除ボタン１８００２が押されると、管理コンピュータ５００はスナップショットプログラム１６４にスナップショット削除要求を発行する。スナップショットプログラム１６４は指定されたスナップショット番号に従ってスナップショットチャンクを未使用チャンクに変換する。
【００６３】
００８４    本発明のもう一つの実施例が第一と第二の実施例の特徴を組み合わせることで可能になる。データボリューム割り当てプログラム１６２は、使用済みチャンクの総数、スナップショットチャンク数、及び予約済みチャンク数の合計が閾値よりも大である場合には新ボリューム生成を禁止してもよい。或いは、チャンクプール状態テーブル監視プログラム１６３が警告を発生してもよい。チャンクプール状態テーブル監視プログラム１６３は、この警告の為にチャンクプール状態テーブル１６７及び分類テーブル１７１を参照する。管理コンピュータ５００がこの警告を受信すると、管理コンピュータ５００は前述の図１８と図１９に示す画面を表示することができる。いくつかのスナップショット世代を削除した後には、管理者は新データボリュームの生成を試みることができる。
【００６４】
００８５    図２０は図１（ｂ）のストレージ装置１００のメモリ１５２内のチャンク消費量追跡テーブル１６６の例を示す。チャンク状態テーブル監視プログラム１６３はチャンク消費量追跡テーブル１６６内にチャンクの総数、使用済みチャンクの総数、未使用チャンクの総数、スナップショットチャンクの総数を定期的に（例えば６０秒間隔で）記録することができる。更にチャンク状態テーブル監視プログラム１６３は、例えば平均増大率に基づいて、将来の消費量を見積ることができる。新データボリュームを生成するためのチャンクの割り当ては、見積られた将来のチャンク消費量に従って、新データボリュームを生成する前に禁止又は警告してもよい。
【００６５】
００８６    図２１はチャンク消費量追跡テーブル１６６を可視化したグラフを示す。時刻ｔ０で、ストレージ装置はＮ個の未使用チャンクを持ち、使用済みチャンクとスナップショットチャンクは存在しない。いくつかのデータボリューム生成が実行される。チャンクが予約される。ｔ１にて、ＯＳ１３とアプリケーションプログラム１４のインストールが開始される。チャンクは急速に消費される。ｔ２にて、インストールは完了する。ｔ３にて、ストレージ装置１００はスナップショット取得を開始する。スナップショットチャンクが増大する。ｔ４にて、使用済みチャンクの総数とスナップショットチャンクの総数の合計が閾値に達する。いくつかのスナップショット世代が解放される。ｔ５にて、使用済みチャンクの総数とスナップショットチャンクの総数の合計が再び閾値に達する。追加のＨＤＤが増設され未使用のチャンクが追加される。ストレージ装置１００内のチャンクの総数はＭに達する。閾値が再計算される。現時点ｔ６にて、いくつかのデータボリューム生成が実行される。いくつかのデータボリュームの生成が今すぐに行われる。いくつかのデータボリューム生成がｔ７に予約される。ｔ６に於けるデータボリューム生成は未使用チャンクが十分あるので禁止されない。現在よりも先の時点であるｔ７に於けるデータボリューム生成は、平均増大率とその時点での予約済みチャンクの総数に基づくと未使用チャンクが十分には存在しないと見積られるため、禁止される。当然のことながら、管理者は禁止を避けるためにいくつかのスナップショット世代の解放を試みることも可能である。
【００６６】
００８７    当然ながら、図１（ａ）に示すシステム構成は本発明が実行可能な全く典型的な情報システムであり、本発明は特定のハードウェア構成に限定されない。本発明を実装するコンピュータとストレージシステムは前述の発明を実装するために使用されるモジュール、プログラム及びデータ構造を保存し読み出すことができる既知のＩ／Ｏ装置（例えばＣＤとＤＶＤドライブ、フロッピー（登録商標）ディスクドライブ、ハードディスクドライブ等）を有することもできる。これらのモジュール、プログラム及びデータ構造はそのようなコンピュータ読み取り可能媒体上でコード化することができる。例えば、本発明のデータ構造は、本発明で使用されるプログラムが載る一つ以上のコンピュータ読み取り可能媒体とは独立なコンピュータ読み取り可能媒体に保存することができる。このシステムのコンポーネントはディジタルデータ通信の任意の形態又は媒体、例えば通信ネットワークにより、相互接続可能である。通信ネットワークの例には、ローカルエリアネットワーク、広域ネットワーク、例えばインターネット、無線ネットワーク、ストレージエリアネットワーク等が含まれる。
【００６７】
００８８    本明細書に於いては、本発明の完全な理解を可能にするために説明の目的で数多くの詳細が述べられている。しかしながら、これらの特定の詳細のすべてが本発明を実施するために必要とされるわけではないことは当業者には明白であろう。本発明は通常フローチャート、フローダイアグラム、構造ダイアグラム、又はブロックダイアグラムとして描かれるプロセスとして記述できることにも注意が必要である。フローチャートは動作をシーケンシャルプロセスとして記述するかも知れないが、多くの動作は並行して又は同時に遂行可能である。更に、動作の順番は入れ替えることも可能である。
【００６８】
００８９    この技術分野で公知のように、上述の動作はハードウェア、ソフトウェア、又はソフトウェアとハードウェアの何らかの組み合わせで実行可能である。本発明の実施例の種々の態様は回路や論理デバイス（ハードウェア）を用いて実行可能であるが、他の態様ではマシーン読取可能媒体（ソフトウェア）上に保存され、もしプロセッサが実行すれば、プロセッサに本発明の実施例の実行方法を遂行させる命令を用いて実行可能である。更に、本発明のいくつかの実施例は専らハードウェアで実行可能であるが、他の実施例では専らソフトウェアで実行可能である。更に、記述された種々の機能は単一の装置で実行可能であるが、多数の方法で多数のコンポーネントに亘って分散させることも可能である。ソフトウェアにより実行される場合、本方法はコンピュータ読み取り可能媒体上に保存された命令に基づいて汎用コンピュータのようなプロセッサによって実行可能である。もし必要ならば、命令は圧縮及び／又は暗号化フォーマットで媒体上に保存可能である。
【００６９】
００９０    前述から、本発明は動的チャンク割り当て機能を有するデータストレージシステムに於けるデータボリューム生成を制御するための方法、装置及びコンピュータ読み取り可能媒体上に保存されたプログラムを提供することが明らかであろう。更に、本明細書に於いては具体的な実施例が示され説明されてきたが、同じ目的を達成することが予想できる如何なる構成も、開示された具体的な実施例に対して置換可能であることが当業者には明らかである。ここでの開示は本発明のあらゆる如何なる改編や変形をもカバーするように意図されており、当然のことながら以下の請求項で使用される語句は本発明を明細書に開示された具体的な実施例に限定するように解釈されるべきでない。むしろ、本発明の範囲は偏に以下の請求項によって決定されるべきであって、本請求項が権利を有する全ての範囲の等価物も含めて、確立した請求項解釈理論に従って解釈されるべきである。
【図１ａ】
2010282608.tif 000003
【図１ｂ】
2010282608.tif 000004
【図２】
2010282608.tif 000005
【図３ａ】
2010282608.tif 000006
【図３ｂ】
2010282608.tif 000007
【図４】
2010282608.tif 000008
【図５ａ】
2010282608.tif 000009
【図５ｂ】
2010282608.tif 000010
【図５ｃ】
2010282608.tif 000011
【図６】
2010282608.tif 000012
【図７ａ】
2010282608.tif 000013
【図７ｂ】
2010282608.tif 000014
【図７ｃ】
2010282608.tif 000015
【図７ｄ】
2010282608.tif 000016
【図８ａ】
2010282608.tif 000017
【図８ｂ】
2010282608.tif 000018
【図９】
2010282608.tif 000019
【図１０】
2010282608.tif 000020
【図１１】
2010282608.tif 000021
【図１２】
2010282608.tif 000022
【図１３】
2010282608.tif 000023
【図１４】
2010282608.tif 000024
【図１５】
2010282608.tif 000025
【図１６】
2010282608.tif 000026
【図１７】
2010282608.tif 000027
【図１８】
2010282608.tif 000028
【図１９】
2010282608.tif 000029
【図２０】
2010282608.tif 000030
【図２１】
2010282608.tif 000031
【外国語明細書】
2010282608000001.pdf