企业服务器从CentOS 7.6迁移至AlmaLinux或Rocky Linux要注意哪些问题?

将企业服务器从 CentOS 7.6 迁移至 AlmaLinux 或 Rocky Linux(两者均为 RHEL 7 兼容发行版)是一项跨发行版的“就地升级”操作,但需特别注意:CentOS 7 → AlmaLinux/Rocky Linux 7 是可行的(同代迁移),而升级到 RHEL 8/9 或 AlmaLinux/Rocky 8/9 则属于跨大版本,官方不支持就地升级,必须重装。

以下针对 CentOS 7.6 → AlmaLinux 7.x 或 Rocky Linux 7.x(推荐 7.9) 的迁移,总结关键注意事项与最佳实践:


✅ 一、前提确认(迁移可行性判断)

项目 要求 检查命令
系统版本兼容性 必须为 CentOS 7.x(≤7.9),且内核 ≥ 3.10.0-957(7.6 可行) cat /etc/centos-release; uname -r
架构一致性 仅支持 x86_64(不支持 i386/ARM) uname -m
磁盘空间 //boot 需预留 ≥2GB 空闲(升级过程需下载 RPM、重建 initramfs) df -h
SELinux 状态 建议 enforcingpermissive(禁用 SELinux 可能导致策略失效) sestatus
系统干净度 无第三方内核(如 elrepo-kernel、kpatch)、无深度定制内核模块 rpm -q kernel | grep -v centos; lsmod | head -20

⚠️ 重要限制

  • ❌ 不支持从 CentOS 7 升级到 AlmaLinux/Rocky 8.x 或 9.x(RHEL 8/9 架构变化大,无官方升级路径);
  • ❌ 不支持 systemd 版本跨大版本(如 CentOS 7 systemd-219 → RHEL 8 systemd-239);
  • ✅ 官方唯一支持路径:CentOS 7.x → AlmaLinux 7.x / Rocky Linux 7.x(同为 RHEL 7 衍生版,ABI/API 兼容)。

✅ 二、迁移前必备准备

  1. 完整备份(不可跳过!)

    • 使用 rsync 或专业工具(Veeam, Bacula)备份 /etc, /var, /opt, /home, 数据库目录;
    • 备份 GRUB 配置、网络配置(/etc/sysconfig/network-scripts/)、自定义服务单元;
    • 快照(VM 环境)或物理机 PXE+救援盘备份
  2. 停用非必要服务 & 清理环境

    # 停止应用服务(如 httpd, nginx, mysql, custom apps)
    systemctl stop your-app.service
    
    # 清理旧内核(保留至少1个可用内核)
    package-cleanup --oldkernels --count=1
    
    # 更新当前系统到 CentOS 7.9(强烈建议,避免补丁差异)
    yum update -y && reboot
  3. 验证关键依赖与自定义软件

    • 检查是否使用了 centos-releasecentos-repos 等包(将被替换);
    • 确认所有第三方仓库(EPEL、Remi、Nginx 官方等)在目标系统中仍可用(Alma/Rocky 7 默认启用 EPEL);
    • 检查自编译软件(如 Python 3.9+、Node.js)是否依赖特定 CentOS 库(通常无问题,但需测试)。

✅ 三、迁移执行(以 Rocky Linux 7.9 为例,AlmaLinux 流程相同)

✅ 推荐使用官方迁移脚本(由 Rocky/Alma 团队维护):


# 1. 下载并校验迁移脚本(Rocky Linux)
curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh
sha256sum migrate2rocky.sh  # 对比官网发布的 checksum

2. 赋予执行权限并运行(自动处理 repo 替换、包替换、grub 更新)

sudo bash migrate2rocky.sh -r # -r 表示 Rocky;AlmaLinux 用 -a

3. 过程中会提示确认,选择 Y 继续

脚本将:

• 替换 /etc/yum.repos.d/ 下所有 centos- 为 rockylinux-(或 alma-*)

• 重装 core 包(glibc, systemd, kernel, etc.)

• 重建 initramfs 和 grub 配置

• 清理 centos-release 包,安装 rockylinux-release(或 almalinux-release)


> 🔍 **AlmaLinux 替代方案**(若 prefer Alma):
> ```bash
> curl -O https://raw.githubusercontent.com/AlmaLinux/almalinux-deploy/main/almalinux-deploy.sh
> sudo bash almalinux-deploy.sh
> ```

---

