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
加载内核模块
编辑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
#出现这类信息,就代表成功了。
显卡直通
屏蔽设备
添加设备黑名单,编辑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.0
和0000:00:1f.3
Win虚拟机建立及环境设置
创建win10虚拟机
名称:自定义
光驱挂载:Win安装ISO镜像
系统中显卡:无
机型:i440fx
BIOS:OVMF
EFI分区:UEFI(OVMF)需要
磁盘:SCSI 大小100G(按需设置,或硬盘直通)
CPU:host 核心数量4(如N5105共4核,按需设置)
内存:4G及以上(核显直通建议)
网络:virtIO(半虚拟化或网卡直通)网卡
建立好虚拟机后
添加CD/DVD设备1个,挂载virtIO驱动ISO镜像
添加PCI设备:
添加显卡(0000:00:02.0)
添加声卡(0000:00:1f.3)
添加USB键鼠
配置虚拟机启动文件
配置虚拟机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开启以下设置
查看设备ID
在PVE Shell
执行
更新pci设备信息
update-pciids
查看核显及声卡
lspci -D -nnk | grep VGA
lspci -D -nnk | grep Audio
AMD 5500U的核显和声卡ID通常为:0000:04:00.0
和0000:04:00.1
Win虚拟机建立及环境设置
创建win10虚拟机
名称:自定义
光驱挂载:Win安装ISO镜像
系统中显卡:无
机型:q35
BIOS:默认SeaBIOS
磁盘:SCSI 大小100G(按需设置)
CPU:host 核心数量6(5500U共6核,按需设置)
内存:8G及以上(核显应用建议内存大些,按需设置)
网络:virtIO(半虚拟化)网卡
建立好虚拟机后
添加CD/DVD设备1个,挂载virtIO驱动ISO镜像
添加PCI设备:
添加显卡(0000:04:00.0)pcie设备里面勾选:主gpu,rom-bar,pcie-express这三个选项,所有功能:不勾选
添加声卡(0000:04:00.1)
添加USB键鼠
配置虚拟机启动文件
配置虚拟机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种方式的实现
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,然后点击移除。
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的存储
开启虚拟化嵌套
检测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
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.msi
和virtio-win-guest-tools.exe
,然后重启系统。
群辉 Synology DSM
在套件中心添加DSM7.x矿神SPK套件源地址:https://spk7.imnks.com/ 下载QEMU Guest Agent驱动即可开启QEMU Guest Agent,且:虚拟机内存 ≥ 4GB (特别是SA6400,否则virtio-ports加载失败)
这是官网链接,教程已经改了
https://pve.proxmox.com/pve-docs/chapter-qm.html#qm_pci_passthrough
感谢大佬教程,请问有没有支持RTX4080S的驱动程序呢?
感谢大佬教程