You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu Server无人值守升级:如何避免重启服务并确定需忽略的软件包

Ubuntu Server无人值守升级:如何避免重启服务并确定需忽略的软件包

作为常年维护Ubuntu生产服务器的老鸟,太懂你这种怕自动更新搞崩运行中服务的焦虑了!尤其在20.04和22.04这两个长期支持版本上,既要保持系统安全更新,又不能让关键服务被强制重启,确实得精心挑选要忽略的软件包。结合我的实战经验,给你整理如下:

必须加入忽略列表的软件包及原因

  • Docker生态组件:不止docker本身,还要包含docker-ce、docker-ce-cli、containerd.io。这些组件更新时几乎必然会重启Docker守护进程,直接导致运行中的容器被强制停止或重启,严重影响业务连续性。
  • Systemd核心套件:systemd、systemd-sysv、systemd-timesyncd这类核心组件绝对不能让自动更新碰。Systemd是系统的初始化进程,它的重启会连带触发大量依赖服务的重启,甚至可能导致系统进入不稳定状态。
  • 高可用集群组件:除了你提到的corosync、pacemaker,还要加上pcs(集群配置工具)、fence-agents(隔离故障节点的组件)。这类组件更新后自动重启会触发集群的故障检测机制,很可能引发资源漂移、节点隔离甚至脑裂问题。
  • 容器编排核心组件:如果你的服务器跑了Kubernetes,kubelet、kubeadm、kubectl也必须加入黑名单。Kubelet的自动重启会直接导致节点上的所有Pod被重建,业务中断风险极高。
  • 存储底层组件:像lvm2(逻辑卷管理)、ceph-common(Ceph存储客户端)、iscsi-initiator-utils(iSCSI存储工具)这类存储相关组件,更新后自动重启可能导致挂载的存储卷中断,引发数据访问故障。
  • 网络核心配置工具:Ubuntu默认的netplan.io、networkd-dispatcher也建议忽略。这类组件更新重启可能导致网络配置重置,引发集群节点失联、容器网络异常等问题。

配置忽略列表的方法

在Ubuntu中,无人值守升级的配置文件位于/etc/apt/apt.conf.d/50unattended-upgrades,你可以在Unattended-Upgrade::Package-Blacklist区块中添加需要忽略的包:

Unattended-Upgrade::Package-Blacklist {
    "docker";
    "docker-ce";
    "containerd.io";
    "systemd";
    "systemd-sysv";
    "corosync";
    "pacemaker";
    "pcs";
    "kubelet";
    "lvm2";
    "netplan.io";
};

后续注意事项

忽略这些包后,千万不能忘了定期手动更新!建议每月固定一个维护窗口,按以下流程操作:

  1. 提前备份关键数据和配置
  2. 对业务做优雅停机(比如Docker容器先暂停流量、集群切换到维护模式)
  3. 手动执行apt update && apt install <要更新的包>完成升级
  4. 验证服务恢复正常后再恢复业务

备注:内容来源于stack exchange,提问作者KdgDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 10:59:51