PVE 安装指南

目录

Proxmox VE是一个企业级虚拟化平台,该平台集成了基于内核的虚拟机管理程序(KVM)和基于Linux容器(LXC)这两种虚拟化技术,同时还集成了软件定义存储和虚拟网络功能。借助Web的管理界面工具,可以轻松地管理和配置虚拟机、容器、高可用性集群、软件定义存储、虚拟网络以及备份等。本文将重点介绍在家庭软路由使用场景中安装PVE和配置相关虚拟系统的完整过程。

调整软件源


一、更换 Debian 系统国内软件源

  1. 首先,移除(备份)一下 PVE 原始的官方源 (将 sources.list 改名为 sources.list.bak)
mv /etc/apt/sources.list /etc/apt/sources.list.bak
  1. 添加国内 Debian 软件源:
#编辑 sources.list 源文件,写入国内源

nano /etc/apt/sources.list

# 内容如下:

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware

# security updates

# deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware

deb https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware

二、给 PVE 更换国内源

# 编辑文件 pve-no-subscription.list
nano /etc/apt/sources.list.d/pve-enterprise.list
deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian/pve bookworm pve-no-subscriptioPn

# 内容如下:
deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian bookworm pve-no-subscription

三、屏蔽 PVE 企业源:

# 编辑文件
nano /etc/apt/sources.list.d/pve-enterprise.list

# 将下面这一行注释掉 (前面加上井号)
# deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian/pve bookworm pve-no-subscription

四、修复源 401 错误

echo "deb http://download.proxmox.com/debian/ceph-quincy bookworm no-subscription" > /etc/apt/sources.list.d/ceph.list

五、更新 Apt

apt-get update

六、更换 CT 模板源

LXC 容器的模板默认下载很慢,也需要我们替换一下才可以:

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

相当于备份一下然后直接替换修改了 /usr/share/perl5/PVE/APLInfo.pm 文件,重启 PVE 服务即可生效:

systemctl restart pvedaemon.service
systemctl restart pveproxy.service

七、 删除订阅弹窗

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

安装相关软件


一、 安装基础软件包

# 安装系统软件
apt install htop lm-sensors unzip fail2ban vim tmux unattended-upgrades apt-listchanges powermgmt-base

# 安装网络工具
apt install iperf iperf3 iftop net-tools ethtool

# 安装CPU调度调整工具
apt install cpufrequtils

# 根据CPU厂商安装CPU微码工具
apt install intel-microcode (amd64-microcode)

二、 开启直通,IOMMU功能

Intel CPU

对于Intel CPU,添加 intel_iommu=on,操作如下:

1、Shell 里面输入命令:nano /etc/default/grub

nano /etc/default/grub

2、在里面找到:GRUB_CMDLINE_LINUX_DEFAULT="quiet"

然后修改为

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt intel_pstate=disable"

编辑完成后,使用快捷键 Ctrl + O 回车保存文件,Ctrl + X 退出编辑器。

3、使用命令 update-grub 保存更改并更新grub

root@pve:~# update-grub

4、更新完成后,使用命令 reboot 重启PVE系统

root@pve:~# reboot

从命令行运行 dmesg | grep -e DMAR -e IOMMU 如果没有输出,则说明有问题。

如果有,可基本确认这个过程顺利完成! 接下来就可以为虚拟机正常的添加硬件直通了。

AMD CPU

对于AMD CPU 添加 amd_iommu=on, 操作如下:

1、Shell 里面输入命令:nano /etc/default/grub

root@pve:~# nano /etc/default/grub

2、在里面找到:GRUB_CMDLINE_LINUX_DEFAULT="quiet"

然后修改为

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"

编辑完成后,使用快捷键 Ctrl + O 回车保存文件,Ctrl + X 退出编辑器。

3、使用命令 update-grub 保存更改并更新grub

root@pve:~# update-grub

4、更新完成后,使用命令 reboot 重启PVE系统

root@pve:~# reboot

验证IOMMU功能

从命令行运行 dmesg | grep -e DMAR -e IOMMU 如果没有输出,则说明有问题。

如果有,可基本确认这个过程顺利完成! 接下来就可以为虚拟机正常的添加硬件直通了。

增加虚拟化驱动,加载vifo系统模块

这仅在必要时启用IOMMU转换,将iommu分组相关的内核模块启用,从而可以提高VM中未使用的PCIe设备的性能。

然后是修改 /etc/modules 文件

root@pve:~# nano /etc/modules

添加如下内容

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

alt

PVE系统添加PCI设备开启硬件直通界面

