Skip to content

25. 系统迁移与升级

本章节指导在 RHEL 8.10(主机名 ZSLinux)上使用 SecureCRT 进行系统迁移和升级,配合 SecureFX 传输备份和配置文件。内容涵盖系统备份与迁移(rsync)、RHEL 8 升级(leapp)及跨版本迁移注意事项,以数据迁移和系统升级为例,全面实用,适合初学者快速掌握和运维人员日常维护。所有操作在 ZSLinux 环境中测试,确保实验一致性。

25.1 前提条件

  • RHEL 8.10 已安装(参考第 1 章),主机名设置为 ZSLinux.
  • 使用 SecureCRT 登录(SSH2 协议,端口 2222,参考第 6 章).
  • 使用 SecureFX 传输文件(SFTP 协议).
  • 具有 root 或 sudo 权限.
  • 系统已订阅并启用 RHEL 和 EPEL 仓库(参考第 4 和 7 章).
  • 防火墙和 SELinux 启用(参考第 13 章).
  • 网络连接正常,时间同步配置完成(参考第 3 章).
  • 目标服务器(示例 IP:192.168.1.200)已准备好,SSH 免密登录配置完成(参考第 6 章).

25.2 系统迁移

25.2.1 系统备份

  • 创建系统备份(参考第 17 章):
    bash
    tar -zcvf /backup/system-$(date +%F).tar.gz /etc /var /home  # 备份关键目录
    rsync -av /backup/system-$(date +%F).tar.gz 192.168.1.200:/backup  # 传输备份到目标服务器

25.2.2 使用 rsync 迁移系统数据

  • 迁移系统数据到目标服务器:
    bash
    rsync -av --progress /etc root@192.168.1.200:/etc  # 迁移 /etc 目录
    rsync -av --progress /var root@192.168.1.200:/var  # 迁移 /var 目录
    rsync -av --progress /home root@192.168.1.200:/home  # 迁移 /home 目录

25.2.3 迁移用户与配置文件

  • 迁移用户账户:
    bash
    getent passwd > /backup/passwd.bak  # 备份用户账户信息
    getent group > /backup/group.bak  # 备份用户组信息
    rsync -av /backup/passwd.bak /backup/group.bak root@192.168.1.200:/backup  # 传输到目标服务器
  • 在目标服务器上恢复用户:
    bash
    # 在目标服务器 (192.168.1.200) 上:
    cp /backup/passwd.bak /etc/passwd  # 恢复用户账户
    cp /backup/group.bak /etc/group  # 恢复用户组

25.2.4 保留服务配置

  • 备份服务配置(示例:Apache, Postfix):
    bash
    cp -r /etc/httpd /backup/httpd-$(date +%F)  # 备份 Apache 配置
    cp -r /etc/postfix /backup/postfix-$(date +%F)  # 备份 Postfix 配置
    rsync -av /backup/httpd-$(date +%F) /backup/postfix-$(date +%F) root@192.168.1.200:/backup  # 传输到目标服务器

25.3 系统升级

25.3.1 使用 leapp 工具升级

  • 安装 leapp
    bash
    dnf install -y leapp  # 安装 leapp 升级工具
  • 运行升级前检查:
    bash
    leapp preupgrade  # 检查系统升级兼容性
    cat /var/log/leapp/leapp-report.txt  # 查看升级报告
  • 执行升级(示例:RHEL 8.10 到 9.x):
    bash
    leapp upgrade  # 执行系统升级
    reboot  # 重启完成升级
  • 验证升级:
    bash
    cat /etc/redhat-release  # 检查系统版本

25.3.2 处理遗留配置

  • 检查软件兼容性:
    bash
    leapp answer --section check_vulnerabilities.accept=1  # 接受已知漏洞继续升级
    rpm -qa | grep el8  # 检查遗留 RHEL 8 包
  • 清理遗留配置:
    bash
    mv /etc/httpd/conf.d/old.conf /backup/old.conf-$(date +%F)  # 备份旧配置
    dnf remove *el8  # 移除不兼容的 RHEL 8 包

25.4 验证

  • 验证迁移:
    bash
    rsync --dry-run -av /etc root@192.168.1.200:/etc  # 模拟迁移,检查文件一致性
    ssh root@192.168.1.200 "getent passwd"  # 检查目标服务器用户账户
  • 验证服务配置:
    bash
    ssh root@192.168.1.200 "systemctl status httpd"  # 检查目标服务器 Apache 状态
    ssh root@192.168.1.200 "mailq"  # 检查目标服务器 Postfix 队列
  • 验证升级:
    bash
    cat /etc/redhat-release  # 确认升级后的系统版本
    systemctl list-units --state=failed  # 检查失败的服务
  • 测试 SSH 连接:
    bash
    ssh -p 2222 testuser@ZSLinux  # 测试 SSH 连接(参考第 6 章)
  • 常见问题:
    • 迁移失败:检查 SSH 免密登录(ssh-copy-id) 或目标服务器磁盘空间(df -h)。
    • 升级失败:查看 leapp 日志(/var/log/leapp/leapp-report.txt)或修复不兼容包(dnf remove)。
    • 服务不可用:确认目标服务器配置(/etc/httpd, /etc/postfix)或 SELinux(ausearch -m avc)。

25.5 实践任务

  1. 使用 SecureCRT 登录 ZSLinux,备份 /etc/var 到目标服务器(192.168.1.200)。
  2. 迁移用户账户到目标服务器并验证。
  3. 使用 leapp 执行 RHEL 8.10 升级前检查并查看报告。
  4. 备份 Apache 配置并传输到目标服务器。

25.6 自测问题

  • 问题:如何使用 rsync 迁移 /etc 目录?
    • 答案rsync -av /etc root@192.168.1.200:/etc
  • 问题:如何检查 RHEL 升级兼容性?
    • 答案leapp preupgrade 并查看 /var/log/leapp/leapp-report.txt
  • 问题:如何验证目标服务器用户迁移?
    • 答案ssh root@192.168.1.200 "getent passwd"

Released under the MIT License.