VM最適起動機能とは、仮想マシンを停止状態から起動する場合または再起動する場合に、SystemProvisioningが自動的に適切な仮想マシンサーバを選択し、仮想マシンを起動する機能です。
仮想マシンを起動する際、既定(VM最適起動機能が無効の場合)では、現在ホストとしている仮想マシンサーバ上での起動が実行されます。しかし、以下のような場合には、現在のホスト仮想マシンサーバ上では仮想マシンを起動することができないため、異常終了となります。
ホスト仮想マシンサーバが停止している。
ホスト仮想マシンサーバが処理中である。
ホスト仮想マシンサーバが、メンテナンスモードである(「2.3.4. メンテナンスモードについて」参照)。
ホスト仮想マシンサーバはキャパシティに空きがないため、新たに仮想マシンを起動することができない。
ホスト仮想マシンサーバのハードウェアステータスが故障状態、または、一部故障状態である。
配置制約を満たさないため、ホスト仮想マシンサーバ上で仮想マシンを起動することができない。
VM最適起動機能が有効の場合、上記のように現在のホスト仮想マシンサーバ上での起動が実行できない状況においても、起動先の仮想マシンサーバを自動で選択し、その仮想マシンサーバ上で仮想マシンを起動することができます。このとき、必要に応じて停止状態の仮想マシンサーバを自動で起動します。起動先の仮想マシンサーバをどのように選択するかは、分散レベル(0から3まで)によって調整することができます。
現在のホスト上での起動 | VM最適起動 | 動作 |
---|---|---|
可能 | 無効 | 現在のホスト上で起動 |
有効 | 起動先仮想マシンサーバを自動で選択して起動(分散レベルに従う) | |
不可能 | 無効 | 起動失敗 |
有効 | 起動先仮想マシンサーバを自動で選択して起動(分散レベルに従う) |
VM最適起動機能の有効/無効、および分散レベルは、仮想マシンサーバが所属するグループ/モデル、または、仮想マシンが所属するテナント/カテゴリ/グループ/モデルで設定します。各設定内容は、以下に示す順に優先的に使用されます。
仮想マシンのモデル
仮想マシンのグループ
仮想マシンのカテゴリ/テナント (複数階層ある場合は下位の階層の設定を優先)
仮想マシンサーバのモデル/グループ
仮想マシンのテナント/カテゴリ/グループ/モデルでは、設定を上位階層から継承(「設定なし」を指定)することができます。これらの階層のすべてで「設定なし」が指定されている場合、仮想マシンサーバのグループ(仮想マシンサーバがグループ直下で稼動している場合)/モデル(仮想マシンサーバがモデルで稼動している場合)の設定が使用されます。
VM最適起動機能によって起動先の仮想マシンサーバを自動選択する際には、対象仮想マシンのホスト仮想マシンサーバと同じグループ直下(仮想マシンサーバがグループ直下で稼動している場合)/モデル(仮想マシンサーバがモデルで稼動している場合)に割り当てられている仮想マシンサーバのうち、以下の条件をすべて満たすものが候補となります。
処理中(起動以外)でない。
メンテナンスモードでない。
ハードウェアステータスが故障状態でない、かつ、一部故障状態でない。
対象仮想マシンが格納されているデータストアにアクセス可能である。
対象仮想マシンに対して配置制約を満足する。
管理状態がVM起動抑制でない。
起動先の仮想マシンサーバの選択方法は、次の表のとおり、分散レベルの設定により決まります。分散レベルが大きいほど、より仮想マシンを分散させる方向で起動先の仮想マシンサーバが選択されます。
分散レベル | 説明 |
---|---|
0 | 現在の仮想マシンサーバが起動先として優先的に選択されます。 現在の仮想マシンサーバが停止状態の場合、あるいは、仮想マシンの起動により現在の仮想マシンサーバ上で起動中の仮想マシンのコスト値合計がキャパシティ値を超える場合、候補となる仮想マシンサーバの中から起動先を探索します。 探索時には、起動状態でキャパシティの空きが大きい仮想マシンサーバを優先的に選択します。 CPU/メモリによる判定は行われません。 |
1 (既定値) | 現在の仮想マシンサーバが起動先として優先的に選択されます。 現在の仮想マシンサーバが停止状態の場合、あるいは、仮想マシンの起動により現在の仮想マシンサーバのCPU使用量上限/CPU予約値上限/メモリ使用量上限/メモリ予約値上限/キャパシティ値を超える場合は、候補となる仮想マシンサーバの中から起動先を探索します。 ・CPU使用量の上限としてVM最適配置の稼動目標域上限の設定が参照されます。 ・CPU予約値の上限として仮想マシンサーバの総CPU周波数が参照されます。 ・メモリ使用量の上限として仮想マシンサーバのメモリサイズとメモリオーバーコミット率が参照されます。(※3) ・メモリ予約値の上限として仮想マシンサーバのメモリサイズが参照されます。 探索時には、起動状態で低負荷の仮想マシンサーバを優先的に選択します。 |
2 | 候補となる仮想マシンサーバの中から起動先を探索し、起動状態で低負荷の仮想マシンサーバを優先的に選択します。 |
3 | 候補となる仮想マシンサーバの中から起動先を探索し、低負荷の仮想マシンサーバ(停止状態のものを含む)を優先的に選択します。停止状態の仮想マシンサーバは負荷0とみなされるため、基本的に停止状態の仮想マシンサーバが優先されます。 |
設定なし | 上位階層の設定を継承します。 |
起動先の探索時には、以下の基準により仮想マシンサーバが選択されます。
(1) 起動先仮想マシンサーバの選択基準
Pin制約の優先度 (Pin制約が設定されている場合)
優先度の値が小さいものを優先します。
起動状態 (分散レベルが2以下の場合)
起動状態の仮想マシンサーバを優先します。
メモリ予約値 (分散レベルが1以上の場合)
仮想マシンサーバのシステム分のメモリ予約(※1)と仮想マシンサーバ上で動作する仮想マシンのメモリ予約値の合計が上限(仮想マシンサーバのメモリサイズ)を超過しないものを優先します。
CPU予約値 (分散レベルが1以上の場合)
仮想マシンサーバのシステム分のCPU予約(※2)と仮想マシンサーバ上で動作する仮想マシンのCPU予約値の合計が上限(仮想マシンサーバの総CPU周波数)を超過しないものを優先します。
メモリ使用量 (分散レベルが1以上の場合)
メモリ使用量が上限(※3)を超過しない仮想マシンサーバを優先します。
CPU使用量 (分散レベルが1以上の場合)
CPU使用量が少ない(低負荷な)仮想マシンサーバを優先します。
移動が必要かどうか (分散レベルが1以下の場合)
移動が不要な仮想マシンサーバ(現在の仮想マシンサーバ)を優先します。
コスト値 : 空きが多いものを優先
仮想マシンサーバのキャパシティ値から仮想マシンサーバ上で動作する仮想マシンのコスト値合計を引いた値が大きいものを優先します。仮想マシンサーバのキャパシティ値はVMサーバ編集で設定します。仮想マシンのコスト値はVM編集で設定します。
(※1) 仮想マシンサーバのシステム分のメモリ予約は以下のレジストリ値によって設定します。
キー : HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\NEC\PVM\Engine
値 (型) : HostSystemMemoryRatio (REG_SZ)
0.0以上1.0以下の値のみ有効。範囲外またはフォーマット不正の場合、既定値となる。
既定値は0.1
(※2) 仮想マシンサーバのシステム分のCPU予約は以下のレジストリ値によって設定します。
キー : HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\NEC\PVM\Engine
値 (型) : HostSystemCpuRatio (REG_SZ)
0.0以上1.0以下の値のみ有効。範囲外またはフォーマット不正の場合、既定値となる。
既定値は0.05
(※3) メモリ使用量の上限は、仮想マシンサーバのメモリサイズと、以下のレジストリ値によって設定されるメモリオーバーコミット率によって決定されます。
キー : HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\NEC\PVM\Provider\VM\{仮想化基盤}
{仮想化基盤} は VMware, HyperV のいずれか。
値 (型) : MemoryOverCommitRatio (REG_SZ)
0.0以上2.0以下の値のみ有効。範囲外の場合、メモリ使用量の超過判定は無効となる。
既定値は1.0
対象仮想マシンにEQ/NE制約が設定されている場合においては、EQ/NE制約を満たすように仮想マシンの起動または移動が行われます。
また、対象仮想マシンにPin制約が設定されていて、その制約先の仮想マシンサーバのキャパシティに空きがない場合は、移動可能な仮想マシンを他の仮想マシンサーバへ移動し、キャパシティの空きを確保した上で、対象仮想マシンを起動します。