PVE疑难解答,有需要点击链接闲鱼与我联系

Proxmox VE PVE 8.X使用合集篇--持续更新

注意,本篇文章仅记录Proxmox VE 8.X版本以上的,低于8.0版本的可能不适用。

PVE换源

nano 命令 Ctrl +X 输入“Y”保存

更换系统源

国内清华源

# 编辑sources.list
nano /etc/apt/sources.list
# 将原有的源链接在句首加 # 注释掉,更换以下清华源信息
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware

更换企业源

国内清华源

# 编辑pve-enterprise.list
nano /etc/apt/sources.list.d/pve-enterprise.list
# 将原有的源链接在句首加 # 注释掉,更换以下清华源信息
deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian bookworm pve-no-subscription

修复源401错误

# 编辑ceph.list
nano /etc/apt/sources.list.d/ceph.list
# 将原有的源链接在句首加 # 注释掉,添加中科大ceph源
deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-quincy bookworm no-subscription

执行更新源

apt update && apt dist-upgrade -y

LXC容器更源

国内清华源

# 备份APLInfo.pm
cp /usr/share/perl5/PVE/APLInfo.pm /usr/share/perl5/PVE/APLInfo.pm_back
# 替换为清华源:
sed -i 's|http://download.proxmox.com|https://mirrors.tuna.tsinghua.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm
# 重启服务后生效
systemctl restart pvedaemon.service

PVE常用优化脚本

去掉登录订阅提示,合并local-lvm以最大化利用硬盘空间,添加CPU频率硬盘温度,删掉不用的内核等信息

# pve_source
wget https://yangwenqing.com/files/pve/pve_source && chmod +x pve_source && ./pve_source
# pve_source 新
wget https://yangwenqing.com/files/pve/pve_source.tar.gz && tar zxvf /root/pve_source.tar.gz && /root/./pve_source

开启硬件直通

需要提前在主板BIOS开启虚拟化功能,才能开启硬件直通。在BIOS开启vt-d,AMD平台是iommu,部分OEM主板上叫SRIOV
使用nano命令编辑/etc/default/grub

Intel CPU

如你的PVE是用GRUB启动则修改/etc/default/grub ,如你的PVE是用Systemd启动则修改/etc/kernel/cmdline

GRUB启动

nano /etc/default/grub 
# 开启iommu分组,在里面找到:GRUB_CMDLINE_LINUX_DEFAULT="quiet"项将其修改为
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction"
# 更新grub
update-grub
# 更新后重启PVE
reboot

Systemd启动

nano /etc/kernel/cmdline
# 注释掉原来的,替换以下参数即可
root=ZFS=rpool/ROOT/pve-1 boot=zfs intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction
# 更新Systemd
proxmox-boot-tool refresh
# 更新后重启PVE
reboot

AMD CPU

如你的PVE是用GRUB启动则修改/etc/default/grub ,如你的PVE是用Systemd启动则修改/etc/kernel/cmdline

GRUB启动

nano /etc/default/grub 
# 开启iommu分组和阻止PVE启动时对图形显示的初始化和配置和对每个设备单独分组,在里面找到:GRUB_CMDLINE_LINUX_DEFAULT="quiet"项将其修改为
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt initcall_blacklist=sysfb_init pcie_acs_override=downstream,multifunction"
# 更新grub
update-grub
# 更新后重启PVE
reboot

Systemd启动

nano /etc/kernel/cmdline
# 开启iommu分组和阻止PVE启动时对图形显示的初始化和配置和对每个设备单独分组,注释掉原来的,替换以下参数即可
root=ZFS=rpool/ROOT/pve-1 boot=zfs amd_iommu=on iommu=pt initcall_blacklist=sysfb_init pcie_acs_override=downstream,multifunction
# 更新Systemd
proxmox-boot-tool refresh
# 更新后重启PVE
reboot

