Hyper-VにおけるVMのパフォーマンスを向上させるための20のヒント
どのシステムも時折エラーや障害が発生するものであり、ユーザーは仮想インフラストラクチャのパフォーマンスを向上させる方法を常に模索しています。このブログ記事では、パフォーマンスの問題が Hyper-V 環境にどのような影響を与えるか、また仮想マシン(VM)のパフォーマンスをどのように向上させることができるかについて解説します。
このブログ記事では、Hyper-V 環境における VM のパフォーマンスを最適化・向上させるために活用できる 20 の調整方法をまとめました。 さらに読み進めて、Hyper-V仮想化技術の仕組み、Hyper-V VMのパフォーマンスに影響を与えやすい問題、そしてその改善方法についてもご確認ください。 NAKIVO Backup & Replication 仮想環境の保護に役立ちます。
Hyper-Vの仕組み
Hyper-V は、Microsoft が開発した仮想化ソフトウェアであり、仮想マシン(VM)と呼ばれるコンピュータの仮想環境を作成・実行することができます。1 台の Hyper-V ホスト上で、複数の VM を互いに分離した状態で同時に実行することが可能です。さらに、すべての VM は、メモリ、プロセッサ、ストレージ、ネットワークデバイスなど、単一のホストサーバーのハードウェアリソースを共有します。 これにより、ハードウェアリソースを効率的に活用し、最も必要としているVMに容易に割り当てることができます。
Hyper-Vは、Windows ServerおよびWindows(2008以降)のサーバーロールとして、あるいは機能に制限がありコマンドラインインターフェースのみを備えた無料のスタンドアロン製品(Hyper-V Server)として利用可能です。
詳細については、当社のブログ記事をご覧ください。 お使いのコンピューターにHyper-V Serverをインストールする方法.
Hyper-Vでよく見られる問題
Hyper-Vは非常に高度なサーバー仮想化プラットフォームですが、それでもパフォーマンス上の問題が発生する可能性があります。以下のシステムコンポーネントは、障害が発生しやすく、仮想マシンのパフォーマンス低下を招く原因となる可能性が最も高いものです:
- プロセッサ(例:論理プロセッサや仮想プロセッサの過負荷、CPUの遅延など)
- メモリ(例:メモリのオーバーコミット、RAM不足、VMの起動失敗など)
- ネットワーク(例:ネットワークに縛られたホストやVM、ネットワークリソースの不均衡)
- ストレージ(例:ディスクのレイテンシ、物理ストレージ領域の無駄、I/Oスループットの低下)
これらは、異常な動作が検出された場合に、綿密に監視し、対処すべきハードウェアコンポーネントです。
問題の多くは、利用可能なリソースの不適切な使用に起因して発生します。Hyper-Vホストが使用・共有できるハードウェアおよびソフトウェアリソースには限りがあり、それらはホスト上で実行されているVM間で共有されます。 したがって、Hyper-V ホスト上で同時に実行されている VM の数、利用可能なリソースの消費状況、およびリソースの割り当てが過剰か不足しているかについて、細心の注意を払うことが極めて重要です。これらの要因がすべて組み合わさることで、VM のパフォーマンスの効率性と信頼性に影響を及ぼす可能性があります。
パフォーマンスの最適化と監視における重要な点は、仮想インフラストラクチャにおける実際のワークロード量と、そのワークロードをプロビジョニングするために必要なリソース量を把握することです。これにより、VMのパフォーマンスに悪影響を及ぼす可能性のある潜在的なリスクやボトルネックを特定できます。Hyper-Vのパフォーマンスを向上させるための基本的なアドバイスは、単一のホスト上で過度に多くのVMを作成・実行することを避け、仮想環境内での不要なリソース消費を最小限に抑えることです。
Hyper-V 環境で仮想マシンのパフォーマンスを向上させる 20 の方法
次のセクションでは、Hyper-V 環境において、いくつかの簡単な設定変更によって仮想マシンのパフォーマンスを向上させる方法について説明します。
したがって、仮想マシンのパフォーマンスを向上させるには、以下の手順を実行します。
1. Hyper-V 統合サービスの有効化
Hyper-V 統合サービス これは、Hyper-V 仮想マシン内で実行されるゲストオペレーティングシステム(OS)のパフォーマンスを向上させるために設計された、一連の専用ドライバーおよびユーティリティです。最適な結果を得るには、Hyper-V ホストとすべてのゲスト OS の両方で Hyper-V 統合サービスを有効にすることをお勧めします。 新しいバージョンの Windows OS では、すべての Hyper-V 統合サービス(ゲスト サービスを除く)がデフォルトで利用可能です。ただし、VM で Linux または古いバージョンの Windows OS を実行している場合は、それらのゲスト OS で統合サービスが自動的に有効になっているか確認することをお勧めします。有効になっていない場合は、手動でインストールする必要があります。

