(57)【特許請求の範囲】
【請求項１】
物理ホストに適用できる、仮想マシン(VM)のストレージスペースを管理するための方法であって、前記物理ホストがハードウェアレイヤと、前記ハードウェアレイヤ上で動作する仮想マシンモニタ(VMM)レイヤと、前記VMMレイヤ上で動作するVMとを備え、前記VMにストレージバルーンエージェント(SBA)モジュールが配備され、前記VMMレイヤにストレージバルーンデーモン(SBD)モジュールが配備され、
前記SBAモジュールによって、事前に定義されたファイルによって占有された仮想ストレージスペースのサイズと、事前に定義されたファイルによって占有され得る仮想ストレージの空き領域を示す限界値範囲との比較によって入手された結果に従って、事前に定義されたファイルの拡張部分によって占有された仮想ストレージブロック、又は、事前に定義されたファイルの縮小部分によって占有された仮想ストレージブロックを取得し(100)、前記仮想ストレージブロックを示す仮想ストレージ空きブロック情報を前記SBDモジュールに伝えるステップと、
前記SBDモジュールによって、解放した物理ストレージスペースが再割当てされるように、前記仮想ストレージ空きブロック情報に対応する物理ストレージスペースの一部または全部を解放し、前記解放した物理ストレージスペースに対応する仮想ストレージブロックにVMストレージフォーマットには利用できないとマーク付けするステップと
を含み、前記事前に定義されたファイルは一定の仮想ストレージの空き領域を占有するために使用される、方法。
【請求項２】
前記SBAモジュールによって、事前に定義されたファイルによって占有された仮想ストレージスペースのサイズと、事前に定義されたファイルによって占有され得る仮想ストレージの空き領域を示す限界値範囲との比較によって入手された結果に従って、事前に定義されたファイルの拡張部分によって占有された仮想ストレージブロック、又は、事前に定義されたファイルの縮小部分によって占有された仮想ストレージブロックを取得し、前記仮想ストレージブロックを示す仮想ストレージ空きブロック情報を前記SBDモジュールに伝える前記ステップが、
前記SBAモジュールによって、前記事前に定義されたファイルによって占有された前記仮想ストレージスペースの前記サイズを上限値および下限値を含む限界値範囲と比較するステップ(110)と、
前記事前に定義されたファイルによって占有された前記仮想ストレージスペースが、前記限界値範囲の前記下限値よりも小さい場合、ファイルシステムを呼び出して前記事前に定義されたファイルを拡張し、拡張された前記事前に定義されたファイルに、仮想ストレージの空き領域から仮想ストレージブロックを割り当てるステップ(120)と、
前記ファイルシステムを呼び出して、前記事前に定義されたファイルの前記拡張部分で占有された仮想ストレージブロックを入手するステップ(130)と、
前記仮想ストレージブロックを示す第1の仮想ストレージ空きブロック情報を前記SBDモジュールに伝えるステップ(140)とを含む、請求項1に記載の方法。
【請求項３】
前記SBDモジュールによって、解放した物理ストレージスペースが再割当てされるように、前記仮想ストレージ空きブロック情報に対応する前記物理ストレージスペースの一部または全部を解放し、前記解放した物理ストレージスペースに対応する前記仮想ストレージブロックにVMストレージフォーマットに利用できないとマーク付けする前記ステップが、
前記SBDモジュールによって、第1の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが利用できるかどうかを判断し、前記第1の仮想ストレージ空きブロック情報に対応する前記仮想ストレージブロックが利用できる場合、前記仮想ストレージブロックを空いているとマーク付けするステップ(210)と、
ポリシーにより、空いているとマーク付けされた前記仮想ストレージブロックの一部または全部に対応する物理ストレージスペースを解放し、前記解放した物理ストレージスペースに対応する前記仮想ストレージブロックにVMストレージフォーマットに利用できないとマーク付けするステップ(220)とを含む、請求項2に記載の方法。
【請求項４】
前記SBAモジュールによって、前記事前に定義されたファイルによって占有された前記仮想ストレージスペースの前記サイズを前記限界値範囲と比較する前記ステップの後に、
前記事前に定義されたファイルによって占有された前記仮想ストレージスペースが、前記限界値範囲の前記上限値よりも大きい場合、前記ファイルシステムを呼び出して、前記事前に定義されたファイルの前記縮小部分によって占有された仮想ストレージブロックを入手するステップ(150)と、
前記仮想ストレージブロックを示す第2の仮想ストレージ空きブロック情報を前記SBDモジュールに伝えるステップ(160)とをさらに含む、請求項2に記載の方法。
【請求項５】
前記仮想ストレージブロックを示す前記第2の仮想ストレージ空きブロック情報を前記SBDモジュールに伝える前記ステップの後に、
前記SBDモジュールによって、前記第2の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが空いているかどうかを判断し、前記第2の仮想ストレージ空きブロック情報に対応する前記仮想ストレージブロックが空いている場合、前記仮想ストレージブロックに利用できるとマーク付けするステップと、前記SBAモジュールによって、前記ファイルシステムを呼び出して前記事前に定義されたファイルを縮小するステップとをさらに含む、請求項4に記載の方法。
【請求項６】
前記SBAモジュールによって、前記事前に定義されたファイルによって占有された前記仮想ストレージスペースの前記サイズを前記限界値範囲と比較する前記ステップが、
前記SBAモジュールによって、前記ファイルシステムを呼び出して仮想ストレージ空き領域のサイズおよび前記事前に定義されたファイルによって占有された前記仮想ストレージスペースの前記サイズを取得し、前記SBDモジュールから、前記SBDモジュールにおいて事前に設定された下限比率および上限比率を入手するステップであって、前記事前に定義されたファイルが前記下限比率と前記上限比率との間で前記仮想ストレージ空き領域を占有することを許可されるステップと、
前記下限比率および前記仮想ストレージ空き領域の前記サイズの積を前記限界値範囲の下限値とみなし、前記上限比率および前記仮想ストレージ空き領域の前記サイズの積を前記限界値範囲の前記上限値とみなすステップと、
前記事前に定義されたファイルによって占有された仮想ストレージスペースのサイズが前記下限値より小さいか否か、又は、前記上限値より大きいか否かを決定するために、前記事前に定義されたファイルによって占有された前記仮想ストレージスペースの前記サイズを、それぞれ前記限界値範囲の前記下限値および前記上限値と比較するステップとを含む、請求項2から5のいずれか一項に記載の方法。
【請求項７】
前記事前に定義されたファイルを拡張するために前記ファイルシステムを呼び出す前記ステップが、
前記SBAモジュールによって、前記ファイルシステムの事前に割り当てられた(fallocate)インタフェースを呼び出すステップと、
前記限界値範囲の中間値を前記拡張された事前に定義されたファイルのサイズとしてインポートするステップであって、前記中間値が前記限界値範囲の前記下限値と前記上限値の和の半分に等しいステップとを含む、請求項2または3に記載の方法。
【請求項８】
前記事前に定義されたファイルを縮小するために前記ファイルシステムを呼び出す前記ステップが、
前記SBAモジュールによって、前記ファイルシステムの切り捨てインタフェースを呼び出して、前記限界値範囲の中間値を縮小された前記事前に定義されたファイルのサイズとしてインポートするステップであって、前記中間値が前記限界値範囲の前記下限値と前記上限値との和の半分に等しいステップと、
利用できるとマーク付けされ、前記事前に定義されたファイルの切り捨て部分に対応する仮想ストレージブロックを、前記ファイルシステムに返すステップとを含む、請求項5に記載の方法。
【請求項９】
前記仮想ストレージブロックを前記拡張された事前に定義されたファイルに割り当てる前記ステップの後に、
前記SBAモジュールによって、前記ファイルシステムのロックインタフェースを呼び出して、前記拡張された事前に定義されたファイルに割り当てられた前記仮想ストレージブロックをロックするステップをさらに含む、請求項2または3に記載の方法。
【請求項１０】
前記ポリシーに従って空いているとマーク付けされた前記仮想ストレージブロックの一部または全部に対応する前記物理ストレージスペースを解放する前記ステップが、
前記VMにおいて前記ストレージスペースを割り当てるまたは解放する動作の頻度が、事前に設定された閾値よりも大きいかどうかを判断し、
前記VMにおいて前記ストレージスペースを割り当てるまたは解放する前記動作の前記頻度が前記事前に設定された閾値以下である場合、空いているとマーク付けされた前記仮想ストレージブロックに対応する前記物理ストレージスペースを、事前に設定された比率で、解放するステップと、
前記VMにおいて前記ストレージスペースを割り当てるまたは解放する前記動作の前記頻度が前記事前に設定された閾値以上である場合、事前に設定されたレートで前記事前に設定された比率を下げ、前記下げた比率で、空いているとマーク付けされた前記仮想ストレージブロックに対応する前記物理ストレージスペースを解放するステップを含む、請求項3に記載の方法。
【請求項１１】
前記仮想ストレージブロックに対応する前記仮想ストレージ空きブロック情報を前記SBDモジュールに伝える前記ステップが、
前記SBAモジュールによって、前記仮想ストレージブロックに対応する前記仮想ストレージ空きブロック情報を前記SBDモジュールにメモリを共有することによって伝えるステップ
を含む、請求項1から5のいずれか一項に記載の方法。
【請求項１２】
仮想マシン(VM)のストレージスペースを管理するためのシステムであって、VMに配備されたストレージバルーンエージェント(SBA)モジュールと、仮想マシンモニタ(VMM)レイヤに配備されたストレージバルーンデーモン(SBD)とを備え、
前記SBAモジュールが、事前に定義されたファイルによって占有された仮想ストレージスペースのサイズと、事前に定義されたファイルによって占有され得る仮想ストレージの空き領域を示す限界値範囲との比較によって入手された結果に従って、事前に定義されたファイルの拡張部分によって占有された仮想ストレージブロック、又は、事前に定義されたファイルの縮小部分によって占有された仮想ストレージブロックを取得し、前記仮想ストレージブロックを示す仮想ストレージ空きブロック情報をSBDモジュールに伝えるように構成され(402)、
前記SBDモジュールが、解放した物理ストレージスペースが再割当てされるように、前記仮想ストレージの空きブロック情報に対応する物理ストレージスペースの一部または全部を解放し、前記解放した物理ストレージスペースに対応する仮想ストレージブロックにVMストレージフォーマットには利用できないとマーク付けするように構成され、前記事前に定義されたファイルは一定の仮想ストレージの空き領域を占有するために使用される、システム。
【請求項１３】
ハードウェアレイヤと、前記ハードウェアレイヤ上で動作する仮想マシンモニタ(VMM)レイヤと、前記VMM上で動作する少なくとも1つの仮想マシン(VM)とを備える物理ホストであって、前記VMにストレージバルーンエージェント(SBA)モジュール(401)が配備され、前記VMMレイヤにストレージバルーンデーモン(SBD)モジュール(402)が配備され、
前記SBAモジュール(401)が、事前に定義されたファイルによって占有された仮想ストレージスペースのサイズと、事前に定義されたファイルによって占有され得る仮想ストレージの空き領域を示す限界値範囲との比較によって入手された結果に従って、事前に定義されたファイルの拡張部分によって占有された仮想ストレージブロック、又は、事前に定義されたファイルの縮小部分によって占有された仮想ストレージブロックを取得し、前記仮想ストレージブロックを示す仮想ストレージ空きブロック情報を前記SBDモジュール(402)に伝えるように構成され、
前記SBDモジュール(402)が、解放した物理ストレージスペースが再割当てされるように、前記仮想ストレージの空きブロック情報に対応する物理ストレージスペースの一部または全部を解放し、前記解放した物理ストレージスペースに対応する仮想ストレージブロックにVMストレージフォーマットには利用できないとマーク付けするように構成され、
前記事前に定義されたファイルは一定の仮想ストレージの空き領域を占有するために使用される、物理ホスト。
【請求項１４】
前記SBAモジュール(401)が具体的には、前記事前に定義されたファイルによって占有された前記仮想ストレージスペースの前記サイズを前記入手した限界値範囲と比較し、前記事前に定義されたファイルによって占有された前記仮想ストレージスペースが前記限界値範囲の下限値よりも小さい場合、ファイルシステムを呼び出して前記事前に定義されたファイルを拡張し、前記拡張された事前に定義されたファイルに仮想ストレージブロックを割り当て、前記ファイルシステムを呼び出して、前記事前に定義されたファイルの拡張部分によって占有された仮想ストレージブロックを取得し、前記仮想ストレージブロックを示す第1の仮想ストレージ空きブロック情報を前記SBDモジュール(402)に伝えるように構成され、
前記SBDモジュール(402)が具体的には、前記第1の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが利用できるかどうかを判断し、前記第1の仮想ストレージ空きブロック情報に対応する前記仮想ストレージブロックが利用できる場合、前記仮想ストレージブロックを空いているとマーク付けし、空いているとマーク付けされた前記仮想ストレージブロックの一部または全部に対応する物理ストレージスペースを解放し、前記解放した物理ストレージスペースに対応する仮想ストレージブロックをポリシーに従って利用できないとマーク付けするように構成された、請求項13に記載の物理ホスト。
【請求項１５】
前記SBAモジュール(401)がさらに、前記事前に定義されたファイルによって占有された前記仮想ストレージスペースが前記限界値範囲の上限値よりも大きい場合、前記ファイルシステムを呼び出して前記事前に定義されたファイルの縮小部分によって占有された仮想ストレージブロックを入手し、前記仮想ストレージブロックを示す第2の仮想ストレージ空きブロック情報を前記SBDモジュール(402)に伝え、前記ファイルシステムを呼び出して前記事前に定義されたファイルを縮小するように構成され、
前記SBDモジュール(402)がさらに、前記第2の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが空いているかどうかを判断し、前記第2の仮想ストレージ空きブロック情報に対応する前記仮想ストレージブロックが空いている場合、前記仮想ストレージブロックに利用できるとマーク付けするように構成された、請求項14に記載の物理ホスト。
【発明の詳細な説明】
【技術分野】
【０００２】
本発明は、コンピュータ仮想化技術の分野に関し、詳細には、仮想マシン(VM)のストレージスペースおよび物理ホストを管理するための方法およびシステムに関する。
【背景技術】
【０００３】
コンピュータ仮想化技術は、下位レイヤのハードウェアデバイスをコンピュータの上位レイヤのオペレーティングシステムおよびアプリケーションから切り離すための減結合(decoupling)方法である。コンピュータ仮想化技術は、下位レイヤのハードウェア資源を直接管理し、仮想マシンモニタ(Virtual Machine Monitor、VMM)レイヤを導入して、上位レイヤのオペレーティングシステムおよびアプリケーションが使用する下位レイヤのハードウェアとは無関係のVMを作成する。対応するVMアーキテクチャを図1に示している。現在普及しているクラウドコンピューティングプラットフォームの重要な下位レイヤサポート技術の1つとして、仮想化技術は物理デバイスの資源利用率を大幅に増大させることができる。従来の物理マシンと比較すると、VMはより優れた独立性(isolation)およびカプセル化特性を有する。VM全体の情報は、スナップショット撮影、バックアップ、クローン作成、およびVM上の配信などの動作を便利に行うために、仮想ディスクイメージ(Virtual Disk Image、VDI)に保存することができる。
【０００４】
仮想ディスク(VDisk)は、VMが使用するVMMによって提供される仮想ストレージデバイスである。VDiskに対応する物理ストレージスペースは、ホストのローカルストレージシステム、またはネットワーク接続ストレージ(NAS)ファイルサーバ、ストレージエリアネットワーク(SAN)、ストレージクラスタ、もしくはストレージクラウドなど、データセンタのネットワークストレージシステムとすることができる。VDiskは、ファイルまたはブロックデバイス(ディスクパーティションもしくは論理ボリュームなど)の形態でホストにあることが可能である。
【０００５】
VMストレージスペースは、一般に次の2つの方法、すなわち事前割当てと動的割当てで割り当てられる。事前割当てでは、1度に各VMに指定されたサイズを有するストレージスペースが割り当てられる。VMデータが少ないとき、事前割当てはスペースの無駄が大きくなる。仮想ストレージスペースの動的割当ては、ストレージ資源の無駄をある程度まで削減することができる。初めに仮想ストレージスペースは、小さい実際のストレージスペースを占める。ユーザが使用するにつれてますます多くのファイルがVMストレージスペースに作成され、ますます大きいストレージスペースが占有される。
【０００６】
動的割当てによってストレージスペースを管理するための既存の方法は、要求に応じて割当てを行うことができるが、VMでファイルの削除が行われるとき、ホストがこの操作を認識することができない場合、VMによってすでに解放されている空き領域をホストは解放することができない。例えば、20GBの仮想ストレージデバイスを有するVMは、最もビジー状態のタスクの間、基本的に全ストレージスペースを一時ファイルとして使用する。タスクが待機状態であるとき、一時ファイルは削除されて、システムには15GBの空き領域があるが、この15GBの空き領域に占有されるホストのストレージ資源は解放されていない。
【０００７】
従来の技術では、仮想コンピュータソフトウェアのVM ware Workstationが、VM ware Shrinking Virtual Disk機能を提供し、これにより空きデータブロック(以下、ブロック)をVM Ware仮想マシンディスクフォーマット(Virtual Machine Disk Format、VMDK)の動的VDiskで解放することができる。主なステップは、次のようである。
VMにおいてディスクデフラグを行う(オプション)。
VMのVMツールによってVDiskの空きブロックをゼロに設定する。
【０００８】
ホストのサポートツールは、VDiskに対応するファイルまたはブロックデバイスをスキャンして「ゼロ」ブロックを識別し、動的イメージフォーマット特性を利用することによってイメージの縮小を行って、空きデータブロックの解放を完了する。
【０００９】
本発明を実施中に、前述の方法では、VMツールがVDiskの空きブロックをゼロに設定する処理において、すべての空きブロックに書込み操作が行われる必要があること、およびホストが「ゼロ」ブロックを識別するとき、すべてのデータブロックに読取り動作が行われる必要があることがわかる。すなわち、既存の方法では、高い動作オーバヘッドが存在し、ディスクの読み書き動作が非常に多いために大量のディスク帯域幅を浪費し、長時間を費やす。さらに、既存の方法では、ホストは「ゼロ」ブロックを識別することによってVDiskの各データブロックのスペース占有を間接的に判断するので、VMのディスクの全体的な空きデータブロック情報をリアルタイムで取得することができない。さらに既存の方法の応用は限られており、この方法は動的割当てイメージフォーマットに適用できるにすぎない。事前割当ミラーフォーマットについては、空きブロックを解放することができない。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明の諸実施形態は、ストレージスペースを効率的に管理して、ストレージシステムの利用率を上げるように、VMストレージスペースおよび物理ホストを管理するための方法を提供する。
【課題を解決するための手段】
【００１１】
VMストレージスペースを管理するための方法を提供し、この方法は、物理ホストに適用でき、この方法では物理ホストは、ハードウェアレイヤと、ハードウェアレイヤ上で動作するVMMレイヤと、VMMレイヤ上で動作するVMとを含み、VMにストレージバルーンエージェント(Storage Balloon Agent、SBA)モジュールが配備され、VMMレイヤにストレージバルーンデーモン(Storage Balloon Daemon、SBD)モジュールが配備され、この方法は:
事前に定義されたファイルにより占有される仮想ストレージスペースのサイズに従って、占有された仮想ストレージブロックの部分をSBAモジュールによって取得して、仮想ストレージブロックに対応する仮想ストレージ空きブロック情報をSBDモジュールに伝えるステップと、
仮想ストレージ空きブロック情報に対応する物理ストレージスペースの一部または全部をSBDモジュールによって解放して、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けするステップとを含む。
【００１２】
VMストレージスペースを管理するためのシステムを提供し、このシステムは、VMに配備されたSBAモジュールと、VMMレイヤに配備されたSBDモジュールとを含み、
SBAモジュールは、事前に定義されたファイルにより占有された仮想ストレージスペースのサイズに従って、占有された仮想ストレージブロックの部分を取得し、仮想ストレージブロックに対応する仮想ストレージ空きブロック情報をSBDモジュールに伝えるように構成され、
SBDモジュールは、仮想ストレージ空きブロック情報に対応する物理ストレージスペースの一部または全部を解放し、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けするように構成される。
【００１３】
物理ホストを提供し、この物理ホストは、ハードウェアレイヤと、ハードウェアレイヤ上で動作するVMMレイヤと、VMMレイヤ上で動作する少なくとも1つのVMとを含み、この物理ホストではVMにSBAモジュールが配備され、VMMレイヤにSBDモジュールが配備され、
SBAモジュールは、事前に定義されたファイルにより占有された仮想ストレージスペースのサイズに従って、占有された仮想ストレージブロックの部分を取得し、仮想ストレージブロックのこの部分に対応する仮想ストレージ空きブロック情報をSBDモジュールに伝えるように構成され、
SBDモジュールは、仮想ストレージ空きブロック情報に対応する物理ストレージスペースの一部または全部を解放し、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けするように構成される。
【００１４】
本発明の諸実施形態は、次の技術的解決法を採用する:SBAモジュールはVMに配備され、SBDモジュールはVMMレイヤに配備される。SBAモジュールは、事前に定義されたファイルにより占有された仮想ストレージスペースの占有に応じた仮想ストレージ空きブロック情報を取得し、仮想ストレージ空きブロック情報をSBDモジュールに伝える。SBDモジュールは、仮想ストレージ空きブロック情報に対応する物理ストレージスペースを解放する。この技術的解決法により、1つの態様では仮想ストレージ空きブロック情報は、リアルタイムで取得することができるため、リアルタイム特性に優れており、別の態様ではストレージシステムの数多くの読み書き動作を回避するため、システムオーバヘッドが低くなる。さらにこの方法では、ファイルシステムのインタフェースを使用して仮想ストレージ空きブロック情報を取得するため、ファイルシステムの実施の詳細を知る必要がなく、普遍性に優れている。この方法は、動的割当てイメージフォーマットおよび動的割当てミラーフォーマットの両方に適用できる。
【図面の簡単な説明】
【００１５】
【図１】VMアーキテクチャの概略図である。
【図２】本発明の一実施形態によるVMストレージスペースを管理するための方法の概略的流れ図である。
【図２ａ】図2に示す方法のステップ100の特定のステップの概略流れ図である。
【図２ｂ】図2に示す方法のステップ200の特定のステップの概略流れ図である。
【図３】本発明の一実施形態によるVMストレージスペースを管理するためのシステムの論理構造を示す図である。
【図４】本発明の一実施形態による物理ホストの論理構造を示す概略図である。
【図５ａ】本発明の一実施形態による応用シナリオにおいてVMストレージスペースを管理するための方法の概略流れ図である。
【図５ｂ】本発明の一実施形態による応用シナリオにおいてVMストレージスペースを管理するための方法の概略流れ図である。
【発明を実施するための形態】
【００１６】
本発明の一実施形態は、物理ホストに適用されるVMストレージスペースを管理するための方法を提供する。物理ホストは、ハードウェアレイヤと、ハードウェアレイヤ上で動作するVMMレイヤと、VMMレイヤ上で動作するVMとを含み、VMにはSBAモジュールが配備され、VMMレイヤにはSBDモジュールが配備される。この方法では、VMに配備されたSBAは仮想ストレージ空きブロック情報を直接入手し、取得した仮想ストレージ空きブロック情報を、VMMレイヤにありSBAと協力するSBDへ伝え、SBDはVMストレージフォーマットの仮想ストレージ空きブロック情報に対応する物理ストレージスペースを解放する。本発明の一実施形態はさらに、VMストレージスペースおよび物理ホストを管理するための対応するシステムを提供する。次に詳細について説明する。
【００１７】
図2は、本発明の一実施形態によるVMストレージスペースを管理するための方法を示す。この方法は、物理ホストに適用できる。物理ホストは、ハードウェアレイヤと、ハードウェアレイヤ上で動作するVMMレイヤと、VMMレイヤ上で動作するVMとを含み、VMにSBAモジュールが配備され、VMMレイヤにSBDモジュールが配備される。この方法は、次のステップを含むことができる。
【００１８】
100: SBAモジュールは、事前に定義されたファイルによって占有された仮想ストレージスペースのサイズに従って、占有された仮想ストレージブロックの部分を取得し、この仮想ストレージブロックに対応する仮想ストレージ空きブロック情報をSBDモジュールに伝える。
【００１９】
このステップでは、VMに配備されたSBAは、事前に定義されたファイルに占有される仮想ストレージスペースの占有により仮想ストレージ空きブロック情報を直接取得することができるので、ゼロ設定の書込み操作を各空きブロックに行う必要がない。
【００２０】
さらに、ある実施の方法では、SBAモジュールは、メモリを共有することによって仮想ストレージブロックに対応する仮想ストレージ空きブロック情報を、VMMレイヤに配備されたSBDモジュールに伝えることができるので、読み取り操作を各空きブロックに行う必要がない。事前に定義されたファイルは、一定の仮想ストレージの空き領域を占有するように機能するいかなるタイプの事前に定義されたファイルであることも可能である。例えば、VMのWindows(登録商標)オペレーティングシステムのドライブCについては、事前に定義されたファイルはC: \baloon.sysであることが可能である。本発明のこの実施形態は、事前に定義されたファイルとして既存ファイルを使用する、または事前に定義されたファイルとして新しいファイルを作成することができる。
【００２１】
200: SBDモジュールは、仮想ストレージ空きブロック情報に対応する物理ストレージスペースの一部または全部を解放し、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けする。
【００２２】
このステップでは、SBDは空きブロックの解放動作を行う。ある実施の方法では、事前に設定されたポリシーに従って、SBDは空いているとマーク付けされた仮想ストレージブロックの一部または全部に対応する物理ストレージスペースを解放し、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けする。
【００２３】
物理ホストのストレージシステムがディスクであるとき、事前に定義されたファイルはVDiskスペースを占有し、また解放されてマーク付けされる物理ストレージスペースは具体的には物理ディスクスペースであることを理解されたい。
【００２４】
図2aを参照すると、好ましい解決法では、ステップ100は具体的には次のステップを含むことができる。
【００２５】
110: VMに配備されたSBAは、事前に定義されたファイルによって占有された仮想ストレージスペースのサイズを入手された限界値範囲と比較する。
【００２６】
事前に定義されたファイルに占有される仮想ストレージスペースのサイズを限界値範囲と比較することによって得られる様々な結果に対して、様々な動作が行われることに注意されたい。
【００２７】
限界値範囲は、事前に設定された固定値とすることができる、または他の取得パラメータに応じて特定アルゴリズムにより入手することができる。ある実施の方法では、ステップ110は具体的には次のステップを含むことができる。
【００２８】
111: SBAは、仮想ストレージの空き領域のサイズおよび事前に定義されたファイルによって占有された仮想ストレージスペースのサイズを取得するために、ファイルシステムを呼び出し、SBDモジュールから下限比率および上限比率を入手し、事前に定義されたファイルはこの下限比率と上限比率の間で仮想ストレージの空き領域を占有することができる。
【００２９】
VMは、ファイルシステムのインタフェースを介して仮想ストレージの空き領域情報を取得する。このステップは、一定の期間に従って繰り返して行われる。例えばこのステップは、1秒から5秒の間隔で行うことができる。
【００３０】
下限比率および上限比率は、SBDモジュールにおいて事前に設定され、事前に定義されたファイルは、下限比率と上限比率との間で仮想ストレージの空き領域を占有することができる。上限比率は好ましくは80%から90%であり、下限比率は好ましくは60%から70%である。
【００３１】
112: SBAは、下限比率および仮想ストレージの空き領域のサイズの製品、ならびに上限比率および仮想ストレージの空き領域のサイズの製品を、それぞれ事前に設定された限界値範囲の下限値および上限値とみなす。
【００３２】
仮想ストレージの空き領域のサイズがXであり、下限比率はL1%であり、上限比率はL2%であると仮定する場合、限界値範囲の下限値はX*L1%であり、限界値範囲の上限値はX*L2%である。
【００３３】
113: VMは、事前に定義されたファイルにより占有された仮想ストレージのサイズを、それぞれ限界値範囲の下限値および上限値と比較する。
【００３４】
事前に定義されたファイルによって占有された仮想ストレージスペースのサイズがSである場合、SとX*Ll%、ならびにSとX*L2%がそれぞれ比較される。
【００３５】
120:  事前に定義されたファイルによって占有された仮想ストレージスペースのサイズが、限界値範囲の下限値よりも小さい場合、SBAは事前に定義されたファイルを拡張するためにファイルシステムを呼び出し、拡張された、事前に定義されたファイルに仮想ストレージブロックを割り当てる。
【００３６】
事前に定義されたファイルが下限値よりも小さい場合、仮想ストレージの空き領域が大きすぎることを示すことに注意されたい。この場合、空き領域の一部を開放することが必要である。空き領域の一部を開放するために、事前に定義されたファイルはまず拡張されて、事前に定義されたファイルによって占有された空き領域を増大させ、事前に定義されたファイルの拡張部分に占有される空き領域を解放する必要がある。ある実施の方法では、ステップ120は具体的には次のステップを含むことができる。
【００３７】
121: SBAはファイルシステムの事前に割り当てられた(fallocate)インタフェースを呼び出し、拡張された事前に定義されたファイルのサイズとして限界値範囲の中間値をインポートする。中間値は、下限値と上限値の和の半分に等しい。下限値がX*L1%、上限値がX*L2%であるとき、中間値はX*(L1% +L2%)/2である。
【００３８】
122: SBAのVMファイルシステムは、拡張された、事前に定義されたファイルに仮想ストレージブロックを割り当てる。
【００３９】
例えば、X*(L 1% +L2%)/2のサイズを有する事前に定義されたファイルに、仮想ストレージブロック[b1, b2, ..., bn]を割り当てることができる。
【００４０】
123: SBAはファイルシステムのロックインタフェースを呼び出し、拡張された事前に定義されたファイルに割り当てられた仮想ストレージブロックをロックし、ストレージデバイスのデフラグツールによって変更されないようにする。
【００４１】
130: SBAはファイルシステムを呼び出して、事前に定義されたファイルの拡張部分で占有された仮想ストレージブロックを入手する。
【００４２】
事前に定義されたファイルの拡張部分、すなわち区間[S, X*(L1% +L2%)/2]ついて、VMはファイルシステムの「file offset -> data block」マッピング(bmap)を呼び出して、占有された仮想ストレージブロック[bs, ..., bn]を入手する。
【００４３】
140: SBAは、メモリを共有することによって、仮想ストレージブロックを示す第1の仮想ストレージ空きブロック情報をSBDモジュールに伝える。
【００４４】
第1の仮想ストレージ空きブロック情報は、SBDモジュールに伝えられ、第1の仮想ストレージ空きブロック情報に対応する物理ストレージスペースが再使用(reclamation)および解放の候補である。第1の仮想ストレージ空きブロック情報は、メモリを共有することによって伝えられ、これは簡単で信頼できるものである。
【００４５】
図2bを参照すると、ある実施の方法ではステップ200は、具体的には次のステップを含むことができる。
【００４６】
210: VMMレイヤに配備されたSBDは、第1の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが利用できるかどうかを判断し、第1の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが利用できる場合、この仮想ストレージブロックは空いているとマーク付けされる。
【００４７】
SBDは、メモリを共有することによって第1の仮想ストレージ空きブロック情報を取得し、第1の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが利用できるかどうかを判断し、第1の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが利用できる場合、仮想ストレージブロックは空いているとマーク付けされ、第1の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが利用できない場合、処理は行われない。処理が完了した後に、SBDはSBAに応答する。
【００４８】
220: SBDは、空いているとマーク付けされた仮想ストレージブロックの一部または全部に対応する物理ストレージスペースを解放し、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けする。
【００４９】
このステップでは、SBDは空きブロックの解放動作を行う。事前に設定されたポリシーにより、SBDは、空いているとマーク付けされた仮想ストレージブロックの一部または全部に対応する物理ストレージスペースを解放することができ、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けする。
【００５０】
実際の実行では、簡単にするために単純なポリシーを実行することができ、すなわち、空いているとマーク付けされた仮想ストレージブロックについては、仮想ストレージブロックに対応する物理ストレージスペースが完全に解放され、解放された物理ストレージスペースに対応する仮想ストレージブロックは、利用できないとマーク付けされる。
【００５１】
仮想ストレージの管理レベルを上げるために、好ましいポリシーを実行することもでき、すなわち、VMにおいてストレージスペースを割り当てるおよび/または解放する動作の頻度が閾値(ここでは閾値は、事前に設定することができる、または動的計算によって入手することができる)以上であるとき、SBDは解放される空きブロックの比率を下げ、VMにおいてストレージスペースを割り当てるおよび/または解放する動作の頻度が低いとき、SBDは解放されて空きブロックの比率を上げる。具体的には、SBDはVMにおいてストレージスペースを割り当てるまたは解放する動作の頻度が、事前に設定した閾値以上であるかどうかを判断し、VMにおいてストレージスペースを割り当てるまたは解放する動作の頻度が事前に設定した閾値以上ではない場合、SBDは事前に設定した比率で、空いているとマーク付けされた仮想ストレージブロックに対応する物理ストレージスペースを解放し、例えば、事前に設定した80%の比率で物理ストレージスペースを解放し、VMにおいてストレージスペースを割り当てるまたは解放する動作の頻度が事前に設定した閾値以上である場合、SBDは事前に設定したレートで事前に設定した比率を下げ、下げた比率で、空いているとマーク付けされた仮想ストレージブロックに対応する物理ストレージスペースを解放する。例えば、事前に設定された80%という比率は、毎秒1%のレートで下げられ、物理ストレージスペースは、例えば75%または70%の下げた比率で解放される。解放される空きブロックの比率は、空きブロックが短時間後に再び使用される可能性が高いために下げられ、頻繁に解放および再割当てを行うことによるオーバヘッドを削減するようにする。厳密には、VMにおいてストレージスペースを割り当てるおよび解放する動作の頻度が低いとき、解放される空きブロックの比率は、適切に上げられるべきである。空きブロックに対応するストレージスペースがファイルである場合、データブロックを解放する関数は、ホストファイルシステムの内部インタフェース(free_blocks (start_block, count))をエクスポートすることによる。仮想ストレージブロックに対応するストレージスペースがブロックデバイスである場合、空きブロックが解放されるとき、下位レイヤのデータブロックストレージシ
ステムが、空きブロックを解放するよう命令される。
【００５２】
図2aを参照すると、本発明の実施形態による方法では、ステップ110後に、すなわちSBAが事前に定義されたファイルによって占有された仮想ストレージスペースのサイズを、入手した限界値範囲と比較した後に、この方法は、さらに次のステップを含むことができる。
【００５３】
150:  事前に定義されたファイルによって占有された仮想ストレージスペースが、限界値範囲の上限値よりも大きい場合、ファイルシステムを呼び出して事前に定義されたファイルの部分によって占有された仮想ストレージブロックを入手して縮小する。
事前に定義されたファイルが、上限値よりも大きい場合、このファイルは仮想ストレージの空き領域が小さすぎることを示す。この場合、事前に定義されたファイルによって占有された空き領域の部分をVMファイルシステムに返す必要がある。空き領域の部分を返すために、事前に定義されたファイルは縮小されて、事前に定義されたファイルに占有される空き領域を減らす必要があり、縮小された部分に占有された空き領域を解放するようにする。
【００５４】
SBAは、縮小される事前に定義されたファイルのサイズとして目標値を取得する。目標値よりも大きい部分が、縮小されるべき部分であり、切り捨てられて削除される。ある実施の方法では、限界値範囲の中間値が、事前に定義されたファイルを縮小するための目標サイズとみなされる。事前に定義されたファイルの元のサイズがSであって、中間値がX*(L1% +L2%)/2であるとき、縮小されるべき事前に定義されたファイルの部分は、区間[X*(L1% +L2%)12, S]である。この区間に対して、VMはシステムの「file offset -> data block」マッピング(bmap)インタフェースを呼び出して、対応する仮想ストレージブロックを入手する。
【００５５】
160: SBAは、縮小されるべき部分によって占有された仮想ストレージブロックを示す第2の仮想ストレージ空きブロック情報をSBDへ伝えて、縮小されるべき部分で占有されている仮想ストレージブロックを空いている状態とマーク付けしないようSBDに命令する。
【００５６】
縮小されるべき部分によって占有された仮想ストレージブロックが空いている状態とマーク付けされる場合、縮小されるべき部分によって占有される仮想ストレージブロックはSBDによって解放され、VMファイルシステムに返すことができないため、縮小されるべき部分で占有された仮想ストレージブロックが空いているとマーク付けされないことを確実にするために、SBDに遅れることなく通知する必要がある。ある実施の方法では、第2の仮想ストレージ空きブロック情報は、メモリを共有することによって伝えられるが、これは簡単で確実である。
【００５７】
SBDが、SBAによって伝えられた第2の仮想ストレージ空きブロック情報を受信した後、ステップ230が行われる。230: SBDは、第2の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが空いているかどうかを判断し、第2の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが空いている場合、仮想ストレージブロックは利用できるとマーク付けされる。
【００５８】
SBDは、メモリを共有することによって第2の仮想ストレージ空きブロック情報を取得し、第2の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが空いているかどうかを判断し、第2の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが空いている場合、仮想ストレージブロックは利用できるとマーク付けされ、第2の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが利用できない場合、処理は行われない。VMにおけるデータブロックの割当ては、仮想レイヤで行われるのみであり、物理ストレージスペースにおける実際のデータブロックの割当ては、書込み操作中に行われることに注意されたい。処理が完了した後に、SBDはSBAに応答する。
【００５９】
170: SBAは、ファイルシステムを呼び出して、事前に定義されたファイルを縮小する。
【００６０】
SBAはファイルシステムの切り捨てインタフェース(truncate interface)を呼び出して、縮小される事前に定義されたファイルのサイズとして事前に設定された限界値範囲の中間値をインポートする。中間値は、下限値と上限値の和の半分に等しい。
【００６１】
縮小されるべき事前に定義されたファイルの部分(すなわち、切り捨てられる部分)によって占有され、利用できるとマーク付けされた仮想ストレージブロック(すなわち、第2の仮想ストレージ空きブロック情報に対応する仮想ストレージブロック)は、VMファイルシステムに返される。
【００６２】
この方法の好ましい解決法では、事前に定義されたファイルによって占有された仮想ストレージスペースが限界値範囲の下限値よりも小さい状況、および事前に定義されたファイルによって占有された仮想ストレージスペースが限界値範囲の上限値よりも大きい状況が、それぞれ処理される。
【００６３】
事前に定義されたファイルのサイズが、限界値範囲の下限値と上限値の間であるとき、これは仮想ストレージの空き領域のサイズが適切であることを示し、処理は行われないことに注意されたい。
【００６４】
本発明の実施形態によるVMストレージスペースを管理するための方法は、一定の期間に従って周期的に行われる。ステップ110後に、すなわちVMに配備されたSBAが、事前に定義されたファイルによって占有された仮想ストレージスペースのサイズを、入手した限界値範囲と比較した後に、比較の結果に従ってそれぞれ様々な動作が行われる。動作が行われた後に、たとえ事前に定義されたファイルのサイズおよび入手された限界値範囲が変更されても、手順は次の周期に戻る。
【００６５】
要約すれば、本発明の実施形態によるVMストレージスペースを管理するための方法では、仮想ストレージの空きデータブロック情報は、VMのSBAによってリアルタイムで取得され、VMストレージスペースの使用状況がホストに活発に通知され、解放されるべき空きブロックの情報は、VMMレイヤ(すなわちホスト)に配備されたSBDに伝えられ、ホストはSBDによって仮想ストレージの空きブロックを解放し、再割当てする。ホストは、リアルタイムでVMストレージスペースの使用状況を取得することができるので、リアルタイム特性に優れていると理解することができる。
【００６６】
さらに、本発明の実施形態によるVMストレージスペースを管理するための方法では、ストレージシステムの多数の読み書き操作を回避するため、システムオーバヘッドは小さくなり、またファイルシステムのインタフェースを使用して仮想ストレージの空きブロックを取得するため、ファイルシステムの実行の詳細を知る必要がなく、普遍性に優れている。
【００６７】
さらに、本発明の実施形態によるVMストレージスペースを管理するための方法は、動的割当てイメージフォーマットおよび事前割当てミラーフォーマットの両方に適用できる。
【００６８】
本発明の実施形態によるVMストレージスペースを管理するための方法では、VMストレージスペースの使用状況がリアルタイムで識別される(すなわち、VMストレージシステムの有効データブロックおよび空きデータブロックが識別される)ため、仮想ストレージの空きブロックに対応する物理ストレージスペースを解放して、ストレージスペースを効率的に管理するようにし、それによって下位レイヤのストレージシステムの利用率を上げることができる。さらに、有効データブロックが識別されて、オンラインストレージの移行、VMのクローン作成、およびイメージのバックアップなど、入力/出力(I/O)の集中動作の効率を効果的に上げることができる。本発明の実施形態によるVMストレージスペースを管理するための解決法は、ストレージシステムの自動的にシンプロビジョニングされたスペースを管理するために使用することができると理解することができる。
【００６９】
図3に示すように、本発明の一実施形態は、TMストレージスペースを管理するためのシステムを提供し、このシステムはVMに配備されたSBAモジュールと、VMMレイヤに配備されたSBDモジュールとを含む。このシステムは、物理ホストで動作する。
【００７０】
次では、VMストレージスペースを管理するためのシステムが動作する物理ホストの論理アーキテクチャについてまず説明する。図4に示すように、物理ホストは、ハードウェアレイヤと、ホストと、VMとを含む。
【００７１】
ハードウェアレイヤは、仮想環境が動作するすべてのハードウェアプラットフォームであり、プロセッサ(例えば中央処理装置(CPU))、メモリ、ストレージシステム(例えばディスクまたはハードディスク)、ネットワークインタフェースカード(NIC)、I/Oデバイスなどを含むことができる。
【００７２】
ホストすなわちVMMレイヤは、管理レイヤとしてハードウェアリソースの管理および割当てを完了し、VMに仮想ハードウェアプラットフォームを提示し、VMをスケジュールして独立させる。一部のVMMの実行中には、特権的(privileged)VMの協力を必要とし、特権的VMおよびVMMは結合されてホストを形成する。仮想ハードウェアプラットフォームは、その上のVMに、仮想CPU(VCPU)、仮想メモリ、VDisk、および仮想NICなど、様々なハードウェアリソースを提供する。VDiskは、ホストにおけるファイルまたは論理ブロックデバイスに対応する。VDiskの連続ブロックは、ホストに別々に格納することができ、したがって構成および管理の便宜上、VMディスクイメージは、一般にイメージフォーマットで記述され、メタデータ領域が使用されてVDiskデータブロックとホストのデータブロックとのマッピング関係を格納する。
【００７３】
VMは、ホストによって用意された仮想プラットフォームで動作する。大部分の時間では、VMの実行はホストによって影響を及ぼされない。
【００７４】
次では、SBAモジュールおよびSBDモジュールについて説明する。SBAはVMに配備され、SBDはVMMレイヤに配備される。
【００７５】
SBAモジュール401は、事前に定義されたファイルによって占有された仮想ストレージスペースのサイズに従って、占有された仮想ストレージブロックの部分を取得し、この仮想ストレージブロックに対応する仮想ストレージ空きブロック情報をSBDモジュールに伝えるように構成される。
【００７６】
SBDモジュール402は、仮想ストレージ空きブロック情報に対応する物理ストレージスペースの一部または全部を解放し、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けするように構成される。
【００７７】
ある実施の方法では、SBAモジュール401は具体的には以下を含むことができる:
事前に定義されたファイルによって占有された仮想ストレージスペースのサイズを入手した限界地範囲と比較するように構成された、比較ユニット。
事前に定義されたファイルによって占有された仮想ストレージスペースが、限界値範囲の下限値よりも小さい場合、ファイルシステムを呼び出して事前に定義されたファイルを拡張し、拡張した事前に定義されたファイルにデータブロックを割り当てるように構成された、拡張ユニット。
ファイルシステムを呼び出して事前に定義されたファイルの拡張部分によって占有される仮想ストレージブロックを取得するように構成された、取得ユニット。
第1の仮想ストレージ空きブロック情報をSBDモジュールに伝えるように構成された、引渡ユニット。
【００７８】
ある実施の方法では、SBDモジュール402は具体的には以下を含むことができる:
第1の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが利用可能であるかどうかを判定するように構成され、第1のストレージグリーブロック情報に対応する仮想ストレージブロックが利用でき、仮想ストレージブロックを空いているとマーク付けする、判定ユニット。
ポリシーに従って、空いているとマーク付けされた仮想ストレージブロックの一部または全部に対応する物理ストレージスペースを解放し、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けするように構成された、解放およびマーク付けユニット。
【００７９】
要約すれば、本発明の実施形態によるVMストレージスペースを管理するためのシステムでは、仮想ストレージの空きデータブロック情報は、VMのSBAによってリアルタイムで取得され、VMストレージスペースの使用状況がホストに活発に通知され、解放されるべき空きブロックの情報は、VMMレイヤ(すなわちホスト)に配備されたSBDに伝えられ、ホストはSBDによって仮想ストレージの空きブロックを解放し、再割当てする。ホストは、VMストレージスペースの使用状況をリアルタイムで取得することができ、したがってリアルタイム特性に優れていると理解することができる。
【００８０】
さらに、本発明の実施形態によるVMストレージスペースを管理するためのシステムでは、ストレージシステムの多数の読み書き操作が回避されるため、システムオーバヘッドは小さくなり、またファイルシステムのインタフェースを使用して仮想ストレージの空きブロックを取得するため、ファイルシステムの実行の詳細を知る必要がなく、普遍性に優れている。
【００８１】
さらに、本発明の実施形態によるVMストレージスペースを管理するためのシステムは、動的割当てイメージフォーマットおよび事前割当てミラーフォーマットの両方に適用できる。
【００８２】
本発明の実施形態によるVMストレージスペースを管理するためのシステムでは、VMストレージスペースの使用状況は、リアルタイムで識別される(すなわち、VMストレージシステムの有効データブロックおよび空きデータブロックが識別される)ため、仮想ストレージの空きブロックに対応する物理ストレージスペースを解放して、ストレージスペースを効率的に管理するようにし、それによって下位レイヤのストレージシステムの利用率を上げることができる。さらに、有効データブロックが識別されるため、オンラインストレージの移行、VMのクローン作成、およびイメージのバックアップなど、I/O集中動作の効率を効果的に上げることができる。本発明の実施形態によるVMストレージスペースを管理するための解決法は、ストレージシステムの自動的にシンプロビジョニングされたスペースを管理するために使用することができると理解することができる。
【００８３】
図4に示すように、本発明の一実施形態はさらに、ハードウェアレイヤと、ハードウェアレイヤ上で動作するVMMレイヤと、VMMレイヤ上で動作する少なくとも1つのVMとを含み、VMにSBAが配備され、VMMレイヤにSBDが配備された、物理ホストを提供する。
【００８４】
SBAモジュールは、事前に定義されたファイルによって占有された仮想ストレージスペースのサイズに従って、占有された仮想ストレージブロックの部分を取得し、この仮想ストレージブロックに対応する仮想ストレージ空きブロック情報をSBDモジュールに伝えるように構成される。SBDモジュールは、仮想ストレージ空きブロック情報に対応する物理ストレージスペースの一部または全部を解放し、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けするように構成される。
【００８５】
ある実施の方法では、SBAモジュールは具体的には、事前に定義されたファイルによって占有された仮想ストレージスペースのサイズを入手した限界値範囲と比較する、事前に定義されたファイルによって占有された仮想ストレージスペースが限界値範囲の下限値よりも小さい場合、ファイルシステムを呼び出して事前に定義されたファイルを拡張し、拡張された事前に定義されたファイルに仮想ストレージブロックを割り当てる、ファイルシステムを呼び出して、事前に定義されたファイルの拡張部分によって占有された仮想ストレージブロックを取得する、仮想ストレージブロックを示す第1の仮想ストレージ空きブロック情報をSBDモジュールに伝えるように構成される。
【００８６】
SBDモジュールは具体的には、第1の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが利用できるかどうかを判断する、第1の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが利用可能である場合、仮想ストレージブロックを空いているとマーク付けする、ポリシーに従って、空いているとマーク付けされた仮想ストレージブロックの一部または全部に対応する物理ストレージスペースを解放する、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けするように構成される。
【００８７】
ある実施の方法では、SBAモジュールはさらに、事前に定義されたファイルによって占有された仮想ストレージスペースが限界値範囲の上限値よりも大きい場合、ファイルシステムを呼び出して縮小されるべき事前に定義されたファイルの部分によって占有された仮想ストレージブロックを入手する、仮想ストレージブロックを示す第2の仮想ストレージ空きブロック情報をSBDモジュールに伝える、ファイルシステムを呼び出して事前に定義されたファイルを縮小するように構成される。
【００８８】
SBDモジュールはさらに、第2の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが空いているかどうかを判断し、第2の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが空いている場合、仮想ストレージブロックは利用できるとマーク付けするように構成される。
【００８９】
要約すれば、本発明の実施形態による物理ホストでは、仮想ストレージの空きデータブロック情報は、VMのSBAによってリアルタイムで取得され、VMストレージスペースの使用状況がホストに活発に通知され、解放されるべき空きブロックの情報は、VMMレイヤ(すなわちホスト)に配備されたSBDに伝えられ、ホストはSBDによって仮想ストレージの空きブロックを解放し、再割当てする。ホストは、VMストレージスペースの使用状況をリアルタイムで取得することができるため、リアルタイム特性に優れていると理解することができる。
【００９０】
さらに、本発明の実施形態による物理ホストでは、ストレージシステムの多数の読み書き操作が回避されるため、システムオーバヘッドは小さくなり、またファイルシステムのインタフェースを使用して仮想ストレージの空きブロックを取得するため、ファイルシステムの実行の詳細を知る必要がなく、普遍性に優れている。
【００９１】
さらに、本発明の実施形態による物理ホストは、動的割当てイメージフォーマットおよび事前割当てミラーフォーマットの両方に適用できる。
【００９２】
本発明の実施形態による物理ホストでは、VMストレージスペースの使用状況がリアルタイムで識別される(すなわち、VMストレージシステムの有効データブロックおよび空きデータブロックが識別される)ため、仮想ストレージの空きブロックに対応する物理ストレージスペースを解放して、ストレージスペースを効率的に管理するようにし、それによって下位レイヤのストレージシステムの利用率を上げることができる。さらに、有効データブロックが識別されるため、オンラインストレージの移行、VMのクローン作成、およびイメージのバックアップなど、I/O集中動作の効率を効果的に上げることができる。本発明の実施形態によるVMストレージスペースを管理するための解決法は、ストレージシステムの自動的にシンプロビジョニングされたスペースを管理するために使用することができると理解することができる。
【００９３】
理解を容易にするための便宜上、前述の実施形態で説明したVMストレージスペースを管理するための方法は、特定の応用のシナリオにおいて詳細に説明している。明瞭にするために、SBAによって行われるステップは、SBDによって行われるステップとは別に説明している。この実施形態において、下位レイヤのストレージシステムがディスクであることは、説明のための一例とみなされる。したがって物理ストレージスペースは物理ディスクスペースであり、仮想ストレージスペースはVDiskスペースである。
【００９４】
図5aに示すように、まずSBAによって行われるステップについて次に説明する。
【００９５】
201:  事前に定義されたファイル(F、Windows(登録商標)のドライブCについては、事前に定義されたファイルは、C:\balloon.sysとすることができる)が存在しない場合、事前に定義されたファイルを作成する。
【００９６】
202:  事前に定義されたファイルFのファイルサイズSを取得する。
【００９７】
203:  ファイルシステムのインタフェースを介して、空き領域のサイズXなど、VDiskの空き領域情報を入手する。
【００９８】
204:  図4に示すように、SBDから、FがVDiskの空き領域を占有することができる下限比率(L1%)および上限比率(L2%)の設定を取得する。
【００９９】
205:  事前に定義されたファイルのサイズSを事前に設定された限界値範囲と比較し、S<X*L1%の場合、事前に設定されたファイルFによって占有される空き領域が小さすぎることを示し、事前に定義されたファイルを拡張する。
【０１００】
2011:  ファイルシステムの事前に割当てられた(fallocate)インタフェースを呼び出し、事前に設定されたファイルFのサイズとしてX*(Ll%+L2%)/2をインポートし、ファイルシステムは、データブロック[b1,b2,…,bn]をファイルに割り当てる。
【０１０１】
2022:  ファイルシステムのロックインタフェースを呼び出し、事前に定義されたファイルFに対応するVDiskのデータブロックが、ディスクデフラグツールによって変更されていないことを確認する。
【０１０２】
2023:  事前に定義されたファイルの拡張部分、すなわち区間[S, X*(L1% +L2%)/2]については、ファイルシステムの「file offset -> data block」マッピング(bmap)インタフェースを呼び出して、対応するVDiskのブロック群を入手する。
【０１０３】
2024:  メモリを共有することによってVDiskブロック群に対応する第1のVDisk空きブロック情報をSBDへ伝え、VDiskブロック群は、再使用および解放の候補として使用され、図4に示すように、第1のVDisk空きブロック情報は、例えば、[2, 3, 14, 15, 16, 17, 18, 19, 20, ..., 24]であり、同時に、SBDへ拡張メッセージを伝えて、SBDに対応する動作を行うように命令する。
【０１０４】
206: S>X*L2%の場合、事前に定義されたファイルFによって占有された空き領域が大きすぎることを示し、事前に定義されたファイルを縮小する。
【０１０５】
2061:  システムはX*(L1%+L2%)/2を縮小されたFのサイズとみなし、区間[X*(L1%+L2%)/2, S]について、ファイルシステムの「file offset -> data block」マッピング(bmap)インタフェースを呼び出して、対応するVDiskブロック群を入手する。
【０１０６】
2062:  メモリを共有することによって、VDiskブロック群に対応する第2のVDisk空きブロック情報をSBDに伝え、同時に、縮小メッセージをSBDに伝えて、SBDに対応する動作を行うように命令し、VDiskブロック群がSBDによって空いている状態とマーク付けされないようにする。
【０１０７】
2063:  ファイルシステムの切り捨てインタフェースを呼び出して、縮小されたFのサイズとしてX*(L1%+L2%)/2をインポートし、VDiskブロック群をVMファイルシステムに返す。
【０１０８】
207: X*L1%<=S<=X*L2%の場合、事前に定義されたファイルFによって占有された空き領域が適切であることを示し、事前に定義されたファイルを拡大または縮小する必要がない。
【０１０９】
208:  適切な期間の間待機した後、ステップ202に戻る。
【０１１０】
事前に定義されるファイルFのサイズがファイルシステムによって制限されるとき、複数の事前に定義されるファイルFを作成する必要がある可能性があることに注意されたい。
【０１１１】
図5bに示すように、SBDによって行われるステップについて次に説明する。
【０１１２】
301: SBAにより事前に定義されたファイルがVDiskの空き領域を占有できる下限比率および上限比率を設定するためのユーザインタフェースを提供する。上限比率および下限比率は、柔軟に設定することができる。例えば、オンラインストレージの移行中、この率は適切に上げて、VDiskの空き領域のコピーをさらに削減する目的を達成する。一般に、下限比率は、約60%に設定することができ、上限比率は80%と90%の間に設定することができる。
【０１１３】
302: SBAによって送信された受信済み拡張メッセージを処理する。このステップでは、SBDは、メモリを共有することによって、解放されるべきVDiskブロックに対応する第1のVDiskの空きブロック情報を取得し、対応するVDiskブロックをマーク付けする。このステップは、具体的には次のステップを含む。
【０１１４】
3031:  第1のVDiskの空きブロック情報に対応するVDiskブロックが利用できるかどうかを判断し、第1のVDiskの空きブロック情報に対応するVDiskブロックが利用できる場合は、VDiskブロックを空いているとマーク付けし、第1のVDiskの空きブロック情報に対応するVDiskブロックが利用できない場合は、処理を行わない。
【０１１５】
3032:  判断およびマーク付けを完了した後、SBAに応答する。
【０１１６】
3033:  空きブロックの一部または全部に対応するディスクスペースを解放し、対応するブロックをポリシーに従って利用できないとマーク付けする。
【０１１７】
単純なポリシーは、空いているとマーク付けされたすべてのブロックを解放し、このブロックに利用できないとマーク付けすることである。
【０１１８】
好ましいポリシーは、次のようである。VMにおいてディスクスペースを割り当てるおよび解放する動作の頻度が、一定の閾値以上であるとき、空きデータブロックはおそらく短時間のうちに再び使用されるため、SBDは、頻繁な解放および再割当てによって引き起こされるオーバヘッドを減らすために、解放される空きデータブロックの比率を下げ、VMにおいてディスクスペースを割り当てるおよび解放する動作の頻度が低いとき、SBDは解放される空きデータブロックの比率を上げる。
【０１１９】
データブロックがファイルの形式であるとき、空きブロックを解放する関数は、ホストファイルシステムの内部インタフェース(free_blocks (start_block, count))をエクスポートすることに依存し、データブロックがブロックインタフェースの形式では、下位レイヤのブロックストレージシステムが空きブロックを解放するよう命令されることに注意されたい。
【０１２０】
303: SBAによって送信された受信済み縮小メッセージを処理する。このステップでは、SBDは、メモリを共有することによって、取り戻すべきVDiskブロックに対応する第2のVDisk空きブロック情報を取得し、対応するVDiskブロックをマーク付けする。このステップは、具体的には次のステップを含む。
【０１２１】
3031: VDiskフォーマットの対応するVDiskブロックが空いているかどうかを判断し、VDiskフォーマットの対応するVDiskブロックが空いている場合、対応するVDiskブロックに利用できるとマーク付けする。
【０１２２】
3032: VDiskフォーマットの対応するVDiskブロックが利用できないかどうかを判断し、VDiskフォーマットの対応するVDiskブロックが利用できない場合、処理を行わない。実際のデータブロックの割当ては、書込み操作中に行われることに注意されたい。
【０１２３】
3033: SBAに応答する。
【０１２４】
要約すれば、本発明の実施形態によりVMストレージスペースを管理するための解決法では、仮想ストレージの空きデータブロック情報は、VMのSBAによってリアルタイムで取得され、VMストレージスペースの使用状況がホストに活発に通知され、解放されるべき空きブロックの情報は、VMMレイヤ(すなわちホスト)に配備されたSBDに伝えられ、ホストはSBDによって仮想ストレージの空きブロックを解放し、再割当てする。ホストは、VMストレージスペースの使用状況をリアルタイムで取得することができるため、リアルタイム特性に優れていると理解することができる。
【０１２５】
さらに、本発明の実施形態によるVMストレージスペースを管理するための解決法では、ストレージシステムの多数の読み書き操作が回避されるため、システムオーバヘッドは小さくなり、またファイルシステムのインタフェースを使用して仮想ストレージの空きブロックを取得するため、ファイルシステムの実行の詳細を知る必要がなく、普遍性に優れている。
【０１２６】
さらに、本発明の実施形態によるVMストレージスペースを管理するための解決法は、動的割当てイメージフォーマットおよび事前割当てミラーフォーマットの両方に適用できる。
【０１２７】
本発明の実施形態によりVMストレージスペースを管理するための解決法では、VMストレージスペースの使用状況がリアルタイムで識別される(すなわち、VMストレージシステムの有効データブロックおよび空きデータブロックが識別される)ため、仮想ストレージの空きブロックに対応する物理ストレージスペースを解放して、ストレージスペースを効率的に管理するようにし、それによって下位レイヤのストレージシステムの利用率を上げることができる。さらに、有効データブロックが識別されるため、オンラインストレージの移行、VMのクローン作成、およびイメージのバックアップなど、I/O集中動作の効率を効果的に上げることができる。本発明の実施形態によるVMストレージスペースを管理するための解決法は、ストレージシステムの自動的にシンプロビジョニングされたスペースを管理するために使用することができると理解することができる。
【０１２８】
本発明の実施形態による方法のステップの全部または一部は、関連ハードウェアを命令するプログラムによって実行されることが可能であると、当業者には理解されたい。プログラムは、コンピュータ可読記憶媒体に格納することができる。記憶媒体には、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク、または光ディスクが含まれる。
【０１２９】
上記では、本発明の実施形態によるVMストレージスペースおよびコンピュータ端末を管理するための方法およびシステムについて、詳細に説明している。本明細書では特定の例を通して、本発明の原理および実施について説明している。本発明の実施形態についての説明は、本発明の方法および核となる考えの理解を容易にするために提供しているにすぎない。当業者は、本発明の理念により特定の実施および応用範囲に関して本発明に対する変更形態および修正形態を作成することができる。したがって本明細書は、本発明の制限と解釈されてはならない。
【符号の説明】
【０１３０】
401  SBAモジュール
402  SBDモジュール
【図１】
0005510556.tif 000002
【図２】
0005510556.tif 000003
【図２ａ】
0005510556.tif 000004
【図２ｂ】
0005510556.tif 000005
【図３】
0005510556.tif 000006
【図４】
0005510556.tif 000007
【図５ａ】
0005510556.tif 000008
【図５ｂ】
0005510556.tif 000009