努力
加油

CentOS切换到龙蜥OS时需要注意哪些配置变化?

CentOS 停服后,迁移到龙蜥 OS(Anolis OS)是不少国内企业的首选方案之一,毕竟它是阿里开源的、基于 RHEL/CentOS 生态重构的系统,兼容性做得相当不错。但“兼容”不代表“无缝”,在从 CentOS 7/8 切换到 Anolis OS 的过程中,有几个核心配置和底层逻辑的变化需要你特别留意,否则上线后容易踩坑。

1. 软件源与包管理器的细微差异

这是最直观的变化。虽然 yum 命令在 Anolis OS 中依然可用(通常指向 dnf 或兼容层),但默认的仓库地址变了。

  • 默认源变更:CentOS 的官方源已经归档或失效,而 Anolis OS 默认使用阿里云镜像站或其他国内主流镜像源。如果你的服务器之前配置了自定义的第三方 YUM 源(比如某些私有仓库或过时的 epel 源),迁移后可能会因为 GPG Key 校验失败或 URL 404 导致安装报错。
    • 建议:迁移前检查 /etc/yum.repos.d/ 下的所有 repo 文件,确保源地址有效,并更新 GPG Key。对于 Epel 源,Anolis 有专门的 epel-release 包,不要直接复用 CentOS 的旧 RPM 包。
  • DNF vs YUM:较新版本的 Anolis OS(如 8.x/9.x)更倾向于使用 dnf。虽然 yum 命令通常存在并作为 dnf 的别名,但在编写自动化脚本时,建议逐步将脚本中的 yum 替换为 dnf,以符合未来的演进方向。

2. 内核版本与驱动支持

CentOS 7 的内核长期停留在 3.10 系列,而 Anolis OS 8/9 通常搭载较新的主线内核(如 5.10+ 甚至更高)。

  • 硬件驱动:如果你运行的是老旧硬件,或者依赖特定的闭源驱动(如某些显卡、网卡或存储控制器),新内核可能导致驱动不兼容。
  • DKMS 模块:如果系统中有通过 DKMS 构建的第三方内核模块(如 VirtualBox 模块、特定数据库提速模块等),在升级内核后必须重新编译这些模块。Anolis OS 提供了 kernel-devel 和 dkms 工具链,需确保环境完整。
  • eBPF 支持:Anolis OS 对 eBPF 的支持更好,如果你之前使用了基于 netfilter 的老式防火墙规则或监控探针,考虑是否可迁移到 eBPF 架构以获得更好的性能。

3. Systemd 服务与启动流程

CentOS 7 使用 systemd 219,而 Anolis OS 8/9 使用更新的 systemd 版本。

  • 服务依赖关系:某些复杂的业务服务可能依赖于特定的 systemd 特性或时序。迁移后,如果发现服务启动失败,优先检查 journalctl -u <service> 日志,看是否有依赖项未就绪或超时问题。
  • SysVinit 兼容层:虽然 Anolis OS 完全支持 systemd,但如果你的旧系统中有大量 SysVinit 风格的脚本(位于 /etc/init.d/),systemd 会自动生成兼容单元文件。但要注意,这种自动转换可能不如原生 systemd unit 文件稳定,建议手动编写或优化关键服务的 .service 文件。

4. SELinux 策略变化

SELinux 在 CentOS 7 中默认是 Enforcing 模式,但在很多实际部署中被设置为 Permissive 或 Disabled。Anolis OS 同样启用 SELinux,但其策略库(policy)经过优化,可能与 CentOS 的策略不完全一致。

  • 布尔值(Booleans):某些常见的 SELinux boolean(如 httpd_enable_homedirs)在不同版本中的默认行为或名称可能有微调。
  • 调试方法:如果迁移后出现权限拒绝错误,先不要急着关闭 SELinux。使用 audit2allow 工具分析 /var/log/audit/audit.log,生成允许策略,再导入。直接禁用 SELinux 会带来安全风险,且在合规审计中可能不达标。

5. 网络配置与 NetworkManager

CentOS 7 默认使用 network-scripts(ifcfg 格式),而 CentOS 8 及后续版本(包括 Anolis OS)默认转向 NetworkManager 并推荐使用 nmcli 或 ifcfg 兼容模式。

  • 配置文件位置:网络接口配置文件仍在 /etc/sysconfig/network-scripts/ifcfg-*,但由 NetworkManager 管理。如果你之前通过修改 ifcfg 文件直接重启 network 服务来生效,现在应使用 nmcli connection reload 和 nmcli connection up <name>。
  • Bonding/Team 配置:对于高可用场景使用的 bond 或 team 接口,其配置语法基本保持向后兼容,但建议在 Anolis OS 上使用 nmcli 进行配置,以确保与 NetworkManager 的深度集成。

6. 容器化与云原生生态

Anolis OS 是阿里云主推的云操作系统,对 Kubernetes、Containerd 等云原生组件有深度优化。

  • Containerd 预装:Anolis OS 通常预装了 containerd,并且内核参数(如 net.ipv4.ip_forward、br_netfilter 等)可能已针对 K8s 进行了预设优化。
  • CNI 插件:如果使用 Calico、Flannel 等 CNI 插件,需注意其与内核版本的兼容性。Anolis OS 对 eBPF 数据平面(如 Calico BGP/eBPF mode)支持良好,可以考虑升级网络插件以利用此优势。

7. 安全补丁与生命周期管理

  • 长期支持(LTS):Anolis OS 提供 LTS 版本(如 Anolis OS 8 LTS),这意味着它会有长达数年的安全补丁支持。务必确认你选择的是 LTS 版本,而非普通滚动更新版本,以确保生产环境的稳定性。
  • 漏洞扫描:迁移后,重新运行安全基线扫描。由于内核和基础库版本变化,之前标记为“安全”的配置可能在新版本中存在新的 CVE 风险,反之亦然。

实操建议总结

  1. 备份先行:迁移前完整备份 /etc、/var/lib(数据库、容器数据等)和关键应用配置。
  2. 小范围试点:先在非生产环境或单台测试机上完成迁移,验证业务功能、网络连接、定时任务(cron)、日志轮转(logrotate)等是否正常。
  3. 灰度发布:如果是集群部署,采用灰度方式逐步迁移节点,避免全量切换导致不可逆故障。
  4. 文档更新:更新内部的运维手册、自动化脚本和 CI/CD 流水线,适配新的包管理器命令、路径和服务管理方式。

总的来说,从 CentOS 到 Anolis OS 的迁移是一个“平滑但有摩擦”的过程。大部分情况下,业务代码无需修改,但基础设施层的配置细节需要逐一核对。做好测试和回滚预案,就能平稳过渡。