Windows Server 2008 R2 SP1のHyper-Vには、新しくDynamic Memoryという機能が追加されている。これは、各仮想マシンに割り当てるメモリの量を実行時に動的に制御する機能である。以前のHyper-Vでは、仮想マシンに割り当てるメモリの量は、仮想マシンの作成時に固定的に決めるしかなかった。そのため、仮想マシンの運用計画を立てる場合は、それぞれの仮想マシンが必要とするメモリ・サイズを事前に慎重に見積もっておく必要があった。だがDynamic Memoryを利用すると、各仮想マシンのメモリ需要に応じて動的にメモリが配分されるようになる。詳細は次の記事を参照していただきたい。
Dynamic Memoryを利用すると、Hyper-Vのサーバにおけるメモリ管理は動的に行われるようになり、システムに搭載されているメモリが有効に活用される。その一方で、親パーティションのWindows Server 2008 R2に割り当てられるメモリも削減され、ゲスト仮想マシンになるべく多く割り当てられるようになる。
レジストリに不正な値を書き込んでしまうと、システムに重大な障害を及ぼし、最悪の場合、システムの再インストールを余儀なくされることもあります。レジストリ・エディタの操作は慎重に行うとともに、あくまで御自分のリスクで設定を行ってください。何らかの障害が発生した場合でも、本Windows Server Insider編集部では責任を負いかねます。ご了承ください。
Windows Server 2008 R2 SP1のHyper-Vにおいて、親パーティション用に割り当てるメモリのサイズは、次のレジストリで設定できる。
なおWindows Server 2008 R2 SP1のHyper-Vではなく、従来の(Dynamic Memoryが利用できない)Hyper-Vの場合は、仮想マシンに割り当てるメモリは常に固定サイズになる。親パーティションに割り当てるメモリ・サイズを固定したければ、各仮想マシンに割り当てるメモリ・サイズを調整すればよい。
レジストリ設定の効果
以下は、4096(4Gbytes)という値をMemoryReserveにセットして起動したWindows Server 2008 R2 SP1のHyper-V管理ツールの画面例である。サーバ・ハードウェア自体には10Gbytesのメモリがあるが、4Gbytesが親パーティションに割り当てられているので、仮想マシンで利用可能なメモリは多くても6Gbytesまでになる。仮想マシンに割り当てるメモリが不足し、これ以上仮想マシンを起動できない状態になっている。
このときの親パーティション上のWindows Server 2008 R2 SP1のタスク・マネージャを見ると(次の画面参照)、まだ空きメモリが2.2Gbytes以上あり、十分なメモリが残されていることが分かる。
親パーティションに4Gbytes残した場合の例
これは、親パーティション上のWindows Server 2008 R2のタスク・マネージャの画面。親パーティションには常に4Gbytesのメモリが割り当てられ、仮想マシンには最大でも6Gbytesしか割り当てられない。親パーティション上のWindows Server 2008 R2では十分なサイズのディスク・キャッシュが利用できる(Windows OSでは、空きメモリは可能な限りディスク・キャッシュとして利用されるようになっている)。
トータルのメモリ使用量は7.35Gbytes(全メモリ・サイズの73%使用。グラフの上端が10Gbytesの位置になる)。ここには、親パーティションのWindows Server 2008 R2で使用するメモリと、仮想マシンに割り当てられている総メモリの合計が含まれる。仮想マシンでは6Gbytes使用しているので、Windows Server 2008 R2では1.35Gbytes使用中ということになる。