2. 固定サイズのVHDファイルを使用する
固定サイズのディスクと動的に拡張可能なディスク これらは特定の用途に合わせて設計されています。新しい仮想ハードディスクを作成する際、どのタイプの仮想ハードディスクを使用するかを選択するよう求められます。適切な選択を行うには、まず仮想環境内での使用方法を検討する必要があります。固定サイズのディスクはパフォーマンスに優れており、ディスクアクセスが頻繁に行われるアプリケーションを実行するサーバーに推奨されます。 動的拡張ディスクは物理ストレージスペースを効率的に活用できるため、リソースをあまり消費しないアプリケーションを実行するサーバーに推奨されます。
固定サイズディスクのディスク領域は、仮想ハードディスクファイルの作成時に割り当てられ、データの追加や削除があっても変更されません。 動的に拡張されるディスク領域は、必要に応じて割り当てられ、データの追加や削除に伴いサイズが変化します。
したがって、動的に拡張されるディスクはテスト環境やデプロイ環境で使用すべきであり、一方、固定サイズのディスクは本番環境での使用に適しています。
3. Hyper-Vのスナップショットをバックアップの代替手段として使用しないでくださいe
Hyper-V スナップショット(Hyper-V チェックポイントとも呼ばれます)は、テストや開発環境において最も有効であることが実証されているため、バックアップとして使用すべきではありません。たとえば、システムにパッチや更新プログラムを適用したいものの、それが仮想インフラストラクチャにどのような影響を与えるか不確かな場合などです。このような場合、 Hyper-Vのスナップショットの取得 これにより、各種設定を試行し、失敗した場合は元に戻すことができます。
バックアップとは異なり、Hyper-VのスナップショットはVMのハードディスクと同様に本番用データストアに保存されるため、VMに依存します。VMが破損したり削除されたりすると、Hyper-Vのスナップショットも失われてしまいます。バックアップは、一貫性があり独立したVMのコピーとして機能し、リモートロケーションへ簡単に移動・保存できるため、より信頼性の高いデータ保護手段となります。

4. ページングファイルのサイズを設定する
Pagefile.sys は、仮想メモリの管理やメモリ不足への対処に使用される Windows のページングファイルです。システムの物理メモリが不足し始めた場合、ページファイルを使用することで追加の RAM を利用できるようになります。一見良いアイデアのように思えますが、ページファイルを使用すると、VM のパフォーマンスに影響を与えることがあります。 そのため、Windowsのページファイルのサイズを拡大し、その最小値と最大値を、搭載しているRAMの容量の3倍に設定することをお勧めします。
5. 仮想ネットワークスイッチを過剰に作成しないでください
さまざまな用途に合わせて複数の仮想ネットワークスイッチを作成したくなるかもしれませんが、実際には、1つのネットワーク内で仮想スイッチを多用すると、処理負荷が高まる原因となります。VMのパフォーマンスを向上させるためには、仮想ネットワークスイッチを1つだけ作成し、それをさまざまな場面で活用することをお勧めします。詳細については、当社のブログ記事をご覧ください Hyper-V ネットワーク仮想化の仕組み また、効果的な仮想ネットワークインフラストラクチャにはどのようなコンポーネントを含めるべきか。
6. 管理用OSの過負荷を避ける
管理用OSは、VM、バックアップソフトウェア、およびマルウェア対策ソフトを実行するために用意されたものです。それだけです! これらの条件に当てはまらないものはすべて、仮想マシン上で実行すべきです。また、すべての仮想マシンを使用する予定がない場合は、同じHyper-Vホスト上に仮想マシンを過剰に作成しないようにしてください。使用されなくなり、仮想環境において実質的な役割を果たしていない仮想マシンがある場合は、それらを削除することをお勧めします。そうすることで、利用可能なハードウェアリソースを消費し続けたり、Hyper-Vホストに過度な負荷をかけたりすることを防げます。
7. 不要なアプリケーションを閉じる
複数の仮想マシンを同時に操作している場合、開いているすべてのアプリケーションを監視するのは困難なことがあります。しかし、それらを長時間実行したままにしておくと、利用可能なシステムリソースを消費し始め、最終的には仮想マシン全体のパフォーマンスに影響を及ぼします。仮想マシン接続ウィンドウを閉じる準備をしておきましょう。 Hyper-V マネージャーまた、タスクが完了して不要になった場合は、その他のアプリケーションウィンドウもすべて閉じてください。これは、VMのパフォーマンスを向上させるための、シンプルでありながら効果的な方法です。
8. Windows Server Core に Hyper-V をインストールする
このリストの中で最も広く受け入れられているアドバイスの一つは、Windows Server CoreにHyper-Vをインストールすることです。これは、Hyper-Vが多くのメリットをもたらすためです。 GUIを備えたWindows Serverと比較すると…すると、Windows Server Coreの方がフットプリントが小さく、攻撃対象領域も狭いことが明らかになります。その結果、消費されるハードウェアリソースが少なくなり、システム全体の脆弱性も減少します。こうして節約されたリソースは、システム上で稼働する仮想マシンのプロビジョニングに充てることができ、Hyper-V環境における仮想マシンのパフォーマンスを大幅に向上させることができます。

