上个月收拾工位从角落翻出一台别人不要的小主机——四核、16G 内存、一块 512G 固态配置放在今天不算亮眼但跑个轻量服务绰绰有余。我当时脑子里第一个念头不是装个系统了事而是直接上Proxmox VE下文统一简称 PVE。原因很简单这台机器一旦裸装成一个系统它的命运就固定了想换用途就得重装而装上 PVE 之后它就是一台能随时开新机器、随时快照回滚、随时删掉重来的“机器生成器”。这篇就把我从写盘到第一台虚拟机跑起来的全过程摊开讲包括中间那几次把我卡了半小时的坑。如果你手里也有一台闲置的物理机、想入门虚拟化平台、或者单纯想给家里的服务找个统一的落脚点这篇应该能帮你少走点弯路。1. 装 PVE 之前先想清楚这台机器到底要承担什么1.1 裸装系统、装 PVE、装别的虚拟化方案差在哪我见过太多人把小主机的价值浪费掉了装个系统跑一个服务然后这台机器就锁死在那一个用途上。想加个下载机再找台机器。想试个新东西怕污染环境于是又找台机器。这本质上是把“硬件”当成了“一次性消耗品”。PVE 的核心价值在于把硬件抽象成资源池。CPU 核数、内存、磁盘、网络全部变成可以切片分配的池子。你在上面开虚拟机KVM、开容器LXC一台物理机可以同时承载七八个互不干扰的服务每个都有自己的内核、自己的 IP、自己的磁盘。更关键的是快照和备份装完一套环境随手打个快照搞砸了30 秒回滚。这个能力是裸装系统给不了的。那为什么不选别家市面上的方案大致分三档我做了个对照你自己权衡方案授权成本上手门槛硬件兼容性适合谁PVE开源免费企业源需订阅中Web 管理命令行为辅极宽老机器也能跑个人折腾、小团队、实验室商业闭源虚拟化套件按 CPU/年付费个人版功能受限中有官方兼容列表列表外不保证有预算、要厂商支持的企业系统自带容器方案免费低依赖宿主内核只跑 Linux 服务、不需要完整隔离我最终选 PVE 的决定性因素其实不是免费而是它把 KVM 和 LXC 放在同一个界面里管。有些服务我需要完整的内核隔离比如跑一套 Windows 做测试有些服务我只需要一个隔离的运行环境比如一个常年不动的内网工具这两类需求在同平台上切换管理成本几乎为零。需要提醒的是PVE 的“免费”指的是社区源免费。企业源需要订阅不订阅也能正常用只是每次登录 Web 界面会弹一个订阅提示。这个提示不影响任何功能后面我会讲怎么把源换成社区源。1.2 硬件门槛三条硬性条件缺一条就白折腾在动手写盘之前先把这三条确认掉不然装到一半发现不行很浪费时间。第一条CPU 必须支持硬件虚拟化指令集。这是 KVM 能跑起来的前提。Intel 平台叫 VT-xAMD 平台叫 SVM/AMD-V。这个开关在 BIOS/UEFI 里出厂时经常是关闭的。怎么看机器现有系统里查或者直接在 BIOS 里翻Virtualization Technology、SVM Mode、Secure Virtual Machine这几个字眼把它们打开。第二条内存至少 8G建议 16G 起步。PVE 本身很省宿主机空载大概占 1G 到 1.5G。但你要考虑到虚拟机的内存分配是“预留”的开一个 4G 的虚拟机宿主就少 4G 可用。另外如果你的磁盘分区选了 ZFSZFS 的 ARC 缓存会主动吃掉一部分内存默认上限大概是总内存的一半8G 内存跑 ZFS 会很局促。第三条网卡最好是千兆以上且能被系统识别。虚拟机的网络全靠宿主网卡桥接出去。如果用的是那种特别冷门的无线网卡或者 USB 网卡安装程序识别不到后面的网络配置那一屏会直接卡住——这一屏卡住基本等于重装因为安装过程中网络配置是强制项。我这台机器是千兆有线双网口正好一个做管理口、一个留着以后做直通算是运气好。1.3 磁盘方案的选择单盘就老实用 ext4安装程序会让你选文件系统选项包括 ext4、xfs、zfs(RAID0/1/10)。很多人看到 ZFS 就觉得高级闭眼选 ZFS结果单盘 8G 内存跑起来又慢又吃内存。我的建议很直接单盘、家用、内存 16G 以下选 ext4 或 xfs别碰 ZFS。ZFS 的优势在数据校验、快照、多盘 RAID这些优势在单盘场景下基本发挥不出来反而带来内存开销和写入放大的问题。如果你有四块以上同规格硬盘、内存 32G 起那 ZFS 的 RAIDZ 才值得考虑。ext4 和 xfs 之间我个人偏爱 ext4原因是它在异常断电后的恢复行为更保守家用环境断电是常态。xfs 在超大文件和高并发写入上更强但对我这种跑虚拟机镜像的场景差别不明显。选完文件系统安装程序里还有个Options按钮能调hdsize分配给 PVE 的磁盘总量、swapsize交换分区、maxroot根分区上限、maxvz存放虚拟机磁盘的 LVM 空间上限。默认值对大多数人是合适的除非你的磁盘特别小比如 128G 以下那可能需要手动压缩 root 分区把空间留给虚拟机。2. 镜像、启动盘和 BIOS安装前最容易出岔子的三个环节2.1 镜像下载与校验别跳过 SHA256PVE 的镜像是 ISO 格式从官网下载。这里有个细节官网同时提供企业版和社区版镜像下载入口两者其实是同一个 ISO区别只在于装完之后默认启用的软件源不同。所以随便下哪个都行装完换源就行。下载完一定要核对 SHA256。这一步很多人跳过但我就吃过亏一次用下载工具续传文件尾部落了一截写盘后启动卡在引导阶段屏幕一片黑排查了半天才想到是镜像坏了。校验命令很简单# Linux / macOS sha256sum proxmox-ve_8.2-1.iso # 或者 shasum -a 256 proxmox-ve_8.2-1.iso把输出和一串官方给出的哈希值逐字符比对一致才继续。2.2 写盘工具的选择Rufus 必须选 DD 模式这是我最想强调的一个坑。PVE 的 ISO 是混合镜像用常规的“ISO 模式”写入 U 盘做出来的启动盘在某些主板上会直接起不来表现是卡在GRUB loading或者干脆跳过 U 盘启动。在 Windows 下用 Rufus 写盘弹出“ISO 镜像模式 / DD 镜像模式”选择时一定要选 DD 模式。选 ISO 模式做出的盘十次里有三四次会出问题。Linux 下用dd就没这个烦恼# 先确认 U 盘设备名千万别写错写错就是抹掉你的硬盘 lsblk # 假设 U 盘是 /dev/sdb整盘写入不是分区 sudo dd ifproxmox-ve_8.2-1.iso of/dev/sdb bs4M statusprogress convfsync syncof后面跟着的是整盘设备/dev/sdb不是分区/dev/sdb1。这一点写错的人不少我见过有把系统盘当成 U 盘写掉的。2.3 BIOS 里要动的四个开关进 BIOS 之前先想清楚你想用哪种启动模式。PVE 支持 Legacy传统 BIOS和 UEFI 两种方式安装我建议用UEFI因为新主板对 Legacy 的支持越来越差而且 UEFI 下磁盘分区表是 GPT不受 2T 容量限制。进 BIOS 后按这个清单过一遍虚拟化开关Intel Virtualization Technology/SVM Mode设为 Enabled。VT-d / IOMMU如果你以后想把显卡或网卡直通给虚拟机这个必须开Intel 叫 VT-dAMD 叫 IOMMU。现在不开以后想开还得重进 BIOS顺手开掉。Secure Boot建议先关掉。PVE 8 对 Secure Boot 有支持但需要额外的模块签名流程装完再折腾更麻烦。关掉之后安装过程顺畅很多。启动顺序把 U 盘排到第一或者开机时按 F12/F11 呼出启动菜单手选。顺便说一句如果你的机器是那种品牌小主机BIOS 里可能还有Above 4G Decoding和Resizable BAR之类的选项直通场景下建议打开纯虚拟化场景下开不开影响不大。2.4 U 盘插上没反应怎么办这一步出问题的概率比想象中高我按排查顺序列一下从便宜到贵换一个 USB 口。USB 3.0 的蓝色口在部分老主板上兼容性反而差试试黑色的 USB 2.0 口。确认写盘模式。前面说的 DD 模式回退检查一下。关掉 BIOS 里的 Fast Boot。快速启动会跳过一部分 USB 设备初始化导致 U 盘里的引导项没被枚举出来。检查启动模式是否匹配。你用 UEFI 方式做的盘BIOS 里却设在 Legacy Only那就看不到引导项。反过来也一样。稳妥做法是把启动模式设成UEFI and Legacy或者Both。换 U 盘。有些廉价 U 盘的主控在做可引导盘时会出各种玄学问题我手里就有一个只能当存储不能当启动盘的。3. 安装向导逐屏拆解每一屏在问你什么3.1 引导菜单与许可协议U 盘启动成功后会看到一个图形化的引导菜单两个主要选项Install Proxmox VE (Graphical)和Install Proxmox VE (Terminal UI)。图形界面装起来舒服但如果你的显卡比较特殊比如某些服务器板载显卡图形模式可能花屏或者黑屏那就退回去选 Terminal UI功能完全一样只是用文本界面交互。选完之后会加载内核屏幕上滚一堆日志这是正常的。接着弹许可协议I agree继续。再往下是选择目标磁盘。3.2 目标磁盘这一步会擦掉盘上的一切安装程序会列出机器上所有可识别的磁盘包括容量、型号。选定之后整块盘会被重新分区原有数据全部清空。如果你是要在一台已经有系统的机器上装 PVE务必先把数据备份走。如果机器上有两块以上磁盘安装程序会让你选一块作为系统盘。这里有个细节PVE 装完之后系统盘上的剩余空间默认会被划成一个 LVM-thin 存储池叫local-lvm用来放虚拟机磁盘。所以系统盘不需要特别大512G 很宽裕128G 也能用只是后续虚拟机多了会紧张。磁盘下方有个Options按钮就是前面说的文件系统和分区大小调整。单盘环境保持默认 ext4 即可除非你要手动压缩 swap 和 root 来腾空间。3.3 时区、键盘、密码看起来最简单的一屏藏着一个坑时区和键盘布局按实际选中国时区是Asia/Shanghai键盘选U.S. English就行国内绝大多数键盘都是美式布局。密码和邮箱这一屏密码是给root用户设的要记牢后面登录 Web 和 SSH 都用它。邮箱填一个能收到的地址PVE 会用它发系统告警邮件比如磁盘快满、备份失败。如果暂时没有邮件服务器随便填一个格式合法的地址也能过只是收不到告警后面可以在系统里配。这里的坑是密码里不要用特殊字符里的反斜杠和单引号。某些情况下这些字符在后续配置文件解析时会出问题虽然概率不高但用字母加数字加常见符号就够了没必要挑战极限。3.4 网络配置整场安装最关键的一屏这一屏决定了你装完之后能不能从浏览器访问管理界面配置错了就得抱着显示器在机器前面敲命令行修复非常难受。需要填的字段字段填什么常见错误Management Interface选你实际插网线的那块网卡多网卡机器选错装完没网Hostname (FQDN)形如pve.local或pve.home.arpa只填pve会报格式警告IP Address形如192.168.1.100/24必须带掩码漏掉/24Gateway路由器地址如192.168.1.1填成外网地址或留空DNS Server可以用路由器地址也可以用公共 DNS留空导致域名解析失败后续更新报错主机名必须是 FQDN 格式也就是带点的形式。只填一个单词会在装完后持续告警。这个告警不影响使用但看着难受。IP 地址要选一个在局域网内没被占用的。我习惯在路由器的 DHCP 池之外挑一个地址比如 DHCP 池是 100-200我就用 250避免以后 IP 冲突。这一步偷懒的人不少装完之后隔三差五网络抽风往往就是 IP 撞了。DNS 那栏填路由器地址在国内环境下有时会解析不了软件源我一般直接填223.5.5.5这类公共 DNS稳一些。3.5 安装完成与第一次重启点Install之后就是自动流程格式化磁盘、解压系统、配置引导。进度条走完会提示安装成功此时拔掉 U 盘再点 Reboot。不拔 U 盘的话机器会又从 U 盘启动进入安装界面让你误以为装失败了。重启后看到屏幕上出现一行黑底白字Welcome to the Proxmox Virtual Environment https://192.168.1.250:8006看到这行说明装完了。注意端口是8006不是 443也不是 80。4. 登录之后先别急着建虚拟机这四件事必须先做4.1 换掉企业源否则每次更新都报错装完之后默认启用的是企业源pve-enterprise没有订阅的用户执行apt update会收到 401 认证失败。这是新手最常问的第一个问题解决方式是把企业源注释掉换成社区源。# 1. 注释掉企业源 sed -i s/^deb/#deb/ /etc/apt/sources.list.d/pve-enterprise.list # 2. 添加社区源PVE 8 基于 Debian 12代号 bookworm echo deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription \ /etc/apt/sources.list.d/pve-no-subscription.list另外 PVE 还会带一个 Ceph 源文件ceph.list如果你不用 Ceph 分布式存储同样注释掉不然更新时也会报错。Debian 的基础源在/etc/apt/sources.listPVE 8 装完后通常已经指向了正确地址。可以打开确认一下内容大致是deb http://deb.debian.org/debian bookworm main contrib deb http://deb.debian.org/debian bookworm-updates main contrib deb http://security.debian.org/debian-security bookworm-security main contrib改完之后执行更新apt update apt full-upgrade -y用full-upgrade而不是upgrade是因为内核升级会涉及依赖包的增删upgrade处理不了这种情况。更新完如果内核有变动重启一次让新内核生效。4.2 订阅提示弹窗的处理不订阅的话每次登录 Web 会弹一个“无有效订阅”的对话框。它不限制任何功能只是烦人。网上一堆一键去弹窗的脚本我的态度是谨慎用这些脚本改的是 Web 前端的一个 JS 文件PVE 每次小版本更新都会覆盖掉你得反复跑更重要的是来源不明的脚本直接以 root 执行风险不小。真想去掉手动改一行也够了——把前端验证那个函数里的返回值改成固定通过。但我自己的做法是留着不管点一下“确定”就过去了不值得为这点事引入风险。4.3 存储池的规划local 和 local-lvm 分别放什么登录之后左侧数据中心的“存储”里能看到两个条目很多人搞不清区别往local-lvm上传 ISO 传不上去就卡住了。local这是一个目录型存储实际路径是/var/lib/vz。默认启用内容类型包括 ISO 镜像、容器模板、备份文件、虚拟机磁盘。上传 ISO 必须选这个。local-lvm这是 LVM-thin 池专门放虚拟机的磁盘镜像和快照。它不支持直接上传文件所以你在它的“内容”列表里看不到 ISO 选项。如果你想让local大一点可以调整 LVM 的分配。但更实际的做法是给虚拟机磁盘单独挂一块物理盘。我这台机器是单盘就在local-lvm里跑虚拟机local只放 ISO 和备份512G 里给 root 分了 60G 左右剩下都给 lvm-thin够用。如果后续要加盘流程是物理挂上 →lsblk确认设备名 → Web 界面“磁盘”里能看到未使用磁盘 → 直接点“初始化 GPT”再创建 LVM-thin或者用命令行pvcreate/vgcreate手动建。4.4 SSH 与 root 登录方式PVE 默认开启了 SSH 服务root 可以直接登录。命令行操作比 Web 界面效率高得多尤其是批量操作和看日志。# 从另一台机器连过去 ssh root192.168.1.250如果你习惯用密钥登录把自己的公钥追加到/root/.ssh/authorized_keys然后考虑在/etc/ssh/sshd_config里把PermitRootLogin改成prohibit-password禁用密码登录。这是安全性上的加分项家用内网环境下不做也不算致命但既然装都装了顺手做掉不亏。5. 开第一台虚拟机从上传 ISO 到装完系统5.1 ISO 上传Web 上传和命令行两条路小文件用 Web 界面传就行选中local存储 → ISO 镜像 → 上传选本地文件等进度条走完。但 Web 上传有个限制大文件比如几个 G 的 Windows 镜像传到一半断掉很常见而且不支持断点续传。大文件我走命令行用scp或者rsync直接扔到/var/lib/vz/template/iso/# 从本地传到 PVE 的 ISO 目录 scp ./some-linux.iso root192.168.1.250:/var/lib/vz/template/iso/ # 传完之后在 Web 界面刷新一下就能在 local 存储里看到了这条路径是固定的记住它比在界面里点来点去快得多。5.2 创建虚拟机时那几个参数为什么这么填点右上角“创建虚拟机”向导有六七步大部分可以默认但有几个参数值得单独说。操作系统类型选对客户机类型会影响默认的硬件配置和内核参数。装 Linux 就选Linux加对应内核版本装 Windows 选Microsoft Windows加版本号。选错了通常也能跑但性能优化项不会自动启用。机型Machine有两个选项i440fx和q35。q35 是较新的芯片组模拟支持 PCIe直通场景必须用 q35i440fx 兼容性更好老系统比如 Windows 7、老版本 Linux用它能少踩坑。我的默认选择是 q35除非客户机系统太老启动不了。BIOSSeaBIOS是传统 BIOSOVMF (UEFI)是 UEFI。装 Windows 11 必须用 OVMF而且要勾选“为 EFI 磁盘添加 EFI 分区”。Linux 两者都行我一般也想统一用 OVMF但如果客户机系统不支持 UEFI 启动就只能退回 SeaBIOS。磁盘总线选SCSI控制器选VirtIO SCSI single。这是性能最好的组合。SCSI 控制器下还能开启IO thread每个虚拟磁盘一个独立线程高并发 IO 场景下提升明显。CPU 类型这里有个重要区别。host表示把物理 CPU 的全部指令集透传给虚拟机性能最好但虚拟机不能迁移到 CPU 不同的宿主机上。集群环境或者以后可能换硬件就选x86-64-v2-AES这类通用型号。单机环境我直接选host省事。网络模型选VirtIO (半虚拟化)性能比模拟的 e1000 好一个档次。同样Windows 客户机需要装驱动Linux 内核自带不用管。5.3 装 Windows 时找不到硬盘这是 virtio 驱动缺失这个坑几乎每个第一次装 Windows 虚拟机的都会遇到选择安装位置时安装程序说“找不到任何驱动器”。原因是上面选的 SCSI 控制器和 VirtIO 网卡都是半虚拟化设备Windows 安装镜像里不带这些设备的驱动。解决办法是额外挂一个virtio-win.iso驱动光盘这个镜像由社区维护各个 Linux 发行版的软件源里都有也可以直接下载 ISO。操作步骤把virtio-win.iso上传到local存储的 ISO 目录。在虚拟机的硬件里添加一个 CD/DVD 驱动器挂载这个 ISO。启动安装程序到“找不到驱动器”那一步点“加载驱动程序”浏览到光驱里的viostor目录对应 SCSI 控制器和NetKVM目录对应网卡。装完系统后把整个 virtio-win 光盘里的安装程序跑一遍把所有驱动补齐。Linux 客户机基本上不用管这个主流发行版的内核都编译了 virtio 驱动装的时候能直接认出来。5.4 启动顺序与安装完成后的收尾创建完虚拟机如果没设光驱启动可能出现“no bootable device”。进“选项”里的“引导顺序”把光驱拖到第一位。系统装完之后记得做两件事一是把光驱里的 ISO 卸载或者把引导顺序改回硬盘优先二是打一个快照。快照这一步很多人省了等到装完一堆软件、配好环境、然后某次更新把系统搞崩了才发现没有回头路。# 命令行打快照也可以在 Web 界面点 qm snapshot 100 pre-config100是虚拟机 ID快照名字随便起。快照会占用存储空间别堆积太多定期清理。6. 我踩过的几个坑以及一些不值得踩第二次的细节6.1 装完打不开 Web 界面先按这个顺序查装完重启浏览器访问https://IP:8006打不开是最常见的求助。按这个顺序排查基本能定位确认 IP 和端口。是https不是http端口是8006。浏览器地址栏默认补全成 http就会连不上。证书警告要点“继续访问”。PVE 用的是自签名证书浏览器会拦。有些浏览器把这个提示藏得很深注意找“高级”里面的链接。从机器本机 ping 一下网关确认网络通。在物理机控制台登录 rootip a看网卡有没有拿到配的 IP。检查/etc/network/interfaces。网卡名如果和你安装时选的不一致桥接vmbr0就起不来。这是换硬件、换网卡口之后的高频问题。systemctl status pveproxy看 Web 服务是否在跑。如果挂了重启服务systemctl restart pveproxy。第 4 点值得展开说PVE 的网络配置依赖网卡名比如enp3s0、eno1这个名字由硬件和主板决定。如果你把系统盘移到另一台机器上或者加了一张网卡导致枚举顺序变了网卡名就会变/etc/network/interfaces里的配置指向一个不存在的设备整个网络就废了。修复方法是登录物理控制台ip a看实际网卡名把配置文件里的名字改掉然后systemctl restart networking。6.2 内存气球和 swap别让宿主机被撑爆创建虚拟机时有个“内存气球设备”选项默认是开的。它的作用是让宿主机在内存紧张时向虚拟机“回收”一部分它没用到的内存。听起来很美好但有两个前提客户机装了气球驱动Linux 内核自带Windows 需要 virtio 驱动并且客户机系统支持动态内存调整。我的实际经验是在内存充足的宿主机上气球开着没坏处在内存紧张的机器上气球会造成虚拟机性能抖动因为宿主机频繁回收内存客户机里的应用会突然变慢。如果宿主机内存吃紧更好的做法是少开虚拟机或者给每个虚拟机分配更保守的内存而不是指望气球救场。Swap 方面PVE 安装时默认按内存大小给了一个 swap 分区。虚拟机跑起来之后swap 使用率如果长期很高说明内存确实不够了这时候加内存比调 swap 参数有用得多。6.3 时间不同步导致的那些莫名其妙的问题这个问题很隐蔽。宿主机和虚拟机的时间如果差了几分钟很多服务会出诡异故障HTTPS 证书校验失败、数据库连接被拒、日志时间戳错乱。PVE 宿主机默认用 chrony 做时间同步装完检查一下timedatectl status chronyc sources -v如果显示System clock synchronized: no多半是 DNS 或者 NTP 服务器不通。把/etc/chrony/chrony.conf里的服务器改成能访问的地址重启服务。虚拟机这边Linux 客户机装qemu-guest-agent它除了能上报虚拟机内部信息也能配合宿主机做时间同步。Windows 客户机装完 virtio 驱动后在服务里启用QEMU Guest Agent服务即可。6.4 关于嵌套虚拟化如果你想在 PVE 的虚拟机里再跑一层虚拟化比如在虚拟机里装 Docker 跑 KVM或者做实验环境需要开启嵌套虚拟化。这个功能在 PVE 8 里默认对 AMD 平台是开的Intel 平台需要在宿主机上加载模块参数# Intel 平台开启嵌套 echo options kvm-intel nested1 /etc/modprobe.d/kvm-intel.conf # 重启或重新加载模块后生效然后在虚拟机的 CPU 类型里选host嵌套才能透传下去。这个场景家用不多但做实验的时候很实用。6.5 一个容易被忽略的习惯定期备份到别的地方快照不是备份。快照和虚拟机磁盘在同一个存储池里磁盘坏了快照跟着一起没。真正的备份要落到另一块物理盘或者通过网络传到别的地方。PVE 自带备份功能可以配定时任务把虚拟机整机备份成vzdump格式的文件。我的做法是每周一次全量备份存到外挂的一块移动硬盘上通过 USB 挂载到宿主机加进存储列表。成本很低但省去了无数次重装的痛苦。配置路径在数据中心 → 备份 → 添加选好虚拟机、存储目标、计划时间、保留份数就行。保留份数我设的是 3再多就占空间了实际也用不上。回过头看这台小主机从装 PVE 到跑起第一个虚拟机前后大概花了两个小时其中真正安装只用了十几分钟剩下的时间都耗在写盘模式选错、DNS 填错、以及第一次装 Windows 时找不到硬盘这几件事上。这些问题现在回头看都不复杂但当时每一个都能卡住半小时。如果你正准备动手把第 2 章的写盘和第 3 章的网络配置两节多看一遍能省掉大部分麻烦。至于后面虚拟机怎么规划、存储怎么扩展、直通怎么配那都是装完之后的事了先让这台机器跑起来再说。