记一次 all in boom 的小 boom 之“可预测网卡名称”

6 天前
 OneLiteCore

前几天发了个“帖子:关于 All In Boom 到底是 Boom 在哪里?”探讨 All in boom 潜在的问题后得到的结论是不折腾软路由然后多备份就能够避免绝大多数 Boom 的情况了,然后这几天就 Boom 了一下,或者也可以说是我对 Linux 的经验不足导致的。

长话短说:给 PVE 宿主机新增了一个 PCIe 转 Sata 卡导致网卡名称变化进而导致 VM 断网。

前面的帖子里面提到 PVE 的好处就是可以非常方便的给 VM 进行备份,唯一麻烦的一点就是要如何将 Nas 的 VM 备份到 Nas 自己里面这种类似递归或者自举一般的操作。最简单并且省钱的办法就是给 PVE 宿主机一块独立于 Sata 控制器的硬盘,所以从柜子里翻出了积灰已久的 PCIe 转 Sata 卡插了上去。

这个行为触发了“可预测名称机制”,非常反直觉的,并且不可预知的改动了网卡的命名!

主板有两个网卡 enp2s0 和 enp3s0 被改动成了 enp3s0 和 enp4s0 ,由于虚拟机的 vmbr0 是桥接到宿主机的 enp2s0 上的自然就断网了。而 PVE 宿主机的网卡 Mac 显然不会变化于是最终通过重命名后的 enp3s0 获得了之前在硬路由上设置好固定 IP 。

虽然能排查并解决但配置/排查各种问题很难称得上是有生产力的行为,尤其当你是一个开发者而不是一个运维人员的时候。本该写点代码修点 BUG 结果被这个问题消耗了半天。

对于还在摸索和熟悉 Linux 的人而言这个问题是完全“不可预知”的并且这个坑一定会踩的,独自一人走完全陌生的夜路却熟悉路上的每一个角落是互相矛盾的事不是么?这些不算大的问题和反直觉的设计结合起来使得 Linux 系统本身难以普及到非技术群体,只有二次封装的 Nas/Android 等系统才能用。

多少有点发牢骚了,大家就当看个热闹了。

2239 次点击
所在节点    NAS
28 条回复
OneLiteCore
5 天前
@AkinoKaedeChan 我知道这个机制的存在是必要的是有意义的,但是他避免不了

[新手运维第一次增减 PCIe 设备后断网]

的问题,如果这个设计是无可奈何的话那么有人骂他这套设计不好一样也是无可奈何的
AkinoKaedeChan
5 天前
@OneLiteCore 其实可以避免,因为这套机制有根据 MAC 自动命名的特性,但是需要用户主动启用
OneLiteCore
5 天前
@AkinoKaedeChan 用户如何在不知道这套机制存在的情况下避免这个问题,这才是槽点
AkinoKaedeChan
5 天前
只能说是不得已的方案。通过 MAC 重命名也有无法避免的问题,比方说根据 SR-IOV 虚拟化出来的网卡 VF 没有永久的 MAC 地址,通常是 post-up 后手动设置,根本没有可能根据 MAC 重命名。
msg7086
4 天前
@OneLiteCore #20
可预测网卡名称解决的是重启时名称改变的问题。
比如你有两块网卡,可能一次启动的时候 eth0 是第一块,eth1 是第二块,下次启动的时候 eth0 是第二块,eth1 是第一块。打开可预测网卡名称以后,至少你遇到断网问题是下一次增减 PCIe 设备的时候,而不是下次重启的时候……

另外可预测网卡名称也有其他绑定的名称。比如我 PVE 上的网卡名称类似这样:
#ip link
2: eno1:
altname enp5s0f0
altname enx50106f45a51a
3: eno2:
altname enp5s0f1
altname enx50106f45a51b
4: eno49:
altname enp12s0f0
altname enx4cb9018861dc
6: ens2:
altname enp9s0
altname enxe11d2d153860
普通人如果你只有一个网卡,那直接 eno1 就完事了。
你如果觉得 enp 和 eno 编号都不舒服,那也可以用 enx 来通过 mac 绑定。
OneLiteCore
4 天前
@msg7086 我之后查阅了资料了解到这个机制确实比 ethX 规则更进步的地方也知道有办法自己固定网卡名称。

槽点在于这个设计下会出现 “我就插了一块新的 SSD 怎么就忽然断网了?” 的情况,对于没那么熟悉 Linux 设计的人而言这个设计完全就是 “不可预测的”,而他们将这套机制命名为 “可预测网卡名称”…

如果他们用 “网卡自动命名机制” 这个名字我反而觉得可以理解是不得已而为之
msg7086
4 天前
@OneLiteCore
实际系统运行环境下是没有万金油的。要是你说按照 MAC 绑定好,那遇上网卡坏了,你买了块新卡换上,结果还是会断网,因为新卡在同一插槽,但 MAC 不同。这时候原本的按插槽匹配就很有用了。

反正不管你怎么设计,总会有一群人遇到网卡对不上的问题,无非是这一群人或者那一群人的区别而已。
OneLiteCore
4 天前
@msg7086 我能接受网卡损坏导致按照 Mac 的配置无法上网,也能接受用新的网卡刚插上去没配置无法上网,因为这些和网络是相关的,但 “插一块 SSD 导致断网” 则是反直觉且不可预测的,只不过这个是各种方案折中妥协后必然会出现的一个潜在问题而我刚好遇到了而已。

只能说就很黑色幽默。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1155012

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX