温馨提示×

使用Overlay进行Linux系统升级的技巧

小樊
40
2025-12-21 20:45:07
栏目: 智能运维

使用 Overlay 进行 Linux 系统升级的技巧

一 概念澄清与总体思路

  • OverlayFS 是一种联合文件系统,由 lowerdir(只读)upperdir(可写)workdir(工作目录) 组成,对上呈现为统一视图。升级的关键在于:让 lowerdir 先升级到新版本,再让 upperdir 平滑合并变更,必要时重建或重挂载 Overlay,使新内容生效。
  • 若你指的是 Docker/K8s 的 Overlay 网络,升级思路不同:应优先升级 Docker/Containerd/Kubernetes 与相关网络插件(如 Calico),并重启服务,而不是操作 OverlayFS。

二 基于 OverlayFS 的系统升级步骤

  • 准备与评估
    • 取得 root 权限;对关键数据与现有 upperdir 做完整备份(如 rsync 到安全位置)。
    • 明确挂载点与目录结构:确认 lowerdir/upperdir/workdir/mountpoint 的实际路径。
  • 升级底层只读层
    • lowerdir 指向新的系统根(如新 rootfs 或新基础镜像),或先在 lower 层执行系统升级:
      • Debian/Ubuntu:执行 sudo apt-get update && sudo apt-get upgrade
      • RHEL/CentOS/Fedora:执行 sudo yum updatesudo dnf update
    • 若有自定义脚本/配置,务必同步到新的 lowerdir
  • 合并与切换
    • 方案 A(推荐,保持现有会话):保持原 upperdir 不动,仅将 lowerdir 指向新版本,Overlay 会自动呈现新内容;必要时重启相关服务以加载新库/二进制。
    • 方案 B(重建 Overlay):卸载并重建,以新 lowerdir 生效
      sudo umount /path/to/mountpoint
      sudo mount -t overlay overlay \
        -o lowerdir=/path/to/newlower,upperdir=/path/to/upperdir,workdir=/path/to/workdir \
        /path/to/mountpoint
      
  • 验证
    • lscat 等检查关键文件版本与内容;查看系统日志定位潜在问题。

三 升级 Overlay 挂载配置的安全做法

  • 通过 /etc/fstab 管理(持久化)
    • 备份:sudo cp /etc/fstab /etc/fstab.bak
    • 编辑:将 lowerdir 改为新路径(按需调整 upperdir/workdir
      overlay /mnt/overlay overlay defaults,lowerdir=/path/to/newlower,upperdir=/path/to/upper,workdir=/path/to/work 0 0
      
    • 使配置生效:sudo umount /mnt/overlay && sudo mount -a
  • 临时切换(不改动 fstab)
    • 卸载后重挂:
      sudo umount /mnt/overlay
      sudo mount -t overlay overlay -o lowerdir=/path/to/newlower,upperdir=/path/to/upper,workdir=/path/to/work /mnt/overlay
      
  • 就地调整(部分场景)
    • 仅调整 upperdir 等挂载选项时,可尝试 remount(是否生效取决于内核与挂载选项,不保证对所有场景可用):
      sudo mount -o remount,upperdir=/new/path/to/upper /mnt/overlay
      
  • 提示:修改 /etc/fstab 前务必备份并确保新路径有效、权限正确;生产环境先在测试环境验证。

四 Docker Overlay 网络升级要点

  • 升级 Docker/Containerd(示例)
    sudo systemctl stop docker
    sudo yum remove -y docker-ce docker-ce-cli containerd.io    # 视现有安装方式调整
    sudo yum install -y docker-ce-<version> docker-ce-cli-<version> containerd.io-<version>
    sudo systemctl start docker
    
  • 升级 Kubernetes(如适用)
    sudo yum update -y kubeadm kubectl kubelet
    # 必要时按官方流程重新初始化或升级节点
    
  • 升级 Overlay 网络插件(如 Calico
    sudo yum update -y calico
    # 或使用对应项目的升级流程
    
  • 验证
    sudo systemctl status docker
    kubectl get nodes
    calicoctl get nodes
    
  • 说明:这类“Overlay”是容器网络方案,升级应围绕容器运行时与网络组件进行,而非 OverlayFS 文件系统。

五 常见陷阱与最佳实践

  • 升级顺序:先 lowerdir,再切换/重建 Overlay,避免直接在旧 lowerdir 上“就地”升级导致 upper 与 lower 不一致。
  • 备份与回滚:升级前备份 upperdir 与关键配置;保留旧 lowerdir 一段时间,便于快速回滚。
  • 不可变基础设施:尽量采用“新 lower + 复用 upper”的方式,减少状态迁移风险;必要时用 rsync 将必要的自定义从旧 upper 同步到新 lower。
  • 持久化与挂载:将 Overlay 挂载写入 /etc/fstab 统一管理;变更前先 umountmount -a 验证,避免开机失败。
  • 验证与观测:升级后用 ls/cat 检查关键文件版本,结合系统日志与容器/服务状态确认升级成功。

0