开源软件企业

pve优化手册

2024/3/12 17:21:59

1   删除Local-lvm存储空间并合并到local中

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

图形界面删除local-lvm
对local添加内容(全部勾选)


PVE修改为国内源并删除企业源(非强制)

PVE 7.X 换源(原文链接:国光的 PVE 生产环境配置优化记录)

# 注释企业源
echo "#deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise" > /etc/apt/sources.list.d/pve-enterprise.list

# PVE 软件源更换
wget https://mirrors.ustc.edu.cn/proxmox/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg

echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bullseye pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list

echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-pacific bullseye main" > /etc/apt/sources.list.d/ceph.list

sed -i.bak "s#http://download.proxmox.com/debian#https://mirrors.ustc.edu.cn/proxmox/debian#g" /usr/share/perl5/PVE/CLI/pveceph.pm

# Debian 系统源更换
sed -i.bak "s#ftp.debian.org/debian#mirrors.aliyun.com/debian#g" /etc/apt/sources.list
sed -i "s#security.debian.org#mirrors.aliyun.com/debian-security#g" /etc/apt/sources.list
echo "deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription" >> /etc/apt/sources.list
# 更新测试一下
apt update

# 全部更新一下
apt -y upgrade

2-2、CT模板换源(原文出处:佛西博客 - 修改PVE容器CT镜像源、Proxmox 源使用帮助 — USTC Mirror Help 文档)

#复制并更改源文件
cp /usr/share/perl5/PVE/APLInfo.pm /usr/share/perl5/PVE/APLInfo.pm_back
sed -i 's|http://download.proxmox.com|https://mirrors.ustc.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm
针对 /usr/share/perl5/PVE/APLInfo.pm 文件的修改,执行systemctl restart pvedaemon 以生效

3、删除订阅弹窗

# 修改 JS 源码
sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js

# 重启 PVE 服务
systemctl restart pveproxy.service

Proxmox VE 7 备份恢复虚拟机

备份虚拟机

登录pve选择要备份的虚拟机

点击子菜单中的备份按钮

点击立即备份按钮 设置备份到的存储(local的备份默认路径为:/var/lib/vz/dump)

设置模式:停止

设置压缩:无

等待备份完毕

恢复虚拟机

登录pve节点

切换至相应的上传存储(local的备份默认路径为:/var/lib/vz/dump)

点击恢复按钮

点击子菜单中的内容菜单

选择刚上传的vma备份文件



Proxmox VE(PVE)添加硬盘做存储

PVE安装后会默认将系统盘分出local和local-lvm,但有时还需要别的硬盘作为虚拟主机的数据盘,所以就需要添加硬盘进行扩充。

一、硬盘分区、格式化

首先需要先先看下需添加硬盘的设备名称,如下图的/dev/sde(当然也可以在命令里用fdisk -l去确认)

确定好名称后打开Shell,输入

fdisk /dev/sde

这里的操作就跟Linux没什么区别了,分区格式化

先分区:输入n(分区) - 输入p(主分区) - 输入w(写入分区)

格式化(格式化为ext4格式):

mkfs -t ext4 /dev/sde1

创建/mnt/sde1目录:

mkdir -p /mnt/sde1

将/dev/sde1分区挂载在/mnt/sde1上:

mount -t ext4 /dev/sde1 /mnt/sde1

将/mnt/sde1挂载写入到系统启动项:

echo /dev/sde1 /mnt/sde1 ext4 defaults 1 2 >> /etc/fstab

 

二、PVE挂载硬盘

选择“数据中心”(这块一定要注意,不是选择PVE),存储 - 添加 - 目录

ID可以随便填,目录就是刚才创建好的/mnt/sde1,内容全选,其它默认,点击添加;

这样,/dev/sde这块硬盘就添加完毕了,稍等几秒钟就可以在节点里看到硬盘


在虚拟环境中创建虚拟机,其实就是设置虚拟机的各项硬件规格参数。这个过程其实挺通俗易懂的,不过在PVE里创建虚拟机,有些细节选项并不是浅显易懂,还是有必要注意一下的。

在PVE右上角点“创建虚拟机”,就可以开始创建虚拟机过程。


