AIO:0. PVE

本系列为我的 J4125 搭建 ALL IN BOOM 的摸索笔记。

自用备份,不是什么详尽的教程。

更换企业源

付费订阅才能使用企业源,否则需要更换非订阅源才能正常更新 PVE。

PVE -> 更新 -> 存储库
禁用 https://enterprise.proxmox.com/debian/pve
添加 No-Subscription

关闭 KSM

在内存冗余的情况下,关闭 KSM (内存去重)以节省 CPU 开销。

systemctl disable ksmtuned
systemctl stop ksmtuned

删除 local-lvm 并把空间合并至 local

PVE 系统盘是傲腾,所以磁盘性能根本不在考虑范围,为了方便管理索性直接合二为一。

数据中心 -> 存储 -> local-lvm:删除;
数据中心 -> 存储 -> local -> 编辑 -> 内容:勾选所有内容;
lvremove /dev/pve/data
lvextend -rl +100%FREE /dev/pve/root

开启 PCI 直通

对于使用 GRUB 引导的系统(安装磁盘格式使用 ext4)

  • 修改 grub
vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
  • 添加内核模块
vi /etc/modules
vfio
 vfio_iommu_type1
 vfio_pci
 vfio_virqfd
update-grub
update-initramfs -u -k all
  • 重启

对于使用systemd-boot引导的系统(安装磁盘格式使用 ZFS)

  • 修改kernel commandline
vi /etc/kernel/cmdline
root=ZFS=rpool/ROOT/pve-1 boot=zfs intel_iommu=on​
/etc/kernel/postinst.d/zz-proxmox-boot
update-initramfs -u -k all
  • 重启

给垃圾 RTL 8125B 网卡更换官方驱动

默认的驱动是r8169,有断流情况。

建议使用此仓库中的驱动,该驱动启用了TX多队列及RSS并禁用ASPM。

确保 PVE 的软件源没问题。

apt update && apt upgrade   # 更新 PVE
reboot   # 重启以进入最新内核

安装内核头

headers=$(dpkg -l | awk '/^ii.+kernel-[0-9]+\.[0-9]+\.[0-9]/{gsub(/-signed/, ""); gsub(/kernel/, "headers"); print $2}' | tr "\n" " ")
eval apt install -y $headers

之后把仓库中的软件包安装上去,安装过程略。

可通过ethtool -i enp3s0查看当前驱动,其中enp3s0为网口。

应该还是r8169,这样的话还需要屏蔽r8169,更新引导。

echo 'blacklist r8169' >> /etc/modprobe.d/blacklist-r8169.conf
update-grub   # 非 GRUB 启动参考上面操作即可
update-initramfs -u -k all
reboot

重启后可再次通过ethtool -i enp3s0确认驱动;

及通过cat /proc/interrupts | grep -P 'enp3s0|CPU0'查看中断数。

此时可在虚拟机的VirtIO网卡中设置Multiqueue了。

在虚拟机中可使用ethtool -l eth0来验证开启网卡多队列。

创建虚拟机

全虚拟化是很吃性能的,尽量使用 Virtio(半虚拟化)。

Windows 需要安装驱动,下载地址

各 SCSI 控制器:VirtIO SCSI single
系统 -> 机型:q35
磁盘 -> 格式:raw,缓存:Write back(不安全)
CPU -> 类别:host / Host,启用NUMA

对于磁盘格式,raw固然是性能最好的,但qcow2也不错,性能不比raw差多少,而且支持快照等功能。

对于磁盘缓存,Write through优化了读取性能,Write back优化了读写两者。

建议:Windows/OS X 使用raw+Write back;Linux等系统使用qcow2+Write through

给虚拟机开启 virtio-gl

virtio-gl,通常称为 VirGL,是一种用于虚拟机内部的虚拟 3D GPU,可以将工作负载卸载到主机 GPU,而无需特定的驱动程序,也不会完全绑定主机 GPU,从而允许在多个客户机和或主机之间重用。

需要给 PVE 宿主机安装额外的软件包。

apt install libgl1 libegl1

然后在虚拟机的硬件 -> 显示选择VirGL GPU

允许外部 VNC 访问虚拟机画面

允许外部的 VNC Viewer 远程连接 VM ID 为 100 的虚拟机,IP 为 PVE 物理机所在 IP,端口为5901。

qm set 101 -args "-vnc :1"

RDM 裸磁盘映射

不能直通控制器的情况下使用 RDM 裸磁盘映射,缺点是虚拟机内查看不了硬盘的 smart 信息。

查看需要映射的磁盘的 ID。

ls -la /dev/disk/by-id/|grep -v dm|grep -v lvm|grep -v part

输出例如:

drwxr-xr-x 2 root root 300 Aug 10 23:03 .
drwxr-xr-x 7 root root 140 Aug 10 23:03 ..
lrwxrwxrwx 1 root root  13 Aug 10 23:02 nvme-eui.5cd2e4bf63af0100 -> ../../nvme0n1
lrwxrwxrwx 1 root root  13 Aug 10 23:02 nvme-INTEL_SSDPEK1A118GA_BTOC14120WMP118B -> ../../nvme0n1

修改此命令:

qm set <vmid> --scsiX /dev/disk/by-id/xxxxxxx

例如:

qm set <vmid> --scsi2 /dev/disk/by-id/nvme-eui.5cd2e4bf63af0100

备份/还原虚拟机

直接在对应虚拟机的备份页面中进行备份,备份文件在/var/lib/vz/dump/,还原时在此处导入文件即可。

参考

Proxmox VEで無償版リポジトリを設定する ProxmoxVE 合并local和local-lvm分区 PVE开启硬件直通功能 Enabling IOMMU on PVE6 (zfs) compared to PVE5.4 (ext4)? PVE 8 安装 ReakTEK RTL8125B 2.5G网卡驱动 Proxmox VE开启网卡多队列 Display Proxmox VE与VNC Proxmox VE pve硬盘直通