PVE 安装指南
Proxmox VE是一个企业级虚拟化平台,该平台集成了基于内核的虚拟机管理程序(KVM)和基于Linux容器(LXC)这两种虚拟化技术,同时还集成了软件定义存储和虚拟网络功能。借助Web的管理界面工具,可以轻松地管理和配置虚拟机、容器、高可用性集群、软件定义存储、虚拟网络以及备份等。本文将重点介绍在家庭软路由使用场景中安装PVE和配置相关虚拟系统的完整过程。
调整软件源
一、更换 Debian 系统国内软件源
- 首先,移除(备份)一下 PVE 原始的官方源 (将 sources.list 改名为 sources.list.bak)
mv /etc/apt/sources.list /etc/apt/sources.list.bak
- 添加国内 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
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容器配置
- 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
- 安装 openssh
# 安装
apk add openssh
# 开机启动
rc-update add sshd
# vi /etc/ssh/sshd_config ssh远程登录
PermitRootLogin yes
# 重启sshd
/etc/init.d/sshd restart
- 安装 docker
# 安装
apk add docker
# 开机启动
rc-update add docker boot
# 启动
service docker start
- 安装 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
- 安装 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
- 安装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设备可以添加直通网卡(直接添加网络设备是虚拟网卡)