“系统”界面中:
机型,选项有“i440fx”和“q35”两个。这俩名称都是英特尔的芯片组型号,440fx是非常古老的型号了,支持PCI总线,q35是相对新的型号,支持PCIE总线。现在新建虚拟机,这里没啥特别情况的话一般都选q35就可以。某些特殊的虚拟机系统可能会对这个选项有要求,按要求选就行。
BIOS,选项有“SeaBIOS”和“OVMF(UEFI)”两个。SeaBIOS对应传统型BIOS,OVMF(UEFI)不用我说了吧。这两个选项也是不同的虚拟机系统有相应的要求。如果选择OVMF(UEFI),还需要指定一个EFI磁盘。
SCSI控制器:这里如无意外的话,选择默认的VirtIO SCSI就行,这是PVE官方推荐的。
Qemu代理:先说什么是Qemu,Qemu是一套虚拟化管理软件,你可以理解为,PVE就是使用了Qemu的技术,所以PVE里面的虚拟机就是Qemu虚拟机。再说Qemu代理,在虚拟机里面安装一个软件,Qemu-guest-agent,简称QGA,类似于VMware的VMTools,然后虚拟机打开这个代理选项,PVE就可以跟虚拟机进行通信,比如发出关机指令之类的。这个选项和QGA都不是必须的。如果没有开启Qemu代理,当你在PVE里点某个虚拟机关机(正常关机,不是强制拔电源的那种),PVE会通过ACPI层面发出关机指令,但如果虚拟机没有加载正确的ACPI驱动的话,就无法正确响应关机指令,关机就会失败。所以这个选项请根据实际情况选择。至于QGA,Linux系统使用APT或YUM命令安装,Windows系统去这个地址下载:https://pve.proxmox.com/wiki/Windows_VirtIO_Drivers,下载下来是ISO格式,里面不光有QGA,还有VirtIO驱动。
TPM:不用解释了吧,安装win11虚拟机就选上它。开启后还需要指定一个TPM磁盘。


“CPU”界面中:
插槽和核心:这两个词就是字面意思。两个数的乘积就是分给这个虚拟机的CPU核心总数。家用电脑基本上都是只有一个CPU,这里插槽选1就可以了。其实这里选择1*2和2*1对虚拟机性能来说没啥区别,主要是有些软件的授权可能会根据CPU插槽数量来定,那就有影响了。注意,你可以为整个PVE上所有的虚拟机分配总量超量的CPU核心数(比如在4核CPU的机器上同时开启2个4核的虚拟机),但不可以为单个虚拟机分配超量的CPU核心数。
类别:这里的选项不少,都是各种不同的CPU架构和型号。这些架构和型号都是QEMU模拟的,这个选项的意义在于迁移虚拟机的兼容性,家用NAS基本上涉及不到。我的建议,这里选择最下面的HOST选项,这样就使用你的实际CPU架构。
NUMA:这个技术,简单来讲,就是为每一个物理CPU分配一个内存池,而不是所有CPU共用一个内存池。这个对家用电脑单CPU来讲也是没啥意义的,不用选。


“内存”界面中:
Ballooning设备:Ballooning的意思是膨胀,这个选项的意思,简单来说就是让PVE动态地调整虚拟机运行时使用的内存大小,需要内存小的时候就收缩该虚拟机的内存占用,反之就扩大,甚至可以超量。不过这个技术需要虚拟机安装Ballooning驱动,不然也不起作用。Linux很早就默认自带Ballooning驱动了。Windows需要额外安装驱动,并且可能会降低性能,PVE官方建议Win虚拟机关闭这个选项。


“网络”界面中:
模型:这里有四个选项,PVE中,通常建议不要理会下面两个,从上面两个中选。E1000是英特尔的千兆网卡型号,有很好的兼容性,大多数系统都自带驱动,适合大多数情况。VirtIO是半虚拟化,虽然也是虚拟出来的硬件,但可以获得接近实际硬件的性能,但是需要虚拟机加载相应驱动。如果你的网卡大于千兆,那么选择E1000就亏大了,应该选择VirtIO网卡。

创建完成后,在虚拟机硬件栏目中可以修改虚拟机的硬件配置,添加PCI设备、USB设备也需要在这里添加。


比如在我的机器上,设置好直通后,这些PCI设备,诸如核显、网卡、SATA控制器就都可以添加了。注意第二列的IOMMU分组,同一个编号的设备不能分给不同的虚拟机,不然不能同时启动。如果你的多口网卡都在同一个组,那么你要检查下直通配置了。


在虚拟机的选项栏目中,有些项目需要根据实际情况设置下。
开机自启动和启动/关机顺序:可以设置虚拟机跟随PVE自动启动和关机,适合配置自动任务。其中,顺序的数值表示开机顺序,数值1表示PVE启动后第一个被启动,关机则相反,最后一个关机。启动延时指的是当前虚拟机开机后到下一个虚拟机开机的时间间隔,单位是秒。关机超时是超过这个时间未完成关机,PVE会强制关机。
引导顺序:这个不用讲了,记得设置一下。
QEMU Guest Agent:这里跟创建虚拟机时系统界面中选项是一致的,那里没选的话这个地方可以更改。






Proxmox Virtual Environment(PVE)研究小计

安装注意事项

选择安装硬盘时,点击option更改为xfs格式和swap分区(根据内存实际情况来,默认值等于内存)

修改软件源

修改基础系统(Debian)的源

