☰
PVE安装Ubuntu Server完整指南:从ISO到模板克隆
2026/10/22 6:28:53 网站建设 项目流程

最近好几个朋友都在折腾PVE,问得最多的就是:Proxmox VE上到底怎么装一个干净的Ubuntu Server。这个需求太典型了,手里一台小主机或者服务器,刷好PVE做底层虚拟化,然后想在上面开几个Linux虚拟机跑服务、搞实验、搭轻量的home lab环境。系统选择上,Ubuntu Server是很多人的首选,生态好、资料多、后面跑Docker、K8s都很顺手。

这篇文章我把完整流程写出来:从ISO准备、虚拟机创建,到系统安装、Guest Agent集成,再到装完之后的性能微调和常见翻车点。刚接触PVE的新手可以直接照着做,装过但被各种细节坑困扰的老手,也能看看有没有漏掉什么关键步骤。

1. 安装前准备:版本选型与镜像上传

1.1 PVE和Ubuntu Server的版本搭配

先说底层。Proxmox VE目前主流是8.x系列,底层基于Debian 12,自带6.x内核,对Ubuntu的KVM虚拟化支持非常成熟。如果你的PVE还是7.x甚至6.x,也不是不能用,但建议尽量升级到8.x,因为新版对UEFI引导、VirtIO设备、以及新硬件的兼容性都更好。

Ubuntu Server这边,我推荐直接用24.04 LTS或者22.04 LTS这类长期支持版本。LTS版本有5年标准支持,如果开通扩展还能更久,生产环境稳定压倒一切。普通用户可能觉得非LTS版本内核新、功能多,但服务器虚拟机讲究的是少折腾,LTS足够应对绝大多数场景。

选好了系统,还要确认PVE宿主机本身开启了硬件虚拟化。一般BIOS里打开Intel VT-x或AMD-V即可。可以用命令检查:

pveversion -v grep -E -c '(vmx|svm)' /proc/cpuinfo

第二个命令如果输出大于0,说明CPU虚拟化已经开启。如果输出是0,就得先去宿主机的BIOS里把虚拟化打开,不然后面创建虚拟机时会卡在启动阶段,性能也会很难看。

1.2 镜像下载、校验与上传

Ubuntu Server的安装镜像在官网可以直接下载,选择“Server install ISO”版本。文件名类似这种格式:

ubuntu-24.04.2-live-server-amd64.iso

下载完成后,第一件事是校验完整性。官方页面会同时给出SHA256校验值,在Linux终端里执行:

sha256sum ubuntu-24.04.2-live-server-amd64.iso

把输出结果和官网的值逐字符核对。这一步看似多余,但很实用。如果镜像下载到一半断了、从第三方站点拉取被篡改过,校验值对不上,后面装系统大概率会中途报错,甚至安装成功却带病运行。

镜像上传到PVE有两个常用途径:

第一种,Web界面操作。在管理后台选择“local”存储,进入“ISO镜像”页面,点“上传”,选择本地文件即可。这种方式适合一次性上传,速度取决于你浏览器到PVE主机的网络。

第二种,命令行方式。把镜像文件放到PVE宿主机上的ISO目录,然后用一条命令远程拉取。ISO默认目录通常是:

/var/lib/vz/template/iso

用wget直接下载到该目录也行:

wget -P /var/lib/vz/template/iso https://example.com/ubuntu-24.04.2-live-server-amd64.iso

这里我建议把ISO放在PVE本地存储上。如果放在外置NAS或共享存储上,一方面安装时读镜像要走网络,另一方面万一存储服务有抖动,安装过程也会被拖累。对单机实验环境来说,本地存储永远是最稳的选择。

1.3 网络模式:桥接还是NAT

PVE安装完成后默认会创建一个名为vmbr0的Linux桥接设备,物理网卡直接桥接进来。新建虚拟机时,默认网络模型会挂到vmbr0上,也就是说虚拟机默认走桥接模式,直接和局域网其他设备处于同一个二层网络,行为就像一台独立的物理机。

这个模式最适合绝大多数home lab和开发测试场景。虚拟机可以被路由器正常分配IP,也可以从外部直接SSH访问,不需要额外做端口转发。如果你只是自己用,没有特殊隔离需求,强烈建议直接选vmbr0。

另一种常见方案是NAT模式,PVE宿主机做网关,虚拟机走独立的内部网段。这种模式适合需要隔离、不想让虚拟机直接暴露在局域网里的场景。NAT模式下,你需要手动创建桥接接口,再配合iptables做IP转发和SNAT,配置复杂度高一些。我个人建议新手不要一上来就折腾NAT,先跑通桥接再说。

2. 创建虚拟机:关键参数一次看懂

2.1 新建虚拟机向导怎么选

