我更新了 3 台机器,一台是 debian 9,两台是 ubuntu,全部都完全失去了网络访问权限。 Debian升级到一半失败了,但是ubuntu的好像顺利。
故障似乎出现在第 1 层:交换机看到连接(“向上”),但无法从计算机接收 MAC 地址。机器本身将链接显示为“无载体”。 RJ45 上的灯亮起。机器有2个不同的网卡,结果是一样的。
我完全困惑于为什么具有 3 个不同网卡和 2 个不同操作系统的 3 个不同系统会在同一天以相同的方式失败。
lshw*-network:0 DISABLED
全部显示。 dmesg 没有显示驱动程序有任何问题(我看到驱动程序加载了lsmod)
.
做一个systemctl restart NetworkManager.service
让我进入紧急模式。
我应该检查是否有非常低水平的服务?我迷路了。
我应该补充一点,当使用 LiveCD 启动时,网络状况良好。
编辑:为了扩展我的评论,在浏览 ubuntu 系统的日志时,我看到一条消息"A start job is running for dev-sdb1.device"
,并且注意到该磁盘没有被安装。查看/etc/fstab
并lsblk
发现blkid
该磁盘在升级过程中已从另一个名称(例如 )移动/dev/sdc1
(为什么?!?)。因此我更新了 fstab 以使用 UUID 而不是设备名称。我重新启动,网络恢复了!
我完全不明白为什么如果无法安装小数据磁盘,网络就会完全失败。
编辑:
# ethtool -i eth0
driver: tg3
version: 3.137
firmware-version: FFV20.2.17 bc 5720-v1.39
expansion-rom-version:
bus-info: 0000:01:00.0
supports-statistics: yes
supports-tests: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no
答案1
默认情况下,systemd
它systemd-fstab-generator
会将列出的所有本地磁盘/etc/fstab
视为必需的,如果其中之一无法在启动时安装,系统将进入紧急模式。如果某些本地磁盘不是必需的,则应考虑使用nofail
mount 选项显式标记它们。
你说“做一个systemctl restart NetworkManager.service
让你进入紧急模式”,但你确定系统在此之前没有处于紧急模式吗?有时,在出现紧急模式提示时,控制台上可能会出现其他消息,这可能会掩盖您实际上处于紧急模式的通知。
当未标记挂载选项的本地文件系统nofail
无法挂载时,这意味着系统将无法到达local-fs.target
,这是到达 的先决条件sysinit.target
。网络初始化仅发生(至少在 Debian/Ubuntu 上)后 sysinit.target
已达到。请参阅 处的图表,man 7 bootup
了解在基于 的引导过程.target
中充当固定点的各种 s 。systemd
如果您的网络接口由 管理NetworkManager
,则在 Debian 上NetworkManager.service
仅在 后启动sysinit.target
。如果您使用经典的 Debian/etc/network/interfaces
来配置您的网络接口,那么networking.service
将应用这些设置...但即使这样也有After=local-fs.target
对其的依赖性,因此 iflocal-fs.target
永远不会达到(即本地文件系统之一无法挂载并且没有标记为非) - 必要),然后网络将不会启动。
因此,看来您的“网络第 1 层故障”可能根本就不是故障:网络适配器驱动程序显然已加载,但只是还没有被告知激活接口,因为早期的本地文件系统故障阻止了系统在启动过程中不会走那么远。
默认情况下,经典/dev/sdX
磁盘名称是在检测到磁盘设备时按照严格的先到先得原则分配的。每个存储控制器驱动程序将自行决定如何在驱动程序启动时将其管理的设备呈现给内核的其余部分。 SATA 和 SAS 驱动程序可能采用各个 SATA/SAS 链路基于硬件的编号; FibreChannel HBA 驱动程序可能按照 WWID 顺序或具有一些预定义的顺序;硬件 RAID 控制器可能按照定义各种 RAID 集的顺序运行。如果您有多个存储控制器,它们的驱动程序模块的加载顺序也将发挥重要作用。然后有可能磁盘已被热插拔,并且将收到“乱序”的设备名称;除非采取措施使该名称持久存在,否则此类磁盘将在下次重新启动时在检测顺序中占据其标准位置,从而可能会使其后面的所有其他磁盘多出一个位置。
/dev/sdX
这就是当前建议的做法是不要在 中使用名称的原因之一/etc/fstab
:您应该根据您认为是磁盘或文件系统的主要标识符,使用UUID=
orLABEL=
语法或各种名称来代替。/dev/disk/by-*/*
答案2
2个Ubuntu系统:
为了扩展我的评论,在查看日志时,我看到一条消息"A start job is running for dev-sdb1.device"
,并且注意到该磁盘没有被安装。查看/etc/fstab
并lsblk
发现blkid
该磁盘在升级过程中已从另一个名称(例如 )移动/dev/sdc1
(为什么?!?)。因此我更新了 fstab 以使用 UUID 而不是设备名称。我重新启动,网络恢复了!
我完全不明白为什么如果无法安装小数据磁盘,网络就会完全失败。但问题解决了。
在 Debian 系统上,情况要复杂得多:
我安装了 Debian 10 DVD。用于apt-cdrom
启用它/etc/apt/sources
并注释掉所有其他(现在无用的网络)源。设法完成系统更新apt update; apt dist-upgrade
。然后我重新安装了网络驱动程序(tg3 和 bnx2x)与dpkg -i...
。执行此操作时,eth0 和 eth6 实际上交换了位置,因此我必须更新/etc/network/interfaces
。重启后,网络恢复正常!我只需要恢复/etc/apt/sources
并再次更新和升级。