一、PVE的基础使用
1.1、PVE的数据中心选项说明
在浏览器输入PVE的网址(https://192.168.1.39:8006/)或域名(pve.coffeemilk.com)登录到管理界面后,可以看出,PVE管理界面主要分为两个功能区:【左边的视图区域】和【右边的详细功能区域】,另外在右上角还有【创建虚拟机】、【创建CT】2个功能按钮,接下来将详细介绍如何通过PVE创建基于KVM的虚拟机和CT容器。

点击上图中左边的数据中心,出现右边的详细功能区域,默认有10多个功能选项:
| PVE数据中心对应选项 | PVE数据中心选项说明 |
|---|---|
| 搜索 | 主要显示了PVE中所有的资源信息,包含所有的虚拟主机、存储空间、资源池等信息。 |
| 概要 | 主要是查看PVE的状态,在有多个PVE的时候,可以将PVE做成HA集群,这个选项可以查看每个PVE的运行状态。 |
| 选项 | 展示了PVE自身的一些设置信息。 |
| 存储 | 显示了PVE可用的存储空间,PVE支持多种格式的存储,常见的有目录、LVM、NFS、iSCSI、ZFS、GlusterFS等,默认的是本地磁盘存储。最开始默认有两种存储: 1. local:表示数据存储到PVE所在物理机的文件系统上【可以方便找到数据文件在哪(如:虚拟机磁盘文件,若想备份,直接将这个文件复制一份即可)】;local默认存储【备份、导入、ISO镜像、容器模板】; 2. local-lvm:PVE自己构建的逻辑卷(是一个瘦卷管理机制、采用块存储数据【但块存储看不到数据,管理起来较为麻烦】)可实现动态扩张;local-lvm默认存储【磁盘映像,容器】。 注意: 若使用local-lvm创建多个虚拟机使用时,这些虚拟机的性能反而变差了,没有local效果好;且由于默认给local-lvm的空间很大,但是给local的很少,因此建议直接将local-lvm直接删除掉,这样就能将local-lvm释放的空间加到local中,详细操作请查看本文《1.2、删除local-lvm并将剩余空间添加到local的操作步骤》。 |
| 备份 | 用来设置备份计划(可以很方便的设置虚拟机的自动备份计划,可以设置备份开始的时间、备份的格式、存储的路径、需要备份的虚拟机以及备份完成是否发送邮件通知等)。 |
| 复制 | 至少需要两个节点才能够操作 |
| 权限 | 用来添加PVE平台的登录用户、验证方式、群组、角色等;可添加的用户有两种: 1. PVE认证用户(Linux PAM standard authentication); 2. Linux认证用户(Proxmox VE authentication server); 权限下面还有多个选项内容: 1. 群组:主要用来设置用户对应的组,点击此选项中的"创建"按钮,即可添加一个群组。 2. 资源池:主要用来配置虚拟主机的资源存储位置,由于PVE支持多种存储类型,因此,可根据存储类型的不同,创建不同的资源池。 |
| HA | 用于两个PVE之间做热备,两个PVE之间的热备可以保证任意一台虚拟机故障时都可以启动切换到另一个PVE上面(这个功能非常有用)。 |
| 防火墙 | 主要是对虚拟机的安全进行设置,类似于iptables的功能或者云主机上安全组的功能。 |
1.2、删除local-lvm并将剩余空间添加到local的操作步骤
Linux的磁盘存储管理实操------(中)------逻辑卷管理实战
https://blog.csdn.net/xiaochenxihua/article/details/149471808
bash
#删除local-lvm并将剩余空间添加到local的操作步骤
#1-在PVE的web管理界面中选中【数据中心-->存储】下的local行后【双击鼠标左键】即可打开编辑界面,然后将【内容】下拉框的所有内容都选上,最后点击【确定】按钮即可;
#2-在PVE服务器的终端上操作【也可通过ssh连接到PVE服务器】
#2.1-查看当前PVE的分区情况【其中data就是对应PVE的web界面中local-lvm存储;root就是对应PVE的web界面中local存储】
lvs
#2.2-删除PVE的web界面中local-lvm对应的卷pve/data
lvremove pve/data
#2.3-将删除local-lvm空出的剩余所有空间添加给local
lvextend -l +100%FREE -r pve/root
#2.4-再次查看当前PVE的分区情况
lvs
df -hT
lsblk
#3-在PVE的web管理界面中选中【数据中心-->存储】下的local-lvm行后,点击顶部的【移除】按钮后点击【确定】即可删除






1.3、PVE的pve内容说明
点击PVE的web管理界面中左边区域的pve选项,右边区域会显示该PVE服务器的各种属性信息(如:PVE概要,pve的shell命令行、系统服务运行状态信息、防火墙信息、磁盘等信息)。并在右边区域的右上角有重启PVE、关闭PVE、shell操作等对PVE进行管理维护的功能。如下图所示:

点击PVE的web管理界面中左边区域的pve下的存储local(pve)即可查看到存储的所有内容;如下图所示:

点击local(pve)右侧的【ISO镜像】进入该界面后,点击上传按钮,可以上传iso到pve服务器中了(iso文件临时传到/var/tmp目录下,传输完成,自动拷贝到pve服务器的/var/lib/vz/template/iso目录。当然,也可以直接将iso传到pve服务器的/var/lib/vz/template/iso目录下)。




二、PVE中创建KVM虚拟机及其相关操作
2.1、在PVE中创建KVM虚拟机并安装部署
点击PVE的web管理界面右上角的【创建虚拟机】按钮,就可以打开创建虚拟机的配置界面,按照界面内容配置即可:
| PVE创建虚拟机界面的配置项 | 配置内容说明 |
|---|---|
| 常规 | 主要是设置KVM虚拟主机的节点、名称、资源池(有多个则按照需要选择,否则就保持默认即可)、添加到高可用(至少有两台pve服务才可使用)信息 |
| 操作系统 | 默认勾选【使用CD/DVD光盘镜像文件(ISO)】接着配置该选项下的: 1. 存储:默认选则local; 2. ISO镜像:选择该虚拟机需要使用到的系统iso镜像(没有则需要上传); 客户机操作系统: 1. 类型:默认是Linux(可以选择Linux、Microsoft Windows、Solaris Kernel、Other四种类型); 2. 版本:根据类型并结合iso镜像文件选择对应的版本(如:Linux的7.x-2.6 Kernel); |
| 系统 | 在这里配置如下内容: 1. 显卡:可根据自己服务器上的显卡选择(若没有,则使用默认); 2. 机型:一般现在的服务器都要选择q35;除非是十分古老的服务器才选择i440fx; 3. 固件:一般现在的服务器都选择OVMF(UEFI);接着选择EFI的存储路径(如:local);格式选择QEMU映像格式(qcow2); 4. SCSI控制器:默认选择VirtIO SCSI single; |
| 磁盘 | 这里有两个类型: 1. 磁盘:总线设备(SCSI)、存储(local)、磁盘大小(默认32G)、格式(QEMU映像格式(qcow2))、缓存(默认无缓存); 2. 带宽:可以配置数据的读取与写入限制、ops的读取与写入限制; |
| CPU | 可配置 CPU插槽数(默认1); 核心:(默认1)可根据实际需要配置; 类型:(默认(x86-64-v2-AES)) |
| 内存 | 可根据需要配置内存大小(默认是2048M); |
| 网络 | 直接使用默认配置即可: 桥接:(默认vmbr0); VLAN标签:(默认无VLAN); 防火墙:(默认勾选); 型号:(默认VirtIO半虚拟化); MAC地址:(默认auto) |









虚拟机配置创建完成后,点击PVE的web管理界面左侧的【数据中心-->pve】即可看到刚创建好的虚拟机【100(openeuler2403sp2)】选中这个虚拟机,即可看到右侧关于该虚拟机的详细操作面板(可查看虚拟机概要、控制台、硬件等信息)点击右侧顶部的【启动】或控制台下的启动即可启动该虚拟机进行配置操作,如下图所示:


注意: 当系统启动后加载ISO镜像时提示"BdsDxe: loading Boot0002 "UEFI QEMU DVD-ROM QM00003 " BdsDxe: failed to load Boot0002 ... : Access Denied"时是首先分析:
BdsDxe:OVMF UEFI 固件的启动设备驱动模块;Access Denied:UEFI 固件层面拒绝读取光驱内 ISO 引导文件,并非SATA 控制器硬件不兼容(你 CD-ROM 已选 sata,控制器本身无问题);
ISO镜像加载失败的根本原因是 :OVMF 固件会强制开启 Secure Boot,未签名 ISO 引导时直接返回 Access Denied;无法在 PVE界面提前关闭,必须开机进入 UEFI 图形设置取消勾选Attempt Secure Boot(Secure Boot 机制的原理是:UEFI 会校验 ISO 内bootx64.efi引导程序的数字签名,只有微软 / 厂商可信证书签名的介质才允许加载;绝大多数通用 Linux、Windows 原版 ISO 不带私钥签名,直接被 OVMF 拦截,抛出Access Denied)。
解决方法是: 关闭 OVMF固件UEFI引导界面中的 Secure Boot(详细的操作方法是:
-
启动虚拟机,在控制台按
Enter键进入 OVMF UEFI 设置界面; -
进入菜单
Device Manager→Secure Boot Configuration; -
将
Attempt Secure Boot选项从Enabled修改为Disabled(操作方法是按下键盘 空格键 Space ,方括号
[ ]内会出现 / 取消标记:-
框内有内容 = 启用 Secure Boot(当前默认状态,导致 Access Denied)
-
框内空白 = 关闭 Secure Boot(目标 Disabled 状态)
按空格直到
Attempt Secure Boot后面的方框为空。
);
-
-
按 F10 保存配置,重启虚拟机,即可正常从 SATA CD-ROM ISO 引导系统安装了
)










2.2、在PVE中对KVM虚拟机进行备份与还原
虚拟机创建且安装完成后,点击PVE的web管理界面左侧的【数据中心-->pve】即可看到刚创建好的虚拟机【100(openeuler2403sp2)】选中这个虚拟机,即可看到右侧关于该虚拟机的详细操作面板的【备份-->立即备份】打开备份该虚拟机的界面(在这个界面中,需要选择备份数据存储的路径为local,还需要选择备份的模式,有快照、挂起、停止三个选项:
- 快照:就是某个时间点的数据镜像;
- 挂起:就是将虚拟机暂时挂起进行备份;
- 停止:就是先停止虚拟机,然后进行备份;
最后还需要选择备份数据是否需要压缩以及压缩方式【建议选择ZSTD压缩方式】。
备份完成的文件默认放在pve宿主机的/var/lib/vz/dump路径下)如下图所示:




与备份对应的是【恢复操作】(当虚拟机故障或者需要进行恢复时,可直接选择之前的备份数据进行恢复,在恢复虚拟机的时候,虚拟机必须处于关机状态,否则会报错导致无法还原(这里只需要选择恢复到的存储路径即可,这里选择恢复到local存储介质上,然后点击"还原"按钮,系统将自动开始进行恢复操作。在恢复成功后,会显示" TASK OK"字样),点击顶部【还原】按钮即可),如下图所示:


2.3、在PVE中将安装配置好的KVM虚拟机转为模板与克隆
在PVE中当一个kvm虚拟机创建好各种内容配置成后,为了方便,可以把这个kvm虚拟机转换成模板,后面直接从模板克隆虚拟机即可,这样就无需重复安装虚拟机了。
将虚拟机转换为模板的方法是:(注意:必须先将虚拟机关机后才能操作,否则会失败)选中需要作为模板的kvm虚拟机,然后点击鼠标右键选择【转换成模板】。如下图所示:

后续如果要创建新的虚拟机,就可以从这个模板直接克隆。直接使用虚拟机模板克隆新虚拟机的方法是:选中模板虚拟机,然后点击鼠标右键,选择【克隆】即可快速创建一台新的虚拟机,无需重复安装系统了。如下图所示:



三、PVE中创建CT容器及其相关操作
在正式创建容器前,必须先上传或下载CT模板,详细操作方法是:打开PVE的web管理界面选择【数据中心-->pve-->local(pve)】然后点击右侧的【CT模板】(如本文这里直接下载对应的容器模板nginx,则在搜索后的框中输入nginx即可查询到对应的CT模板,然后选中这个模板,最后点击底部的【下载】按钮即可下载),如下图所示:



3.1、在PVE中创建CT容器并启动
点击PVE的web管理界面右上角的【创建CT】按钮,就可以打开创建CT容器的配置界面,按照界面内容配置即可:
| PVE创建CT容器界面的配置选项 | 说明 |
|---|---|
| 常规 | 配置CT容器的【节点、主机名称、资源池、密码或SSH、是否有特权】内容 |
| 模板 | 选择存储(默认是local)、CT模板 |
| 磁盘 | 选择存储(默认是local)、磁盘大小(rootfs默认是8G);也可新增磁盘 |
| CPU | 选择CPU的核心数量(默认是1核) |
| 内存 | 配置物理内存与swap,两个默认都是512M |
| 网络 | 可以配置网卡的名称(默认是eth0)、网卡桥接(默认是vmbr0)、勾选防火墙、IP地址可以自己手动配置静态,也可以选择DHCP自动获取配置 |
| DNS | 默认是直接使用主机设置(也可以自行配置) |








最后是确认CT容器的配置,确认无误后就可以点击右下角的【完成】按钮创建该CT容器了,如下图所示:


若要查看容器,则点击PVE的web界面左上角的pve节点下对应的容器(如ct-nginx),在右侧就可以看到关于该容器的各种操作选项,选择【控制台】方便查看容器情况,然后点击顶部的【启动】按钮即可启动该容器,如下图所示:





3.2、在PVE中对CT容器进行备份与还原
CT容器创建且配置完成后,点击PVE的web管理界面左侧的【数据中心-->pve】即可看到刚创建好的CT容器【ct-nginx】选中这个容器,即可看到右侧关于该容器的详细操作面板的【备份-->立即备份】打开备份该CT容器的界面(在这个界面中,需要选择备份数据存储的路径为local,还需要选择备份的模式,有快照、挂起、停止三个选项:
-
快照:就是某个时间点的数据镜像;
-
挂起:就是将虚拟机暂时挂起进行备份;
-
停止:就是先停止虚拟机,然后进行备份;
最后还需要选择备份数据是否需要压缩以及压缩方式【建议选择ZSTD压缩方式】。
备份完成的文件默认放在pve宿主机的/var/lib/vz/dump路径下)如下图所示:


与备份对应的是【恢复操作】(当CT容器故障或者需要进行恢复时,可直接选择之前的备份数据进行恢复,在恢复CT容器的时候,CT容器必须处于关机状态,否则会报错导致无法还原(这里只需要选择恢复到的存储路径即可,这里选择恢复到local存储介质上,然后点击"还原"按钮,系统将自动开始进行恢复操作。在恢复成功后,会显示" TASK OK"字样),点击顶部【还原】按钮即可),如下图所示:

3.3、在PVE中将配置好的CT容器转为模板与克隆
在PVE中当一个CT容器创建好且各种内容配置完成后,为了方便,可以把这个CT容器转换成模板,后面直接从模板克隆容器即可,这样就无需重复安装配置容器了。
将容器转换为模板的方法是:(注意:必须先将CT容器关机后才能操作,否则会失败)选中需要作为模板的CT容器,然后点击鼠标右键选择【转换成模板】)。如下图所示:

