Windows Server 2025 / VMのCPU・メモリ・VHDXを管理する

VMの資源はホストの余力とゲストの処理に合わせます。CPU、メモリ、ディスクを増やせば必ず速くなるわけではないため、元の値を記録して一つずつ比較します。

ホストとゲストの観察を分ける

vCPUはゲストへ見せるCPUで、専用物理コアとは限りません。VHDXはディスクとして見せるファイルです。ホスト不足は複数ゲストへ影響するため、CPU競合、割り当てメモリ、保存領域とゲストの使用量を併せて調べます。

HVTEST01を正常終了してOffを確認します。ここでは稼働中変更に依存しません。CPUとメモリの値は戻せても、データディスクの縮小は同じように簡単な戻し方ではありません。

CPU数だけを変えて比較する

Get-VM -Name 'HVTEST01' | Select-Object Name,State,ProcessorCount
Get-VMProcessor -VMName 'HVTEST01' | Select-Object Count,Reserve,Maximum,RelativeWeight
  1. 現在のCPU数を控え、停止中に2個から1個へ変更します。
  2. 同じ限定作業を行い、ゲストの使用率、所要時間、ホストの他負荷を記録します。
  3. 正常終了して2個へ戻します。

軽い作業では差が見えないこともあります。一回の観察を一般的な性能順位にせず、多数VMへの過大割り当てによる競合も考慮します。

固定と動的メモリを選ぶ

動的メモリは最小、起動、最大の範囲で需要とホスト状況に応じて変わります。最大値は確保保証ではありません。アプリ対応と起動時に必要な容量を調べます。

Get-VMMemory -VMName 'HVTEST01' | Select-Object DynamicMemoryEnabled,Minimum,Startup,Maximum
Set-VMMemory -VMName 'HVTEST01' -DynamicMemoryEnabled $true -MinimumBytes 2GB -StartupBytes 4GB -MaximumBytes 6GB

2・4・6GBはSet-VMMemoryを使う実習例です。Hyper-Vの割り当てと需要、ゲストのページング、ホストの空きを比較します。起動メモリ不足ならVMが始まらない場合もあります。元が固定4GBなら停止後に次で戻します。

Set-VMMemory -VMName 'HVTEST01' -DynamicMemoryEnabled $false -StartupBytes 4GB

仮想容量と実ファイルを区別する

Get-VMHardDiskDrive -VMName 'HVTEST01' | Select-Object ControllerType,ControllerNumber,ControllerLocation,Path
Get-VMHardDiskDrive -VMName 'HVTEST01' | ForEach-Object { Get-VHD -Path $_.Path } | Select-Object Path,VhdType,FileSize,Size,ParentPath

Sizeはゲストへ見せる容量、FileSizeはホスト上のファイルサイズです。固定は先に領域を確保し、可変は書き込みで増えます。ゲスト内の削除で直ちに実ファイルが縮むとは限りません。差分ディスクは親に依存し、AVHDXと親の連鎖を保つ必要があります。

ディスク追加と領域拡張を分ける

  1. HVTEST01を停止し、OSディスクのパスを控えます。
  2. SCSIへ別のHVTEST01-Data.vhdxを可変20GBで作ります。
  3. 起動後に新規ディスクだけを識別し、GPTと空いているドライブ文字で領域を作ります。

VHDの作成条件を確認します。既存ディスクの拡張はバックアップ、チェックポイント、接続方式を調べ、ゲスト内のパーティションも拡張します。隣接する未割り当て領域が必要な場合があります。

縮小、変換、強制取り外しを一緒に行いません。新規データの接続解除前はデータを保護して停止し、他VMや差分ディスクの参照も確認します。接続解除とファイル削除は別です。