iommu=pt 设置iommu为直通模式pass through,initcall_blacklist=sysfb_init 屏蔽掉pve7.2以上的一个bug,方便启动时候就屏蔽核显等设备驱动;pcie_acs_override=downstream,multifunction 便于iommu每个设备单独分组,以免直通导致物理机卡死等问题

加载内核模块

编辑nano /etc/modules

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

验证是否开启直通

# 验证是否开启iommu
dmesg | grep iommu
或者
dmesg | grep -e DMAR -e IOMMU -e AMD-Vi

出现如下例子。则代表成功

[ 1.341100] pci 0000:00:00.0: Adding to iommu group 0
[ 1.341116] pci 0000:00:01.0: Adding to iommu group 1
[ 1.341126] pci 0000:00:02.0: Adding to iommu group 2
[ 1.341137] pci 0000:00:14.0: Adding to iommu group 3
[ 1.341146] pci 0000:00:17.0: Adding to iommu group 4

此时输入命令

find /sys/kernel/iommu_groups/ -type l 
#出现很多直通组,就代表成功了。如果没有任何东西,就是没有开启
lsmod | grep vfio
# 检测模块是否加载
vfio_pci               16384  4
vfio_pci_core          94208  1 vfio_pci
vfio_iommu_type1       49152  2
vfio                   57344  17 vfio_pci_core,vfio_iommu_type1,vfio_pci
iommufd                73728  1 vfio
irqbypass              16384  41 vfio_pci_core,kvm
#出现这类信息,就代表成功了。

显卡直通

理论上AMD RADEON 5xxx, 6xxx, 7xxx, Navi 5XXX(XT), NVIDIA GEFORCE 7, 8, GTX 4xx, 5xx, 6xx, 7xx, 9xx, 10xx and RTX 16xx/20xx/30xx都可以成功直通

屏蔽设备

添加设备黑名单,编辑pve-blacklist.conf

# 编辑pve-blacklist.conf
nano /etc/modprobe.d/pve-blacklist.conf
# 直通AMD显卡,请使用下面命令
blacklist radeon
blacklist amdgpu 
# 直通NVIDIA显卡,请使用下面命令
blacklist nouveau
blacklist nvidia
blacklist nvidiafb
# 直通INTEL核显,请使用下面命令
blacklist i915
blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi
# 允许不安全的设备中断
options vfio_iommu_type1 allow_unsafe_interrupts=1

执行更新initramfs

# 更新initramfs
update-initramfs -u -k all
# 重启
reboot

ROM文件下载

如出现显卡直通后无法显示,可以尝试自行提取vbios.bin或者从以下网站下载对应显卡的rom文件进行加载。将rom文件放到/usr/share/kvm目录下

