跳转到内容

创建第一个虚拟机 ​

创建向导有七个标签页,选项不少。这篇把每一项的含义和该怎么选说清楚,然后装一台 Debian 作为练手。

开始之前 ​

  • 已按配置软件源完成基础配置。
  • 已理解存储模型,知道磁盘会落在哪。
  • 准备一个 ISO:本文用 Debian 的 netinst 镜像作为例子。

先上传 ISO ​

节点 → local → ISO Images → Upload,选择本地的 ISO 文件。

大文件上传慢的话,用「Download from URL」让 PVE 直接下载更快:

sh
# 或者在宿主机 shell 里直接下,放到这个目录即可
cd /var/lib/vz/template/iso/

创建向导逐项讲解 ​

点右上角 Create VM。

General ​

字段说明
Node单机就一个选项
VM ID客户机编号,默认从 100 开始。建议规划一下:比如 1xx 给基础设施,2xx 给测试
Name显示名。只能用字母数字和连字符,不能有中文和下划线
Start at boot宿主机开机时自动启动这台虚拟机

Start at boot 和启动顺序

勾了这项之后,还可以在 虚拟机 → Options → Start/Shutdown order 里设置顺序和延迟。跑软路由或 DNS 的虚拟机应该排在前面,依赖它们的排后面。

OS ​

选上一步上传的 ISO,并设置 Guest OS 的类型和版本。

这个选项不是摆设

Guest OS 类型会影响 PVE 给虚拟机的默认硬件配置和一些 QEMU 参数。选 Windows 和选 Linux,生成的配置是不同的。照实选。

System ​

这一页决定了虚拟机的「主板」,装完系统之后改动其中几项会让系统起不来。

字段建议说明
Graphic cardDefault除非要做显卡直通
Machineq35(现代系统)或 i440fx(老系统)q35 提供 PCIe,做直通必须用它
BIOSOVMF (UEFI) 或 SeaBIOS现代系统用 UEFI;老系统或不确定时用 SeaBIOS 更省事
Add EFI Disk选 UEFI 时自动勾上存放 UEFI 变量,必须有
SCSI ControllerVirtIO SCSI single性能最好,且支持给每块盘开 iothread
Qemu Agent勾上见下文
Add TPM只在装 Windows 11 时需要

Machine 和 BIOS 装完之后别乱改

把已经装好的系统从 SeaBIOS 改成 UEFI(或反过来),系统会直接起不来,因为引导方式完全不同。创建时就定好。

Machine 类型从 i440fx 改成 q35 也可能导致设备编号变化,Windows 客户机尤其敏感。

Qemu Agent 要两边都做

这里勾上只是告诉 PVE 去和 agent 通信。还必须在客户机里安装 qemu-guest-agent 软件包,否则没有效果,而且关机会变慢(PVE 等待 agent 响应直到超时)。见 VirtIO 驱动与 QEMU Guest Agent。

Disks ​

字段建议说明
Bus/DeviceSCSI配合 VirtIO SCSI single 控制器,性能最好
Storagelocal-lvm 或你的 ZFS 池见存储模型
Disk size按需,Linux 32 GB 起步够用可以扩大,缩小很麻烦
CacheDefault (No cache)见下文
Discard勾上让删除的空间能回收
IO thread勾上配合 VirtIO SCSI single,给磁盘单独的 IO 线程
SSD emulation底层是 SSD 就勾上让客户机知道自己在 SSD 上

Cache 不要随便改成 writeback

网上有教程建议把 Cache 设成 Writeback 提升性能。它确实更快,但宿主机突然断电时,已经「写入成功」的数据可能还在内存里没落盘,客户机文件系统会损坏。

默认的 No cache 是安全的选择。真要改,先确保有 UPS,并且理解你在拿什么换性能。

磁盘大小怎么估

用 LVM-Thin 或 ZFS 这类精简分配的存储时,分配 64 GB 不等于立刻占用 64 GB,实际只占用写入的部分。所以可以分得宽裕一些。但别忘了这也意味着超额分配的风险,见 local 与 local-lvm。

CPU ​

字段建议
Sockets1(除非你在模拟多路服务器)
Cores从 2 开始,不够再加
Typehost