在PVE管理后台,点击右上角“创建虚拟机”,会进入向导。大致流程是:VM ID、名称、ISO、系统类型、磁盘、CPU、内存、网络、确认。

VM ID随便填,只要不重复就行。名称建议见名知意,比如“ubuntu-srv-01”,方便以后维护。

ISO镜像选择你上传好的Ubuntu Server安装镜像。

系统(OS)一栏里,有个“机型”选项,默认一般是i440fx,也可以选q35。q35更现代,支持PCIe直通等高级特性,兼容性也没问题。BIOS选项有两个选择:SeaBIOS和OVMF(UEFI)。

这里我给出一个实际经验:如果你图省事,用默认的SeaBIOS就好。Ubuntu Server在SeaBIOS下安装、引导都非常顺畅,不需要额外创建EFI磁盘。如果你选OVMF,则必须再添加一个“EFI磁盘”才能启动,多一个步骤,对普通虚拟机而言收益并不大。只有当你想启用Secure Boot或者虚拟机里跑的系统强依赖UEFI时,再去选OVMF。

提示:如果选了OVMF但不添加EFI磁盘,启动时会卡在找不到引导设备的状态,屏幕直接黑在那里,很容易误以为ISO坏了。

2.2 CPU、内存和硬盘分配

CPU一栏,“核心数”按需分配,我建议至少2核起步。“类别”这里容易被忽略,默认可能是kvm64,这个务必改成host。

所谓kvm64,是QEMU提供的一个最保守的CPU型号,只包含最基本的x86-64指令集,很多新指令如SSE4.2、AVX等都没有。实际表现就像一双均码鞋,谁都能穿,但谁穿都不跟脚。选host则把宿主机CPU的特性直接暴露给虚拟机,性能和兼容性都会好很多。

磁盘一栏,总线选择VirtIO。Ubuntu的内核自带VirtIO驱动,不需要额外装驱动,性能比模拟SATA好得多。磁盘大小,如果只是跑个服务、做点实验,给32GB也够用;但如果你打算装Docker、跑一堆容器,我建议至少50GB起步。磁盘也可以勾选“Discard”,对应TRIM功能,之后虚拟机内删除文件时,能通知宿主机释放底层空间,避免磁盘文件越涨越大。

内存方面,Ubuntu Server图形化安装程序本身吃内存不大,但安装完跑服务后,2GB是底线,4GB是舒服起步,如果计划跑编译、数据库这类吃内存的应用,直接给8GB。

2.3 网络模型和启动顺序

网络一栏,模型选VirtIO(半虚拟化),性能是最好的。Ubuntu Server安装镜像会直接加载virtio-net驱动,不用担心没驱动的问题。桥接选vmbr0,就是上一节说的默认桥接模式。

还要检查“确认”页里的“启动顺序”。默认会优先从CD-ROM启动,安装镜像挂在虚拟光驱里,这个没问题。等系统装完以后,启动顺序应该保持CD-ROM在先,否则某些情况下重启会重新进入安装界面。不过通常PVE检测到光驱里的ISO还在,会优先引导安装程序,所以装完系统后,建议拔掉ISO或调整启动顺序,这一步可以提前在确认页看一眼。

3. Ubuntu Server系统安装过程实录

3.1 安装引导和初始配置

点击“启动”进入虚拟机,控制台会显示Ubuntu的GRUB引导菜单。选择“Install Ubuntu Server”,回车。

第一屏会让你选语言。服务器系统建议直接选English,原因是服务器文档、命令、日志绝大多数都是英文,中文环境容易遇到编码和字符集问题,出了问题搜资料也不方便。键盘布局默认即可,除非你用特殊键盘。

接着安装器会开始初始化网络,如果PVE的桥接网络里有DHCP服务器,这一步会自动拿到IP。可以看到一个类似“ens18”的网卡名称,IP地址会自动显示出来。如果你需要静态IP,选择该网卡进入编辑,手动设置IP地址、网关和DNS。举个例子:

地址: 192.168.1.100/24 网关: 192.168.1.1 DNS: 192.168.1.1

这里注意,PVE的虚拟机网卡名通常是ens18或类似编号,不是eth0,至于你机器上显示什么名字,以实际界面为准。

3.2 软件源和代理设置

安装器会询问“配置代理”,如果你的网络不需要代理,直接留空继续。这一步很多人在内网环境会纠结,其实内网不经过代理就留空,很直接。

随后进入Ubuntu归档镜像源配置。默认是官方源,在国内环境下,下载软件包的速度可能很慢。你可以换用国内可访问的镜像源。这里有个容易出错的地方:不同版本代号不同,比如24.04代号是noble,22.04是jammy。配置镜像源时,一定要选和你安装版本一致的代号。如果在安装界面这里频繁报错,大概率就是网络到默认源不通,换个可用源就能解决。

