|
虚拟机里的虚拟CentOS 7已经跑了三年,yum update时提示“无法获取镜像列表”,机升级我才意识到系统到了生命周期终点。版本CentOS 7在2024年6月30日正式停止维护,虚拟这意味着安全补丁和软件源都会消失。机升级不升级,版本就等于把服务器裸奔在公网上。虚拟 我用的机升级VirtualBox 6.1,虚拟机磁盘是版本动态分配的VHD格式。升级前先做了快照——这步别省。虚拟快照不是机升级备份,但能让你在升级失败时一键回滚。版本然后导出OVF文件到宿主机,虚拟双重保险。机升级磁盘空间要检查,版本至少留出10GB空闲,因为升级过程会下载大量新包。 直接跨大版本升级不可行,得先升到CentOS 7.9最新版。执行yum update -y,重启后确认内核版本是3.10.0-1160。接着安装升级工具: yum install -y http://mirror.centos.org/centos/7/updates/x86_64/Packages/centos-release-7-9.2009.0.el7.centos.x86_64.rpm yum install -y epel-release yum install -y https://repo.almalinux.org/almalinux/8/BaseOS/x86_64/os/Packages/almalinux-release-8.10-1.el8.x86_64.rpm 这里有个坑。AlmaLinux官方推荐用leapp工具做迁移,但leapp对CentOS 7直接升级到AlmaLinux 8的支持并不完美。我试了两次,第一次卡在“检测到不支持的硬件”上——虚拟机里虚拟的SATA控制器不被leapp识别。解决方案是在VM设置里把控制器改为IDE模式,升级完再改回来。 leapp预检阶段会生成一个报告,用leapp preupgrade查看。报告里列出需要手动处理的事项,比如删除不兼容的第三方内核模块、更新SSH配置。我遇到的问题是系统里装了旧版PHP 5.4,leapp直接拒绝继续。只能先卸载PHP相关包,升级完再装PHP 8.0。 执行leapp upgrade后,系统会自动下载所有需要的RPM包,然后重启进入升级过程。这步耗时大约40分钟,取决于网络速度。期间虚拟机可能会黑屏几次,别慌,那是正常的。如果超过1小时没反应,检查宿主机的CPU占用率——VirtualBox在升级时CPU会飙到100%,属正常现象。 升级完成后,系统重启进入AlmaLinux 8.10。登录后第一件事检查cat /etc/redhat-release,确认版本号。然后跑一遍dnf update,把残留的CentOS 7软件包全部替换。注意PHP、MySQL这类服务,它们的配置文件路径变了——旧的在/etc/php.ini,新的在/etc/php.d/目录下拆分管理。 我的虚拟机里跑着一个Nginx+MySQL的WordPress站点。升级后MySQL从5.7自动迁移到8.0,但数据字典格式不兼容。leapp工具链里包含了mysql-shell的升级脚本,执行mysqlsh --util check-for-server-upgrade检查,再跑mysqlsh --util upgrade完成数据迁移。整个过程没丢一条数据,但耗时比预期长——300MB的数据库跑了将近15分钟。 最后清理:删除快照,释放磁盘空间。升级后系统盘膨胀了大概6GB,因为旧内核和备份文件都留着。用dnf autoremove清理孤儿包,rm -rf /root/leapp-backup*删除临时文件。虚拟机性能没明显变化,但安全补丁能正常推送了——这才是升级的核心意义。 老实说,整个过程比预想中折腾。leapp工具还不够成熟,遇到两个bug:一个是SATA控制器识别问题,另一个是PHP包冲突。但相比重装系统再手动配置所有服务,leapp还是省了至少半天时间。如果你也打算升级,建议先在一个测试虚拟机上跑一遍流程,摸清坑再操作生产环境。 |