Hyper-V ダイナミック メモリのベスト プラクティスの完全な概要
Hyper-V ダイナミック メモリは、Windows Server 2008 R2 SP1 で初めて導入されました。そのリリース以前は、 Hyper-V 仮想マシン (VM)は、割り当てられたRAMの全容量を使用して起動・実行されるため、メモリの過剰使用を招き、VM全体のパフォーマンスに影響を及ぼしていました。さらに、VMの利用可能なメモリ容量を変更できるのは、VMが停止しているときのみでした。したがって、静的メモリ割り当てを動的メモリ割り当てに置き換える必要があり、Hyper-Vの”動的メモリ”機能が導入されたのは理にかなったことでした。
Hyper-Vの動的メモリとは何ですか?
Hyper-V ダイナミックメモリは、Hyper-V 環境で実行されている仮想マシン (VM) にメモリリソースを動的に割り当てることを可能にする機能です。この機能により、その時点でメモリを必要としていない仮想マシンから未使用のメモリの一部を回収し、その回収したメモリを実際にメモリを必要としている他の仮想マシンに再割り当てします。
Hyper-V ダイナミック メモリを使用すると、VM が使用できる起動時のメモリ量を指定したり、特定の VM に対して利用可能な物理メモリの範囲を設定したり、メモリ割り当てにおける VM の優先順位を決定したりすることができます。物理メモリは、必要に応じて、パフォーマンスへの影響を最小限に抑えながら、効率的かつ動的に VM に割り当てられます。その結果、メモリ使用状況をよりきめ細かく制御でき、リソースの最適化が図られます。
Hyper-V ダイナミックメモリの長所と短所
Hyper-Vのダイナミックメモリは、次のような多くの利点をもたらす便利な機能です。
- VMは、管理者が設定した制限の範囲内で、実際に必要なメモリ量のみを使用するため、メモリ消費量が削減されます
- 効率的なメモリ割り当て。実行中のVMに対して、動的にメモリの割り当て量を増減させることができるためです。
- メモリリソースのより効率的な活用により、統合数が向上した
- Hyper-V スマートページングを活用して、再起動操作の信頼性を向上
- VMリソースが無駄にならないため、コスト効率に優れている
しかし、Hyper-Vの動的メモリにはいくつかの欠点もあり、これらは仮想マシンのメモリパフォーマンスに悪影響を及ぼす可能性があります。その欠点には、次のようなものがあります。
- 仮想環境内でのメモリ割り当てを適切に管理していない場合、コンピュータの物理メモリを過剰に割り当ててしまうリスクがあります
- VMが実行中の場合、一部のメモリ設定は変更できません。したがって、VMが実行中または一時停止中のときは、最大および最小メモリ容量の増減や、VMの起動時のメモリ容量の変更を行うことはできません。
- Hyper-V ダイナミック メモリが有効になっている場合、データベース アプリケーションで問題が発生する可能性があります。パフォーマンス上の問題を回避するため、Hyper-V ダイナミック メモリと互換性のあるアプリケーションを使用することをお勧めします。
Hyper-V の動的メモリ設定
Hyper-Vのダイナミックメモリには、以下の5つの仮想マシン設定が含まれており、これらを Hyper-V マネージャーで構成済み. そのために、Hyper-V マネージャーを開き、対象の仮想マシンを選択して、[ Settings、そして以下を選択してください Memory. 次のような画面が表示されます:

ただし、Hyper-Vの動的メモリ設定の構成を開始する前に、まずこれらのコンポーネントがどのように機能し、どのようなメリットがあるかを理解しておくことをお勧めします。それでは、それぞれについて見ていきましょう。
起動時RAM
この”Hyper-V ダイナミックメモリ”の値は、選択した仮想マシンが起動時に使用できる物理メモリの最小容量を定義します。起動用 RAM は、仮想マシンが中断することなく迅速に起動できるよう、十分な容量を確保する必要があります。なお、仮想マシンが実行中の場合は、起動用 RAM の変更はできません。

最小RAM容量
この Hyper-V ダイナミックメモリの値は、VM の起動後にその VM に割り当てるべき物理メモリの最小量を決定します。他の VM が追加の RAM を必要とする場合、Hyper-V ホストは、最小 RAM 値に達するまで、この VM から未使用のメモリを回収し始めることがあります。 この値は 32 MB まで低く設定できますが、”起動時 RAM”を超えることはできません。また、VM の実行中または一時停止中は最小メモリを増やすことはできませんが、減らすことは可能です(例: 最小 RAM 値を 512 MB から 64 MB に変更できます)。

最大RAM容量
この Hyper-V ダイナミックメモリの値は、仮想マシンが使用できる物理メモリの最大容量を指定します。この値は、割り当てられた起動時 RAM より小さくすることはできませんが、最大 1 TB (1,048,576 MB) まで設定可能です。 また、VM が実行中または一時停止中の間は、最大メモリ容量を減らすことはできませんが、増やすことは可能です(たとえば、最大 RAM 値を 512 MB から 2048 MB に変更できます)。
メモリバッファ
この Hyper-V ダイナミックメモリの値は、仮想マシン (VM) にバッファとして割り当てる物理メモリの割合を決定します。メモリバッファとは、仮想マシンのメモリ需要に基づいて、その仮想マシン用に確保される物理メモリの一部です。メモリバッファを計算するには、次の計算式を使用する必要があります。
Amount of memory buffer = how much memory the virtual machine actually needs / (memory buffer value / 100).
デフォルトでは、メモリバッファの値は 20% ですが、5% から 2000% の範囲で設定可能です。VM の実行中であっても、いつでもメモリバッファの値を変更することができます。

メモリの重み
この Hyper-V ダイナミックメモリの値は、このホスト上の他の仮想マシンと比較した、選択した仮想マシンの優先順位を指定します。この優先順位の順序に基づいて、同じ Hyper-V ホスト上で実行されている複数の仮想マシン間で、利用可能なメモリをどのように割り当てるかを決定できます。
なお、仮想マシンの優先順位が低すぎ、利用可能な物理メモリの量が減少した場合、その仮想マシンが起動できなくなるリスクがあることに注意してください。 メモリウェイトの値は、VM が実行中の場合でも、いつでも変更できます。

Hyper-V ダイナミック メモリのベスト プラクティス
Hyper-V 環境で高いパフォーマンスを実現し、メモリ使用率を向上させるには、Hyper-V ダイナミック メモリのベスト プラクティスに従うことをお勧めします。
以下に挙げる Hyper-V ダイナミック メモリのベスト プラクティスを実践することで、仮想マシンのメモリ パフォーマンスと、Hyper-V 環境での全体的な操作性を大幅に向上させることができます。
Hyper-V 統合サービスの有効化
Hyper-V 統合サービス これは、Hyper-V 環境における仮想マシンのパフォーマンスを向上させるためのユーティリティのセットです。 各Hyper-V統合サービスは、正常に機能し、必要なサービスを提供できるように、ホストとゲストの両方で有効にする必要があります。デフォルトでは、Hyper-Vゲストサービスインターフェイスを除くすべてのHyper-V統合サービスが、ゲストOS上で有効になっています。
Hyper-Vダイナミックメモリを効果的に機能させるには、Hyper-V統合サービスが最新バージョンにアップグレードされていること、およびゲストOSがダイナミックメモリ機能をサポートしていることを確認してください。 そうしないと、メモリを動的に割り当てることができず、メモリ要求に適切に対応できないため、Hyper-V で問題が発生する可能性があります。
Windows Server 2016 のリリース以降、Hyper-V 統合サービスおよび対応する更新プログラムは Windows Update を通じてインストールできるようになりました。したがって、Hyper-V インフラストラクチャで最新バージョンの Hyper-V 統合サービスが使用されるように、仮想マシン (VM) が更新プログラムを受け取れるように構成する必要があります。
メモリ使用量とリソースの割り当てを監視する
現在、市場にはHyper-V環境におけるメモリ使用状況やリソース割り当てを監視できるHyper-V管理ツールが数多く存在します。Hyper-Vのダイナミックメモリを有効にしている場合、RAMを過剰に割り当ててしまい、メモリが完全に枯渇してしまう可能性があります。そのため、Hyper-Vホスト上の各VMに割り当てているRAMを常に把握しておくことをお勧めします。
この目的のために、ネイティブの監視ツールを使用するか、サードパーティ製のソフトウェアを購入することができます。 たとえば、Hyper-V マネージャーからホスト経由で、あるいはタスク マネージャーからゲスト VM 経由で、VM のメモリ状態を確認することができます。


これにより、システム内でのメモリリソースの使用状況を監視することができます。ただし、Hyper-V マネージャーとタスク マネージャーでは、メモリ使用量に関する表示結果が異なる点に注意してください。 ゲスト監視ツールには実際の結果が表示されないのは、ゲストVMが、VMに割り当てられたメモリの総量が、実際にはそのドライバによって使用されていると認識しているためです。実際には、インフラストラクチャ内のVMへのメモリの割り当て状況については、ホストの方がより正確に把握しているのが一般的です。未使用のメモリは実際には他のVMに再割り当てされており、これがHyper-Vマネージャーに反映されています。
起動時のRAM容量を考慮してください
スタートアップ RAM の設定値を高くしたり低くしたりすると、Hyper-V のパフォーマンスに大きな影響を与える可能性があります。OS およびその上で実行されるアプリケーションが正常に起動するように、スタートアップ RAM を増やす必要があります。これは、Windows が起動時には、OS がアイドル状態のときよりも多くの RAM を必要とするためです。
さらに、インストールやアップグレードの操作中は、ゲスト OS が利用可能な RAM の量は、スタートアップ RAM の設定値と同じになります。 したがって、インストールやアップグレードを実行する前に、起動用RAMの値が選択したOSの最小メモリ要件を満たしていることを確認することが極めて重要です。
なお、起動用RAMの値が高すぎると、Hyper-Vのダイナミックメモリのパフォーマンスや全体的なメモリ使用量に悪影響を及ぼす可能性がある点に注意してください。そのため、ゲストOSが中断なく起動できるよう、起動用RAMの値として512 MBを割り当てることをお勧めします。
メモリリークのことを忘れないでください
特定の仮想マシン(VM)に対してHyper-Vの動的メモリ制限を設定する際は、インフラストラクチャでメモリリークが発生する可能性があることを念頭に置くことが極めて重要です。メモリリークとは、不適切なメモリ割り当ての結果として、利用可能なメモリが徐々に失われていく現象を指します。これは通常、アプリケーションが一時的な使用のみを目的として割り当てられたメモリを解放し損ねた場合に発生します。深刻な被害が生じる前にこの問題が検出されない場合、OSのメモリが枯渇し、最終的にアプリケーションが動作しなくなる可能性があります。
この問題による悪影響を軽減するためには、監視ツール(例:RAMMap)を導入し、インフラストラクチャ全体をスキャンして不整合がないかを確認するとともに、実行中のアプリケーションによる異常なメモリ使用状況を検出することをお勧めします。また、このようなツールを使用することで、その特定のVMに最適な最小および最大のRAM容量を特定することも可能です。
RAMの最大値と最小値を設定する
Hyper-Vの動的メモリ機能が期待どおりに動作するようにするため、システムが超えてはならない上限値を設定することをお勧めします。これにより、インフラストラクチャ内のメモリ使用率を効果的に制御でき、仮想マシン(VM)がメモリを過剰に消費したり、逆に不足したりすることを防ぐことができます。
メモリバッファの値を慎重に設定してください
Hyper-V のダイナミックメモリに関するベストプラクティスの 1 つは、適切な”メモリバッファ”値を割り当てることです。この値は、選択した仮想マシン(VM)に対して、どの程度の追加メモリを確保すべきかを指定するものです。メモリバッファの値を高く設定すると、この追加メモリは通常、大規模な仮想マシンにおけるファイルのキャッシュや、システム内の I/O 操作の効率化に利用されます。
一方、大量の物理メモリを必要とするアプリケーションが実行されている場合は、メモリバッファの値を低く設定する必要があります。メモリバッファの値を低く設定することで、利用可能なメモリが単一の仮想マシンによって完全に消費されることを防ぐことができます。
さらに、VMにすでに大量のメモリが割り当てられている場合、そのVMが追加のメモリを必要とする可能性は低くなります。したがって、未使用のメモリリソースを、より必要としている他のVMと共有する方が理にかなっています。
必要に応じてHyper-Vホストを更新する
Hyper-V 環境の安定性とセキュリティを維持するためには、Hyper-V ホストに、必要なすべての更新プログラムとセキュリティ パッチを確実に適用してください。Microsoft の更新プログラムおよびセキュリティ パッチの主な目的は、システムで特定された問題に対処することです。たとえば、Windows Server 2012 R2 では、Hyper-V ダイナミック メモリに関する問題により、Hyper-V 仮想マシンが追加のメモリを取得できなくなることが確認されました。 VM上でこの機能が有効に設定されていたにもかかわらず、引き続きエラーが発生していました。このため、Microsoftはこの問題を解消し、機能が正常に動作するようにするために、ホットフィックスをリリースしました。
1日の経過に伴うパフォーマンスの変化を検知する
業務時間中は生産ワークロードが大幅に増加し、最終的にはHyper-Vのパフォーマンスやリソース割り当て、メモリ使用率に影響を及ぼします。Hyper-Vのダイナミックメモリに関するベストプラクティスの1つとして、業務時間を通じてメモリ使用量の変化を監視することをお勧めします。メモリ使用量が高くなる時期と低くなる時期のサイクルを把握することで、Hyper-Vのダイナミックメモリを効果的に活用する方法を学ぶことができます。
実際に必要になった時点で、Hyper-Vの動的メモリを有効にする
Hyper-Vのダイナミックメモリは、物理メモリの利用効率を高める非常に有用な機能ですが、静的なメモリ割り当ての方が望ましい場合もあります。したがって、特定の仮想マシン(VM)でHyper-Vのダイナミックメモリを有効にする必要があるかどうかを検討する必要があります。 たとえば、一部のアプリケーションは、中断されることなく使用できるあらかじめ決められた量の RAM が割り当てられている場合、より高いパフォーマンスを発揮します。事前に割り当てられた RAM の量は、メモリ需要の変動にかかわらず一定に保たれます。
したがって、将来的に RAM が不足したり、アプリケーションが障害を起こしたりすることを防ぐため、Hyper-V 環境における物理メモリの割り当て方法を事前に計画しておくことをお勧めします。
Hyper-Vの動的メモリは、対応しているアプリケーションでのみ使用してください
Hyper-V ホストまたはゲストにアプリケーションをインストールする前に、そのアプリケーションが Hyper-V ダイナミック メモリと併用できることを確認してください。この情報を確認するには、まず製品のサポート ドキュメントを参照して、その機能やシステム要件を把握することをお勧めします。このような予防措置を講じることで、メモリの使用や割り当てに関して発生しうる問題を回避することができます。
まとめ
Hyper-Vの動的メモリに関するベストプラクティスを学んだ後は、物理メモリをより効率的かつ安全に活用できるようになります。しかし、仮想インフラストラクチャは依然として、パフォーマンスを低下させる可能性のあるさまざまな危険や脅威にさらされています。仮想環境の安全性を確保するには、データ保護ソリューションの導入が最も現実的な選択肢となります。 NAKIVO Backup & Replication 信頼性が高く、効果的で、手頃な価格のソリューションであり、VMのバックアップ、レプリケーション、クラウドへのバックアップ、バックアップコピーの作成、サイト復旧など、豊富な機能を提供します。