第14章: 仮想化とHyper-Vの管理
1. この章で解説する主要な技術・概念(箇条書き)
- Hyper-Vの基本概念とWindows Server 2022での仮想化機能
- ハイパーバイザーの種類(Type1 / Type2)、Hyper-Vのメリット
- Windows Server 2022での追加・強化点
- 仮想マシンの作成・設定・管理
New-VM
,Start-VM
,Stop-VM
,Set-VM
などのPowerShellコマンド- メモリ・CPU割り当て、ダイナミックメモリ運用
- 仮想ネットワーク(VMSwitch)の構成
- External / Internal / Private の違いと活用例
New-VMSwitch
,Add-VMNetworkAdapter
の詳細
- 仮想ディスク(VHD, VHDX)とストレージの管理
New-VHD
,Add-VMHardDiskDrive
, 動的/固定/差分ディスク- チェックポイント(スナップショット)の作成・削除 (
Checkpoint-VM
,Remove-VMSnapshot
)
- 高可用性とライブマイグレーションの設定
- Hyper-Vクラスターの概念(Failover Clustering + Hyper-V)
- ライブマイグレーション / ストレージマイグレーション、
Move-VM
コマンド
- Windowsコンテナの基本とPowerShellでの操作
- WindowsコンテナとDockerの違い
docker pull/run
の基本コマンド、Hyper-Vコンテナとの関係
- 運用時のベストプラクティスとトラブルシューティング
- ネットワーク設計、vNICの冗長化、セキュリティ設定
- パフォーマンス監視とログ解析
2. Hyper-Vの基本概念とWindows Server 2022での仮想化機能
2-1. ハイパーバイザー(Hypervisor)の種類とHyper-Vの特徴
- Type1ハイパーバイザー: ハードウェア上で直接動作する(例: Hyper-V、VMware ESXi)。
- Type2ハイパーバイザー: ホストOS上のアプリとして動作(例: VirtualBox、VMware Workstation)。
Windows ServerのHyper-VはType1の一種で、ホストOS(Windows Server)が最下層のハイパーバイザーと統合的に動作し、高いパフォーマンスと安定性を提供。
2-2. Windows Server 2022でのHyper-V強化点
- セキュアブートの拡張: 仮想マシン上でもセキュアブートをサポートし、改ざん防止機能が強化。
- Nested Virtualization: Hyper-V上の仮想マシン内で再度Hyper-Vを動かせる機能(Intel VT-x/EPT対応などが必要)。
- 仮想スイッチの拡張: シールドVMや仮想ネットワーク冗長化の改良など。
3. 仮想マシンの作成・設定・管理
3-1. Hyper-Vロールのインストール
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart
- サーバー再起動後、
Get-VM
やNew-VM
コマンドが利用可能に。
3-2. VMの作成と起動例
# 新規仮想マシン "TestVM" をメモリ2GB, VHDX 40GBで作成し、外部スイッチ "ExternalSwitch" に接続
New-VM -Name "TestVM" -MemoryStartupBytes 2GB -SwitchName "ExternalSwitch" -NewVHDPath "D:\VM\TestVM.vhdx" -NewVHDSizeBytes 40GB
Start-VM -Name "TestVM" # VM起動
Stop-VM -Name "TestVM" # シャットダウン(ゲストIntegrationが有効なら正規OSシャットダウン)
Restart-VM -Name "TestVM"
-MemoryStartupBytes
で静的メモリを割り当てる。動的メモリを使う場合、Set-VM -DynamicMemoryEnabled $true
で設定変更可能。
3-3. VM設定変更(CPU数、メモリ、ネットワーク)
Set-VM -Name "TestVM" -ProcessorCount 4
Set-VM -Name "TestVM" -MemoryStartupBytes 4GB
Add-VMNetworkAdapter -VMName "TestVM" -SwitchName "InternalSwitch" -Name "IntraNet"
- ゲストOSが起動中の場合、一部設定(CPU数やスタートアップメモリ変更など)は停止状態でないと反映されない。
4. 仮想ネットワーク(VMSwitch)の構成
4-1. External / Internal / Private の違い
- External: 物理NICに接続し、外部ネットワークからアクセス可能
- Internal: ホストOSと仮想マシン間でのみ通信(物理ネットワークには出られない)
- Private: 仮想マシン同士のみ通信(ホスト含まず)
4-2. スイッチの作成例
# 物理NIC "Ethernet" を使ったExternal Switch "ExternalSwitch"を作成
New-VMSwitch -Name "ExternalSwitch" -NetAdapterName "Ethernet" -SwitchType External
# Private Switch
New-VMSwitch -Name "PrivateSwitch" -SwitchType Private
- ExternalSwitchを作成すると、ホストOSが共有で使うためNIC設定がやや変わる場合あり。
- インターネットアクセスが必要なVMは基本的にExternalかNAT構成を使う。
5. 仮想ディスク(VHD, VHDX)とストレージの管理
5-1. VHD / VHDX作成とVMへの接続
New-VHD -Path "D:\VM\DataDisk.vhdx" -SizeBytes 100GB -Dynamic
Add-VMHardDiskDrive -VMName "TestVM" -Path "D:\VM\DataDisk.vhdx"
-Dynamic
(動的拡張) か-Fixed
(固定サイズ) かを選択。New-VM
の-NewVHDPath
パラメータを使えば、VM作成時に仮想ディスクも同時に作成できる。
5-2. スナップショット(Checkpoint)の活用
Checkpoint-VM -Name "TestVM" -SnapshotName "BeforeUpdate"
Remove-VMSnapshot -VMName "TestVM" -Name "BeforeUpdate"
- Checkpointを作成しシステム更新や実験を行い、問題があれば
Restore-VMSnapshot
(またはGUIでCheckpointに戻す)で巻き戻し可能。 - 本番運用ではCheckpointの常用は推奨されず、期間限定でテスト用途に使うのが主流。
- Checkpointが残り続けると差分ディスクが増え、パフォーマンス低下やディスク枯渇のリスクがある。
6. 高可用性とライブマイグレーションの設定
6-1. Hyper-Vクラスター(Failover Clustering + Hyper-V)
- 複数のWindows ServerノードをFailover Clusterとして構成し、共有ストレージやCSV (Cluster Shared Volumes) を利用してVMを冗長化。
- ノード障害時に自動フェールオーバーし、仮想マシンを別ノードで起動できる。
- Add-ClusterVirtualMachineRole などのコマンドを用い、クラスター上のVM管理が可能。
6-2. ライブマイグレーション
- ライブマイグレーションにより、停止せずに仮想マシンを別ホストへ移動し、物理サーバーメンテナンスのダウンタイムを削減。
- GUIではHyper-Vマネージャー、PowerShellでは
Move-VM
で実行。 - 事前にCredSSPやKerberos認証による制約をクリアし、ホスト間ネットワーク帯域を確保する必要がある。
7. Windowsコンテナの基本とPowerShellでの操作
7-1. WindowsコンテナとDocker
- Windowsコンテナはアプリケーションを軽量な隔離環境で実行する仕組み(OSレベル仮想化)。
- Dockerエンジンをインストールし、
docker run
などのコマンドを用いてコンテナを起動する。 - Hyper-Vコンテナ: WindowsコンテナをさらにHyper-Vレイヤーで隔離する形態。セキュリティが高まるが、リソース消費も増える。
7-2. 基本的なDocker操作例
# Windowsコンテナのイメージ取得(Nanoserverなど)
docker pull mcr.microsoft.com/windows/nanoserver:ltsc2022
# コンテナ起動
docker run -it --name MyNano mcr.microsoft.com/windows/nanoserver:ltsc2022 cmd
- 実行すると、コンテナ内で
cmd
が起動し、Exitすればコンテナが停止する。 - PowerShellから
docker
コマンドを呼び出し、コンテナやイメージを一括管理できる。
7-3. Kubernetes on Windows
- Windows ServerコンテナをKubernetesでオーケストレーションするには、Windowsノードを構成する手順が必要(Linuxノードと混在可能)。
- まだLinuxコンテナほど成熟していないが、マイクロサービスアーキテクチャをオンプレ環境で構築する例が増えている。
8. 運用時のベストプラクティスとトラブルシューティング
8-1. ネットワーク設計とセキュリティ
- Hyper-Vホストの物理NICを複数用意し、管理用ネットワークとVM用ネットワークを分離。
- vSwitchのチーミング(LBFOチーミング)で高可用性を確保。
- VMを外部から保護するため、Hyper-V仮想スイッチにおける拡張ポートACLやファイアウォールの最適化が必要な場合も。
8-2. パフォーマンス監視
- Resource Metering機能で、各VMのCPU/メモリ/ネットワーク使用量を計測できる(
Enable-VMResourceMetering
,Measure-VM
など)。 - ストレージI/Oやネットワーク帯域がボトルネックになる場合、動的にVMを他のホストへ移動(ライブマイグレーション)する負荷分散シナリオが考えられる。
8-3. 代表的なエラーと対処
- 「Integration Servicesが競合する」
- ゲストOSが古いWindowsの場合、Hyper-V Integration ServicesのバージョンMismatch
- Windows Updateか手動更新で合わせる
- 「仮想ディスクがロックされて削除できない」
- VMが参照中 or スナップショットが依存している
- スナップショットをマージ/削除し、VMを停止してから操作
- 「ライブマイグレーションに失敗」
- 構成要件(Kerberos / CredSSP / 同ドメイン / マシンアカウントSPN)を満たしているか確認
- ネットワーク帯域不足、DNS解決不備もよくある原因
9. 章末まとめと次章へのつながり
9-1. 学習のまとめ
- Hyper-Vを使った仮想マシンの作成・運用(
New-VM
,Start-VM
,Stop-VM
など)の手順を理解し、Memory/CPU設定やネットワーク(VMSwitch)の選択肢を把握しました。 - 仮想ネットワークとしてExternal/Internal/Privateが存在し、サーバーの運用要件に応じて仮想スイッチを設計する必要がある。
- 高可用性(Hyper-Vクラスターによるフェールオーバー)やライブマイグレーションを組み合わせれば、物理ホスト障害やメンテナンス時のダウンタイムを最小化可能。
- Windowsコンテナという軽量仮想化の選択肢も存在し、Dockerコマンドとの連携でモダンなアプリケーション運用を実現できる。
- 運用上のベストプラクティス(ネットワーク冗長化、ストレージ構成、リソースメータリングなど)を押さえつつ、トラブルシューティングの典型例を理解することで、安定した仮想化基盤を構築できる。
9-2. 次章へのつながり
- 次章(第15章)では、トラブルシューティングとパフォーマンス最適化に焦点を当てます。
- 仮想化環境でも、ホスト側/ゲスト側でネットワーク競合やディスクI/O過負荷などが発生しやすく、適切なログ分析やパフォーマンスカウンター監視が必要。
- Hyper-VやWindowsコンテナを含む環境全体でトラブルが起きた際にどう対処するか、パフォーマンス監視の具体的なコマンドやボトルネック分析手法を次章で詳しく学んでいきましょう。