cp /etc/apt/sources.list /etc/apt/sources.list.bak
sed -i 's|^deb http://ftp.debian.org|deb https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list
sed -i 's|^deb http://security.debian.org|deb https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list

修改Proxmox 的源

mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak
CODENAME=`cat /etc/os-release |grep PRETTY_NAME |cut -f 2 -d "(" |cut -f 1 -d ")"`
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian $CODENAME pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list

更新索引生效

apt update && apt dist-upgrade -y

修改swap分区使用参数

1.编辑文件

vi /etc/sysctl.conf

2.添加swap分区参数,设置内存剩余多少时使用swap分区,数字越小代表多使用物理内存

vm.swappiness = 1

3.配置生效

sysctl -p

安装网卡驱动

因为pve会默认使用r8169驱动使用很多网卡,导致网络性能不能满载,需要安装对应型号的网卡。

r8101/r8168安装

(1)安装软件

apt-get install sudo
apt-get install git
apt install -y pve-headers-$(uname -r)

(2)clone驱动文件到本地

git clone https://github.com/ghostrider-reborn/realtek-r8101-linux-driver

r8168驱动:github.com/mtorromeo/r8

(3)打开驱动文件夹

cd realtek-r8101-linux-driver

(4)移除r8169驱动

此步骤建议在物理机操作,操作完毕会导致物理机网络异常,无法远程管理

sudo modprobe -r r8169

(5)屏蔽r8169驱动

sudo sh -c 'echo blacklist r8169 >> /etc/modprobe.d/blacklist_r8169.conf'

(6)安装r8101驱动

chmod +x autorun.sh
sudo ./autorun.sh

(7)验证r8101驱动

lsmod | grep r8101

如果有输出,驱动加载就成功了;没有输出,手动加载模块尝试

sudo modprobe r8101

如果没有网络,重启物理机

r8125安装

(1)安装软件

确定使用的驱动是不是8169

lspci -k

(2)更新内核、安装依赖

apt update
apt upgrade
apt install -y dkms pve-headers #pve 8.0.4+建议将pve-headers替换为proxmox-default-headers

(2)下载安装包

https://github.com/devome/realtek-r8125-dkms
上传到root文件夹

(3)安装deb驱动

sudo dpkg -i realtek-r8125-dkms_9.009.00-1_amd64.deb

如果有多个内核,为旧内核也安装驱动,如果不会再从旧内核启动,忽略这步也可以

headers=$(dpkg -l | grep -P "^ii.+kernel-(\d\.){2}\d+\S+" | awk '{print $2}' | sed 's|kernel|headers|' | perl -pe 's|\n| |')
eval apt install -y $headers
dpkg -l | grep -P "^ii.+kernel-(\d\.){2}\d+\S+" | awk '{print $2}' | perl -pe 's|\D+(\d+\.\d+\.\d+\S+)$|\1|'  # 列出全部内核版本kernel_version
dkms install realtek-r8125/<driver_version> -k <kernel_version> # 指定驱动版本(在deb文件名中有体现)和内核版本(从上一句命令的输出中依次选择),zsh按tab可自动补全,比如:dkms install realtek-r8125/9.011.01 -k 6.2.16-5-pve
eval apt-mark auto $headers
apt autopurge

(4)屏蔽r8169驱动

echo "blacklist r8169" >> /etc/modprobe.d/dkms.conf

(5)更新并重启

update-grub
update-initramfs -u -k all
reboot

(5)验证r8125驱动

重启物理机

lsmod | grep r8125
lspci -k

如果有输出,驱动加载就成功了

local和local-lvm合并

(1)编辑local,勾选所有内容,并确认

(2)删除lvm容量

lvremove /dev/pve/data

(3)扩充至local

lvextend -rl +100%FREE /dev/pve/root

(4)pve后台删除local-lvm目录

新增pve存储硬盘

(1)pve后台-磁盘,擦除磁盘原本内容,确定设备名,类似/dev/sda

(2)硬盘分区

进入fdisk

fdisk /dev/sda

n创建分区,后面选项直接回车就行

w写入分区

(3)分区格式化

mkfs -t ext4 /dev/sda1

ext4:分区格式类型,可以选择性能更好的xfs

(4)新增挂载路径

mkdir -p /mnt/sda1

该路径就是以后的硬盘路径

(5)挂载硬盘并且添加启动项

将/dev/sda1分区挂载在/mnt/sda1上

mount -t ext4 /dev/sda1 /mnt/sda1

将/mnt/sda1挂载写入到系统启动项

echo /dev/sda1 /mnt/sda1 ext4 defaults 12>> /etc/fstab

ext4:分区格式类型,如果格式化选择了xfs,就填xfs

(6)新增目录

重启pve,新增目录,填写ID和目录,内容全选

ID:存储目录名称,pve命令会用到

目录:上面的挂载路径/mnt/sda1

以下3个操作可以做完一起重启

