(57)【特許請求の範囲】
【請求項１】
少なくとも１つのストレージ制御部と、データがボリュームの形で格納され、少なくとも複数の前記ボリュームが少なくとも幾らかの空き領域を有し、且つ、複数のボリュームのグループがプールを構成するデータ・ストレージとを含み、複数のアクティブ・レベルのデータ・ストレージで階層化（ＨＳＭ）されたコンピュータ実装データ・ストレージ・システムにおける、データのデフラグする方法であって、
プールからのデータのマイグレーションを低いアクティブ・レベルのデータ・ストレージに開始して前記プール内に付加的に空き領域を生成するステップと、
前記データのマイグレーションの後で、前記プールのデータの断片化を計算するステップと、
前記プールの既存の空き領域の量を求めるステップと、
前記既存の空き領域の量を空き領域閾値と比較するステップであって、前記空き領域閾値は前記計算された断片化と関連する、比較するステップと、
前記比較が、前記空き領域の量が前記閾値を下回ることを示す場合には、スピル・ボリュームを前記プールに付加するステップと、
他の場合には、スピル・ボリュームを付加することなく、前記プールをそのままの状態に保持するステップと、
前記プールのデフラグを開始するステップと、
を含む、方法。
【請求項２】
もしあれば、前記スピル・ボリュームを一時的ボリュームとして識別し、前記プールの前記デフラグの後で、前記スピル・ボリュームを前記プールから除去するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記空き領域閾値は公称値を含み、前記計算された断片化は、前記空き領域閾値を調整して前記公称値に対して増加又は減少させる、請求項１に記載の方法。
【請求項４】
前記調整された空き領域閾値は、ある範囲の値を含む、請求項３に記載の方法。
【請求項５】
前記範囲の値は、前記計算された断片化の指標に関連する前記値の間で調整される、請求項４に記載の方法。
【請求項６】
前記範囲内の前記値は前記計算された断片化の指標に基づくものとして、前記空き領域閾値（Ｔ）は、式：
（Ｔ）＝（前記プールの総ストレージ容量）×（公称閾値）×｛０．５〜１．５の範囲｝
に従って求められる、請求項１に記載の方法。
【請求項７】
前記計算された断片化の前記指標は０から１．０までの値であり、前記指標は前記範囲の下限値に加算する値である、請求項６に記載の方法。
【請求項８】
前記計算された断片化は、断片の数の評価数と前記プールのデータ・ストレージ容量の比である、請求項７に記載の方法。
【請求項９】
前記データは複数のデータ・セットを有するボリュームを含み、前記データ・セットは、それぞれ少なくとも１つのデータ・エクステントを有し、前記断片の推定数は、前記プールの前記データ・エクステントの数から前記プールのデータ・セットの数を減じた数から求められる、請求項８に記載の方法。
【請求項１０】
データ・ストレージ・システムであって、
データがボリュームの形で格納され、少なくとも複数の前記ボリュームは少なくとも幾らかの空き領域を有し、且つ、複数のボリュームのグループがプールを構成する、階層化（ＨＳＭ）された複数のアクティブ・レベルのデータ・ストレージと、
プールからのデータのマイグレーションを低いアクティブ・レベルのデータ・ストレージに開始して前記プール内に付加的に空き領域を生成するステップと、
前記データのマイグレーションの後で、前記プールのデータの断片化を計算するステップと、
前記プールの既存の空き領域の量を求めるステップと、
前記既存の空き領域の量を空き領域閾値と比較するステップであって、前記空き領域閾値は前記計算された断片化と関連する、比較するステップと、
前記比較が、前記空き領域の量が前記閾値を下回ることを示す場合には、スピル・ボリュームを前記プールに付加するステップと、
他の場合には、スピル・ボリュームを付加することなく、前記プールをそのままの状態に保持するステップと、
前記プールのデフラグを開始するステップと、
を実施する少なくとも１つのストレージ制御部と、
を含む、データ・ストレージ・システム。
【請求項１１】
前記ストレージ制御部は、もしあれば、前記スピル・ボリュームを一時的ボリュームとして識別し、前記プールの前記デフラグの後で、前記スピル・ボリュームを前記プールから除去するステップをさらに実施する、請求項１０に記載のデータ・ストレージ・システム。
【請求項１２】
前記空き領域閾値は公称値を含み、前記計算された断片化は、前記空き領域閾値を調整して前記公称値に対して増加又は減少させる、請求項１０に記載のデータ・ストレージ・システム。
【請求項１３】
前記調整された空き領域閾値は、ある範囲の値を含む、請求項１２に記載のデータ・ストレージ・システム。
【請求項１４】
前記範囲の値は、前記計算された断片化の指標と関連する値の間で調整される、請求項１３に記載のデータ・ストレージ・システム。
【請求項１５】
前記範囲内の前記値が前記計算された断片化の指標に基づくものとして、前記空き領域閾値（Ｔ）は、式：
（Ｔ）＝（前記プールの総ストレージ容量）×（公称閾値）×｛０．５〜１．５の範囲｝
に従って求められる、請求項１０に記載のデータ・ストレージ・システム。
【請求項１６】
前記計算された断片化の前記指標は０から１．０までの値であり、前記指標は前記範囲の下限値に加算する値である、請求項１５に記載のデータ・ストレージ・システム。
【請求項１７】
前記計算された断片化は、断片の数の評価数と前記プールのデータ・ストレージ容量の比である、請求項１６に記載のデータ・ストレージ・システム。
【請求項１８】
前記データは複数のデータ・セットを有するボリュームを含み、前記データ・セットは、それぞれ少なくとも１つのデータ・エクステントを有し、前記断片の推定数は、前記プールの前記データ・エクステントの数から前記プールのデータ・セットの数を減じた数から求められる、請求項１７に記載のデータ・ストレージ・システム。
【請求項１９】
プログラムがコンピュータ上で実行されたとき、請求項１から請求項９までのいずれかに記載の方法を実施するように適合されたプログラム・コードを含む、コンピュータ・プログラム。
【請求項２０】
少なくとも１つのストレージ制御部と、データがボリュームの形で格納され、少なくとも複数の前記ボリュームは少なくとも幾らかの空き領域を有し、且つ、複数のボリュームのグループはプールを構成するデータ・ストレージとを含むコンピュータ実装データ・ストレージ・システムにおける、データのデフラグする方法であって、
前記プールのデータの断片化を計算するステップと、
前記プールの既存の空き領域の量を求めるステップと、
前記既存の空き領域の量を空き領域閾値と比較するステップであって、前記空き領域閾値は前記計算された断片化と関連する、ステップと、
前記比較が、前記空き領域の量が前記閾値を下回ることを示す場合には、スピル・ボリュームを前記プールに付加するステップと、
他の場合には、スピル・ボリュームを付加することなく、前記プールをそのままの状態に保持するステップと、
データ・セットを、これらがデフラグ中に最小サイズ基準を満たす場合には、ハード・ディスク・ドライブで構成されたストレージに移動させる選択肢のユーザ選択を可能にし、前記プールのデフラグを開始するステップと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ実装データ・ストレージに関し、より具体的には、このようなデータ・ストレージに関するデータのデフラグ（デフラグメンテーション（断片化解消）、defragmentation）に関する。
【背景技術】
【０００２】
その２つの例がディスク・ストレージ及びＲＡＩＤ（Redundant Array of Independent Disk、独立ディスク冗長アレイ）システムである、データ・ストレージ・システムのシリアル・デバイス上のデータ・ストレージを更新することは、典型的には、断片化（フラグメンテーション、fragmentation）として知られる現象の発生をもたらす。例えば、データ・セットのようなファイルが最初に作成されるとき、連続的領域を得ることが可能な場合、コンピュータ実装システムにより、ファイルは、ディスク又はＲＡＩＤシステム上の一連のトラック又はシリンダなどの連続的領域に割り当てられる。しかしながら、ユーザがデータを付加するか又は最初のファイルのデータを更新すると、その付加又は更新に対して、ディスク上の別の物理的位置において何らかの付加的な空間が割り当てられ、さらに、ファイルの古くなった（outdated）部分が削除され、その結果、削除に起因するオリジナル・ファイルのデータの断片化、又はデータの配置に起因する付加データ若しくは更新データの断片化がもたらされ得る。
【０００３】
より多くのデータ及びファイルが付加、削除、及び修正されるにつれて、断片化が、時間の経過と共に増加する傾向がある。従って、断片化したデータを分析し、データの部分を削除された領域内に配置するようにデータを移動して再編成し、データがより連続的かつ正しい順序になるようにする、デフラグ・アルゴリズムが開発された。デフラグ・アルゴリズムの多数の例の一部として、Ｄｉｎｏ  Ｓｏｆｔｗａｒｅの「Ｒｅａｌ  Ｔｉｍｅ  Ｄｅｆｒａｇ」、Ｃｏｍｐｕｔｅｒ  Ａｓｓｏｃｉａｔｅｓの「Ｃｏｍｐａｋｔｏｒ」及びＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐ．の「ＤＦＤＳＳ  Ｄｅｆｒａｇ」が挙げられる。
【０００４】
本明細書において、「空き領域（freespace）」という用語は、空間を「空いた状態」にしてデータの格納のために使用可能にする、データが削除されたストレージ空間（storage space）、又は、データのない付加されたストレージ空間を表す専門用語として用いられる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
データ・ストレージ・システムのデータのデフラグに対する要求に応答するための方法、データ・ストレージ・システム及びコンピュータ・プログラム製品（プログラム）を提供する。
【課題を解決するための手段】
【０００６】
１つの実施形態において、少なくとも１つのストレージ制御部と、データがボリュームの形で格納され、少なくとも複数のボリュームが少なくとも幾らかの空き領域を有し、且つ、複数のボリュームのグループがプールを構成する、データ・ストレージとを含む、コンピュータ実装データ・ストレージ・システムにおいて、以下のこと、即ち、
プールからのデータのマイグレーションを開始して、付加的な空き領域を生成することと、
データのマイグレーションの後で、プールのデータの断片化を計算することと、
プールの既存の空き領域の量を求めることと、
既存の空き領域の量を空き領域閾値と比較することであって、空き領域閾値は計算された断片化と関連している、比較することと、
比較が、空き領域の量が閾値を下回ることを示す場合には、スピル（spill、溢れ）ボリュームをプールに付加することと、
他の場合には、スピル・ボリュームを付加することなく、プールをそのままの状態に保持することと、
プールのデフラグを開始することと、
が実施される。
【０００７】
別の実施形態において、付加的に、もしあれば、スピル・ボリュームを一時的ボリュームとして識別し、プールのデフラグの後で、スピル・ボリュームをプールから除去する。
【０００８】
更に別の実施形態において、空き領域閾値は公称閾値を含み、計算された断片化は、空き領域閾値を調整してこれを増加又は減少させる。
【０００９】
更に別の実施形態において、調整は、ある範囲の値を含む。
【００１０】
更に別の実施形態において、値の範囲は、計算された断片化の指標に関連する値の間で調整される。
【００１１】
別の実施形態において、範囲内の値は計算された断片化の指標に基づくものとして、空き領域閾値（Ｔ）は、式：
（Ｔ）＝（プールの総ストレージ容量）×（公称閾値）×｛０．５〜１．５の範囲｝
に従って求められる。
【００１２】
更に別の実施形態において、計算された断片化の指標は、範囲の下部に加算される０から１．０までの値である。
【００１３】
更なる別の実施形態において、計算された断片化は、断片（fragment）の推定数とプールのデータ・ストレージ容量の比である。
【００１４】
更に別の実施形態において、データは複数のデータ・セットを有するボリュームを含み、データ・セットは、それぞれ少なくとも１つのデータ・エクステント（data extent）を有し、断片の推定数は、プールのデータ・エクステントの数からプールのデータ・セットの数を減算することにより求められる。
【００１５】
本発明のより完全な理解のために、添付図面と併せて、以下の詳細な説明を参照すべきである。
【図面の簡単な説明】
【００１６】
【図１】異なるタイプのコンピューティング・デバイス及びデータ・ストレージ・デバイスから構成される、コンピュータ実装システムの１つの実施形態を示す高レベル・ブロック図である。
【図２】図１のデータ・ストレージ・デバイスの少なくとも１つのデフラグを提供するための、コンピュータ実装システムの１つの実施形態を示す高レベル・ブロック図である。
【図３】図１及び図２のシステムを動作させる例示的な方法を示すフローチャートである。
【図４】図１及び図２のシステムのデータ・ボリュームの概略図である。
【図５】図１及び図２のシステムのデータ・ボリュームの別の概略図である。
【発明を実施するための形態】
【００１７】
本発明が、以下の説明において図面を参照して好ましい実施形態で説明され、図中、同様の符号が同一又は類似の要素を表す。本発明は、本発明の目的を達成するための最良の形態に関して説明されるが、当業者であれば、本発明の趣旨又は範囲から逸脱することなく、これらの教示に照らして、変形を実現できることを認識するであろう。
【００１８】
図１を参照すると、コンピュータ実装システム１００の例が示される。このシステムは、システム内のデータ・ストレージ・デバイスの少なくとも１つのデフラグ中、データのポイント・イン・タイム・コピー（point-in-time copy）を提供するように本発明を実装することができる多くのコンピュータ実装システムの１つである。システム・アーキテクチャ１００は、本明細書で開示される装置及び方法から利益を得ることができる種々のタイプのコンピューティグ・デバイスを示すように提示される。システム・アーキテクチャ１００は単なる例として提示されており、限定することを意図するものではない。実際に、本明細書で開示される装置及び方法は、多種多様な異なるコンピューティング・デバイスに適用可能であり、本明細書で示されるものに限定されるわけではない。
【００１９】
示されるように、例示的なシステム・アーキテクチャ１００は、ネットワーク１０４により相互接続された１つ又は複数のコンピュータ・プロセッサ１０２、１０６を含む。ネットワーク１０４は、例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、インターネット、イントラネット等を含むことができる。特定の実施形態において、コンピュータ・プロセッサ１０２、１０６は、クライアント・コンピュータ・プロセッサ１０２及びサーバ・コンピュータ・プロセッサ１０６の両方を含むことができる。例において、クライアント・コンピュータ１０２は通信セッションを開始するのに対して、サーバ・コンピュータ・プロセッサ１０６は、クライアント・コンピュータ・プロセッサ１０２からの要求を待つ。特定の実施形態において、コンピュータ・プロセッサ１０２及び／又はサーバ・プロセッサ１０６は、１つ又は複数の内部若しくは外部データ・ストレージ・システム１１２（例えば、ハード・ディスク・ドライブ、ソリッド・ステート・ドライブ、テープ・ドライブ、ライブラリ等）に接続することができる。これらのコンピュータ・プロセッサ１０２、１０６、及びダイレクト・アタッチト（direct-attached）データ・ストレージ・システム１１２は、ＡＴＡ、ＳＡＴＡ、ＳＣＳＩ、ＳＡＳ、ファイバー・チャネル等のようなプロトコルを用いて通信することができる。
【００２０】
特定の実施形態において、システム・アーキテクチャ１００は、サーバ・プロセッサ１０６の背後に、ストレージ・エリア・ネットワーク（ＳＡＮ）又はＬＡＮ（例えば、ネットワーク・アタッチト（network-attached）ストレージを用いる場合）のようなストレージ・ネットワーク１０８を含むことができる。このネットワーク１０８は、サーバ・プロセッサ１０６を、ＲＡＩＤ（独立ディスク冗長アレイ）アレイ、テープ・ライブラリ１１０ｂ、個々のハード・ディスク・ドライブ１１０ｃ又はソリッド・ステート・ドライブ１１０ｃ、テープ・ドライブ又はライブラリ１１０ｄ、ＣＤ−ＲＯＭライブラリ、仮想テープ・ライブラリ等を含む、ハード・ディスク・ドライブ又はソリッド・ステート・ドライブのアレイ１１０ａのような、１つ又は複数のデータ・ストレージ・システム１１０に接続することができる。ストレージ・システム１１０にアクセスするために、サーバ・プロセッサ１０６は、サーバ・プロセッサ１０６上の１つ又は複数のポートからストレージ・システム１１０上の１つ又は複数のポートへの物理的接続によって通信することができる。接続は、スイッチ、ファブリック、直接接続等を通じたものにすることができる。特定の実施形態において、サーバ・プロセッサ１０６及びストレージ・システム１１０は、ファイバ・チャネル（ＦＣ）のようなネットワーク規格を用いて通信することができる。
【００２１】
図２を参照すると、図１のデータ・ストレージ・デバイスの少なくとも１つのデフラグのためのデータ処理を提供する、コンピュータ実装システム２００の１つの実施形態が示される。コンピュータ実装システム２００は、クライアント・システム１０２、サーバ・プロセッサ１０６、ストレージ・システム１１０、及びアタッチト・ストレージ１１２を含む図１のデバイス又はシステムのいずれかに、又は、ネットワーク１０４を介して接続された別のコンピュータ実装システムに実装することができる。示されるように、コンピュータ実装システム２００は、データ処理を提供するための１つ又は複数のモジュールを含む。モジュールは、１つ又は複数のコンピュータ・プロセッサ、及び、非一時的コンピュータ使用可能プログラム・コードが内部に具体化された１つ又は複数の関連したコンピュータ使用可能ストレージ媒体に配置することができる。コンピュータ・プロセッサ及びコンピュータ使用可能ストレージ媒体の詳細は、後述される。コンピュータ実装システム２００は、コマンド、情報、及びコンピュータ使用可能プログラム・コードを受け取り、コマンド、通知及び情報を１つ又は複数のホスト若しくはホスト端末２０６に提供することができる。これらのモジュールは、スタンドアロン型ユニットを含むストレージ制御部２１０のアプリケーション内に組み込むこと又はそれを含むこと、又はホストの一部、サーバ・プロセッサ、ストレージ・システム若しくはアタッチト・ストレージ含むことができる。
【００２２】
モジュールは、ホスト・システム及びデフラグ・アプリケーションとインターフェース接続するためのモジュール２２０と、そのデータがデフラグ・アプリケーションによりデフラグされ、且つ、アクティブ・データを有さない付加的なボリュームを備えたストレージ・デバイスを含むデータ・ストレージ２４０とインターフェース接続するためのモジュール２３０とを含むことができる。
【００２３】
互いにグループ化された状態で示されているが、上述のように、モジュール及び他の要素は、種々のコンピュータ・プロセッサ及びシステムの間で分散されてもよい。
【００２４】
１つの実施形態において、データ・ストレージ２４０のデータは、複数のデータ・セットを有する１つ又は複数のボリュームのプールを含み、データ・セットはそれぞれ少なくとも１つのデータ・エクステントを有する。
【００２５】
特に、ストレージ制御部２１０は、コマンドに応答し、インターフェース２２０を介し、ホスト２０６に情報を要求し、そこから情報を受信する、応答モジュール２５０を実装する。データ管理モジュール２６０は、１つのタイプのデータ・ストレージから別のタイプのデータ・ストレージへとデータを移動させる、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐ．の「ＨＳＭ」のようなデータ管理プロセスを呼び出す。一例として、「ＨＳＭ」は、古くなって特定の閾値を満たさないデータを見つけ出し、それを、例えばハード・ディスク・ドライブのＲＡＩＤ構成からテープ・ライブラリへといったように、より低いアクティブ・レベルのデータ・ストレージに移動させる。
【００２６】
本明細書でのデータ管理は、データ・プール全体に対して行われる。
【００２７】
空き領域モジュール２７０は、データ・プールの断片化を判断し、プール内の既存の空き領域の量を求め、断片化及び空き領域に対する種々のアクションを行う。
【００２８】
デフラグ・モジュール２８０は、例えば、Ｄｉｎｏ  Ｓｏｆｔｗａｒｅの「Ｒｅａｌ  Ｔｉｍｅ  Ｄｅｆｒａｇ」、Ｃｏｍｐｕｔｅｒ  Ａｓｓｏｃｉａｔｅｓの「Ｃｏｍｐａｋｔｏｒ」、及びＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐ．の「ＤＦＤＳＳ  Ｄｅｆｒａｇ」のようなデフラグ・プロセスを呼び出すことによって、デフラグを開始する。デフラグ・モジュールは、ユーザが、プールのためのデフラグ・プロセスに関する選択肢を選択することを可能にすることができる。ユーザは、デフラグ・プロセスにより、デフラグされるオブジェクト、及び、プールにおける移動されたデータ・オブジェクトの一部の配置を選択することができる。
【００２９】
上述のように、データ・ストレージ２４０は、各々が複数のボリュームを有する１つ又は複数のデータ・ストレージ・プールを含むことができる。１つの実施形態において、アクティブ・データを有さない付加的なボリュームが、多数の「スピル」ボリューム２９０を含み、これらは、アクティブ・データを含まず、且つ、プールのどれにも属さないボリュームである。
【００３０】
当業者には周知のように、コンピュータ実装データ・ストレージは、「トラック」及び「シリンダ」のような、ハード・ドライブのディスク・ストレージの過去の物理的レイアウトに基づくが、現代の物理的ストレージより小容量の測定及びアドレス指定を用いている。大量のデータ・ストレージを収容するために、アドレス指定は、種々の方法で拡張されてきた。一例が、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐ．の「ｚ／ＯＳ」システムにおいて、ストレージ・ボリュームを６５，５２０シリンダより大きくすることを可能にした「ＥＡＶ」即ち拡張できるアドレス指定可能ボリューム（Extendable Addressable Volume）として、実装される。この環境において、最初の６５，５２０シリンダを超える空間は、「シリンダ管理空間（cylinder-managed space）」と呼ばれる、拡張されたアドレス空間である。シリンダ管理空間を用いることができるデータ・セットは、ｚ／ＯＳアドレス指定スキームにおいて、拡張されたアドレス指定に適していると言われる。ＥＡＶボリュームは、「トラック管理（track-managed）」領域として知られるより小容量のデータ・セットのための領域と、より大容量のデータ・セットのための、２１のシリンダ・ユニットに割り当てられる「チャンク（chunk）」管理ストレージの領域とを有する。
【００３１】
データ・セットは、１つ又は複数のエクステントを含み、且つ、１つのボリューム又は複数のボリューム内に存在し得る。逆に、ボリュームは複数のデータ・セットを有し、データ・セットは少なくとも１つのデータ・エクステントを有する。ボリュームの容量は、典型的には、ボリュームに割り当てられた又は実際にボリュームが使用するシリンダの数で測定される。
【００３２】
図２及び図３を参照すると、応答モジュール２５０が、例えばホスト・システム２０６による、データ・ストレージ２４０のボリュームのプールに対するデフラグ操作３００の開始に応答する。上述のように、デフラグは、時間の経過と共に断片化されたデータを取り出し、断片化されたデータを分析し、データの部分を削除された領域内に配置してデータを再編成し、データがより連続的且つ正しい順序になるようにする、１つのレベルのデータ・ストレージに対する操作又はプロセスである。ユーザ２０６は、ＪＣＬバッチ・ジョブ又はＴＳＯコマンドを介して、プール・デフラグ・コマンドを指定することができる。コマンドにおいて、ユーザは、デフラグされるプールを含むストレージ・グループ名を指定する。ステップ３００において、応答モジュールは、ストレージ・システムの動作を編成して、デフラグ操作に適合させる。これは、データ・ストレージの動作の早期完了又は一時停止を信号で伝えることを含むことができる。
【００３３】
ステップ３０５において、データ管理モジュール２６０は、上述した「ＨＳＭ」のようなデータ管理プロセスを呼び出し、古くなって特定の閾値を満たさないデータを見つけ出し、そのデータを、例えばデータのプールを含むハード・ディスク・ドライブのＲＡＩＤ構成からテープ・ライブラリへ及びプールの外へといったように、より低いアクティブ・レベルのデータ・ストレージ２４０に移動させる。データの移動は、典型的には、データ・セット・ベースで行われ、データのプール内に空き領域を開ける。空き領域は、典型的には、削除されたデータとしてＶＴＯＣにおいて識別される。
【００３４】
データ管理プロセスが完了し、ステップ３１０においてプロセスがデフラグ操作に戻ると、ステップ３１５は、空き領域モジュール２７０を動作させて、デフラグされるプールのデータの断片化を測定し、求める。
【００３５】
デフラグは、データがある期間にわたって更新され変更された後のデータの複雑度に関連する。データは、単一のエクステントを有するデータ・セットとして開始し得るが、時間の経過と共により多くのデータ及びファイルが付加、削除、及び修正されるにつれて、データ・セットは、物理的に分散された付加的なエクステントから構成されるようになる。
【００３６】
プールの断片化を判断するためのステップ３１５の１つの実施形態は、断片の推定数とプールのデータ・ストレージ容量の比を計算することによるものである。
【００３７】
データが複数のデータ・セットを有するボリュームを含む場合、データ・セットはそれぞれ少なくとも１つのデータ・エクステントを有し、断片の推定数は、プールのデータ・エクステントの数からプールのデータ・セットの数を減算することにより求められる。
【００３８】
プールのデータ・ストレージ容量は、プールを含むシリンダの数とすることができる。
【００３９】
別の実施形態において、断片化は、各ボリュームにおけるエクステントに基づいて計算され、これはボリュームのデフラグにも適用可能である。断片化の推定値は、エクステントの数及びこれらのエクステントのサイズを計算することによって計算される。エクステントの数をエクステントの平均サイズで除算すると、各ボリュームについての断片化測定値が得られる。エクステントの数が少なく、エクステントのサイズが大きいほど、ボリュームに関する断片化値は小さくなる。
【００４０】
ステップ３１５の１つの実施形態は、プールにわたるボリュームの断片化の計算結果を結合する。
【００４１】
ステップ３２０において、プールの既存の空き領域の量が求められる。空き領域は、削除されたデータを含む又はデータを含まない、ボリューム内の空間である。
【００４２】
空き領域及び断片化の両方を判断するためのツールが、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐ．の「ＬＳＰＡＣＥ」である。ＬＳＰＡＣＥは、ボリューム・サイズ、ボリュームの空き領域、ＶＴＯＣ及びＩＮＤＥＸの空き領域、エクステント及びデータ・セットの数等のような断片化情報に関する情報を提供する。トラック管理空間のサイズ、及びその空き領域統計値の情報も提供される。ＬＳＰＡＣＥマクロは、（ＬＳＰＡＣＥのサブファンクション、戻りコード、及び理由コードのような）状態情報をパラメータ・リストに戻す。「ＥＸＰＭＳＧ」及び「ＸＥＸＰＭＳＧ」のような選択肢は、ＬＳＰＡＣＥマクロが空き領域及びボリューム空間情報をボリューム・ベースで提供する必要がある拡張されたメッセージ戻り領域を生成する。シリンダ管理空間を有するボリュームについては、空き領域情報が、ボリューム全体に関する空き領域及びトラック管理空間に関する空き領域として戻される。２組の空き領域データは、シリンダ管理空間を有さないボリュームについて同一になる。ＬＳＰＡＣＥはまた、フォーマット、データ・セット制御ブロック、エクステント及び空きエクステントの総数、又は断片化指標のような情報を戻すこともできる。
【００４３】
代替的に、ファイル割り当てテーブル（file allocation table、ＦＡＴ）は、シリンダ範囲の開始及び終了を提供することができ、且つ、空き領域及び空間情報をボリューム・ベースで提供し、空き領域及び断片化の両方を判断するために用い得る空き領域ポインタを含む。
【００４４】
ステップ３２５において、空き領域モジュール２７０は、空き領域閾値を求める。
【００４５】
１つの実施形態において、空き領域閾値は公称閾値を含み、計算された断片化は、空き領域閾値を調整して、これを増加又は減少させる。
【００４６】
更に別の実施形態において、調整は、ある範囲の値を含む。
【００４７】
更に別の実施形態において、値の範囲は、計算された断片化の指標と関連する値の間で調整される。別の実施形態において、範囲内の値が計算された断片化の指標に基づくものとして、空き領域閾値（Ｔ）は、式：
（Ｔ）＝（プールの総ストレージ容量）×（公称閾値）×｛０．５〜１．５の範囲｝
に従って求められる。
【００４８】
従って、計算された断片化の指標は、範囲の下部に加算される０から１．０までの値である。
【００４９】
図４及び図５を参照すると、２つの異なるデータのレイアウトが示される。提示を簡単にするために、データは、データの物理的分散を示さずに、プールの代表的な仮想ボリュームとして示される。プールは、実際には、何百、何千のボリュームを含む可能性が高い。
【００５０】
図４のデータは、アクティブ・タイプのデータを示し、ここでは、代表的なボリューム４０１−４０４及び４０６−４０７が、１００のデータ・セットと、５００乃至１０００のエクステントとを含み、各々が１０，０００シリンダの容量を有する。ボリューム４０５は、例えばそのボリュームに関するＶＴＯＣにおいて、「空（Empty）」であるとして示され、そのデータ・セットが削除済みとしてマーク付けされていることを意味する。「空」のボリュームのソースはステップ２６０のデータ管理であってもよく、又は、ボリュームは、後述される「スピル」ボリュームであってもよい。
【００５１】
図５のデータは、低アクティブ・タイプのデータを示し、ここでは、代表的なボリューム５０１−５０３及び５０５−５０７は、２５乃至５０のデータ・セットと、１００乃至２００のエクステントとを含み、各々が１０，０００シリンダの容量を有する。ボリューム５０４は、「空」であるとして示され、例えばそのボリュームに関するＶＴＯＣにおいて、そのデータ・セットが削除済みとしてマーク付けされていることを意味する。「空」のボリュームのソースはステップ２６０のデータ管理であってもよく、又は、ボリュームは、後述される「スピル」ボリュームであってもよい。
【００５２】
図２、図３、図４、及び図５を参照すると、ステップ３２５において、空き領域モジュール２７０は、ステップ３１５において判断された情報を利用して、空き領域閾値を求める。
【００５３】
１つの実施形態において、空き領域閾値が、最初に、ユーザにより公称値として設定されるか、又はデフォルト設定により確立される。公称値は、ユーザが通常デフラグしなければならないデータ・タイプに対してデフラグを行うのに、ユーザの必要性に最良適合する値となるように、ユーザが経験から見出した値を含むことができる。一例として、デフラグを行うために必要とされる公称値は、プール内の２５％の空き領域を含むことができる。
【００５４】
１つの実施形態においては、プール内の実際のデータに従って、公称値に対して調整が行われる。１つの実施形態において、調整は、断片化の指標に基づいた範囲に従って、例えば公称値の０．５倍から１．５倍までである。公称値が２５％であれば、調整の範囲は、（２５％）×｛０．５〜１．５｝であり、即ち、１２．５％から３７．５％までの値の範囲である。
【００５５】
１つの実施形態において、公称値からの値の調整は、推定される断片化に関連する指標に基づく。一例として、指標は、０から１．０までとすることができ、調整の範囲の下部に加算することができる。１つの実施形態において、指標は、データの推定される断片化に線形に又は指数関数的に関連することができ、又は、データの推定される断片化に対するいずれの他の非線形の関係をも含むことができる。一例において、断片化は、エクステントの数からプールのデータ・セットの数を引いて、断片の推定数をもたらすことを含み、この断片の推定数をプールの容量で除算する。従って、断片化値は、ごく僅かなものである。
【００５６】
１つの実施形態において、説明目的で、図４の代表的なボリュームのみを用いて、ステップ３１５は、プールを構成するデータ４０１−４０４及び４０６−４０７を有するボリュームについて、４，５００のエクステントを有する６００のデータ・セットが存在すると判断した。ステップ３１５はまた、データ管理ステップ３０５により「空」のボリューム４０５が空にされた場合、プールの容量は７０，０００シリンダであるとも判断した。
【００５７】
上記の例示的な断片化の判断を用いて、エクステントの数（４，５００）からデータ・セットの数（６００）を減算すると、断片の推定数（３，９００）が得られ、この結果をプールの容量（７０，０００）で除算すると、（０．０５５７）の断片化値が得られる。
【００５８】
１つの実施形態において、説明目的で、図５の代表的なボリュームのみを用いて、ステップ３１５は、プールを構成するデータ５０１−５０３及び５０５−５０７を有するボリュームについて、９００個の範囲を有する２５０個のデータ・セットが存在すると判断した。ステップ３１５はまた、「空」のボリューム５０４が存在しない場合、プールの容量は６０，０００シリンダであると判断した。
【００５９】
上記の例示的な断片化の判断を用いて、エクステントの数（９００）からデータ・セットの数（２５０）を減算すると、断片の推定数（６５０）が得られ、この結果をプールの容量（６０，０００）で除算すると、（０．００１１）の断片化値が得られる。
【００６０】
上述のように、指標は、推定されるデータの断片化に線形又は指数関数的に関連することができ、又は、推定されるデータの断片化に対するいずれの他の非線形の関係をも含むことができる。一例において、指標は、推定されるデータの断片化に線形に関連し、断片化が「０．００００」を含む場合の「０」から、断片化が「０．１０００」を含む場合の「１」までの範囲に及ぶ。
【００６１】
上記の例を用いると、指標は、図４のプールのデータについて（０．５６）を含み、図５のプールのデータについて（０．０１）を含む。
【００６２】
１つの実施形態において、指標値は、範囲の下部に加算され、図４のプールのデータについては、（０．５）に（０．５６）を加算した（１．０６）に等しく、図５のプールのデータについては、（０．５）に（０．０１）を加算した（０．５１）に等しい。
【００６３】
指標値を求めるための式は、推定されたプールのデータの断片化に基づいており、上記に提示されたものとは異なり得る。
【００６４】
１つの実施形態において、範囲内の値は、計算された断片化の指標に基づくものとして、空き領域閾値（Ｔ）は、式：
（Ｔ）＝（前記プールの総ストレージ容量）×（公称閾値）×｛０．５〜１．５の範囲｝
に従って求められる。
【００６５】
空き領域閾値を求めるためにこれらの値を用いることは、指標値に公称閾値を乗算し、その結果得られた百分率にプールの容量を乗算することを含む。図４のプールのデータについては、この計算は、（７０，０００シリンダ）×（２５パーセント）×（１．０６）を含み、（１８，５５０シリンダ）の閾値（Ｔ）が得られる。図５のプールのデータについて、この計算は、（６０，０００シリンダ）×（２５パーセント）×（０．５１）を含み、（７，６５０シリンダ）の閾値（Ｔ）が得られる。
【００６６】
ステップ３２５の閾値（Ｔ）を確立するために指標と共に用いる測定単位は、上記のものとは異なることがあり、閾値（Ｔ）は、ステップ３２０で求められた既存の空き領域の量と比較することができる測定単位を表す。
【００６７】
ステップ３３０は、ステップ３２０において求められた既存の空き領域を、ステップ３２５において求められた閾値と比較する。ステップ３３５において、空き領域モジュール２７０は、この比較を用いて、「スピル」ボリュームを付加するか、又は既存の空き領域にデフラグを命令するかを判断する。ステップ３２０において求められた、プールに関する既存の空き領域が閾値を下回る場合、ステップ３４０において、「スピル」ボリュームが付加される。１つの実施形態において、付加されるスピル・ボリュームの数は、閾値を超えるのに必要とされる数である。
【００６８】
例として図５のプールを用いると、閾値（７，６５０シリンダ）に関して、ステップ３２０において求められた空き領域が、この閾値を下回った場合、「スピル」ボリューム２９０から、１つの「スピル」ボリューム５０４をプールに付加すればよく、付加された「スピル」ボリュームは、１０，０００シリンダをもたらす。代案として、「スピル」ボリュームは、ボリュームのオーバーフロー・プールによってもたらされ得る。
【００６９】
ひとたび既存の空き領域又は既存の空き領域と付加された「スピル」ボリュームとの組み合わせからの、空き領域が閾値を上回ると、プロセスは、モジュール２８０のステップ３５０に移動する。「スピル」ボリュームが用いられた場合、同じ数の既存のボリュームが、デフラグ・プロセスの間に空にされるボリュームとしてマーク付けされ、その結果、デフラグ・プロセスが完了すると同時に、これらをプールから除去することができる。マーク付けは、ボリュームがそのコンテンツが除去されるという、ＶＴＯＣにおける表示を含むことができる。
【００７０】
デフラグ・モジュール２８０は、例えば、デフラグ・プロセスを呼び出すことによって、デフラグを開始する。幾つかの例として、Ｄｉｎｏ  Ｓｏｆｔｗａｒｅの「Ｒｅａｌ  Ｔｉｍｅ  Ｄｅｆｒａｇ」、Ｃｏｍｐｕｔｅｒ  Ａｓｓｏｃｉａｔｅｓの「Ｃｏｍｐａｋｔｏｒ」、及びＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐ．の「ＤＦＤＳＳ  Ｄｅｆｒａｇ」が挙げられる。１つの実施形態において、デフラグ・モジュールは、付加的に、ユーザが、プールについてのデフラグ・プロセスに関する選択肢を選択するのを可能にすることができる。この選択肢は、デフラグ・プロセスによる、デフラグされるオブジェクトの選択、及びプールにおける移動されたデータ・オブジェクトの配置を含む。
【００７１】
選択肢及びパラメータの選択は、ユーザから受信し、応答モジュール２５０により転送することができる。
【００７２】
１つの実施形態において、選択肢「Ｒｅｄｕｃｅ＿Ｍｕｌｔｉ」は、設定された場合、現在複数のボリューム上にあるデータ・セットを、できる限り少ないボリューム上に割り当てるべきであることを示す。この選択肢を選択する理由として、バックアップをより容易にすること、及び、幾つかの操作中のシリアル化の制約を低減させることを挙げることができる。ストライプ化された（striped）データ・セットは、性能上の理由で意図的に設定されているので、この選択肢はストライプ化されたデータ・セットには適用されない。ストライプ化されていない複数ボリューム上のデータ・セットは、ボリュームにわたってＩ／Ｏをストライプ化しないため、割り当てられたボリュームを減らすための性能上の意味が存在しない。
【００７３】
選択肢「Ｆｒｅｅｓｐａｃｅ＿Ｐｒｅｆｅｒｅｎｃｅ」は、設定された場合、ユーザが、ストレージ・プール内で空き領域がどのように分散されることを望むかを指定することを可能にする。例えば、これにより、ユーザが、各ボリューム上に残されるべき空き領域の最小量を指定することが可能になる。例えば、「Ｆｒｅｅｓｐａｃｅ＿Ｐｒｅｆｅｒｅｎｃｅ（５）」は、ユーザが、プールの各ボリューム上に、最低５％の空き領域が残されることを望むことを意味する。従って、デフラグ中にデータを割り当てる際、ボリュームの空間の９５％を超えた割り当ては許容されない。ユーザが、「スピル」ボリュームを戻した後、指定値を満たすのにプール内に十分な空間を有していない場合、応答モジュール２５０により、エラー・メッセージがユーザに発行される。ステップ３１５及び３２０が実施された後、プール内の総利用可能な空間は既知である。
【００７４】
選択肢「Ｅｍｐｔｙ＿Ｖｏｌ＿Ｐｒｅｆｅｒｅｎｃｅ」は、ユーザが、「スピル」ボリュームを戻した後、プール内に残す最小数の空のボリュームを表す数値を指定することを可能にする。次に、ユーザが異なるプールにおけるその空間の使用を望む場合、デフラグ後にこれらのボリュームを除去することができ、又はこれらのボリュームをプール内に残して、単一ボリュームへの大きな割り当てを可能にすることができる。ユーザがこの選択肢を用いる場合、最も多い空き領域及び最小量の割り当てられたデータ・セットを有するボリュームは、プールのデフラグ中、データ・セットの全てをこれらのボリュームの外に移動させる。ユーザが、ボリュームごとの「Ｆｒｅｅｓｐａｃｅ＿Ｐｒｅｆｅｒｅｎｃｅ」と併せて、あまりに多数の空のボリュームを指定した場合、同じく、総プール空間が不十分であることを示すように、エラー・メッセージが発行される。
【００７５】
データ・セットが最小サイズ基準を満たす場合、「ＥＡＶ＿Ｕｐｌｉｆｔ」は、データ・セットを上述のようなシリンダ管理ストレージに移動させるための選択肢である。既存のシリンダ管理データ・セットに関しては、空間が依然としてそこで利用可能であると仮定して、デフラグの後も、引き続きシリンダ管理ストレージ内に存在する。この選択肢もまた、「スピル」ボリュームを、上述した拡張されたアドレス可能ボリュームとして付加することを可能にし、これにより、デフラグの際、付加的なＥＡＶ空間が利用できるようになる。
【００７６】
「Ｒｅｔｒｙ＿ｉｎ＿Ｕｓｅ」は、現在使用中のデータ・セットを移動させる再試行の回数を含むパラメータである。最大数の再試行後にデータ・セットが依然として使用中である場合、そのデータ・セットは移動されない。
【００７７】
ステップ３６０は、デフラグの完了後、デフラグ・プロセスから戻ることを含み、ステップ３６０は、「スピル」ボリュームに戻されるボリュームを識別する。これにより、「スピル」ボリュームが、別のデフラグで用いるために利用できるようになる。
【００７８】
当業者であれば、図１のシステム１００内でデフラグを行うための、図２のコンピュータ実装システム２００を含む、本明細書で開示される本発明の実施形態、及びそこで提供される機能を、システム、方法、又はコンピュータ・プログラム製品として具体化できることを認識するであろう。従って、本発明の実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロ・コード等を含む）、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態のような、その組み合わせの形態を取ることができ、本明細書においては、これらは全て一般的に「回路」、「モジュール」又は「システム」と呼ぶことができる。さらに、本発明の実施形態は、具体化されたコンピュータ可読プログラム・コードを有する、１つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラム製品の形態をとることができる。
【００７９】
１つ又は複数のコンピュータ可読媒体のいずれの組み合わせを用いることもできる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子、磁気、光、電磁気、赤外線又は半導体のシステム、装置、若しくはデバイス、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例（非網羅的なリスト）として、以下のもの、即ち、１つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶装置、磁気記憶装置、又は上記のいずれかの適切な組み合わせが挙げられる。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって又はこれらと関連して用いるためのプログラムを収容又は格納することができるいずれかの有形媒体とすることができる。
【００８０】
コンピュータ可読媒体上に具体化されたプログラム・コードは、これらに限定されるものではないが、無線、有線、光ファイバ・ケーブル、ＲＦ等、又は上記のいずれかの適切な組み合わせを含む、いずれかの適切な媒体を用いて伝送することができる。
【００８１】
本発明の実施形態の動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、ＳｍａｌｌＴａｌｋ、Ｃ＋＋等のようなオブジェクト指向型プログラミング言語、及び「Ｃ」プログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、１つ又は複数のプログラミング言語のいずれかの組み合わせで記述することができる。プログラム・コードは、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。一番最後のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある（例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて）。
【００８２】
本発明の実施形態は、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して、上述される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図中のブロックの組み合わせは、コンピュータ・プログラム命令によって実装することができることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装するための手段を作り出すようにすることができる。
【００８３】
これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスに特定の方式で機能するように指示することができるコンピュータ可読媒体内に格納して、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装する命令を含む製造物品を製造するようにさせることもできる。
【００８４】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で、コンピュータ実装プロセスを生成するための一連の動作ステップを実施させて、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装するためのプロセスを提供するようにさえることもできる。
【００８５】
当業者であれば、上述の方法に関して、ステップの順序に対する変更を含む変更をなし得ることを理解するであろう。さらに、当業者であれば、本明細書で示されるものとは異なる特定のコンポーネント構成を用い得ることも理解するであろう。
【００８６】
当業者であれば、上述の方法に関して、ステップの順序に対する変更を含む変更をなし得ることを理解するであろう。さらに、当業者であれば、本明細書で示されるものとは異なる特定のコンポーネント構成を用い得ることも理解するであろう。
【００８７】
本発明の好ましい実施形態が詳細に示されたが、当業者であれば、添付の特許請求の範囲で記述されるような本発明の範囲から逸脱することなく、これらの実施形態に対する修正及び適合に想到し得ることは明らかである。
【符号の説明】
【００８８】
１００、２００：コンピュータ実装システム（システム・アーキテクチャ）
１０２：コンピュータ・プロセッサ
１０６：サーバ・プロセッサ
１０４：ネットワーク
１０８：ストレージ・ネットワーク
１１０：ストレージ・システム
１１２：アタッチト・ストレージ
１１０ａ：アレイ
１１０ｂ：テープ・ライブラリ
１１０ｃ：ハード・ディスク・ドライブ又はソリッド・ステート・ドライブ
１１０ｄ：テープ・ドライブ又はライブラリ
２０６：ホスト
２１０：ストレージ制御部
２２０、２３０：インターフェース
２４０：データ・ストレージ
２５０：応答モジュール
２６０：データ管理モジュール
２７０：空き領域モジュール
２８０：デフラグ・モジュール
２９０：スピル・ボリューム
４０１−４０７、５０１−５０７：ボリューム
【図１】
0005946521.tif 000002
【図２】
0005946521.tif 000003
【図３】
0005946521.tif 000004
【図４】
0005946521.tif 000005
【図５】
0005946521.tif 000006