# AMD/ATI/NVIDIA显卡vbios.bin下载路径
https://techpowerup.com/vgabios
# 来着B站李晓流提供的Intel核显4-14代通用rom文件
wget -O igd.rom https://yangwenqing.com/files/pve/rom/intel_4-14vbios.rom
# 来着B站李晓流提供的Intel核显11-14代通用rom文件
wget -O igd.rom https://yangwenqing.com/files/pve/rom/intel_11-14th.rom
# 来着B站大大帅666提供的Intel核显6-13代通用rom文件
wget -O igd.rom https://yangwenqing.com/files/pve/rom/intel_6-13th.rom
# 来着B站李晓流提供的AMD核显3000-7000系列通用rom文件
wget -O amd3k-7k.rom https://yangwenqing.com/files/pve/rom/AMD_3k-7k.rom
# 来着B站爱折腾的老高提供的Intel核显10-13代通用rom文件
wget -O igd.rom https://yangwenqing.com/files/pve/rom/intel_10-13th.rom
# 来着B站大大帅666提供的Intel核显10-13代通用rom文件
wget -O igd.rom https://yangwenqing.com/files/pve/rom/intel_13500h-10600.rom
# 来着B站大大帅666提供的Intel核显6-10代通用rom文件
wget -O igd.rom https://yangwenqing.com/files/pve/rom/intel_6-10th.rom
# 来着B站大大帅666提供的Intel核显10-12代(不花屏)通用rom文件
wget -O igd.rom https://yangwenqing.com/files/pve/rom/intel_10-12th.rom
# 来着B站爱折腾的老高提供的Intel核显12代奔腾8505 rom文件
wget -O igd.rom https://yangwenqing.com/files/pve/rom/8505_gop.rom
# AMD 5500U核显通用vbios.bin文件
wget -O 5500Uvbios.bin https://yangwenqing.com/files/pve/rom/amd_5500u_vbios.bin
# AMD 5600U-5800U核显通用vbios.bin文件
wget -O 5600U-5800Uvbios.bin https://yangwenqing.com/files/pve/rom/amd_5600u_5800u_vbios.bin
# AMD 5825U核显通用vbios.bin文件
wget -O 5825Uvbios.bin https://yangwenqing.com/files/pve/rom/amd_5825u_vbios.bin
# 来着B站爱折腾的老高提供的Intel核显N95_100_200_300通用rom文件
wget -O igd.rom https://yangwenqing.com/files/pve/rom/N95_100_200_300_gop.rom

Intel核显直通Win10

查看设备ID

PVE Shell 执行
更新pci设备信息

update-pciids

查看核显及声卡

lspci -D -nnk | grep VGA
lspci -D -nnk | grep Audio

Intel的核显和声卡ID通常为:0000:00:02.00000:00:1f.3

Win虚拟机建立及环境设置

配置虚拟机启动文件

配置虚拟机conf文件,添加ROM文件指向:

nano /etc/pve/qemu-server/虚拟机序号.conf
# 在顶部添加以下参数
args: -set device.hostpci0.x-igd-gms=0x2
# 上方参数没画面可以换以下这个参数,如黑屏闪屏将参数x-igd-gms=0x2改为0x8
args: -set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=0x2 -set device.hostpci0.x-igd-opregion=on
# 同时将核显pci设备修改为
hostpci0: 0000:00:02.0,legacy-igd=1,romfile=igd.rom

ctrl+x,y,回车保存退出

驱动资源下载

# virtIO驱动ISO:
https://yun.yangwenqing.com/ESXI_PVE/PVE/Windows/VirtIO_Drivers/virtio-win-0.1.240.iso
# 7~10代核显驱动:
https://www.intel.cn/content/www/cn/zh/download/776137/intel-7th-10th-gen-processor-graphics-windows.html
# 11~13代核显驱动:
https://www.intel.cn/content/www/cn/zh/download/785597/intel-arc-iris-xe-graphics-windows.html

AMD核显直通Win10

提前在BIOS开启以下设置
AMD核显直通BIOS设置

查看设备ID

PVE Shell 执行
更新pci设备信息

update-pciids

查看核显及声卡

lspci -D -nnk | grep VGA
lspci -D -nnk | grep Audio

AMD 5500U的核显和声卡ID通常为:0000:04:00.00000:04:00.1

Win虚拟机建立及环境设置

配置虚拟机启动文件

配置虚拟机conf文件,添加ROM文件指向:

nano /etc/pve/qemu-server/虚拟机序号.conf
# 找到以下两处,并添加
hostpci0: 0000:04:00.0,pcie=1,romfile=5500Uvbios.bin,x-vga=1

打补丁

核显成功直通后存在win10虚拟机重启就再也不出画面问题。可以安装RadeonResetBugFixService这个软件不完美解决这个问题。安装这个软件后可以正常重启和关机。

# 下载 RadeonResetBugFixService
https://yangwenqing.com/files/pve/RadeonResetBugFixService.exe
# 下载放在c盘根目录,cmd管理员模式下运行RadeonResetBugFixService.exe install即可

硬盘直通

