"論理ブロックデバイスに以前に割り当てられた空きストレージブロックの割当てを解除するコマンドを発行する方法であって、前記論理ブロックデバイスが前記コマンドをサポートすると判定するステップと、割当てを解除されるべき連続したストレージブロックの1つ以上の組を識別するステップと、整合及び粒度値に基づいて前記論理ブロックデバイスに前記コマンドを発行し、それに従って前記論理ブロックデバイスが、空間再利用動作を実行するステップであって、前記コマンドが、連続したストレージブロックの少なくとも1つの組を、割当てを解除されるべきストレージブロックとして識別するステップと、を含む方法。請求項1の方法であって、更に、一組の連続したストレージブロックが前記整合及び粒度値と互換性がないと判定するステップと、データ構造内の前記一組の連続したストレージブロックを識別するステップと、を含む方法。請求項2の方法であって、更に、前記データ構造内で識別された連続したストレージブロックの2つ以上の組を合体するステップと、前記整合及び粒度値に基づいて前記論理ブロックデバイスに別のコマンドを発行するステップであって、前記別のコマンドが、前記連続したストレージブロックの合体された組を、割当てを解除されるべきストレージブロックとして識別するステップと、を含む方法。請求項2の方法であって、更に、前記データ構造内で識別されたストレージブロック上の書込み動作を検出するステップと、前記データ構造から前記ストレージブロックを除去するステップと、を含む方法。前記論理ブロックデバイスが、仮想化コンピュータシステムのハイパーバイザがそれにインタフェースされる論理装置番号LUNであることを特徴とする請求項1の方法。前記ハイパーバイザが、1台以上の仮想マシンの実行をサポートし、かつ仮想マシンの仮想ディスクからゲストストレージブロックの割当てを解除するリクエストを前記仮想マシンから受け取ることを特徴とする請求項5の方法。請求項6の方法であって、更に、割当てを解除されるべき前記ゲストストレージブロックに対応する前記LUNのストレージブロックを識別するステップを含む方法。前記LUNの前記識別されたストレージブロックが、前記割当てを解除されるべき連続したストレージブロックの1つ以上の組に対応することを特徴とする請求項7の方法。前記LUNの前記識別されたストレージブロックが、ゼロに合わせられるべきと示されることを特徴とする請求項7の方法。前記LUNの前記識別されたストレージブロックが、前記ハイパーバイザによって維持された前記LUNのストレージブロックのビットマップ内に空いていると示されることを特徴とする請求項7の方法。請求項5の方法であって、更に、別のLUNへの前記LUNに格納された仮想マシンファイルのライブの移行を実行するステップ、を含み、前記仮想マシンファイルが、割当てを解除されるべき前記1つ以上の組の連続したストレージブロック内に格納されることを特徴とする方法。前記論理ブロックデバイスが仮想マシンの仮想ディスクであり、及び、前記仮想ディスクが論理装置番号LUN内の少なくとも1つのファイルとして代表されることを特徴とする請求項1の方法。論理ブロックデバイスに以前に割り当てられた空きストレージブロックの割当てを解除するコマンドを発行する一方法を実施するためにコンピュータシステムによって実行可能な命令を備える非一時的コンピュータ可読のストレージ媒体であって、前記方法が、前記論理ブロックデバイスが前記コマンドをサポートすると判定するステップと、割当てを解除されるべき連続したストレージブロックの1つ以上の組を識別するステップと、整合及び粒度値に基づいて前記論理ブロックデバイスに前記コマンドを発行し、それに従って前記論理ブロックデバイスが、空間再利用動作を実行するステップであって、前記コマンドが、連続したストレージブロックの少なくとも1つの組を、割当てを解除されるべきストレージブロックとして識別するステップと、を含む媒体。請求項13の非一時的コンピュータ可読のストレージ媒体であって、前記方法が更に、一組の連続したストレージブロックが前記整合及び粒度値と互換性がないと判定するステップと、データ構造内に前記一組の連続したストレージブロックを識別するステップと、を含むことを特徴とする媒体。請求項14の非一時的コンピュータ可読のストレージ媒体であって、前記方法が更に、前記データ構造内に識別された連続したストレージブロックの2つ以上の組を合体するステップと、前記整合及び粒度値に基づいて前記論理ブロックデバイスに別のコマンドを発行するステップであって、前記別のコマンドが、前記連続したストレージブロックの合体された組を、割当てを解除されるべきストレージブロックとして識別するステップと、を含むことを特徴とする媒体。プロセッサ、メモリ及び論理ブロックデバイスを含むハードウェア資源と、1台以上の仮想マシンの実行をサポートし、かつエミュレートされた論理ブロックデバイスを含む前記仮想マシンの前記ハードウェア資源をエミュレートするハイパーバイザと、を備えるコンピュータシステムであって、前記ハイパーバイザは、前記論理ブロックデバイスからストレージブロックの割当てを解除するために前記論理ブロックデバイスにコマンドを発行するためのコンポーネントを含み、及び前記仮想マシンの各々は、前記エミュレートされた論理ブロックデバイスからストレージブロックの割当てを解除するために前記エミュレートされた論理ブロックデバイスにコマンドを発行するためのコンポーネントを含むことを特徴とするシステム。前記論理ブロックデバイスに対する前記コマンドが整合及び粒度値に基づいて発行され、それに従って前記論理ブロックデバイスが、空間再利用動作を実行し、及び、前記エミュレートされた論理ブロックデバイスに対する前記コマンドが整合及び粒度値に基づいて発行され、それに従って前記エミュレートされた論理ブロックデバイスが、空間再利用動作を実行することを特徴とする請求項16のコンピュータシステム。前記ハイパーバイザが、割当てを解除されるべきであるが前記論理ブロックデバイスの前記整合及び粒度値と互換性がないストレージブロックが識別される第1のデータ構造を管理し、及び前記仮想マシンの各々が割当てを解除されるべきであるが前記エミュレートされた論理ブロックデバイスの前記整合及び粒度値と互換性がないストレージブロックが識別される第2のデータ構造を管理することを特徴とする請求項17のコンピュータシステム。前記ハイパーバイザがストレージブロックに対する書込みを検出する場合に、前記ハイパーバイザは前記第1のデータ構造から前記ストレージブロックを除去し、及び、前記仮想マシンがストレージブロックに対する書込みを検出する場合には、前記仮想マシンの各々が前記第2のデータ構造から前記ストレージブロックを除去することを特徴とする請求項18のコンピュータシステム。論理ブロックデバイスに以前に割り当てられた空きストレージブロックの割当てを解除するコマンドを発行する一方法であって、仮想化コンピュータシステムのハイパーバイザによって維持されたデータ構造から解放されるべき一組の空きブロックを識別するステップと、ファイルに前記一組内の前記空きブロックを割り当て、かつ前記ファイルに割り当てられた前記空きブロックを、前記データ構造内に用いられるとしてマークするステップと、前記ファイルに割り当てられた前記空きブロックの割当てを解除するために前記論理ブロックデバイスにコマンドを発行するステップと、を含む方法。請求項20の方法であって、更に、前記ファイルに割り当てられた前記空きブロックを前記データ構造内に空いているとしてマークするステップを含む方法。前記組内の前記空きブロックの数が、全ての空きブロックの一部を代表することを特徴とする請求項20の方法。前記一部が、経験的に判定された全ての空きブロックのパーセンテージを代表することを特徴とする請求項21の方法。請求項20の方法であって、さらに、前記論理ブロックデバイスに連結されたコンピュータシステムをアップグレードするステップ、を含み、識別して、割り当ててかつ発行する前記ステップが、アップグレードする前記ステップの後で実施されることを特徴とする方法。前記コンピュータシステムが、1台以上の仮想マシンの実行をサポートするハイパーバイザを含み、及び前記コンピュータシステムが、シンプロビジョニングをサポートしないハイパーバイザから、シンプロビジョニングをサポートするハイパーバイザにアップグレードされることを特徴とする請求項24の方法。識別して、割り当ててかつ発行する前記ステップが、前記コンピュータシステム内で動作する空間監視プロセスによって周期的に起動されることを特徴とする請求項25の方法。識別して、割り当ててかつ発行する前記ステップが、前記仮想マシンを管理するサーバからのコマンドに応答して実施されることを特徴とする請求項25の方法。識別して、割り当ててかつ発行する前記ステップが、手動のユーザー入力に応答して実施されることを特徴とする請求項25の方法。0005しかしながら、薄く供給された仮想ディスク及び薄く供給されたLUNの使用によってさえ、ストレージ非効率性が淀んだstaleデータの累積、即ち、以前に用いられて現在使っていないが、割り当てられたまま残るディスクブロック、によって生じるおそれがある。例えば、ゲストオペレーティングシステムによって仮想ディスク内の、ドキュメントの編集中にバックアップとして作り出された一時ファイルのようなファイルの削除は、一般に、一時ファイルに対応する実際のデータブロックの解放に結びつかない。ゲストオペレーティングシステムが例えば、ゲストファイルシステムのビットマップ内のビットをクリアすることによってそれ自体のゲストファイルシステム内の削除された一時ファイルに関する解放されたデータブロックをそれ自体で追跡することができるとはいえ、ゲストオペレーティングシステムは、それが一時データファイルを削除したディスクが実際にはそれ自体でファイルである仮想ディスクであることを知らない。従って、仮想ディスクの一部分即ち解放されたデータブロックのゲストファイルシステムのビットマップを格納する仮想ディスクの部分がゲストオペレーティングシステムによって一時ファイルの削除の際に変更されてもよいとはいえ、削除された一時ファイルの実際のデータブロックに対応する仮想ディスクの部分は、仮想化ソフトウェアによって仮想ディスクからLUNへ実際には解放されない。仮想ディスクのこの種の淀んだ部分は対応するゲストオペレーティングシステムによって利用されず、かつまた、代替用途例えば、異なる仮想マシン、その他用の異なる仮想ディスクの一部として再割当されるのための仮想化ソフトウェアに利用可能でないので、この振る舞いはストレージ非効率性に結びつく可能性がある。00061台以上の仮想ディスク及び他のVM構成ファイルを含む仮想マシンディスクファイルのソースLUNから宛先LUNへのライブの移行を含むStoragevMotion商標として知られるプロセスは、薄く供給されたLUN内に累積された淀んだデータの別の例を提供する。StoragevMotion商標中に、仮想マシンディスクファイルに対応する実際のデータブロックが、ソースLUNから宛先LUNにコピーされ、及び、コピーの終わりで、このVMをサポートするLUNがソースLUNから宛先LUNに原子的に切替えられる。原子的切替えの後、ソースLUN内の仮想マシンディスクファイルに対応する実際のデータブロックは、もはや必要でない。仮想化ソフトウェアがそれ自体でこれらのデータブロックを追跡し、かつ、例えばソースLUNから仮想マシンディスクファイルを実際に削除することによって、空きfreeとしてそれらをマークすることができるとはいえ、仮想マシンディスクファイルのこれらの空きデータブロックに対応するソースLUNの部分は、LUNからストレージアレイへ実際には解放されない。仮想化ソフトウェアが例えば、新規な仮想マシンディスクファイルを別の仮想マシン、その他に割り当てることによって代替用途のためのソースLUN内に、解放されたデータブロックをすばやく再割当するならば、これは受け入れられるかもしれない。しかしながら、解放されたデータブロックが未割り当てのままである場合において、LUNのこの種の淀んだ部分は例えば、この種の淀んだ部分が、ストレージアレイマネージャによって、ストレージ圧力を経験しているかもしれない、異なる薄く供給されたLUNに再割当される可能性があるのでシンプロビジョニングから得られるストレージ空間効率を小さくする。0007本発明の1つ以上の実施態様が、支持されるべきこの種の技術から利益が得られることを可能にするために、シンプロビジョニングのような、ストレージ空間最適化法を使用するストレージデバイスに対する、システムソフトウェアインタフェースを提供する。この種のインタフェースは、ハイパーバイザが、LUNが薄く供給されたかどうかのような、LUNの機能を発見することを可能にするために仮想化コンピュータシステムのハイパーバイザ内に、及び、更に、VMが、仮想ディスクが薄く供給されたかどうかのような、仮想ディスクの機能を発見することを可能にするために、仮想化コンピュータシステムのVM内に設けられてもよい。これらの機能の発見は、論理ブロックデバイス、即ちLUN又は仮想ディスクに以前に割り当てられたブロックの割当てを解除する動作のような特定の動作を実行するように、ハイパーバイザ又はVMが下位ストレージデバイスに指示することを可能にし、下位ストレージデバイスがその中で実現されるストレージ空間最適化法から利益を得続けることができるようにする。0008本発明の一実施態様に従う一コンピュータシステムは、プロセッサ、メモリ及び論理ブロックデバイスを含むハードウェア資源、及び1台以上の仮想マシンの実行をサポートしてかつエミュレートされた論理ブロックデバイスを含む仮想マシンのためのハードウェア資源をエミュレートするハイパーバイザを含む。ハイパーバイザは、論理ブロックデバイスからストレージブロックの割当てを解除するために論理ブロックデバイスにコマンドを発行するためのコンポーネントを含み、及び仮想マシンの各々は、エミュレートされた論理ブロックデバイスからストレージブロックの割当てを解除するためにエミュレートされた論理ブロックデバイスにコマンドを発行するためのコンポーネントを含む。0009本発明の一実施態様による、論理ブロックデバイスに以前に割り当てられた空きストレージブロックの割当てを解除するコマンドを発行する一方法は、論理ブロックデバイスがコマンドをサポートすると判定するステップと、割当てを解除されるべき連続したストレージブロックの1つ以上の組を識別するステップと、論理ブロックデバイスがそれに従って空間再利用動作を実行する整合及び粒度値に基づいて論理ブロックデバイスにコマンドを発行するステップであって、このコマンドが、連続したストレージブロックの少なくとも1つの組を、割当てを解除されるべきストレージブロックとして識別するステップと、を含む。0010本発明の別の実施態様による、論理ブロックデバイスに以前に割り当てられた空きストレージブロックの割当てを解除するコマンドを発行する一方法は、仮想化コンピュータシステムのハイパーバイザによって維持されたデータ構造から解放されるべき一組の空きブロックを識別するステップと、この組内の空きブロックをファイルに割り当てて、かつファイルに割り当てられた空きブロックを、このデータ構造で用いられたとしてマークするステップと、ファイルに割り当てられた空きブロックの割当てを解除するために論理ブロックデバイスにコマンドを発行するステップと、を含む。0011本発明の実施態様は、コンピュータシステムによって実行される時、コンピュータシステムが上述の方法の1つを実行するようにさせる命令を格納する非一時的コンピュータ可読のストレージ媒体を更に含む。0025図1は、1つ以上の実施態様に従う仮想化コンピュータアーキテクチャ100を示すブロック図である。仮想化コンピュータアーキテクチャ100は、1台以上のストレージアレイ130を含む共有ストレージシステムにネットワーク120経由で接続される複数のサーバ110を含む。サーバ110はいくつあってもよく、それぞれが、任意の数のストレージアレイ130上に格納されるデータにアクセスする1台以上の仮想マシンを有する汎用コンピュータシステムを備えていてもよい。ネットワーク120は、広域ネットワーク、ローカルエリアネットワーク又は、FibreChannel、iSCSI、その他のような、ストレージアレイ130に特に適しているプロトコルをホストするネットワークであってもよく、かつ1個以上のスイッチを備えていてもよい。ストレージアレイ130は、ネットワーク接続ストレージNASファイラ又はストレージエリアネットワークSANを介したブロックベースデバイスのような任意のタイプであってもよい。ストレージアレイ130が典型的に複数のディスクから構成されるとはいえ、固体不揮発性ストレージデバイスの価格が下落するにつれて、それらがますます回転ディスクストレージ媒体に取って代わると認識されなければならない。従って、用語ディスクの使用は、本願明細書において、回転ディスクストレージ媒体だけに限定されると解釈されるべきでなく、また、固体ディスク又はSSDとして知られるようになっているものも含まれる。0026仮想化コンピュータアーキテクチャ100は、管理サーバ148によって管理され、それは、中央サーバ内に又は代わりとしてサーバ110の1つの内に存在して実行するコンピュータプログラムである。管理サーバ148は、サーバ110の各々と通信し、かつ、サーバ110間の負荷平衡及びストレージアレイ130間の作業負荷平衡のような仮想化コンピュータアーキテクチャ100の管理業務を実施する。0027図2A及び2Bは、1つ以上の実施態様による、サーバ110のいずれかの代表であるサーバ200及び、ストレージアレイ130のいずれかの代表であるストレージアレイ250のブロック図をそれぞれ記載する。サーバ200は、従来の、典型的にサーバ-クラスの、ハードウェアプラットホーム202上で構成されていてもよい。図2Aに示すように、サーバ200はストレージアレイ250にサーバ200を接続することを可能にするHBA204及びNIC201を含む。図2Aに更に示すように、ハイパーバイザ208がハードウェアプラットホーム202上にインストールされ、及びそれが、複数の仮想マシンVM2121-212Nがその中で並行してインスタンス化されて実行されることができる仮想マシン実行空間210をサポートする。この種の各仮想マシン2121-212Nは、アプリケーション218を実行可能なゲストオペレーティングシステムOS216のインストールをサポートする仮想ハードウェアプラットホーム214を実現する。ゲストOS216の例はMicrosoftWindows登録商標、Linux登録商標等のような、周知のコモディティーオペレーティングシステムのいずれをも含む。それぞれの例において、ゲストOS216はネイティブのファイルシステムレイヤ図2A内に図示せず、例えばNTFS又はext3FSタイプファイルシステムレイヤのいずれかを含む。これらのファイルシステムレイヤは、ゲストオペレーティングシステム216の観点から、データストレージHBAにアクセスするために仮想ハードウェアプラットホーム214とインタフェースするが、それは、実際はディスクストレージサポートの外観を提供する仮想ハードウェアプラットホーム214によって実現される仮想HBA220であり実際は、複数の仮想ディスク即ち仮想ディスク222A-222X、システムハードウェアの仮想化に透過的なゲストOS216の実行を可能にする。特定の実施態様において、仮想ディスク222A-222Xは薄く供給されることができ、かつ、ゲストOS216の観点から、仮想マシンに接続するためのSCSI規格、又はIDE、ATA及びATAPIを含む、当業者に公知のその他の適切なハードウェア接続インタフェース規格をサポートするように見える。0028ゲストオペレーティングシステム216の観点から、ファイルシステム関連のデータ転送及び制御動作を実現するためにこの種のゲストオペレーティングシステム216によって開始されるファイルシステム呼出しは、最終的な実行のために仮想ディスク222A-222Xに経路を定められるように見えるとはいえ、実際は、この種の呼出しはハイパーバイザ208による動作を調整するために必要な仮想システムサポートを実現する補助仮想マシンモニタVMMレイヤ2241-224Nに仮想HBA220を通して処理されて通される。特に、HBAエミュレータ226は、ストレージアレイ250に接続する本当のHBA204又はNIC201に、その種々のレイヤを通して最終的にこの種の動作を通すハイパーバイザ208によって、データ転送及び制御動作が正しく処理されることを機能的に可能にする。SCSIサポートされた仮想デバイス実現を想定して、当業者が他のハードウェアインタフェース規格を用いるオプションを認識するとはいえ、ハイパーバイザ208のSCSI仮想化レイヤ228が、VMMレイヤ2241-224Nからデータ転送及び制御動作を例えば、SCSI準拠仮想ディスクを意図されるSCSIコマンドの形で受け取り、かつSCSI準拠仮想ディスクを代表するVMFS230の管理下で、ストレージアレイ250内のLUNの1つの内に格納されているファイルにアクセスするために、仮想マシンファイルシステムVMFS230によって理解されるファイルシステム動作に、それらを変換する。一実施態様において、代替仮想ディスクファイルフォーマットが他の実施態様で用いられてもよいことが認識されるべきであるとはいえ、仮想ディスクを代表するファイルが仮想ディスクのためのVMware社によって広められるVMware仮想ディスクVMDKファイルフォーマットに適合する。0029次に、SCSI仮想化レイヤ228は、VMFS230に、これらのファイルシステム動作を発行する。VMFS230は、一般に、ストレージアレイ250によって公開されるLUN上に格納される例えば、仮想ディスクを代表する.vmdkファイルのようなファイルの作成、使用及び削除を管理する。一実施態様においてVMFS230として機能することができるクラスタ化されたファイルシステムの一例が、特許文献1内に記載されており、その内容全体を、本願明細書に引用したものとする。VMFS230は、SCSI仮想化レイヤ228から受け取られるファイルシステム動作をボリューム例えばLUNブロック動作に変換し、かつボリュームブロック動作を論理ボリュームマネージャ232に与える。論理ボリュームマネージャLVM232は、典型的にドライバとファイルシステムレイヤとの間の中間層として実現され、かつボリューム指向仮想化並びにHBA204及びNIC201を通してアクセス可能なLUNの管理をサポートする。LVM232は、LUNブロック動作に基づいてデバイスアクセスレイヤ234に生のSCSI動作を発行する。データアクセスレイヤ240は、ストレージアレイ250を発見しかつコマンド待ち行列及びスケジューリングポリシーを生のSCSI動作に適用するデバイスアクセスレイヤ234と、ストレージアレイ250とインタフェースするHBA204及びNIC201の入出力インタフェースを理解し、かつデバイスアクセスレイヤ234から、ストレージアレイ250に送り届けられるべきHBA204又はNIC201に生のSCSI動作を送るデバイスドライバ236と、を含む。0030図2A内の仮想化コンポーネントを記述するために用いられる種々の用語、レイヤ及びカテゴリ化は、本発明のそれらの機能又は趣旨若しくは有効範囲から逸脱することなく、異なって参照されてもよいと認識されるべきである。例えば、各インスタンス化されたVMに対して別々のVMMが存在するので、VMM224はVM212とハイパーバイザ208との間の別々の仮想化コンポーネントと考えてもよいこの種の概念において、それはそれ自体で仮想化カーネルコンポーネントと考えてもよい。代わりに、この種のVMMが仮想マシンに対するハードウェアエミュレーションコンポーネントを含むので、各VMMはその対応する仮想マシンのコンポーネントと考えてもよい。この種の代替概念において、例えば、仮想ホストバスアダプタ220が図2Aから除去されるように即ち、その機能がホストバスアダプタエミュレータ226によって達成されるので、仮想ハードウェアプラットホーム214として記述される概念上のレイヤがVMM224に結合されていてもよい。0031図2Bで図示するように、ストレージアレイ250のストレージアレイマネージャ251は、そのLUNの1つに対応する生のSCSI動作を受け取り、かつその際に動作されるストレージアレイ250のスピンドル内でそれらを適切なエクステントに分割する。1台以上のプログラムされたストレージプロセッサを代表するストレージアレイマネージャ251は、一般にストレージアレイ250の外部に対する通信エージェントとして機能し、かつ、ストレージアレイ250内に存在する、図2B内ではスピンドル252A-252Nと称される、物理的な、典型的にはディスクドライブベースのストレージユニットの仮想化を実現する。論理的観点から、これらのスピンドルの各々は、固定したサイズのエクステント254のシーケンシャルなアレイと考えることができる。本願明細書において先にLUN256A-256M論理装置番号と称された一組の仮想SCSIブロックデバイスに分割されてもよい連続した論理ストレージ空間としてディスクドライブによって与えられる集積された物理ストレージ空間を見る能力をサーバ200に公開することによって、ストレージアレイマネージャ251は、ディスクドライブの実際のスピンドル及びエクステントのアドレスに読出し及び書込み動作を向ける複雑さを取り去る。LUN256A-256Mのこの種の連続した論理ストレージ空間へのスピンドル252A-252Nの仮想化は、論理ボリュームのアドレス空間によって代表される集積された物理ストレージ空間のより効率的な利用を提供することができる。ストレージアレイマネージャ251は、エクステントの順序リストへのLUN256A-256Mの各々に対するマッピング以下に、また、エクステント-マッピングと称するを含むメタデータ255を維持し、この種の各エクステントはスピンドル-エクステント対<spindle、extent>として識別可能であり、従って、種々のスピンドル252A-252Nのいずれかの内に置かれていてもよい。0032特定の実施態様において、LUNを割り当てる時、ストレージアレイ250はシンプロビジョニングthinprovisioningと呼ばれるストレージ空間最適化法を使用することができる。LUNが薄くthinly供給される時、ストレージアレイ250によって報告されるLUNの論理サイズは、そのLUNを最初に支持する物理空間の合計より大きくてもよい。LUNの全てのコンシューマは、LUNの論理サイズを見るだけである。書込み動作が薄く供給されたLUNの以前に未割り当てのブロックに発行されるにつれて、消費された実際の物理空間の合計は増大し、ある時点で、LUNは物理空間が尽きるかもしれない。同様に、図2A内に記載されるような仮想化環境において、ストレージアレイ250のLUN上に格納される仮想ディスク222は、例えばハイパーバイザ208によって又は特定の実施態様では管理サーバ148によって、薄く供給されるように構成されていてもよい。ゲストOS216の観点から、この種の薄く供給された仮想ディスク222は固定論理サイズを有するとして認められるが、実際は、VMFS230がLUNストレージ空間を仮想ディスク222例えば、.vmdkファイルに動的に割り当て、そうすると、任意の所定の時間で、仮想ディスク222を支持するLUN内の実際のストレージ空間は論理サイズ未満かもしれない。0033図3は、ハイパーバイザ208の論理ブロックデバイスとして動作する、LUNの構成特性を集めるためにハイパーバイザ208によって実施される一方法を例示する流れ図である。LUNのこれらの構成特性は、LUNにUPMAPコマンドを発行することによって、LUNからストレージアレイ250のようなLUNをサポートするストレージシステムへ戻るストレージ空間を再利用するreclaimために以下に記載する技法で用いられてもよい。図3で図示するように、ステップ302で、ハイパーバイザ208はLUNにSCSI読取り容量コマンド例えば16ビット版のコマンドを発行する。ステップ304で受け取られるLUNの応答は、ビットの設定によって示されるように、LUNがシンプロビジョニングをサポートするか否かの表示を含むそれは、一実施態様において、シンプロビジョニング対応thinprovisioningenablingTPEビットとして既知である。ステップ306で、ハイパーバイザ208が、LUNがシンプロビジョニングをサポートする例えば、TPEビットが設定されると判定するならば、この方法はステップ308に続く。ステップ306で、ハイパーバイザ208が、LUNがシンプロビジョニングをサポートしない例えば、TPEビットが設定されないと判定するならば、この方法は終了する。0034ステップ308で、ハイパーバイザ208はシンプロビジョニングに対するLUNのサポートを記録し、かつLUNに例えば、一実施態様において問合せのタイプとして0xB0VitalProductDataコードを利用してSCSIInquiryコマンドを発行する。ステップ310で受け取られてかつステップ312で記録されたLUNの応答は、LUNがUNMAPコマンド実施態様によってはUNMAPビットbitによって示されるをサポートするか否かに関する指示を含み、及びサポートがあるならば、応答はさらにマップ解除コマンドと共に用いられるべきいくつかのパラメータのレポートを含む。その最も単純な形において、一実施態様において、UNMAPコマンドはLUNによってマップ解除されるべき、かつLUNをサポートする下位ストレージシステムに解放されるべきブロックのリストを特定する。そのような実施態様において報告されるパラメータは、DGLUNがデータを管理する粒度、DoffsetLUNがマップ解除コマンドを受け取るのを好むオフセットで表現される整合パラメータ、及びNMAX_D単一のUNMAPコマンドで特定可能な<offset,length>対の最大数、を含む。例えば、Doffsetが4KBの値を有するならば、その時、LUNは、4KBのアドレスの倍数例えば、0KB、4KB、8KB、12KB、その他のアドレスで始まる、UNMAPコマンドのような、SCSI動作を受け入れる。DGがその時512KBの値を有するならば、LUNは512KBの倍数であるブロックサイズを特定するSCSI動作を受け入れる。この種の例において、LUNはLUNの始まりから12KBのオフセットに対応するアドレスから始まる1024KBの連続ブロックをマップ解除するためにUNMAPコマンドを受け入れるが、LUNの始まりから1KB、2KB、3KB、その他のオフセットに対応するアドレスから始まる任意の連続ブロック、又は連続したブロックサイズが512KB未満であるところをマップ解除するためにUNMAPコマンドを受け入れない。値DG、Doffset及びNMAX_Dが、LUNをサポートする下位ストレージシステムのストレージベンダーによって設定されるか又は規定されると認識されるべきである。0035図4は、仮想マシン212のゲストOS216の論理ブロックデバイスとして動作する、仮想ディスク222の構成特性を集めるためにゲストOS216によって実施される一方法を例示する流れ図である。認識されるはずであるように、ハイパーバイザが、図3に記載のその構成特性に対してストレージアレイ内のLUNを問い合わせるよりむしろ、図4において、仮想マシン212内のプロセス例えばゲストOS216、又はゲストOS216その他内へロードされたSCSIデバイスドライバ内の設定ルーチン内の、空きブロックを追跡するために開発されたユーザレベルプロセスが、その構成特性に対して仮想ディスク222例えばそのデータがLUN内にファイルとして実際に格納されたエミュレートされたSCSIデバイスを問い合わせるという点を除けば、図4は図3と同じステップを繰り返す。仮想ディスクがハイパーバイザ208によってエミュレートされているので、ハイパーバイザ208は仮想マシン212内の問合せプロセスに応答して仮想ディスクの代理として仮想ディスクの構成特性を提供する。仮想ディスクのこれらの構成特性は、仮想ディスクにUNMAPコマンドを発行することによって仮想ディスクがファイルとして格納されるLUNへ、仮想ディスクからストレージ空間を再利用するために以下に記載する技法で用いられてもよい。図4で図示するように、ステップ402で、ゲストOS216は仮想ディスクにSCSI読取り容量コマンド例えば16ビット版のコマンドを発行する。ステップ404で受け取られる仮想ディスクの応答は、ビットの設定それは、一実施態様において、シンプロビジョニング対応TPEビットとして既知であるによって示されるように、仮想ディスクがシンプロビジョニングをサポートするか否か、の指示を含む。ステップ406で、ゲストOS216が、仮想ディスクがシンプロビジョニングをサポートする例えば、TPEビットが設定されると判定するならば、この方法はステップ408に続く。ステップ406で、ゲストOS216が、仮想ディスクがシンプロビジョニングをサポートしない例えば、TPEビットは設定されないと判定するならば、この方法は終了する。0036ステップ408で、ゲストOS216はシンプロビジョニングに対する仮想ディスクのサポートを記録し、かつ仮想ディスクに例えば、一実施態様において問合せのタイプとして0xB0VitalProductDataコードを利用してSCSIInquiryコマンドを発行する。ステップ410で受け取られてかつステップ412で記録された仮想ディスクの応答は、仮想ディスクがUNMAPコマンド実施態様によってはUNMAPビットによって示されるをサポートするか否かに関する指示を含み、及びサポートがあるならば、応答はさらにUNMAPコマンドと共に用いられるべきいくつかのパラメータのレポートを含む。その最も単純な形において、一実施態様において、UNMAPコマンドは仮想ディスクによってマップ解除され、かつ仮想ディスクが格納されているLUNに解放されるべきブロックのリストを特定する。そのような実施態様において報告されるパラメータは、VGそこでハイパーバイザ208がデータを管理する粒度、Voffsetハイパーバイザ208がUNMAPコマンドを受け取るのを好むオフセットとして表現される整合パラメータ、及びNMAX_V単一マップ解除コマンドで特定可能な<offset,length>対の最大数、を含む。仮想ディスクに対するVG及びVoffsetは、LUNに対するDG及びDoffsetに類似しており、従って、前述のようにDG及びDoffsetに同様に用いられる。0037図5は、例えば、VMがその仮想ディスク内に格納されるファイルを削除する時の、VMによって開始されるストレージ空間再利用の一方法を例示する流れ図である。認識されるべきことは、ファイルが、連続していてもしていなくてもよい一連のファイルブロックとして、仮想ディスク例えば、それはそれ自体でLUN内に格納されたファイルである内に表されること、及び、図5の方法が、ファイルセグメントとして本願明細書では呼ばれる、連続したファイルブロックの各組に対して実行されること、である。一実施態様において、図5のステップが、ゲストOS216内の削除されたファイルに関する空きファイルシステムブロックを監視してかつ識別するために開発されたユーザレベルプロセスによって実行される。例えば、この種の監視プロセスは、最近削除されたファイルに関する空きブロックを認識する際に定期的な間隔で図5の方法を実行してもよく、又は仮想ディスクからファイルの削除の際にゲストOS216によって通知されてもよい。ステップ508で、仮想ディスクによって公開された、図4のステップ410で受け取られたUNMAPビットが調べられる。このビットが設定されないならば、この方法はこの種の判定の後で終わる。ステップ508で、仮想ディスクによって公開されたUNMAPビットが設定されるならば、この方法はステップ510へ続き、そこで仮想ディスクによって公開されたオフセットに準拠する例えば、その倍数であるオフセットで始まる削除されたファイルのファイルセグメントの長さ又は、代わりとして、ゲストOS216によって示された多数の連続した空きファイルシステムブロックの長さ、Voffsetこの後L1と称するこの種のファイルセグメントの長さが、決定される。従って、Voffsetと自然に整合されないファイルセグメントは、このステップを実施することによってVoffsetと整合するようにされる。L1がステップ510で決定された後で、ステップ514で、L1は仮想ディスクによって公開された粒度、VGと比較される。L1<VGならば、次にステップ516で、ファイルセグメントが仮想ディスクに対するマップ解除コマンドをサポートするために十分な連続したファイルブロックを含まないと判定され、及びそのようなものとして、監視プロセスによってその後識別されることができるこの種のファイルブロックに隣接する他の空きブロックとの、可能な合体のためにファイルセグメントのファイルブロックが、記憶される例えば、特別なデータ構造内のファイルブロックを識別する。記憶されたファイルブロックは、そのL1がまたVG未満である他のファイルセグメントから、ファイルブロックに隣接していてもよいので、ステップ516が実施される。その場合は、ファイルブロックは、仮想ディスクによって公開された粒度に固着する単一UNMAPコマンド内の可能な内包に対して合体される。しかしながら、記憶されたファイルブロックは、また、例えば、監視プロセスによって書込みに対して監視され、かつ、この種のファイルブロックはUNMAPコマンドに対してもはや空いてないので書込みがそれに対して発行されるならば、もはや記憶されない例えば、特別なデータ構造から除去される。ステップ510への破線の矢印によって示されるように、合体されたファイルブロックの長さ、L1はステップ510で決定される。ステップ514で、それらが条件、L1<VGを満たすかどうか見るために、L1がもう一度確認される。0038L1がVG以上であるならば、UNMAPコマンドと共に用いられる<offset,length>ディスクリプタがステップ518で生成される。次いで、ステップ520で、処理すべきより多くのファイルセグメントがあるかどうかが、判定される。もしあれば、流れは、ステップ510に戻る。これ以上ないならば、1つ以上の<offset,length>ディスクリプタの列を備えたUNMAPコマンドが生成されてステップ522で仮想ディスクに送られる。ステップ518で生成されたディスクリプタの数が仮想ディスクによって公開された最大数、NMAX_Vより大きいならば、UNMAPコマンドは複数のUNMAPコマンドに分割されて別々に仮想ディスクに送られる。この方法は、ステップ522の後で終わる。0039例えば、VG=1MB及びVoffset=4KBであり、ステップ510で分析されたファイルセグメントが仮想ディスクの始まりから5KBに対応するアドレスから始まって1.5MBの長さ、L1を有したならば、その時、ディスクリプタが仮想ディスクによって公開された粒度及び整合パラメータに準拠するように、UNMAPコマンドのために生成されたこのファイルセグメントに対する対応するディスクリプタは<8KB、1MB>である。即ち、ファイルセグメントのその部分がVoffset即ち4KBの倍数であるアドレスから始まらないので、仮想ディスクは5KBから8KBまでのファイルセグメントの初めの3KBの部分をマップ解除することができない。同様に、テール部分がファイルセグメントの第2の1MBの部分内に納まるので、仮想ディスクはファイルセグメントのテール部分即ちおよそ最後の0.5MBをマップすることができず、仮想ディスクは1MBの倍数でマップ解除することができるだけである。0040図6は、例えば、図5のステップ522から受け取られるVMからのUNMAPコマンドに応答してハイパーバイザ208によって開始されたストレージ空間再利用の一方法を例示する流れ図である。ステップ602で、ハイパーバイザ208、特にSCSI仮想化レイヤ228は、仮想ディスクの代わりにVMからUNMAPコマンドを受け取ってかつUNMAPコマンドを、連続していてもしていなくてもよい、一連のVMFSブロックに概念的に対応する、VMFSファイルオフセット及び長さに変換する。VMFSブロックはこの後空きVMFSブロックと称され、及び、空きVMFSブロックの各連続したセグメントはVMFSブロックセグメントと称される。次いで、空きVMFSブロックが割り当てられたままにしておかれるべきであるかどうか、判定がステップ604でなされる。例えば、仮想ディスクが薄く供給されなくてその代わりに予め割り当てられる時、空きVMFSブロックを割り当てられたままにしておくことがステップ604で決定される。従って、空きVMFSブロックが割り当てられたままにしておかれるべきであるならば、仮想ディスクを代表するVMFSファイルのメタデータ即ちアイノードが、空きVMFSブロックが、特許文献2にて説明され、その内容全体を本願明細書に引用したものであるように、ゼロ合わせされるべきとして示されるようにアップデートされる。この方法は、ステップ605の後で終わる。他方では、空きVMFSブロックが割当てを解除されるべきであることがステップ604で決定されるならば、空きVMFSブロックは、仮想ディスクを代表するVMFSファイルから、ステップ606で割当てを解除される。論理サイズが同じのままの場合であっても、この割当て解除は仮想ディスクに対応するVMFSファイルのアイノード内に記録されたように仮想ディスクに割り当てられたブロックの物理サイズを減少させる。この割当て解除の一部として、VMFS230によって管理されたビットマップデータ構造が、割当てを解除されたVMFSブロックが目下空いていることを示すようにアップデートされる。この割当て解除がLUNへ仮想ディスク例えば薄く供給された仮想ディスクから空きブロックを実質的に解放するので、ハイパーバイザ208によって実行されるように、それが仮想ディスク上のVMからのUNMAPコマンドの満足を代表する点に留意する必要がある。しかしながら、特定の実施態様において、仮想ディスクから戻る空きブロックをちょうど受け取った、かつ薄く供給されたLUNである、LUNがそれ自体で、例えば、この種の空きブロックが別のLUNによって利用されることができるようにその下位ストレージアレイへこの種の空きブロックを解放することができるかどうかを、この接合点で、判定するよう更に求められてもよい。0041実施態様によっては、ハイパーバイザ208は空きVMFSブロックを再利用する例えば、この種の空きブロックを別の仮想ディスクに割り当てるよう求めることができる。このチェックは、ステップ608でなされる。ハイパーバイザ208が空きVMFSブロックを再利用するよう求めると判定されるならば、この方法は終わる。他方では、ハイパーバイザ208が現在時刻で空きVMFSブロックを再利用するよう求めないとステップ608で判定されるならば、空きVMFSブロックを格納するLUNによって公開されたUNMAPビットは、例えば、この種の空きブロックが別のLUNによって利用可能なようにLUNがその下位ストレージアレイへ空きVMFSブロックを解放することが可能であるかどうか、判定するためにステップ610で調べられる。このビットが設定されないならば、この方法はこの種の判定の後で終わる。ステップ610で、LUNによって公開されるマップ解除ビットが設定されるならば、この方法はステップ612へ続き、そこで、LUNによって公開されたオフセットに準拠するオフセットから始まる1つのVMFSブロックセグメントの長さ、Doffsetこの後L2と称する長さが、判定される。従って、Doffsetと自然に整合されないVMFSブロックセグメントは、このステップを実施することによってDoffsetと整合するようにされる。L2がステップ612で判定された後で、L2はLUNによって公開された粒度、DGと比較される。L2<DGならば、VMFSブロックセグメント内のVMFSブロックは、ステップ616で監視されるそれへの可能な合体及び書込みに対して記憶される例えば、特別なデータ構造内のVMFSブロックを識別する。記憶されたVMFSブロックが、そのL2がDG未満である他のVMFSブロックセグメントからのVMFSブロックと隣接していてもよいので、ステップ616が実施される。その場合は、VMFSブロックは、LUNによって公開された粒度に固着する単一UNMAPコマンド内の可能な内包に対して合体される。しかしながら、記憶されるVMFSブロックは、書込みのために監視され、及び、書込みがそれに対して発行されるならば、もはや記憶されない例えば、特別なデータ構造から除去される。判定ブロック612に破線の矢印によって示されるように、それらが条件、L2<DGを満たすかどうか見るために、合体されたVMFSブロックがチェックされる。0042L2がDG以上であるならば、UNMAPコマンドと共に用いられる<offset,length>ディスクリプタがステップ618で生成される。次いで、ステップ620で、処理されるべきより多くのVMFSブロックセグメントがあるかどうかが、判定される。もしあれば、フローは、ステップ612に戻る。これ以上ないならば、1つ以上の<offset,length>ディスクリプタの列を備えたUNMAPコマンドが生成されてステップ622でLUNに送られる。ステップ618で生成されたディスクリプタの数が仮想ディスクによって公開された最大数、NMAX_Dより大きいならば、UNMAPコマンドは複数のUNMAPコマンドに分割されて別々にLUNに送られる。この方法は、ステップ622の後で終わる。0043例えば、1つのVMFSブロックセグメントが<8KB、1MB>によって記述されて、並びにDG=32KB及びDoffset=16KBならば、ディスクリプタがLUNによって公開された粒度及び整合パラメータに準拠するように、UNMAPコマンドはディスクリプタ<16KB、1MB-32KB>と共に発行される。即ち、ファイルセグメントのその部分がDoffset即ち16KBの倍数であるアドレスから始まらないので、LUNは8KBから16KBまでのVMFSブロックセグメントの初めの8KBの部分をマップ解除することができない。同様に、テール部分が32KBの粒度に準拠するにはあまりに小さいので、LUNはVMFSブロックセグメントのテール部分即ち、およそ最後の24KBをマップすることができない。0044図7は、管理サーバ148からのUNLINKコマンドに応答してハイパーバイザ208によって開始されたストレージ空間再利用の一方法を例示する流れ図である。UNLINKコマンドは、VMFS230によって維持されるファイル又はファイルの組を削除し、かつこれらのファイルに対応するVMFSブロックの割当てを解除するようにUNMAPコマンドを発行するようにハイパーバイザ208に知らせるように発行される。例えば、StoragevMotion商標が実施された後で、その結果、VMと関連する一組のファイル例えば、仮想ディスクを例えば備えるか又は含むが、ソースLUNから宛先LUNに移行され、UNLINKコマンドが、ファイルを削除し、かつ、ソースLUNから、これらのファイルに対応するVMFSブロックの割当てを解除するために管理サーバ148によって発行されてもよい。この方法はステップ702から始まり、そこで、ハイパーバイザ208がファイル又は複数ファイルのアイノードを調べることによって削除されたファイル又は削除されたファイルの組に対応するVMFSブロックセグメントを識別する。図7内に例示される残りのステップは図6の同じ番号をつけられたステップと同一であり、参照がこれらのステップに対して上述のようになされる。0045図8は、ソースホストから宛先ホストにVMをライブ移行するプロセスを開始する前に互換性チェックを実行する一方法を例示する流れ図である。薄く供給された仮想ディスクによってサポートされたVMは、好ましくは、UNMAPサポートによって薄く供給された仮想ディスクを提供することが可能でない宛先ホスト上のハイパーバイザに移行されるべきでないので、これらの互換性チェックは管理サーバ148によって実施される。これらのチェックは、ハイパーバイザのバージョンナンバをチェックすることを含む種々の方法で実行されてもよい。例えば、宛先ホスト上のハイパーバイザのバージョンナンバがシンプロビジョニングをサポートするハイパーバイザの最も低いバージョンナンバ以上であるならば、ソースホストから宛先ホストへのライブの移行が可能にされる。ライブの移行は、そうでなければ承認されない。0046図8を参照して、ステップ802で、ライブ移行されるべきVMが、識別される。このVMが薄く供給された仮想ディスクでサポートされることが、例証のために想定される。ステップ808で、宛先ホスト上のハイパーバイザも薄く供給された仮想ディスクをサポートするかどうか見るために、チェックがなされる。一実施態様において、このチェックは上記の通りにバージョンナンバに基づいてなされる。チェックが失敗するならば、準拠したハイパーバイザを備えた宛先ホストが見いだされるまで、この方法はステップ810及び812を通してループする。準拠したハイパーバイザがないならば、この方法は終了する。準拠したハイパーバイザが見いだされるならば、VMのライブの移行がステップ820で管理サーバ148によって開始される。0047図9は、LUNが用いられた容量内の特定のしきい値に到達したと管理サーバ148に通知する一方法を例示する流れ図である。LUNにより多くの空間を供給すること、UNLINKコマンドを用いてLUNに格納された、使っていないファイルを削除すること、又はLUNから別のLUNへ作業負荷例えばVMの仮想ディスクを移行し、移行された作業負荷上でUNLINKコマンドを起動することが続くような、救済策を管理サーバ148が使用できるように、この通知が与えられる。ステップ902及び904は、ストレージアレイによって実施される。ステップ906は、ハイパーバイザによって実施される。0048ステップ902は、LUNのストレージ容量が特定の閾値レベルに到達したか又は超えたかどうかを、ストレージアレイが継続的に監視していることを示す。この条件が満たされると判定するならば、それはLUNIDと共にステップ904でハイパーバイザにソフトエラーメッセージを発行する。例えば、LUNがその閾値レベルを上回ることに結びつくLUNへの任意の書込み動作は、ストレージアレイにハイパーバイザに対してソフトエラーメッセージを発行させる。ステップ906で、このソフトエラーメッセージを受け取る際に、ハイパーバイザは管理サーバ148にソフトエラーメッセージを発行する。管理サーバ148が上記の救済策を使用することができるように、ソフトエラーメッセージはLUNID及びVMFSIDを含む。0049図10は、図9のステップ906で生成されたソフトエラーメッセージを受け取る際に管理サーバ148によって善後策を実行する一方法を例示する流れ図である。ステップ1002で、管理サーバ148がソフトエラーメッセージを受け取る。次いで、ステップ1004で、管理サーバ148が、収容能力に近づいているLUNによってサポートされるVMの構成設定を調べる。本発明の実施態様によれば、VMの配備の際に特定可能な構成設定の1つが、VMをサポートするLUNが収容能力に近づいている時、どんな救済策がとられるべきであるかである。選択肢の三つが、StoragevMotion商標、スナップショット及びパワーオフである。1006の判定ブロックの後、StoragevMotion商標がこの種の設定で指定されるならば、ステップ1008が実行され、スナップショットがこの種の設定で指定されるならば、ステップ1010が実行され、及び、パワーオフがこの種の設定で指定されるならば、ステップ1012が実行される。ステップ1008で、管理サーバ148はソースLUN即ち収容能力に近づいているLUNと宛先LUNとの間のStoragevMotion商標を開始する。StoragevMotion商標の完了の後、UNLINKコマンドがソースLUNから移行されたファイルを削除するために用いられる。ステップ1010で、VMファイルのスナップショットが宛先LUN上に作り出され、及び、ソースLUN上のVMファイルが読取り専用にマークされる。ステップ1012で、管理サーバ148はVMをパワーオフする。0050何の救済策も使用されないか、又はそれらがあまりに遅く配備されるならば、又は救済策が配備されるにもかかわらず、書込み動作を実行する時、LUNは空間が尽きるかもしれない。この条件の下で、ハードエラーメッセージがストレージアレイによって発行される。より多くの空間がLUNに供給されるか、又はLUN内の追加的な空間が再利用されるまで、書込み動作を発行したVMが停止可能なように、このエラーメッセージはエラー条件を引き起こした書込み動作のIDを含む。エラーを引き起こしたVMだけを停止させることによって、VM分離は保たれ、及び、ストレージのために同じLUNを使用している他のVMは動作中のままであることができる。0051図11は、書込み動作を実行する間、LUNが、空間が尽きる時引き起こされるエラーを検出して処理する一方法を例示する流れ図である。ステップ1102、1104及び1106は、ストレージアレイによって実施される。ステップ1108は、ハイパーバイザによって実施される。ステップ1102で、ストレージアレイはLUN上の書込み動作を受け取って実行する。書込み動作の実行中に、判定ブロック1104で判定されるようにLUNが、空間が尽きるならば、ハードエラーメッセージがステップ1106でハイパーバイザに発行される。エラーメッセージが、エラーを引き起こした書込み動作のIDを含む。ステップ1108で、ハイパーバイザが書込み動作を発行したVMを非活性化する。通常の環境の下で、VMの非活性化はアラートメッセージが管理サーバ148に伝送されることに結びつき、及び、管理サーバ148は非活性化されたVMを再開させる前にそれに応答して救済策を実現することができる。救済策は、非活性化されたVMの仮想ディスク又は他のVMの仮想ディスクさえを別のLUNに移行することを目的として、LUNにより多くの空間を供給してかつLUN内の追加的な空間を再利用し、移行された仮想ディスク上でUNLINKコマンドを起動して、特定のVMをパワーオフするか又は他のファイルを削除することが続く、ことを含む。0052図12は、本発明の1つ以上の実施態様に従うシステムソフトウェアインタフェースを有しないバージョンから有するバージョンにアップグレードされたハイパーバイザに対する論理ブロックデバイスとして動作するLUNから、ストレージ空間を遡及して再利用する一方法を例示する流れ図である。ハイパーバイザアップグレードが実施された後で、この方法が実施される。ステップ1202で、ハイパーバイザはLUN内のその空きVMFSブロックの合計サイズを決定する。ステップ1204で、ハイパーバイザはLUN内のその空きVMFSブロックの合計サイズのXである一時ファイルを作り出す。ステップ1206で、一時ファイルが削除され、及び、ハイパーバイザが一時ファイルの全てのブロックに対してUNMAPコマンドを発行する。その結果、一時ファイルに対応するVMFSブロックがビットマップ内に空いていると示唆されるように、ハイパーバイザが全てのVMFSブロックの使用を追跡するように維持するビットマップがアップデートされる。Xパラメータが設定可能であり、かつ、100に等しいならば、ハイパーバイザの空きVMFSブロックの全てがLUNから割当てを解除され、LUNの物理サイズをその理論上の最小値に減少させる。しかしながら、図12の方法が実施される間に、追加的な空間を必要とするLUNに、書込みがあるかもしれない。従って、経験的に決定されることができる一定量の空間が、この種の書込みを処理するように空いたまま保たれる。0053本発明の1つ以上の実施態様において、SCSI読取り容量及びSCSI問合せを含む、LUNにハイパーバイザによってかつ仮想ディスクにゲストオペレーティングシステムによって発行されるコマンド、及びハイパーバイザにストレージアレイによって発行されるエラー、例えば図9と関連して記載されているソフトエラー及び図11と関連して記載されているハードエラーは、T10SCSIプロトコル内のコマンド及びエラーコードの組の一部である。00541つ以上の実施態様が理解の明快さのためにいくらか詳細に本願明細書に記載されたとはいえ、特定の変更及び修正が本発明の趣旨から逸脱することなく、なされることができると認識されるべきである。0055本願明細書に記載されている種々の実施態様は、コンピュータシステムに格納されるデータを含む種々のコンピュータ実行動作を用いてもよい。例えば、これらの動作は通常物理量の物理的操作を必要とすることができ、必ずしもではないが、これらの量は電気又は磁気信号の形をとることがあり、そこで、それら又はそれらの表現は、格納される、転送される、組み合わせられる、比較されるか又はさもなければ操作されることが可能である。更に、この種の操作は、生成する、識別する、決定するか又は比較することのような、用語でしばしば参照される。本発明の1つ以上の実施態様の一部を形成する本願明細書に記載されている任意の動作が有用なマシン動作である。加えて、本発明の1つ以上の実施態様がこれらの動作を実行するためのデバイス又は装置にもまた関する。装置は特定の必要とされた目的のために特別に構成されてもよく、又は、それがコンピュータに格納されるコンピュータプログラムによって選択的に活性化されたか又は構成された汎用コンピュータであってもよい。特に、種々の汎用マシンが本願明細書の教示に従って書かれたコンピュータプログラムと共に用いられてもよく、又は、必要とされた動作を実行するためにより専門の装置を構成することがより都合がいい場合がある。0056本願明細書に記載されている種々の実施態様は、携帯デバイス、マイクロプロセッサシステム、マイクロプロセッサベースの又はプログラム可能な民生用電子機器、ミニコンピュータ、メインフレームコンピュータ等を含む他のコンピュータシステム構成で実践されてもよい。0057本発明の1つ以上の実施態様が、1つ以上のコンピュータ可読の媒体内に具体化された1つ以上のコンピュータプログラムとして又は1つ以上のコンピュータプログラムモジュールとして実現されてもよい。用語コンピュータ可読の媒体は、その後にコンピュータシステムに入力可能なデータを格納することができる任意のデータストレージデバイスを指し、コンピュータ可読の媒体は、それらがコンピュータによって読み取られることを可能にする方法で、コンピュータプログラムを具体化するための任意の既存の又は後で開発される技術に基づいてもよい。コンピュータ可読の媒体の例は、ハードディスク、ネットワーク接続ストレージNAS、読取り専用メモリ、ランダムアクセスメモリ例えば、フラッシュメモリデバイス、CDコンパクトディスク、CD-ROM、CD-R又はCD-RW、DVDデジタル多用途ディスク、磁気テープ及び他の光及び非光データストレージデバイスを含む。コンピュータ可読のコードが格納され、かつ分散された形態で実行されるように、コンピュータ可読の媒体はまた、コンピュータシステムに連結されたネットワークを介して分散可能である。0058本発明の1つ以上の実施態様が、理解の明快さのためにいくらか詳細に記載されたとはいえ、特定の変更及び修正が本請求項の有効範囲内でなされてもよいことは明らかである。従って、記載されている実施態様は、例示的であり限定的でないとみなされるべきであり、かつ、請求項の有効範囲は本願明細書に与えられる詳細に限定されるべきでなく、しかし請求項の有効範囲及び等価物の範囲内で変更されてもよい。本請求項において、要素及び/又はステップは、請求項内に明示的に述べられない限り、動作のいかなる特定の順序も意味しない。0059種々の実施態様に従う仮想化システムは、ホストされた実施態様、ホストされない実施態様として、又は二つの区別を不鮮明にする傾向がある実施態様として実現されてもよいことが、全て構想される。さらに、種々の仮想化動作はハードウェアで完全に又は部分的に実現されてもよい。例えば、ハードウェア実現は非ディスクデータを確保するためにストレージアクセス要求の修正に対してルックアップテーブルを使用してもよい。0060多くの変形、修正、追加及び改良が、仮想化の程度に拘わらず可能である。仮想化ソフトウェアは、従って、仮想化機能を実行するホスト、コンソール又はゲストオペレーティングシステムのコンポーネントを含むことができる。複数のインスタンスが、単一インスタンスとして本願明細書に記載されているコンポーネント、動作又は構造に与えられてもよい。最後に、種々のコンポーネント、動作及びデータストアの間の境界は幾分任意であり、及び、特定の動作が特定の例証となる構成の局面で例示される。機能の他の割当てが構想されてかつ本発明複数発明の有効範囲内に含まれてもよい。一般に、例示的な構成で別々のコンポーネントとして提示された構造及び機能は、組み合わせられた構造又はコンポーネントとして実現されてもよい。同様に、単一コンポーネントとして提示された構造及び機能は、別々のコンポーネントとして実現されてもよい。これらの、そしてまた他の、変形、修正、追加及び改良は、添付の請求項複数請求項の有効範囲内に含まれてもよい。"