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 风险,反之亦然。
实操建议总结
- 备份先行:迁移前完整备份
/etc、/var/lib(数据库、容器数据等)和关键应用配置。 - 小范围试点:先在非生产环境或单台测试机上完成迁移,验证业务功能、网络连接、定时任务(cron)、日志轮转(logrotate)等是否正常。
- 灰度发布:如果是集群部署,采用灰度方式逐步迁移节点,避免全量切换导致不可逆故障。
- 文档更新:更新内部的运维手册、自动化脚本和 CI/CD 流水线,适配新的包管理器命令、路径和服务管理方式。
总的来说,从 CentOS 到 Anolis OS 的迁移是一个“平滑但有摩擦”的过程。大部分情况下,业务代码无需修改,但基础设施层的配置细节需要逐一核对。做好测试和回滚预案,就能平稳过渡。
云技术博客