从 CentOS 迁移到 openEuler 20.03(通常指基于 openEuler 20.03 LTS 的版本),虽然两者都源自 RHEL/CentOS 体系,但 openEuler 作为华为主导的国产操作系统,在架构支持、软件包管理、内核特性及生态兼容性上存在显著差异。以下是迁移时需要重点关注的系统差异和注意事项:
一、核心架构与发行版定位差异
| 项目 | CentOS 7/8 | openEuler 20.03 |
|---|---|---|
| 上游来源 | RHEL(红帽企业 Linux) | openEuler(开源社区驱动,兼容 RHEL 但独立演进) |
| 主要架构支持 | x86_64, aarch64(部分版本) | x86_64, aarch64(深度优化),LoongArch(龙芯)、Kunpeng 等国产芯片原生支持 |
| 生命周期 | CentOS 7 EOL: 2024-06;CentOS Stream 为滚动预览版 | openEuler 20.03 LTS 支持至 2029 年(官方长期支持) |
| 默认初始化系统 | systemd(CentOS 7+) | systemd(完全兼容) |
✅ 建议:确认目标服务器 CPU 架构是否匹配(如使用鲲鹏/飞腾/龙芯需选用对应 openEuler 镜像)。
二、包管理与依赖处理差异
1. 包管理器变化
- CentOS:
yum(CentOS 7)或dnf(CentOS 8+) - openEuler 20.03:默认使用
dnf(兼容 yum 命令),但底层仓库结构不同:- 基础仓库名:
baseos,appstream(类似 RHEL 8+) - 缺少部分 CentOS 特有的扩展源(如
extras、epel需手动配置)
- 基础仓库名:
2. 第三方软件源适配
- EPEL 源:openEuler 提供官方维护的 openEuler Extra Packages,但不直接兼容 EPEL。
- 需改用
openeuler-extras或通过copr构建兼容包。 - 某些 CentOS 常用工具(如
htop,nethogs)可能名称或路径略有变化。
- 需改用
- RPM 包兼容性:
- 大多数标准 RPM 可安装,但依赖库版本可能不同(如 glibc、openssl、python 等)。
- 建议优先使用 openEuler 官方仓库中的软件包,避免强制安装 CentOS 专用 RPM。
🔧 操作提示:
# 查看可用仓库 dnf repolist all # 安装常见工具(推荐用 openEuler 源) dnf install htop vim git
三、内核与安全特性差异
| 特性 | CentOS 7/8 | openEuler 20.03 |
|---|---|---|
| 默认内核版本 | 3.10 (C7), 4.18 (C8) | 5.10+(LTS 内核,含更多安全加固) |
| SELinux | 默认启用(策略较宽松) | 默认启用,策略更严格(符合国密要求) |
| 国密支持 | ❌ 无原生支持 | ✅ 内置 SM2/SM3/SM4 算法库,支持国密 SSL/TLS |
| 安全启动(Secure Boot) | 可选配置 | 默认开启,需正确签名引导加载程序 |
| 审计系统 | auditd | auditd + 增强日志合规性(满足等保 2.0) |
⚠️ 注意:若应用依赖特定 OpenSSL 版本(如旧版 Python 模块),需检查兼容性。openEuler 默认使用 OpenSSL 1.1.1 或更高版本。
四、服务与配置文件变更
-
网络配置:
- CentOS 7:
ifcfg-eth0(network-scripts) - openEuler 20.03:推荐使用
NetworkManager+nmcli,ifcfg-*仍兼容但逐步弃用。 - 建议迁移后统一使用
nmcli管理网络。
- CentOS 7:
-
防火墙:
- CentOS:
firewalld(默认)或iptables - openEuler:同样使用
firewalld,但规则模板更贴近国产化场景(如默认关闭非必要端口)
- CentOS:
-
时间同步:
- CentOS:
chronyd或ntpd - openEuler:默认
chrony,并集成 NTP 服务器白名单机制
- CentOS:
五、数据库与中间件兼容性
| 组件 | CentOS | openEuler 20.03 |
|---|---|---|
| MySQL/MariaDB | 官方源或 YUM 源 | 推荐使用 openEuler 官方源 或 MariaDB 10.5+ |
| PostgreSQL | 10~14 版本 | 支持 13~15,部分插件需重新编译 |
| Redis | 3.x~6.x | 官方源提供 6.x~7.x,性能优化针对 ARM/x86 双架构 |
| Tomcat/JDK | OpenJDK 8/11 | 提供 OpenJDK 8/11/17,并集成 毕昇 JDK(国产优化版) |
💡 提示:若使用商业数据库(如 Oracle DB、达梦),请确认其是否在 openEuler 认证列表中。
六、迁移实操建议步骤
-
环境评估
- 使用
rpm -qa | sort > centos_pkgs.txt导出已安装包列表。 - 对比 openEuler 官方文档中的“兼容性矩阵”。
- 使用
-
备份与快照
- 对关键数据、配置文件(
/etc,/var/www,/home)做完整备份。 - 创建虚拟机快照或物理机镜像。
- 对关键数据、配置文件(
-
最小化安装测试
- 先在测试机安装 openEuler 20.03 Minimal 版本。
- 尝试安装核心业务依赖(如 Java、Nginx、MySQL)。
-
应用适配调整
- 修改脚本中硬编码路径(如
/usr/bin/python→/usr/bin/python3)。 - 替换非兼容命令(如
service→systemctl,chkconfig→systemctl enable)。
- 修改脚本中硬编码路径(如
-
性能与安全调优
- 启用 SELinux 策略(按业务需求设置模式:enforcing/permissive)。
- 配置国密证书(如需通过等保测评)。
- 使用
tuned工具优化系统参数(如内存管理、IO 调度)。
-
验证与回滚计划
- 执行功能测试、压力测试。
- 保留 CentOS 原系统至少 30 天,以便紧急回退。
七、官方资源推荐
- 📚 openEuler 官方文档
- 📦 openEuler 软件源镜像站
- 🛠️ openEuler 迁移指南(GitHub)
- 📞 技术支持:联系华为云或本地授权服务商获取迁移咨询服务。
✅ 总结:
从 CentOS 迁移到 openEuler 20.03 是可行的,但需重点关注包源替代、内核升级、国密支持、网络配置方式变化等问题。建议在正式生产前完成充分测试,并制定详细的回滚方案。对于关键业务系统,强烈建议联合原厂或专业团队进行迁移验证。
如需具体某类应用(如 Web 服务、数据库集群)的迁移 checklist,我可进一步提供详细清单。
云小栈