修改CT模板源

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

重启生效

降级内核(显卡直通需要)(新版本pve不需要-废弃)

apt install pve-headers-5.11.22-7-pve
apt install pve-kernel-5.11.22-7-pve
proxmox-boot-tool kernel pin 5.11.22-7-pve
proxmox-boot-tool refresh

重启生效

降级QEMU为 6.1.1(NVME需要)

apt install pve-qemu-kvm=6.1.1-2

重启生效

直通

(1)修改/etc/default/grub 文件

核显/独显/网卡直通(cpu:intel)

GVT-g功能额外参数i915.enable_gvt=1

将 GRUB_CMDLINE_LINUX_DEFAULT="quiet" 修改为:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_gvt=1"

核显/独显/网卡直通(cpu:amd)

将 GRUB_CMDLINE_LINUX_DEFAULT="quiet" 修改为:

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"

(2)/etc/modules 文件

在文末空白行添加:

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

GVT-g功能额外参数

kvmgt

(3)防止虚拟机崩溃影响宿主机

echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf
echo "options kvm ignore_msrs=1 report_ignored_msrs=0" > /etc/modprobe.d/kvm.conf

(4)屏蔽显卡驱动(显卡直通需要)

echo "blacklist radeon" >> /etc/modprobe.d/pve-blacklist.conf
echo "blacklist nouveau" >> /etc/modprobe.d/pve-blacklist.conf
echo "blacklist nvidia" >> /etc/modprobe.d/pve-blacklist.conf

(5)为显卡含子设备的 id 开启 VFIO(显卡直通需要)

在 shell 查找当前独显的 id

lspci -nn | grep NVIDIA
lspci -nn | grep AMD

注意改成自己的。另外显卡内置声卡的 id也要一并写入,这是为了通过 HDMI 或 DP 输出声音。部分显卡可能还有 USB 控制器,也一并写入,能为虚拟机直通专用高速 USB 接口。

echo "options vfio-pci ids=1002:6fdf,1002:aaf0" > /etc/modprobe.d/vfio.conf

(6) 更新 grub 和 initramfs 并重启:

update-grub
update-initramfs -u -k all

注意:重启后,如果配置了显卡直通的参数,因为独显被 VFIO 抓走了,显示器画面会停住,这是正常现象。

安装虚拟机

WINDOWS(直通显卡)

(1) 首先,我们先上传系统安装盘和 virtio 驱动盘到 PVE 的存储。

推荐直接使用 WINSCP 连接并切换到 /var/lib/pve/local-btrfs/template/iso/ 文件夹,然后将镜像文件拖进去,传输速率可达 40~50M/s ,远快于 PVE 网页上传的 20M/s 。

(2) 接下来,先不管独显或核显,使用 PVE 默认配置创建虚拟机。

虚拟机配置:

系统:i440fx+seabios或者Q35+OVMF(直通推荐)

OVMF需要添加EFI盘,win11添加TPM

磁盘:总线设备:

scsi,性能较好,安装windows时需要加载驱动,否则读取不到磁盘

sata,windows无需额外驱动

缓存选择(推荐以下三种):

默认或无缓存,性能取决于虚拟磁盘所在磁盘

Write through,若pve安装盘为固态,读取时使用安装盘缓存加速

Write through(不安全),若pve安装盘为固态,读取和写入时使用安装盘缓存加速

CPU:类别选择host

内存:高级选项可选Ballooning设置,设置最小内存,默认锁定最小内存给虚拟机使用(直通推荐)

网络:Virtio,如果桥接的物理网卡性能较好,推荐使用,安装时需要加载额外驱动

Vmxnet3,如果桥接的物理网卡性能较差或者无桥接的物理网卡,推荐使用

假设虚拟机 vmid 为 100 ,通过 WINSCP 编辑 /etc/pve/qemu-server/100.conf 文件,增加一行args;同时修改cpu行。(废弃,不再需要)

cpu: host,hidden=1,flags=+pcid
args: -cpu 'host,+kvm_pv_unhalt,+kvm_pv_eoi,hv_vendor_id=intel,kvm=off'

args: 一行是用来隐藏虚拟机环境,因为原神等游戏禁止在虚拟机启动[12]。如果是 N 卡,此处 hv_vendor_id=intel 可改成 hv_vendor_id=NV43FIX,如果是 AMD的cpu,hv_vendor_id=amd,作为解决错误代码 43 问题的其中一个步骤 ;如果不行,pci设备高级选项勾选pcie选项。(废弃,不再需要)

解决错误代码 43:修改/etc/default/grub ,GRUB_CMDLINE_LINUX_DEFAULT参数增加initcall_blacklist=sysfb_init,用于屏蔽pve内核自动启动的默认显示输出设备simplefb。

(3) 启动虚拟机,安装系统。