Proxmox VE直通硬盘相对简单。有2种方式的实现
硬盘直通.png

RDM (裸磁盘映射)

RDM是引用于VMware的裸磁盘映射。将单个硬盘或者分区,通过qemu进行映射到虚拟机。在KVM上没有找到类似技术的名词,所以用RDM代名。通过这种方式,硬盘会在虚拟机内会认为是一个qemu-hdd。

列出磁盘ID

ls -l /dev/disk/by-id

列出的ID信息带有part的是分区,不带part是整改硬盘ID

lrwxrwxrwx 1 root root  9 Oct  5 10:57 ata-LITEON_CV5-CQ128_002709100P6R -> ../../sda
lrwxrwxrwx 1 root root 10 Oct  5 10:57 ata-LITEON_CV5-CQ128_002709100P6R-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Oct  5 10:57 ata-LITEON_CV5-CQ128_002709100P6R-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Oct  5 10:57 ata-LITEON_CV5-CQ128_002709100P6R-part3 -> ../../sda3
lrwxrwxrwx 1 root root 13 Oct  5 10:57 nvme-eui.e8238fa6bf530001001b444a48b10235 -> ../../nvme0n1
lrwxrwxrwx 1 root root 15 Oct  5 10:57 nvme-eui.e8238fa6bf530001001b444a48b10235-part1 -> ../../nvme0n1p1
lrwxrwxrwx 1 root root 13 Oct  5 10:57 nvme-WDC_WDS240G2G0C-00AJM0_22478A460803 -> ../../nvme0n1
lrwxrwxrwx 1 root root 13 Oct  5 10:57 nvme-WDC_WDS240G2G0C-00AJM0_22478A460803_1 -> ../../nvme0n1
lrwxrwxrwx 1 root root 15 Oct  5 10:57 nvme-WDC_WDS240G2G0C-00AJM0_22478A460803_1-part1 -> ../../nvme0n1p1
lrwxrwxrwx 1 root root 15 Oct  5 10:57 nvme-WDC_WDS240G2G0C-00AJM0_22478A460803-part1 -> ../../nvme0n1p1

nvme开头的是nvme硬盘,ata开头是走sata或者ata通道的设备。,scsi是scsi设备-阵列卡raid或者是直通卡上的硬盘
可以通过qm set <vmid> --scsiX /dev/disk/by-id/xxxxxxx 进行RDM直通

qm set 100 --scsi0 /dev/disk/by-id/nvme-eui.e8238fa6bf530001001b444a48b10235

当然,你也可以使用ide或者sata形式直通硬盘,如下

qm set 100 --sata1 /dev/disk/by-id/nvme-eui.e8238fa6bf530001001b444a48b10235
qm set 100 --ide1 /dev/disk/by-id/nvme-eui.e8238fa6bf530001001b444a48b10235


1) 建议为scsi设备,这样性能理论上是最优秀的。
2) 需要注意的是,scsi会有序号,如scsi1,scsi0。在操作之前,应该要知道哪些scsi号是空的。
3) 对于pve来说,sata最多有6个设备。如果要使用sata类型直通,请勿超过sata5。

如果需要取消直通,可以使用命令qm set <vmid> --delete scsiX
如上面的例子,你应该输入

qm set 100 --delete scsi0

出现update即代表成功。可返回网页上查看。

root@pve:~# qm set 101 --delete scsi1
update VM 101: -delete scsi1

磁盘控制器直通

在DAS架构中,硬盘都是连接到硬盘控制器(Nvme除外),由硬盘控制器管理。因此直通了磁盘控制器,就会让磁盘控制器下的所有硬盘间接直通到虚拟机。通过这种方式,硬盘会在虚拟机内会认为是一个物理磁盘,具有smart属性。

local-lvm改目录存储

1)从Proxmox Web界面,删除 local-lvm
步骤:PVE后台,数据中心->存储,选择 local-lvm,然后点击移除。
lvm-thin.jpg

