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