选择scsi磁盘和Virtio网络时,使用官方iso安装,在选择安装盘时,选择自定义,看不到虚拟磁盘,选择加载驱动。

建议先手动选择virtio 驱动盘中的包含NET的文件夹安装网络驱动,再选择包含scsi的文件夹,安装磁盘驱动。

选择完毕后则可以看到磁盘正常安装。

提示:如果想将之前的系统移植到 PVE ,推荐先将系统盘备份为 wim 或者 pmf ,然后在 PVE 的虚拟机启动 WinPE ,再将系统盘还原,并修复引导。

(4) 重启进入系统后,先挂载 virtio 安装驱动,然后即可关机等待配置显卡。

打开设备管理器,如果发现有其他设备,选择virtio 驱动盘安装完毕驱动。

打开远程桌面或安装远程软件

提示:如果是移植过来的系统,建议先卸载原来安装的驱动,以避免意想不到的问题。显卡驱动卸载推荐使用 Display Driver Uninstaller,这是目前最彻底的卸载工具。

配置独显直通

1.添加独显 PCI-E 设备,注意勾上所有功能和主GPU,虚拟机显示改为无—— 这么做是为了将显卡内置的声卡也一并分配到虚拟机。可以将鼠标键盘等 USB 设备分配给该虚拟机,显示器点亮后,可以提供键鼠操作虚拟机。

配置完成并开启虚拟机时,原本停住的显示器画面会突然黑屏,这也是正常现象。

2.因为 VNC 无法使用,远程进入系统装独显驱动,外接的显示器会随之点亮。

配置核显 vGPU

1.添加核显PCI-E设备,不勾选所有功能和主GPU,虚拟机显示改为无,启动虚拟机。

2.远程进入系统装核显驱动。

3.打开命令提示符,输入 gpedit.msc 开启组策略,在左侧依次进入【计算机配置】——【管理模板】——【Windows组件】——【远程桌面服务】——【远程桌面会话主机】——【连接】——【选择 RDP 传输协议】,改为已启用

4.返回上级菜单,进入【远程会话环境】,将包含RemoteFX、H.264、图形的选项全部改为已启用。

5.继续打开【RemoteFX for Windows Server 2008 R2】,全部改为已启用,其中【使用 RemoteFX 时优化视觉体验】,可以选择最高。

6.全部配置完成后,在命令提示符输入 gpupdate /force 以刷新组策略

7.其他设备通过远程桌面连接这台虚拟机时,将体验设置为 LAN。

LINUX

(1) 首先,我们先上传系统安装盘到 PVE 的存储。

推荐直接使用 WINSCP 连接并切换到 /var/lib/pve/local-btrfs/template/iso/ 文件夹,然后将镜像文件拖进去,传输速率可达 40~50M/s ,远快于 PVE 网页上传的 20M/s 。

(2) 接下来,使用 PVE 默认配置创建虚拟机。

虚拟机配置:

系统:Q35+seabios

磁盘:总线设备:

scsi,性能较好,不确定是否需要额外驱动,自行尝试

sata,无需额外驱动

缓存选择(推荐以下三种):

默认或无缓存,性能取决于虚拟磁盘所在磁盘

Write through,若pve安装盘为固态,读取时使用安装盘缓存加速

Write through(不安全),若pve安装盘为固态,读取和写入时使用安装盘缓存加速

CPU:类别选择host

内存:高级选项可选Ballooning设置,设置最小内存,默认锁定最小内存给虚拟机使用(直通推荐)

网络:Virtio,如果桥接的物理网卡性能较好,推荐使用,不确定是否需要额外驱动,自行尝试

Vmxnet3,如果桥接的物理网卡性能较差或者无桥接的物理网卡,推荐使用

(3) 启动虚拟机,安装系统。

群晖(dsm6或7)

(1) 下载引导文件。

github.com/fbelavenuto/

下载最新的img引导文件

(2) 接下来,使用 PVE 默认配置创建虚拟机。

虚拟机配置:

系统:Q35+seabios

磁盘:总线设备:

sata,群晖无需额外驱动

缓存选择(推荐以下三种):

默认或无缓存,性能取决于虚拟磁盘所在磁盘

Write through,若pve安装盘为固态,读取时使用安装盘缓存加速

Write through(不安全),若pve安装盘为固态,读取和写入时使用安装盘缓存加速

CPU:类别选择host

内存:高级选项可选Ballooning设置,设置最小内存,默认锁定最小内存给虚拟机使用(直通推荐)

网络:Virtio,如果桥接的物理网卡性能较好,推荐使用,引导盘需要加载额外驱动

Vmxnet3,如果桥接的物理网卡性能较差或者无桥接的物理网卡,推荐使用

(3)上传img文件到PVE 的存储。

推荐直接使用 WINSCP 连接,假设上传到root文件夹。

转换img文件为qcow2并挂载

qm importdisk 101 /root/arpl.img local -format qcow2

