逐步创建虚拟机
Proxmox VE 提供了用于创建 VM 的引导向导,可通过 创建 VM 的 Web UI 或通过 qm CLI 工具进行访问。该向导将逐步完成八个配置页面。
一般的
设置唯一的 VM ID(整数,通常从 100 开始)和描述性名称。该名称不会影响访客网络——它纯粹是为了识别。 (可选)选择资源池来组织相关虚拟机。
操作系统
从本地存储或上传的文件中选择 ISO 映像。如果没有可用的 ISO,请通过 Web UI 在 local (pve) → ISO Images → Upload 下上传一个 ISO。对于 Linux 客户机,安装程序会自动检测操作系统类型。对于 Windows,明确选择 Microsoft Windows 作为来宾操作系统以启用最佳默认值。
系统
选择 显卡 和 SCSI 控制器。对于现代客人,请使用:
| 组件 | 推荐 | 另类 |
|---|---|---|
| BIOS | SeaBIOS(默认) | OVMF(UEFI) |
| 机器类型 | q35 | i440fx |
| SCSI 控制器 | VirtIO SCSI 单 | LSI 53C895A |
| Qemu代理 | 启用(选中) | 已禁用 |
SeaBIOS 与 OVMF/UEFI:SeaBIOS 是一种传统 BIOS,适用于几乎所有操作系统。 OVMF 提供 UEFI 支持,这是某些配置中安全启动和从 NVMe 驱动器启动所需的。如果需要 UEFI,请切换到 OVMF 并添加 EFI 磁盘。许多现代 Linux 发行版(Ubuntu 22.04+、RHEL 9+)在 UEFI 下安装速度更快。
勾选 Qemu Agent 以启用主机和来宾之间的通信,以实现正常关闭、快照静默和 IP 地址报告。
磁盘
磁盘配置对于性能至关重要。 Proxmox 支持三种总线类型:
| 巴士类型 | 性能 | 功能支持 | 使用案例 |
|---|---|---|---|
| 虚拟IO | 最佳 | TRIM、丢弃、异步 IO | Linux 来宾(默认选择) |
| SATA | 好 | 广泛的操作系统支持 | 较旧的操作系统,兼容性 |
| IDE | 可怜 | 最大兼容性 | 旧版操作系统(Windows XP 等) |
对于生产工作负载,将缓存模式设置为写回(无缓存)。启用放弃以允许来宾回收精简配置存储上未使用的空间。 SSD 仿真 标志告诉来宾操作系统将磁盘视为 SSD,这可以改进 I/O 调度。
中央处理器
指定插槽和核心的数量。 Proxmox 将 vCPU 总数显示为 sockets * cores。对于大多数工作负载,将 sockets 设置为 1 并分配核心。将 type 设置为 host 以公开主机 CPU 功能集 - 这可以最大限度地提高性能,但会阻止实时迁移到不同的硬件。使用 kvm64 或 qemu64 实现迁移兼容性。
当来宾拥有的 vCPU 数量多于单个物理 NUMA 节点时,启用 NUMA。 Proxmox 会自动将内存固定到正确的节点。
记忆
以 MiB 或 GiB 为单位分配内存。启用 Ballooning 以允许主机从来宾回收未使用的内存。最小的气球尺寸可以防止过度回收,从而导致客舱内部发生交换。对于延迟敏感的工作负载(数据库、实时系统),请禁用气球。
网络
选择 VirtIO(半虚拟化) 作为网络模型。 VirtIO 以较低的 CPU 开销提供接近本机的吞吐量。 Intel E1000 和 Realtek RTL8139 模拟网卡可实现兼容性,但性能明显较差。
设置静态 MAC 地址 或让它自动生成。将虚拟机分配给桥(通常为 vmbr0)。对于多租户环境,请创建具有不同 VLAN 标记的单独网桥。
确认
如果您希望虚拟机立即启动,请查看摘要并选中创建后启动。单击完成。
适用于 Windows 的 VirtIO 驱动程序
Windows 不附带 VirtIO 驱动程序。从 Fedora 项目下载官方 VirtIO 驱动程序 ISO,并将其作为第二个 CD-ROM 驱动器附加到虚拟机。
wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
mount -o loop virtio-win.iso /mnt
cp /mnt /var/lib/vz/template/iso/
在 Windows 安装过程中,出现磁盘选择屏幕时手动加载 VirtIO 驱动程序。浏览 CD-ROM,找到与您的操作系统架构相匹配的正确驱动程序目录(对于 64 位 Windows 10/11,为 w10/amd64)。如果没有这些驱动程序,Windows 将无法识别 VirtIO 磁盘或网络适配器。
安装后,在 Windows 中安装 virtio-win-guest-tools 包以实现气球、内存气球和 viosock 支持。
Qemu 客座代理
Qemu Guest Agent (QEMU-GA) 在虚拟机内部运行,并为主机提供通信通道。首次启动后将其安装在来宾操作系统中。
Linux
# Debian / Ubuntu
apt install qemu-guest-agent
# RHEL / Rocky / Alma
dnf install qemu-guest-agent
# Enable and start
systemctl enable --now qemu-guest-agent
视窗
该代理包含在 virtio-win-guest-tools 安装程序中。或者,单独下载 MSI 并安装。安装后,QEMU Guest Agent 服务应该出现并自动启动。
验证代理是否正在从 Proxmox 主机运行:
qm agent <VMID> ping
如果代理响应,主机可以发出如下命令:
qm agent <VMID> shutdown
qm agent <VMID> get-time
qm agent <VMID> network-get-interfaces
该代理还启用冻结/解冻以获得一致的文件系统快照,并在 Web UI 摘要面板中报告访客 IP 地址。
用于自动部署的 Cloud-Init 模板
Cloud-init 是初始化云实例的行业标准。 Proxmox 本身支持它,允许您创建模板 VM 并使用自定义网络、SSH 密钥和用户数据克隆它。
创建兼容 cloud-init 的 VM:
# Create VM with cloud-init image
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
# Set cloud-init values
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
Web UI 在 Cloud-Init 选项卡下提供相同的 cloud-init 字段。这种方法消除了重复的手动设置,并确保所有虚拟机遵循一致的配置基准。
导入和导出虚拟机
OVF 导入
Proxmox 可以导入由 VMware、VirtualBox 或其他虚拟机管理程序创建的 OVF/OVA 文件。使用 qm importovf 命令:
qm importovf 200 vmware-export.ovf local-lvm
如果 OVF 引用的磁盘未存储在其旁边,请单独下载 VMDK 并使用:
qm importdisk 200 disk.vmdk local-lvm
导出到 OVF
要将 Proxmox VM 迁移到另一个平台,请将其导出:
qm template 100 # VM must be stopped
没有本机 qm exportovf — 使用 qemu-img 转换磁盘映像并手动构建 OVF 描述符,或使用 ovftool 等社区工具。
磁盘映像转换
使用 qemu-img 在格式之间进行转换:
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(非统一内存访问)感知告诉访客有关主机 NUMA 拓扑的信息。当虚拟机拥有超过 4 个 vCPU 或运行内存密集型应用程序时启用它。
气球般的记忆
内存膨胀允许主机从来宾回收未使用的内存。 virtio-balloon 驱动程序协商主机和来宾之间的内存压力。监控气球使用情况:
# In guest
cat /sys/devices/system/memory/memory*/state
# On host
qm balloon <VMID> <memory-in-MB>
禁用数据库、Java 应用程序和实时工作负载的气球。
PCIe 和 GPU 直通
将物理设备直接传递给 VM 需要 IOMMU 支持。在内核中启用它:
# /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
# For AMD
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"
更新 grub 并重新启动:
update-grub
reboot
然后将设备添加到VM:
qm set <VMID> --hostpci0 01:00.0,pcie=1
GPU 直通在游戏虚拟机或 GPU 加速的计算工作负载中很流行。通过检查 lspci -v 确保 GPU 位于其自己的 IOMMU 组中。
指标和监控
Proxmox 通过 Proxmox VE Metrics 堆栈提供内置监控。从 Web UI 查看每个虚拟机的 CPU、内存、网络和磁盘 I/O 图表。对于外部监控,集成:
- Zabbix:提供官方 Proxmox 模板
- Prometheus:使用 Proxmox VE 导出器
- Netdata:安装内部来宾以获取精细指标
- SNMP:Proxmox 支持 SNMP v2c 和 v3
在数据中心 → 通知下配置通知目标,以处理诸如来宾关闭、备份失败或 HA 防护等事件。

