blank
blank
发布于 2019-08-16 / 1331 阅读 / 0 评论 / 0 点赞

CentOS 升级内核到 5.X && 启用 bbr && 内核降级

一键快速升级

# 导入 repo 密钥/源 && 安装最新内核 && 设置最新内核为第一启动顺序 && 重启服务器
# CentOS 7
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org && \
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm && \
yum clean all && \
rm -rf /var/cache/yum && \
yum --enablerepo=elrepo-kernel install kernel-ml -y && \
grub2-mkconfig -o /boot/grub2/grub.cfg && \
grub2-set-default 0 && \
reboot

# CentOS 8
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org && \
yum install -y https://www.elrepo.org/elrepo-release-8.0-2.el8.elrepo.noarch.rpm && \
yum clean all && \
rm -rf /var/cache/yum && \
yum --enablerepo=elrepo-kernel install kernel-ml -y && \
grub2-mkconfig -o /boot/grub2/grub.cfg && \
grub2-set-default 0 && \
reboot

# 确认内核版本
uname -r
5.3.7-1.el7.elrepo.x86_64
# done!

一步一步安装

导入 epel-repo

# CentOS 7
yum install -y https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
# CentOS 8
yum install -y https://www.elrepo.org/elrepo-release-8.0-2.el8.elrepo.noarch.rpm

导入密钥

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

检查当前能安装的内核版本

yum --disablerepo="*" --enablerepo="elrepo-kernel" list available | grep kernel-ml

kernel-ml.x86_64			5.3.7-1.el7.elrepo         elrepo-kernel
kernel-ml-devel.x86_64                  5.3.7-1.el7.elrepo         elrepo-kernel
kernel-ml-doc.noarch                    5.3.7-1.el7.elrepo         elrepo-kernel
kernel-ml-headers.x86_64                5.3.7-1.el7.elrepo         elrepo-kernel
kernel-ml-tools.x86_64                  5.3.7-1.el7.elrepo         elrepo-kernel
kernel-ml-tools-libs.x86_64             5.3.7-1.el7.elrepo         elrepo-kernel
kernel-ml-tools-libs-devel.x86_64       5.3.7-1.el7.elrepo         elrepo-kernel

安装最新内核

yum -y install --enablerepo=elrepo-kernel kernel-ml

减少启动菜单的等待时间

vim /etc/default/grub
# 将GRUB_TIMEOUT=5 改为 1 即等待 1 秒后启动
#GRUB_TIMEOUT=5
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=zh_CN.UTF-8"
GRUB_DISABLE_RECOVERY="true"

重新生成启动菜单列表(兼容传统/EFI)

grub2-mkconfig -o /boot/grub2/grub.cfg

确认启动顺序

此时 index=0 的内核版本应该等于刚刚更新的内核版本即为正确

grubby --info=ALL

index=0
kernel=/boot/vmlinuz-5.3.7-1.el7.elrepo.x86_64
args="ro crashkernel=auto   net.ifnames=0  console=tty0 console=ttyS0,115200n8 LANG=zh_CN.UTF-8"
root=UUID=eb448abb-3012-4d8d-bcde-94434d586a31
initrd=/boot/initramfs-5.3.7-1.el7.elrepo.x86_64.img
title=CentOS Linux (5.3.7-1.el7.elrepo.x86_64) 7 (Core)
index=1
kernel=/boot/vmlinuz-3.10.0-1062.1.2.el7.x86_64
args="ro crashkernel=auto   net.ifnames=0  console=tty0 console=ttyS0,115200n8 LANG=zh_CN.UTF-8"
root=UUID=eb448abb-3012-4d8d-bcde-94434d586a31
initrd=/boot/initramfs-3.10.0-1062.1.2.el7.x86_64.img
title=CentOS Linux (3.10.0-1062.1.2.el7.x86_64) 7 (Core)
index=2
kernel=/boot/vmlinuz-3.10.0-957.27.2.el7.x86_64
args="ro crashkernel=auto   net.ifnames=0  console=tty0 console=ttyS0,115200n8 LANG=zh_CN.UTF-8"
root=UUID=eb448abb-3012-4d8d-bcde-94434d586a31
initrd=/boot/initramfs-3.10.0-957.27.2.el7.x86_64.img
title=CentOS Linux (3.10.0-957.27.2.el7.x86_64) 7 (Core)
index=3
kernel=/boot/vmlinuz-0-rescue-f0f31005fb5a436d88e3c6cbf54e25aa
args="ro crashkernel=auto   net.ifnames=0  console=tty0 console=ttyS0,115200n8"
root=UUID=eb448abb-3012-4d8d-bcde-94434d586a31
initrd=/boot/initramfs-0-rescue-f0f31005fb5a436d88e3c6cbf54e25aa.img
title=CentOS Linux (0-rescue-f0f31005fb5a436d88e3c6cbf54e25aa) 7 (Core)
index=4
non linux entry