/root/arpl.img:img文件在pve存储的路径

101:虚拟机ID

local:转换文件保存的pve存储位置

执行完毕后,虚拟机硬件出现未分配的硬盘,编辑挂载为sata,并且设置虚拟机选项中的引导项为该磁盘。

(4)直通硬盘。

安装软件

apt-get update
apt-get install lshw

查看硬盘id

ls -l /dev/disk/by-id/

挂载硬盘到虚拟机

qm set 101 --sata4 /dev/disk/by-id/ata-WDC_WD40PURX-78AKYY0_WD-WX32DA1LTP3S

101:虚拟机ID

sata4:挂载磁盘为sata,序号为1

ata-WDC_WD40PURX-78AKYY0_WD-WX32DA1LTP3S:硬盘id

(5) 启动虚拟机,编译引导。

1.如果你的路由器已经开启DHCP的话,此时系统会自动去获取IP地址,请耐心等待。

2.当编译系统最下面一行显示有“root@”开头的时候,就表示已经启动好了,需要找出编译系统的IP地址。

3.浏览器打开对应的IP地址(端口号不能漏掉),进入编译页面

4.在第一行“Choose a model”回车,选择对应的机型回车。

5.在“Choose a Build Number”处回车,选择对应编译的dsm版本回车。

6.在“Choose a serial number”处回车,指定序列号选择“Enter a serial number”回车后输入你想要使用的序列号;不指定选择“Generate a random serial number”,最后回车。

7.(加载10代intel核显)在“Addons”处回车,在“Add an addon”处回车,在“i915 Intel iGPU Drivers(10th Gen)”处回车,不输入内容回车,在“Exit”处回车返回上级菜单。

8.在“Modules”处回车,在“Choose modules to include”处回车,找到r8169网卡,去除选择后点击ok,在“Exit”处回车返回上级菜单。

9.在“Build the loader”处回车,开始编译。编译过程中,界面上会有进度条在跑进度,请耐心等待,等待的时间视你的网络环境而定(如果有科学出国的环境,请把此IP地址放到强制代理名单,可以加快编译速度)。

10. 引导编译完成后,系统会自动跳回原界面,并且会多出一行菜单“Boot the loder”,在这行菜单上回车。

11.在pve后台将虚拟机停止,重新启动,会自动引导群晖,显示的IP地址为群晖的IP,浏览器进入IP正常安装群晖。

爱快

(1) 首先,我们先上传系统安装盘到 PVE 的存储。

推荐直接使用 WINSCP 连接并切换到 /var/lib/pve/local-btrfs/template/iso/ 文件夹,然后将镜像文件拖进去,传输速率可达 40~50M/s ,远快于 PVE 网页上传的 20M/s 。

(2) 接下来,使用 PVE 默认配置创建虚拟机。

虚拟机配置:

系统:Q35+seabios

磁盘:总线设备:

scsi,性能较好

缓存选择(推荐以下三种):

默认或无缓存,性能取决于虚拟磁盘所在磁盘

Write through,若pve安装盘为固态,读取时使用安装盘缓存加速

Write through(不安全),若pve安装盘为固态,读取和写入时使用安装盘缓存加速

CPU:类别选择host

内存:高级选项可选Ballooning设置,设置最小内存,默认锁定最小内存给虚拟机使用(直通推荐)

网络:Virtio,如果桥接的物理网卡性能较好,推荐使用,需要确定爱快支持对应的物理网卡型号

Vmxnet3,如果桥接的物理网卡性能较差或者无桥接的物理网卡,推荐使用

(3) 网卡直通。

新增对应的PCI设备,不要选择所有功能。

(4) 启动虚拟机,安装系统。

1.根据拨号需要配置好对应的虚拟网卡或者直通网卡

2.pve网络新增一个linux bridge,不绑定物理网卡,新增一个vmxnet3网卡使用该桥接(pve下需要访问爱快网络的可以使用这个桥接)

2.系统安装完成后,VNC配置好管理IP,绑定一个LAN口网卡

3.浏览器进入后台,绑定WAN口和LAN口网卡、WAN口拨号设置、DHCP设置

4.需要走旁路由出国的设备,可以通过DHCP静态分配IP,网关指向旁路由的地址即可。

Openwrt旁路由

(1) 下载引导文件。

自行下载一个op的img文件

(2) 接下来,使用 PVE 默认配置创建虚拟机。

虚拟机配置:

系统:Q35+seabios

磁盘:总线设备:

sata

缓存选择(推荐以下三种):

默认或无缓存,性能取决于虚拟磁盘所在磁盘

Write through,若pve安装盘为固态,读取时使用安装盘缓存加速

Write through(不安全),若pve安装盘为固态,读取和写入时使用安装盘缓存加速

CPU:类别选择host

