- A+
PVE 使用教程
一、PVE简介
Proxmox VE(简称 PVE)是一款开源的企业级虚拟化平台,基于 Debian Linux 系统开发,整合了 KVM 全虚拟化 和 LXC 容器虚拟化 技术,提供统一的 Web 管理界面,无需复杂的命令行操作即可实现对虚拟机、容器、存储、网络的全生命周期管理。
核心特点与功能
-
双虚拟化技术整合
- KVM(全虚拟化) :支持 Windows、Linux 等各类操作系统,通过硬件辅助虚拟化(如 Intel VT-x/AMD-V)实现接近物理机的性能,适合对隔离性和兼容性要求高的场景(如运行传统应用、数据库等)。
- LXC(容器虚拟化) :轻量级容器技术,共享宿主机内核,启动速度快、资源占用低,适合运行 Linux 应用(如 Web 服务、轻量工具),隔离性略低于 KVM,但效率更高。
- 统一 Web 管理界面
提供直观的图形化界面,支持虚拟机 / 容器的创建、配置、迁移、快照、备份等操作,同时集成了节点管理、集群监控、日志查看等功能,降低了虚拟化管理的技术门槛。 -
强大的存储支持
兼容多种存储类型,包括:- 本地存储:物理硬盘、LVM、ZFS 等;
- 网络存储:NFS、SMB/CIFS、iSCSI、GlusterFS 等;
- 分布式存储:Ceph(可直接集成,提供高可用块存储)。
- 高可用性(HA)与集群
支持多节点集群部署,通过共享存储和心跳检测实现虚拟机 / 容器的自动故障转移(HA),当某个节点故障时,业务可自动迁移到健康节点,减少 downtime。 - 备份与恢复
内置备份机制,支持全量 / 增量备份、定时备份,备份文件可存储在本地或远程存储(如 NFS、S3 兼容存储),并支持快速恢复或克隆。 - 网络灵活配置
支持桥接、VLAN、 bonded 网卡(链路聚合)、Open vSwitch 等网络模式,可灵活划分虚拟网络,满足复杂网络拓扑需求。 - 开源与企业支持
核心功能完全开源免费,企业用户可购买订阅获取官方技术支持、更新和额外工具(如 Proxmox Backup Server 集成)。
二、硬件直通
2.1 检测 IOMMU 是否开启
开启 IOMMU 后,BIOS 可以收集 IOMMU 硬件相关的信息以及它和 PCIe 设备连接关系的信息,使用如下命令检测是否开启,如果开启 IOMMU 的话可以看到一些 PCIe 硬件设备:
1 |
dmesg | grep -e DMAR -e IOMMU |
开启IOMMU:
未开启IOMMU
2.2 开启 IOMMU 和 SR-IOV
2.2.1 IOMMU
IOMMU(Input-Output Memory Management Unit,输入输出内存管理单元)
-
本质:硬件级别的内存管理单元,位于 CPU 和外设(如显卡、网卡、PCIe 设备)之间。
-
核心功能:
- 实现设备地址空间与系统内存地址空间的转换(类似 CPU 的 MMU 对内存地址的管理)。
- 提供设备级别的内存隔离,防止不同设备 / 虚拟机之间的内存越界访问。
- 支持将物理设备 “直通” 给虚拟机(VFIO 框架依赖 IOMMU 实现),让虚拟机直接访问物理设备,绕过宿主机内核,提升性能。
2.2.1 SR-IOV
SR-IOV(Single Root I/O Virtualization,单根 I/O 虚拟化)
-
本质:PCIe 规范定义的硬件虚拟化技术,允许单个物理 PCIe 设备(如网卡、RAID 卡)虚拟出多个独立的 “虚拟功能(VF)”。
-
核心功能:
- 物理设备(称为 “物理功能(PF)”)可创建多个轻量级的 “虚拟功能(VF)”,每个 VF 拥有独立的资源(如中断、寄存器、队列),但共享物理设备的核心硬件(如网卡的物理端口)。
- 虚拟机可直接使用 VF,无需通过宿主机的虚拟化层(如 QEMU 模拟),实现接近物理设备的性能。
- 高效共享物理设备资源,避免 “一个物理设备只能给一个虚拟机用” 的浪费。
2.2.3 配置IOMMU和SR-IOV
备份grub文件
1 |
cp /etc/default/grub /etc/default/grub.bak |
修改grub 文件
1 |
vim /etc/default/grub |
Intel 平台 修改为
1 |
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt " |
AMD 平台 修改为
1 |
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt" |
参数说明及可选参数:
参数 | 说明 |
---|---|
quiet | 减少系统启动时的日志输出,仅显示关键信息,让启动过程更 "安静"(不打印大量调试信息)。 |
intel_iommu\=on | 启用 Intel 平台的 IOMMU(输入输出内存管理单元)。IOMMU 是硬件级功能,主要用于: - 实现设备直通(如 KVM 虚拟化中,将物理显卡 / 网卡直接分配给虚拟机); - 提供内存地址转换和设备隔离,增强安全性。 |
iommu\=pt | 配置 IOMMU 工作在 "直通模式"(passthrough)。该模式下 IOMMU 仅为需要直通的设备映射内存,减少不必要的地址转换开销,优化设备直通性能(常见于虚拟化场景)。 |
textonly | 强制系统启动到纯文本模式(命令行界面),不加载图形桌面环境,适合服务器或需要避免图形界面干扰的场景。 |
nomodeset | 禁用内核的 "模式设置"(mode setting)功能。模式设置是内核负责初始化显卡、设置分辨率的机制,禁用后: - 显卡驱动的初始化交给用户态程序(如 Xorg); - 常用于解决显卡驱动冲突(如安装 NVIDIA 闭源驱动前,避免开源驱动与内核模式设置冲突)。 |
nofb | 禁用帧缓冲(framebuffer)设备。帧缓冲是内核提供的抽象显示接口,允许程序直接操作显示内存,禁用后会使用更基础的文本显示模式,可能用于解决某些显示硬件的兼容性问题。 |
pci\=noaer | 禁用 PCIe 设备的 AER(Advanced Error Reporting,高级错误报告)功能。部分硬件的 AER 可能会产生无意义的错误日志(甚至导致系统不稳定),禁用后可避免此类问题。 |
pcie_acs_override\=downstream,multifunction | 强制覆盖 PCIe 设备的 ACS(Access Control Services,访问控制服务)设置。ACS 用于隔离不同 PCIe 设备的内存访问,防止相互干扰,但部分硬件可能未正确实现 ACS: - downstream:覆盖下游端口的 ACS 检查; - multifunction:覆盖多功能设备的 ACS 检查; 常用于虚拟化场景,解决设备直通时的隔离问题(让多个 PCIe 设备能被正确分配给不同虚拟机)。 |
2.3 添加 VFIO 模块
2.3.1 VFIO模块
VFIO(Virtual Function I/O)是 Linux 内核中的一套设备直通框架,核心作用是将物理硬件设备(如显卡、网卡、PCIe 设备等)安全地 “剥离” 宿主机,直接分配给虚拟机(VM),让虚拟机绕过宿主机的虚拟化层(如 QEMU 模拟),直接与物理设备交互,从而获得接近原生的性能。
2.3.2 添加 VFIO模块
为了我们的显卡顺利直通,需要添加 VFIO 模块到 /etc/modules 文件中
1 2 3 4 5 |
echo "vfio" > /etc/modules echo "vfio_iommu_type1s" >> /etc/modules echo "vfio_pci" >> /etc/modules echo "vfio_virqfd" >> /etc/modules |
2.3.3 添加黑名单
将常见的驱动程序加入黑名单,即让 GPU 相关设备在下次系统启动之后不使用这些驱动,把设备腾出来给 vfio 驱动用:
1 2 3 4 5 6 7 8 |
echo "blacklist nvidiafb" >> /etc/modprobe.d/blacklist.conf echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf echo "blacklist amdgpu" >> /etc/modprobe.d/blacklist.conf echo "blacklist snd_hda_intel" >> /etc/modprobe.d/blacklist.conf echo "blacklist snd_hda_codec_hdmi" >> /etc/modprobe.d/blacklist.conf echo "blacklist i915" >> /etc/modprobe.d/blacklist.conf |
2.3.4 检查是否生效
然后更新内核重启机器:
1 |
update-initramfs -u && reboot |
重启后,检查之前配置的 VFIO 模块是否正常加载:
1 |
lsmod |grep vfio |
注意:在 Proxmox VE 8(PVE8)中,不需要手动添加 VFIO 模块,因为 PVE8 的内核(基于 Debian 12 的 Linux 内核,通常为 6.x 版本)已经默认集成了 VFIO 相关模块(如 vfio、vfio-pci、vfio_iommu_type1 等)
2.4 硬盘直通
在 Proxmox VE(PVE)中,硬盘直通指将物理硬盘(或分区)直接分配给虚拟机,让虚拟机绕过宿主机的存储虚拟化层(如 LVM、ZFS 或文件系统),直接访问物理硬盘,从而获得接近原生的性能(尤其适合需要高性能存储的场景,如数据库服务器、NAS 虚拟机等)。
2.4.1 读取硬盘信息
1 |
ls -l /dev/disk/by-id/ |
2.4.2 直通硬盘
直通硬盘给103虚拟机
1 |
qm set 103 -sata1 /dev/disk/by-id/ata-ST1000LM035-1RK172_WES14KR0 |
三、 PVE集群
集群所有节点的 PVE 版本、corosync 版本需要一致,否则可能失败。
3.1 创建集群(在第一个节点上操作)
3.1.1. 登录 PVE Web 界面
访问第一个节点的管理地址(如 https://192.168.1.10:8006
),登录管理员账号(root)。
3.1.2. 创建集群
点击左侧节点名称(如 pve-node1
)→ 选择 “数据中心”→ 点击 “集群”→ 点击 “创建集群”。
3.1.3 记录集群信息
创建成功后,会显示集群的 Fingerprint(用于节点加入时的身份验证)和 Join Information(包含集群地址和认证信息),建议保存备用。
3.2 其他节点加入集群
以第二个节点(pve-node2
)为例,加入已创建的集群:
3.2.1. 确保节点状态
加入集群的节点必须是全新的 PVE 系统(未加入任何集群,且无重要数据),否则需先重置(pvecm delnode
或重装系统)。
3.2.2. 加入集群(Web 界面方式)
登录第二个节点的 Web 界面(https://192.168.1.11:8006
)。
点击 “数据中心”→“集群”→“加入集群”。
填写集群信息:
3.2.3 命令方式加入集群
在目标节点(pve-node2)执行:
1 2 |
pvecm add 192.168.1.10 -fingerprint <集群指纹> # 输入第一个节点的 root 密码,完成加入 |
3.3 验证集群状态
3.3.1 Web 界面查看
登录任意节点的 Web 界面,左侧 “数据中心” 下会显示所有集群节点(如 pve-node1
、pve-node2
),状态为 “在线” 即表示成功。
3.3.2 命令行验证
在任意节点执行以下命令,确认集群状态:
1 2 3 4 5 6 7 8 9 10 |
# 查看集群节点列表 pvecm nodes # 输出示例: # Node Sts Inc Joined Name # 1 M 101 2024-08-08 10:00:00 pve-node1 # 2 M 102 2024-08-08 10:10:00 pve-node2 # 查看集群详细状态 pvecm status # 输出应包含 "quorum: 2"(节点数≥2 时),表示集群正常运行 |
四、pve优化脚本(pve_source)
4.1 功能介绍:
1、更换PVE软件源、Debian源、LXC CT源、Ceph源及一键换源并更新系统等。源包括中科大源、清华大学源、南京大学源、阿里云源、腾讯源、华为源等;
2、设置设备的直通直通功能、虚拟机的核显及高清音频直通功能;
3、自定义虚拟机的扩展参数配置向导;
4、群晖虚拟机虚拟 USB 引导配置向导;
5、修改 PVE 概要信息栏,增加 CPU及线程频率、CPU及核心、主板等工作状态及温度,风扇转速,NVME及机械硬盘的型号、容量、温度、通电时间、IO状态等信息显示。其中NVME支持0E故障监测。UPS 信息
6、支持安装PVE暗黑主题;
7、支持删除其他内核及头文件,也支持一键删除其他内核及头文件;
8、支持修改 CPU 工作模式;
9、支持自定义 CPU 主频限制区间或锁定主频。
4.2 使用教程
4.2.1 使用手册
1 |
https://bbs.x86pi.com/thread?topicId=20 |
4.2.2 稳定版
1 |
wget -q -O /root/pve_source.tar.gz 'https://bbs.x86pi.cn/file/topic/2023-11-28/file/01ac88d7d2b840cb88c15cb5e19d4305b2.gz' && tar zxvf /root/pve_source.tar.gz && /root/./pve_source |
4.2.3 开发版
1 |
wget -q -O /root/pve_source.tar.gz 'https://bbs.x86pi.cn/file/topic/2024-01-06/file/24f723efc6ab4913b1f99c97a1d1a472b2.gz' && tar zxvf /root/pve_source.tar.gz && /root/./pve_source |
4.2.4 修改 PVE 概要信息
- 我的微信
- 这是我的微信扫一扫
-
- 我的微信公众号
- 我的微信公众号扫一扫
-