29. 系统迁移与升级
本章节基于 RHEL9-Installed-Base 快照,聚焦 RHEL 9 主版本内的系统迁移与安全补丁升级。涵盖 虚拟机克隆、离线数据同步、安全补丁升级 和 回滚机制。适合生产环境标准化运维与平滑过渡到 RHEL 10 的准备。
29.1 前提条件
| 项目 | 要求 |
|---|---|
| 基线快照 | RHEL9-Installed-Base(第 1 章创建) |
| 源系统 | RHEL 9(LinuxDC) |
| 目标系统 | 克隆虚拟机(主机名 LinuxDC-Migrate) |
| 网络 | 可选联网(在线升级)或离线包(ISO/USB) |
| 用户 | testuser(具有 wheel 组权限) |
| 工具 | rsync、dnf、grubby 已安装(RHEL 9 默认包含) |
| 磁盘空间 | 源系统 /boot 和根分区剩余空间 ≥ 5GB |
💡 提示:建议在克隆前创建快照。RHEL 10 升级路径已公开,支持从 RHEL 9.4+ 直接原地升级,推荐在 RHEL 9.5+ 版本上执行本章操作,为后续升级做准备。
29.2 系统迁移(虚拟机克隆方式)
29.2.1 克隆虚拟机
- 在 VMware 中克隆
LinuxDC虚拟机: - 选择“完整克隆”(Full Clone)
- 新主机名:
LinuxDC-Migrate -
新 MAC 地址:自动生成或手动指定
-
启动克隆后的虚拟机,登录并修改主机名与 IP:
hostnamectl set-hostname LinuxDC-Migrate nmcli con mod ens33 ipv4.addresses 192.168.1.101/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8" nmcli con up ens33 exec bash
✅ 检查点:
hostnamectl显示新主机名,ip addr显示新 IP。
29.2.2 使用 rsync 同步关键数据(可选)
-
在源系统(LinuxDC)执行:
rsync -avz --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found} / root@192.168.1.101:/ -
在目标系统(LinuxDC-Migrate)执行:
rsync -avz --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found} root@192.168.1.100:/ /
⚠️ 注意:rsync 同步适合小规模迁移,大规模推荐重新部署或 Image Builder。
29.3 安全补丁升级
29.3.1 在线安全补丁升级
-
检查可用安全更新:
dnf updateinfo list security -
仅安装安全补丁:
dnf update --security -y -
完整更新(包含功能修复):
dnf update -y reboot
🧠 知识点:
--security仅更新安全相关包,不会升级到 RHEL 10。
29.3.2 离线安全补丁升级(模拟场景)
-
在联网机器下载补丁:
dnf download --resolve --security kernel* # 示例:下载内核安全补丁 -
使用 SecureFX 传输到目标系统
/tmp/patches/。 -
安装补丁:
dnf localinstall /tmp/patches/*.rpm -y reboot
✅ 检查点:
dnf updateinfo list security显示已安装。
29.4 回滚机制
29.4.1 使用 dnf history 回滚
-
查看历史事务:
dnf history -
回滚某次事务(示例:回滚 ID 15):
dnf history undo 15
⚠️ 注意:回滚仅适用于 dnf 事务,不包括手动 rpm 安装。
29.4.2 使用 grubby 回滚内核
-
查看可用内核:
grubby --info=ALL -
设置默认旧内核:
grubby --set-default /boot/vmlinuz-<old_version> reboot
💡 提示:RHEL 9 支持多内核共存,RHEL 10 进一步优化了内核切换与 kpatch 实时补丁。
29.5 常见问题与排查
🔍 故障排查:
-
问题 1:克隆后网络不通
解决:检查 MAC 地址冲突,重新配置 IP(nmcli)。 -
问题 2:补丁安装失败
解决:dnf history查看事务,journalctl -u dnf检查日志,确认订阅(subscription-manager status)。 -
问题 3:回滚失败
解决:确认事务 ID(dnf history),检查依赖冲突。 -
问题 4:内核未切换
解决:grubby --default-kernel查看当前内核,重新设置并重启。
29.6 实践任务
- 在 VMware 中克隆
LinuxDC为LinuxDC-Migrate,修改主机名和 IP。 - 使用
rsync备份/etc和/var到备份盘。 - 模拟离线安全补丁升级:下载安全包 → 传输 → 安装 → 重启。
- 使用
dnf history undo回滚一次补丁升级。
✅ 检查点:克隆系统正常运行,补丁安装/回滚成功。
29.7 自测问题
-
问题 1:
dnf update --security -y会升级到 RHEL 10 吗?
答案:不会,仅在 RHEL 9 内安装安全补丁。 -
问题 2:
dnf update -y会升级哪些内容?
答案:所有可用软件包、内核、安全补丁、功能修复。 -
问题 3:如何回滚 dnf 补丁升级?
答案:dnf history查看 ID,dnf history undo <ID>。
🧾 总结:
本章完整介绍了 RHEL 9 系统迁移与升级的标准化流程,包括克隆迁移、补丁升级和回滚机制。这些技能确保系统安全、可控地演进,为后续 Git 自动化部署与 RHCE 考点总结提供稳定基础。