切换默认启动内核为最新版本内核

grub2-set-default 0

重启

reboot

确认内核版本

uname -r
5.3.7-1.el7.elrepo.x86_64

开启 bbr

bbr 仅支持 kernel 版本 >= 4.9 以上的版本开启

# 检查当前环境是否有启用 bbr
lsmod | grep bbr
# 如果 没显示 bbr 则继续执行

modprobe tcp_bbr && \
echo "tcp_bbr" >> /etc/modules-load.d/modules.conf && \
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf &&\
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf && \
sysctl -p

确认 bbr 启用

lsmod | grep bbr
# 显示 tcp_bbr 表示 已启用 bbr
tcp_bbr                20480  1 

sysctl net.ipv4.tcp_available_congestion_control && \
sysctl net.ipv4.tcp_congestion_control
# 显示有 bbr 表示 已启用 bbr
net.ipv4.tcp_available_congestion_control = reno cubic bbr
net.ipv4.tcp_congestion_control = bbr

内核更新

# 更新内核且确保系统启动内核为最新版本内核
yum --enablerepo=elrepo-kernel install kernel-ml -y && \
grub2-mkconfig -o /boot/grub2/grub.cfg && \
grub2-set-default 0 && \
reboot

一键清理旧内核

(请确保先运行内核更新重新生成启动菜单列表(兼容传统/EFI)后再运行此命令,否则可能导致已更新的最新版本内核被非预期删除)

yum remove $(rpm -qa | grep kernel | grep -v $(uname -r))

内核降级

重新启动 在启动菜单选择旧版内核启动后执行删除新版内核操作

yum remove -y kernel-ml

删除后再次重启确认内核版本即可

清理旧内核

# 检查当前所有已安装的内核版本
rpm -qa |grep kernel

kernel-3.10.0-957.27.2.el7.x86_64
kernel-3.10.0-1062.1.2.el7.x86_64
kernel-ml-5.3.7-1.el7.elrepo.x86_64
kernel-3.10.0-957.21.3.el7.x86_64
kernel-3.10.0-957.10.1.el7.x86_64
kernel-3.10.0-862.14.4.el7.x86_64

yum remove 非启动版本的内核即可清理
如 删除 kernel-3.10.0-862.14.4.el7.x86_64 kernel-3.10.0-957.10.1.el7.x86_64
yum remove -y kernel-3.10.0-862.14.4.el7.x86_64 kernel-3.10.0-957.10.1.el7.x86_64

依赖关系解决。
======================================================================================================================================================
 软件包                          架构                            版本                                          仓库                              大小
======================================================================================================================================================
移除:
 kernel                          x86_64                          3.10.0-862.14.4.el7                           @System                           62 M
 kernel                          x86_64                          3.10.0-957.10.1.el7                           @System                           63 M

事务概要
======================================================================================================================================================
移除  2 软件包

将会释放空间:125 M
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中      :                                                                                                                                   1/1 
  运行脚本    : kernel-3.10.0-957.10.1.el7.x86_64                                                                                                 1/2 
  删除        : kernel-3.10.0-957.10.1.el7.x86_64                                                                                                 1/2 
  运行脚本    : kernel-3.10.0-957.10.1.el7.x86_64                                                                                                 1/2 
  运行脚本    : kernel-3.10.0-862.14.4.el7.x86_64                                                                                                 2/2 
  删除        : kernel-3.10.0-862.14.4.el7.x86_64                                                                                                 2/2 
  运行脚本    : kernel-3.10.0-862.14.4.el7.x86_64                                                                                                 2/2 
  验证        : kernel-3.10.0-862.14.4.el7.x86_64                                                                                                 1/2 
  验证        : kernel-3.10.0-957.10.1.el7.x86_64                                                                                                 2/2 

已移除:
  kernel-3.10.0-862.14.4.el7.x86_64                                         kernel-3.10.0-957.10.1.el7.x86_64

评论