昨天晚上,把阿里云服务器上的Centos8.2系统的内核升级到了5.9版本,具体版本号为5.9.3-1.el8.elrepo。然后,顺便开启了内置的bbr(谷歌开发的拥塞控制算法解析)。今天,把我升级的过程发出来供各位参看,也留下个记录,供自己以后参考。
输入如下命令,确认自己的Centos版本号:
cat /etc/redhat-release
得到如下结果:
CentOS Linux release 8.2.2004 (Core)
输入如下命令,查看linux内核版本:
uname -sr
得到如下结果:
Linux 4.18.0-193.14.2.el8_2.x86_64
输入如下内容,确认是否已经按照内核升级包:
rpm -qa | grep elrepo.noarch
我这里没有反馈,说明我没有安装过内核升级包。如果你的有反馈输出,比如结果为:
elrepo-release-8.0-2.el8.elrepo.noarch
那么,你需要输入如下命令,去删除这个内核升级包(可能你之前升级过内核,所以下载了内核升级包,但已经不是最新版了)
yum -y remove elrepo-release-8.0-2.el8.elrepo.noarch.rpm
输入如下命令,获取并安装最新内核升级包:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
输入y,确认安装即可!到此,你就安装好了最新的内核升级包。安装完成,将显示如下类似内容:
已安装:
elrepo-release-8.2-1.el8.elrepo.noarch
输入如下命令,查看最新版内核包有哪些内容:
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
得到如下结果:
得到最新的内核版本为5.9.3,当然过几天可能会是更新得内核版本。
输入如下命令,查看当前已安装内核包有哪些内容:
rpm -qa | grep kernel
得到如下输出(当然,不同厂家得服务器,内核版本略有不用。而且数量也未必相同):
kernel-core-4.18.0-193.14.2.el8_2.x86_64
kernel-devel-4.18.0-193.14.2.el8_2.x86_64
kernel-tools-libs-4.18.0-193.14.2.el8_2.x86_64
kernel-4.18.0-193.el8.x86_64
kernel-4.18.0-193.14.2.el8_2.x86_64
kernel-modules-4.18.0-193.14.2.el8_2.x86_64
kernel-tools-4.18.0-193.14.2.el8_2.x86_64
kernel-core-4.18.0-193.el8.x86_64
kernel-modules-4.18.0-193.el8.x86_64
kernel-headers-4.18.0-193.14.2.el8_2.x86_64
以上这些旧版内核内容输出,一会要用到,所以要获取下(随后,升级完内容,会卸载旧版内核)
接下来,输入如下命令,安装新版内核:
yum -y install --enablerepo=elrepo-kernel kernel-ml kernel-ml-devel
安装过程是全自动得,结果如下所示:
接下来,我们再次输入如下命令,查看当前已安装内核:
rpm -qa | grep kernel
得到如下内容:
kernel-core-4.18.0-193.14.2.el8_2.x86_64
kernel-devel-4.18.0-193.14.2.el8_2.x86_64
kernel-tools-libs-4.18.0-193.14.2.el8_2.x86_64
kernel-4.18.0-193.el8.x86_64
kernel-ml-modules-5.9.3-1.el8.elrepo.x86_64
kernel-4.18.0-193.14.2.el8_2.x86_64
kernel-modules-4.18.0-193.14.2.el8_2.x86_64
kernel-tools-4.18.0-193.14.2.el8_2.x86_64
kernel-ml-devel-5.9.3-1.el8.elrepo.x86_64
kernel-core-4.18.0-193.el8.x86_64
kernel-modules-4.18.0-193.el8.x86_64
kernel-ml-core-5.9.3-1.el8.elrepo.x86_64
kernel-headers-4.18.0-193.14.2.el8_2.x86_64
kernel-ml-5.9.3-1.el8.elrepo.x86_64
与未安装新版内核对比,多了四个5.9.3内核。说明安装成功了!
输入如下命令,验证当前默认启动内核:
grubby --default-kernel
得到如下内容,则证明新安装的内核已经被设置成默认启动了,重启服务器进入使用新的内核文件。
/boot/vmlinuz-5.9.3-1.el8.elrepo.x86_64
好了,reboot一下(重启服务器)。完事后,输入如下命令,验证当前内核版本:
uname -sr
得到如下内容:则证明5.9.3内核已经安装成功
Linux 5.9.3-1.el8.elrepo.x86_64
接下来,输入如下命令,移除旧版内核:
yum -y remove kernel-core-4.18.0-193.14.2.el8_2.x86_64 kernel-devel-4.18.0-193.14.2.el8_2.x86_64 kernel-tools-libs-4.18.0-193.14.2.el8_2.x86_64 kernel-4.18.0-193.el8.x86_64 kernel-4.18.0-193.14.2.el8_2.x86_64 kernel-modules-4.18.0-193.14.2.el8_2.x86_64 kernel-tools-4.18.0-193.14.2.el8_2.x86_64 kernel-core-4.18.0-193.el8.x86_64 kernel-modules-4.18.0-193.el8.x86_64 kernel-headers-4.18.0-193.14.2.el8_2.x86_64
这里需要注意得是,我的旧版内核未必跟你的一样,新版内核也未必跟你的一样。所以,当你删除旧版内核时,要跟之前获取的内核版本对比,删除老旧的内核版本就好。多个内核之间用空格隔开。
最后,我们会得到如下移除成功的提示内容:
输入如下命令,再次查看已安装的内核版本:
rpm -qa | grep kernel
得到如下内容:
kernel-ml-modules-5.9.3-1.el8.elrepo.x86_64
kernel-ml-devel-5.9.3-1.el8.elrepo.x86_64
kernel-ml-core-5.9.3-1.el8.elrepo.x86_64
kernel-ml-5.9.3-1.el8.elrepo.x86_64
只剩下了新版内核,证明移除了旧版内核,到此新版内核升级完美结束!
下面,我们来开启bbr,可以一定程度上提高并发连接,一定程度上提高带宽利用来,一定程度上减少服务器丢包率:
lsmod | grep bbr
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
得到如下内容:
vm.swappiness = 20
kernel.sysrq = 1
net.ipv4.neigh.default.gc_stale_time = 120
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
到此,bbr就开启完毕了(bbr在内核版本大于4.9会自动内置的,你需要做的只是去开启一下而已)
下面,我们通过几个命令来验证下bbr是否开启成功:
输入如下命令:
sysctl net.ipv4.tcp_available_congestion_control
得到如下结果:
net.ipv4.tcp_available_congestion_control = reno cubic bbr
输入如下命令:
sysctl -n net.ipv4.tcp_congestion_control
得到如下结果:
bbr
输入如下命令:
lsmod | grep bbr
得到如下结果:
tcp_bbr 20480 1
如果以上三次查询,都包括bbr结果,那么就开启成功了。
原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/707.html