PVE 8.1.4 安装及优化记录

前言

最近因为看到esxi7.0 u3o 爆出有漏洞,会穿透宿主机。然后去hostloc上查了一下后,发现普遍对pve的评价都不低,而且还可以手敲命令,就当debian用。于是就换到pve上了,折腾了一下直通,顺便记录一下,防止以后忘了。

安装

使用ventoy

如果使用pve8.1 的iso来安装,会因为使用了安全启动什么的,导致ventoy 无法引导和使用。

老版本的可以直接升级到最新版的ventoy即可解决。

如果是ventoy下载速度慢,可以使用NJU的镜像

https://mirrors.nju.edu.cn/github-release/ventoy/Ventoy/

也附上PVE的ustc镜像

https://mirrors.ustc.edu.cn/proxmox/iso/proxmox-ve_8.1-2.iso

安装pve

这里可以记住一点,不需要去一直选Asia/Shanghai,直接在上面的 Contry 里写上 China 就可以自动识别了。

然后后面就是重点了,一些优化的项目

优化

修改pve默认的debian源

默认源都是官方的,也不会自动优化到国内来。这里懒,直接用ustc的生成器换成最新的就可以了

# 先备份原来的
cp /etc/apt/sources.list{,.bak}

# 直接替换
wget https://mirrors.ustc.edu.cn/repogen/conf/debian-https-4-bookworm -O /etc/apt/sources.list

还有一个pve的库:

# 删除自带的企业库
rm -rf /etc/apt/sources.list.d/pve-enterprise.list

# 下载ustc的pve库的秘钥
wget http://mirrors.ustc.edu.cn/proxmox/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg

# 添加源
echo "deb http://mirrors.ustc.edu.cn/proxmox/debian/pve bookworm pve-no-subscription" >/etc/apt/sources.list.d/pve-install-repo.list

最后更新一下:

apt -y update && apt -y upgrade && apt -y dist-upgrade && apt -y autoclean && apt -y autoremove

合并lvm

如果你没有略过前面的提醒框,按道理是不需要备份虚拟机的,但是已经创建了,建议还是把虚拟机备份一下。

先在机器里删除一下local-lvm卷,然后将容量合并

# 删除 local-lvm 的lvm卷
lvremove pve/data

# 将容量加在local 卷里
lvextend -l +100%FREE -r pve/root

然后再这里处理一下删除

图片[1]-PVE 8.1.4 安装及优化记录-西西のBlog

删除完后,将local加上原本local-lvm负责的功能

图片[2]-PVE 8.1.4 安装及优化记录-西西のBlog

配置完后,就可以暂时不管了。

开启iommu直通

直通这块我挺扣头的,网上搜到的各种参数比较多,也不知道啥意思,就先按照比较多的和重复比较多的先加,如果有大佬知道是啥意思,也可以在后面评论教教

先修改grub

# 修改 grub
nano /etc/default/grub

# 将下面一行注释,然后重新复制一行
#GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction"

# 重新生成一下Grub
update-grub

找了一下这些参数的意义,都是gpt输出的,有感兴趣的可以看看:

“quiet”

该参数的作用是减少系统启动过程中内核的输出信息,让启动过程更加“安静”,只显示必要的启动信息。这通常用于减少屏幕上的干扰信息,让用户专注于启动过程中的重要信息。

“intel_iommu=on”

这个参数启用了Intel的IOMMU支持。IOMMU是一种硬件技术,允许从DMA(直接内存访问)和中断重映射到虚拟化环境中的特定虚拟机。对于Intel处理器,这通常指的是VT-d技术。启用IOMMU对于进行硬件直通是必须的,因为它允许虚拟机直接访问分配给它的物理硬件设备。

“iommu=pt”

iommu=pt(Pass-Through)参数用于在启用IOMMU的同时,以透传模式运行IOMMU。这种模式下,所有设备的DMA请求都不经过IOMMU地址转换,直接传递给设备。这对于某些需要绕过IOMMU地址转换的硬件直通场景是有用的,因为它可以减少延迟,提高性能。然而,这可能会降低系统的安全性,因为不再有IOMMU提供的地址隔离保护。