3.3 分区方案:直接整盘还是LVM

接下来是存储配置。对于虚拟机上安装Ubuntu Server,大多数情况可以选择“Use An Entire Disk”,也就是使用整块虚拟磁盘。

安装器会询问是否启用LVM。LVM的好处是方便后期扩展逻辑卷,如果你打算在这台虚拟机上长期使用,建议开启。LVM组大小会让设置一个上限,默认是使用整块磁盘,直接默认就好。如果你不想搞复杂,选择不使用LVM,直接ext4分区也行。

分区布局,我建议默认即可。安装器会自动创建/boot/efi、/ 和swap分区。如果手动分区,一个合理的服务器方案是:系统盘50GB起步,swap给4GB,其余空间留给数据目录。但虚拟机场景下,我更倾向把全部空间交给根分区,后续按需创建新磁盘挂载,灵活度反而更高。

提示:虚拟机磁盘在PVE里是稀疏文件时,分区并不会立刻占满宿主机空间。但安装系统时会有大量写入,宿主机实际磁盘占用会明显增长,这是正常现象,不用担心。

3.4 用户创建、SSH和最终安装

安装器会让你设置主机名、用户名和密码。主机名建议提前想好,比如“u20-dev”,后面改起来要额外操作。

这一步可以导入SSH公钥。如果你平时SSH连接已经用密钥登录,强烈建议现在就把public key粘进去。这样装完系统之后,直接从宿主机或电脑上用SSH密钥登录,密码登录可以后续关掉,安全指数提高一大截。

“安装OpenSSH服务器”这个选项要勾选上,否则装完系统后没有任何远程登录手段,只能在PVE网页控制台里操作,体验很差。

之后安装器会进入正式安装阶段,从镜像里解包、写入文件系统、安装GRUB引导。此时可以泡杯茶等一等。完成后会提示“现在重新启动”。重启时记得回到PVE界面,把虚拟光驱里的ISO卸载,避免再次进入安装程序。

3.5 登录后的第一件事

重启完成后,控制台或者SSH连接到新机器。第一次登录,先做几个基础检查和更新:

ip a apt update && apt upgrade -y cat /etc/os-release uname -r

确认IP地址符合预期、系统更新完成、内核版本正常。看到这里,一台裸的Ubuntu Server已经跑起来了。

4. 装完系统后的PVE集成与优化

4.1 安装QEMU Guest Agent

很多新手装完Ubuntu Server就以为万事大吉,实际上漏了一个很重要的步骤:安装QEMU Guest Agent。

Guest Agent的作用是让PVE宿主机和虚拟机能互相通信。装上之后,PVE管理界面可以显示虚拟机内部的IP地址、内存使用情况,还能执行优雅关机、快照前冻结文件系统。

安装命令非常简单:

apt install -y qemu-guest-agent systemctl enable --now qemu-guest-agent

然后在PVE的虚拟机“选项”里,把“QEMU代理”这一项启用。等虚拟机重启一次,管理界面就会显示客户机IP等信息。

这一步我建议所有PVE虚拟机都做,尤其是创建快照或备份时,有Guest Agent参与,快照的一致性会好很多。没有它,快照只能保证磁盘层面一致,无法确保文件系统层面干净。

4.2 把系统转成模板,后续克隆起飞

如果你打算以后经常创建Ubuntu Server虚拟机,可以趁现在系统干净,直接把它转成模板。模板本质上是一台只读虚拟机,之后可以从它克隆出多台实例,省去每次手动安装系统的时间。

转模板前,需要先在虚拟机内部做一次“净化”:

sudo apt clean sudo truncate -s 0 /etc/machine-id sudo rm -f /var/log/*.log sudo rm -rf /var/lib/dhcp/*

然后关机,在PVE界面右键虚拟机,“转换为模板”。之后“克隆”时选择“完整克隆”或“链接克隆”。完整克隆空间占用大但不依赖母本;链接克隆创建快,共享底层数据,适合大量临时测试环境。

克隆出来的机器要记得改主机名和IP,避免和内网其他设备冲突。

4.3 网络多队列与磁盘IO调优

装完系统后,性能上限主要看三处:CPU类型、网卡队列、磁盘IO。

CPU类型在创建虚拟机时已经建议选host,这里不再重复。

网络方面,VirtIO网卡默认只有单队列,多核虚拟机上高并发网络会存在瓶颈。可以在虚拟机内手动开启多队列:

ethtool -L eth0 combined 4

这里的数字根据虚拟机的CPU核数设置,一般是2或4。注意,这个设置重启后会失效,需要写成开机服务或者用持久化配置工具。如果你只是常规使用,不搞大规模网络吞吐,这条可以跳过,影响不大。

磁盘方面,PVE支持开启IO Thread,让磁盘请求用单独线程处理。在虚拟机的“硬件”里,选择磁盘,点编辑,把“IO线程”打开。另外,如果宿主机用的是SSD,可以在虚拟机磁盘的“SSD仿真”选项勾上。之后在虚拟机内启用定期TRIM:

systemctl enable fstrim.timer --now

这一步能防止虚拟机删除文件后,宿主机上的磁盘镜像不断膨胀。特别是做快照和克隆比较多的场景,效果很明显。

5. 常见问题排查与避坑指南

5.1 安装界面进不去或黑屏

最常见的原因有三类:

第一,ISO镜像没传完整。校验一下SHA256,比对不一致就重新上传。

第二,启动顺序不对。虚拟机的启动顺序如果第一项不是CD-ROM,就可能直接从空硬盘启动,表现为黑屏无反应。进“硬件”检查光驱设备是否存在,确认ISO还挂载着。

第三,用了OVMF但没有EFI磁盘。检查虚拟机“硬件”里是否多了一个EFI磁盘。没有这个磁盘,UEFI模式启动不了。最简单的方案是改成SeaBIOS。

5.2 装完系统之后无法访问网络

这种情况优先按顺序排查:

在PVE界面的虚拟机“硬件”里,看网络设备的模型是不是VirtIO。如果不是就改过来。

进入虚拟机内部,编辑netplan配置:

sudo vim /etc/netplan/00-installer-config.yaml

看看有没有eth0或ens18的配置,网关和DNS是否正确。PVE的桥接模式下,网关就是局域网网关,不需要指向PVE宿主机IP。

如果配置都对但还上不了网,回PVE宿主机检查桥接设备的对应关系,用命令:

cat /etc/network/interfaces ip a

确认vmbr0绑定的物理网卡是不是你实际使用的网口。很多N合1软路由小主机有多个网口,物理网线插在eth0上,PVE默认却把eth1桥进了vmbr0,那肯定不通。

5.3 克隆虚拟机后主机名重复或IP冲突

从模板克隆出来的机器,默认会带着母机的机器ID、主机名和网卡租约。如果直接开机,很可能出现两台机器同名、同IP的混乱问题。

解决方案:每次克隆完成后,登录机器修改主机名和IP。尤其是机器ID,建议重新生成:

sudo rm -f /etc/machine-id sudo systemd-machine-id-setup

如果不处理这个,某些依赖机器ID的程序(比如系统日志、某些授权软件)会出现诡异问题。更彻底的做法是用cloud-init预配置模板,PVE对cloud-init的集成很成熟,可以自动注入主机名、SSH密钥和IP,但这部分内容展开讲又是一篇长文,这里只提醒一句。

5.4 快照删除后宿主机磁盘空间没释放

这是很多用PVE的人踩过的坑。删除快照,理论上方块数据应该合并回基础镜像,但合并过程不一定立即完成,而且如果虚拟机内部删除过大量文件,快照里仍然保留着旧的数据块。就导致快照删了,空间也没少多少。

所以要养成两个习惯:一是虚拟机内开启Discard并定期执行fstrim;二是删除快照后,观察PVE任务日志,等“merge”完成再继续做其他操作。如果多次快照叠加导致空间爆炸,最简单粗暴的办法是删除所有快照、执行一次trim,然后做一次备份恢复。

5.5 系统卡顿、性能不达预期

装了Ubuntu Server后觉得卡,优先看三个地方。

第一,CPU类型是不是host。kvm64模式跑出来的虚拟机,编个程序能慢到怀疑人生。

第二,内存是不是开了Ballooning。PVE默认启用了内存气球,宿主机内存紧张时会回收虚拟机的内存,造成卡顿。如果这台虚拟机是常驻服务,可以在“选项”里关掉Ballooning,给足固定内存。

第三,磁盘是不是模拟成了IDE或SATA。如果创建时没有选VirtIO,磁盘IO性能会差很多。修改磁盘总线类型需要谨慎,可能会影响引导,建议创建时一步到位。

收尾前再分享一点个人习惯

这套PVE加Ubuntu Server的流程,我前前后后装了几十次,现在自己最顺手的做法是:手动安装一台干净的Ubuntu Server,立刻转模板,后续所有新虚拟机全部从模板克隆,再通过cloud-init注入IP和主机名。整个流程从创建到登录不超过五分钟,极其省心。

还有一个小心得是,每次刚装完系统、还没开始改装任何服务之前,先在PVE里做一次快照。这个干净快照就是你的“后悔药”,后面无论你折腾坏了什么,都能一键回到最原始状态。PVE的快照不是万能,但在这个场景下,它的性价比几乎是最高的了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询