(57)【要約】      （修正有）【課題】バーチャル環境においてダイナミックストレージ階層化を行うためのシステム及び方法を提供する。【解決手段】バーチャルマシンファイル内における記憶対象の位置が特定され、バーチャルマシンファイルは複数の記憶対象を含む。記憶対象が階層化ポリシーの基準を満たすか否かが検出され、基準を満たす場合、記憶対象は、多階層型ストレージシステムの１つの階層から多階層型ストレージシステムの別の階層へと移動される。【選択図】図４
2018110014.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶対象を備えるバーチャルマシンファイル内における記憶対象の位置を特定する工程と、
前記記憶対象が、階層化ポリシーにおいて指定される基準を満たすか否かを検出する工程と、
前記検出する工程に応答して、前記記憶対象の第１の記憶階層から第２の記憶階層への移動を開始する工程と、を含む方法。
【請求項２】
前記特定する工程はメタデータにアクセスする工程を含み、
前記メタデータは複数のｉノードを特定する情報を含む、請求項１に記載の方法。
【請求項３】
前記特定する工程は前記バーチャルマシンファイルを搭載する工程を含む、請求項１に記載の方法。
【請求項４】
前記記憶対象はメタデータを含む、請求項１に記載の方法。
【請求項５】
前記記憶対象に対する修正を検出する工程を更に含み、
前記検出する工程は前記移動の間に発生する、請求項１に記載の方法。
【請求項６】
前記複数の記憶対象のうちで前記階層化ポリシーに関与する各記憶対象を特定する情報を含むリストを作成する工程を更に含む、請求項１に記載の方法。
【請求項７】
マップを生成する工程を更に含み、
前記マップは、前記複数の記憶対象のうちで前記階層化ポリシーに関与する各記憶対象の、前記バーチャルマシンファイル内における位置を特定する、請求項１に記載の方法。
【請求項８】
前記記憶対象はファイルを含む、請求項１に記載の方法。
【請求項９】
前記バーチャルマシンによって実行されるファイルシステムを特定する工程を更に含む、請求項１に記載の方法。
【請求項１０】
実行可能なプログラム命令を備えるコンピュータ可読記憶媒体であって、前記プログラム命令は、
複数の記憶対象を備えるバーチャルマシンファイル内における記憶対象の位置を特定することと、
前記記憶対象が階層化ポリシーにおいて指定される基準を満たすか否かを検出することと、
前記記憶対象が前記基準を満たすか否かの検出に応答して、前記記憶対象の第１の記憶階層から第２の記憶階層への移動を開始することと、を実行可能とするコンピュータ可読記憶媒体。
【請求項１１】
前記プログラム命令は、
メタデータにアクセスすることを更に実行可能であり、
前記メタデータは複数のｉノードを特定する情報を含む、請求項１０に記載のコンピュータ可読記憶媒体。
【請求項１２】
前記プログラム命令は、
前記バーチャルマシンファイルを搭載することを更に実行可能である、請求項１０に記載のコンピュータ可読記憶媒体。
【請求項１３】
前記プログラム命令は、
前記移動の間に、前記記憶対象が修正されるか否かを検出することを更に実行可能である、請求項１０に記載のコンピュータ可読記憶媒体。
【請求項１４】
前記プログラム命令は、
前記複数の記憶対象のうちで前記階層化ポリシーに関与する各記憶対象を特定する情報を含むリストを作成することを更に実行可能である、請求項１０に記載のコンピュータ可読記憶媒体。
【請求項１５】
前記プログラム命令は、
マップを生成することを更に実行可能であり、
前記マップは、前記複数の記憶対象のうちで前記階層化ポリシーに関与する各記憶対象の、前記バーチャルマシンファイル内における位置を特定する、請求項１０に記載のコンピュータ可読記憶媒体。
【請求項１６】
システムであって、
１つ又は複数のプロセッサと、
前記１つ又は複数のプロセッサに連結されたメモリと、を備え、前記メモリは、
複数の記憶対象を備えるバーチャルマシンファイル内における記憶対象の位置を特定することと、
前記記憶対象が、階層化ポリシーにおいて指定される基準を満たすか否かを検出することと、
前記記憶対象が前記基準を満たすか否かの検出に応答して、前記記憶対象の第１の記憶階層から第２の記憶階層への移動を開始することと、を実行可能なプログラム命令を記憶するメモリである、システム。
【請求項１７】
前記プログラム命令は、
メタデータにアクセスすることを更に実行可能であり、
前記メタデータは複数のｉノードを特定する情報を含む、請求項１６に記載のシステム。
【請求項１８】
前記プログラム命令は、
前記移動の間に、前記記憶対象が修正されるか否かを検出することを更に実行可能である、請求項１６に記載のシステム。
【請求項１９】
前記プログラム命令は、
前記複数の記憶対象のうちで前記階層化ポリシーに関与する各記憶対象を特定する情報を含むリストを作成することを更に実行可能である、請求項１６に記載のシステム。
【請求項２０】
前記プログラム命令は、
マップを生成することを更に実行可能であり、
前記マップは、前記複数の記憶対象のうちで前記階層化ポリシーに関与する各記憶対象の、前記バーチャルマシンファイル内における位置を特定する、請求項１６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの編成に関し、より具体的には、バーチャル環境におけるストレージ階層化の実行に関する。
【背景技術】
【０００２】
多階層型ストレージシステムは、記憶デバイスの属性に基づいて別個の階層内へと配列される、異なる属性、例えば性能特性を有する記憶デバイスを含む。データの特性に基づいて、多階層型ストレージシステムの様々な階層間でデータを実際に移動させることは、ストレージ階層化として知られている。ストレージ階層化は、データ記憶のコストを低下させたり、様々なタイプの計算機システムに向けて性能を改善したりするなど、様々な利益を提供することができる。
【０００３】
階層化ポリシーは、多階層型ストレージシステム内のどの階層に所与の記憶対象を、例えばファイルを記憶させるべきかを命令する、１つ又は複数の基準を指定することができる。コンピュータシステムは、所与の記憶対象が階層化ポリシーによって指定された１つ又は複数の基準を満たすか否かを検出することによって、階層化ポリシーを実践することができる。記憶対象が基準を満たすか否かに基づいて、コンピュータシステムは、記憶対象を多階層型ストレージシステムの１つの階層から多階層型ストレージシステムの別の階層へと再配置することができる。
【０００４】
ダイナミックストレージ階層化とは、１つ又は複数のアプリケーションによってアクセス可能である記憶対象に対して、ストレージ階層化ポリシーを実際に実践することを指す。このことによって、ストレージ階層化動作を行うために記憶対象を「オフライン」にする必要性がなくなる。例示のストレージ階層化動作としては、記憶対象がストレージ階層化ポリシーにおける基準を満たすか否かを検出すること、及び記憶対象を多階層型ストレージシステムの第１の階層から多階層型ストレージシステムの第２の階層へと再配置することが挙げられる。
【０００５】
ストレージ階層化はバーチャル環境で実践することができる。バーチャル環境は、１つ又は複数のバーチャルマシンを含む計算機環境である。バーチャルマシンは、物理的なコンピュータハードウェアの形でコンピュータ命令を実行する物理的コンピュータのソフトウェア実装である。バーチャルマシンは、ホストコンピュータシステム上でバーチャルマシンを始動させ動作させるための情報を備える、バーチャルマシンファイル（例えば、コンピュータメモリに記憶された画像ファイル）を使用して実装される。単一のコンピュータであってもネットワーク化されたコンピュータ群であっても、今日のコンピュータシステムの（大部分ではないにしても）多くは、バーチャルマシンに対するホストコンピュータシステムとして作用することができる。
【０００６】
ホストコンピュータシステムは、ホストオペレーティングシステムとして知られるオペレーティングシステムを含む。ホストオペレーティングシステムは、ホストファイルシステムを実装する。ホストオペレーティングシステムは、ホストファイルシステムを使用して、ホストコンピュータシステムによって使用される記憶対象を、例えばファイルを編成し操作する。ホストオペレーティングシステムは、バーチャルマシンファイルを１つのかかる記憶対象として見ている。
【０００７】
バーチャルマシンはまた、ゲストオペレーティングシステムとして知られるオペレーティングシステムを含む。ゲストオペレーティングシステムは、ゲストファイルシステムを実装する。ゲストオペレーティングシステムは、ゲストファイルシステムを使用して、バーチャルマシンによって使用される記憶対象、例えばファイルを編成し操作する。
【０００８】
ホストオペレーティングシステム及びゲストオペレーティングシステムは、別個のオペレーティングシステムであり、バーチャルマシンファイルを同じ詳細度で見ていない。ホストオペレーティングシステムは、バーチャルマシンファイルを単一のファイルと見なし、バーチャルマシンファイル内のデータ（ゲストファイルシステムによって作成されるファイルなど）の任意の論理的編成は意識しない。結果として、ホストによって行われるストレージ階層化動作は、バーチャルマシンによって使用される個々の記憶対象を配置する階層を有効に選択することができない。
【発明の概要】
【課題を解決するための手段】
【０００９】
バーチャル環境においてダイナミックストレージ階層化を行うための様々なシステム及び方法が開示される。例えば、１つの方法は、バーチャルマシンファイル内における記憶対象の位置を特定することを伴うことができ、その際、バーチャルマシンファイルは複数の記憶対象を含む。例えば、記憶対象は、バーチャルマシンファイル内のファイルであることができる。方法は、次に、記憶対象が階層化ポリシーの基準を満たすか否かを検出することを伴う。記憶対象が基準を満たす場合、記憶対象は、多階層型ストレージシステムの１つの階層から多階層型ストレージシステムの別の階層へと移動される。記憶対象は、ファイルデータ及び／又はメタデータを含むことができる。方法はまた、かかる移動の間に記憶対象が修正されるか否かを検出することを伴うことができる。
【００１０】
一実施形態では、方法は、複数のｉノードを特定する、バーチャルマシンファイル内のメタデータにアクセスすることを伴う。バーチャルマシンファイル内のメタデータのタイプ及び位置は、バーチャルマシンファイルを実行することによって実装されるバーチャルマシンによって実行されるファイルシステムに応じて変わり得る。方法は、ｉノード内の情報を使用して、バーチャルマシンファイル内の記憶対象を特定する。メタデータにアクセスするために、例えばホストファイルシステムによって、バーチャルマシンファイルを搭載することができる。
【００１１】
階層化ポリシーの対象である複数の記憶対象のうち、各記憶対象のリストが作成される。ポリシーの対象である記憶対象はそれぞれマッピングされ、マップは、バーチャルマシンファイル内における記憶対象の位置を特定する。
【図面の簡単な説明】
【００１２】
本発明は、添付図面を参照することによって、より良好に理解することができ、その多数の目的、特徴、及び利点が当業者に明白となり得る。
【図１】本発明の一実施形態による、バーチャル環境においてダイナミックストレージ階層化を行うシステムのブロック図である。
【図２】本発明の一実施形態によるバーチャルマシンファイルのブロック図である。
【図３】本発明の一実施形態による、バーチャルマシンファイル内のファイルの位置を判断する方法を示すフローチャートである。
【図４】本発明の一実施形態による、バーチャル環境においてダイナミックストレージ階層化を行う方法を示すフローチャートである。
【図５】本発明の一実施形態による、階層化モジュールをどのようにしてソフトウェアに実装することができるかを例証する、計算機デバイスのブロック図である。
【図６】本発明の一実施形態による、様々な計算機デバイスがどのようにしてネットワークを介して通信することができるかを例証する、ネットワーク化システムのブロック図である。
【００１３】
本発明は様々な修正及び代替形態の影響を受けやすいが、本発明の特定の実施形態は、図面及び詳細な説明において実施例として提供される。図面及び詳細な説明は、本発明を開示される特定の形態に限定しようとするものではないことは理解すべきである。その代わりに、本発明は、添付の請求項によって定義されるような本発明の趣旨及び範囲内にあ
る、全ての修正、等価物、及び代替物を包含する。
【発明を実施するための形態】
【００１４】
ダイナミックストレージ階層化（ＤＳＴ）は、どのデータを多階層型ストレージシステムのどの階層に記憶すべきかを判断するプロセスを含む。データは、様々なグループ分けに、つまり記憶対象に編成することができる。例えば、データはファイルへと論理的にグループ分けすることができる。物理レベルで形成される別のタイプのグループ分けは、ブロック又はチャンクである。ストレージ階層化動作は、任意のタイプの記憶対象に対して行うことができる。
【００１５】
ＤＳＴは、階層化ポリシーによって命令されるように、適切な場合は常にデータをより低コストの階層へと移動させることを担保するのに使用することができるので、データ記憶コストを制限する有効な手法である。しかしながら、特定の状況では、ＤＳＴの有効性が限定される場合がある。例えば、バーチャルマシンを含む計算機環境でＤＳＴを行う一般的なホストオペレーティングシステムの場合、ホストオペレーティングシステムは、一般的に、バーチャルマシンを単一のバーチャルマシンファイルと見なす。したがって、ホストオペレーティングシステムは、バーチャルマシンファイル全体に対してのみＤＳＴ動作を行うことができる。これは、非効率的であることがあるが、その理由は、バーチャルマシンファイルが非常に大きい場合があり、階層化ポリシーの基準を実際に満たすのがバーチャルマシンファイル内のデータの一部分でしかない可能性があるためである。例えば、バーチャルマシンファイルは、バーチャルマシンによって実行されるゲストオペレーティングシステムによって実装されるファイルシステムにより、多数の記憶対象、例えばファイルに分割することができる。しかしながら、ホストオペレーティングシステムは、ゲストオペレーティングシステムがバーチャルマシンファイル内でデータを個々のファイルへと分割することには関与しない。
【００１６】
バーチャルマシンファイル内の特定のファイルが、例えばファイルに対する頻繁なＩ／Ｏアクセスにより、多階層型ストレージシステムの最上階層に記憶するのに要するのに十分な高温のものであり、一方でバーチャルマシンファイルの残りがより下層の階層に記憶するのに十分な低温のものである例について考察する。ホストオペレーティングシステムは、バーチャルマシンファイル全体の温度を特定のファイルの温度と見なし、バーチャルマシンファイル全体を最上階層に記憶する。このバーチャルマシンファイル全体が最上階層に記憶されることを要することにより、バーチャルマシンファイルの記憶コストが不必要に増加する。実際には、最上階層に記憶すべきなのは、バーチャルマシンファイルの特定のファイルのみであり、バーチャルマシンファイル内の残りのデータはより下層の階層に再配置することができるので、バーチャルマシンファイルを記憶するコストが低減される。
【００１７】
図１は、ダイナミックストレージ階層化を行う計算機環境１００のブロック図である。図示されるように、計算機環境１００は、ネットワーク３０によってストレージシステム２０に連結されたホスト１０を含む。ネットワーク３０としては、インターネットなどのＷＡＮ（広域ネットワーク）、１つ又は複数のＬＡＮ（ローカルエリアネットワーク）、及び／又は１つ又は複数のＳＡＮ（ストレージエリアネットワーク）を挙げることができる。
【００１８】
ホスト１０は、パーソナルコンピュータ、ラップトップコンピュータ、サーバー、携帯情報端末、携帯電話など、計算機デバイス、又は計算機デバイスの一部分である。ホスト１０は、バーチャルマシン５０など、１つ又は複数のバーチャルマシンをホストするように構成される。ホスト１０のリソースは、ホスト１０上に実装される任意のバーチャルマシンによって共有される。
【００１９】
ホスト１０は、プロセッサ４１４に連結されたメモリ４１６を含む。メモリ４１６は、一実施形態では、ランダムアクセスメモリ（ＲＡＭ）である。メモリ４１６は、ホストファイルシステム４２を実装し階層化モジュール４４を含むホストオペレーティングシステム４０を実装するため、プロセッサ４１４によって実行可能なプログラム命令を記憶する。ホストオペレーティングシステム４０はまた、マッピング情報４６を含む。
【００２０】
メモリ４１６はまた、ゲストファイルシステム５４及び階層化モジュール５６を実装するゲストオペレーティングシステム５２を実行するバーチャルマシン５０を実装するために、プロセッサ４１４によって実行可能なプログラム命令を記憶する。メモリ４１６はまた、階層化情報１２及び仮想化モジュール１４を記憶する。仮想化モジュール１４は、バーチャルマシン及びバーチャルマシン用のリソースの作成と管理に関連する動作を行う。仮想化モジュール１４は、独立型モジュールとして例証されているが、ホストオペレーティングシステム４０に含めることもできる。仮想化モジュール１４は、バーチャルマシン５０など、１つ又は複数のバーチャルマシンに同時に対応する能力をホスト１０に提供する。仮想化モジュール１４は、この能力を、バーチャルマシンが物理的コンピュータと同様に動作するように、バーチャルマシンに対するコンピュータリソース（例えば、処理能力、メモリなど）の配分を調整することによって提供する。仮想化モジュール１４は、バーチャルマシンに代わって命令の実行に対応するようにプロセッサリソースを調整し、バーチャルマシンがホストコンピュータのシステムメモリを有効に共有することを担保する助けとなるようにメモリ管理を行うことによって、バーチャルマシンに対応するように設計することができる。
【００２１】
ストレージシステム２０は、複数の個別の記憶デバイスを含むことができる。各記憶デバイスは、入力／出力（Ｉ／Ｏ）性能、データの有用性、及び相対コスト特性など、異なる特性を有することができる。ストレージシステム管理者は、ストレージシステム２０の記憶デバイスを複数の階層に分割することができる。管理者は、比較的類似した特性を有する記憶デバイスを階層へとグループ化することができる。例えば、ストレージシステム２０が、いくつかのソリッドステートドライブ（ＳＳＤ）ストレージデバイス、いくつかのファイバーチャネル（ＦＣ）ストレージシステム、及びいくつかのシリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）デバイスを含む場合、管理者は、ストレージシステム２０をデバイスのタイプに基づいて３つの階層へと分割することができる。すなわち、管理者は、ストレージシステム２０を、ＳＳＤデバイスから成る第１の階層、ＦＣデバイスから成る第２の階層、及びＳＡＴＡデバイスから成る第３の階層に分割することができる。ＳＳＤデバイスがＦＣデバイス及びＳＡＴＡデバイスに比べて高性能のデバイスであれば、第１の階層は、３つの階層の中で最良の性能を有する可能性が高い。ＳＳＤデバイスの第１の階層に記憶されたデータは、第２の階層及び第３の階層に記憶されたデータよりも迅速にかつ信頼性高くアクセス可能である可能性が高い。しかしながら、ＳＳＤデバイスは比較的高コストでもあるので、第１の階層にデータを記憶するのは、第２の階層及び第３の階層に記憶するよりも高価である。したがって、より上層の階層からより下層の階層へとデータを移動させることは、記憶コスト全体の低減を意味する。しかしながら、一部のデータはより重要であり、できるだけ上層の階層に記憶すべきである。
【００２２】
上述の例は３つの可能なタイプの階層を列挙しているが、ストレージシステム２０などの多階層型ストレージシステムは、３つの階層に限定されず、また必ずしもデバイスのタイプによって分割されるものではない。例えば、テープドライブ又は他のタイプの記憶デバイスを使用して、階層を作成することができる。階層は、記憶デバイスで使用される世代若しくは技術、又は他の様々な属性、例えば記憶デバイスのコストに基づいて作成することができる。一般的に、ストレージシステム２０などの多階層型ストレージシステムは、各階層が互いに類似の属性を有する記憶デバイスから成り、属性が他の階層の記憶デバイスの属性と区別することができる、階層のハイアラーキを含む。ハイアラーキの最上階層は、記憶の目的に基づいて、最も望ましい性能特性（例えば、速度、容量）を提供し、最下階層は最も低い性能を提供する。ハイアラーキはまた、コストによって編成することができ、例えば、最上階層が記憶単位当たり最も高いコストを提供し、最下階層が記憶単位当たり最も低いコストを提供する。多階層型ストレージシステムは、他の原則又は編成目的にしたがって編成することができる。
【００２３】
ストレージシステム２０は永続的なデータ記憶を提供するので、ストレージシステム２０に記憶されたデータは、ストレージシステム２０の電源が切られた後であっても記憶されたままとなる。ストレージシステム２０は、例えば、ソリッドステートドライブ、ファイバーチャネルデバイス、ハードディスク、コンパクトディスク（ＣＤ）、デジタル多目的ディスク（ＤＶＤ）、逐次アクセス媒体（例えば、テープストレージ）、又は他の大容量記憶デバイス、ファイルサーバーアプライアンス、あるいはストレージシステム（例えば、独立ディスクの冗長アレイ（ＲＡＩＤ）システム若しくは光記憶ジュークボックス）など、１つ又は複数の記憶デバイス又はストレージアプライアンスを含むことができる。ストレージシステム２０はまた、固体媒体（例えば、フラッシュドライブ）、光学媒体（例えば、ＣＤ及びＤＶＤ）、並びに磁気媒体（例えば、ハードディスク又は磁気テープ）を含む、１つ又は複数のタイプの記憶媒体を含むことができる。一実施形態では、ストレージシステム２０は、ストレージシステム２０が、必要及び／又は契約に応じて物理的記憶デバイス（１つ又は複数）が割り付けられる論理的記憶デバイスである、クラウドストレージを使用して実装することができる。
【００２４】
ストレージシステム２０は、複数の階層２４（０）〜２４（Ｎ）を含む（Ｎは、２以上の整数であり、ストレージシステム２０内の階層の数を示す）。各階層は、他の階層とは異なるタイプの１つ又は複数の同質の記憶デバイスから成ることができ、例えば、階層２４（０）はソリッドステートドライブを排他的に含むことができ、階層２４（１）はハードディスクを排他的に含むことができる。階層はまた、１つ又は複数の性能特性に基づいて編成することができる。例えば、階層２４（０）は比較的高速の記憶デバイスを含むことができ、階層２４（１）は比較的低速の記憶デバイスを含むことができる。例えば、階層２４（０）は高速ハードドライブを、例えばより新しい技術を含むことができ、階層２４（１）はより低速のハードドライブを、例えばより古い技術を含むことができる。一実施形態では、各階層は複数のタイプの記憶デバイスを含むことができる。階層はまた、アクセス時間、安全性、地理的位置、ストレージシステム２０内におけるデバイスの他の任意の物理的又は論理的特性に基づいて形成することができる。一実施形態では、第１の階層はＳＳＤ、第２の階層はファイバーチャネルＬＵＮ、及び第３の階層はＳＡＴＡである。
【００２５】
ストレージマネージャー２２は、ストレージ管理機能を提供する。例えば、ホストオペレーティングシステム４０が、ファイルを１つの階層から別の階層へと移動させるべきと判断すると、ホストオペレーティングシステム４０は、ストレージマネージャー２２に命令を送信することができる。ストレージマネージャー２２は、移動を行う命令を生成することができる。
【００２６】
ストレージシステム２０はまた、データ２７及びバーチャルマシンファイル２８を含む。バーチャルマシンファイル２８（１）及びバーチャルマシンファイル２８（２）は、バーチャルマシン５０などのバーチャルマシンを実装するのに使用されるデータを記憶する。バーチャルマシンファイル２８（例えば、ＶＭＤＫ、ＶＨＤなど）は、バーチャルマシン５０などのバーチャルマシンによって実行される、ゲストオペレーティングシステム５２などのゲストオペレーティングシステムによってアクセス可能である、複数のデータブロックを含む。バーチャルマシンファイル内の複数のデータブロックは、様々な技術（例えば、フラットファイル、スパースファイルなど）を使用して配列される。ゲストオペレーティングシステム５２は、例えばバーチャルマシン５０によって使用される、バーチャルマシンファイル２８内の区分、論理ドライブ、ダイナミックディスク、ボリューム、及びファイルなど、様々な記憶対象を作成するように構成される。記憶対象は、デバイスドライバ、オペレーティングシステムファイル、様々なデータ及びメタデータ、並びにホストコンピュータシステムのハードウェア及びソフトウェアを仮想化するための多数のソフトウェアパッケージを含むことができる。バーチャルマシンファイル２８を実行することによってバーチャルマシン５０が生成される。
【００２７】
ストレージシステム２０は、ストレージシステム２０の容量の限界以内で、任意の数のバーチャルマシンファイルを含むことができる。一般に、各バーチャルマシンファイルは、ホストシステム上のバーチャルマシンとしてインスタンス化される。図１は、単一のバーチャルマシンを備えた単一のホストを示しているが、追加のホスト及びバーチャルマシンは単に明瞭にするために省略されており、計算機環境１００が対応することができるホスト及びバーチャルマシンの数に対する制限については暗示されていない。
【００２８】
ホスト１０は、階層化モジュール４４及び階層化情報１２を含んでいることにより、階層化動作を行うように構成される。階層化情報１２は、階層化の決定の基盤を形成するポリシーを含む。階層化情報１２に含まれるポリシーは、ストレージシステム２０などの多階層型ストレージシステムのどの階層に記憶対象が属するかを判断する条件を指定する、１つ又は複数の基準を含む。例えば、ポリシーは、指定の頻度よりも高頻度でアクセスされる記憶対象を階層２４（０）に記憶すべきであることを指定することができる。ポリシーは、指定の頻度よりも低頻度で、但し第２の指定の頻度よりも高頻度でアクセスされる記憶対象を階層２４（１）に記憶すべきであることを指定することができる。
【００２９】
どのデータをどの階層に記憶すべきかを判断しやすくするポリシーは、管理者が開発することができる。温度範囲などの基準を、ストレージシステム２０内の各階層と関連付けられるものとして、ポリシーにおいて指定することができる。例えば、ポリシーは、より高頻度でアクセスされる記憶対象をストレージシステム２０のより上層の階層に記憶すべきであり、より低頻度でアクセスされる記憶対象をストレージシステム２０のより下層の階層に記憶すべきであることを指定することができる。ポリシーを実践するために、ホストオペレーティングシステム４０は、記憶対象がどの程度の頻度でアクセスされるかを追跡することができる。記憶対象のアクセス頻度は、記憶対象の温度として知られている。記憶対象がより高頻度でアクセスされるほど、記憶対象は「より高温」である。同様に、記憶対象がより低頻度でアクセスされるほど、記憶対象は「より低温」である。温度に基づく階層化ポリシーは、１つ又は複数の温度閾値又は１つ又は複数の温度範囲を指定する。例えば、ポリシーは、所与の値よりも高温である、例えば所与の期間当たり特定の回数よりも高頻度でアクセスされている任意のデータを、ストレージシステム２０などの多階層型ストレージシステムの最上階層に配置すべきであることを指定することができる。ポリシーは、所与の値よりも低温であり、但し第２の値よりも高温であるデータを、上から２番目の階層に配置すべきであることを指定し、以下同様に指定することができる。
【００３０】
階層化動作を行うのに階層化ポリシーで使用される基準の一例として温度を使用しているが、温度は、多数の可能な階層化基準の単なる一例である。例えば、階層化基準は、記憶対象の所有者又は作成者、最後のアクセス時間、経過時間、安全性情報、関連データなども含むことができる。
【００３１】
ポリシーは、ホスト１０などのコンピュータシステムによって自動的に実践することができる。例えば、ホスト１０のホストオペレーティングシステム４０は、所与の記憶対象に対するＩ／Ｏアクセス要求を追跡し、その記憶対象の温度を計算することができる。ホストオペレーティングシステム４０の階層化モジュール４４は、記憶対象の温度を階層化情報１２に含まれる階層化ポリシーで指定された温度と比較して、記憶対象をストレージシステム２０の別の階層へと移動させるべきであるとポリシーが示しているかを検出するか、又は、記憶対象の温度が階層化ポリシーによって指定された温度基準を満たすか否かに基づいて、記憶対象がその属する階層に配置されているかを検出することができる。階層化モジュール４４は、記憶対象の他の特性を階層化ポリシーの他の基準と比較して、記憶対象を１つの階層から別の階層へと移動させるべきか否かを検出することができる。
【００３２】
階層化モジュールが、階層化ポリシーに基づいて、記憶対象を第１の階層から第２の階層へと移動させるべきであることを検出した場合、ホストオペレーティングシステム４０は、記憶対象の移動を開始することができる。ホストオペレーティングシステム４０は、記憶対象の識別子と、記憶対象を再配置すべき宛先アドレスとを指定することができる。例えば、ホストオペレーティングシステム４０は、所与のファイル名を有する、第１のボリュームに記憶された第２のボリュームへと移動させるファイルを指定することができる。この例では、ホストオペレーティングシステム４０は、第１のボリュームが第１の階層にあり、第２のボリュームが第２の階層にあることが分かっている。
【００３３】
階層化情報１２は、ストレージシステム２０内の階層に対する複数の基準を指定することができる。上述の例と同様に、ポリシーは温度基準を指定することができる。ポリシーはまた、追加の基準を指定することができる。例えば、ポリシーは、記憶対象が階層２４（０）に含めるための温度基準を満たしていない場合であっても、特定のユーザによって作成された記憶対象を階層２４（０）に記憶すべきであると指定することができる。つまり、所与の記憶対象の温度が、その記憶対象をより下層の階層に記憶すべきであると指示している場合であっても、記憶対象が追加の基準を満たしていれば、例えば記憶対象が特定のユーザによって作成されていれば、記憶対象は階層２４（０）に記憶される。ポリシーは、基準のハイアラーキを含むことができ、各基準は優先度を有する。優先度が高い基準は優先度が低い基準に優先する。
【００３４】
ホスト１０は、階層化情報１２を外部ソースから受信する。例えば、階層化情報１２は、ホスト１０に最初にソフトウェアをインストールする一部としてロードすることができる。管理者は、階層化情報１２を手動で更新することができ、又は階層化情報１２は周期的に、若しくは新しいポリシーが確立されたことの検出に応答して、自動で更新することができる。
【００３５】
階層化モジュール４４は、階層化情報１２に記憶されたポリシーを実践する。階層化モジュール４４は、所与の記憶対象に関連するメタデータを、階層化情報１２において指定された基準と比較し、記憶対象が適切な階層に記憶されているか否かを検出する。つまり、階層化モジュール４４は、記憶対象が、記憶対象が属するとポリシーによって示されている階層に記憶されているか否か、又は記憶対象を別の階層に移動させるべきかを検出する。
【００３６】
階層化モジュール４４は、ホストオペレーティングシステム４０によって蓄積されたメタデータにアクセスする。ホストオペレーティングシステム４０は、デフォルト設定でホストファイルシステム４２によってアクセス可能な記憶対象に関する特定のメタデータを蓄積する。例えば、ホストオペレーティングシステム４０は、デフォルト設定でファイルに対する最後のアクセス時間を特定する。ホストオペレーティングシステム４０は、階層化ポリシーが階層化の決定の基盤として追加のメタデータを利用していることの検出に応答して、追加のメタデータを蓄積するように構成することができる。例えば、ホストオペレーティングシステム４０は、一般的に、ファイルの温度を算出しなくてもよい。しかしながら、ファイルを階層に割り当てる際の温度を考慮するポリシーの受信に応答して、ホストオペレーティングシステム４０は、ファイルの温度の算出を始めることができる。
【００３７】
階層化モジュールが、記憶対象を別の階層に移動させるべきであることを検出した場合、階層化モジュール４４は、ホストオペレーティングシステム４０に対して、記憶対象を移動すべきであることを指示し、記憶対象をどの階層に移動させるべきかを指定する。ホストオペレーティングシステム４０は、階層を解釈し、宛先アドレスを指定する。あるいは、ホストオペレーティングシステム４０は、ストレージマネージャー２２に対して宛先の階層を指定することができ、ストレージマネージャー２２は、ストレージシステム２０内のどの記憶位置がその階層に相当するかを検出することができる。
【００３８】
ホストオペレーティングシステム４０は、ホストファイルシステム４２にアクセス可能である記憶対象に関するメタデータを蓄積する。バーチャルマシンファイル２８は、ホストファイルシステム４２によって、記憶対象又はファイルとして認識される。バーチャルマシンファイル２８は個別の記憶対象を収容する。これらの記憶対象は、ゲストオペレーティングシステム５２によって、特にゲストファイルシステム５４によって認識される。しかしながら、バーチャルマシンファイル２８内の記憶対象は、ホストファイルシステム４２によって認識されない。
【００３９】
ゲストオペレーティングシステム５２は、バーチャルマシンファイル２８内の記憶対象に関するメタデータを、ホストオペレーティングシステム４０に提供するように構成される。一旦ホストオペレーティングシステムがこのメタデータを有すると、ホストオペレーティングシステム４０は、階層化ポリシーをバーチャルマシンファイル２８内の記憶対象に適用することができる。
【００４０】
ホストオペレーティングシステム４０は、バーチャルマシンファイル２８を単一のファイルと見なす。バーチャルマシンファイル２８は、開始位置と、バーチャルマシンファイル２８に割り付けられた多数のブロックとを有する。ホストオペレーティングシステム４０は、バーチャルマシンファイル２８のブロックの位置を分かっている。つまり、ホストオペレーティングシステム４０は、ストレージシステム２０内のどのブロックがバーチャルマシンファイル２８に属するかを分かっている。一旦ホストオペレーティングシステム４０が、バーチャルマシンファイル２８内のどのブロックがバーチャルマシンファイル２８内の特定の記憶対象に属するかを特定することができれば、階層化モジュール４４は、それらの記憶対象に対して階層化動作を行うことができる。
【００４１】
バーチャルマシン５０はゲストオペレーティングシステム５２を実行する。ゲストオペレーティングシステム５２は、ゲストファイルシステム５４によってアクセス可能な記憶対象に関するメタデータを蓄積する。これらの記憶対象は、バーチャルマシン５０を記憶するバーチャルマシンファイル、例えばバーチャルマシンファイル２８のうち１つに記憶対象を含む。
【００４２】
ホスト１０はバーチャルマシンファイル２８を搭載することができる。これによって、ホストファイルシステム４２が、ゲストオペレーティングシステム５２によって蓄積されたメタデータにアクセスすることが可能になる。このアクセスにより、ホストファイルシステム４２は、バーチャルマシンファイル２８内のファイルを特定することができる。あるいは、ゲストオペレーティングシステム５２は、例えばバーチャルマシン５０又は階層化モジュール５６に実装されたエージェントを介して、ホストオペレーティングシステム４０にメタデータを送信することができる。
【００４３】
ホストオペレーティングシステム４０が、バーチャルマシンファイル内のファイルを記述するメタデータを受信した後、ホストオペレーティングシステム４０は、バーチャルマシンファイル内の各ファイルを列挙するマップを生成する。ホストオペレーティングシステム４０は、マッピング情報４６にマップを記憶する。マップはまた、ゲストオペレーティングシステム５０によって、特にゲストファイルシステム５４によって算出されるような、バーチャルマシンファイル２８内のブロックの位置を含む。例えば、ファイルＦ１は、ゲストオペレーティングシステム５２によってバーチャルマシンファイル２８の最初から計数されるような、バーチャルマシンファイルの４２番目、４３番目、及び５４番目のブロックを含むことができる。ホストオペレーティングシステム４０は、バーチャルマシンファイル２８に対するこれらブロックの位置を、ストレージシステム２０内の記憶位置に対する位置へと移動させることができる。ホストオペレーティングシステムは、マップ内におけるバーチャルマシンファイルのブロックそれぞれに対する移動された位置を含むことができる。つまり、ホストオペレーティングシステム４０は、バーチャルマシンファイルが記憶されるボリューム又は記憶デバイスに対する、バーチャルマシンファイルのブロックそれぞれに対するアドレス又はオフセットを算出し、それらのアドレス又はオフセットを、マッピング情報４６に記憶されたマップに追加することができる。
【００４４】
一旦ホストオペレーティングシステム４０がバーチャルマシンファイル２８内のファイルを特定すると、階層化モジュール４４は、バーチャルマシンファイルのどの部分が階層化情報１２におけるポリシーの影響を受けるかを検出することができる。例えば、全てのメタデータをより上層の階層に配置すべきであるとポリシーが指定している場合、階層化モジュール４４は、バーチャルマシンファイル２８のどの部分がメタデータを備えるかを特定することができる。次に、ホストオペレーティングシステム４０は、より上層の階層へのメタデータの移動を開始することができる。別の例として、特定のタイプのファイルが温度基準の対象であるとポリシーが指定している場合、階層化モジュール４４は、バーチャルマシンファイル２８内の特定のタイプのファイルを特定することができる。一旦ポリシーの対象であるファイルが特定されると、階層化モジュール４４は、ファイルのいずれかをストレージシステム２０の異なる階層へと移動させるべきかを判断することができる。つまり、階層化モジュール４４は、ファイルを、特にファイルに関連するメタデータを、ポリシーによって指定された階層化基準と比較し、ファイルを移動させるべきか否かを検出することができる。
【００４５】
ホストオペレーティングシステム４０は、バーチャルマシンファイル２８からメタデータに周期的にアクセスし、ポリシーの対象であるファイルのリストを更新することができる。ホストオペレーティングシステム４０はまた、バーチャルマシンファイル２８内におけるゲストオペレーティングシステム５０によるファイルの編成に関連するメタデータの変化の受信又は検出に応答して、マッピング情報４６を更新する。
【００４６】
階層化モジュール４４が、検出の時点でファイルが記憶されている階層とは別の階層へとファイルを移動させるべきであると検出した場合、階層化モジュール４４は、ファイルの移動が必要であることをホストオペレーティングシステム４０に対して示すことができる。つまり、階層化モジュール４４は、所与のファイルを１つの階層から別の階層へと移動させるべきであるという情報を、ホストオペレーティングシステム４０に渡すことができる。それに応答して、ホストオペレーティングシステム４０は、移動コマンドを実行することによって移動を開始することができる。あるいは、ホストオペレーティングシステム４０は、移動させるべきファイルと、ソース及び／又は宛先の階層とを示す情報を、ストレージマネージャー２２に送信することができる。次に、ストレージマネージャー２２は、ストレージシステム２０の実際の記憶デバイスに対して、ファイルを移動させる命令を発行することができる。
【００４７】
一実施形態では、階層化モジュール４４は、バーチャルマシンファイルのメタデータに対するアクセス頻度を検出することができる。階層化モジュールが、例えば、アクセス頻度を階層化ポリシーで指定された頻度と比較することによって、アクセス頻度が指定の閾値未満であることを検出すると、階層化モジュール４４は、バーチャルマシンファイルによって実装されたバーチャルマシンがもう実行中ではないものと結論付ける。この結論に応答して、階層化モジュール４４は、バーチャルマシンファイルの全てのデータをより下層の階層へと再配置すべきであると指定することができる。バーチャルマシンファイルを再配置することによって、バーチャルマシンファイルがそれまで占めていた空間が空いて、追加のデータを、例えば追加のバーチャルマシンファイルを記憶することができる。
【００４８】
図２は、バーチャルマシンファイル２００のブロック図である。バーチャルマシンファイル２００は、多数の部分に分割されて示されている。各部分はエクステントを表す。エクステントは、記憶装置の連続領域である。図１のゲストオペレーティングシステム５２などのゲストオペレーティングは、エクステントをファイルデータ又はメタデータなどの様々な目的に対して割り付ける。ゲストオペレーティングシステム、特に、図１のゲストファイルシステム５４など、ゲストオペレーティングシステムによって実装されるファイルシステムは、バーチャルマシンファイル２００の各エクステントの経過を記録する。バーチャルマシンファイル２００は、多数の離散的な記憶対象、例えばファイルを備える。
【００４９】
バーチャルマシンファイル２００はまた、「Ｍ」が付された位置によって示されるように、メタデータ２１０を含む。図示されるように、バーチャルマシンファイル２００の最初の１３個の位置はメタデータ２１０を記憶する。メタデータ２１０としては、例えば、スワップファイル、サイズ、経過時間、アクセス時間、修正時間、作成時間、所有者、及びバーチャルマシンファイル２００の各ファイルに対してファイルのデータを記憶するエクステントの位置のリストが挙げられる。一実施形態では、メタデータ２１０は、バーチャルマシンファイル２００の各ファイルに対するｉノードを備えるｉノードテーブルを含む。メタデータ２１０は、ゲストオペレーティングシステムによって蓄積され更新される。
【００５０】
バーチャルマシンファイル２００はまた、Ｆ１が付された位置によって示されるファイル２２０、Ｆ２が付された位置によって示されるファイル２３０、Ｆ３が付された位置によって示されるファイル２４０、及びＦ４が付された位置によって示されるファイル２５０を含む、いくつかのファイルを含む。かかるファイルは、アプリケーションデータファイル、オペレーティングシステムファイルなどを含むことができる。ファイルは、バーチャルマシンファイル２００内の連続した位置に、又は連続しない位置に記憶することができる。ゲストオペレーティングシステムは、バーチャルマシンファイル２００のどの位置がどのファイルに割り付けられているか、またファイルがいつアクセス及び／又は修正されているかを示す、メタデータを記憶する。
【００５１】
図３は、バーチャルマシンファイル内におけるファイルの位置を判断する方法を示すフローチャートである。方法は、図１の階層化モジュール４４などの階層化モジュールを実装する、図１のホスト１０などの計算機デバイスによって行うことができる。
【００５２】
方法は、ホストが図１の階層化情報１２などの階層化情報を受信する、３００で始まる。階層化情報は、図１のホストオペレーティングシステム４０などのホストオペレーティングシステムによって受信することができる。階層化情報は、手動構成の結果として、例えば管理者によって、又は自動ソフトウェア更新の一部として受信することができる。
【００５３】
階層化情報は階層化ポリシーを含む。ポリシーは、一連の基準と、図１のストレージシステム２０などの多階層型ストレージシステムの階層のリストとを含む。基準は、階層それぞれに記憶されたファイル又は他の記憶対象に対して、どの条件が存在すべきかを示す。例えば、ポリシーは、所与の値よりも高い温度を有するファイルを第１の階層に記憶すべきであることを記述する基準を含むことができる。
【００５４】
３０５で、ホストオペレーティングシステムは、図１のバーチャルマシンファイル２８などのバーチャルマシンファイル内のファイルを特定する。それを行うため、ホストオペレーティングシステムは、バーチャルマシンファイル内のファイルを記述するメタデータにアクセスする。ホストオペレーティングシステムは、図１のゲストオペレーティングシステム５２などのゲストオペレーティングシステムを介して、このメタデータにアクセスすることができる。ゲストオペレーティングシステムを介してメタデータにアクセスするため、ホストオペレーティングシステムは、バーチャルマシンファイルをホストファイルシステム４２などのホストファイルシステムに搭載する。バーチャルマシンファイルを搭載することによって、ホストオペレーティングシステムがバーチャルマシンファイルに記憶されたメタデータを読み出すことが可能になる。あるいは、ホストオペレーティングシステムは、ゲストオペレーティングシステムによって実装されたエージェント又は階層化モジュールから、メタデータを受信することができる。
【００５５】
３１０で、ホストオペレーティングシステムは、バーチャルマシンファイルのファイルが存在する場合にそのどれがポリシーの対象であるかを特定する。これは、ホストオペレーティングシステムがポリシーを評価し、また各基準について、バーチャルマシンファイルのいずれかのファイルが基準を満たし得るか、又は満たすかを判断することを伴う。例えば、ポリシーが、特定のユーザによって作成されたどの階層ファイルを記憶すべきかを特定する基準を含む場合、ホストオペレーティングシステムは、バーチャルマシンファイル内のどのファイルが特定のユーザによって作成されたかを検出することができる。その場合、特定のユーザによって作成されたファイルはポリシーの対象である。ホストオペレーティングシステムは、ポリシーの対象であるバーチャルマシンファイル内のファイルのリストを作成することができる。３１５で、ホストオペレーティングシステムは、バーチャルマシンファイル内のいずれかのファイルがポリシーの対象であるか否かを検出する。ホストオペレーティングシステムが、バーチャルマシンファイル内のどのファイルもポリシーの対象ではないことを検出した場合、方法は３３５に進む。
【００５６】
そうでなければ、ホストオペレーティングシステムは、３２０で、ポリシーの対象であるファイルの第１のファイルを選択する。３２５で、ホストオペレーティングシステムは、バーチャルマシンファイルに対するファイルの位置を、ホストオペレーティングシステムによって使用される記憶スキームに対する位置へと移動するマップを生成する。ホストオペレーティングシステムは、３３０で、他のいずれかのファイルが階層化ポリシーの対象として特定されたか否かを検出する。検出された場合、方法は３２０に戻って、ホストオペレーティングシステムが別のファイルを選択する。そうでなければ、方法は、図４に関して考察される３３５に進む。
【００５７】
図４は、バーチャル環境においてダイナミックストレージ階層化を行う方法を示すフローチャートである。方法は、図１のホストオペレーティングシステム４０などのホストオペレーティングシステムが、任意のファイルが図１の階層化情報１２に含まれるような階層化ポリシーにおける階層化基準を満たすか否かを検出する、３５０で始まる。特に、図１の階層化モジュール４４などの階層化モジュールは、任意のファイルが階層化基準を満たすか否かを検出する。階層化モジュールは、ファイルと関連付けられるメタデータが、そのファイルが階層化基準を満たすことを示すことを検出することができる。例えば、ポリシーは、特定の値を上回る温度を有するファイルを特定の階層へと移動させるべきであることを示す、温度基準を含むことができる。ファイルが適正な階層にないことをメタデータが示す任意のファイルは、ファイル温度（ホストオペレーティングシステムによって算出されるような）に基づいて、階層化基準を満たし、適切な階層へと移動させるべきである。例えば、ファイルのメタデータが、ファイルが配置されている階層に対するポリシーによって指定される最小温度よりもそのファイルが低温であることを示す場合、ファイルは階層化基準を満たし、別の（より下層の）階層へと移動させるべきである。階層化基準を満たすファイルがない場合、方法は終了する。
【００５８】
ファイルが階層化基準を満たすことを階層化モジュールが検出した場合、方法は３５５へと進む。３５５で、ホストオペレーティングシステムは、ファイルが修正されているか否かを検出する。それを行うため、ホストオペレーティングシステムは、バーチャルマシンファイルに対するメタデータを監視して、何らかの変化を検出することができる。一実施形態では、メタデータは、バーチャルマシンファイル内の各ファイルに対するビットを含むビットマップを含む。ファイルに対応するビットが汚れている、例えば設定されている場合、ファイルは修正されており、３６０で階層化動作がキャンセルされる。
【００５９】
ファイルが修正されていることをホストオペレーティングシステムが示さない場合、ファイルは、３６５で、階層化ポリシーによって指定された階層へと移動され、方法は終了する。移動は、１つの階層から、多階層型ストレージシステム内の１つ上層又は下層の階層へ、であることができる。あるいは、ファイルを複数階層上又は下へ、例えば最下階層から最上階層へと移動させることができる。
【００６０】
図５は、階層化モジュールをどのようにしてソフトウェアに実装することができるかを例証する、計算機デバイスのブロック図である。計算機システム５１０は、コンピュータ可読命令を実行することができる、任意のシングル又は多重プロセッサ計算機デバイスを広く意味する。計算機システム５１０の例としては、非限定的に、ワークステーション、パーソナルコンピュータ、ラップトップ、クライアント側端末、サーバー、分散型計算機システム、携帯デバイス（例えば、携帯情報端末及び携帯電話）、ネットワークアプライアンス、ストレージコントローラ（例えば、アレイコントローラ、テープドライブコントローラ、又はハードドライブコントローラ）などを含む、様々なデバイスのうち任意の１つ又は複数が挙げられる。その最も基本的な構成では、計算機システム５１０は、少なくとも１つのプロセッサ５１４とシステムメモリ５１６とを含んでもよい。階層化モジュール４４を実装するソフトウェアを実行することによって、計算機システム５１０は、バーチャル環境でＤＳＴを行うように構成された専用計算機デバイスになる。
【００６１】
プロセッサ５１４は、一般に、データを処理するか又は命令を解釈し実行することができる、任意のタイプ若しくは形態の処理装置を意味する。特定の実施形態では、プロセッサ５１４は、ソフトウェアアプリケーション又はモジュールから命令を受信してもよい。これらの命令によって、プロセッサ５１４が、本明細書に記載及び／又は例証される実施形態の１つ又は複数の機能を行ってもよい。例えば、プロセッサ５１４は、本明細書に記載される動作の全て若しくは一部を行ってもよく、かつ／又はそれを行うための手段であってもよい。プロセッサ５１４はまた、本明細書に記載及び／又は例証される他の任意の動作、方法、あるいはプロセスを行ってもよく、かつ／又はそれを行うための手段であってもよい。
【００６２】
システムメモリ５１６は、一般に、データ及び／又は他のコンピュータ可読命令を記憶することができる、任意のタイプ若しくは形態の揮発性又は不揮発性記憶デバイスを意味する。システムメモリ５１６の例としては、非限定的に、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ、又は他の任意の適切なメモリデバイスが挙げられる。一例では、ＲＡＭモジュール１３５を実装するプログラム命令がシステムメモリ５１６にロードされてもよい。
【００６３】
特定の実施形態では、計算機システム５１０はまた、プロセッサ５１４及びシステムメモリ５１６に加えて１つ又は複数の構成要素又は素子を含んでもよい。例えば、図５に示されるように、計算機システム５１０は、メモリコントローラ５１８、入力／出力（Ｉ／Ｏ）コントローラ５２０、及び通信インターフェース５２２を含んでもよく、それらはそれぞれ、通信インフラストラクチャ５１２を介して相互接続されてもよい。通信インフラストラクチャ５１２は、一般に、コンピュータデバイスの１つ又は複数の構成要素間の通信を容易にすることができる、任意のタイプ又は形態のインフラストラクチャを意味する。通信インフラストラクチャ５１２の例としては、非限定的に、通信バス（産業標準構成（ＩＳＡ）、周辺装置相互接続（ＰＣＩ）、ＰＣＩエクスプレス（ＰＣＩｅ）、又は類似のバスなど）及びネットワークが挙げられる。
【００６４】
メモリコントローラ５１８は、一般に、メモリ若しくはデータを扱うことができる、又は計算機システム５１０の１つ又は複数の構成要素間の通信を制御することができる、任意のタイプ若しくは形態のデバイスを意味する。例えば、特定の実施形態では、メモリコントローラ５１８は、通信インフラストラクチャ５１２を介した、プロセッサ５１４、システムメモリ５１６、及びＩ／Ｏコントローラ５２０の間の通信を制御してもよい。特定の実施形態では、メモリコントローラ５１８は、単独で、あるいは他の素子と組み合わせて、本明細書に記載及び／又は例証される動作若しくは特徴の１つ又は複数を行ってもよく、かつ／又はそれを行うための手段であってもよい。
【００６５】
Ｉ／Ｏコントローラ５２０は、一般に、計算機デバイスの入出力機能を調整及び／又は制御することができる、任意のタイプ若しくは形態のモジュールを意味する。例えば、特定の実施形態では、Ｉ／Ｏコントローラ５２０は、プロセッサ５１４、システムメモリ５１６、通信インターフェース５２２、ディスプレイアダプタ５２６、入力インターフェース５５０、及びストレージインターフェース５５４など、計算機システム５１０の１つ又は複数の素子間でのデータの転送を制御するか、又は容易にしてもよい。
【００６６】
通信インターフェース５２２は、計算機システム５１０と１つ又は複数の追加のデバイスとの間での通信を容易にすることができる、任意のタイプ若しくは形態の通信デバイス又はアダプタを広く意味する。例えば、特定の実施形態では、通信インターフェース５２２は、計算機システム５１０と追加の計算機システムを含む私設又は公衆ネットワークとの間での通信を容易にしてもよい。通信インターフェース５２２の例としては、非限定的に、有線ネットワークインターフェース（ネットワークインターフェースカードなど）、無線ネットワークインターフェース（無線ネットワークインターフェースカードなど）、モデム、及び他の任意の適切なインターフェースが挙げられる。少なくとも１つの実施形態では、通信インターフェース５２２は、インターネットなどのネットワークに対する直接リンクを介して、遠隔サーバーへの直接接続を提供してもよい。通信インターフェース５２２はまた、例えば、ローカルエリアネットワーク（イーサネットネットワークなど）（「イーサネット」は登録商標、以下同じ）、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、携帯電話接続、衛星データ接続、又は他の任意の適切な接続を通して、かかる接続を間接的に提供してもよい。
【００６７】
特定の実施形態では、通信インターフェース５２２はまた、外部バス又は通信チャネルを介して、計算機システム５１０と１つ又は複数の追加のネットワーク又は記憶デバイスとの間の通信を容易にするように構成された、ホストアダプタを意味してもよい。ホストアダプタの例としては、非限定的に、小型コンピュータシステムインターフェース（ＳＣＳＩ）ホストアダプタ、ユニバーサルシリアルバス（ＵＳＢ）ホストアダプタ、米国電気電子学会（ＩＥＥＥ）１５９４ホストアダプタ、シリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）、シリアル接続ＳＣＳＩ（ＳＡＳ）、及び外部ＳＡＴＡ（ｅＳＡＴＡ）ホストアダプタ、アドバンストテクノロジーアタッチメント（ＡＴＡ）及びパラレルＡＴＡ（ＰＡＴＡ）ホストアダプタ、ファイバーチャネルインターフェースアダプタ、イーサネットアダプタなどが挙げられる。
【００６８】
通信インターフェース５２２はまた、計算機システム５１０が分散型又は遠隔コンピューティングに携わるのを可能にしてもよい。例えば、通信インターフェース５２２は、遠隔デバイスから命令を受信するか、又は実行のために遠隔デバイスに命令を送ってもよい。
【００６９】
図５に示されるように、計算機システム５１０はまた、ディスプレイアダプタ５２６を介して通信インフラストラクチャ５１２に連結された少なくとも１つの表示デバイス５２４を含んでもよい。表示デバイス５２４は、一般に、ディスプレイアダプタ５２６によって転送される情報を視覚的に表示することができる、任意のタイプ若しくは形態のデバイスを意味する。同様に、ディスプレイアダプタ５２６は、一般に、表示デバイス５２４上で表示するため、通信インフラストラクチャ５１２から（又は当該技術分野において既知のようなフレームバッファから）、グラフィック、テキスト、及び他のデータを転送するように構成された、任意のタイプ若しくは形態のデバイスを意味する。
【００７０】
図５に示されるように、計算機システム５１０はまた、入力インターフェース５５０を介して通信インフラストラクチャ５１２に連結された少なくとも１つの入力デバイス５２８を含んでもよい。入力デバイス５２８は、一般に、コンピュータ又は人が生成した入力を計算機システム５１０に提供することができる、任意のタイプ若しくは形態の入力デバイスを意味する。入力デバイス５２８の例としては、非限定的に、キーボード、ポインティングデバイス、音声認識デバイス、又は他の任意の入力デバイスが挙げられる。
【００７１】
図５に示されるように、計算機システム５１０はまた、ストレージインターフェース５３４を介して通信インフラストラクチャ５１２に連結されたデータ記憶デバイス５３３を含んでもよい。記憶デバイス５３３は、一般に、データ及び／又は他のコンピュータ可読命令を記憶することができる、任意のタイプ若しくは形態の記憶デバイス又は媒体を意味する。例えば、記憶デバイス５３３は、磁気ディスクドライブ（例えば、いわゆるハードドライブ）、フロッピーディスクドライブ（「フロッピー」は登録商標、以下同じ）、光学ディスクドライブ、フラッシュドライブなどを含んでもよい。ストレージインターフェース５３４は、一般に、記憶デバイス５３３と計算機システム５１０の他の構成要素との間でデータを転送するための、任意のタイプ若しくは形態のインターフェース又はデバイスを意味する。
【００７２】
特定の実施形態では、記憶デバイス５３３は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を記憶するように構成された取外し可能な記憶装置に対して、読出し及び／又は書込みを行うように構成されてもよい。適切な取外し可能な記憶装置の例としては、非限定的に、フロッピーディスク、磁気テープ、光学ディスク、フラッシュメモリドライブなどが挙げられる。記憶デバイス５３３はまた、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令を計算機システム５１０にロードできるようにする、他の類似の構造若しくはデバイスを含んでもよい。例えば、記憶デバイス５３３は、ソフトウェア、データ、又は他のコンピュータ可読情報を読み出し、かつ書き込むように構成されてもよい。記憶デバイス５３３はまた、計算機システム５１０の一部であってもよく、又は他のインターフェースシステムを通してアクセスされる別個のデバイスであってもよい。
【００７３】
他の多くのデバイス又はサブシステムが計算機システム５１０に接続されてもよい。反対に、本明細書に記載及び／又は例証される実施形態を実施するために、図５に示される構成要素及びデバイスの全てが必ずしも存在しなくてもよい。上記で言及したデバイス及びサブシステムはまた、図５に示されるのとは異なる形で相互接続されてもよい。
【００７４】
計算機システム５１０はまた、任意の数のソフトウェア、ファームウェア、及び／又はハードウェア構成を用いてもよい。例えば、本明細書に開示される実施形態の１つ又は複数は、コンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御論理とも呼ばれる）として、コンピュータ可読記憶媒体上で符号化されてもよい。コンピュータ可読記憶媒体の例としては、磁気記憶媒体（例えば、ハードディスクドライブ及びフロッピーディスク）、光学記憶媒体（例えば、ＣＤ−又はＤＶＤ−ＲＯＭ）、電子記憶媒体（例えば、ソリッドステートドライブ及びフラッシュメディア）などが挙げられる。かかるコンピュータプログラムはまた、インターネットなどのネットワークを介してメモリに、又はキャリア媒体上に記憶するため、計算機システム５１０に転送することができる。
【００７５】
コンピュータプログラムを含むコンピュータ可読媒体は、計算機システム５１０にロードされてもよい。次に、コンピュータ可読媒体に記憶されたコンピュータプログラムの全て又は一部分は、システムメモリ５１６に、並びに／又は記憶デバイス５３２及び５３３の様々な部分に記憶されてもよい。プロセッサ５１４によって実行されると、計算機システム５１０にロードされたコンピュータプログラムによって、本明細書に記載及び／又は例証される実施形態の１つ又は複数の機能をプロセッサ５１４に行わせてもよく、かつ／又はプロセッサ５１４をそれを行うための手段としてもよい。それに加えて、又は別の方法として、本明細書に記載及び／又は例証される実施形態の１つ又は複数は、ファームウェア及び／又はハードウェアの形で実装されてもよい。例えば、計算機システム５１０は、本明細書に開示される実施形態の１つ又は複数を実装するように適合された、特定用途向け集積回路（ＡＳＩＣ）として構成されてもよい。
【００７６】
図６は、クライアントシステム６１０、６２０、及び６３０、並びにサーバー６４０及び６４５がネットワーク６５０に連結されてもよい、ネットワークアーキテクチャ６００のブロック図である。クライアントシステム６１０、６２０、及び６３０は、一般に、任意のタイプ若しくは形態の計算機デバイス又はシステムを意味する。
【００７７】
同様に、サーバー６４０及び６４５は、一般に、様々なデータベースサービスを提供する、かつ／又は特定のソフトウェアアプリケーションを実行するように構成された、図５の計算機システム５１０などの計算機デバイス上に実装されるアプリケーションサーバー若しくはデータベースサーバーなどの、計算機デバイス又はシステムを意味する。ネットワーク６５０は、一般に、例えば、イントラネット、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、又はインターネットを含む、任意の電気通信又はコンピュータネットワークを意味する。一例では、サーバー６４０及び／又は６４５は、図１に示されるようなＲＡＭモジュール１３５を含んでもよい。
【００７８】
図６に示されるように、１つ又は複数の記憶デバイス６６０（１）〜（Ｎ）がサーバー６４０に直接取り付けられてもよい。同様に、１つ又は複数の記憶デバイス６７０（１）〜（Ｎ）がサーバー６４５に直接取り付けられてもよい。記憶デバイス６６０（１）〜（Ｎ）及び記憶デバイス６７０（１）〜（Ｎ）は、一般に、データ及び／又は他のコンピュータ可読命令を記憶することができる、任意のタイプ若しくは形態の記憶デバイス又は媒体を意味する。特定の実施形態では、記憶デバイス６６０（１）〜（Ｎ）及び記憶デバイス６７０（１）〜（Ｎ）は、ネットワークファイルシステム（ＮＦＳ）、サーバーメッセージブロック（ＳＭＢ）、又は共通インターネットファイルシステム（ＣＩＦＳ）など、様々なプロトコルを使用して、サーバー６４０及び６４５と通信するように構成された、ネットワーク接続ストレージ（ＮＡＳ）デバイスを意味してもよい。
【００７９】
サーバー６４０及び６４５はまた、ストレージエリアネットワーク（ＳＡＮ）ファブリック６８０に接続されてもよい。ＳＡＮファブリック６８０は、一般に、複数の記憶デバイス間での通信を容易にすることができる、任意のタイプ若しくは形態のコンピュータネットワーク又はアーキテクチャを意味する。ＳＡＮファブリック６８０は、サーバー６４０及び６４５と複数の記憶デバイス６９０（１）〜（Ｎ）及び／又はインテリジェントストレージアレイ６９５との間の通信を容易にしてもよい。ＳＡＮファブリック６８０はまた、デバイス６９０（１）〜（Ｎ）及びアレイ６９５がクライアントシステム６１０、６２０、及び６３０に局所的に取り付けられたデバイスに見えるような形で、ネットワーク６５０並びにサーバー６４０及び６４５を介して、クライアントシステム６１０、６２０、及び６３０と記憶デバイス６９０（１）〜（Ｎ）及び／又はインテリジェントストレージアレイ６９５との間の通信を容易にしてもよい。記憶デバイス６６０（１）〜（Ｎ）及び記憶デバイス６７０（１）〜（Ｎ）と同様に、記憶デバイス６９０（１）〜（Ｎ）及びインテリジェントストレージアレイ６９５は、一般に、データ及び／又は他のコンピュータ可読命令を記憶することができる、任意のタイプ若しくは形態の記憶デバイス又は媒体を意味する。
【００８０】
特定の実施形態では、かつ図５の計算機システム５１０を参照して、図５の通信インターフェース５２２などの通信インターフェースは、各クライアントシステム６１０、６２０、及び６３０とネットワーク６５０との間の接続可能性を提供するのに使用されてもよい。クライアントシステム６１０、６２０、及び６３０は、例えば、ウェブブラウザ又は他のクライアントソフトウェアを使用して、サーバー６４０又は６４５上の情報にアクセスすることが可能であってもよい。かかるソフトウェアによって、クライアントシステム６１０、６２０、及び６３０が、サーバー６４０、サーバー６４５、記憶デバイス６６０（１）〜（Ｎ）、記憶デバイス６７０（１）〜（Ｎ）、記憶デバイス６９０（１）〜（Ｎ）、又はインテリジェントストレージアレイ６９５によってホストされるデータにアクセスすることが可能になってもよい。図６は、データを交換するのにネットワーク（インターネットなど）を使用することを示しているが、本明細書に記載及び／又は例証される実施形態は、インターネット又は任意の特定のネットワークベースの環境に限定されない。
【００８１】
少なくとも１つの実施形態では、本明細書に開示される実施形態の１つ又は複数の全て又は一部分は、コンピュータプログラムとして符号化され、サーバー６４０、サーバー６４５、記憶デバイス６６０（１）〜（Ｎ）、記憶デバイス６７０（１）〜（Ｎ）、記憶デバイス６９０（１）〜（Ｎ）、インテリジェントストレージアレイ６９５、又はそれらの任意の組み合わせにロードされ、それらによって実行されてもよい。本明細書に開示される実施形態の１つ又は複数の全て又は一部分はまた、コンピュータプログラムとして符号化され、サーバー６４０に記憶され、サーバー６４５によって実行され、ネットワーク６５０を通じてクライアントシステム６１０、６２０、及び６３０に分配されてもよい。
【００８２】
いくつかの例では、図１、５、及び６の計算機デバイスの全て又は一部分は、クラウドコンピューティング又はネットワークベースの環境の部分を意味してもよい。クラウドコンピューティング環境は、インターネットを介して様々なサービス及びアプリケーションを提供してもよい。これらのクラウドベースのサービス（例えば、サービスとしてのソフトウェア、サービスとしてのプラットフォーム、サービスとしてのインフラストラクチャなど）は、ウェブブラウザ又は他の遠隔インターフェースを通してアクセス可能であってもよい。本明細書に記載される様々な機能は、遠隔デスクトップ環境又は他の任意のクラウドベースの計算機環境を通して提供されてもよい。
【００８３】
それに加えて、本明細書に記載される実施形態の１つ又は複数は、データ、物理的デバイス、及び／又は物理的デバイスの表現を、１つの形態から別の形態へと変換してもよい。例えば、図１の階層化モジュールは、バーチャル環境において計算機デバイスにＤＳＴ動作を行わせるために、計算機デバイスの挙動を変換してもよい。
【００８４】
いくつかの実施形態に関連して本発明について記載してきたが、本発明は、本明細書において説明される特定の形態に限定されないものとする。反対に、添付の請求項によって定義されるような本発明の範囲内に正当に含まれ得るような代替例、修正、及び等価物を包含するものとする。
【図１】
2018110014.tif 000003
【図２】
2018110014.tif 000004
【図３】
2018110014.tif 000005
【図４】
2018110014.tif 000006
【図５】
2018110014.tif 000007
【図６】
2018110014.tif 000008
【手続補正書】
【提出日】平成30年2月26日(2018.2.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の記憶対象を備えるバーチャルマシンファイル内における記憶対象の位置を特定する工程であって、前記記憶対象は階層化ポリシーの対象とされる、工程と、
前記位置をホストからみた位置に変換する工程であって、前記変換が前記階層化ポリシーの対象とされる記憶対象について前記バーチャルマシンファイル内における位置を特定することを含む、工程と、
前記記憶対象が、前記階層化ポリシーにおいて指定される基準を満たすか否かを検出する工程と、
前記検出する工程に応答して、前記記憶対象の第１の記憶階層から第２の記憶階層への移動を開始する工程と、を含む方法。
【請求項２】
前記特定する工程はメタデータにアクセスする工程を含み、
前記メタデータは複数のｉノードを特定する情報を含む、請求項１に記載の方法。
【請求項３】
前記特定する工程は前記バーチャルマシンファイルを搭載する工程を含む、請求項１に記載の方法。
【請求項４】
前記記憶対象はメタデータを含む、請求項１に記載の方法。
【請求項５】
前記記憶対象に対する修正を検出する工程を更に含み、
前記検出する工程は前記移動の間に発生する、請求項１に記載の方法。
【請求項６】
前記複数の記憶対象のうちで前記階層化ポリシーに関与する各記憶対象を特定する情報を含むリストを作成する工程を更に含む、請求項１に記載の方法。
【請求項７】
マップを生成する工程を更に含み、
前記マップは、前記複数の記憶対象のうちで前記階層化ポリシーに関与する各記憶対象の、前記バーチャルマシンファイル内における位置を特定する、請求項１に記載の方法。
【請求項８】
前記記憶対象はファイルを含む、請求項１に記載の方法。
【請求項９】
前記バーチャルマシンによって実行されるファイルシステムを特定する工程を更に含む、請求項１に記載の方法。
【請求項１０】
実行可能なプログラム命令を備えるコンピュータ可読記憶媒体であって、前記プログラム命令は、
複数の記憶対象を備えるバーチャルマシンファイル内における記憶対象の位置を特定する工程であって、前記記憶対象は階層化ポリシーの対象とされる、工程と、
前記位置をホストからみた位置に変換する工程であって、前記変換が前記階層化ポリシーの対象とされる記憶対象について前記バーチャルマシンファイル内における位置を特定することを含む、工程と、
前記記憶対象が前記階層化ポリシーにおいて指定される基準を満たすか否かを検出する工程と、
前記検出に応答して、前記記憶対象の第１の記憶階層から第２の記憶階層への移動を開始する工程と、
を有する、コンピュータ可読記憶媒体。
【請求項１１】
前記プログラム命令は、
メタデータにアクセスすることを更に実行可能であり、
前記メタデータは複数のｉノードを特定する情報を含む、請求項１０に記載のコンピュータ可読記憶媒体。
【請求項１２】
前記プログラム命令は、
前記バーチャルマシンファイルを搭載することを更に実行可能である、請求項１０に記載のコンピュータ可読記憶媒体。
【請求項１３】
前記プログラム命令は、
前記移動の間に、前記記憶対象が修正されるか否かを検出することを更に実行可能である、請求項１０に記載のコンピュータ可読記憶媒体。
【請求項１４】
前記プログラム命令は、
前記複数の記憶対象のうちで前記階層化ポリシーに関与する各記憶対象を特定する情報を含むリストを作成することを更に実行可能である、請求項１０に記載のコンピュータ可読記憶媒体。
【請求項１５】
前記プログラム命令は、
マップを生成することを更に実行可能であり、
前記マップは、前記複数の記憶対象のうちで前記階層化ポリシーに関与する各記憶対象の、前記バーチャルマシンファイル内における位置を特定する、請求項１０に記載のコンピュータ可読記憶媒体。
【請求項１６】
システムであって、
１つ又は複数のプロセッサと、
前記１つ又は複数のプロセッサに連結されたメモリと、を備え、
前記メモリは、
複数の記憶対象を備えるバーチャルマシンファイル内における記憶対象の位置を特定する工程であって、前記記憶対象は階層化ポリシーの対象とされる、工程と、
前記位置をホストからみた位置に変換する工程であって、前記変換が前記階層化ポリシーの対象とされる記憶対象について前記バーチャルマシンファイル内における位置を特定することを含む、工程と、
前記記憶対象が、前記階層化ポリシーにおいて指定される基準を満たすか否かを検出する工程と、
前記検出に応答して、前記記憶対象の第１の記憶階層から第２の記憶階層への移動を開始する工程と、
を実行可能なプログラム命令を記憶する、システム。
【請求項１７】
前記プログラム命令は、
メタデータにアクセスすることを更に実行可能であり、
前記メタデータは複数のｉノードを特定する情報を含む、請求項１６に記載のシステム。
【請求項１８】
前記プログラム命令は、
前記移動の間に、前記記憶対象が修正されるか否かを検出することを更に実行可能である、請求項１６に記載のシステム。
【請求項１９】
前記プログラム命令は、
前記複数の記憶対象のうちで前記階層化ポリシーに関与する各記憶対象を特定する情報を含むリストを作成することを更に実行可能である、請求項１６に記載のシステム。
【請求項２０】
前記プログラム命令は、
マップを生成することを更に実行可能であり、
前記マップは、前記複数の記憶対象のうちで前記階層化ポリシーに関与する各記憶対象の、前記バーチャルマシンファイル内における位置を特定する、請求項１６に記載のシステム。
【外国語明細書】
2018110014000001.pdf