“video=efifb:off”

对于进行GPU直通的场景,禁用EFI帧缓冲可以避免宿主机与直通给虚拟机的GPU之间的潜在冲突。

“pcie_acs_override=downstream”

这个参数有时用于改善设备之间的IOMMU分组,特别是在硬件默认的IOMMU分组不适合直通的情况下。使用这个参数可以使得更多设备能够单独分组,从而便于直通。需要注意,这可能会降低系统安全性,因为它改变了默认的硬件隔离行为。

“rd.driver.pre=vfio-pci”

这个参数确保在系统早期初始化过程中预加载vfio-pci模块,这对于某些需要在系统启动早期绑定到VFIO的设备来说是必要的,以确保设备正确地直通给虚拟机。

“kvm.ignore_msrs=1”

这个参数可以让KVM忽略对未实现模型特定寄存器(MSR)的访问。这对于运行某些操作系统或特定应用,特别是那些依赖于特定硬件行为的虚拟机,可能是必要的。在没有这个参数的情况下,访问未实现的MSR可能会导致虚拟机崩溃。

然后修改一下内核

# 修改内核文件
nano /etc/modules

# 添加这几个
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

# 编辑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

验证一下是否开启直通

# 验证是否开启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  3
vfio_pci_core          86016  1 vfio_pci
irqbypass              12288  17 vfio_pci_core,kvm
vfio_iommu_type1       49152  1
vfio                   57344  13 vfio_pci_core,vfio_iommu_type1,vfio_pci
iommufd                77824  1 vfio
#出现这类信息,就代表成功了。

直通后就可以对虚拟机进行直通了,我主要是直通给iKuai

图片[3]-PVE 8.1.4 安装及优化记录-西西のBlog

选择后记得勾上高级里的全部功能,暂时不清楚这个是啥意思,但是感觉勾上应该没啥问题

图片[4]-PVE 8.1.4 安装及优化记录-西西のBlog

CPU频率自动调节

pve安装完CPU的模式默认是 性能模式 ,这样子会造成不必要的电费浪费
我们为了环保,所以可以用 cpufrequtils 让CPU自动调节频率

# 安装cpufrequtils
apt -y install cpufrequtils

# 创建配置文件
vim /etc/default/cpufrequtils

GOVERNOR="ondemand"

# 最后重启服务
systemctl rstart cpufrequtils

常用CPU模式:

模式说明
powersave以最低频率运行cpu
ondemand程序运行时切换cpu频率到最高,不使用时降低到最低
performance最高性能模式,以最高频率运行cpu

Qemu Guest Agent

这里只需要记录两点:

  • OpenWRT里的qemu不是全称,而是 qemu-ga
  • Windows版的下载地址是iso,链接记录下:https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
  • 在配置虚拟里没有安装qemu-ga的时候!不要打开开关!会无法关机的!

添加信息监控及去除订阅弹窗

一直没找到好用的,后来看到恩山有大佬写了一个脚本,可以一键执行,也可以去除这些代码。

