Skip to content

PVE 9.0 保姆级安装及优化教程(换源、网络配置、远程唤醒等)【基础篇】

前言

最近,Proxmox VE 推出了基于 Debian 13 的 9.0 版本。正巧我手头有一台闲置的老电脑,与其闲置,不如装上 PVE,让它化身 All in One,继续发挥它的余热。配置如下:

sh
Processor  : Intel(R) Pentium(R) CPU G4560 @ 3.50GHz
CPU cores  : 4 @ 3500.158 MHz
AES-NI     : Enabled
VM-x/AMD-V : Enabled
RAM        : 15.5 GiB
Swap       : 0.0 KiB
Disk       : 83.9 GiB
Distro     : Debian GNU/Linux 13 (trixie)
Kernel     : 6.14.8-2-pve

G4560 算是一颗 NAS 神 U,十几元的售价就能有双核四线程,比起什么 J1900 不知道强到哪里去了,尽管定位上是奔腾处理器,但性能甚至能和同代的酷睿 i3-7100 掰掰手腕,并且它还自带 HD 610 的核显,对于解码的支持也还不错。

即便是手头没有闲置的硬件,直接买一颗 G4560 搭配上 HP 800 G3 这类品牌机准系统,个人认为性价也同样很高。

警告

G4560 与 i3-7100 相比,尽管性能上相差不大,但 G4560 缺少了 AVX 等指令集,实测下来还是有一些影响的,别被当年那些测评里说的“缺少指令集无伤大雅”给骗了。

比如 MongoDB 5.0 版本开始要求 AVX 指令集,而 G4560 就只能安装 4.4 版本。

有这方面需求建议淘一颗带核显的 E3 配上 HP Z240 这类原生支持至强的工作站,无论是性能、指令集都更加的符合要求。

BIOS 设置

提示

不同品牌、不同型号的主板 BIOS 设置各不相同,下面以我的华硕 Prime B250M-A 为例

虚拟化

PVE 作为虚拟化系统,必须在 BIOS 中开启虚拟化相关设置(VT-x、VT-d 等)

  • 高级 -> CPU 设置 -> Intel Virtualization Technology
Intel Virtualization Technology
Intel Virtualization Technology
  • 高级 -> 北桥 -> VT-d
VT-d
VT-d

其他设置

除了必备的虚拟化设置以外,如果想要使用 vGPU 和 Wake on LAN 等功能,还需要进行更多设置

  • vGPU: 高级 -> 北桥 -> Above 4G Decoding (大于 4G 地址空间解码)
大于 4G 地址空间解码
大于 4G 地址空间解码
  • Wake on LAN: 高级 -> 高级电源管理(APM) -> 由 PCI-E 设备唤醒
由 PCI-E 设备唤醒
由 PCI-E 设备唤醒

安装 PVE

前往官网下载 PVE 官网下载 PVE 9.0 的 ISO 镜像,网络不好的可以从 夸克网盘 / UC 网盘 下载,整体的安装步骤和之前版本基本一致

推荐直接用 Ventoy 引导,比较的方便(Ventoy 需要更新到最新版,否则可能会引导失败)

Ventoy
Ventoy

选择系统盘,选中的硬盘会被格式化,如果盘里有文件的注意提前备份

系统盘
系统盘

设置 PVE 的密码,密码用于登录 Web UI 和连接 SSH

密码
密码

最重要的一步,设置 IP 地址,默认会通过 DHCP 获取到一个地址,后续访问 Web UI 或者连接 SSH 需要用到

安装完成后,这个地址会被设置成静态地址,修改起来比较麻烦,建议提前修改为想要的 IP 地址

IP 地址
IP 地址

最后耐心等到安装完成,会自动重启到 PVE 系统

安装完成
安装完成

换源

PVE 9.0 基于 Debian 13,除了换 Debian 的软件源以外,还需要编辑企业源、Ceph 源、无订阅源以及 CT 模板源。

Debian 软件源

提示

Debian 13 软件源变更为 DEB822 格式 /etc/apt/sources.list.d/debian.sources ,不再是传统格式 /etc/apt/sources.list

与常规的 Debian 13 一样,将 /etc/apt/sources.list.d/debian.sources 中默认源全部删除,将其替换为清华源

sh
Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/debian
Suites: trixie trixie-updates trixie-backports
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
# Types: deb-src
# URIs: https://mirrors.tuna.tsinghua.edu.cn/debian
# Suites: trixie trixie-updates trixie-backports
# Components: main contrib non-free non-free-firmware
# Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
Types: deb
URIs: https://security.debian.org/debian-security
Suites: trixie-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

# Types: deb-src
# URIs: https://security.debian.org/debian-security
# Suites: trixie-security
# Components: main contrib non-free non-free-firmware
# Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

