Skip to content

netplan apply 警告 ovsdb-server.service 未运行及 systemd-networkd-wait-online 超时问题

问题描述

在 Ubuntu 系统更新后执行 sudo netplan apply 命令时,出现以下警告:

none
WARNING:root:Cannot call Open vSwitch: ovsdb-server.service is not running.

同时系统还伴随网络连接问题,表现为 systemd-networkd-wait-online.service 服务超时失败:

none
× systemd-networkd-wait-online.service - Wait for Network to be Configured
     Active: failed (Result: timeout)

这些异常通常发生在以下情况后:

  • 执行了 apt-get upgrade 系统更新操作
  • 系统重启后出现网络连接超时
  • 尽管物理网络连接正常(获取到 IP 地址),但服务启动失败

解决方案

解决 ovsdb-server.service 警告

根本原因

这是 Ubuntu 22.04 (Jammy Jellyfish) 中 netplan 的已知 Bug(LP#2041727)。即使未安装 Open vSwitch,netplan 仍会错误检查 ovsdb 服务状态。

通用解决方案(普通 Ubuntu 系统)

bash
# 安装依赖包
sudo apt update
sudo apt install openvswitch-switch-dpdk -y

# 重新应用网络配置
sudo netplan apply

Raspberry Pi 设备专属方案

bash
# 安装树莓派内核扩展模块
sudo apt install linux-modules-extra-raspi

# 安装 Open vSwitch DPDK 支持
sudo apt install openvswitch-switch-dpdk

# 重新生成网络配置
sudo netplan try

验证修复:

bash
sudo netplan apply  # 警告信息应不再出现

解决 systemd-networkd-wait-online 超时问题

服务作用

systemd-networkd-wait-online.service 用于等待所有由 systemd-networkd 管理的网络接口就绪。超时通常由不相关接口处理或默认等待时间不足引起。

优化服务配置

  1. 编辑服务配置文件

    bash
    sudo vim /lib/systemd/system/systemd-networkd-wait-online.service
  2. 修改 [Service] 部分(按需求添加配置项):

    ini
    [Service]
    Type=oneshot
    # 指定需等待的接口(替换为你的实际接口名)
    ExecStart=/lib/systemd/systemd-networkd-wait-online --interface=wlan0 --interface=eth0
    RemainAfterExit=yes
    # 缩短超时时间(推荐30秒)
    TimeoutStartSec=30sec

应用配置更改

bash
# 重载 systemd 配置
sudo systemctl daemon-reload

# 重启服务
sudo systemctl restart systemd-networkd-wait-online.service

# 检查服务状态
sudo systemctl status systemd-networkd-wait-online.service

替代方案(适用于简单网络环境)

如果只需等待特定接口就绪且不依赖此服务,可直接禁用:

bash
sudo systemctl disable systemd-networkd-wait-online.service
sudo systemctl mask systemd-networkd-wait-online.service

原理说明

  1. ovsdb-server 警告

    • 安装 openvswitch-switch-dpdk 提供缺失的 OVS 数据库服务依赖
    • 树莓派需额外内核模块支持虚拟网络功能
    • 官方 Bug 报告 已确认此问题
  2. 网络等待超时优化

    • --interface 参数聚焦关键网络接口,避免无关接口阻塞启动
    • TimeoutStartSec=30sec 覆盖默认2分钟设置,匹配大多数场景
    • 树莓派等设备启动较慢,30秒超时窗口更合理

最终验证

修复后应达到:

bash
# 无 ovsdb 警告
sudo netplan apply

# 网络等待服务正常激活
systemctl status systemd-networkd-wait-online.service | grep "Active: active"

如问题持续,建议检查网络配置文件:

bash
# 检查网络接口状态
ip a

# 验证 netplan 配置
sudo netplan --debug apply