1、PVE8.2安装与基础优化 - mugencomic/PVE_NAS GitHub Wiki

安装PVE本身比较简单,8.2镜像为例,使用refus写盘制作U盘后一键即可完成。

此时在主板上开启vt-d,Above 4G Decoding,关闭CSM。内存由于没法验证稳定性,超频最好保守点。 另外的可以开启ASPM,算是一种节能选项,未测试过有没有效果。

要注意如果你使用了较老旧的主板,留意下主板纽扣电池可能已经没电。众所周知旧主板使用易失型储存BIOS,电池没电会使得主板时钟错误。这会导致PVE内即便校准了时间,Linux可能还会从BIOS读取时间导致时间错误。时间错误带来一系列问题就是获取软件源时证书过期而失败、以及频繁掉登录。这个问题一度卡住我半天来排查,因此建议老旧主板换一颗主板电池(主要纽扣电池也很便宜,和汽车钥匙通用)。 假设你遇到了时间校准问题,参考 此处

设置硬件时钟 通用的设置格式:hwclock/clock –set –date=“月/日/年 时:分:秒”

hwclock –set –date=”09/17/2003 13:26:00”

#硬件时钟与系统时钟同步

hwclock –hctosys

同时我建议 在装系统前,插好所有的PCIE设备。 否则后续增加PCIE设备时,因PCIE设备顺序问题,会导致原先虚拟网卡绑定的网口错位,获取不到IP,进而无法进入管理口等严重问题。 此外,由于准备SATA控制器是直通给NAS虚拟机用的,因此在PVE挂载、存放数据到SATA硬盘中都会导致NAS开机后出问题, 避免在PVE操作挂载任何一块SATA硬盘。 记录 参考资料

以下三步基础优化可以在Pve_Source工具一键完成,Pve_Source的下载使用参考 pve_source 的帮助,使用这个语句可以免去注册回复的麻烦

#一键安装

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

打开pve_source后按提示选择对应下方几项优化项目执行即可,当发现没效果、出错时,再在下面找对应语句替代执行,原理一样。

第一步修改DNS以及换源

在图形界面中无法设置我主路由AdguardHome的DNS服务,DNS设为主路由的话会上不了网,因此直接填上运营商和8.8.4.4。 根据提示更换软件源和订阅即可,我这里只有阿里云好用。很多教程会使用中科大和清华源,此二者均需要GPG密钥否则会失败。若有需要可以自行查找 用pve_source更新源简单快捷,实在没用就用以下方法替换源 参考 这里的语句

如果对Linux文本编辑不熟,使用winSCP之类的软件直接对文档进行windows式的编辑效率会高很多。留意bookworm是PVE8的底层系统Debian12的代号,其他教程这个代号不同的话则无法使用。

cat>/etc/apt/sources.list <<EOF 

deb https://mirrors.aliyun.com/debian/ bookworm main non-free non-free-firmware contrib

deb-src https://mirrors.aliyun.com/debian/ bookworm main non-free non-free-firmware contrib

deb https://mirrors.aliyun.com/debian-security/ bookworm-security main

deb-src https://mirrors.aliyun.com/debian-security/ bookworm-security main

deb https://mirrors.aliyun.com/debian/ bookworm-updates main non-free non-free-firmware contrib

deb-src https://mirrors.aliyun.com/debian/ bookworm-updates main non-free non-free-firmware contrib

deb https://mirrors.aliyun.com/debian/ bookworm-backports main non-free non-free-firmware contrib

deb-src https://mirrors.aliyun.com/debian/ bookworm-backports main non-free non-free-firmware contrib 

EOF

#创建ceph源订阅列表

nano /etc/apt/sources.list.d/ceph.list

#编辑内容如下

deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-quincy/ bookworm no-subscription

#备份替换现有的ceph

