Featured image of post Proxmox VEのVM管理:作成から最適化まで Featured image of post Proxmox VEのVM管理:作成から最適化まで

Proxmox VEのVM管理:作成から最適化まで

Proxmox VEでの仮想マシン管理を完全解説。VM作成手順、VirtIOドライバ、Qemu Guest Agent、cloud-init、インポート/エクスポート、パフォーマンスチューニングまで。

VM作成のステップバイステップ

Proxmox VEのWeb UIで Create VM をクリックするか、CLIのqmコマンドを使ってVMを作成します。ウィザードは8つの設定画面で構成されています。

General

一意のVM ID(通常100からの整数)と説明的な名前を設定します。名前は純粋な識別用であり、ゲストのネットワークには影響しません。

OS

ローカルストレージまたはアップロード済みのISOイメージを選択します。ISOがない場合は local (pve) → ISO Images → Upload からアップロードします。Windowsゲストの場合は明示的にゲストOSを Microsoft Windows に設定してください。

System

グラフィックカードSCSIコントローラー を選択します。現行のゲストには以下の設定を推奨します。

コンポーネント推奨代替
BIOSSeaBIOS(デフォルト)OVMF(UEFI)
マシンタイプq35i440fx
SCSIコントローラーVirtIO SCSI singleLSI 53C895A
Qemu Agent有効(チェック)無効

SeaBIOS vs OVMF/UEFI: SeaBIOSはほぼすべてのOSと互換性があります。OVMFはUEFIを提供し、セキュアブートやNVMeドライブからの起動が必要な場合に使用します。UEFIが必要な場合はOVMFを選択し、EFIディスクを追加してください。

Qemu Agent にチェックを入れると、ホストとゲスト間の通信が有効になり、グレースフルシャットダウンやスナップショットの整合性確保、IPアドレスの報告が可能になります。

Disks

ディスクのバス方式はパフォーマンスに直結します。

バス方式パフォーマンス機能サポートユースケース
VirtIO最良TRIM、discard、非同期IOLinuxゲスト(デフォルト)
SATA良好幅広いOS対応互換性重視、古いOS
IDE低い最大互換性レガシーOS(Windows XP等)

キャッシュモードは Write back (no cache) を選択します。Discard を有効にすると、シンプロビジョニングされたストレージの未使用領域をゲストOSが解放できます。

CPU

ソケット数とコア数を指定します。ほとんどのワークロードではソケットを1に設定し、コア数を割り当てます。typehost に設定するとホストのCPU機能セットが公開され、パフォーマンスが最大になりますが、異種ハードウェアへのライブマイグレーションはできなくなります。

Memory

メモリをMiBまたはGiBで割り当てます。Ballooning を有効にすると、ホストがゲストから未使用メモリを回収できるようになります。レイテンシが重要なワークロードではバルーニングを無効にします。

Network

ネットワークモデルは VirtIO(準仮想化) を選択します。VirtIOはネイティブに近いスループットと低いCPUオーバーヘッドを実現します。

Confirm

サマリーを確認し、即時起動する場合は Start after created にチェックを入れて Finish をクリックします。

Windows用VirtIOドライバ

WindowsにはVirtIOドライバが同梱されていません。Fedoraプロジェクトから公式のVirtIOドライバISOをダウンロードし、2つ目のCD-ROMとしてVMにアタッチします。

wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

Windowsインストール中に、ディスク選択画面でドライバを手動で読み込みます。CD-ROMからアーキテクチャに合ったディレクトリ(w10/amd64)を選択してください。

Qemu Guest Agent

QEMU-GAはVM内部で動作し、ホストとの通信チャネルを提供します。

Linux

# Debian / Ubuntu
apt install qemu-guest-agent

# RHEL / Rocky / Alma
dnf install qemu-guest-agent

systemctl enable --now qemu-guest-agent

Windows

virtio-win-guest-tools インストーラーに含まれています。インストール後、QEMU Guest Agent サービスが自動起動します。

ホストからエージェントの動作確認:

qm agent <VMID> ping

Cloud-Initテンプレートによる自動デプロイ

Cloud-Initはクラウドインスタンスの初期化における業界標準です。Proxmoxはネイティブ対応しており、テンプレートVMを作成してクローンするだけで、カスタムネットワークやSSH鍵を設定できます。

# Cloud-Init対応VMの作成
qm create 9000 --memory 2048 --cores 2 --net0 virtio,bridge=vmbr0
qm importdisk 9000 jammy-server-cloudimg-amd64.img local-lvm
qm set 9000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-9000-disk-0
qm set 9000 --ide2 local-lvm:cloudinit
qm set 9000 --boot c --bootdisk scsi0
qm set 9000 --serial0 socket --vga serial0
qm set 9000 --agent 1
qm template 9000

テンプレートからクローン:

qm clone 9000 100 --name web-server --full
qm set 100 --sshkeys ~/.ssh/id_rsa.pub
qm set 100 --ipconfig0 ip=192.168.1.50/24,gw=192.168.1.1
qm set 100 --ciuser ubuntu
qm start 100

VMのインポートとエクスポート

OVFインポート

qm importovf 200 vmware-export.ovf local-lvm

ディスクイメージの変換

qemu-img convert -f qcow2 -O vmdk vm-100-disk-0.qcow2 vm-100-disk-0.vmdk

対応形式: qcow2、raw、vmdk、vdi、vhdx、qed。

パフォーマンスチューニング

CPUピニングとNUMA

CPUピニングは仮想CPUを特定の物理コアに固定し、コンテキストスイッチのオーバーヘッドを排除します。

qm set <VMID> --cpulist 0-3,8-11 --numa 0

NUMA対応はVMにホストのNUMAトポロジーを認識させます。4vCPU以上のVMやメモリ集約型アプリケーションでは必ず有効にしてください。

バルーニングメモリ

バルーニングにより、ホストはゲストから未使用メモリを回収できます。データベースやJavaアプリケーションでは無効にします。

qm balloon <VMID> <memory-in-MB>

PCIeパススルーとGPUパススルー

IOMMUを有効にした上で、物理デバイスをVMに直接割り当てます。

# /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"

update-grub
reboot

デバイスの追加:

qm set <VMID> --hostpci0 01:00.0,pcie=1

メトリクスとモニタリング

ProxmoxのWeb UIではCPU、メモリ、ネットワーク、ディスクI/Oのグラフを確認できます。外部監視にはZabbix、Prometheus、Netdata、SNMPが利用可能です。

Datacenter → Notifications でゲストシャットダウンやバックアップ失敗などのイベント通知を設定できます。