内存:高级选项可选Ballooning设置,设置最小内存,默认锁定最小内存给虚拟机使用(直通推荐)

网络:Vmxnet3,桥接选择和爱快一样,未绑定物理卡的那个

(3)上传img文件到PVE 的存储。

推荐直接使用 WINSCP 连接,假设上传到root文件夹。

转换img文件为qcow2并挂载

qm importdisk 101 /root/openwrt.img local -format qcow2

/root/arpl.img:img文件在pve存储的路径

101:虚拟机ID

local:转换文件保存的pve存储位置

执行完毕后,虚拟机硬件出现未分配的硬盘,编辑挂载为sata,并且设置虚拟机选项中的引导项为该磁盘。。

(4) 启动虚拟机,安装系统。

1.系统安装完成后,VNC配置好管理IP

vi etc/config/network

修改lan相关的参数,地址和爱快同网段,修改完保存重启。

2.浏览器进入后台

1.网络lan口设置网关为爱快地址,DNS为国内DNS,DHCP服务关闭。

2.配置出国相关插件,测试网络情况即可。

docker相关

LXC安装docker

优点:性能高

缺点:虚拟磁盘无法使用缓存功能,迁移困难

1.下载LXC模板(debain和unbuntu都可,推荐debain)

2.创建CT,去除无特权容器的勾选,创建完成后不要启动虚拟机

3./etc/pve/lxc文件夹下找到对应配置文件,编辑添加

lxc.apparmor.profile: unconfined
lxc.cgroup.devices.allow: a
lxc.cap.drop:

4.启动CT

5.修改debain源

cp /etc/apt/sources.list /etc/apt/sources.list.bak
sed -i 's|^deb http://ftp.debian.org|deb https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list
sed -i 's|^deb http://security.debian.org|deb https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list

6.更新索引、安装sudo命令

apt-get update
apt-get install sudo

7.安装基础工具

sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

8.安装docker的gpg key:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

9.安装docker源

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

10. 安装docker

apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

11.安装lxcfs添加内存映射,方便限制容器内存

apt install lxcfs -y

debain安装docker

优点:虚拟磁盘可以使用缓存功能,迁移简单

缺点:性能有略微损耗

1.创建debain虚拟机,并启动

2.在线安装修改debain源

cp /etc/apt/sources.list /etc/apt/sources.list.bak
sed -i 's|^deb http://ftp.debian.org|deb https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list
sed -i 's|^deb http://security.debian.org|deb https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list

3.离线安装修改源

编辑/etc/apt/sources.list文件,全部删除后添加以下参数,保存

deb Index of /debian/ bullseye main contrib non-free
deb-src Index of /debian/ bullseye main contrib non-free
deb Index of /debian/ bullseye-updates main contrib non-free
deb-src Index of /debian/ bullseye-updates main contrib non-free
deb Index of /debian/ bullseye-backports main contrib non-free
deb-src Index of /debian/ bullseye-backports main contrib non-free
deb Index of /debian-security/ bullseye-security main contrib non-free
deb-src Index of /debian-security/ bullseye-security main contrib non-free

或者163源

deb https://mirrors.163.com/debian/ bullseye main non-free contrib
deb-src https://mirrors.163.com/debian/ bullseye main non-free contrib
deb https://mirrors.163.com/debian-security/ bullseye-security main
deb-src https://mirrors.163.com/debian-security/ bullseye-security main
deb https://mirrors.163.com/debian/ bullseye-updates main non-free contrib
deb-src https://mirrors.163.com/debian/ bullseye-updates main non-free contrib
deb https://mirrors.163.com/debian/ bullseye-backports main non-free contrib
deb-src https://mirrors.163.com/debian/ bullseye-backports main non-free contrib

4.更新索引、安装sudo命令

apt-get update
apt-get install sudo

5.安装基础工具

sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

6.安装docker的gpg key:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

或者163源

curl -fsSL https://mirrors.163.com/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

7.安装docker源

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

或者163源

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.163.com/docker-ce/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

8. 安装docker

apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

9.安装lxcfs添加内存映射,方便限制容器内存

apt install lxcfs -y

docker容器获取局域网独立IP

1.创建docker网络(subnet为局域网网段,gateway为网关地址,parent为网卡名(使用ip addr命令查看),最后一行为名称,以上按照实际修改)

docker network create -d macvlan 
--subnet=192.168.1.0/24  
--gateway=192.168.1.1 
-o macvlan_mode=bridge 
-o parent=eth0 
macvlan

2.docker创建参数使用上一步创建的网络,指定ip,同时可以指定mac地址

--net=macvlan
 --ip=192.168.1.7
 --mac-address=03:44:e0:98:08:66

docker修改源

1.创建或修改 /etc/docker/daemon.json 文件,修改为如下形式(163源)

{
    "registry-mirrors": [
        "http://hub-mirror.c.163.com"
    ]
}

2.生效