9. パフォーマンスの基準値を決定する
パフォーマンスのベースラインとは、標準的な条件下でシステムが示すパフォーマンスの水準のことです。あらかじめパフォーマンスのベースラインを設定しておくことをお勧めします。そうすることで、リソース使用量に変化がないかを確認したり、VM全体のパフォーマンスを監視したり、検知されたシステムエラーや障害に迅速に対応したりすることが可能になります。
10. リソースを効果的に配分する
Hyper-V 環境をどのように活用するか、作成する仮想マシンの数、およびそれらの仮想マシンをどのような目的で稼働させるかを決定します。 その後、利用可能なハードウェアおよびソフトウェアリソースの量を把握し、VMのパフォーマンスを最大化するためにそれらを効果的に割り当てる方法を決定する必要があります。さらに、VMを作成して利用可能なリソースを割り当てた後は、各VMの負荷を注意深く監視し、過剰なリソース割り当てや不足が生じないよう対策を講じる必要があります。
11. マルチパスI/Oを有効にする
マルチパスI/O(MPIO)は、ストレージデバイスとサーバーの間に複数の冗長データパスを提供します。これにより、負荷分散が改善され、Hyper-V環境の高い可用性が確保されます。特に大量のデータを扱う場合は、本番環境でこの機能を有効にすることをお勧めします。接続障害が発生した場合でも、MPIOは代替パスを使用して、データの転送を継続できるようにします。

12. 動的メモリを使用する
ダイナミックメモリを使用すると、ゲストOSが稼働中でより多くのRAMを必要としている際に、VMにメモリリソースを追加することができます。一方、ゲストOSがオフラインで、VMのパフォーマンスを維持するために多くのリソースを必要としない場合、Hyper-Vは未使用のリソースを回収し、他の稼働中のVMに割り当てることができます。さらに、特定のVMに対して利用可能なRAMの最大値と最小値を指定することで、ダイナミックメモリを設定することも可能です。

Hyper-V ダイナミック メモリを有効にした後は、デフォルトのメモリ設定を変更し、各仮想マシンの現在のワークロードに応じてダイナミック メモリの値を構成することをお勧めします。詳細および推奨事項については、当社のブログ記事をご覧ください。 Hyper-V ダイナミック メモリのベスト プラクティス.
13. VLANタグ付けを有効にする
VLAN を使用すると、利用可能なネットワークアダプタを介してネットワーク通信を行うことができます。特別な VLAN タグを追加することで、どのパケットがどの仮想 LAN に属するかを識別でき、システム内のネットワーク管理が容易になります。