(curl -Lf -o /tmp/temp.sh https://raw.githubusercontent.com/a904055262/PVE-manager-status/main/showtempcpufreq.sh || curl -Lf -o /tmp/temp.sh https://mirror.ghproxy.com/https://raw.githubusercontent.com/a904055262/PVE-manager-status/main/showtempcpufreq.sh) && chmod +x /tmp/temp.sh && /tmp/temp.sh remod

# 如没有显示功耗什么的,就执行一下以下的命令
apt update ; apt install linux-cpupower && modprobe msr && echo msr > /etc/modules-load.d/turbostat-msr.conf && chmod +s /usr/sbin/turbostat && echo 成功!

执行过后应该就是这个样子了,记得 Shift+F5 刷新一下浏览器缓存

图片[5]-PVE 8.1.4 安装及优化记录-西西のBlog

虽然有点丑,但是感觉不影响x,就不用管了捏

当然你也可以手动去除弹窗,不修改这些数据,手动去除的话,就需要添加一下这串命令到rc.local,方便每次更新过后自行替换:

# 创建自启文件
touch /etc/rc.local

# 创建修改脚本
vim /opt/script/rmsub.sh

#!/bin/bash
sed -i_orig "s/data.status === 'Active'/true/g" /usr/share/pve-manager/js/pvemanagerlib.js
sed -i_orig "s/if (res === null || res === undefined || \!res || res/if(/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
sed -i_orig "s/.data.status.toLowerCase() !== 'active'/false/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
systemctl restart pveproxy

# 修改权限
chmod +x /opt/script/rmsub.sh

# 在自启文件里调用修改脚本
echo "/bin/bash /opt/script/rmsub.sh" > /etc/rc.local
chmod +x /etc/rc.local



PVE 导入 img

这一块得记录一下,不得不说,真的比esxi要方便一百倍,esxi还得下软件去转,这个直接命令行就ok

首先先记下虚拟机的id

然后去镜像里上传下载的img,一般上传后存放的地址如下

# 存放的地址
ls /var/lib/vz/template/iso

然后进行转换

# 切换目录
cd /var/lib/vz/template/iso

# 挂载镜像
qm importdisk [虚拟机ID] [镜像IMGM名字] [储存卷名]
# 如果当时没有处理合并的话,就填对应的储存卷名

处理完后应该会是这样

图片[6]-PVE 8.1.4 安装及优化记录-西西のBlog

一般直接双击即可。然后点添加。最后修改一下引导顺序。

图片[7]-PVE 8.1.4 安装及优化记录-西西のBlog

最后启动,完事~

iKuai 和 OpenWRT的简单NAT优化

至此,PVE方面就基本上优化完成了,剩下来就是虚拟机的事了

OpenWRT这块因为网关互指,所以会出现有一种情况就是,所有的流量在iKuai那边,看到的全是从OpenWRT上走的,所以记录一下我的设置,也算给大家分享下了。

首先是iKuai处的。这里肯定要设定成NAT1

图片[8]-PVE 8.1.4 安装及优化记录-西西のBlog

然后SNMP要加一下(ikuai里面叫跨三层应用)

图片[9]-PVE 8.1.4 安装及优化记录-西西のBlog

除了IP和IP段要改,其他的不变就好了。我用的骷髅头的固件似乎是自带的,如果没有自带,就去软件包里搜索 snmp 就会有套件了

OpenWRT上,需要关闭turboacc,而且因为ikuai上开启了bbr,其实不需要操作啥,就装个小猫咪就够了。

图片[10]-PVE 8.1.4 安装及优化记录-西西のBlog

之前也有去评论区问大佬,这个Shortcut-FE可不可以开,回复是可以,但是其他的全锥形NAT和其他的都不要开,然后修改一下防火墙

图片[11]-PVE 8.1.4 安装及优化记录-西西のBlog

按照图内设置即可。NAT和动态伪装和MSS需要全关

小猫咪还需要勾上绕过中国流量。这样就可以在ikuai上显示具体的机器的流量速度和其他的了,国外的流量就会在OpenWRT的IP上显示了。

结语

拖了好久,总算是写出来了,也把家里的虚拟化架构换了一下,确实舒服了不少,不知道是不是精神洁癖,这个文章还是在网吧写的,15R/h的单人间(小城市网吧真贵)

部分内容来自于:

July’s Blog PVE8.X N卡虚拟化VGPU–基于1050Ti https://yangwenqing.com/archives/1766/
– [虚拟机相关] (2023.12.13)SHELL脚本:一键给PVE增加温度,cpu功耗频率,硬盘等信息 https://www.right.com.cn/FORUM/forum.php?mod=viewthread&tid=6754687
– 拥抱更强大的网络能力:PVE成功安装OpenWrt https://www.ryanchan.top/archives/openwrt-installation-on-pve
– PVE的优化过程 https://bricawa.com/posts/56512/#PVE%E6%8A%8Alocal-lvm%E5%90%88%E5%B9%B6%E5%88%B0local

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容