从 CentOS 7.9 迁移到 Alibaba Cloud Linux 有哪些注意事项?

从 CentOS 7.9 迁移到 Alibaba Cloud Linux(以下简称 ACL)是一个在云原生时代非常典型且明智的技术决策。阿里云官方已明确停止维护 CentOS 操作系统,而 Alibaba Cloud Linux 3/2 是内核级兼容 CentOS/RHEL 的发行版,旨在提供无缝迁移体验。

但在实际操作中,“无缝”不代表“无脑”。以下是基于生产环境经验总结的关键注意事项,分为版本选择、兼容性陷阱、驱动与内核、运维习惯、以及数据备份五个维度。

1. 版本选择:ACL 2 vs ACL 3

这是第一步,也是最容易出错的一步。你需要根据业务对内核版本和软件生态的需求来决定。

  • Alibaba Cloud Linux 2
    • 内核:基于 Linux 4.19。
    • 兼容性:完全兼容 CentOS 7。如果你使用的是较老的硬件虚拟化实例,或者依赖某些仅支持 EL7 生态的老软件包,选这个。
    • 适用场景:追求极致稳定性,业务代码对内核特性无特殊要求,希望最小化改动。
  • Alibaba Cloud Linux 3
    • 内核:基于 Linux 5.10(长期支持版本)。
    • 兼容性:兼容 CentOS 8 / RHEL 8 生态。性能更强,支持 eBPF 等现代技术,容器启动速度更快,网络性能更优。
    • 适用场景:新建业务、高性能计算、微服务架构、需要利用最新内核特性的场景。
    • 注意:如果你的应用强依赖 CentOS 7 特有的库或二进制文件,迁移到 ACL 3 可能需要重新编译部分组件。

2. 内核模块与专有驱动(最易踩坑点)

CentOS 7 用户常安装第三方内核模块(如 NVIDIA GPU 驱动、特定网卡驱动、加密狗驱动等)。这些驱动通常通过 DKMS 或直接修改源码方式加载。

  • 内核 ABI 变化:虽然 ACL 兼容 CentOS,但内核版本不同(4.19 vs 5.10),内核符号表(Kernel Symbols)可能发生变化。直接复制旧内核模块到新系统会导致 modprobe 失败。
  • 解决方案
    • 优先使用官方仓库驱动:检查阿里云镜像源是否提供了对应硬件的最新驱动包。
    • 重新编译:对于闭源驱动(如 NVIDIA),必须在新的 ACL 系统上下载对应版本的安装包重新安装,而不是沿用旧的二进制文件。
    • 检查 lsmod:迁移后务必对比 lsmod 输出,确保所有必要模块已正确加载。

3. 文件系统与挂载点

  • XFS vs EXT4
    • CentOS 7 默认使用 XFS,ACL 也默认使用 XFS。如果原系统是 EXT4,迁移时建议转换为 XFS 以获得更好的性能和快照支持(阿里云快照依赖于底层存储格式)。
    • 警告:不要在运行中的系统中直接转换文件系统类型。建议在创建新 ACL 实例时格式化磁盘为 XFS,然后迁移数据。
  • UUID 与 fstab
    • 迁移后,磁盘 UUID 会改变。必须更新 /etc/fstab 文件,否则系统重启后将无法挂载根分区或其他数据盘,导致进入紧急模式(Emergency Mode)。
    • 使用 blkid 获取新磁盘 UUID,并替换旧的 UUID。

4. 软件包管理与依赖冲突

  • YUM/DNF 源切换
    • CentOS 7 使用 yum,ACL 2 也使用 yum,ACL 3 推荐使用 dnf(兼容 yum 命令)。
    • 清理缓存:迁移前执行 yum clean all,避免旧源的元数据污染。
    • 禁用 CentOS 源:确保 /etc/yum.repos.d/ 下没有残留的 CentOS 官方 repo 文件,否则可能导致包版本冲突或安全更新混乱。
  • EPEL 仓库
    • EPEL 仓库的版本需与新 OS 匹配。CentOS 7 的 EPEL 7 不能用于 ACL 3(对应 EL8)。需要安装对应版本的 EPEL 包。
  • 自定义 RPM 包
    • 如果使用了自编译的 RPM 包,需在 ACL 环境下重新编译,因为 glibc、openssl 等基础库的版本可能不同。