企业源

将 PVE 的企业源 /etc/apt/sources.list.d/pve-enterprise.sources 注释掉(也可以直接删除)

sh
# Types: deb
# URIs: https://enterprise.proxmox.com/debian/pve
# Suites: trixie
# Components: pve-enterprise
# Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg

Ceph 源

将 PVE 的 Ceph 源 /etc/apt/sources.list.d/ceph.sources 也替换成清华源

sh
Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian/ceph-squid
Suites: trixie
Components: main
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg

无订阅源

/etc/apt/sources.list.d 目录下创建 pve-no-subscription.sources 文件,填上以下内容

sh
Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg

CT 模板源

如果你需要用到 PVE 中的 LXC 容器,那么还需要替换一下 CT 模板源,否则下载模板会非常的慢

/usr/share/perl5/PVE/APLInfo.pm 文件中默认的源地址 http://download.proxmox.com 替换为

https://mirrors.tuna.tsinghua.edu.cn/proxmox

可以使用如下命令修改,重启后生效

sh
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

删除订阅弹窗

尽管我们使用的 PVE 是免费版,但如果你没有订阅,每次访问网页时,都会有一个“无有效订阅”的弹窗

订阅弹窗
订阅弹窗

弹窗代码在 /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js 中,通过 void({...}) 可以让弹窗部分代码不执行,实现删除弹窗的效果。

因此,直接执行以下命令即可实现删除订阅弹窗

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

硬盘

合并 local 与 local-lvm

提示

  1. 只建议系统盘比较小的这么操作,系统盘大的的建议保持默认!
  2. 由于我的傲腾系统盘太小,PVE 安装程序跳过了创建 local-lvm,因此以下内容未进行实操验证,仅供参考
跳过创建 local-lvm
跳过创建 local-lvm

PVE 安装过程中会自动创建 locallocal-lvm,如果你的系统盘不够大,可能会出现一个用满了,另一个却比较空的情况,提前将两者合并就可以避免出现这种尴尬的情况。

  1. 删除 local-lvm 分区
sh
lvremove /dev/pve/data
  1. 扩容 local
sh
lvextend -l +100%FREE /dev/pve/root
  1. 扩展文件系统
sh
resize2fs /dev/pve/root
  1. 在 Web UI 上删除 local-lvm,然后编辑 local 勾选所有内容

删除 Swap 分配给主分区

提示

只建议系统盘特别小的这么操作,系统盘大的的建议保持默认!

PVE 安装后默认会根据硬盘大小分配 Swap,但我的系统盘是 16G 的傲腾,本身就已经寸土寸金了,再加上 G4560 配上 16G 内存也基本够用了。如果把默认分配的 1G Swap 删除,重新分配给系统分区的话,更加宽裕一些。

  1. 关闭 Swap
sh
swapoff /dev/mapper/pve-swap
  1. 编辑 /etc/fstab,注释掉 Swap 挂载行
sh
# /dev/pve/swap none swap sw 0 0
  1. 删除 swap 的 LVM 卷
sh
lvremove /dev/pve/swap
  1. 扩展 pve-root 卷到全部剩余空间
sh
lvextend -l +100%FREE /dev/mapper/pve-root
  1. 扩展文件系统
sh
resize2fs /dev/mapper/pve-root

添加硬盘

如果想给 PVE 添加硬盘,首先需要将硬盘挂载到 PVE 上,然后再在 Web UI 中添加存储。其中挂载到 PVE 的步骤与常规 Debian 挂载硬盘相同,不了解的可以参考《Linux 挂载磁盘的两种方式》

完成挂载后,来到 数据中心 -> 存储 -> 添加 -> 目录 填写上 ID 和挂载的目录,内容勾选所有选项,最后点击添加即可

添加硬盘
添加硬盘

网络

DHCP

如果你的网络环境经常变动,则可以将静态 IP 修改为 DHCP,通过 DHCP 分配 IP,方便网络变动后连接 PVE 设备

编辑 /etc/network/interfaces,将 static 修改为 dhcp,然后将地址和网关删除

sh
auto lo
iface lo inet loopback

iface enp4s0 inet manual

auto vmbr0
iface vmbr0 inet dhcp
iface vmbr0 inet static
        address 10.0.0.10/24
        gateway 10.0.0.1
        bridge-ports enp4s0
        bridge-stp off
        bridge-fd 0

