説明

仮想マシンのストレージスペースおよび物理ホストを管理するための方法およびシステム

仮想マシン(VM)のストレージスペースを管理するための方法を提供する。この方法では、VMに配備されたストレージバルーンエージェント(SBA)モジュールが、仮想ストレージ空きブロック情報を直接取得し、取得した仮想ストレージ空きブロック情報を、仮想マシンモニタ(VMM)レイヤに配備されたストレージバルーンデーモン(SBD)モジュールに伝えるように構成され、SBDモジュールは仮想ストレージ空きブロック情報に対応する物理ストレージスペースの一部または全部を解放し、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けする。本発明では対応するシステムおよび物理ホストをさらに提供する。本発明の一実施形態の方法により、仮想ストレージスペースの使用状況をリアルタイムで取得することができ、ストレージシステムの多数の読み書き操作を回避することができる。この方法は、動的割当てフォーマットの仮想ストレージシステムと、事前割当てフォーマットの仮想ストレージシステムとの両方に適用できる。

【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2010年11月3日に中国特許庁に出願された、「METHOD AND SYSTEM FOR MANAGING VIRTUAL MACHINE STORAGE SPACE AND PHYSICAL HOST」という名称の中国特許出願第201010530638.8号に基づく優先権を主張し、その内容全体を参照により本明細書に組み込むものとする。
【0002】
本発明は、コンピュータ仮想化技術の分野に関し、詳細には、仮想マシン(VM)のストレージスペースおよび物理ホストを管理するための方法およびシステムに関する。
【背景技術】
【0003】
コンピュータ仮想化技術は、下位レイヤのハードウェアデバイスをコンピュータの上位レイヤのオペレーティングシステムおよびアプリケーションから切り離すための減結合(decoupling)方法である。コンピュータ仮想化技術は、下位レイヤのハードウェア資源を直接管理し、仮想マシンモニタ(Virtual Machine Monitor、VMM)レイヤを導入して、上位レイヤのオペレーティングシステムおよびアプリケーションが使用する下位レイヤのハードウェアとは無関係のVMを作成する。対応するVMアーキテクチャを図1に示している。現在普及しているクラウドコンピューティングプラットフォームの重要な下位レイヤサポート技術の1つとして、仮想化技術は物理デバイスの資源利用率を大幅に増大させることができる。従来の物理マシンと比較すると、VMはより優れた独立性(isolation)およびカプセル化特性を有する。VM全体の情報は、スナップショット撮影、バックアップ、クローン作成、およびVM上の配信などの動作を便利に行うために、仮想ディスクイメージ(Virtual Disk Image、VDI)に保存することができる。
【0004】
仮想ディスク(VDisk)は、VMが使用するVMMによって提供される仮想ストレージデバイスである。VDiskに対応する物理ストレージスペースは、ホストのローカルストレージシステム、またはネットワーク接続ストレージ(NAS)ファイルサーバ、ストレージエリアネットワーク(SAN)、ストレージクラスタ、もしくはストレージクラウドなど、データセンタのネットワークストレージシステムとすることができる。VDiskは、ファイルまたはブロックデバイス(ディスクパーティションもしくは論理ボリュームなど)の形態でホストにあることが可能である。
【0005】
VMストレージスペースは、一般に次の2つの方法、すなわち事前割当てと動的割当てで割り当てられる。事前割当てでは、1度に各VMに指定されたサイズを有するストレージスペースが割り当てられる。VMデータが少ないとき、事前割当てはスペースの無駄が大きくなる。仮想ストレージスペースの動的割当ては、ストレージ資源の無駄をある程度まで削減することができる。初めに仮想ストレージスペースは、小さい実際のストレージスペースを占める。ユーザが使用するにつれてますます多くのファイルがVMストレージスペースに作成され、ますます大きいストレージスペースが占有される。
【0006】
動的割当てによってストレージスペースを管理するための既存の方法は、要求に応じて割当てを行うことができるが、VMでファイルの削除が行われるとき、ホストがこの操作を認識することができない場合、VMによってすでに解放されている空き領域をホストは解放することができない。例えば、20GBの仮想ストレージデバイスを有するVMは、最もビジー状態のタスクの間、基本的に全ストレージスペースを一時ファイルとして使用する。タスクが待機状態であるとき、一時ファイルは削除されて、システムには15GBの空き領域があるが、この15GBの空き領域に占有されるホストのストレージ資源は解放されていない。
【0007】
従来の技術では、仮想コンピュータソフトウェアのVM ware Workstationが、VM ware Shrinking Virtual Disk機能を提供し、これにより空きデータブロック(以下、ブロック)をVM Ware仮想マシンディスクフォーマット(Virtual Machine Disk Format、VMDK)の動的VDiskで解放することができる。主なステップは、次のようである。
VMにおいてディスクデフラグを行う(オプション)。
VMのVMツールによってVDiskの空きブロックをゼロに設定する。
【0008】
ホストのサポートツールは、VDiskに対応するファイルまたはブロックデバイスをスキャンして「ゼロ」ブロックを識別し、動的イメージフォーマット特性を利用することによってイメージの縮小を行って、空きデータブロックの解放を完了する。
【0009】
本発明を実施中に、前述の方法では、VMツールがVDiskの空きブロックをゼロに設定する処理において、すべての空きブロックに書込み操作が行われる必要があること、およびホストが「ゼロ」ブロックを識別するとき、すべてのデータブロックに読取り動作が行われる必要があることがわかる。すなわち、既存の方法では、高い動作オーバヘッドが存在し、ディスクの読み書き動作が非常に多いために大量のディスク帯域幅を浪費し、長時間を費やす。さらに、既存の方法では、ホストは「ゼロ」ブロックを識別することによってVDiskの各データブロックのスペース占有を間接的に判断するので、VMのディスクの全体的な空きデータブロック情報をリアルタイムで取得することができない。さらに既存の方法の応用は限られており、この方法は動的割当てイメージフォーマットに適用できるにすぎない。事前割当ミラーフォーマットについては、空きブロックを解放することができない。
【発明の概要】
【発明が解決しようとする課題】
【0010】
本発明の諸実施形態は、ストレージスペースを効率的に管理して、ストレージシステムの利用率を上げるように、VMストレージスペースおよび物理ホストを管理するための方法を提供する。
【課題を解決するための手段】
【0011】
VMストレージスペースを管理するための方法を提供し、この方法は、物理ホストに適用でき、この方法では物理ホストは、ハードウェアレイヤと、ハードウェアレイヤ上で動作するVMMレイヤと、VMMレイヤ上で動作するVMとを含み、VMにストレージバルーンエージェント(Storage Balloon Agent、SBA)モジュールが配備され、VMMレイヤにストレージバルーンデーモン(Storage Balloon Daemon、SBD)モジュールが配備され、この方法は:
事前に定義されたファイルにより占有される仮想ストレージスペースのサイズに従って、占有された仮想ストレージブロックの部分をSBAモジュールによって取得して、仮想ストレージブロックに対応する仮想ストレージ空きブロック情報をSBDモジュールに伝えるステップと、
仮想ストレージ空きブロック情報に対応する物理ストレージスペースの一部または全部をSBDモジュールによって解放して、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けするステップとを含む。
【0012】
VMストレージスペースを管理するためのシステムを提供し、このシステムは、VMに配備されたSBAモジュールと、VMMレイヤに配備されたSBDモジュールとを含み、
SBAモジュールは、事前に定義されたファイルにより占有された仮想ストレージスペースのサイズに従って、占有された仮想ストレージブロックの部分を取得し、仮想ストレージブロックに対応する仮想ストレージ空きブロック情報をSBDモジュールに伝えるように構成され、
SBDモジュールは、仮想ストレージ空きブロック情報に対応する物理ストレージスペースの一部または全部を解放し、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けするように構成される。
【0013】
物理ホストを提供し、この物理ホストは、ハードウェアレイヤと、ハードウェアレイヤ上で動作するVMMレイヤと、VMMレイヤ上で動作する少なくとも1つのVMとを含み、この物理ホストではVMにSBAモジュールが配備され、VMMレイヤにSBDモジュールが配備され、
SBAモジュールは、事前に定義されたファイルにより占有された仮想ストレージスペースのサイズに従って、占有された仮想ストレージブロックの部分を取得し、仮想ストレージブロックのこの部分に対応する仮想ストレージ空きブロック情報をSBDモジュールに伝えるように構成され、
SBDモジュールは、仮想ストレージ空きブロック情報に対応する物理ストレージスペースの一部または全部を解放し、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けするように構成される。
【0014】
本発明の諸実施形態は、次の技術的解決法を採用する:SBAモジュールはVMに配備され、SBDモジュールはVMMレイヤに配備される。SBAモジュールは、事前に定義されたファイルにより占有された仮想ストレージスペースの占有に応じた仮想ストレージ空きブロック情報を取得し、仮想ストレージ空きブロック情報をSBDモジュールに伝える。SBDモジュールは、仮想ストレージ空きブロック情報に対応する物理ストレージスペースを解放する。この技術的解決法により、1つの態様では仮想ストレージ空きブロック情報は、リアルタイムで取得することができるため、リアルタイム特性に優れており、別の態様ではストレージシステムの数多くの読み書き動作を回避するため、システムオーバヘッドが低くなる。さらにこの方法では、ファイルシステムのインタフェースを使用して仮想ストレージ空きブロック情報を取得するため、ファイルシステムの実施の詳細を知る必要がなく、普遍性に優れている。この方法は、動的割当てイメージフォーマットおよび動的割当てミラーフォーマットの両方に適用できる。
【図面の簡単な説明】
【0015】
【図1】VMアーキテクチャの概略図である。
【図2】本発明の一実施形態によるVMストレージスペースを管理するための方法の概略的流れ図である。
【図2a】図2に示す方法のステップ100の特定のステップの概略流れ図である。
【図2b】図2に示す方法のステップ200の特定のステップの概略流れ図である。
【図3】本発明の一実施形態によるVMストレージスペースを管理するためのシステムの論理構造を示す図である。
【図4】本発明の一実施形態による物理ホストの論理構造を示す概略図である。
【図5a】本発明の一実施形態による応用シナリオにおいてVMストレージスペースを管理するための方法の概略流れ図である。
【図5b】本発明の一実施形態による応用シナリオにおいてVMストレージスペースを管理するための方法の概略流れ図である。
【発明を実施するための形態】
【0016】
本発明の一実施形態は、物理ホストに適用されるVMストレージスペースを管理するための方法を提供する。物理ホストは、ハードウェアレイヤと、ハードウェアレイヤ上で動作するVMMレイヤと、VMMレイヤ上で動作するVMとを含み、VMにはSBAモジュールが配備され、VMMレイヤにはSBDモジュールが配備される。この方法では、VMに配備されたSBAは仮想ストレージ空きブロック情報を直接入手し、取得した仮想ストレージ空きブロック情報を、VMMレイヤにありSBAと協力するSBDへ伝え、SBDはVMストレージフォーマットの仮想ストレージ空きブロック情報に対応する物理ストレージスペースを解放する。本発明の一実施形態はさらに、VMストレージスペースおよび物理ホストを管理するための対応するシステムを提供する。次に詳細について説明する。
【0017】
図2は、本発明の一実施形態によるVMストレージスペースを管理するための方法を示す。この方法は、物理ホストに適用できる。物理ホストは、ハードウェアレイヤと、ハードウェアレイヤ上で動作するVMMレイヤと、VMMレイヤ上で動作するVMとを含み、VMにSBAモジュールが配備され、VMMレイヤにSBDモジュールが配備される。この方法は、次のステップを含むことができる。
【0018】
100: SBAモジュールは、事前に定義されたファイルによって占有された仮想ストレージスペースのサイズに従って、占有された仮想ストレージブロックの部分を取得し、この仮想ストレージブロックに対応する仮想ストレージ空きブロック情報をSBDモジュールに伝える。
【0019】
このステップでは、VMに配備されたSBAは、事前に定義されたファイルに占有される仮想ストレージスペースの占有により仮想ストレージ空きブロック情報を直接取得することができるので、ゼロ設定の書込み操作を各空きブロックに行う必要がない。
【0020】
さらに、ある実施の方法では、SBAモジュールは、メモリを共有することによって仮想ストレージブロックに対応する仮想ストレージ空きブロック情報を、VMMレイヤに配備されたSBDモジュールに伝えることができるので、読み取り操作を各空きブロックに行う必要がない。事前に定義されたファイルは、一定の仮想ストレージの空き領域を占有するように機能するいかなるタイプの事前に定義されたファイルであることも可能である。例えば、VMのWindows(登録商標)オペレーティングシステムのドライブCについては、事前に定義されたファイルはC: \baloon.sysであることが可能である。本発明のこの実施形態は、事前に定義されたファイルとして既存ファイルを使用する、または事前に定義されたファイルとして新しいファイルを作成することができる。
【0021】
200: SBDモジュールは、仮想ストレージ空きブロック情報に対応する物理ストレージスペースの一部または全部を解放し、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けする。
【0022】
このステップでは、SBDは空きブロックの解放動作を行う。ある実施の方法では、事前に設定されたポリシーに従って、SBDは空いているとマーク付けされた仮想ストレージブロックの一部または全部に対応する物理ストレージスペースを解放し、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けする。
【0023】
物理ホストのストレージシステムがディスクであるとき、事前に定義されたファイルはVDiskスペースを占有し、また解放されてマーク付けされる物理ストレージスペースは具体的には物理ディスクスペースであることを理解されたい。
【0024】
図2aを参照すると、好ましい解決法では、ステップ100は具体的には次のステップを含むことができる。
【0025】
110: VMに配備されたSBAは、事前に定義されたファイルによって占有された仮想ストレージスペースのサイズを入手された限界値範囲と比較する。
【0026】
事前に定義されたファイルに占有される仮想ストレージスペースのサイズを限界値範囲と比較することによって得られる様々な結果に対して、様々な動作が行われることに注意されたい。
【0027】
限界値範囲は、事前に設定された固定値とすることができる、または他の取得パラメータに応じて特定アルゴリズムにより入手することができる。ある実施の方法では、ステップ110は具体的には次のステップを含むことができる。
【0028】
111: SBAは、仮想ストレージの空き領域のサイズおよび事前に定義されたファイルによって占有された仮想ストレージスペースのサイズを取得するために、ファイルシステムを呼び出し、SBDモジュールから下限比率および上限比率を入手し、事前に定義されたファイルはこの下限比率と上限比率の間で仮想ストレージの空き領域を占有することができる。
【0029】
VMは、ファイルシステムのインタフェースを介して仮想ストレージの空き領域情報を取得する。このステップは、一定の期間に従って繰り返して行われる。例えばこのステップは、1秒から5秒の間隔で行うことができる。
【0030】
下限比率および上限比率は、SBDモジュールにおいて事前に設定され、事前に定義されたファイルは、下限比率と上限比率との間で仮想ストレージの空き領域を占有することができる。上限比率は好ましくは80%から90%であり、下限比率は好ましくは60%から70%である。
【0031】
112: SBAは、下限比率および仮想ストレージの空き領域のサイズの製品、ならびに上限比率および仮想ストレージの空き領域のサイズの製品を、それぞれ事前に設定された限界値範囲の下限値および上限値とみなす。
【0032】
仮想ストレージの空き領域のサイズがXであり、下限比率はL1%であり、上限比率はL2%であると仮定する場合、限界値範囲の下限値はX*L1%であり、限界値範囲の上限値はX*L2%である。
【0033】
113: VMは、事前に定義されたファイルにより占有された仮想ストレージのサイズを、それぞれ限界値範囲の下限値および上限値と比較する。
【0034】
事前に定義されたファイルによって占有された仮想ストレージスペースのサイズがSである場合、SとX*Ll%、ならびにSとX*L2%がそれぞれ比較される。
【0035】
120: 事前に定義されたファイルによって占有された仮想ストレージスペースのサイズが、限界値範囲の下限値よりも小さい場合、SBAは事前に定義されたファイルを拡張するためにファイルシステムを呼び出し、拡張された、事前に定義されたファイルに仮想ストレージブロックを割り当てる。
【0036】
事前に定義されたファイルが下限値よりも小さい場合、仮想ストレージの空き領域が大きすぎることを示すことに注意されたい。この場合、空き領域の一部を開放することが必要である。空き領域の一部を開放するために、事前に定義されたファイルはまず拡張されて、事前に定義されたファイルによって占有された空き領域を増大させ、事前に定義されたファイルの拡張部分に占有される空き領域を解放する必要がある。ある実施の方法では、ステップ120は具体的には次のステップを含むことができる。
【0037】
121: SBAはファイルシステムの事前に割り当てられた(fallocate)インタフェースを呼び出し、拡張された事前に定義されたファイルのサイズとして限界値範囲の中間値をインポートする。中間値は、下限値と上限値の和の半分に等しい。下限値がX*L1%、上限値がX*L2%であるとき、中間値はX*(L1% +L2%)/2である。
【0038】
122: SBAのVMファイルシステムは、拡張された、事前に定義されたファイルに仮想ストレージブロックを割り当てる。
【0039】
例えば、X*(L 1% +L2%)/2のサイズを有する事前に定義されたファイルに、仮想ストレージブロック[b1, b2, ..., bn]を割り当てることができる。
【0040】
123: SBAはファイルシステムのロックインタフェースを呼び出し、拡張された事前に定義されたファイルに割り当てられた仮想ストレージブロックをロックし、ストレージデバイスのデフラグツールによって変更されないようにする。
【0041】
130: SBAはファイルシステムを呼び出して、事前に定義されたファイルの拡張部分で占有された仮想ストレージブロックを入手する。
【0042】
事前に定義されたファイルの拡張部分、すなわち区間[S, X*(L1% +L2%)/2]ついて、VMはファイルシステムの「file offset -> data block」マッピング(bmap)を呼び出して、占有された仮想ストレージブロック[bs, ..., bn]を入手する。
【0043】
140: SBAは、メモリを共有することによって、仮想ストレージブロックを示す第1の仮想ストレージ空きブロック情報をSBDモジュールに伝える。
【0044】
第1の仮想ストレージ空きブロック情報は、SBDモジュールに伝えられ、第1の仮想ストレージ空きブロック情報に対応する物理ストレージスペースが再使用(reclamation)および解放の候補である。第1の仮想ストレージ空きブロック情報は、メモリを共有することによって伝えられ、これは簡単で信頼できるものである。
【0045】
図2bを参照すると、ある実施の方法ではステップ200は、具体的には次のステップを含むことができる。
【0046】
210: VMMレイヤに配備されたSBDは、第1の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが利用できるかどうかを判断し、第1の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが利用できる場合、この仮想ストレージブロックは空いているとマーク付けされる。
【0047】
SBDは、メモリを共有することによって第1の仮想ストレージ空きブロック情報を取得し、第1の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが利用できるかどうかを判断し、第1の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが利用できる場合、仮想ストレージブロックは空いているとマーク付けされ、第1の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが利用できない場合、処理は行われない。処理が完了した後に、SBDはSBAに応答する。
【0048】
220: SBDは、空いているとマーク付けされた仮想ストレージブロックの一部または全部に対応する物理ストレージスペースを解放し、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けする。
【0049】
このステップでは、SBDは空きブロックの解放動作を行う。事前に設定されたポリシーにより、SBDは、空いているとマーク付けされた仮想ストレージブロックの一部または全部に対応する物理ストレージスペースを解放することができ、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けする。
【0050】
実際の実行では、簡単にするために単純なポリシーを実行することができ、すなわち、空いているとマーク付けされた仮想ストレージブロックについては、仮想ストレージブロックに対応する物理ストレージスペースが完全に解放され、解放された物理ストレージスペースに対応する仮想ストレージブロックは、利用できないとマーク付けされる。
【0051】
仮想ストレージの管理レベルを上げるために、好ましいポリシーを実行することもでき、すなわち、VMにおいてストレージスペースを割り当てるおよび/または解放する動作の頻度が閾値(ここでは閾値は、事前に設定することができる、または動的計算によって入手することができる)以上であるとき、SBDは解放される空きブロックの比率を下げ、VMにおいてストレージスペースを割り当てるおよび/または解放する動作の頻度が低いとき、SBDは解放されて空きブロックの比率を上げる。具体的には、SBDはVMにおいてストレージスペースを割り当てるまたは解放する動作の頻度が、事前に設定した閾値以上であるかどうかを判断し、VMにおいてストレージスペースを割り当てるまたは解放する動作の頻度が事前に設定した閾値以上ではない場合、SBDは事前に設定した比率で、空いているとマーク付けされた仮想ストレージブロックに対応する物理ストレージスペースを解放し、例えば、事前に設定した80%の比率で物理ストレージスペースを解放し、VMにおいてストレージスペースを割り当てるまたは解放する動作の頻度が事前に設定した閾値以上である場合、SBDは事前に設定したレートで事前に設定した比率を下げ、下げた比率で、空いているとマーク付けされた仮想ストレージブロックに対応する物理ストレージスペースを解放する。例えば、事前に設定された80%という比率は、毎秒1%のレートで下げられ、物理ストレージスペースは、例えば75%または70%の下げた比率で解放される。解放される空きブロックの比率は、空きブロックが短時間後に再び使用される可能性が高いために下げられ、頻繁に解放および再割当てを行うことによるオーバヘッドを削減するようにする。厳密には、VMにおいてストレージスペースを割り当てるおよび解放する動作の頻度が低いとき、解放される空きブロックの比率は、適切に上げられるべきである。空きブロックに対応するストレージスペースがファイルである場合、データブロックを解放する関数は、ホストファイルシステムの内部インタフェース(free_blocks (start_block, count))をエクスポートすることによる。仮想ストレージブロックに対応するストレージスペースがブロックデバイスである場合、空きブロックが解放されるとき、下位レイヤのデータブロックストレージシ
ステムが、空きブロックを解放するよう命令される。
【0052】
図2aを参照すると、本発明の実施形態による方法では、ステップ110後に、すなわちSBAが事前に定義されたファイルによって占有された仮想ストレージスペースのサイズを、入手した限界値範囲と比較した後に、この方法は、さらに次のステップを含むことができる。
【0053】
150: 事前に定義されたファイルによって占有された仮想ストレージスペースが、限界値範囲の上限値よりも大きい場合、ファイルシステムを呼び出して事前に定義されたファイルの部分によって占有された仮想ストレージブロックを入手して縮小する。
事前に定義されたファイルが、上限値よりも大きい場合、このファイルは仮想ストレージの空き領域が小さすぎることを示す。この場合、事前に定義されたファイルによって占有された空き領域の部分をVMファイルシステムに返す必要がある。空き領域の部分を返すために、事前に定義されたファイルは縮小されて、事前に定義されたファイルに占有される空き領域を減らす必要があり、縮小された部分に占有された空き領域を解放するようにする。
【0054】
SBAは、縮小される事前に定義されたファイルのサイズとして目標値を取得する。目標値よりも大きい部分が、縮小されるべき部分であり、切り捨てられて削除される。ある実施の方法では、限界値範囲の中間値が、事前に定義されたファイルを縮小するための目標サイズとみなされる。事前に定義されたファイルの元のサイズがSであって、中間値がX*(L1% +L2%)/2であるとき、縮小されるべき事前に定義されたファイルの部分は、区間[X*(L1% +L2%)12, S]である。この区間に対して、VMはシステムの「file offset -> data block」マッピング(bmap)インタフェースを呼び出して、対応する仮想ストレージブロックを入手する。
【0055】
160: SBAは、縮小されるべき部分によって占有された仮想ストレージブロックを示す第2の仮想ストレージ空きブロック情報をSBDへ伝えて、縮小されるべき部分で占有されている仮想ストレージブロックを空いている状態とマーク付けしないようSBDに命令する。
【0056】
縮小されるべき部分によって占有された仮想ストレージブロックが空いている状態とマーク付けされる場合、縮小されるべき部分によって占有される仮想ストレージブロックはSBDによって解放され、VMファイルシステムに返すことができないため、縮小されるべき部分で占有された仮想ストレージブロックが空いているとマーク付けされないことを確実にするために、SBDに遅れることなく通知する必要がある。ある実施の方法では、第2の仮想ストレージ空きブロック情報は、メモリを共有することによって伝えられるが、これは簡単で確実である。
【0057】
SBDが、SBAによって伝えられた第2の仮想ストレージ空きブロック情報を受信した後、ステップ230が行われる。230: SBDは、第2の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが空いているかどうかを判断し、第2の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが空いている場合、仮想ストレージブロックは利用できるとマーク付けされる。
【0058】
SBDは、メモリを共有することによって第2の仮想ストレージ空きブロック情報を取得し、第2の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが空いているかどうかを判断し、第2の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが空いている場合、仮想ストレージブロックは利用できるとマーク付けされ、第2の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが利用できない場合、処理は行われない。VMにおけるデータブロックの割当ては、仮想レイヤで行われるのみであり、物理ストレージスペースにおける実際のデータブロックの割当ては、書込み操作中に行われることに注意されたい。処理が完了した後に、SBDはSBAに応答する。
【0059】
170: SBAは、ファイルシステムを呼び出して、事前に定義されたファイルを縮小する。
【0060】
SBAはファイルシステムの切り捨てインタフェース(truncate interface)を呼び出して、縮小される事前に定義されたファイルのサイズとして事前に設定された限界値範囲の中間値をインポートする。中間値は、下限値と上限値の和の半分に等しい。
【0061】
縮小されるべき事前に定義されたファイルの部分(すなわち、切り捨てられる部分)によって占有され、利用できるとマーク付けされた仮想ストレージブロック(すなわち、第2の仮想ストレージ空きブロック情報に対応する仮想ストレージブロック)は、VMファイルシステムに返される。
【0062】
この方法の好ましい解決法では、事前に定義されたファイルによって占有された仮想ストレージスペースが限界値範囲の下限値よりも小さい状況、および事前に定義されたファイルによって占有された仮想ストレージスペースが限界値範囲の上限値よりも大きい状況が、それぞれ処理される。
【0063】
事前に定義されたファイルのサイズが、限界値範囲の下限値と上限値の間であるとき、これは仮想ストレージの空き領域のサイズが適切であることを示し、処理は行われないことに注意されたい。
【0064】
本発明の実施形態によるVMストレージスペースを管理するための方法は、一定の期間に従って周期的に行われる。ステップ110後に、すなわちVMに配備されたSBAが、事前に定義されたファイルによって占有された仮想ストレージスペースのサイズを、入手した限界値範囲と比較した後に、比較の結果に従ってそれぞれ様々な動作が行われる。動作が行われた後に、たとえ事前に定義されたファイルのサイズおよび入手された限界値範囲が変更されても、手順は次の周期に戻る。
【0065】
要約すれば、本発明の実施形態によるVMストレージスペースを管理するための方法では、仮想ストレージの空きデータブロック情報は、VMのSBAによってリアルタイムで取得され、VMストレージスペースの使用状況がホストに活発に通知され、解放されるべき空きブロックの情報は、VMMレイヤ(すなわちホスト)に配備されたSBDに伝えられ、ホストはSBDによって仮想ストレージの空きブロックを解放し、再割当てする。ホストは、リアルタイムでVMストレージスペースの使用状況を取得することができるので、リアルタイム特性に優れていると理解することができる。
【0066】
さらに、本発明の実施形態によるVMストレージスペースを管理するための方法では、ストレージシステムの多数の読み書き操作を回避するため、システムオーバヘッドは小さくなり、またファイルシステムのインタフェースを使用して仮想ストレージの空きブロックを取得するため、ファイルシステムの実行の詳細を知る必要がなく、普遍性に優れている。
【0067】
さらに、本発明の実施形態によるVMストレージスペースを管理するための方法は、動的割当てイメージフォーマットおよび事前割当てミラーフォーマットの両方に適用できる。
【0068】
本発明の実施形態によるVMストレージスペースを管理するための方法では、VMストレージスペースの使用状況がリアルタイムで識別される(すなわち、VMストレージシステムの有効データブロックおよび空きデータブロックが識別される)ため、仮想ストレージの空きブロックに対応する物理ストレージスペースを解放して、ストレージスペースを効率的に管理するようにし、それによって下位レイヤのストレージシステムの利用率を上げることができる。さらに、有効データブロックが識別されて、オンラインストレージの移行、VMのクローン作成、およびイメージのバックアップなど、入力/出力(I/O)の集中動作の効率を効果的に上げることができる。本発明の実施形態によるVMストレージスペースを管理するための解決法は、ストレージシステムの自動的にシンプロビジョニングされたスペースを管理するために使用することができると理解することができる。
【0069】
図3に示すように、本発明の一実施形態は、TMストレージスペースを管理するためのシステムを提供し、このシステムはVMに配備されたSBAモジュールと、VMMレイヤに配備されたSBDモジュールとを含む。このシステムは、物理ホストで動作する。
【0070】
次では、VMストレージスペースを管理するためのシステムが動作する物理ホストの論理アーキテクチャについてまず説明する。図4に示すように、物理ホストは、ハードウェアレイヤと、ホストと、VMとを含む。
【0071】
ハードウェアレイヤは、仮想環境が動作するすべてのハードウェアプラットフォームであり、プロセッサ(例えば中央処理装置(CPU))、メモリ、ストレージシステム(例えばディスクまたはハードディスク)、ネットワークインタフェースカード(NIC)、I/Oデバイスなどを含むことができる。
【0072】
ホストすなわちVMMレイヤは、管理レイヤとしてハードウェアリソースの管理および割当てを完了し、VMに仮想ハードウェアプラットフォームを提示し、VMをスケジュールして独立させる。一部のVMMの実行中には、特権的(privileged)VMの協力を必要とし、特権的VMおよびVMMは結合されてホストを形成する。仮想ハードウェアプラットフォームは、その上のVMに、仮想CPU(VCPU)、仮想メモリ、VDisk、および仮想NICなど、様々なハードウェアリソースを提供する。VDiskは、ホストにおけるファイルまたは論理ブロックデバイスに対応する。VDiskの連続ブロックは、ホストに別々に格納することができ、したがって構成および管理の便宜上、VMディスクイメージは、一般にイメージフォーマットで記述され、メタデータ領域が使用されてVDiskデータブロックとホストのデータブロックとのマッピング関係を格納する。
【0073】
VMは、ホストによって用意された仮想プラットフォームで動作する。大部分の時間では、VMの実行はホストによって影響を及ぼされない。
【0074】
次では、SBAモジュールおよびSBDモジュールについて説明する。SBAはVMに配備され、SBDはVMMレイヤに配備される。
【0075】
SBAモジュール401は、事前に定義されたファイルによって占有された仮想ストレージスペースのサイズに従って、占有された仮想ストレージブロックの部分を取得し、この仮想ストレージブロックに対応する仮想ストレージ空きブロック情報をSBDモジュールに伝えるように構成される。
【0076】
SBDモジュール402は、仮想ストレージ空きブロック情報に対応する物理ストレージスペースの一部または全部を解放し、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けするように構成される。
【0077】
ある実施の方法では、SBAモジュール401は具体的には以下を含むことができる:
事前に定義されたファイルによって占有された仮想ストレージスペースのサイズを入手した限界地範囲と比較するように構成された、比較ユニット。
事前に定義されたファイルによって占有された仮想ストレージスペースが、限界値範囲の下限値よりも小さい場合、ファイルシステムを呼び出して事前に定義されたファイルを拡張し、拡張した事前に定義されたファイルにデータブロックを割り当てるように構成された、拡張ユニット。
ファイルシステムを呼び出して事前に定義されたファイルの拡張部分によって占有される仮想ストレージブロックを取得するように構成された、取得ユニット。
第1の仮想ストレージ空きブロック情報をSBDモジュールに伝えるように構成された、引渡ユニット。
【0078】
ある実施の方法では、SBDモジュール402は具体的には以下を含むことができる:
第1の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが利用可能であるかどうかを判定するように構成され、第1のストレージグリーブロック情報に対応する仮想ストレージブロックが利用でき、仮想ストレージブロックを空いているとマーク付けする、判定ユニット。
ポリシーに従って、空いているとマーク付けされた仮想ストレージブロックの一部または全部に対応する物理ストレージスペースを解放し、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けするように構成された、解放およびマーク付けユニット。
【0079】
要約すれば、本発明の実施形態によるVMストレージスペースを管理するためのシステムでは、仮想ストレージの空きデータブロック情報は、VMのSBAによってリアルタイムで取得され、VMストレージスペースの使用状況がホストに活発に通知され、解放されるべき空きブロックの情報は、VMMレイヤ(すなわちホスト)に配備されたSBDに伝えられ、ホストはSBDによって仮想ストレージの空きブロックを解放し、再割当てする。ホストは、VMストレージスペースの使用状況をリアルタイムで取得することができ、したがってリアルタイム特性に優れていると理解することができる。
【0080】
さらに、本発明の実施形態によるVMストレージスペースを管理するためのシステムでは、ストレージシステムの多数の読み書き操作が回避されるため、システムオーバヘッドは小さくなり、またファイルシステムのインタフェースを使用して仮想ストレージの空きブロックを取得するため、ファイルシステムの実行の詳細を知る必要がなく、普遍性に優れている。
【0081】
さらに、本発明の実施形態によるVMストレージスペースを管理するためのシステムは、動的割当てイメージフォーマットおよび事前割当てミラーフォーマットの両方に適用できる。
【0082】
本発明の実施形態によるVMストレージスペースを管理するためのシステムでは、VMストレージスペースの使用状況は、リアルタイムで識別される(すなわち、VMストレージシステムの有効データブロックおよび空きデータブロックが識別される)ため、仮想ストレージの空きブロックに対応する物理ストレージスペースを解放して、ストレージスペースを効率的に管理するようにし、それによって下位レイヤのストレージシステムの利用率を上げることができる。さらに、有効データブロックが識別されるため、オンラインストレージの移行、VMのクローン作成、およびイメージのバックアップなど、I/O集中動作の効率を効果的に上げることができる。本発明の実施形態によるVMストレージスペースを管理するための解決法は、ストレージシステムの自動的にシンプロビジョニングされたスペースを管理するために使用することができると理解することができる。
【0083】
図4に示すように、本発明の一実施形態はさらに、ハードウェアレイヤと、ハードウェアレイヤ上で動作するVMMレイヤと、VMMレイヤ上で動作する少なくとも1つのVMとを含み、VMにSBAが配備され、VMMレイヤにSBDが配備された、物理ホストを提供する。
【0084】
SBAモジュールは、事前に定義されたファイルによって占有された仮想ストレージスペースのサイズに従って、占有された仮想ストレージブロックの部分を取得し、この仮想ストレージブロックに対応する仮想ストレージ空きブロック情報をSBDモジュールに伝えるように構成される。SBDモジュールは、仮想ストレージ空きブロック情報に対応する物理ストレージスペースの一部または全部を解放し、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けするように構成される。
【0085】
ある実施の方法では、SBAモジュールは具体的には、事前に定義されたファイルによって占有された仮想ストレージスペースのサイズを入手した限界値範囲と比較する、事前に定義されたファイルによって占有された仮想ストレージスペースが限界値範囲の下限値よりも小さい場合、ファイルシステムを呼び出して事前に定義されたファイルを拡張し、拡張された事前に定義されたファイルに仮想ストレージブロックを割り当てる、ファイルシステムを呼び出して、事前に定義されたファイルの拡張部分によって占有された仮想ストレージブロックを取得する、仮想ストレージブロックを示す第1の仮想ストレージ空きブロック情報をSBDモジュールに伝えるように構成される。
【0086】
SBDモジュールは具体的には、第1の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが利用できるかどうかを判断する、第1の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが利用可能である場合、仮想ストレージブロックを空いているとマーク付けする、ポリシーに従って、空いているとマーク付けされた仮想ストレージブロックの一部または全部に対応する物理ストレージスペースを解放する、解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けするように構成される。
【0087】
ある実施の方法では、SBAモジュールはさらに、事前に定義されたファイルによって占有された仮想ストレージスペースが限界値範囲の上限値よりも大きい場合、ファイルシステムを呼び出して縮小されるべき事前に定義されたファイルの部分によって占有された仮想ストレージブロックを入手する、仮想ストレージブロックを示す第2の仮想ストレージ空きブロック情報をSBDモジュールに伝える、ファイルシステムを呼び出して事前に定義されたファイルを縮小するように構成される。
【0088】
SBDモジュールはさらに、第2の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが空いているかどうかを判断し、第2の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが空いている場合、仮想ストレージブロックは利用できるとマーク付けするように構成される。
【0089】
要約すれば、本発明の実施形態による物理ホストでは、仮想ストレージの空きデータブロック情報は、VMのSBAによってリアルタイムで取得され、VMストレージスペースの使用状況がホストに活発に通知され、解放されるべき空きブロックの情報は、VMMレイヤ(すなわちホスト)に配備されたSBDに伝えられ、ホストはSBDによって仮想ストレージの空きブロックを解放し、再割当てする。ホストは、VMストレージスペースの使用状況をリアルタイムで取得することができるため、リアルタイム特性に優れていると理解することができる。
【0090】
さらに、本発明の実施形態による物理ホストでは、ストレージシステムの多数の読み書き操作が回避されるため、システムオーバヘッドは小さくなり、またファイルシステムのインタフェースを使用して仮想ストレージの空きブロックを取得するため、ファイルシステムの実行の詳細を知る必要がなく、普遍性に優れている。
【0091】
さらに、本発明の実施形態による物理ホストは、動的割当てイメージフォーマットおよび事前割当てミラーフォーマットの両方に適用できる。
【0092】
本発明の実施形態による物理ホストでは、VMストレージスペースの使用状況がリアルタイムで識別される(すなわち、VMストレージシステムの有効データブロックおよび空きデータブロックが識別される)ため、仮想ストレージの空きブロックに対応する物理ストレージスペースを解放して、ストレージスペースを効率的に管理するようにし、それによって下位レイヤのストレージシステムの利用率を上げることができる。さらに、有効データブロックが識別されるため、オンラインストレージの移行、VMのクローン作成、およびイメージのバックアップなど、I/O集中動作の効率を効果的に上げることができる。本発明の実施形態によるVMストレージスペースを管理するための解決法は、ストレージシステムの自動的にシンプロビジョニングされたスペースを管理するために使用することができると理解することができる。
【0093】
理解を容易にするための便宜上、前述の実施形態で説明したVMストレージスペースを管理するための方法は、特定の応用のシナリオにおいて詳細に説明している。明瞭にするために、SBAによって行われるステップは、SBDによって行われるステップとは別に説明している。この実施形態において、下位レイヤのストレージシステムがディスクであることは、説明のための一例とみなされる。したがって物理ストレージスペースは物理ディスクスペースであり、仮想ストレージスペースはVDiskスペースである。
【0094】
図5aに示すように、まずSBAによって行われるステップについて次に説明する。
【0095】
201: 事前に定義されたファイル(F、Windows(登録商標)のドライブCについては、事前に定義されたファイルは、C:\balloon.sysとすることができる)が存在しない場合、事前に定義されたファイルを作成する。
【0096】
202: 事前に定義されたファイルFのファイルサイズSを取得する。
【0097】
203: ファイルシステムのインタフェースを介して、空き領域のサイズXなど、VDiskの空き領域情報を入手する。
【0098】
204: 図4に示すように、SBDから、FがVDiskの空き領域を占有することができる下限比率(L1%)および上限比率(L2%)の設定を取得する。
【0099】
205: 事前に定義されたファイルのサイズSを事前に設定された限界値範囲と比較し、S<X*L1%の場合、事前に設定されたファイルFによって占有される空き領域が小さすぎることを示し、事前に定義されたファイルを拡張する。
【0100】
2011: ファイルシステムの事前に割当てられた(fallocate)インタフェースを呼び出し、事前に設定されたファイルFのサイズとしてX*(Ll%+L2%)/2をインポートし、ファイルシステムは、データブロック[b1,b2,…,bn]をファイルに割り当てる。
【0101】
2022: ファイルシステムのロックインタフェースを呼び出し、事前に定義されたファイルFに対応するVDiskのデータブロックが、ディスクデフラグツールによって変更されていないことを確認する。
【0102】
2023: 事前に定義されたファイルの拡張部分、すなわち区間[S, X*(L1% +L2%)/2]については、ファイルシステムの「file offset -> data block」マッピング(bmap)インタフェースを呼び出して、対応するVDiskのブロック群を入手する。
【0103】
2024: メモリを共有することによってVDiskブロック群に対応する第1のVDisk空きブロック情報をSBDへ伝え、VDiskブロック群は、再使用および解放の候補として使用され、図4に示すように、第1のVDisk空きブロック情報は、例えば、[2, 3, 14, 15, 16, 17, 18, 19, 20, ..., 24]であり、同時に、SBDへ拡張メッセージを伝えて、SBDに対応する動作を行うように命令する。
【0104】
206: S>X*L2%の場合、事前に定義されたファイルFによって占有された空き領域が大きすぎることを示し、事前に定義されたファイルを縮小する。
【0105】
2061: システムはX*(L1%+L2%)/2を縮小されたFのサイズとみなし、区間[X*(L1%+L2%)/2, S]について、ファイルシステムの「file offset -> data block」マッピング(bmap)インタフェースを呼び出して、対応するVDiskブロック群を入手する。
【0106】
2062: メモリを共有することによって、VDiskブロック群に対応する第2のVDisk空きブロック情報をSBDに伝え、同時に、縮小メッセージをSBDに伝えて、SBDに対応する動作を行うように命令し、VDiskブロック群がSBDによって空いている状態とマーク付けされないようにする。
【0107】
2063: ファイルシステムの切り捨てインタフェースを呼び出して、縮小されたFのサイズとしてX*(L1%+L2%)/2をインポートし、VDiskブロック群をVMファイルシステムに返す。
【0108】
207: X*L1%<=S<=X*L2%の場合、事前に定義されたファイルFによって占有された空き領域が適切であることを示し、事前に定義されたファイルを拡大または縮小する必要がない。
【0109】
208: 適切な期間の間待機した後、ステップ202に戻る。
【0110】
事前に定義されるファイルFのサイズがファイルシステムによって制限されるとき、複数の事前に定義されるファイルFを作成する必要がある可能性があることに注意されたい。
【0111】
図5bに示すように、SBDによって行われるステップについて次に説明する。
【0112】
301: SBAにより事前に定義されたファイルがVDiskの空き領域を占有できる下限比率および上限比率を設定するためのユーザインタフェースを提供する。上限比率および下限比率は、柔軟に設定することができる。例えば、オンラインストレージの移行中、この率は適切に上げて、VDiskの空き領域のコピーをさらに削減する目的を達成する。一般に、下限比率は、約60%に設定することができ、上限比率は80%と90%の間に設定することができる。
【0113】
302: SBAによって送信された受信済み拡張メッセージを処理する。このステップでは、SBDは、メモリを共有することによって、解放されるべきVDiskブロックに対応する第1のVDiskの空きブロック情報を取得し、対応するVDiskブロックをマーク付けする。このステップは、具体的には次のステップを含む。
【0114】
3031: 第1のVDiskの空きブロック情報に対応するVDiskブロックが利用できるかどうかを判断し、第1のVDiskの空きブロック情報に対応するVDiskブロックが利用できる場合は、VDiskブロックを空いているとマーク付けし、第1のVDiskの空きブロック情報に対応するVDiskブロックが利用できない場合は、処理を行わない。
【0115】
3032: 判断およびマーク付けを完了した後、SBAに応答する。
【0116】
3033: 空きブロックの一部または全部に対応するディスクスペースを解放し、対応するブロックをポリシーに従って利用できないとマーク付けする。
【0117】
単純なポリシーは、空いているとマーク付けされたすべてのブロックを解放し、このブロックに利用できないとマーク付けすることである。
【0118】
好ましいポリシーは、次のようである。VMにおいてディスクスペースを割り当てるおよび解放する動作の頻度が、一定の閾値以上であるとき、空きデータブロックはおそらく短時間のうちに再び使用されるため、SBDは、頻繁な解放および再割当てによって引き起こされるオーバヘッドを減らすために、解放される空きデータブロックの比率を下げ、VMにおいてディスクスペースを割り当てるおよび解放する動作の頻度が低いとき、SBDは解放される空きデータブロックの比率を上げる。
【0119】
データブロックがファイルの形式であるとき、空きブロックを解放する関数は、ホストファイルシステムの内部インタフェース(free_blocks (start_block, count))をエクスポートすることに依存し、データブロックがブロックインタフェースの形式では、下位レイヤのブロックストレージシステムが空きブロックを解放するよう命令されることに注意されたい。
【0120】
303: SBAによって送信された受信済み縮小メッセージを処理する。このステップでは、SBDは、メモリを共有することによって、取り戻すべきVDiskブロックに対応する第2のVDisk空きブロック情報を取得し、対応するVDiskブロックをマーク付けする。このステップは、具体的には次のステップを含む。
【0121】
3031: VDiskフォーマットの対応するVDiskブロックが空いているかどうかを判断し、VDiskフォーマットの対応するVDiskブロックが空いている場合、対応するVDiskブロックに利用できるとマーク付けする。
【0122】
3032: VDiskフォーマットの対応するVDiskブロックが利用できないかどうかを判断し、VDiskフォーマットの対応するVDiskブロックが利用できない場合、処理を行わない。実際のデータブロックの割当ては、書込み操作中に行われることに注意されたい。
【0123】
3033: SBAに応答する。
【0124】
要約すれば、本発明の実施形態によりVMストレージスペースを管理するための解決法では、仮想ストレージの空きデータブロック情報は、VMのSBAによってリアルタイムで取得され、VMストレージスペースの使用状況がホストに活発に通知され、解放されるべき空きブロックの情報は、VMMレイヤ(すなわちホスト)に配備されたSBDに伝えられ、ホストはSBDによって仮想ストレージの空きブロックを解放し、再割当てする。ホストは、VMストレージスペースの使用状況をリアルタイムで取得することができるため、リアルタイム特性に優れていると理解することができる。
【0125】
さらに、本発明の実施形態によるVMストレージスペースを管理するための解決法では、ストレージシステムの多数の読み書き操作が回避されるため、システムオーバヘッドは小さくなり、またファイルシステムのインタフェースを使用して仮想ストレージの空きブロックを取得するため、ファイルシステムの実行の詳細を知る必要がなく、普遍性に優れている。
【0126】
さらに、本発明の実施形態によるVMストレージスペースを管理するための解決法は、動的割当てイメージフォーマットおよび事前割当てミラーフォーマットの両方に適用できる。
【0127】
本発明の実施形態によりVMストレージスペースを管理するための解決法では、VMストレージスペースの使用状況がリアルタイムで識別される(すなわち、VMストレージシステムの有効データブロックおよび空きデータブロックが識別される)ため、仮想ストレージの空きブロックに対応する物理ストレージスペースを解放して、ストレージスペースを効率的に管理するようにし、それによって下位レイヤのストレージシステムの利用率を上げることができる。さらに、有効データブロックが識別されるため、オンラインストレージの移行、VMのクローン作成、およびイメージのバックアップなど、I/O集中動作の効率を効果的に上げることができる。本発明の実施形態によるVMストレージスペースを管理するための解決法は、ストレージシステムの自動的にシンプロビジョニングされたスペースを管理するために使用することができると理解することができる。
【0128】
本発明の実施形態による方法のステップの全部または一部は、関連ハードウェアを命令するプログラムによって実行されることが可能であると、当業者には理解されたい。プログラムは、コンピュータ可読記憶媒体に格納することができる。記憶媒体には、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク、または光ディスクが含まれる。
【0129】
上記では、本発明の実施形態によるVMストレージスペースおよびコンピュータ端末を管理するための方法およびシステムについて、詳細に説明している。本明細書では特定の例を通して、本発明の原理および実施について説明している。本発明の実施形態についての説明は、本発明の方法および核となる考えの理解を容易にするために提供しているにすぎない。当業者は、本発明の理念により特定の実施および応用範囲に関して本発明に対する変更形態および修正形態を作成することができる。したがって本明細書は、本発明の制限と解釈されてはならない。
【符号の説明】
【0130】
401 SBAモジュール
402 SBDモジュール