sudo systemctl daemon-reload
sudo systemctl restart docker

一键安装portainer中文版

docker run -d --restart=always --name="portainer" -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock hub-mirror.c.163.com/6053537/portainer-ce


CPU调度模式调整、节能

安装软件

apt-get install cpufrequtils

查看支持模式,available cpufreq governors是支持的模式,The governor "performance" may decide which speed to use是目前使用的模式

cpufreq-info

如果模式很少,尝试修改启动项,增加参数intel_pstate=disable

vi /etc/default/grub

修改模式,performance是最好性能,schedutil和conservative是性能和能耗相对兼顾,schedutil性能响应更快速,powersave是最节能

vi /etc/init.d/cpufrequtils

找到如下

ENABLE="true"
GOVERNOR="performance"
MAX_SPEED="0"
MIN_SPEED="0"

将GOVERNOR改想要的模式,保存后重启服务,然后重新cpufreq-info确认一下,如果没修改成功,看一下是否有/etc/default/cpufrequtils文件,修改这个文件即可

systemctl daemon-reload
/etc/init.d/cpufrequtils restart

去除订阅弹窗,显示CPU频率和温度

安装软件

apt update
apt-get install lm-sensors

确认安装结果

sensors

有温度信息输出即可

备份:

cp /usr/share/perl5/PVE/API2/Nodes.pm /usr/share/perl5/PVE/API2/Nodes.pm.bak
cp /usr/share/pve-manager/js/pvemanagerlib.js /usr/share/pve-manager/js/pvemanagerlib.js.bak
cp /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js.bak

查看获取的硬件数据:

Sensors
cat /proc/cpuinfo | grep -i "cpu mhz"

新建脚本

vi pve.sh

(脚本内容标m[i]部分根据查看的硬件数据修改;温度部分m[i],i代表第几个温度值;频率部分,有多少个cpu频率值就有多少个m[i])

脚本内容:

#!/usr/bin/env bash
np="/usr/share/perl5/PVE/API2/Nodes.pm"
pvejs="/usr/share/pve-manager/js/pvemanagerlib.js"
plib="/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js"
 
therm='$res->{thermalstate} = `sensors`;';
cpure='$res->{cpure} = `cat /proc/cpuinfo | grep -i "cpu mhz"`;';
 
pvever=$(pveversion | awk -F"/" '{print $2}')
echo pve版本$pvever
 
echo 修改node.pm:
sed -i "/PVE::pvecfg::version_text()/a $cpure\n$therm" $np
sed -n "/PVE::pvecfg::version_text()/,+10p" $np
 
tmpf=tmpfile.temp
touch $tmpf
cat > $tmpf << 'EOF'
 {
 itemId: 'thermal',
 colspan: 2,
 printBar: false,
 title: gettext('温度'),
 textField: 'thermalstate',
 renderer:function(value){
 const m = value.match(/(?<=:[^\+]+\+)\d+/g)
 return `CPU: ${m[0]}(${m[1]} | ${m[2]} | ${m[3]} | ${m[4]})`;
  }
 },
{
	itemId: 'cpumhz',
	colspan: 2,
	printBar: false,
	title: gettext('CPU频率'),
	textField: 'cpure',
	renderer: function(value){
  const m = value.match(/(?<=:\s+)(\d+)/g);
 return `CPUMHZ: ${m[0]} | ${m[1]} | ${m[2]} | ${m[3]} | ${m[4]} | ${m[5]} | ${m[6]} | ${m[7]}`;
 }
},
EOF
 
#找到关键字pveversion的行号
echo 修改pvemanagerlib.js
ln=$(sed -n '/pveversion/,+10{/},/{=;q}}' $pvejs)
echo "匹配的行号pveversion:" $ln
 
echo 修改结果:
sed -i "${ln}r $tmpf" $pvejs
sed -n '/pveversion/,
+30p' $pvejs
 
rm $tmpf
 
echo 修改页面高度
sed -i -r '/widget\.pveNodeStatus/,
+5{/height/{s#[0-9]+#360#}}' $pvejs
sed -n '/widget\.pveNodeStatus/,
+5{/height/{p}}' $pvejs
sed -i -r '/\[logView\]/,
+5{/heigh/{s#[0-9]+#460#;}}' $pvejs
sed -n '/\[logView\]/,
+5{/heigh/{p}}' $pvejs
echo 修改去除订阅弹窗
sed -r -i '/\/nodes\/localhost\/subscription/,
+10{/^\s+if \(res === null /{N;s#.+#\t\t if(false){#}}' $plib
sed -n '/\/nodes\/localhost\/subscription/,+10p' $plib
systemctl restart pveproxy
echo "请刷新浏览器缓存shift+f5"

赋予脚本执行权限

chmod +x pve.sh

执行脚本

./pve.sh

刷新浏览器缓存shift+f5查看