### ✅ 四、迁移后必检清单(生产环境上线前)
| 类别 | 检查项 | 命令/方法 |
|--------|---------|-------------|
| **基础系统** | 主机名、时区、语言 | `hostnamectl`, `timedatectl`, `localectl` |
| **内核与启动** | 默认内核是否为 Rocky/Alma 内核?GRUB 是否生效? | `uname -r`, `grubby --default-kernel`, `ls /boot/vmlinuz*` |
| **软件源** | YUM/DNF 源是否指向正确仓库?能否更新? | `yum repolist`, `yum makecache`, `yum check-update` |
| **关键服务** | SSH、network、firewalld、cron 是否自启且运行? | `systemctl list-units --state=failed`, `systemctl status sshd` |
| **安全机制** | SELinux 是否 enforcing?策略是否加载? | `sestatus -v`, `ausearch -m avc -ts recent` |
| **业务验证** | 应用端口监听、数据库连接、Web 页面访问、定时任务日志 | `ss -tlnp`, `mysql -u...`, `curl -I http://localhost` |
| **日志审计** | `/var/log/messages`, `journalctl -b` 中有无严重错误(如 kernel oops、selinux denials) | `journalctl -p 3 -b`(error 及以上) |

> 💡 提示:  
> - 若遇到 `Failed to start NetworkManager-wait-online.service`:检查网卡名是否变更(CentOS 7 默认 `eno1`/`ens33`,Rocky/Alma 可能一致,但若启用了 `biosdevname=0` 或 `net.ifnames=0` 则无影响);  
> - 若 `firewalld` 规则丢失:检查 `/etc/firewalld/zones/` 是否保留,或从备份恢复 `firewalld.conf` 和 zone 文件。

---

### ✅ 五、长期运维建议
- ✅ **订阅安全公告**:关注 [Rocky Linux Security Advisories](https://errata.rockylinux.org/) 或 [AlmaLinux Security](https://almalinux.org/security/);  
- ✅ **启用自动安全更新**(谨慎评估):  
  ```bash
  yum install yum-cron
  systemctl enable --now yum-cron
  # 编辑 /etc/yum/yum-cron.conf → 设置 update_cmd = security
  • 统一配置管理:将 /etc 配置纳入 Git + Ansible/Puppet,避免手工修改漂移;
  • 规划生命周期:Rocky Linux 7 / AlmaLinux 7 支持至 2024年6月30日(RHEL 7 EOL),建议同步规划向 Rocky/Alma 8 或 9 迁移(需重装,非就地升级)。

❌ 六、常见陷阱与避坑指南

问题现象 原因 解决方案
yum update 报错 “Cannot retrieve metalink…” epel-release 未适配新 baseurl yum reinstall epel-release 或手动编辑 /etc/yum.repos.d/epel.repo
登录后提示 -bash: command not found(如 ls, cp glibc 升级中断或损坏 从救援模式 chroot,重装 glibc: yum reinstall glibc --disablerepo=* --enablerepo=base
Docker 启动失败(cgroup v2 相关) Rocky/Alma 7.9 默认启用 cgroup v2(CentOS 7.6 默认 v1) /etc/default/grub 添加 systemd.unified_cgroup_hierarchy=0,然后 grub2-mkconfig -o /boot/grub2/grub.cfg
自定义内核模块(如 ZFS、NVIDIA)无法加载 模块未为新内核重新构建 重新安装对应 kmod 包,或 dkms build/install(需安装 kernel-devel

✅ 总结:迁移决策树

graph TD
A[CentOS 7.6] --> B{目标版本?}
B -->|Rocky/Alma 7.x| C[✅ 就地迁移:用官方脚本]
B -->|Rocky/Alma 8.x/9.x| D[❌ 不支持就地升级 → 必须重装]
C --> E[备份 → 更新至7.9 → 运行 migrate2rocky.sh → 全面验证]
D --> F[制定重装方案:PXE/Autoinstall + 配置即代码 + 数据迁移]

📌 最后建议

  • 先在测试环境完整走通流程(含回滚演练)
  • 生产环境安排维护窗口,预留 2–3 小时(含验证)
  • 记录所有手工调整,沉淀为自动化脚本
  • 迁移完成后,立即更新监控告警中的 OS 标签(Zabbix/Prometheus)

如需,我可提供:

  • 定制化迁移检查清单(Excel/Markdown)
  • 自动化验证脚本(Shell/Ansible)
  • Rocky/Alma 7.9 最小化部署模板(Kickstart)
  • 向 RHEL 8/9 迁移的分阶段重装方案

欢迎随时提出具体场景(如含 Oracle DB、Kubernetes 集群、老旧 Java 应用),我可针对性补充建议。

未经允许不得转载:云知道CLOUD » 企业服务器从CentOS 7.6迁移至AlmaLinux或Rocky Linux要注意哪些问题?