2)通过命令删除 lvm,新建lvm,并创建文件系统
确保在新安装的没有数据的PVE执行

# 卸载 /dev/pve/data挂载路径
umount /dev/pve/data
# 删除 lvm-thin
lvremove /dev/pve/data -y
# 检查磁盘剩余空间并创建新的lvm
vgdisplay pve | grep Free | awk '{print "lvcreate -l " $5 " -n data pve -y"}' |bash
# 格式化,并挂载文件系统
mkfs.ext4 /dev/pve/data
mkdir /mnt/data0
mount /dev/pve/data /mnt/data0
echo "/dev/pve/data /mnt/data0 ext4 defaults 0 0" >> /etc/fstab

3)在Proxmox 将注册目录为存储
步骤:PVE后台,数据中心->存储->添加, ID填写 data0, 目录填写 /mnt/data0。 即可添加名为 data0的存储
目录类型存储.png

开启虚拟化嵌套

检测pve虚拟系统是否支持虚拟化

egrep --color 'vmx|svm' /proc/cpuinfo
没有输出即不支持,有输出则支持,并会显示vmx或者svm的关键词

检查pve系统是否开启nested,运行命令

# 对于Intel处理器,如输出N,表示未开启,输出Y,表示已开启
cat /sys/module/kvm_intel/parameters/nested
Y
# 对于AMD处理器,如输出0,表示未开启,输出1,表示已开启
cat /sys/module/kvm_amd/parameters/nested
1

如检查结果未开启,必须关闭所有的虚拟机系统,然后开启内核支持。

# Intel处理器
modprobe -r kvm_intel
modprobe kvm_intel nested=1
# AMD处理器
modprobe -r kvm_amd
modprobe kvm_amd nested=1
# 再次检查nested,输出Y或者1,即为开启成功。
# Intel处理器
cat /sys/module/kvm_intel/parameters/nested 
# AMD处理器
cat /sys/module/kvm_amd/parameters/nested 

如果报错Module kvm_intel is in use请检查你的虚拟机是否全部关闭。

设置系统启动后自动开启nested

# Intel处理器
echo "options kvm_intel nested=1" >> /etc/modprobe.d/modprobe.conf
# AMD处理器
echo "options kvm_amd nested=1" >> /etc/modprobe.d/modprobe.conf

这样系统重启会自动加载netsted,虚拟机CPU类型设置为host,这样就支持嵌套了。

配置QEMU Guest Agent

VMware平台有VMwareTools,KVM平台有qemu-guest-agent。PVE下给虚拟机安装qemu-guest-agent可解决虚拟机无法关机和内存不同步IP不显示等问题。以下是各个虚拟机平台安装qemu-guest-agent方法:
在PVE先给虚拟机开启qemu-guest-agent再安装qemu-guest-agent
qemu-guest-agent

Debian/Ubuntu

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

Redhat/CentOS

yum install qemu-guest-agent
systemctl enable --now qemu-guest-agent

Arch Linux

pacman -S qemu-guest-agent
systemctl enable --now qemu-guest-agent

OpenWrt

opkg update
opkg install qemu-ga

Windows

访问网站 Virtio驱动下载页 下载 Virtio 驱动,例如 virtio-win-0.1.240.iso,上传到虚拟机。加载镜像文件后安装 virtio-win-gt-x64.msivirtio-win-guest-tools.exe,然后重启系统。
qemu-ga-x86_64.exe

群辉 Synology DSM

在套件中心添加DSM7.x矿神SPK套件源地址:https://spk7.imnks.com/ 下载QEMU Guest Agent驱动即可
QEMU Guest Agent
开启QEMU Guest Agent,且:虚拟机内存 ≥ 4GB (特别是SA6400,否则virtio-ports加载失败)

Last modification:October 19th, 2024 at 01:33 am
If you think my article is useful to you, please feel free to appreciate