Type 为什么建议 host

host 表示把宿主机 CPU 的全部指令集特性透传给客户机,性能最好。代价是:这台虚拟机只能迁移到 CPU 型号兼容的节点上。

单机环境用 host 没有任何理由不用。集群环境如果节点 CPU 型号不同,改用 x86-64-v2-AES 这类通用型号,换取迁移自由。

别一上来就给满核

给虚拟机分配的 vCPU 总数可以超过物理核心数(超额分配),宿主机会调度。但单台虚拟机分太多核反而可能变慢(调度开销、NUMA 跨节点)。从 2 核开始,观察负载再加。

Memory ​

字段说明
Memory分配的内存上限
Minimum memory填了就启用气球驱动(ballooning),内存在这个区间浮动
Ballooning Device默认勾上

气球驱动不是万能的

Ballooning 让宿主机在内存紧张时从客户机「收回」内存。它需要客户机里有对应驱动,而且收回是有延迟的,应付不了瞬时的内存压力。

更重要的是:有些客户机不适合 ballooning,比如跑 ZFS 的 NAS 虚拟机、跑数据库的虚拟机。这些应该给固定内存(Minimum 留空)。

Network ​

字段建议
Bridgevmbr0
ModelVirtIO (paravirtualized)
VLAN Tag留空,除非在做 VLAN
Firewall内网环境可以不勾

装系统时如果认不到 VirtIO 网卡,临时换成 E1000,装完驱动再换回来。

Confirm ​

检查一遍配置。不要勾 Start after created——先看一眼生成的配置再开机。

安装系统 ​

点虚拟机 → Start,然后点 Console。

按正常流程装 Debian 即可。装完之后:

  1. 虚拟机 → Hardware → CD/DVD Drive,把 ISO 弹出(改成 Do not use any media),避免下次又从光盘启动。
  2. 重启进入系统。

装完必做的两件事 ​

在客户机内部执行:

sh
# 在虚拟机内部执行(Debian/Ubuntu)
apt update
apt install -y qemu-guest-agent
systemctl enable --now qemu-guest-agent

装完回到 PVE 的 Summary 页面,应该能看到虚拟机的 IP 地址。看得到 IP,说明 agent 通了。

详细说明和 Windows 的做法见VirtIO 驱动与 QEMU Guest Agent。

看看生成的配置 ​

每台虚拟机的配置是 /etc/pve/qemu-server/<vmid>.conf 这个纯文本文件:

sh
cat /etc/pve/qemu-server/100.conf

输出类似:

text
agent: 1
bios: ovmf
boot: order=scsi0;ide2
cores: 2
cpu: host
machine: q35
memory: 4096
net0: virtio=BC:24:11:xx:xx:xx,bridge=vmbr0
scsi0: local-lvm:vm-100-disk-1,discard=on,iothread=1,size=32G,ssd=1
scsihw: virtio-scsi-single

这个文件值得备份

/etc/pve 下的所有内容是 PVE 的配置全集。备份虚拟机磁盘的同时,也要备份这个目录,否则重装宿主机之后所有客户机定义都要重建。见备份与恢复。

检查结果 ​

逐项确认:

  1. 虚拟机能正常开机、关机(用 Shutdown 而不是 Stop,前者是正常关机)。
  2. Summary 页能看到 IP 地址(说明 agent 工作)。
  3. 客户机内部能 ping 通网关和外网。
  4. 宿主机 qm status <vmid> 输出 status: running。
  5. qm config <vmid> 输出的配置和你的预期一致。

常见问题 ​

开机后黑屏、没进安装界面。 查 Options → Boot Order,确认光驱排在硬盘前面。UEFI 模式下有时需要进 EFI Shell 手动选。

装完系统重启又进了安装程序。 ISO 没弹出。见上文。

Console 里键盘输入乱跳。 noVNC 的已知体验问题,装好系统后改用 SSH 连接客户机。

关机很慢,转圈很久。 通常是勾了 Qemu Agent 但客户机里没装,PVE 在等 agent 响应直到超时。装上 qemu-guest-agent 即可。

延伸阅读 ​

Proxmox VE 非官方中文使用指南,与 Proxmox Server Solutions GmbH 无隶属关系。