5. 云平台特定配置(关键!)

这是与普通物理机迁移最大的不同点。

  • 云助手与 Agent
    • 阿里云 ECS 依赖 cloud-inityunohost-agent(或旧版 aliyun-service)。迁移后需确认这些服务是否正常启动,否则无法通过控制台执行命令、重置密码或查看日志。
    • 操作:在新 ACL 实例上执行 systemctl enable cloud-initsystemctl start aliyun-service(具体名称依版本而定)。
  • 安全组与防火墙
    • CentOS 7 常用 firewalldiptables。ACL 同样支持。
    • 注意:迁移后,不要立即关闭安全组。先在阿里云控制台测试端口连通性,再在系统内部调整防火墙规则,避免因规则错误导致失联。
  • SSH 密钥对
    • 如果使用密钥登录,需将私钥复制到新用户主目录下的 .ssh/authorized_keys,并确保权限正确(chmod 600 authorized_keys, chmod 700 .ssh)。
    • 如果使用密码登录,需在阿里云控制台设置初始密码,并在系统中启用 PermitRootLogin yes(如需 root 远程登录,但不推荐)。

6. 迁移策略建议(实战路径)

不要尝试直接在原 CentOS 7 机器上“升级”到 ACL,风险极高。推荐以下两种安全路径:

方案 A:旁路迁移(推荐,低风险)

  1. 创建新实例:在阿里云控制台创建一台同地域、同规格的 Alibaba Cloud Linux 实例。
  2. 数据同步
    • 使用 rsyncscp 将 CentOS 7 上的数据、配置文件、代码同步到新 ACL 实例。
    • 排除 /proc, /sys, /dev 等虚拟文件系统。
    • 特别注意 /etc/hostname, /etc/sysconfig/network-scripts/ifcfg-* 等网络相关文件的适配。
  3. 环境部署:在新 ACL 实例上安装运行所需的基础软件(Nginx, MySQL, Java, Python 等)。
  4. 测试验证:在新实例上运行应用,进行功能测试。
  5. 切换 DNS/SLB:确认无误后,将域名解析或负载均衡后端指向新 ACL 实例 IP。
  6. 退役旧实例:观察一段时间无异常后,释放 CentOS 7 实例。

方案 B:镜像迁移(适合复杂环境)

  1. 制作自定义镜像:在 CentOS 7 实例上安装必要的工具和脚本,然后通过阿里云控制台创建自定义镜像。
  2. 克隆实例:使用该自定义镜像创建新的 Alibaba Cloud Linux 实例。
  3. 后续调整:新实例启动后,仍需进行上述第 3-5 步的环境适配和数据校验。

7. 合规与安全提醒

  • 许可证合规:Alibaba Cloud Linux 是免费提供的开源操作系统,但请确保你的业务使用符合其开源协议(GPLv2+)。企业内部分发需注意不再捆绑未授权的商业组件。
  • 漏洞修复:迁移后,立即执行 yum updatednf update,确保系统补丁为最新状态。阿里云会定期发布针对 ACL 的安全公告,需订阅并及时响应。
  • 监控告警:迁移期间,监控系统(如 Prometheus + Grafana,或阿里云云监控)应同时覆盖新旧实例,以便对比性能指标和发现潜在问题。

总结 checklist

项目 检查项
版本 确定使用 ACL 2 (EL7) 还是 ACL 3 (EL8)
内核 重新编译或安装所有第三方内核模块(GPU、网卡等)
磁盘 更新 /etc/fstab 中的 UUID,确认文件系统类型(推荐 XFS)
网络 配置静态 IP 或 DHCP,验证云主机 Agent (cloud-init) 正常运行
应用 测试所有依赖库版本,特别是 glibc、openssl、python 等基础组件
安全 更新防火墙规则,验证 SSH 登录,扫描已知漏洞
回滚 保留 CentOS 7 实例快照至少 7 天,以备紧急回滚

迁移的核心原则是:先建新房,再搬家具,最后换钥匙。 切忌在原系统上直接动刀。

未经允许不得转载:CLOUD云枢 » 从 CentOS 7.9 迁移到 Alibaba Cloud Linux 有哪些注意事项?