【特許請求の範囲】
【請求項1】
物理ホストに適用できる、仮想マシン(VM)のストレージスペースを管理するための方法であって、前記物理ホストがハードウェアレイヤと、前記ハードウェアレイヤ上で動作する仮想マシンモニタ(VMM)レイヤと、前記VMMレイヤ上で動作するVMとを備え、前記VMにストレージバルーンエージェント(SBA)モジュールが配備され、前記VMMレイヤにストレージバルーンデーモン(SBD)モジュールが配備され、
前記SBAモジュールによって、事前に定義されたファイルによって占有された仮想ストレージスペースのサイズに従って、占有された仮想ストレージブロックの部分を取得し、前記仮想ストレージブロックに対応する仮想ストレージ空きブロック情報を前記SBDモジュールに伝えるステップと、
前記SBDモジュールによって、前記仮想ストレージ空きブロック情報に対応する物理ストレージスペースの一部または全部を解放し、前記解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けするステップとを含む、方法。
【請求項2】
前記SBAモジュールによって、前記事前に定義されたファイルによって占有された前記仮想ストレージスペースの前記サイズに従って、前記占有された仮想ストレージブロックの部分を取得し、前記仮想ストレージブロックに対応する前記仮想ストレージ空きブロック情報を前記SBDモジュールに伝える前記ステップが、
前記SBAモジュールによって、前記事前に定義されたファイルによって占有された前記仮想ストレージスペースの前記サイズを入手した限界値範囲と比較するステップと、
前記事前に定義されたファイルによって占有された前記仮想ストレージスペースが、前記限界値範囲の下限値よりも小さい場合、ファイルシステムを呼び出して前記事前に定義されたファイルを拡張し、拡張された前記事前に定義されたファイルに仮想ストレージブロックを割り当てるステップと、
前記ファイルシステムを呼び出して、前記事前に定義されたファイルの拡張部分で占有された仮想ストレージブロックを入手するステップと、
前記仮想ストレージブロックを示す第1の仮想ストレージ空きブロック情報を前記SBDモジュールに伝えるステップとを含む、請求項1に記載の方法。
【請求項3】
前記SBDモジュールによって、前記仮想ストレージ空きブロック情報に対応する前記物理ストレージスペースの一部または全部を解放し、前記解放した物理ストレージスペースに対応する前記仮想ストレージブロックに利用できないとマーク付けする前記ステップが、
前記SBDモジュールによって、第1の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが利用できるかどうかを判断し、前記第1の仮想ストレージ空きブロック情報に対応する前記仮想ストレージブロックが利用できる場合、前記仮想ストレージブロックを空いているとマーク付けするステップと、
ポリシーにより、空いているとマーク付けされた前記仮想ストレージブロックの一部または全部に対応する物理ストレージスペースを解放し、前記解放した物理ストレージスペースに対応する前記仮想ストレージブロックに利用できないとマーク付けするステップとを含む、請求項2に記載の方法。
【請求項4】
前記SBAモジュールによって、前記事前に定義されたファイルによって占有された前記仮想ストレージスペースの前記サイズを前記入手された限界値範囲と比較する前記ステップの後に、
前記事前に定義されたファイルによって占有された前記仮想ストレージスペースが、前記限界値範囲の上限値よりも大きい場合、前記ファイルシステムを呼び出して、縮小されるべき前記事前に定義されたファイルの部分によって占有された仮想ストレージブロックを入手するステップと、
前記仮想ストレージブロックを示す第2の仮想ストレージ空きブロック情報を前記SBDモジュールに伝えるステップとをさらに含む、請求項2に記載の方法。
【請求項5】
前記仮想ストレージブロックを示す前記第2の仮想ストレージ空きブロック情報を前記SBDモジュールに伝える前記ステップの後に、
前記SBDモジュールによって、前記第2の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが空いているかどうかを判断し、前記第2の仮想ストレージ空きブロック情報に対応する前記仮想ストレージブロックが空いている場合、前記仮想ストレージブロックに利用できるとマーク付けするステップと、前記SBAモジュールによって、前記ファイルシステムを呼び出して前記事前に定義されたファイルを縮小するステップとをさらに含む、請求項4に記載の方法。
【請求項6】
前記SBAモジュールによって、前記事前に定義されたファイルによって占有された前記仮想ストレージスペースの前記サイズを前記入手された限界値範囲と比較する前記ステップが、
前記SBAモジュールによって、前記ファイルシステムを呼び出して仮想ストレージ空き領域のサイズおよび前記事前に定義されたファイルによって占有された前記仮想ストレージスペースの前記サイズを取得し、前記SBDモジュールから下限比率および上限比率を入手するステップであって、前記事前に定義されたファイルが前記下限比率と前記上限比率との間で前記仮想ストレージ空き領域を占有することを許可されるステップと、
前記下限比率および前記仮想ストレージ空き領域の前記サイズの積、ならびに前記上限比率および前記仮想ストレージ空き領域の前記サイズの積を、それぞれ前記限界値範囲の前記下限値および前記上限値とみなすステップと、
前記事前に定義されたファイルによって占有された前記仮想ストレージスペースの前記サイズを、それぞれ前記限界値範囲の前記下限値および前記上限値と比較するステップとを含む、請求項2から5のいずれか一項に記載の方法。
【請求項7】
前記事前に定義されたファイルを拡張するために前記ファイルシステムを呼び出す前記ステップが、
前記SBAモジュールによって、前記ファイルシステムの事前に割り当てられた(fallocate)インタフェースを呼び出すステップと、
前記限界値範囲の中間値を前記拡張された事前に定義されたファイルのサイズとしてインポートするステップであって、前記中間値が前記限界値範囲の前記下限値と前記上限値の和の半分に等しいステップとを含む、請求項2または3に記載の方法。
【請求項8】
前記事前に定義されたファイルを縮小するために前記ファイルシステムを呼び出す前記ステップが、
前記SBAモジュールによって、前記システムの切り捨てインタフェースを呼び出して、前記限界値範囲の中間値を縮小された前記事前に定義されたファイルのサイズとしてインポートするステップであって、前記中間値が前記限界値範囲の前記下限値と前記上限値との和の半分に等しいステップと、
利用できるとマーク付けされ、前記事前に定義されたファイルの切り捨て部分に対応する仮想ストレージブロックを、前記ファイルシステムに返すステップとを含む、請求項5に記載の方法。
【請求項9】
前記仮想ストレージブロックを前記拡張された事前に定義されたファイルに割り当てる前記ステップの後に、
前記SBAモジュールによって、前記ファイルシステムのロックインタフェースを呼び出して、前記拡張された事前に定義されたファイルに割り当てられた前記仮想ストレージブロックをロックするステップをさらに含む、請求項2または3に記載の方法。
【請求項10】
前記ポリシーに従って空いているとマーク付けされた前記仮想ストレージブロックの一部または全部に対応する前記物理ストレージスペースを解放する前記ステップが、前記VMにおいて前記ストレージスペースを割り当てるまたは解放する動作の頻度が、事前に設定された閾値よりも大きいかどうかを判断し、前記VMにおいて前記ストレージスペースを割り当てるまたは解放する前記動作の前記頻度が前記事前に設定された閾値以下である場合、事前に設定されたレートで前記事前に設定された比率を下げ、前記下げた比率で、空いているとマーク付けされた前記仮想ストレージブロックに対応する前記物理ストレージスペースを解放するステップを含む、請求項3に記載の方法。
【請求項11】
前記仮想ストレージブロックに対応する前記仮想ストレージ空きブロック情報を前記SBDモジュールに伝える前記ステップが、
前記SBAモジュールによって、前記仮想ストレージブロックに対応する前記仮想ストレージ空きブロック情報を前記SBDモジュールにメモリを共有することによって伝えるステップ
を含む、請求項1から5のいずれか一項に記載の方法。
【請求項12】
仮想マシン(VM)のストレージスペースを管理するためのシステムであって、VMに配備されたストレージバルーンエージェント(SBA)モジュールと、仮想マシンモニタ(VMM)レイヤに配備されたストレージバルーンデーモン(SBD)とを備え、
前記SBAモジュールが、事前に定義されたファイルによって占有された仮想ストレージスペースのサイズに従って、占有された仮想ストレージブロックの部分を取得し、前記仮想ストレージブロックに対応する仮想ストレージ空きブロック情報をSBDモジュールに伝えるように構成され、
前記SBDモジュールが、前記仮想ストレージの空きブロック情報に対応する物理ストレージスペースの一部または全部を解放し、前記解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けするように構成された、システム。
【請求項13】
ハードウェアレイヤと、前記ハードウェアレイヤ上で動作する仮想マシンモニタ(VMM)レイヤと、前記VMM上で動作する少なくとも1つの仮想マシン(VM)とを備える物理ホストであって、前記VMにストレージバルーンエージェント(SBA)モジュールが配備され、前記VMMレイヤにストレージバルーンデーモン(SBD)モジュールが配備され、
前記SBAモジュールが、事前に定義されたファイルによって占有された仮想ストレージスペースのサイズに従って、占有された仮想ストレージブロックの部分を取得し、前記仮想ストレージブロックに対応する仮想ストレージ空きブロック情報を前記SBDモジュールに伝えるように構成され、
前記SBDモジュールが、前記仮想ストレージの空きブロック情報に対応する物理ストレージスペースの一部または全部を解放し、前記解放した物理ストレージスペースに対応する仮想ストレージブロックに利用できないとマーク付けするように構成された、物理ホスト。
【請求項14】
前記SBAモジュールが具体的には、前記事前に定義されたファイルによって占有された前記仮想ストレージスペースの前記サイズを入手した限界値範囲と比較し、前記事前に定義されたファイルによって占有された前記仮想ストレージスペースが前記限界値範囲の下限値よりも小さい場合、ファイルシステムを呼び出して前記事前に定義されたファイルを拡張し、前記拡張された事前に定義されたファイルに仮想ストレージブロックを割り当て、前記ファイルシステムを呼び出して、前記事前に定義されたファイルの拡張部分によって占有された仮想ストレージブロックを取得し、前記仮想ストレージブロックを示す第1の仮想ストレージ空きブロック情報を前記SBDモジュールに伝えるように構成され、
前記SBDモジュールが具体的には、前記第1の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが利用できるかどうかを判断し、前記第1の仮想ストレージ空きブロック情報に対応する前記仮想ストレージブロックが利用できる場合、前記仮想ストレージブロックを空いているとマーク付けし、空いているとマーク付けされた前記仮想ストレージブロックの一部または全部に対応する物理ストレージスペースを解放し、前記解放した物理ストレージスペースに対応する仮想ストレージブロックをポリシーに従って利用できないとマーク付けするように構成された、請求項13に記載の物理ホスト。
【請求項15】
前記SBAモジュールがさらに、前記事前に定義されたファイルによって占有された前記仮想ストレージスペースが前記限界値範囲の上限値よりも大きい場合、前記ファイルシステムを呼び出して縮小されるべき前記事前に定義されたファイルの部分によって占有された仮想ストレージブロックを入手し、前記仮想ストレージブロックを示す第2の仮想ストレージ空きブロック情報を前記SBDモジュールに伝え、前記ファイルシステムを呼び出して前記事前に定義されたファイルを縮小するように構成され、
前記SBDモジュールがさらに、前記第2の仮想ストレージ空きブロック情報に対応する仮想ストレージブロックが空いているかどうかを判断し、前記第2の仮想ストレージ空きブロック情報に対応する前記仮想ストレージブロックが空いている場合、前記仮想ストレージブロックに利用できるとマーク付けするように構成された、請求項14に記載の物理ホスト。

【図1】
image rotate

【図2】
image rotate

【図2a】
image rotate

【図2b】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5a】
image rotate

【図5b】
image rotate


【公表番号】特表2013−513174(P2013−513174A)
【公表日】平成25年4月18日(2013.4.18)
【国際特許分類】
【出願番号】特願2012−542354(P2012−542354)
【出願日】平成23年5月13日(2011.5.13)
【国際出願番号】PCT/CN2011/074025
【国際公開番号】WO2012/058917
【国際公開日】平成24年5月10日(2012.5.10)
【出願人】(504277388)▲ホア▼▲ウェイ▼技術有限公司 (220)