如果按照此方法:ProxmoxVE 开启硬件直通 还设置无效,请再次检查自己的CPU支持VT-D技术。

三、CPU调度器配置

安装好 cpufrequtils 后,先检查当前 CPU 的调度器:

## 检查 CPU 当前调度器
cpufreq-info

设备 CPU - J4125 参考输出 :

##  J4125 参考输出

cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to [email protected], please.
analyzing CPU 0:
  driver: intel_cpufreq

设备 CPU - N5105 参考输出 :

##  N5105 参考输出
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to [email protected], please.
analyzing CPU 0:
  driver: intel_pstate

这里面主要关注两个点:

  • driver: intel_cpufreq 或 intel_pstate
  • current policy: governor "ondemand" 或 governor "performance"

当然,还有另外一个命令可以用来显示 CPU 调度器:

## 检查 CPU 当前调度器
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

## J4125 参考输出
ondemand

## N5105 参考输出
performance

驱动一般不建议手动调整,而 governor 后面的参数则显示了当前 CPU 的调度器是什么。

接下来,我们需要了解当前系统的 CPU 支持的调度器有哪些:

## 检查 CPU 调度器支持情况
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

## J4125 参考输出
conservative ondemand userspace powersave performance schedutil

## N5105 参考输出
performance powersave

这里有很多种调度器可供选择,至于每种调度器有什么优劣清单:

ondemand:系统默认的超频模式,按需调节,内核提供的功能,不是很强大,但有效实现了动态频率调节,平时以低速方式运行,当系统负载提高时候自动提高频率。以这种模式运行不会因为降频造成性能降低,同时也能节约电能和降低温度。一般官方内核默认的方式都是ondemand。governor 开启一个 timer,定期去计算各个 CPU 的负载。当 CPU 负载超过 80% 时, 就会把 CPU 频率调到最高,其他情况则会根据当前负载按比例计算频率

interactive:交互模式,直接上最高频率,然后看CPU负荷慢慢降低,比较耗电。Interactive 是以 CPU 排程数量而调整频率,从而实现省电。InteractiveX 是以 CPU 负载来调整 CPU 频率,不会过度把频率调低。所以比 Interactive 反应好些,但是省电的效果一般。

conservative:保守模式,类似于ondemand,但调整相对较缓,想省电就用他吧。Google官方内核,kang内核默认模式。 governor 开启一个 timer,定期去计算各个 CPU 的负载。当CPU 负载超过 80% 时,默认会以 5% 的步伐递增;当 CPU 负载少于 20% 的时候,默认会以 5% 的步伐递减。

smartass:聪明模式,是I和C模式的升级,该模式在比interactive 模式不差的响应的前提下会做到了更加省电。

performance:性能模式!只有最高频率,从来不考虑消耗的电量,性能没得说,但是耗电量。

powersave:省电模式,通常以最低频率运行。

userspace:用户自定义模式,系统将变频策略的决策权交给了用户态应用程序,并提供了相应的接口供用户态应用程序调节CPU 运行频率使用。也就是长期以来都在用的那个模式。可以通过手动编辑配置文件进行配置

Hotplug:类似于ondemand, 但是cpu会在关屏下尝试关掉一个cpu,并且带有deep sleep,比较省电。

schedutil:利用负载变化回调机制, 把各个 CPU 的 capacity 映射到 CPU 频率,来完成调频动作,capacity 越高,当前 CPU 负载越高,所以频率也调的很高

CPU 驱动为 intel_pstate 时,建议使用 powersave 调度器。

CPU 驱动为 intel_cpufreq 时,建议使用 schedutil 调度器。

由于演示机 CPU 为 J4125 ,因此本文以使用 schedutil 调度器为演示。

使用 vim 编辑器来编辑 cpufrequtils 的配置文件:

## 修改 cpufrequtils 配置文件
vim /etc/init.d/cpufrequtils

## 在配置文件中修改调度器
ENABLE="true"
GOVERNOR="schedutil"    ## 修改本行的调度器为 schedutil
MAX_SPEED="0"
MIN_SPEED="0"

按 i 键进入编辑模式,esc 键退出编辑模式,:wq 命令保存退出。

因为该配置文件很长,教程中留下一份配置好文件 Fox_PVE_Cpufrequtils.conf (该文件同步于 Gitee 中),以便对比。

修改完成后,需要重新启动 PVE 服务器来使参数生效。

PVE 服务器重启完成后记得重新检查当前 CPU 的调度器,看配置文件是否生效。