后续如果要创建新的容器,就可以从这个模板直接克隆。直接使用容器模板克隆新容器的方法是:选中模板容器,然后点击鼠标右键,选择【克隆】即可快速创建一台新的容器,无需重复安装系统了。如下图所示:

3.4、CT容器简介
3.4.1、CT容器是什么
CT = Container ,PVE(Proxmox VE)中 CT 底层就是 LXC(Linux Containers) ,是操作系统级轻量虚拟化 ,配套管理工具叫 pct(Proxmox Container Toolkit)Proxmox VE。
简单说:CT 是共享宿主机 Linux 内核的隔离 Linux 系统,不和 KVM 虚拟机一样模拟整套硬件、独立内核。
【核心原理】依靠 Linux 内核两大特性实现隔离:
-
Namespaces(命名空间):隔离进程、网络、挂载、用户、PID,每个 CT 独立文件系统、独立 IP、独立进程树;
-
Cgroups(控制组):限制 CPU、内存、磁盘 IO,防止单个容器吃光宿主机资源;
搭配 AppArmor、seccomp 做系统调用权限限制,实现安全隔离。
3.4.2、CT(LXC)≠ Docker
很多人混淆两者,核心区别如下:
-
CT(LXC) :系统容器,一整套完整 Linux 发行版,带 systemd、完整包管理器,适合单独部署服务(NAS、网站、数据库、软路由后台);
-
Docker :应用容器,只打包单个程序 + 依赖,无完整系统初始化,侧重微服务;
你可以在 CT 里面跑 Docker,但不能把 Docker 当成 PVE 的 CT 使用。
3.4.3、CT容器对比KVM虚拟机的核心特点
| CT容器对比KVM虚拟机的优势 | 说明 |
|---|---|
| ✅极轻量、资源占用极低 | 纯净 Debian CT 仅占用 30~80MB 内存,磁盘镜像几百 MB;KVM 虚拟机光系统就要几百 MB 内存; |
| ✅秒级开机 | 1~3 秒启动,不用完整内核引导;虚拟机开机通常几十秒 |
| ✅性能接近物理机 | 无硬件模拟开销,CPU/IO 损耗极小; |
| ✅统一管理 | 和 KVM 共用 PVE 网页后台、备份、快照、迁移、HA、防火墙、存储池; |
| ✅模板快速部署 | 官方提供 Debian、Ubuntu、Alpine、CentOS 等预制模板,一键创建。 |
| CT容器对比KVM虚拟机的劣势 | 说明 |
|---|---|
| ❌只能跑 Linux | 共享宿主机内核,无法运行 Windows、FreeBSD; |
| ❌隔离弱于 KVM | 内核共用,存在容器逃逸风险,生产推荐非特权容器(Unprivileged); |
| ❌不能自定义内核 | 容器内无法更换 / 编译内核、不能直接做显卡直通; |
| ❌部分底层内核功能受限 | 比如原生 Docker 嵌套需要手动开启 Nesting,部分内核模块无法加载。 |
| 对比项 | CT(LXC 容器) | KVM 虚拟机(VM) |
|---|---|---|
| 内核 | 共享宿主机内核 | 自带独立内核 |
| 支持系统 | 仅 Linux | Windows/Linux/BSD 全支持 |
| 内存开销 | 几十 MB | 数百 MB 起 |
| 开机速度 | 秒级 | 数十秒 |
| 隔离等级 | 进程级(中等) | 硬件级(最强) |
| GPU 直通 | 几乎不支持 | 完整支持 |
| 自定义内核 | 不支持 | 完全自由 |
| 典型用途 | 轻量 Linux 服务、批量建站、监控、软路由 | Windows 系统、需要强隔离多租户、特殊内核需求 |
3.4.4、什么时候选择CT容器
| CT容器的适用场景 |
|---|
| ✅《1》搭建网站、Nginx、MySQL、FTP、网盘、DNS、Pi-hole、监控面板; |
| ✅《2》批量运行大量轻量 Linux 服务,宿主机内存紧张; |
| ✅《3》仅需要 Linux 环境,不需要 Windows、显卡直通、自定义内核; |
| ✅《4》家庭实验室、小规模服务器集群,追求低资源消耗。 |
| CT容器的不适用场景 |
|---|
| ❌《1》需要 Windows 系统; |
| ❌《2》企业多租户、强安全隔离; |
| ❌《3》游戏虚拟机、显卡转码直通; |
| ❌《4》需要修改 / 编译内核、运行特殊底层驱动。 |