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
过程
可以看到,起初在最小系统点亮方面,非常顺利。朋友将主板插在了3080上,点亮了主板。
服务器CPU自然也是没有集显的,这给后续排查带来了非常大的不便。
虽然CentOS启动了,但安装PVE时,3080似乎不是很兼容的样子,出现了花屏。
之后更换了一张gt730,PVE成功安装。
本以为一切顺利,就差插上阵列卡硬盘时,问题出现了。
插上阵列卡,大概2-3秒的内核日志输出,显示卡住,网卡灯灭。是阵列卡不兼容导致系统Halt还是什么别的缘故?
朋友的一个操作,给了灵感:盲输用户名密码并敲入shutdown,可以执行关机。
在这个状态下,说明系统是正常工作的,只是输出设备和网卡down了。
本着接上信息高速路不如先睁眼看世界的心态,朋友找来一个PCIex1接口的显卡再尝试做调试。
系统日志输出了:找不到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"
本文标题:PVE网卡不识别(Down)无法接入网络 - 记一次Homelab组装现场
本文连接:https://blog.dextercai.com/archives/214.html
除另行说明,本站文字内容采用创作共用版权 CC-BY-NC-ND 4.0 许可协议,版权归本人所有。
除另行说明,本站图片内容版权归本人所有,任何形式的使用需提前联系。