source /etc/network/interfaces.d/*

SLAAC

之前一直想给 PVE 添加 IPv6 地址,但通过下面这行代码获取的 IPv6 会同时启用 SLAAC 和 DHCPv6,总会遇到一些奇奇怪怪的问题

sh
iface vmbr0 inet6 auto

后面发现可以直接在 /etc/network/interfaces 中添加下面这行代码,来启用 SLAAC 获取 IPv6 地址,目前使用下来还没遇到过问题。

sh
post-up echo "2" > /proc/sys/net/ipv6/conf/vmbr0/accept_ra

完整配置如下:

sh
auto lo
iface lo inet loopback

iface enp3s0 inet manual

auto vmbr0
iface vmbr0 inet dhcp
        bridge-ports enp3s0
        bridge-stp off
        bridge-fd 0
        post-up echo "2" > /proc/sys/net/ipv6/conf/vmbr0/accept_ra

source /etc/network/interfaces.d/*

接着重启一下网络,过一小会应该就能获取到 IPv6 了

sh
systemctl restart networking

网卡灯不亮(无网络)

常见于移除/更换了 PCI-E 设备,比如显卡、 M.2 硬盘,我是在装完系统后拔下显卡后出现的问题,主要原因是拔下显卡后,网卡的编号发生了改变,而 PVE 的网络配置却不会跟着改变。

查看 /etc/network/interfaces 可以看到,网卡为 enp4s0,而通过 ip a 查看,此时的网卡已经变为了 enp3s0,只需要将两处 enp4s0 修改为 enp3s0

sh
auto lo
iface lo inet loopback

iface enp4s0 inet manual
iface enp3s0 inet manual

auto vmbr0
iface vmbr0 inet dhcp
        bridge-ports enp4s0
        bridge-ports enp3s0
        bridge-stp off
        bridge-fd 0

source /etc/network/interfaces.d/*

然后重启一下网络,就可以恢复了

sh
systemctl restart networking

如果你经常新增/减少 PCI-E 设备,可以考虑将网卡命名修改回传统名称,详见下方修改网卡名

修改网卡名

要想将网卡修改回 eth0 这样的传统名称,只需要编辑启动参数,在 /etc/default/grub 配置中加上 net.ifnames=0 biosdevname=0

sh
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX_DEFAULT="quiet net.ifnames=0 biosdevname=0"
GRUB_CMDLINE_LINUX=""

然后更新 grub 后重启,网卡名就会变成传统的 eth0eth1

sh
update-grub

重启前,别忘了把 /etc/network/interfaces 中的网卡名也修改成 eth0,否则会断网

sh
auto lo
iface lo inet loopback

iface enp4s0 inet manual
iface eth0 inet manual

auto vmbr0
iface vmbr0 inet dhcp
        bridge-ports enp4s0
        bridge-ports eth0
        bridge-stp off
        bridge-fd 0

source /etc/network/interfaces.d/*

网络唤醒 WOL

提示

需要在 BIOS 中开启 PCI-E 唤醒

默认情况下,PVE 的网络唤醒是禁用的,需要手动打开才可以网络唤醒。

开启 WOL

  1. 安装 ethtool 工具
sh
apt install ethtool
  1. 查看网卡名称 ip a

  2. 查看网卡信息

sh
ethtool eth0
  1. 观察 Supports Wake-onWake-on

提示

supports wake-on 判断该网卡是否支持 WOL 唤醒,若值为 pumbg 则表示支持 WOL

Wake-on 值为 d 则表示 WOL 禁用状态,g 则为开启,PVE 默认为 d

sh
Settings for eth0:
        Supported ports: [ TP    MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                             100baseT/Half 100baseT/Full
                                             1000baseT/Half 1000baseT/Full
        Link partner advertised pause frame use: Symmetric Receive-only
        Link partner advertised auto-negotiation: Yes
        Link partner advertised FEC modes: Not reported
        Speed: 1000Mb/s
        Duplex: Full
        Auto-negotiation: on
        master-slave cfg: preferred slave
        master-slave status: slave
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: external
        MDI-X: Unknown
        Supports Wake-on: pumbg
        Wake-on: d
        Current message level: 0x0000003f (63)
                               drv probe link timer ifdown ifup
        Link detected: yes
  1. 开启 WOL 网络唤醒
sh
ethtool -s eth0 wol g

开机运行

由于每次开机时,Wake-on 的值都会重置为 d,因此需要在开机时自动运行开启 WOL 的命令

  1. 编辑 /etc/rc.local 文件
sh
#!/bin/bash
ethtool -s eth0 wol g

exit 0
  1. 赋予运行权限
sh
chmod +x /etc/rc.local
  1. 重启并按上一步骤查看 Wake-on 是否自动在开机时自动修改为 g 即可

总结

本文为基础篇,主要是 PVE 的安装和配置,接下来我们还要直通硬件、定制虚拟机模板并创建虚拟机,感兴趣的可以持续关注!

关注微信公众号
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3