Proxmox Virtual Environment (PVE) 是一个开源的虚拟化平台,集成了 KVM 和 LXC 技术,提供易于管理的虚拟机和容器解决方案。
1. 修改 PVE 软件源#
Proxmox VE 基于 debian发行版,使用APT作为软件包管理器。
将PVE的软件仓库源替换为国内镜像源,将PVE的企业源替换为社区源,适用于PVE8
/etc/apt/sources.list
文件和/etc/apt/sources.list.d/
目录下的.list
文件,定义了软件仓库源列表。
备份现有的 apt 源配置文件#
1
2
3
4
5
6
| #备份软件仓库
cp /etc/apt/sources.list /etc/apt/sources.list.bak
#备份企业仓库
cp /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak
#备份 Ceph 仓库
cp /etc/apt/sources.list.d/ceph.list /etc/apt/sources.list.d/ceph.list.bak
|
禁用企业源#
编辑 pve-enterprise.list
文件,将其内容注释掉:
1
| vi /etc/apt/sources.list.d/pve-enterprise.list
|
1
| #deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterprise
|
配置清华镜像源#
更换软件仓库镜像源#
1
| vi /etc/apt/sources.list
|
1
2
3
4
5
6
7
8
9
10
| #清华 Proxmox 源 适用于 Debian12
# Proxmox 社区源
deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian/pve bookworm pve-no-subscription
# Debian 源
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib
# 安全更新
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib
|
更换 Ceph 仓库镜像源#
1
| vi /etc/apt/sources.list.d/ceph.list
|
1
2
| # Proxmox Ceph 社区源
deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian/ceph-quincy bookworm main
|
更新 apt 密钥#
添加清华镜像源的 GPG 密钥
1
| wget -qO - https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian/proxmox-release-bookworm.gpg | gpg --dearmor -o /usr/share/keyrings/proxmox-release-bookworm.gpg
|
更新软件包列表及系统#
1
| apt update && apt upgrade
|
去除订阅弹窗#
PVE 在没有订阅的情况下,每次登录 Web 界面时会弹出订阅提示弹窗。订阅弹窗是由 PVE 的 Web 界面 JS 文件控制的,我们可以修改这个文件去掉弹窗。
1
2
3
4
5
6
7
| #备份 js 文件
cp /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js.bak
#文件中的 checked_command: function(orig_cmd) 函数所执行的弹窗逻辑
#注释 Ext.Msg.show 方法
sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
#重启进程
systemctl restart pveproxy.service
|
执行后清理浏览器缓存,重新登录验证。
2. QEMU/KVM#
内核模块#
将以下内容添加到配置文件/etc/modules
中,确保内核加载相应模块
1
2
3
4
| vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
|
然后还需要更新initramfs。命令行如下:
1
| update-initramfs -u -k all
|
IOMMU#
开启 IOMMU#
进入 BIOS 设置界面,查找以下选项并启用
1
2
| Intel CPU: VT-d (Intel Virtualization Technology for Directed I/O)
AMD CPU: IOMMU 或 SVM
|
如果你的内核版本较旧(低于 6.8),可能需要手动通过内核参数启用 IOMMU。
确认 IOMMU 是否已启用#
1
| dmesg | grep -e DMAR -e IOMMU
|
应该有一行类似于 DMAR: IOMMU enabled
。如果没有输出,则说明有问题。
开启 IOMMU Pass-Through 模式#
优点:
性能提升:减少 Hypervisor 处理 DMA 请求的开销,降低延迟。
更接近原生的设备性能:VM 中的设备可以直接访问硬件资源。
更高的隔离性:利用 IOMMU 实现物理设备与内存的直接映射,避免越界访问。
开启方法:
1
2
3
4
5
| #找到 GRUB_CMDLINE_LINUX_DEFAULT 行并添加以下内容:
# intel
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
# amd
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
|
更新 GRUB 配置
重启系统
验证是否生效
1
| dmesg | grep -e DMAR -e IOMMU
|
验证 IOMMU 中断重新映射是否已启用#
如果不进行中断重新映射,则无法使用 PCI 直通。设备分配将失败,并显示“无法分配设备 ‘[设备名称]”: 不允许操作“或”找不到中断重映射硬件,将设备传递到非特权域不安全”。
所有使用 Intel 处理器和芯片组的系统,如果支持用于定向 I/O (VT-d) 的 Intel 虚拟化技术,但不支持中断重新映射,则会看到此类错误。较新的处理器和芯片组(AMD 和 Intel)提供中断重映射支持。
要确定您的系统是否支持中断重新映射:
1
| dmesg | grep 'remapping'
|
加载vifo系统模块#
将以下内容添加到配置文件/etc/modules
中,确保内核加载相应模块
1
2
3
4
5
| # Modules required for PCI passthrough
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
|
更新 initramfs
1
| update-initramfs -u -k all
|
中介设备#
Intel GVT-g#
主机配置#
Intel的GVG-g驱动已经集成在Linux内核,在第5、6、7代Intel Core CPU和E3 v4 v5 v6版本的Xeon CPU可以直接使用
安装对应软件包
1
| apt install -y intel-opencl-icd
|
将i915.enable_gvt=1
添加到配置文件/etc/default/grub`中,确保内核加载相应模块
1
| GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_gvt=1
|
更新 GRUB 配置
加载GVT模块
将以下内容添加到配置文件/etc/modules
中,确保内核加载相应模块
1
2
3
4
| # Modules required for Intel GVT
kvmgt
exngt
Vfio-mdev
|
更新 initramfs
1
| update-initramfs -u -k all
|
重启
确认是否加载 GVT
虚拟机配置#
1
2
3
4
| #通过sysfs查看所支持的硬件设备 以0000:00:02.0为例
ls /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types
qm set VMID -hostpci0 00:02.0,mdev=i915-GVTg_V5_4
|
3. PVE 常用命令#
qm
命令
qm
命令是 Proxmox VE
(虚拟化平台)中的一个命令行工具,用于管理虚拟机。它主要用于创建、管理、配置虚拟机以及执行一些常见的虚拟化操作。以下是一些常用的命令:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| # 创建虚拟机
qm create <vmid> --name <vm_name> --memory <memory_size> --net0 virtio,<network_bridge> --ide0 <storage>:<disk_size>
# 启动虚拟机
qm start <vmid>
# 停止虚拟机
qm stop <vmid>
# 重启虚拟机
qm reboot <vmid>
# 查看虚拟机状态
qm status <vmid>
# 查看虚拟机配置
qm config <vmid>
# 导入虚拟机镜像
# [OPTIONS]
# --format <qcow2 | raw | vmdk>
qm importdisk <vmid> <disk_image.img> <storage> [OPTIONS]
# 克隆虚拟机
qm clone <vmid> <new_vmid> --name <new_vm_name>
# 删除虚拟机
qm destroy <vmid>
# 备份虚拟机
qm backup <vmid> <backup_path>
|
pvesh
命令及其他常用命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| # 查看所有虚拟机列表
pvesh get /nodes/<node>/qemu
# 查看集群状态
pvecm status
# 查看节点的硬件信息
pvesh get /nodes/<node>/hardware
# 启动虚拟机
pvesh create /nodes/<node>/qemu/<vmid>/status/start
# 停止虚拟机
pvesh create /nodes/<node>/qemu/<vmid>/status/stop
# 重新启动虚拟机
pvesh create /nodes/<node>/qemu/<vmid>/status/reboot
# 创建虚拟机备份
vzdump <vmid> --mode snapshot --storage <storage>
# 查看 PVE 存储列表
pvesh get /nodes/<node>/storage
# 创建新的存储池
pvesh create /nodes/<node>/storage --storage <storage_name> --type <storage_type> --content <content_type> --path <path_to_storage>
# 更新 PVE 节点
apt update && apt upgrade
# 查看磁盘使用情况
df -h
# 查看系统日志
journalctl -xe
|
导入ova
虚拟机文件
ova
其实就是虚拟机的打包格式,所以可以直接解压,得到虚拟机配置文件和vmdk
的虚拟硬盘
比如这个镜像 eveng.ova
上传该文件到PVE /tmp 目录下并解压
1
2
3
4
5
6
7
8
| cd /tmp
tar -xvf eveng.ova
#解压结果如下
EVE-NG社区懒人版5.1-Large.ovf
EVE-NG社区懒人版5.1-Large.mf
EVE-NG社区懒人版5.1-Large-disk1.vmdk
EVE-NG社区懒人版5.1-Large-disk2.vmdk
|
然后就是新建虚拟机,建好之后删除掉该虚拟机的虚拟硬盘,使用以上命令qm importdisk
导入
1
2
| qm importdisk 501 EVE-NG社区懒人版5.1-Large-disk1.vmdk local-lvm --format vmdk
qm importdisk 501 EVE-NG社区懒人版5.1-Large-disk2.vmdk local-lvm --format vmdk
|
Proxmox VE Documentation
Promxox VE 中文文档