本文档风哥主要介绍Linux内核升级与服务兼容性测试的方法,包括升级前准备、内核升级步骤、兼容性测试方法、生产环境实战案例等内容,参考Red Hat Enterprise Linux 10官方文档中的System administration章节,适合系统管理员在生产环境中使用。更多视频教程www.fgedu.net.cn
Part01-基础概念与理论知识
1.1 内核升级概念
内核升级是指更新Linux内核到新版本,以获取新功能、修复安全漏洞、提高性能和稳定性。内核升级是系统维护的重要部分,需要谨慎操作以确保系统的稳定性和服务的兼容性。学习交流加群风哥微信: itpux-com
- 修复安全漏洞
- 提高系统性能
- 添加新功能
- 改进硬件支持
- 提高系统稳定性
1.2 兼容性测试
兼容性测试是指在内核升级后,测试系统服务是否能够正常运行,确保服务与新内核的兼容性。兼容性测试是内核升级过程中的重要环节,可以避免升级后服务出现故障。
1.3 升级流程
内核升级的基本流程:
- 准备阶段:备份系统、检查硬件兼容性、准备升级介质
- 升级阶段:安装新内核、更新引导配置
- 测试阶段:启动系统、测试服务兼容性
- 验证阶段:确认系统正常运行、清理旧内核
Part02-生产环境规划与建议
2.1 升级规划
升级规划:
- 版本选择:选择合适的内核版本
- 时间安排:选择合适的升级时间
- 人员安排:安排专业人员进行操作
- 测试计划:制定详细的测试计划
- 回滚计划:制定回滚方案
2.2 风险评估
风险评估:
- 硬件兼容性:检查硬件是否支持新内核
- 服务兼容性:评估服务与新内核的兼容性
- 应用兼容性:评估应用程序与新内核的兼容性
- 数据风险:评估数据丢失的风险
- 系统稳定性:评估升级后系统稳定性
2.3 备份策略
备份策略:
$ sudo dd if=/dev/sda of=/dev/sdb bs=4M status=progress
# 备份关键文件
$ sudo tar -czvf /backup/system-backup-$(date +%Y%m%d).tar.gz /etc /home /var/www
# 备份引导配置
$ sudo cp -r /boot /backup/boot-$(date +%Y%m%d)
# 备份内核模块
$ sudo cp -r /lib/modules/$(uname -r) /backup/modules-$(date +%Y%m%d)
# 备份服务配置
$ sudo tar -czvf /backup/service-configs-$(date +%Y%m%d).tar.gz /etc/systemd/system /etc/init.d
Part03-生产环境项目实施方案
3.1 升级前准备
升级前准备步骤:
$ uname -r
5.14.0-362.13.1.el9_3.x86_64
# 检查系统版本
$ cat /etc/redhat-release
Red Hat Enterprise Linux release 9.3 (Plow)
# 检查可用的内核更新
$ sudo dnf check-update kernel
kernel.x86_64 5.14.0-362.24.1.el9_3 rhel-9-for-x86_64-baseos-rpms
# 检查硬件兼容性
$ lspci -v
# 检查服务状态
$ systemctl list-units –type=service –state=running
# 备份系统
$ sudo tar -czvf /backup/system-backup-$(date +%Y%m%d).tar.gz /etc /home /var/www
# 清理系统
$ sudo dnf clean all
$ sudo dnf autoremove
3.2 内核升级
内核升级步骤:
$ sudo dnf update kernel
# 查看已安装的内核
$ rpm -qa | grep kernel
kernel-5.14.0-362.13.1.el9_3.x86_64
kernel-5.14.0-362.24.1.el9_3.x86_64
kernel-core-5.14.0-362.13.1.el9_3.x86_64
kernel-core-5.14.0-362.24.1.el9_3.x86_64
kernel-modules-5.14.0-362.13.1.el9_3.x86_64
kernel-modules-5.14.0-362.24.1.el9_3.x86_64
kernel-modules-extra-5.14.0-362.13.1.el9_3.x86_64
kernel-modules-extra-5.14.0-362.24.1.el9_3.x86_64
# 更新引导配置
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
# 重启系统
$ sudo reboot
# 验证新内核
$ uname -r
5.14.0-362.24.1.el9_3.x86_64
3.3 兼容性测试
兼容性测试步骤:
$ systemctl status
# 检查服务状态
$ systemctl list-units –type=service –state=running
# 测试网络服务
$ ping -c 3 8.8.8.8
$ curl -I http://localhost
# 测试数据库服务
$ mysql -u root -p -e “SELECT version();”
# 测试Web服务
$ curl -I http://localhost
# 测试文件系统
$ df -h
$ mount
# 测试硬件设备
$ lspci -v
$ lsusb -v
# 测试系统性能
$ stress-ng –cpu 8 –timeout 60s
# 检查系统日志
$ journalctl -b -p err
Part04-生产案例与实战讲解
4.1 生产环境内核升级案例
案例:生产环境内核升级
$ uname -r
5.14.0-362.13.1.el9_3.x86_64
# 检查可用的内核更新
$ sudo dnf check-update kernel
kernel.x86_64 5.14.0-362.24.1.el9_3 rhel-9-for-x86_64-baseos-rpms
# 备份系统
$ sudo tar -czvf /backup/system-backup-$(date +%Y%m%d).tar.gz /etc /home /var/www
# 安装新内核
$ sudo dnf update kernel -y
# 更新引导配置
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
# 重启系统
$ sudo reboot
# 验证新内核
$ uname -r
5.14.0-362.24.1.el9_3.x86_64
# 检查服务状态
$ systemctl list-units –type=service –state=running
# 测试业务服务
$ curl -I http://fgedu.net.cn
HTTP/1.1 200 OK
Server: nginx/1.24.0
Date: Wed, 06 Apr 2026 14:00:00 GMT
Content-Type: text/html
Content-Length: 612
Connection: keep-alive
# 测试数据库服务
$ mysql -u fgedu -p fgedudb -e “SELECT * FROM fgedu_test LIMIT 1;”
+—-+———-+
| id | name |
+—-+———-+
| 1 | test data |
+—-+———-+
# 检查系统日志
$ journalctl -b -p err
— No entries —
# 清理旧内核
$ sudo dnf remove kernel-5.14.0-362.13.1.el9_3
4.2 服务兼容性测试案例
案例:服务兼容性测试
$ systemctl list-units –type=service –state=running
# 测试Nginx服务
$ systemctl status nginx
● nginx.service – The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2026-04-06 14:00:00 CST; 10min ago
# 测试MySQL服务
$ systemctl status mariadb
● mariadb.service – MariaDB 10.5 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2026-04-06 14:00:00 CST; 10min ago
# 测试SSH服务
$ systemctl status sshd
● sshd.service – OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2026-04-06 14:00:00 CST; 10min ago
# 测试网络服务
$ ping -c 3 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=12.3 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=118 time=11.9 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=118 time=12.1 ms
— 8.8.8.8 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 11.932/12.114/12.308/0.168 ms
# 测试Web服务性能
$ ab -n 1000 -c 100 http://fgedu.net.cn/
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking fgedu.net.cn (be patient)
Completed 1000 requests
Finished 1000 requests
Server Software: nginx/1.24.0
Server Hostname: fgedu.net.cn
Server Port: 80
Document Path: /
Document Length: 612 bytes
Concurrency Level: 100
Time taken for tests: 0.123 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 838000 bytes
HTML transferred: 612000 bytes
Requests per second: 8130.08 [#/sec] (mean)
Time per request: 12.300 [ms] (mean)
Time per request: 0.123 [ms] (mean, across all concurrent requests)
Transfer rate: 6653.04 [Kbytes/sec] received
4.3 回滚案例
案例:内核升级失败回滚
# 启动后检查内核版本
$ uname -r
5.14.0-362.13.1.el9_3.x86_64
# 检查服务状态
$ systemctl list-units –type=service –state=running
# 禁用新内核
$ sudo grubby –set-default /boot/vmlinuz-5.14.0-362.13.1.el9_3.x86_64
# 移除新内核
$ sudo dnf remove kernel-5.14.0-362.24.1.el9_3
# 更新引导配置
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
# 重启系统
$ sudo reboot
# 验证系统状态
$ uname -r
5.14.0-362.13.1.el9_3.x86_64
# 检查服务状态
$ systemctl status nginx mariadb sshd
● nginx.service – The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2026-04-06 14:30:00 CST; 5min ago
● mariadb.service – MariaDB 10.5 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2026-04-06 14:30:00 CST; 5min ago
● sshd.service – OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2026-04-06 14:30:00 CST; 5min ago
Part05-风哥经验总结与分享
5.1 升级技巧
升级技巧:
- 充分准备:做好备份和测试工作
- 选择合适的版本:选择稳定的内核版本
- 逐步升级:避免跨版本大幅升级
- 测试验证:在测试环境中验证升级
- 监控系统:升级后密切监控系统状态
- 及时回滚:发现问题及时回滚
5.2 最佳实践
最佳实践:
- 制定计划:制定详细的升级计划
- 备份系统:在升级前备份系统
- 测试环境:在测试环境中验证
- 监控系统:升级后监控系统状态
- 文档记录:记录升级过程和结果
- 定期更新:定期更新内核以修复安全漏洞
5.3 风哥建议
风哥建议:
- 谨慎操作:内核升级是一项高风险操作,应谨慎执行
- 团队协作:多人员协作完成升级过程
- 持续学习:关注内核的最新动态和安全漏洞
- 经验分享:分享升级经验和教训
- 安全第一:优先考虑系统的安全性和稳定性
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