cp /usr/share/perl5/PVE/CLI/pveceph.pm /usr/share/perl5/PVE/CLI/pveceph.pm_back sed -i ‘s|http://download.proxmox.com|https://mirrors.ustc.edu.cn/proxmox|g’ /usr/share/perl5/PVE/CLI/pveceph.pm

在pve_source工具中,还可以进行IPV6相关的修正,这对远程云游戏、远程访问媒体、BT等都有用,必须进行,按提示进行即可。

第二步合并local分区提高PVE主盘利用率

趁还没有开始下载镜像和建立任何虚拟机之前,参考 知乎这篇大教程的合并默认的分区 local 和 local-lvm 操作,因为默认这两个区是专门用来放不同的东西的(虚拟机资料、系统镜像、CT模板等),导致其中一个区经常空着,此操作旨在合并后允许放所有东西。

#查看逻辑分区

lvs

#删除不要的lvm分区

lvremove pve/data

#将剩余空间并入pve/root

lvextend -l +100%FREE -r pve/root

然后在图形界面上,数据中心-存储-删除local-lvm。然后调整local,允许存放所有类型的内容。

第三步开启IOMMU、加载虚拟化模块

这一步是显卡直通、网卡各种硬件直通的前置条件, 对于NAS系统,很重要的SATA控制器直通也需要此条件。 如果像本案例的双显卡,则开启IOMMU时需要留意IOMMU分组的问题,否则直通硬件时,虚拟机将同一分组的PCIE设备一并占用导致各种问题 以下 GRUB_CMDLINE_LINUX_DEFAULT 参数中, pcie_acs_override=downstream 可以重新分组(基本上一个设备一组),使用 dmesg | grep iommu 命令查询iommu分组状态(开启iommu之后才能看到),假如输出的分组列表里,看到你想直通给不同虚拟机的硬件没有处在同一组,说明不需要 pcie_acs_override=downstream

在过去的一些版本,需要重编译PVE内核才能实现重新分组,现版本只需加上这个参数即可。

#用winSCP打开/etc/default/grub找到这一行

GRUB_CMDLINE_LINUX_DEFAULT=”quiet”

#intel cpu 改为:

GRUB_CMDLINE_LINUX_DEFAULT=”quiet intel_iommu=on iommu=pt initcall_blacklist=sysfb_init pcie_acs_override=downstream”

#amd cpu改为:

GRUB_CMDLINE_LINUX_DEFAULT=”quiet amd_iommu=on iommu=pt”

#更新grub

proxmox-boot-tool refresh

一些教程用 video=vesafb:off video=efifb:off 这个参数禁止PVE载入显卡,现在的版本内核则换成了 initcall_blacklist=sysfb_init ,参考 这里

#用winSCP打开/etc/modules,加入这几行,下次开机时会启动对应虚拟化模块

vfio

vfio_iommu_type1

vfio_pci

其他教程里会加的 vfio_virqfd 其实也已经不需要,PVE8不支持了

#更新内核

update-initramfs -u -k all

#重启

reboot

更新内核报错时在下一页有解决方法

重启完后,通过 dmesg | grep -e DMAR -e IOMMU 可以检查IOMMU是否开启,通过 dmesg | grep -i vfio 检查VFIO模块是否加载, 参考来源

另外使用 dmesg | grep 'remapping' 检查平台是否支持interrupt remmaping(中断映射),这个特性使两台用着不同直通设备以及CPU核心的虚拟机,他们的设备产生的中断可以隔离不影响彼此。 根据 官方文档 ,不支持此特性的话直通设备过去会出现报错

Failed to assign device “[device name]”: Operation not permitted

Interrupt Remapping hardware not found, passing devices to unprivileged domains is insecure.

按上面那个命令没有输出对应结果时,则按此方法解决

#用winSCP打开或新建/etc/modprobe.d/iommu_unsafe_interrupts.conf,加入

options vfio_iommu_type1 allow_unsafe_interrupts=1

⚠️ **GitHub.com Fallback** ⚠️