Linux服务器内核升级,不停机热补丁方案
对于线上服务器,内核升级往往意味着重启,但重启会中断业务。
不停机热补丁方案能在不重启的情况下修复内核漏洞或打上安全补丁。
本文面向零基础用户,以CentOS/RHEL系的kpatch和Ubuntu系的livepatch为例,提供可落地的操作步骤。
一、热补丁能做什么,不能做什么
热补丁主要针对内核安全漏洞和严重bug修复,比如CVE漏洞。
它通过动态替换函数代码,避免重启。
但注意:
- 不能替代完整的内核版本升级(如从3.10升到5.4)。
- 只对特定版本的内核有效,补丁必须与当前内核版本匹配。
- 部分补丁可能仍需重启才能完全生效,具体看厂商说明。
如果你只是想修复某个CVE,热补丁是最佳选择;
如果要获得新功能或大版本更新,仍需计划重启。
二、准备工作:检查内核与订阅状态
操作前先确认当前内核版本和系统类型。
uname -r
cat /etc/os-release
- RHEL/CentOS 7/8 可使用
kpatch,需要有效的Red Hat订阅或CentOS的kpatch源。 - Ubuntu 16.04/18.04/20.04 可使用
canonical-livepatch,需订阅Ubuntu Advantage(个人可免费用于最多3台机器)。
重要:确保服务器已安装yum-utils或apt工具,并更新软件源。
# CentOS
sudo yum install -y yum-utils
sudo yum update -y
# Ubuntu
sudo apt update
sudo apt install -y ubuntu-advantage-tools
三、实战:CentOS 7 使用 kpatch 热补丁
1. 安装 kpatch 工具
sudo yum install -y kpatch
2. 检查当前内核是否支持热补丁
sudo kpatch list
如果输出为空,表示没有已加载的补丁。
3. 安装可用的热补丁
sudo yum install -y kpatch-patch
这个包会为当前内核版本安装对应的补丁。
安装后,kpatch会自动加载补丁。
4. 验证补丁是否生效
sudo kpatch list
看到补丁名称和状态enabled即成功。
sudo kpatch info <补丁名>
可以查看补丁详情。
四、Ubuntu 使用 livepatch 热补丁
1. 安装并登录
sudo snap install canonical-livepatch
sudo canonical-livepatch enable <你的token>
Token从Ubuntu Advantage账户获取。
2. 查看状态
sudo canonical-livepatch status
输出中kernel字段显示已打补丁的内核版本,running为true表示生效。
3. 手动检查更新
sudo canonical-livepatch refresh
五、避坑指南:这些错误别犯
- 补丁与内核版本不匹配:安装前务必用
uname -r确认版本,再选择对应补丁包。 - 未订阅就强行安装:CentOS的kpatch需要有效订阅源,否则无法下载补丁。
- 误以为热补丁能替代所有更新:热补丁只修复安全漏洞,不提供新功能。
- 忽略回滚:如果补丁导致问题,可用
kpatch unload或canonical-livepatch disable临时回滚,但需重启才能完全还原。 - 未测试就上生产:建议先在测试环境验证,再应用到生产服务器。
六、效果验证与后续检查
补丁加载后,运行以下命令确认系统状态:
# 检查内核版本是否变化(通常不变)
uname -r
# 检查是否有报错
dmesg | tail -20
如果无异常,业务应保持正常运行。定期检查是否有新补丁:CentOS用yum update,Ubuntu用canonical-livepatch refresh。
常见疑问
热补丁需要重启吗?
通常不需要,但某些底层补丁可能要求重启,以厂商说明为准。
热补丁会影响性能吗?
影响极小,现代热补丁技术已优化,但高负载场景建议监控。
如何卸载热补丁?
CentOS:sudo kpatch unload <补丁名>;Ubuntu:sudo canonical-livepatch disable。
免费能用吗?
CentOS的kpatch在订阅下可用;Ubuntu个人可免费用于最多3台机器,具体以官方政策为准。
如果你正在处理Linux服务器内核升级,不停机热补丁方案能帮你避免业务中断。
按本文步骤操作,并在测试环境验证后再上生产,遇到异常优先检查内核版本和补丁兼容性。