从 CentOS 迁移到 EulerOS 2.0(现多称为 openEuler 或华为 EulerOS)是一个涉及系统底层、软件生态和运维习惯的综合性工程。虽然两者都基于 RHEL/CentOS 体系,但 EulerOS 在安全性、内核优化和包管理策略上有显著差异。
以下是迁移过程中需要重点关注的调整领域及具体建议:
1. 核心架构与内核差异
- 内核版本与特性:EulerOS 2.0 通常搭载定制优化的内核(如
kernel-uek),针对鲲鹏(ARM64)或 x86_64 架构进行了性能调优。- 检查项:确认业务是否依赖特定的内核模块(如旧版网卡驱动、存储驱动)。如果业务强依赖特定内核参数,需评估是否需要重新编译模块。
- 架构兼容性:如果你是从 x86 的 CentOS 迁移到 ARM64(鲲鹏)的 EulerOS,二进制不兼容是最大挑战。所有自定义编译的二进制程序(非源码)必须重新编译。如果是同架构迁移,则相对平滑。
- SELinux 策略:EulerOS 默认开启 SELinux 且策略更严格(尤其是针对容器化环境)。
- 调整:不要直接关闭 SELinux。应使用
audit2allow分析报错日志,生成针对性的策略文件,或者调整应用配置文件以符合安全上下文。
- 调整:不要直接关闭 SELinux。应使用
2. 包管理与软件源
- 包管理器变更:CentOS 7/8 主要使用
yum/dnf,而 EulerOS 2.0 全面支持并推荐使用opkg(部分场景) 或深度集成的dnf+rpm组合,但其软件源结构完全不同。- 源配置:CentOS 的
/etc/yum.repos.d/下的.repo文件不能直接使用。你需要配置 EulerOS 的软件源(通常通过euleros-repo工具或官方提供的镜像地址)。 - 命令差异:虽然
yum命令仍存在,但推荐统一切换到dnf或 EulerOS 专用的维护脚本。注意某些第三方仓库(如 EPEL)在 EulerOS 上可能没有对应版本,需寻找替代方案或手动编译安装。
- 源配置:CentOS 的
- 软件包名称变化:部分基础包的命名规则可能微调(例如
python2被彻底移除,强制使用 Python 3;某些库的名称前缀可能增加euler标识)。- 行动:列出当前生产环境的 RPM 包清单,对比 EulerOS 官方仓库,标记缺失包并寻找等价物。
3. 启动与服务管理
- Systemd 配置:EulerOS 对 systemd 的服务单元文件有标准化要求。
- 检查:检查自定义的 Systemd 服务文件,确保路径引用正确(EulerOS 的目录结构可能与 CentOS 略有不同,如
/usr/local的使用规范)。 - 开机自启:迁移后务必验证关键服务的
systemctl enable状态,防止因配置未继承导致服务无法自启。
- 检查:检查自定义的 Systemd 服务文件,确保路径引用正确(EulerOS 的目录结构可能与 CentOS 略有不同,如
- 网络配置:EulerOS 倾向于使用
NetworkManager或新的网络配置工具netplan(取决于具体发行版版本),传统的/etc/sysconfig/network-scripts/ifcfg-*文件在某些新配置下可能不再优先读取。- 调整:建议使用
nmcli或编辑/etc/netplan/下的 yaml 文件来管理网络,确保迁移后 IP 和网络连通性正常。
- 调整:建议使用
4. 数据库与应用中间件
- 数据库:MySQL、PostgreSQL、Oracle 等商业数据库在迁移时,需注意 EulerOS 对内存管理(如 HugePages)和 IO 调度器的默认设置不同。
- 调整:重新校准数据库的
my.cnf或postgresql.conf,特别是针对 NUMA 架构(如果是鲲鹏服务器)的绑定设置。
- 调整:重新校准数据库的
- Java/Python 环境:
- JDK:EulerOS 通常预装 OpenJDK,但版本可能与 CentOS 上的 Oracle JDK 不同。建议显式指定 JDK 路径或使用
alternatives管理。 - Python:CentOS 7 默认 Python 2.7,EulerOS 2.0 通常默认 Python 3.x。如果代码中有硬编码的
#!/usr/bin/python,必须修改为#!/usr/bin/python3或更新update-alternatives。
- JDK:EulerOS 通常预装 OpenJDK,但版本可能与 CentOS 上的 Oracle JDK 不同。建议显式指定 JDK 路径或使用
5. 安全合规与审计
- 审计机制:EulerOS 内置了更完善的审计框架(Auditd 配置更细粒度)。
- 调整:检查原有的审计规则是否会导致误报或性能问题,根据新系统的日志路径调整监控脚本。
- 漏洞扫描:由于底层组件版本更新,之前 CentOS 上的“已知漏洞”可能在 EulerOS 上已修复,但也可能引入新的依赖风险,需重新进行基线扫描。
6. 迁移实操建议流程
- 环境评估:使用
inventory工具梳理现有资产(CPU 架构、内存、磁盘、软件列表)。 - P2V/V2V 转换:
- 如果是虚拟机迁移,可使用华为云提供的迁移工具(如 HCS Migration Tool 或 CloudForge)将 CentOS 镜像转换为 EulerOS 兼容格式。
- 如果是物理机重装,需提前备份数据,准备 EulerOS ISO 镜像。
- 沙箱测试:切勿直接在生产环境操作。搭建一个与生产环境配置一致的测试集群,完整运行业务逻辑,重点测试高并发、IO 密集型和长连接场景。
- 灰度发布:采用蓝绿部署或流量切分策略,先迁移非核心业务,观察稳定性后再全量切换。
- 回滚预案:保留 CentOS 快照或镜像至少一周,确保在遇到严重兼容性问题时能秒级回退。
总结
从 CentOS 迁移到 EulerOS 2.0 的核心不在于“复制粘贴”,而在于适应新的安全基线和硬件优化策略。最关键的步骤是解决依赖包的兼容性问题以及重新配置网络和启动服务。建议在迁移前详细阅读 Huawei 官方发布的《EulerOS 迁移指南》和《兼容性矩阵》,并充分利用其提供的自动化迁移脚本以减少人为失误。
云小栈