SCVMMで新規に仮想マシンを展開することができない事象が発生しました。

この評価時のメッセージのみからでは原因がよくわかりませんでした。タスクIDからメッセージを追うには以下のようにSQLサーバーのテーブルを直接覗く必要があるようです。

- [Task IDs in VMM 2012](http://social.technet.microsoft.com/Forums/systemcenter/en-US/8692629f-250e-47c0-b7e7-3d709402e3e3/task-ids-in-vmm-2012?forum=virtualmachinemanager)

今回の場合は新規に仮想マシンを展開しようとした時の評価結果をきちんと見たいだけなので以下のようにしてGet-SCVMHostRatingコマンドレットの結果を確認しました。

Get-SCVMHostRating -Cloud (Get-SCCloud)[0] -VM (Get-SCVirtualMachine)[0] 結果以下の様なメッセージでした。 VMHost                          : xxxxxxxx Cloud                           : xxx Cloud Rating                          : 0 ZeroRatingReasonList            : {利用できるメモリが不足しています。ホストのメモリ合計は 0 MB です。既存および新しいバ ーチャル マシンが使用できるメモリ残量は 0 MB です。評価時のメモリ残量は 0 MB で、バー チャル マシンにより要求されたメモリ容量は 4160 MB でした。} メモリが足りないのが原因のようですが?でも、OS的にはまだメモリに余裕はある状況でした。実際にHyper-Vマネージャーからは新規に仮想マシンを作成し、その仮想マシンを起動することも出来る状態です。つまり、SCVMMがどのようにメモリを計算し、どのように「メモリが足りない」と判断しているのかが鍵になります。

調べた所、以下の記事にSCVMMの計算ロジックが書かれていました。

- [System Center 2012 - VMM Cluster Reserve Calculations - System Center: Virtual Machine Manager Engineering Team Blog - Site Home - TechNet Blogs](http://blogs.technet.com/b/scvmm/archive/2012/03/27/system-center-2012-vmm-cluster-reserve-calculations.aspx)

SCVMMの考え方としては

- 展開された仮想マシンはすべて起動される前提
- 起動に必要なメモリが確保されない状態になりうる場合には展開しない

ということのようです。

 

結局、よく確認した所、既存の仮想マシンのメモリ設定で動的メモリの最大メモリ量が極端に大きく(1TB)設定されているものが存在していたことがこの現象の原因となっていました。実際にそこまでメモリを確保してしまうことがなかったとしても、確かに設定上はメモリをそこまで消費しうるわけで、それを見越して新規に仮想マシンを展開させない…という判断は理屈が通っています。…ですが、もうちょっとどうにかなったらいいのになとも思いました。

いずれにしても、動的メモリの上限値設定はきちんとこのSCVMMの挙動も考慮して設定する必要があるということですね。