这里提供两个命令,分别来实时查看当前 CPU 的频率和内部温度传感器的数值:

## 查看 CPU 当前频率
watch cat /sys/devices/system/cpu/cpu[0-9]*/cpufreq/scaling_cur_freq
watch -n 0.1 cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq

## 查看内部温度
watch sensors

四、 Fail2ban 配置

安装好 fail2ban 后,检查其服务状态:

## 检查 Fail2ban 系统服务状态
systemctl status fail2ban.service

执行完成后,再次通过前面的命令检查服务自启状态。

后续如果想查看 Fail2ban 有关 sshd 的执行状态,可使用如下命令:

## 检查 sshd 的执行情况
fail2ban-client status sshd

如果均为0,表示 PVE 系统没有 SSH 错误密码的尝试记录。

五、配置系统时区

如果在安装 PVE 系统时选错了时区,导致系统时间和北京时间不一致;

可以使用以下命令修正:

## 修改系统时区
timedatectl set-timezone Asia/Shanghai

## 检查系统时间
date -R

六、Vim 安装与设置

安装 vim

apt install vim

新建一个 vim 的配置文件:

vim ~/.vimrc

set nu                " 显示行号
colorscheme desert    " 颜色显示方案
syntax on             " 打开语法高亮

七、 zsh shell 方案

# 安装依赖
apt -y install git

# 安装zsh
apt -y install zsh

# 更改默认shell为zsh
chsh -s /bin/zsh

# 安装oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

安装插件 zsh-autosuggestions autojump

# git clone 下载插件到 zsh 的插件目录下
git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions

# 使用 APT 可以直接安装 autojump 插件
apt install autojump

然后在 ~/.zshrc 配置文件中修改如下内容:

vim ~/.zshrc

plugins=(git zsh-autosuggestions autojump)

重新加载 zsh 即可生效。

虚拟机操作


一、安装集客 AC

qm importdisk 102 /home/jikeac.vmdk local-lvm -format qcow2

一、安装 OP / openClash

x+x  

qm importdisk 101 /home/efi.img local-lvm

三、alpine容器配置

  1. APK 换源
# 更换中科大源
sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories

# 更换清华源
sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories

# 更新
apk update
  1. 安装 openssh
# 安装
apk add openssh

# 开机启动
rc-update add sshd

# vi /etc/ssh/sshd_config ssh远程登录
PermitRootLogin yes

# 重启sshd
/etc/init.d/sshd restart
  1. 安装 docker
# 安装
apk add docker

# 开机启动
rc-update add docker boot

# 启动
service docker start
  1. 安装 adguardhome
mkdir -p /data/adguardhome  && cd /data && chmod -R 777 adguardhome

docker run -d \
	--name adguardhome \
	-v /data/adguardhome/work:/opt/adguardhome/work \
	-v /data/adguardhome/conf:/opt/adguardhome/conf \
	-p 53:53/tcp \
	-p 53:53/udp \
	-p 67:67/udp \
	-p 68:68/tcp \
	-p 68:68/udp \
	-p 80:80/tcp \
	-p 443:443/tcp \
	-p 853:853/tcp \
	-p 3000:3000/tcp \
	adguard/adguardhome
  1. 安装 gogs
ocker pull gogs/gogs

# 创建一个本地可以挂载到容器的目录
mkdir -p /data/gogs

# 给 gogs 加上权限保证其可读可写
cd /data && chmod -R 777 gogs

docker run -d  -p 3022:22\
	-p 3000:3000\
	--name=gogs\
	--restart=always\
	-e TZ="Asia/Shanghai"\
	-v /data/gogs:/data gogs/gogs
  1. 安装ros

准备好PVE系统和ROS镜像文件MikroTik-RouterOS-7.1.1.ova 并上传到pve

使用命令机型解压

  tar -xvf MikroTik-RouterOS-7.1.1.ova

导入镜像

 # 777是虚拟机ID,原来必须不存在,会自动创建
 qm importovf 105 /home/ROS7-6G.ovf  local-lvm --format qcow2

编辑虚拟机配置

vim /etc/pve/nodes/pve/qemu-server/777.conf

修改内容

ide0: local-lvm:vm-777-disk-0

# 改为

ide0: local-lvm:vm-777-disk-0,model=VMware%20Virtual%20IDE%20Hard%20Drive,serial=00000000000000000001

选项 OS类型 5.x - 2.6 Kernel

硬件 BIOS 设置为 OVMF (UEFI)

硬件 处理器 类别 host

硬件 添加PCI设备可以添加直通网卡(直接添加网络设备是虚拟网卡)