blank的编程之路


  • 首页

  • 归档

  • 搜索
consul atomikos mybatisplus druid nexus nas named bind mysqldump acme.sh Dockerfile rsync keepalived swarm kibana ubuntu linux scp bugfix https ssl certbot curl gogs adminer harbor yum portainer python kubernetes idea java springboot maven docker-compose redis nginx mysql brew git chocolatey jenkins elasticsearch docker haproxy rabbitmq centos

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

发表于 2019-08-16 | 分类于 运维 | 0 | 阅读次数 874

一键快速升级

# 导入 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
  • 本文作者: blank
  • 本文链接: https://blankhang.com/2019/08/16/201908161015
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# consul # atomikos # mybatisplus # druid # nexus # nas # named # bind # mysqldump # acme.sh # Dockerfile # rsync # keepalived # swarm # kibana # ubuntu # linux # scp # bugfix # https # ssl # certbot # curl # gogs # adminer # harbor # yum # portainer # python # kubernetes # idea # java # springboot # maven # docker-compose # redis # nginx # mysql # brew # git # chocolatey # jenkins # elasticsearch # docker # haproxy # rabbitmq # centos
CentOS7 配置网络/hostname
docker-compose 运行 mysql 8 + adminer
© 2021 blank
Everything is energy and everything has a frequency