MENU

PVE网卡不识别(Down)无法接入网络 - 记一次Homelab组装现场

April 1, 2024 • 默认分类,折腾

TL;DR

在部分主板上,PCI设备的编号往往会受设备数量而发生变化,这给折腾新 HomeLab + NAS 的朋友带来了很大的不便。装完PVE,再添加一块P40,网卡不工作了。这其实是网卡对应的PCI设备编号改变,引起的网口端口号的变化。在本文中,主要使用 容器环境下宿主机块设备的事件处理 先前文章中的思想,固定下网卡端口号。

配置单

1. 华强北牌X99主板 - 主打一个便宜省钱
2. Intel 至强 E5 2696 v3 - 主打一个数框框
3. 32GB DDR3 ECC * 4 - 插满就是性能满
4. NVIDIA TESLA P40 - HomeLab不能缺少GPU算力
5. OS盘 灵车 但似乎安全下车
6. LSI 2308

6215200318e64d4afa662fc788469681.jpg
2cdf0e923b9b00922513553e47e244cd.jpg

过程

可以看到,起初在最小系统点亮方面,非常顺利。朋友将主板插在了3080上,点亮了主板

服务器CPU自然也是没有集显的,这给后续排查带来了非常大的不便。

虽然CentOS启动了,但安装PVE时,3080似乎不是很兼容的样子,出现了花屏。

3d26743a1a7c427108042f3b579583de.jpg

之后更换了一张gt730,PVE成功安装。

50ca32d67f55e56a31b71f9f0ad6a97b.jpg

本以为一切顺利,就差插上阵列卡硬盘时,问题出现了。

插上阵列卡,大概2-3秒的内核日志输出,显示卡住,网卡灯灭。是阵列卡不兼容导致系统Halt还是什么别的缘故?

朋友的一个操作,给了灵感:盲输用户名密码并敲入shutdown,可以执行关机。
   在这个状态下,说明系统是正常工作的,只是输出设备和网卡down了。

c63d21eeab4f97efd2603e9cd448bb63.jpg

本着接上信息高速路不如先睁眼看世界的心态,朋友找来一个PCIex1接口的显卡再尝试做调试。

509a32d956234648961f9f0ad6a97b.jpg.jpg

系统日志输出了:找不到enp6s0网口,通过 ip addr 可以看到,确实enp6不存在,而出现了enp7,且状态为DOWN。

旧的命名规则中我们常能看见eth*这样的网口,但网口怎么排,谁是第一个通常有混淆。

enp* 这样的命名方式,使用了一种基于物理位置和PCI域的命名方式。例如,enp125s0f0表示PCI域125上的第一个物理插槽的第一个网络接口。这种命名方式可以更加准确地标识网络接口的位置,避免了旧的命名规则中可能出现的混淆和错误。

网口为什么会变?是因为PCI域发生了变化,有新硬件加入进来了,可能是主板BIOS的缘故,导致编号发生变化,这个推断也符合当下情况。

PVE的网络配置位于:/etc/network/interfaces ,如下:

auto lo
iface lo inet loopback

auto enp1s0
iface enp1s0 inet manual

auto vmbr0
iface vmbr0 inet static
    address 10.0.101.1/16
    gateway 10.0.0.1
    bridge-ports enp1s0
    bridge-stp off
    bridge-fd 0
    bridge-vlan-aware yes
    bridge-vids 2-4094

修改文件当然可以让网卡重新工作,但是否不太优雅了?

根据前文,所有硬件树变更最后会由udev去处理,而网卡虽然不在 /dev 目录下,但在 /sys/class/net 能找到踪影。

我们通过合适的规则,就可以固定网卡名称。

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="aa:bb:cc:dd:ee:ff", ATTR{type}=="1", KERNEL=="enp*", NAME="eth5"

对于子系统net,当出现硬件添加时,当名字为enp*且MAC地址为aa:bb:cc:dd:ee:ff,更名为eth5,这就实现了MAC和网口名的绑定。保存为/etc/udev/rules.d/50-eth-rename.rules。并修改/etc/network/interfaces重启即生效。

WOL

# 存为 /etc/udev/rules.d/81-wol.rules
ACTION=="add", SUBSYSTEM=="net", NAME=="en*", RUN+="/usr/sbin/ethtool -s $name wol g"
Last Modified: July 24, 2024
Archives QR Code
QR Code for this page
Tipping QR Code