VLANタグ付けは、複数のユーザーを同じVLANにグループ化し、そのパフォーマンスを詳細に監視できるため、非常に便利な機能です。さらに、どのユーザーが特定のネットワークにアクセスできるかを指定できるため、VLANタグ付けは仮想環境のセキュリティを向上させることができます。
14. 仮想ハードディスクのデフラグ
断片化とは、1つのファイルの内容がディスク上の異なるセクタに分散して保存される状態を指します。その結果、ストレージ容量が非効率的に使用され、VMのパフォーマンスに影響を及ぼします。このような問題の発生を防ぎ、VMのパフォーマンスを向上させるためには、仮想ハードディスクのデフラグを行うことをお勧めします。この操作により、ファイルやアプリケーションを再配置し、未使用のディスク容量を特定し、リソースの過剰消費を防ぐことができます。
15. ハードウェアが認定されていることを確認してください
仮想インフラストラクチャが遅延や中断なく動作することを保証するには、Microsoft によって認定され、Hyper-V 環境で完全にサポートされているハードウェアおよびソフトウェアコンポーネントを使用する必要があります。選択したハードウェアまたはソフトウェアコンポーネントが実際に認定されており、お客様の環境で使用可能かどうかを確認するには、Microsoft の Windows Server カタログ そして、必要な情報を見つけます。
16. RAID 10 ボリュームを使用する
RAID(独立ディスクの冗長アレイ) これは、データを複数のハードディスク上の異なる領域に分散して保存する手法であり、ストレージのデータ冗長性と耐障害性を向上させることができます。 RAID 10は、RAID 1(ディスクミラーリング)とRAID 0(ディスクストライピング)を組み合わせたもので、両方のアレイ方式の利点を兼ね備えています。RAID 10を構築するには最低4台のディスクが必要ですが、これによりデータを確実に保護し、ドライブの故障時にも容易にデータを復元することが可能になります。
17. 64ビットゲストOSおよび第2世代VMの導入
多くの場合、32ビット版よりも64ビット版のゲストOSを選択することをお勧めします。これは、64ビット版の方がより多くのメモリ領域を確保できるためです。したがって、メモリの全体的な速度を向上させ、VMのパフォーマンスを改善したい場合は、必須ではありませんが、64ビットOSを導入することをお勧めします。
また、Generation 2 VMの作成をお勧めします。これは、Generation 2 VMがハイパーバイザーを意識して設計されており、 第1世代のVMとは異なりまた、エミュレートされたハードウェアや合成ハードウェアに依存していません。第2世代のVMは、セキュアブートとトラステッド・プラットフォーム・モジュール(TPM)を活用することで、より高いレベルのセキュリティを確保し、より多くの起動オプションを提供します。その結果、VMのパフォーマンスが大幅に向上します。
18. ウイルス対策ソフトを適切に設定する
Hyper-V環境を構築することにした場合は、そのセキュリティ対策も極めて重要です。 この目的のために、アンチウイルスやその他のマルウェア対策ソフトウェアをインストールすることができます。これらは、インフラストラクチャ内の悪意のある活動を検索・検知し、システム全体への感染を防ぐ役割を果たします。
ただし、適切に設定されていない場合、アンチウイルスはシステム内で実行されている重要なプロセスや操作に干渉するリスクがあります。そのため、アンチウイルスのデフォルト設定を変更し、特定のファイルやアプリケーションを通常のウイルススキャンから除外する必要があります。
定期的なウイルススキャンから除外すべきファイル形式は、.vhd、.vhdx、.avhd、.avhdx、.vsv、.iso、.rct、.vmcx、.vmrs です。ただし、特定の Hyper-V 仮想マシンの安全性を確実に確保したい場合は、対象の仮想マシンにアンチウイルスソフトをインストールし、その内部で脆弱性スキャンを実行することをお勧めします。
19. 負荷の高い仮想マシンを別々のボリュームに整理する
大規模なワークロードを実行する複数の仮想マシンを同じストレージボリュームに配置すると、現在のI/O操作に影響を与え、仮想マシンのパフォーマンス全体を低下させる可能性があります。この問題を回避するには、負荷の高い仮想マシンを別々のボリュームに配置し、仮想ハードディスクや仮想マシンの構成ファイルを保存するための十分なスペースを確保するとともに、大規模なワークロードを実行するための十分なハードウェアリソースを確保することをお勧めします。
20. PowerShell コマンドレットを使用してタスクを自動化する
PowerShell コマンドレットを使用する主な利点は、特定のタスクを自動化できるため、Hyper-V 環境の管理においてより柔軟性が高まることです。一般的な Hyper-V 管理ツール (Hyper-V マネージャーや SCVMM)には GUI が搭載されていますが、Hyper-V ホストや仮想マシンの管理に関しては、その機能には依然として限界があります。
一部の仮想化機能は、PowerShell を使用しないと有効化や設定を行うことができません。したがって、PowerShell コマンドレットの威力を過小評価してはなりません。これらのスクリプトの扱い方を習得すれば、仮想マシンのパフォーマンスを飛躍的に向上させ、Hyper-V 環境の管理方法を一新することができるでしょう。