この記事では、Microsoft System Center 2012 R2 Virtual Machine Manager (VMM 2012 R2) のクラスター オーバーコミット アルゴリズムの 4 つの方法について説明します。 アルゴリズム 理解するのに役立つ例については こちらを参照してください。
元の製品バージョン: Microsoft System Center 2012 R2 Virtual Machine Manager
元の KB 番号: 3023928
アルゴリズムのアプローチの概要
VMM 2012 R2 クラスターのオーバーコミット チェックの目的は、クラスター予約 (R) ノードの同時障害が発生した場合に仮想マシンが再起動されないかどうかを判断することです。 クラスターは、それ以外の場合に実証されるまでオーバーコミットされると見なされます。 4 つの方法が試みられ、いずれかの方法でクラスターがオーバーコミットされていないことが示されている場合、クラスターの状態は OK に設定されます。 それ以外の場合、クラスターの状態は Overcommitted に設定されます。
4 つのアプローチは、次のようにテーブルで視覚化できます。
Check メソッド | Proof メソッド | Slot メソッド |
---|---|---|
単純なチェック | Proof-simple | Slot-simple |
完全な複雑さのチェック | Proof-full | スロットフル |
4 つのチェック 方法
Proof メソッド
この証明方法は、最大の仮想マシンがどのホストでも起動できないポイントまで、すべてのホストを満たすのに十分な仮想マシンがあるかどうかを判断することによって機能します。 これは、最大の仮想マシンが最後にフェールオーバーされる最悪のケースと、すべてのホストが仮想マシンを起動するためのメモリ不足の 1 バイトを持つ最悪のケースを考慮します。
Slot メソッド
スロットメソッドは、障害が発生したホスト上の各仮想マシンを、すべての失敗したホストの最大の仮想マシンのサイズと同じサイズの単一の標準サイズのスロットに割り当てることで機能します。 次に、残りの各ホストで使用可能なスロットの数をカウントし、障害が発生したホスト上にあるすべての仮想マシンを割り当てるのに十分な空きスロットがあることを確認します。
単純なチェック
単純なチェックでは、失敗したホストの特定のセットは考慮されません。 代わりに、最悪の場合のクラスター全体の想定が行われます。 最大の仮想マシン サイズは、クラスター全体で最大の仮想マシンとして使用されます。 フェールオーバー仮想マシンのサイズは、特定のホスト セットから決定されません。 代わりに、このアプローチでは、 R 失敗したホストから達成できる理論上の最高の合計が使用されます。 同様に、他のホストで使用可能なメモリまたはスロットの数は、最も低い N-R ホスト ( N はクラスター サイズを表します) の合計です。
完全な複雑さのチェック
完全な複雑さのチェックは、 R 失敗したホストのすべての可能なセットを反復処理します。 スロット サイズ、最大の仮想マシン サイズ、ターゲット ホスト メモリ サイズ、スロット数が再計算されます。 これは、失敗したホストの可能な各組み合わせに基づいて行います。 考慮する必要があるセットの数は、 Choose(N,R)です。 N および R の値が大きい場合、この数値は非常に低くなる可能性があります。この数は N^R にほぼ比例するため、このチェックは N^R が 5,000 未満の場合にのみ実行されます。 したがって、実際的には、完全な複雑さのチェックは、次の表に従う状況でのみ実行されます。
クラスター予約 (R) | 最大クラスター サイズ (N) |
---|---|
1 | 4,999 |
2 | 70 |
3 | 17 |
4 | 8 |
Note
完全な複雑さのチェックは、単純なチェックに比べてわずかな絞り込みであり、単純な証明チェックは非常に似た結果を提供します。
計算とアルゴリズム
アルゴリズムでの値の定義と事前計算
重要
AdditionalMemory
とAvailableSlots
の値は、1 つのホストの値を使用して計算することはできません。 ソースの障害が発生したホストからの LargestClusterVM
または SlotSize
の値がわかっている必要があります。 単純なチェックでは、クラスター内の最大の仮想マシンと同じです。 完全な複雑さのチェックでは、障害が発生したホストのセット内で最大の高可用性 (HA) 仮想マシンと同じです。 一部のホストは失敗し、他のホストはそのワークロードを受け取ります。 使用可能な領域の計算は、障害が発生したホストに対して完了し、受信側ホストでは完了していない限り、正しくありません。
クラスター値
次の表に、クラスター値の定義を示します。
値の名前 | Definition |
---|---|
N | クラスター内のホストの合計数 |
R | クラスター予約値 (つまり、モデルに対する同時失敗の最大数) |
H | フェールオーバーのターゲットとして使用される残りの正常なホスト (H = N - R) |
ホスト値
次の値は、各ホストに対して事前計算されます。 LargestClusterVMMB
またはSlotSizeMB
に対して値が計算されると、完全な複雑さのチェックが繰り返されるたびに再計算されます。
値の名前 | Definition |
---|---|
AvailableMemory |
これは、フェールオーバーされた仮想マシンが使用する使用可能なホスト メモリの合計です。AvailableMemory = ホスト合計メモリ - 既存の VM - ホスト予約 |
AdditionalMemory |
これは、ホストがフェールオーバーする最大の仮想マシンを起動できなくなるフィル ラインです。AdditionalMemory = Max(AvailableMemory - LargestClusterVM ,0) |
HAVMs |
これは、このホスト上の高可用性 (HA) 仮想マシンの合計です。 |
AvailableSlots |
これは、このホストが起動できることが保証されている仮想マシンのフェールオーバーの数です。AvailableSlots = AvailableMemory / SlotSize 、切り捨て |
UsedSlots |
これは、このホスト上の HA 仮想マシンの数です。 |
TotalSlots |
ホスト上のスロットの合計数。TotalSlots = AvailableSlots + UsedSlots |
Note
- ハイパーバイザーのオーバーヘッドを考慮して、各仮想マシンのメモリに 64 MB (MB) バッファーが追加されます。
- 停止、保存された状態、一時停止中、実行中の仮想マシン (VM) はすべてカウントされます。 停止した仮想マシンを起動しているテナント ユーザーは、アルゴリズムがオーバーコミットを計算するタイミングを考慮する必要があります。
- クラスターに動的メモリ仮想マシンが存在する場合は、現在のメモリ需要が使用されます。
4 つのアプローチのアルゴリズム
Slot-simple
スロットシンプル アプローチのアルゴリズムは次のとおりです。
SlotSize
= クラスター内の最大の HA 仮想マシン。- 各ホストの
AvailableSlots
、UsedSlots
、およびTotalSlots
の値を計算します。 TotalSlotsRemaining
=TotalSlots
の最小H値の合計。- Sum(
UsedSlots
) <=TotalSlotsRemaining
場合、クラスターはオーバーコミットされません。
スロットフル
失敗したホストR の各セットを反復処理します。 スロットフル アプローチのアルゴリズムは次のとおりです。
SlotSize
= R の障害が発生したホスト上の最大の HA 仮想マシン。- 各ホストの
AvailableSlots
、UsedSlots
、およびTotalSlots
の値を計算します。 TotalSlotsRemaining
= 失敗していないすべてのホストのTotalSlots
の合計。- Sum(
UsedSlots
) とTotalSlotsRemaining
の値を比較します。- Sum(
UsedSlots
) が >TotalSlotsRemaining
場合、クラスターがオーバーコミットされる可能性があります。 - 失敗したホストのセットごとに Sum(
UsedSlots
) <=TotalSlotsRemaining
場合、クラスターはオーバーコミットされません。
- Sum(
Proof-simple
実証単純アプローチのアルゴリズムは次のとおりです。
LargestClusterVM
= クラスター内の最大の HA 仮想マシン。- すべてのホストの
AdditionalMemory
、HAVMs
を計算します。 TotalAdditionalSpace
=AdditionalMemory
の最小H値の合計。TotalOrphanedVMs
= (HAVMs
の最大R値の合計) -LargestClusterVM
。- 値を比較します。
TotalOrphanedVMs
<=TotalAdditionalSpace
場合、クラスターはオーバーコミットされません。TotalOrphanedVMs
が0、LargestClusterVM
>0、、TotalAdditionalSpace
= 0の場合、クラスターがオーバーコミットされる可能性があります。
Proof-full
失敗したホストR の各セットを反復処理します。 証明の完全なアプローチのアルゴリズムは次のとおりです。
LargestClusterVM
= R 障害が発生したホスト上の最大の HA 仮想マシン。- すべてのホストの
AdditionalMemory
、HAVMs
を計算します。 TotalAdditionalSpace
= 失敗しないホスト上のAdditionalMemory
の合計。TotalOrphanedVMs
= (R のHAVMsMB
の合計失敗したホスト) -LargestClusterVM
。- 値を比較します。
TotalOrphanedVMs
>TotalAdditionalSpace
場合、クラスターがオーバーコミットされる可能性があります。TotalOrphanedVMs
= 0、LargestClusterVM
>0、およびTotalAdditionalSpaceMB
= 0場合は、クラスターがオーバーコミットされる可能性があります。- 障害が発生したホストのセットごとに
TotalOrphanedVMs
<TotalAdditionalSpace
場合、クラスターはオーバーコミットされません。
アプローチと例の組み合わせ
いずれの方法も、クラスターがオーバーコミットされていることを示しません。 クラスターがオーバーコミットだけ示すことができます。 クラスターがオーバーコミットされていないことを示すことができるメソッドがない場合、クラスターはオーバーコミット済みとしてフラグが設定されます。 1 つの方法でもクラスターがオーバーコミットされていないことが示された場合、クラスターは OK としてフラグが設定され、計算はすぐに停止されます。
ただし、完全な複雑さの分析では、 R のセットが 1 つでも 失敗したホストがクラスターをオーバーコミットする可能性があることを示している場合、メソッドはすぐに完了し、クラスターに OK としてフラグを設定しません。
これらのアプローチの例
この例は、境界線のケースとして特別に設計されています。 クラスターがオーバーコミットされていないことを示すために管理されるのは、1 つの方法 (proof-full) だけです。
クラスターに 4 つの 32 ギガバイト (GB) ホストがあるとします。 ホスト メモリ予約は 9 GB に設定されています。 この例では、64 MB のバッファーは、数値をシンプルに保つために仮想マシン のサイズには追加されません。 クラスター予約 (R) が 2 に設定されています。
Host | 仮想マシンの設定 | AvailableMemory | HAVM | 最大 VM |
---|---|---|---|---|
ホスト A | 4 GB HA、4 GB HA | 15 GB | 8 GB | 4 GB |
ホスト B | 4 GB HA、4 GB HA | 15 GB | 8 GB | 4 GB |
ホスト C | 8 GB の HA、8 GB の非 HA | 7 GB | 8 GB | 8 GB |
ホスト D | 6 GB 非 HA、2 GB HA、2 GB HA | 13 GB | 4 GB | 2 GB |
スロットシンプルな例
スロット サイズ = 8 GB
Host | AvailableSlots | UsedSlots | TotalSlots |
---|---|---|---|
ホスト A | 1 | 2 | 3 |
ホスト B | 1 | 2 | 3 |
ホスト C | 0 | 1 | 1 |
ホスト D | 1 | 2 | 3 |
この表では、次の値がわかっています。
TotalSlotsRemaining
=TotalSlots
= (1+3) = 4 の 2 つの最小値TotalUsedSlots
= 2+2+2+1 = 7
TotalUsedSlots
はTotalSlotsRemaining
よりも大きいため、このアプローチは失敗しました。
スロット全体の例
TotalUsedSlots
= 7(失敗したホストに関係なく)
失敗したホスト | スロット サイズ | 残りのホスト上の AvailableSlots | 残りのホスト上の TotalSlots |
---|---|---|---|
A、B | 4 GB | C: 1, D: 3 | C: 2, D: 5. 合計: 7 - 良い |
A、C | 8 GB | B: 1, D: 1 | B: 3, D: 3. 合計: 6 - 失敗 |
A、D | 4 GB | B: 3, C: 1 | B:5、C:2。 合計: 7 - 良い |
B, C | 8 GB | A: 1, D: 1 | A: 3, D: 3. 合計: 6 - 失敗 |
B、D | 4 GB | A: 3, C: 1 | A: 5、C: 2。 合計: 7 - 良い |
C、D | 8 GB | A: 1, B: 1 | A:3、B:3。 合計: 6 - 失敗 |
一部の障害が発生したホストのセットが TotalUsedSlots
>TotalSlotsRemaining
になったので、このアプローチは失敗しました。
Proof-simple の例
LargestClusterVM
= 8 GB
Host | AdditionalMemory |
---|---|
ホスト A | 7 GB |
ホスト B | 7 GB |
ホスト C | 0 GB |
ホスト D | 5 GB |
この表では、次の値がわかっています。
TotalAdditionalSpace
=AdditionalMemory
の 2 つの最小値 = 0 GB + 5 GB = 5 GB。TotalOrphanedVMs
= (8 GB + 8 GB) - 8 GB = 8 GB。
TotalOrpanedVMsMB
>TotalAdditionalSpace
ので、このアプローチは失敗しました。
Proof-full の例
失敗したホスト | LargestHAVM | AdditionalMemory | OrphanedVMs | OrphanedVM - LargestHAVM <= AdditionalMemory |
---|---|---|---|---|
A、B | 4 GB | C: 3, D: 9. 合計 12。 | A: 8、B: 8、合計 16。 | 16-4<=12 - 良い |
A、C | 8 GB | B: 7, D: 5. 合計 12。 | A: 8、C: 8、合計 16。 | 16-8<=12 - 良い |
A、D | 4 GB | B: 11, C: 3. 合計 14。 | A: 8、D: 4、合計 12。 | 12-4<=14 - 良い |
B, C | 8 GB | A: 7、D: 5。 合計 12。 | B: 8, C: 8, 合計 16. | 16-8<=12 - 良い |
B、D | 4 GB | A: 11, C: 3. 合計 14。 | B: 8, D: 4, 合計 12. | 12-4<=14 - 良い |
C、D | 8 GB | A: 7、B: 7。 合計 14。 | C: 8, D: 4, 合計 12. | 12-8<=14 - 良い |
失敗したホストのセットはすべて OrphanedVMs
- LargestHAVM
<= AdditionalMemory
になったため、このアプローチは成功し、クラスター全体を OK としてマークできます。