(58)【調査した分野】(Int.Cl.,DB名)
前記ホストは、前記リクエストを受け取ったことを受けて、前記第1の記憶オブジェクトに割り振られた記憶領域の第1の量に等しい記憶領域の量を前記第2の記憶オブジェクト用に割り振るようにさらに構成される、請求項1に記載の方法。
前記ホストが、前記リクエストを受け取ったことを受けて、前記第1の記憶オブジェクトに割り振られた記憶領域の第1の量に等しい記憶領域の量を前記第2の記憶オブジェクト用に割り振るようにさらに構成される、請求項7に記載のコンピュータ可読記憶媒体。
【発明を実施するための形態】
【0011】
本発明には種々の改変例および代替形態があるが、本発明の具体的な実施形態が、図面および詳細な説明の中で具体例として提示される。図面および詳細な説明は、本発明を、開示された特定の形態に限定することを意図するものではないということを理解すべきである。むしろその意図は、添付の請求項によって定義される本発明の精神および範囲内に属するすべての改変物、均等物および代替物を網羅することである。
【0012】
仮想化を用いるシステムには、1つもしくはそれ以上の仮想マシンがホスト装置に展開されている。ホスト装置には、プロセッササイクル、記憶領域、ネットワーク帯域幅など、ホスト装置のリソースへのアクセスを提供し、これらのリソースを管理するホスト・オペレーティング・システムがインストールされている。ホストは、仮想マシン間で使用するこれらのリソースを割り振る。各々の仮想マシン、すなわちゲストは、独自のオペレーティングシステムとアプリケーションとを稼働させることができる。
【0013】
オペレーティングシステムと1つもしくはそれ以上のアプリケーションとを実行する仮想マシンは、一般にいくらかの記憶領域を使用する。ホストは一般に、1つもしくはそれ以上の仮想ディスクを仮想マシンに割り当てる。仮想ディスクの種類の1つが、ダイナミック仮想ディスクである。例えばホスト・オペレーティング・システムによってダイナミック仮想ディスクが作成されると、ホストは、例えば100ギガバイト(Gb)という具合に仮想ディスクの最大サイズを設定する。仮想ディスクは100Gbの仮想ディスクと呼ばれ、仮想ディスクが仮想マシンと関連付けられると、その仮想マシンは仮想ディスクを100Gbの記憶装置とみなす。
【0014】
ホストが最初にダイナミック仮想ディスクを作成した時点では、仮想マシンがその仮想ディスクにまだデータを全く書き込んでいないので、実質的には仮想ディスクが物理記憶領域を消費していない。すなわち、ホストは100Gbの記憶領域を仮想ディスクに割り振ったものの、仮想ディスクは記憶領域をまだ一切使用していないということになる。100Gbというホストの割り振りは、仮想ディスクと関連付けられている仮想マシンが100Gbの物理記憶領域が使用可能であるという約束である。仮想ディスクを動的に割り振ることは、仮想マシンが仮想ディスクに対して書き込みを命令する時期まで、ホストのファイルシステムが基底物理記憶装置の具体的な物理記憶装置を仮想ディスクに実際に割り当てる必要がないということを意味する。仮想ディスクによって最終的に利用され得る記憶領域は、仮想マシンが記憶領域に書き込む時期まで、一時記憶など他の目的で利用できる。
【0015】
仮想ディスクが作成できるもう1つの種類のホストは、固定ディスクである。固定ディスクの場合には、固定ディスクが作成されたときに、ホストのファイルシステムが、割り振られた領域に対応する物理記憶容量を確保する。本実施例では、ホストが100Gbを固定仮想ディスクに割り振ると、ファイルシステムが基底物理記憶装置上で100Gbの物理記憶領域をブロックし、その記憶領域を使用済みとしてマークするため、その記憶領域は他の目的で一切使用できない。
【0016】
ダイナミック仮想ディスクの場合、仮想マシンはその仮想ディスクを、100Gb(またはほぼ100Gb)の空き領域または使用可能領域を有する100Gbの記憶装置とみなし、ファイルシステムはその仮想ディスクを、実質的にサイズがゼロの記憶オブジェクトとみなす。仮想ディスクと関連付けられた特定のメタデータが一般に仮想ディスクに記憶されるので、仮想ディスクの作成時に仮想ディスクで使用される領域が実際にゼロというわけでない。例えば、仮想ディスクは、仮想ディスクで使用可能領域と使用された領域とを特定するマップを含み得る。そのため、たとえホストが100Gbの仮想ディスクを割り振った場合でも、仮想マシンは仮想ディスクを、最初は使用可能領域が100Gb未満であるとみなすことがあり、ファイルシステムは仮想ディスクを、0よりも大きなサイズを有するものとみなすことがある。
【0017】
仮想マシンが仮想ディスクへの書き込みを行うと、物理記憶領域が消費、すなわち使用される。一般に仮想マシンは、仮想ディスクの一部分を使用済みとしてマークし、それにより、仮想マシンが仮想ディスク内で認識する使用可能領域の量が減少する。仮想マシンは、データを書き込むために基底物理記憶装置に直接アクセスできる可能性がある。あるいは、仮想マシンは、ホスト上のファイルシステムにデータを移送する可能性があり、ファイルシステムは、物理記憶装置に実際の書き込みを行う可能性がある。仮想マシンは、ファイルシステムへの書き込み通知も行う。仮想マシンの通知を受けて、ファイルシステムは、仮想ディスクを記憶する基底物理記憶装置の一部分を使用済みとしてマークする。例えば、仮想マシンが1Gbのファイルを書き込むのであれば、ファイルシステムは仮想ディスクを1Gb増やし、1Gbに相当する物理記憶領域を使用済みとしてマークして、他の目的に利用できないようにする。このようにして、仮想ディスクのサイズを時間の経過とともに増やすことができる。
【0018】
場合によっては、以前に仮想ディスクに書き込まれたデータを仮想マシンが記憶する必要がなくなることがある。以下の実施例を検討する。第1の時点で、仮想マシンがソフトウェアパッケージをダウンロードし、そのソフトウェアパッケージを仮想ディスクに書き込む。本実施例では、ソフトウェアパッケージが1Gbの領域を使用する。つまり、仮想マシンが仮想ディスクにソフトウェアパッケージを書き込むと、仮想マシンは仮想ディスクにおける空き領域の量を1Gb減らし、ファイルシステムは仮想ディスクファイルのサイズを1Gb増やす。仮想マシンがその後、同じく1Gbの記憶領域を使用するソフトウェアパッケージの新バージョンをダウンロードし、仮想ディスクにその新バージョンを記憶すると、仮想マシンは仮想ディスクにおける空き領域の量を再び1Gb減らし、ファイルシステムは仮想ディスクファイルのサイズを再び1Gb増やす。仮想ディスクファイルのサイズを増やすと、ファイルシステムは、基底物理記憶装置上で対応する量の物理記憶領域を使用済みとしてマークする。本実施例では、仮想ディスクが、新バージョンと旧バージョンという2バージョンのソフトウェアパッケージを現在記憶していることになる。旧バージョンが無用であると判断すると、仮想マシンは旧バージョンを削除済みとして指定することができる。仮想マシンは、旧バージョンと削除済みとして指定したときに、仮想ディスクで使用可能領域の量を1Gb増やす。ただし、仮想マシンは一般に、このことをファイルシステムに通知しないので、ファイルシステムには、ソフトウェアパッケージの両バージョンに割り振られた物理記憶領域が依然として存在する。すなわち、仮想マシンが、仮想ディスクのうち1Gbしか、新しいソフトウェアパッケージを記憶する目的で使用されていないとみなすのに対し、ファイルシステムは、ソフトウェアパッケージの両バージョンを記憶する目的で2Gbが使用されているとみなす。
【0019】
仮想マシンが空き領域を作成する操作(例えば、上記実施例に見られるような、データを削除済みとして指定するなど)が実行されてもホストに通知されないので、ファイルシステムがかかる操作を受けて仮想ディスクのサイズを減らすことはない。この状況が論理的な結論に至ることができるのであれば、仮想ディスクファイルは最終的に自身の最大割り振りサイズまで増大する可能性があり、仮想マシンは仮想ディスクにデータをこれ以上記憶できなくなる可能性がある。場合によっては、仮想ディスクでデータの相当部分が仮想マシンにとって無用となった場合でも、この状況は起こり得る。例えば、仮想マシンが、あるデータを削除済みとして指定する必要があると指定した可能性がある。その結果、これらのデータ部分は、仮想マシンによって使用可能領域とみなされる。しかし、仮想マシンは一般に、データのどの部分が無用となったのかをファイルシステムに伝えない。そのため、ファイルシステムは、仮想マシンにとって無用となったデータを格納している基底物理記憶装置上の物理記憶容量を、使用済み、すなわち使用不可としてマークしたということになる。この場合、仮想マシンからすれば、仮想ディスクには使用可能な領域があるが、ホストからすれば、仮想ディスクが満杯であるとみなされ得る。
【0020】
これはいくつかの理由で好ましくない。一実施例では、仮想ディスクファイルがファイルシステムによって認識される自身の最大割り振りサイズに達すると、仮想マシンは新しいデータ書き込み操作を実行することができなくなる。その上、記憶領域は概して貴重であることから、記憶装置で無用となったデータを記憶すると、記憶装置システムのコストが増し、記憶装置を無用に増設することが必要となり得る。さらには、記憶装置で利用される記憶領域の量を増やすことにより、場合によっては、記憶装置の性能に悪影響が出かねない。例えば、記憶装置がデータで一杯になっていると、記憶装置の容量に余裕がある場合よりも、記憶装置への読み書きに時間がかかる可能性がある。
【0021】
上記の不都合を改善するために、従来のシステムは、仮想マシンにとって不要となった記憶領域を取り戻す方法を用いることができる。これは、仮想ディスクの圧縮と呼ばれる。かかる方法の1つと、かかる従来の方法に伴う限定事項を以下に記載する。
【0022】
仮想ディスクを圧縮する1つの方法は、仮想ディスク用に割り振られてはいるが仮想マシンによって使用されていないデータを格納している基底記憶装置の全領域にパターン(例えばゼロ)を書き込むことを伴う。これは、仮想マシンが以前に書き込んだものの、仮想マシンがもう使用していないデータを記憶している物理記憶装置の領域にゼロが書き込まれるというものである。本実施例では、仮想マシンのオペレーティングシステムが、基底物理記憶装置上でデータを組織する目的で使用されたファイルシステムと互換性を持っている。これによって仮想マシンは、基底物理記憶装置内のどの物理記憶領域がゼロで上書きされる必要があるかを指定することができる。
【0023】
仮想マシンは、仮想ディスクを圧縮するためのリクエストを受け取るとまず、以前に使用したがもう使用していない仮想ディスクの部分を特定する。仮想マシンはその後、仮想ディスクのその部分にゼロを書き込む。一実施例では、使用されているデータ、すなわち有効なデータを仮想ディスクのどの部分が格納しているか否かを表す仮想ディスクのマップを仮想マシンが維持している。このマップは、仮想ディスクにおいてどれだけの領域が使用されているか、そして仮想ディスクにおいてどれだけの領域が使用可能かを仮想マシンに明示する。
【0024】
次にホストが、仮想マシンの操作を終了または休止する。つまり、仮想マシンはもう仮想ディスクへの書き込みができなくなる。場合によっては、仮想マシンが仮想ディスクから読み出せる場合がある。圧縮操作という状況では、仮想ディスク内のデータがコピー先仮想ディスクと呼ばれる新しい仮想ディスクにコピーされることから、仮想ディスクはコピー元仮想ディスクと呼ばれる。
【0025】
ホストはその後、新しい(コピー先)仮想ディスクを作成する。ファイルシステムは、同量の記憶領域をコピー先仮想ディスクに割り振ることができる。例えば、ホストが以前にコピー元仮想ディスク用に100Gbを割り振っていたのであれば、ホストは同じく100Gbをコピー先仮想ディスク用に割り振ることができる。上記のとおり、コピー先仮想ディスクが作成された時点では、ホストはコピー先仮想ディスクを実質0サイズの記憶オブジェクトとみなす。
【0026】
ホストはその後、コピー元仮想ディスクに対応する基底物理記憶装置の部分を読み出す。そして、仮想ディスクによって使用中であるとファイルシステムがマークしたすべての記憶領域を読み出す。すなわち、ファイルシステムが仮想ディスクファイルのサイズを100Gbとみなした場合、つまりファイルシステムが記憶領域のうち100Gbを仮想ディスクによって使用済みとマークした場合、ホストは100Gb分のデータを読み出す。
【0027】
ホストは、自らが読み出す基底物理記憶装置の部分ごとに、その部分がすべてゼロで満たされているかどうかを判断する。満たされている場合、ホストは物理記憶装置のその部分を仮想マシンによって使用されていないものとみなす。物理記憶装置の部分がゼロを含んでいない場合、ホストはその部分を仮想マシンによって使用されているものとみなし、その部分に記憶されているデータを新しい仮想ディスクに書き込む。そのため、仮想ディスクに割り振られており、かつゼロで満たされている物理記憶装置の部分は、コピー元仮想ディスクからコピー先仮想ディスクに一切コピーされない。前述のとおり、ゼロで満たされている部分は、仮想マシンが自ら使用しておらず、ゼロを書き込んだ部分である。
【0028】
仮想マシンによって使用されたすべてのデータが読み出され、コピー先仮想ディスクにコピーされると、コピー先仮想ディスクには、仮想マシンによって使用中であるとマークされたデータだけが格納されており、仮想マシンにとって無用なデータは格納されていない。この時点で、ホストはコピー元仮想ディスクファイルを削除することができ、仮想マシンにコピー先仮想ディスクを使用して操作を再開するように命令することができる。仮想マシンは、コピー先仮想ディスクへのデータの書き込みと、コピー先仮想ディスクからの読み出しを開始することができる。
【0029】
上記の方法だと、ホストからすれば、仮想ディスクのサイズを大きく減らすことができる。しかし、この方法を実施するには、仮想マシンによって使用されなくなったデータを格納している物理記憶装置の全部分にゼロを書き込み、仮想ディスクが使用した物理記憶装置の全部分を読み出す必要がある。場合によっては、読み書き(I/O操作)により、プロセッササイクルやデータ伝送帯域幅などの演算リソースが相当量消費され得る。
【0030】
仮想ディスクは100Gbであるとみなされるが、仮想マシンが取り扱うデータは32Gbだけという実施例を検討する。上記の方法を実行すると、仮想マシンは68Gbのゼロを書き込むことになる。その後ホストが100Gbのデータを読み出し、その100Gbをゼロと比較する。ホストはその後、仮想マシンが取り扱う32Gbのデータを新しい仮想ディスクに書き込む。これにより、I/O操作が最大200Gbに達する。
【0031】
ダイナミック仮想ディスクを圧縮する代替方法を、添付の図面を参照しながら以下説明する。この代替方法は、I/O操作の量を減らして同じ圧縮を実行し、理論上の最小限に近づけるというものである。上記実施例において、この代替方法は、わずか32Gbの読み書きを伴うだけである。136GbのI/O操作がなくなるので、68%の節約ということになる。つまり、同じ圧縮操作でも短時間で実行することができ、プロセッササイクルやデータ伝送帯域幅など、使用する演算リソースも大幅に減少する。
【0032】
図1は、演算システムのブロック図である。図示のとおり、この演算システムは演算装置10と記憶装置20とを備えており、記憶装置20は、ネットワーク30によって連結された仮想ディスク22と仮想ディスク24とを備えている。ネットワーク30は、インターネットなどのWAN(ワイド・エリア・ネットワーク)、1つもしくはそれ以上のLAN(ローカル・エリア・ネットワーク)、および/または1つもしくはそれ以上のSAN(ストレージ・エリア・ネットワーク)を含み得る。
【0033】
演算装置10は、パーソナルコンピュータ、ラップトップコンピュータ、サーバー、携帯情報端末、携帯電話などの演算装置である。演算装置10はオペレーティングシステム50を含んでおり、オペレーティングシステム50は、ファイルシステム60と仮想化モジュール70とを含んでおり、仮想化モジュール70はサイズ変更マネージャ72を含んでいる。演算装置10はまた、オペレーティングシステム42(1)、サイズ変更モジュール44(1)、アプリケーション46(1)を備える仮想マシン40(1)と、オペレーティングシステム42(2)、サイズ変更モジュール44(2)、アプリケーション46(2)を備える仮想マシン40(2)と、を実装する。
【0034】
オペレーティングシステム50は、プロセッサや記憶装置20などの記憶装置リソースなど、演算装置10を通じて使用可能な演算リソースへのアクセスを提供することができる。一実施形態において、記憶装置20は、編成されて物理クラスタになる物理記憶装置を含む。クラスタは、例えば4Kbといった具合に、記憶装置20に読み出しまたは書き込みできるデータの最小量を表す。物理記憶装置内の各クラスタは、例えば先頭の物理クラスタを表す物理クラスタゼロから、物理記憶装置内の最終物理クラスタを表す最大番号まで、順番に付番される。記憶装置20は、演算装置10内に含まれていてもよく、かつ/または(バス、ネットワーク、またはその他適切な相互接続などを介して)演算装置10に連結されていてもよい。記憶装置20は、記憶装置の電源が落とされた後でもかかる記憶装置に記憶されたデータが記憶されたままとなるように、持続的なデータ記憶を提供する。かかる記憶装置は、例えば、ハードディスク、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、または他の大容量記憶装置、あるいは、かかる記憶装置の配列を含む記憶装置システム(例えば、冗長配列独立ディスク(RAID)システムまたは光学式記憶ジュークボックス)であり得る。かかる記憶装置は、かかる物理記憶装置および/または記憶装置システム上で実装される仮想または論理記憶装置であってもよい。例えば、かかる記憶装置は、RAID記憶装置システム上で実装される論理ボリュームであってもよい。加えて、かかる記憶装置は、1つもしくはそれ以上の記憶装置を含み得る。記憶装置は、ソリッドステート媒体(例えばフラッシュドライブ)、光媒体(例えばCDおよびDVD)、および磁気媒体(例えばハードディスクまたは磁気テープ)を含む1種類もしくはそれ以上の種類の記憶媒体を含み得る。
【0035】
ファイルシステム60は、記憶装置20のデータなどのデータをファイルおよびディレクトリへと編成することができる。ファイルシステム60は、記憶装置20におけるファイルとデータの物理箇所の一覧を維持することができる。例えば、オペレーティングシステム50が新しいファイルを作成すると、オペレーティングシステム50は、サイズと種類、関連付け、その他の各種メタデータなど、ファイルのパラメータをファイルシステム60に通知することができる。この情報により、ファイルシステム60は、例えば記憶装置20内のどの物理クラスタがそのファイルのデータを記憶するかを判断することができる。同様に、記憶装置20への書き込みが命令されると、ファイルシステム60が、具体的な物理クラスタを割り当てて、書き込まれるデータを記憶する。ファイルシステム60は、どの物理クラスタが使用されているか、どのファイルが使用中の物理クラスタにデータを記憶しているか、そしてどの物理クラスタが使用されていないかを追跡する。
【0036】
一実施形態では、オペレーティングシステム50が仮想ディスク22などの仮想ディスクを作成する。ファイルシステム60は、記憶装置20内のどの物理クラスタが仮想ディスク22用のデータを記憶するかを指定する。一実施形態では、オペレーティングシステム50が、仮想ディスク22がダイナミック仮想ディスクであると指定する。ダイナミック仮想ディスクは、最初は実際に使用された記憶領域が比較的少なく、仮想ディスクへの書き込みアクセス権を有する仮想マシンによって必要とされる領域が増えるに連れて増大することができる。ファイルシステム60は、ダイナミック仮想ディスク22を、ファイルなど、最初はサイズが0に近い記憶オブジェクトとみなす。そのため、仮想ディスク22が最初に作成されたとき、ファイルシステム60は、仮想ディスク22用のデータを実際に記憶しているため、記憶装置20内の物理クラスタを一切特定しない。仮想マシン40などによって仮想ディスク22に書き込まれるデータが増えるにつれて、ファイルシステム60は仮想ディスク22のサイズを増やし、仮想ディスク22用のデータを記憶しながら、記憶装置20内で特定する物理クラスタを増やしていく。
【0037】
オペレーティングシステム50は、仮想マシン40のうちの1つもしくはそれ以上に仮想ディスク22を割り当てることができる。オペレーティングシステム50は、仮想ディスクが割り振られ、仮想マシン40に割り当てられたことを仮想マシン40に通知することができる。一般に、仮想マシン40は、物理コンピュータシステムの働きをするソフトウェア構成物である。例えば、仮想マシン40は、アプリケーション46などのアプリケーションを実行し、サービスを提供し、コマンドを処理することができる。アプリケーション46の例としては、会計、表計算、データベース、文書処理、媒体消費、調達および展開、製品開発などのためのソフトウェアを挙げることができる。仮想マシンは、オペレーティングシステム42など、独自のオペレーティングシステムを稼働させることができる。オペレーティングシステムの例としては、マイクロソフトWindows(登録商標)やUnix(登録商標)などがある。アプリケーション46がデータを書き込むと、オペレーティングシステム42は、その書き込みを仮想ディスク22に命令することができる。オペレーティングシステム42は、仮想ディスク22の使用部分と使用可能部分とを特定するマップを保つことができる。仮想ディスク22に記憶されたデータが物理的に記憶されている場所を判断するために、オペレーティングシステム42はファイルシステム60と通信することができる。
【0038】
オペレーティングシステム50は、使用可能領域の量など、仮想ディスク22の特徴を仮想マシン40に通知することもできる。仮想ディスク22が動的であることを仮想マシン40が把握している必要はない。オペレーティングシステム50は、仮想マシン40に仮想ディスク22を割り当てると、仮想マシン40が仮想ディスク22でどれだけの領域を使用できるかを仮想マシン40に通知する。仮想マシン40は仮想ディスク22を、オペレーティングシステム50によって指定されたサイズの記憶オブジェクトとみなす。仮想マシン40は、仮想ディスク22を記憶する目的で使用された物理クラスタの実サイズ、すなわち数が、最初は非常に小さく、仮想ディスク22にさらにデータを書き込んでいくにつれて増えるということを把握することができる。例えば、オペレーティングシステム50は、100Gbを仮想ディスク22に割り振り、仮想マシン40に仮想マシン22を割り当てることができる。仮想マシン40は、仮想ディスク22を100Gbの記憶オブジェクトとみなす。ファイルシステム60は、仮想ディスク22を0Gbの記憶オブジェクトとみなす。一実施形態では、仮想マシン40が、仮想ディスク22を連続的に配置された仮想クラスタ配列として表すビットマップなどのマップを維持する。各仮想クラスタは固定サイズを有することができる。例えば、仮想マシン40は、本実施例において100Gbの仮想ディスクである仮想ディスク22を、各仮想クラスタが4Kbである一連の25K仮想クラスタと認識することができる。仮想マシン40は、このマップを使用して、どの仮想クラスタが使用されており、どの仮想クラスタが使用されていないかを特定することができる。
【0039】
アプリケーション46による仮想ディスク22への書き込み例は、次のように行われる。アプリケーション46が書き込み操作を実行する。この書き込みは、アプリケーション46によって使用されているファイルにデータを保存することや、ネットワークからダウンロードされたファイルを記憶することなどを伴い得る。仮想ディスク22が使用可能領域を有するかどうかを仮想マシン40が検知する。仮想マシン40は、例えば、仮想クラスタのマップを確認して、どの仮想クラスタが使用可能かを検知することができる。仮想ディスク22が満杯である、すなわち使用可能な仮想クラスタがないということを仮想マシン40が検知すれば、この書き込みは失敗する。仮想ディスク22に空きがあり、使用可能な仮想クラスタがあれば、アプリケーション46は、ファイル名など、この書き込みと関連付けられた情報を仮想マシン40に渡す。アプリケーション46は、仮想マシン40に書き込まれるデータを渡すこともできる。仮想マシン40は、仮想ディスク22への書き込み操作を命令する。そのために、仮想マシン40は、書き込みが所望されることを表す情報をファイルシステム60に渡す。この情報は、データが関連付けられているファイルのファイル名に加え、書き込まれるデータのサイズまたは量も特定することができる。
【0040】
ファイルシステム60は、データを受け入れられるだけの領域が仮想ディスク22に割り振られているかどうかを検知する。例えば、アプリケーション46が1Gbのデータを書き込んでおり、仮想ディスク22に100Gbが割り振られており、50Gbしか使用されていないことをファイルシステム60が検知すると、ファイルシステム60が、その書き込みを受け入れるだけの十分な領域が仮想ディスク22に割り振られていることを検知する。このような場合に、ファイルシステム60は、十分な使用可能領域があり、書き込みが続行可能であることを仮想マシン40に通知することができる。十分な使用可能領域がなく、書き込みを続行できない場合、ファイルシステム60は、書き込みが失敗するはずであるということを明示する。あるいは、ファイルシステム60は、仮想ディスク22に割り振る記憶領域を増やして書き込みを続行できるようにすることもできる。
【0041】
ファイルシステム60は、書き込みを受け入れるだけの十分な領域が仮想ディスク22に割り振られていないことを検知すると、データを実際に記憶する1つもしくはそれ以上の物理クラスタまたは物理クラスタの範囲を記憶装置20で割り当てる。ファイルシステム60は、物理クラスタを特定する情報を仮想マシン40に送ることもできる。仮想マシン40は、ファイルシステム60にデータを送信し、仮想クラスタマップを更新して、そのデータに割り当てられる仮想クラスタを使用済みと特定する。ファイルシステム60は、記憶装置20にそのデータを記憶することができる。あるいは、仮想マシン22がそのデータを記憶装置20に直接送信することができる。記憶装置20は、ファイルシステム60によって指定された物理クラスタにデータを記憶する。
【0042】
アプリケーション46がファイルを削除するためのコマンドを出した場合など、具体的なデータ項目が仮想マシン40にとって不要になると、仮想マシン40は、仮想クラスタマップを更新して、データを記憶する仮想クラスタが有効なデータをもう格納していないということを明示することができる。仮想クラスタのデータは削除済みとして指定され、仮想クラスタは使用可能な記憶領域としてマークされる。
【0043】
仮想マシンの作成と仮想マシンおよび仮想マシン用のリソースの管理とに関連する操作は、仮想化モジュール70によって実行することができる。仮想化モジュール70は、サイズ変更マネージャ72を備える。例えば、仮想ディスク22などの仮想ディスクが圧縮されると、サイズ変更マネージャ72は、サイズ変更モジュール、例えばサイズ変更モジュール44と通信して、仮想ディスク22を圧縮することができる。
【0044】
一実施例では、オペレーティングシステム50が、仮想ディスクを圧縮する必要があることを示す状態を検知し、この情報を仮想化モジュール70に渡すことができる。サイズ変更マネージャ72はその後、仮想ディスク22の圧縮が実行中であることをサイズ変更モジュール44に通知することができる。サイズ変更モジュール44はその後、仮想ディスク22の空き領域の実質的全体を占有する仮想ディスク22でファイルを作成することができる。サイズ変更モジュール44は、仮想マシン40によって維持される仮想クラスタのマップを使用して、そのファイルが占有する仮想クラスタのリストを仮想ディスク22に生成することができる。このリストは実質的に、仮想ディスク22によって使用されていない仮想ディスク22内の全仮想クラスタが記載されたリストである。なお、その箇所が仮想マシン40によってこれまで一度も書き込まれていないか、データを記憶するために仮想マシン40によって以前に使用されたことがあり、その後仮想マシン40によって削除済みと指定されたかは関係ない。
【0045】
仮想マシン40は、仮想クラスタのリストをオペレーティングシステム50に渡すことができる。一実施形態において、仮想マシン40はまず、仮想クラスタのリストを、対応する物理クラスタのリストに変換する。仮想マシン40が物理クラスタに書き込むと、ファイルシステム60が、仮想ディスク22用のデータを記憶する物理クラスタを仮想マシン40に提供する。これにより、仮想マシン40が、物理クラスタと仮想クラスタとの間でのマッピングを行うことができる。リスト内の物理クラスタは、仮想マシン40が取り扱わないデータを格納している箇所を表す。
【0046】
オペレーティングシステム50は、仮想マシン40が書き込んだ仮想ディスク22内の、リストで特定された箇所を除く全箇所からデータを読み出し、読み出されたデータを、仮想ディスク24など新しい仮想ディスク)にコピーすることができる。このコピー操作が完了した後、仮想ディスク24は、仮想マシン40が取り扱うデータだけを格納しており、そのデータを受け入れるのに十分な大きさしかない。すなわち、仮想ディスク24には、仮想マシン40が対象とするデータ用にのみ使用された記憶領域が存在するので、仮想ディスク24は仮想ディスク22よりも小さい可能性が高いのに対し、仮想ディスク22は、仮想マシン40がもう取り扱わないデータを記憶していた記憶領域を含んでいた可能性が高い。
【0047】
図2Aは、
図1の仮想ディスク22など、100Gbの仮想ディスクの図である。
図2Aは、
図1のファイルシステム60などのファイルシステムから見た仮想ディスク内の使用済み領域205と使用していない領域210を示す。使用済み領域205と使用していない領域210は、1つもしくはそれ以上の物理クラスタを表す。一実施形態において、仮想ディスクは、実質的に0バイトの使用済み記憶領域から満杯近くまで増大したダイナミック仮想ディスクである。例えば、
図1のオペレーティングシステム50などのオペレーティングシステムが100Gbを仮想ディスクに割り振ったとする。このオペレーティングシステムは、
図1の仮想マシン40などの仮想マシンに書き込み許可を与えることができる。
【0048】
オペレーティングシステムが仮想ディスクを作成し、記憶領域(例えば100Gb)を仮想ディスクに割り振った時点で、ファイルシステムは、この仮想ディスクを、データを記憶するのに使用される領域が実質的に0バイトであるとみなす。この時点では、仮想ディスク用のデータを記憶するための物理クラスタが割り当てられていない。仮想マシンが仮想ディスクにデータを書き込むと、ファイルシステムが、
図1の記憶装置20など、基底記憶装置内の具体的な物理クラスタをそのデータに割り当て、仮想マシンによって書き込まれるデータを格納している物理クラスタを使用済みとしてマークする。仮想ディスクは、ファイルシステムによって使用済みとしてマークされている記憶領域がほぼ0バイトである初期サイズから、時間の経過とともに、
図2Aに示すような、ファイルシステムによって使用済みとしてマークされている約90Gbの記憶領域まで増大する。仮想マシンが仮想ディスクへの書き込みを行うと、ファイルシステムが使用済みとしてマークする記憶領域(例えば物理クラスタ)を増やし、仮想ディスクが動的に増大する。
【0049】
図2Bは、仮想マシンから見た
図2Aの仮想ディスクを示す。
図2Bは、使用済み領域215と使用していない領域220とを示す。使用済み領域215と使用していない領域220は、1つもしくはそれ以上の仮想クラスタを表す。仮想ディスクへの書き込みを行う仮想マシンは、仮想ディスクからデータを削除することもできる。一実施形態において、仮想マシンの削除操作は、仮想ディスクにおける使用していない領域220の一部もしくは全部に対して行われる。ただし、この削除操作はファイルシステムに渡されないので、ファイルシステムは仮想ディスクを、仮想ディスクに割り振られた記憶領域の90パーセントを使用するものとみなすのに対し、仮想マシンは仮想ディスクを、
図2Bに示すとおり、仮想ディスクに割り当てられる記憶領域の約50パーセントしかを使用していないものとみなす。
【0050】
図2Cは、下記のとおり、圧縮操作後にファイルシステムから見た
図2Aの仮想ディスクを示す。
図2Cは、使用済み領域225と使用していない領域230とを表す。使用済み領域225と使用していない領域230は、1つもしくはそれ以上の物理クラスタを表す。なお、
図2Cでは、使用済み領域225が一連の隣接するクラスタとして描かれているが、このような配置が基底物理記憶装置に存在する必要はない。
図2Aおよび2Bに示すとおり、仮想マシンが対応する仮想クラスタを使用していないものとみなす場合でも、ファイルシステムは、仮想ディスクに含まれる特定の物理クラスタを、仮想ディスクによって使用されているものとみなす。圧縮操作により、ファイルシステムはこれらの領域を使用していないものとみなす。圧縮操作前には、ファイルシステムが仮想ディスクを90パーセント使用済みと認識していたのに対し、圧縮操作後は、ファイルシステムが仮想ディスクを約50パーセント使用済みとみなす。以上のとおり、圧縮操作により、ファイルシステムが利用できる領域が増える。
【0051】
図3は、仮想ディスク圧縮操作を実行する方法のフローチャートである。一実施形態において、この方法は、
図1のシステムなどのシステムによって実行される。305で圧縮操作が開始される。圧縮は、ユーザーコマンドを受けて開始することができる。例えば、システム管理者は、
図1の仮想ディスク22などの仮想ディスクを手動で選択し、仮想ディスクの圧縮操作を開始することができる。圧縮中の仮想ディスクは、コピー元仮想ディスクと呼ばれる。あるいは、しきい条件の検知を受けて圧縮操作を自動的に開始することもできる。例えば、
図1のオペレーティングシステム50などのオペレーティングシステムが仮想ディスクの利用率、すなわち、
図1の記憶装置20などの基底物理記憶装置が特定のしきい値(例えば90パーセントが満杯)に達したことを検知することができる。このしきい値に達したという検知を受けて、オペレーティングシステムは仮想ディスクの圧縮操作を開始することができる。オペレーティングシステムは、仮想ディスクが使用する記憶領域(
図1の記憶装置20など)を管理するファイルシステム(
図1のファイルシステム60など)との通信を通じて、しきい値に達したことを検知することができる。オペレーティングシステムは、周期的に圧縮を開始したり、前回の圧縮操作からの経過時間の検知を受けて圧縮を開始したりすることもできる。
【0052】
圧縮操作が実行されることをオペレーティングシステムが検知したことを受け、オペレーティングシステムは、
図1のサイズ変更マネージャ72などのサイズ変更マネージャにコマンドを出して圧縮を開始する。サイズ変更マネージャはその後、
図1の仮想マシン40などの仮想マシンにあるサイズ変更モジュール(
図1に示すサイズ変更モジュール44など)に圧縮操作を通知する。サイズ変更マネージャは、ホスト・オペレーティング・システムに代わって圧縮操作に関連する操作を実行することができる。サイズ変更モジュールは、仮想マシンに代わって圧縮に関連する操作を実行することができる。
【0053】
図4Aに関してさらに説明されるとおり、310でクラスタのリストが生成される。このリストは、圧縮操作の通知を受け取ったことを受けて、サイズ変更モジュールによって生成することができる。このリストは、仮想マシンが使用していないものとみなす仮想ディスク内の箇所を特定する。このリストで特定された箇所のいくつかは、ファイルシステムによって使用済みと特定される可能性がある。ファイルシステムによって使用済みと特定されている箇所は、ファイルシステムから見れば、仮想ディスクによって利用されている記憶領域の量に含められる。このリストは、仮想マシンが認識する仮想ディスク内の使用していない領域の実質的にすべてを特定する。代替実施形態では、このリストが、仮想マシンが使用済みとみなす箇所を特定することができる。
【0054】
405で、
図1の仮想ディスク22などの仮想ディスクが、
図1のサイズ変更モジュール44などのサイズ変更モジュールが圧縮されるという通知を受け取る。この通知を受けて、サイズ変更モジュールは、410で一時ファイルを開く。サイズ変更モジュールは、
図1の仮想マシン40などの仮想マシンが認識するファイルのサイズを、仮想ディスクの空き領域の量とほぼ等しくなるように設定する。一実施形態において、仮想マシンは、使用可能領域と特定したすべての仮想クラスタを使用不可としてマークし、その仮想クラスタを一時ファイルに含める。仮想マシンが残す空き仮想クラスタの数は一般に比較的少ない。何らかの操作によって仮想ディスクに圧縮後に増大した場合には、このゆったりとした領域を使用してデータを記憶することができる。
【0055】
ファイルを作成し、仮想クラスタを使用済みとしてマークすると、基底物理クラスタも使用済みとしてマークされる。これにより、
図1の記憶装置20などの基底物理記憶装置上で実行中のデフラグメンテーション操作による位置の移動が防止される。圧縮操作中に位置が移動すると、圧縮操作が失敗したり、間違ったデータがコピーされたりする可能性がある。
【0056】
サイズ変更モジュールは、閉じられたとき削除されるものと指定するファイルの属性を設定する。サイズ変更モジュールは、ファイルの記憶を管理する
図1のファイルシステム60などのファイルシステムがそのファイルに割り当てられた使用していない領域をゼロで満たさないように、あるいはそのファイルに割り当てられた位置に操作を書き込むように指定するファイルの属性を設定する。一実施形態では、ファイルのメタデータにフラグ設定することを伴う。ファイルシステムは、一時ファイル用の領域を割り当てるときにこのフラグの値を読み出す。
【0057】
一実施形態では、サイズ変更モジュールが複数の一時ファイルを作成する。例えば、サイズ変更モジュールは、仮想クラスタの隣接範囲ごとに一時ファイルを作成することができる。別の実施例では、仮想ディスクが、
図1の記憶装置20などの基底物理記憶装置の複数のパーティションにまたがり得る。本実施例において、サイズ変更モジュールは、仮想ディスクがまたがるパーティションごとに一時ファイルを作成することができる。あるいは、仮想ディスクを単一パーティションに含めることができる。
【0058】
415で、サイズ変更モジュールは、ファイルに含まれるデータを記憶するために割り当てられた仮想クラスタを特定し、仮想クラスタのリストを作成する。420で、サイズ変更モジュールは、仮想クラスタの識別子を物理クラスタの識別子に変換し、物理クラスタの識別子のリストを新たに作成する。一実施形態では、仮想クラスタと論理的クラスタとが同じサイズでない。このような場合には、1つの仮想クラスタ番号が複数の論理クラスタ番号に対応することがあり、逆に複数の仮想クラスタ番号が1つの論理クラスタ番号に対応することもある。サイズ変更モジュールは、仮想クラスタ番号のリストを論理クラスタ番号のリストに変換した後、425でこのリストをサイズ変更マネージャに送信する。
【0059】
図3に戻り、315で、オペレーティングシステムは、315で
図1の仮想ディスク24などの新しい仮想ディスクを確立する。この仮想ディスクは、コピー元仮想ディスクに記憶されたデータ用のコピー先仮想ディスクとしての働きをする。オペレーティングシステムは、コピー元仮想ディスクに割り振られた記憶領域と同量の記憶領域をコピー先仮想ディスクに割り振ることも、異なる量の記憶領域をコピー先仮想ディスクに割り振ることもできる。オペレーティングシステムは、コピー先仮想ディスクがダイナミック仮想ディスクであると指定することができる。コピー先仮想ディスクは、最初はファイルシステムから見て実質的に空である、すなわちサイズが0バイトである。
【0060】
図
4Bに関してさらに説明されるとおり、320で、オペレーティングシステムがコピー元仮想ディスクからコピー先仮想ディスクへとデータをコピーする。430で、サイズ変更マネージャが、サイズ変更モジュールによって生成されたリストを受け取る。435で、オペレーティングシステムが仮想マシンを休止する。仮想マシンの休止中は、仮想マシンが仮想ディスクへの書き込みを行うことができない。仮想マシンは、仮想マシンの休止中でも仮想ディスクからの読み出し処理を行うことができる。一実施形態では、圧縮進行中に仮想マシンがいかなる操作も実行しないように、オペレーティングシステムが仮想マシンを完全に停止することができる。
【0061】
ファイルシステムは、仮想ディスク用のデータを記憶する基底物理記憶装置の物理クラスタのリストを維持する。440で、オペレーティングシステムは、物理記憶装置内の先頭の物理クラスタと一致する物理クラスタのリスト内の先頭のエントリを選択する。
445で、オペレーティングシステムは、この物理クラスタの識別子を、サイズ変更モジュールから受け取った使用されていない物理クラスタのリスト内の項目と比較して、ファイルシステムによって使用済みと特定された物理クラスタが仮想マシンによって使用されているかどうかを判断する。物理クラスタが両方のリストで特定されていれば、サイズ変更モジュールから受け取ったリストにより、仮想マシンがもう使用していない物理クラスタが特定され、オペレーティングシステムは、仮想マシンによって使用されていないと特定されたクラスタをコピーしないので、オペレーティングシステムは、物理クラスタにあるデータをコピー元仮想ディスクからコピー先仮想ディスクにコピーしない。物理クラスタがファイルシステムと仮想マシンとによって使用済みであると特定されている場合(例えば、物理クラスタがサイズ変更モジュールから受け取ったリストで特定されていない場合)、オペレーティングシステムは、
450でコピー元仮想ディスクからコピー先仮想ディスクにクラスタをコピーする。オペレーティングシステムは、かかるクラスタをコピー元仮想ディスクの箇所から読み出し、ファイルシステムによってコピー先仮想ディスクに割り当てられたクラスタに書き込む。コピー先仮想ディスクに書き込まれた各クラスタにより、ファイルシステムはコピー先仮想ディスクのサイズを動的に増やす。
【0062】
455で、オペレーティングシステムは、コピー元仮想ディスクからコピー先仮想ディスクにコピーされていないクラスタが残っているかどうかを検知する。一実施形態において、この処理は、コピー元仮想ディスクによって使用済みであるとファイルシステムによって特定されたすべてのクラスタのリストをトラバースすることを伴う。コピーされていないクラスタがまだ残っている場合には、オペレーティングシステムが
460で、ファイルシステムによって使用済みとしてマークされた物理クラスタのリスト内の次のエントリを選択する。
【0063】
コピー先仮想ディスクにコピーする必要があるすべてのクラスタがコピー先仮想ディスクにコピーされると、サイズ変更モジュールが
465で一時ファイルを閉じ、それによって一時ファイルが削除される。
【0064】
図3に戻ると、オペレーティングシステムは、325で仮想ディスクをスワップする。そのために、オペレーティングシステムは仮想マシンに、コピー先仮想ディスクに対する読み出しおよび書き込みアクセス権を与えて、仮想マシンがコピー元仮想ディスクにアクセスする許可を取り消す。その後330で、オペレーティングシステムはコピー元仮想ディスクを削除することができる。
【0065】
圧縮操作が完了すると、オペレーティングシステムは335で仮想マシンを再開する。仮想マシンが再開されると、仮想マシンはコピー先仮想ディスクに対する読み書きができるようになる。
【0066】
図5は演算装置のブロック図であり、ソフトウェアでサイズ変更マネージャ72をどのように実装できるかを表している。演算システム510は、コンピュータ可読命令を実行できるシングルまたはマルチプロセッサを搭載した任意の演算装置またはシステムを広く表す。演算システム510の例としては、ワークステーション、パーソナルコンピュータ、ラップトップ、クライアント側端末、サーバー、分散演算システム、ハンドヘルド装置(携帯情報端末や携帯電話など)、ネットワーク機器、記憶装置コントローラ(アレイコントローラ、テープ・ドライブ・コントローラまたはハード・ドライブ・コントローラ)などを含む1つもしくはそれ以上の各種装置があるが、これらに限定されるものではない。最も基本的な構成では、演算システム510が、少なくとも1つのプロセッサ514とシステムメモリ516とを備え得る。サイズ変更マネージャ72を実装するソフトウェアを実行することにより、演算システム510は、ダイナミック仮想ディスク圧縮操作に参加するように構成された特殊目的の演算装置になる。
【0067】
プロセッサ514は概して、データを処理できるか、命令を解釈および実行できる任意の種類または形態の処理装置を表す。ある実施形態では、プロセッサ514が、ソフトウェアアプリケーションまたはモジュールから命令を受け取り得る。これらの命令により、プロセッサ514は、本明細書に記載および/または図示された実施形態のうちの1つもしくはそれ以上に示された機能を実行し得る。例えば、プロセッサ514は、本明細書に記載されている操作の全部または一部を実行し得るし、かつ/または実行するための手段となり得る。プロセッサ514は、本明細書に記載および/または図示されたその他任意の操作、方法、またはプロセスを実行し得るし、かつ/または実行するための手段となり得る。
【0068】
システムメモリ516は概して、データおよび/または他のコンピュータ可読命令を記憶できる任意の種類または形態の揮発性または不揮発性記憶装置または媒体を表す。システムメモリ516の例として、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、フラッシュメモリ、またはその他任意の適切なメモリ装置があるが、これらに限定されるものではない。一実施例では、RAMモジュール135を実装しているプログラム命令が、システムメモリ516に読み込まれ得る。
【0069】
ある実施形態では、演算システム510が、プロセッサ514およびシステムメモリ516に加え、1つもしくはそれ以上のコンポーネントまたは要素を含み得る。例えば、
図5に示すとおり、演算システム510は、メモリコントローラ518と、入/出力(I/O)コントローラ520と、通信インターフェイス522とを備える場合があり、それらの各々が通信インフラストラクチャ512を介して相互接続され得る。通信インフラストラクチャ512は概して、演算装置の1つもしくはそれ以上のコンポーネント間で通信しやすくすることのできる任意の種類または形態のインフラストラクチャを表す。通信インフラストラクチャ512の例としては、通信バス(業界標準アーキテクチャ(ISA)など)、ペリフェラル・コンポーネント・インターコネクト(PCI)、PCIエクスプレス(PCIe)または同様のバスおよびネットワークがあるが、これらに限定されるものではない。
【0070】
メモリコントローラ518は概して、メモリまたはデータを取り扱えるか、あるいは演算システム510の1つもしくはそれ以上のコンポーネント間の通信を制御できる任意の種類または形態の装置を表す。例えば、ある実施形態において、メモリコントローラ518は、通信インフラストラクチャ512を介してプロセッサ514、システムメモリ516、およびI/Oコントローラ520間の通信を制御し得る。ある実施形態において、メモリコントローラ518は、本明細書に記載および/または図示された操作または特徴のうちの1つもしくはそれ以上を、単独または他の要素との組み合わせによって実行し得るし、かつ/または実行する手段となり得る。
【0071】
I/Oコントローラ520は概して、演算装置の入出力機能を調整および/または制御できる任意の種類または形態のモジュールを表す。例えば、ある実施形態において、I/Oコントローラ520は、プロセッサ514、システムメモリ516、通信インターフェイス522、ディスプレイアダプタ526、入力インターフェイス550、記憶装置インターフェイス554など、演算システム510のうちの1つもしくはそれ以上の要素間でのデータの移送を制御または簡便化し得る。
【0072】
通信インターフェイス522は、演算システム510と1つもしくはそれ以上の追加装置との間での通信をしやすくすることのできる任意の種類または形態の通信装置またはアダプタを広く表す。例えば、ある実施形態において、通信インターフェイス522は、演算システム510と、追加演算システムを含むプライベートまたはパブリックネットワークとの間での通信をしやすくし得る。通信インターフェイス522の例としては、有線ネットワークインターフェイス(ネットワーク・インターフェイス・カードなど)、無線ネットワークインターフェイス(無線ネットワーク・インターフェイス・カードなど)、モデム、およびその他任意の適切なインターフェイスがあるが、これらに限定されるものではない。少なくとも一実施形態において、通信インターフェイス522は、インターネットなどのネットワークとの直接リンクを介してリモートサーバーとの直接接続を提供し得る。通信インターフェイス522はまた、ローカル・エリア・ネットワーク(イーサネットネットワークなど)(「イーサネット」は登録商標、以下同じ)、パーソナル・エリア・ネットワーク、電話またはケーブルネットワーク、携帯電話接続、衛星データ接続、あるいはその他任意の適切な接続を通じて、かかる接続を間接的に提供し得る。
【0073】
ある実施形態では、通信インターフェイス522が、外部バスまたは通信経路を介した演算システム510と1つもしくはそれ以上のさらなるネットワークまたは記憶装置との間での通信をしやすくするように構成されているホストアダプタも表し得る。ホストアダプタの例としては、スモール・コンピュータ・システム・インターフェイス(SCSI)ホストアダプタ、ユニバーサル・シリアル・バス(USB)ホストアダプタ、電気電子技術者協会(IEEE)1594ホストアダプタ、シリアル・アドバンスト・テクノロジ・アタッチメント(SATA)、シリアルアタッチドSCSI(SAS)とエクスターナルSATA(eSATA)ホストアダプタ、アドバンスド・テクノロジー・アタッチメント(ATA)およびパラレルATA(PATA)ホストアダプタ、ファイバー・チャネル・インターフェイス・アダプタ、イーサネットアダプタなどがあるが、これらに限定されるものではない。
【0074】
通信インターフェイス522は、演算システム510で分散あるいはリモートコンピューティングができるようにもし得る。例えば、通信インターフェイス522は、リモート装置から実行命令を受け取ったり、リモート装置に実行命令を送ったりし得る。
【0075】
図5に示すとおり、演算システム510は、ディスプレイアダプタ526を介して通信インフラストラクチャ512に連結された少なくとも1つのディスプレイ装置524も備え得る。ディスプレイ装置524は概して、ディスプレイアダプタ526によって転送された情報を視覚的に表示できる任意の種類または形態の装置を表す。同様に、ディスプレイアダプタ526は概して、ディスプレイ装置524に表示するグラフィックス、テキスト、および他のデータを通信インフラストラクチャ512から(または当該技術で公知のフレームバッファから)転送するように構成されている任意の種類または形態の装置を表す。
【0076】
図5に示すとおり、演算システム510は、入力インターフェイス550を介して通信インフラストラクチャ512に連結された少なくとも1つの入力装置528も備え得る。入力装置528は概して、コンピュータまたは人による入力情報を演算システム510に提供できる任意の種類または形態の入力装置を表す。入力装置528の例としては、キーボード、ポインティング装置、音声認識装置、またはその他任意の入力装置があるが、これらに限定されるものではない。
【0077】
図5に示すとおり、演算システム510は、記憶装置インターフェイス534を介して通信インフラストラクチャ512に連結されたデータ記憶装置533も備え得る。記憶装置533は概して、データおよび/または他のコンピュータ可読命令を記憶できる任意の種類または形態の記憶装置または媒体を表す。例えば、記憶装置533は、磁気ディスクドライブ(いわゆるハードドライブなど)、フロッピー・ディスク・ドライブ(「フロッピー」は登録商標、以下同じ)、光学ディスクドライブ、フラッシュドライブなどを含み得る。記憶装置インターフェイス534は概して、演算システム510の記憶装置533と他のコンポーネントとの間でデータを移送するための任意の種類または形態のインターフェイスまたは装置を表す。
【0078】
ある実施形態では、記憶装置533が、コンピュータソフトウェア、データ、または他のコンピュータ可読情報を記憶するように構成されている取り外し可能な記憶装置との間で読み出しおよび/または書き込みを行うように構成され得る。適切な取り外し可能記憶装置の例としては、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリ装置などがあるが、これらに限定されるものではない。記憶装置533は、コンピュータソフトウェア、データ、または他のコンピュータ可読命令を演算システム510に読み込めるようにするためのその他同様の構造物または装置も備え得る。例えば、記憶装置533は、ソフトウェア、データ、または他のコンピュータ可読情報を読み書きするように構成され得る。記憶装置533は、演算システム510の一部であってよく、あるいは他のインターフェイスシステムを通じてアクセスされる独立した装置であってもよい。
【0079】
演算システム510には、その他多くの装置またはサブシステムが接続され得る。逆に、
図5に示すコンポーネントと装置のすべてが、本明細書に記載および/または図示された実施形態を実践するために存在する必要があるというわけではない。上記の装置およびサブシステムは、
図5に示すものとは異なる方法で相互接続され得る。
【0080】
演算システム510は、任意の数のソフトウェア、ファームウェア、および/またはハードウェア構成も用い得る。例えば、本明細書に開示された実施形態のうち1つもしくはそれ以上が、コンピュータ可読記憶媒体上のコンピュータプログラム(コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、またはコンピュータ制御ロジックとも呼ばれる)として符号化されたものであり得る。コンピュータ可読記憶媒体の例としては、磁気記憶媒体(例えばハード・ディスク・ドライブおよびフロッピーディスク)、光記憶媒体(例えばCD−ROMまたはDVD−ROM)、電子記憶媒体(例えばソリッドステートドライブおよびフラッシュメディア)などがある。かかるコンピュータプログラムは、インターネットなどのネットワークを介して、あるいは可搬媒体で演算システム510に移送し、メモリに記憶することもできる。
【0081】
コンピュータプログラムを格納しているコンピュータ可読媒体は、演算システム510に読み込まれ得る。コンピュータ可読媒体に記憶されたコンピュータプログラムの全体または一部分はその後、システムメモリ516、および/または記憶装置532、533の様々な部分に記憶され得る。演算システム510に読み込まれたコンピュータプログラムは、プロセッサ514によって実行されると、本明細書に記載および/または図示された実施形態のうちの1つもしくはそれ以上に示す機能をプロセッサ514が実行し、かつ/または実行するための手段となり得る。さらに/あるいは、本明細書に記載および/または図示された実施形態のうちの1つもしくはそれ以上が、ファームウェアおよび/またはハードウェアで実装され得る。例えば、演算システム510は、本明細書に開示された実施形態のうちの1つもしくはそれ以上を実装するように適合された特定用途向け集積回路(ASIC)として構成され得る。
【0082】
図6は、クライアントシステム610、620、630とサーバー640、645がネットワーク650に連結され得るネットワークアーキテクチャ600のブロック図である。クライアントシステム610、620、630は概して、任意の種類または形態の演算装置またはシステムを表す。
【0083】
同様に、サーバー640、645は概して、
図5の演算システム510などの演算装置で実装されるアプリケーションサーバーまたはデータベースサーバーなど、各種データベースサービスを提供し、かつ/または特定のソフトウェアアプリケーションを実行するように構成された演算装置またはシステムを表す。ネットワーク650は概して、イントラネット、ワイド・エリア・ネットワーク(WAN)、ローカル・エリア・ネットワーク(LAN)、パーソナル・エリア・ネットワーク(PAN)、またはインターネットなどを含む任意の電気通信またはコンピュータネットワークを表す。一実施例において、サーバー640および/または645は、
図1に示すRAMモジュール135を備え得る。
【0084】
図6に示すとおり、1つもしくはそれ以上の記憶装置660(1)−(N)は、サーバー640に直接取り付けられ得る。同様に、1つもしくはそれ以上の記憶装置670(1)−(N)は、サーバー645に直接取り付けられ得る。記憶装置660(1)−(N)および記憶装置670(1)−(N)は概して、データおよび/または他のコンピュータ可読命令を記憶できる任意の種類または形態の記憶装置または媒体を表す。ある実施形態において、記憶装置660(1)−(N)および記憶装置670(1)−(N)は、ネットワーク・ファイル・システム(NFS)、サーバー・メッセージ・ブロック(SMB)またはコモン・インターネット・ファイル・システム(CIFS)などの各種プロトコルを使用してサーバー640、645と通信するように構成されたネットワーク接続記憶(NAS)装置を表し得る。
【0085】
サーバー640、645は、ストレージ・エリア・ネットワーク(SAN)ファブリック680にも接続され得る。SANファブリック680は概して、複数の記憶装置間での通信をしやすくできる任意の種類または形態のコンピュータネットワークまたはアーキテクチャを表す。SANファブリック680は、サーバー640、645と、複数の記憶装置690(1)−(N)および/またはインテリジェント・ストレージ・アレイ695との間での通信をしやすくし得る。SANファブリック680は、記憶装置690(1)−(N)およびインテリジェント・ストレージ・アレイ695がクライアントシステム610、620、630にローカル接続された装置として表示されるような方法で、ネットワーク650とサーバー640、645とを介してクライアントシステム610、620、630と装置690(1)−(N)および/またはアレイ695との間での通信もしやすくし得る。記憶装置660(1)−(N)および記憶装置670(1)−(N)と同様、記憶装置690(1)−(N)およびインテリジェント・ストレージ・アレイ695は概して、データおよび/または他のコンピュータ可読命令を記憶できる任意の種類または形態の記憶装置または媒体を表す。
【0086】
ある実施形態において、かつ
図5の演算システム510に関して、
図5の通信インターフェイス522などの通信インターフェイスは、各々のクライアントシステム610、620、630とネットワーク650との間での接続を提供する目的で使用され得る。クライアントシステム610、620、630は、例えばウェブブラウザまたは他のクライアントソフトウェアを使用して、サーバー640または645上にある情報にアクセスでき得る。かかるソフトウェアにより、クライアントシステム610、620、630が、サーバー640、サーバー645、記憶装置660(1)−(N)、記憶装置670(1)−(N)、記憶装置690(1)−(N)、またはインテリジェント・ストレージ・アレイ695によってホストされたデータにアクセスでき得る。
図6は、データを交換するためのネットワーク(インターネットなど)を使用している様子を表しているが、本明細書に記載および/または図示された実施形態は、インターネットまたは特定のネットワークベースの環境に限定されない。
【0087】
少なくとも1つの一実施形態において、本明細書に開示された実施形態のうちの1つもしくはそれ以上の全体または一部分は、コンピュータプログラムとして符号化され得るとともに、サーバー640、サーバー645、記憶装置660(1)−(N)、記憶装置670(1)−(N)、記憶装置690(1)−(N)、インテリジェント・ストレージ・アレイ695、またはそれらの任意の組み合わせに読み込まれ、実行され得る。本明細書に開示された実施形態のうちの1つもしくはそれ以上の全体または一部分は、コンピュータプログラムとして符号化され、サーバー640に記憶され、サーバー645によって実行され、ネットワーク650経由でクライアントシステム610、620、630に分散され得る。
【0088】
いくつかの実施例において、
図1、
図5、および
図6の演算装置の全体または一部分は、クラウドコンピューティングまたはネットワークベースの環境の部分を表し得る。クラウドコンピューティング環境は、インターネットを介して各種サービスおよびアプリケーションを提供し得る。これらクラウドベースのサービス(SaaS、PaaS、IaaSなど)は、ウェブブラウザまたは他のリモートインターフェイスを通じてアクセスでき得る。本明細書に記載されている各種機能は、リモートデスクトップ環境またはその他任意のクラウドベースコンピューティング環境を通じて提供され得る。
【0089】
加えて、本明細書に記載されているコンポーネントのうちの1つもしくはそれ以上が、データ、物理装置、および/または物理装置の表示形態をある形態から別の形態へと変更し得る。例えば、
図1のアーカイブのモジュールは、演算装置にデータ操作をRAMに記憶および管理させるために、演算装置の振る舞いを変更し得る。
【0090】
本発明について、いくつかの実施形態と関連付けて説明してきたが、本発明は、本明細書に記載された具体的な形態に限定することを意図するものではなく、むしろ、かかる代替物、変形物、および均等物を網羅することを意図するものであり、これらは、添付の請求項によって定義される本発明の範囲内に合理的に含まれ得る。