[Linux 零碎手动更换内核]
前言
一般而言,在云计算商那里“租”了一台服务器之后,我个别会抉择
CentOS 7
零碎,所以这篇文章,就以 CentOS 为例(仿佛有一点题目党的嫌疑?
根本不会介绍 BBR 的原理,须要具体理解,能够拜访 research,我技术并不够优良,很难解释分明,还请见谅!
先讲讲 BBR 吧!Wiki 百科给出的解释是Bottleneck Bandwidth and Round-trip propagation time (BBR)
,是 Google 在 2016 年开发的 TCP 拥塞控制算法(开源了)。TCP 拥塞控制算法有很多,BBR 是其中一种,然而因为它杰出的成果,被很多人采纳。至于 linux 内核什么时候开始原生反对的,网上的说法真的是形形色色,很多人文章感觉就是相互抄,连2.6.*
的说法都能蹦出来(我狐疑是一些采集站)。相对而言,很多大佬的博客文章,就比拟谨严一些,基本上都是4.9
。抱着不懂就差的态度,我去 Google 略微搜了一下,不敢确定是不是肯定是对的。Wiki 百科的具体阐明,能够找到如下一条阐明:
内核
初始发行日期
最新版本
维护者
反对状态
备注
4.9
2016 年 12 月 11 日
4.9.148
葛雷格·克罗哈曼
长期反对版本,从 2016 年 12 月至 2023 年 1 月
开始反对 BBR congestion control。
更换 / 更新内核
这时候咱们来更换内核吧,这里我的测试机器是中国香港 ECS。
- 以后的 Kernel 版本
$ uname -r
- 更新软件包
$ yum update -y
ELRepo 我的项目
这里咱们须要用到 Repo 我的项目 Enterprise Linux 软件包的 RPM 存储库。
- 导入 ELRepo 公钥
$ rpm –import https://www.elrepo.org/RPM-GP…
- 装置 ELRepo 的 yum 源到零碎
$ yum install https://www.elrepo.org/elrepo…
装置新内核啦
- 查看 ELRepo 仓库下,在以后零碎反对的内核包 ELRepo 会提供 he Linux Kernel Archives 用资源。
$ yum –disablerepo=”*” –enablerepo=”elrepo-kernel” list available
- 装置最新的主线稳固内核
$ yum –enablerepo=elrepo-kernel install kernel-ml
更改 grub 配置
在装置完新的 Kernrl 之后,零碎是不会帮你切换到新内核的,重启也不行,须要咱们本人设置,将新内核设置为默认启动选项。
- 查看所有的 Kernel
$ rpm -qa | grep kernel
- 查看以后正在应用的 Kernrl
$ uname -r
- 查看 Kernel 启动程序
$ awk -F’ ‘$1==”menuentry ” {print i++ ” : ” $2}’ /etc/grub2.cfg
装置完之后,内核没有切换过来,通过查看得悉,新装置的内核位于第一个地位,标记为 0
。这是咱们须要批改 /etc/default/grub
文件,以便于让零碎在启动时让新内核成为默认选项。
$ vim /etc/default/grub
须要把 GRUB_DEFAULT=saved
改成 GRUB_DEFAULT=0
,而后保留。当然,你也能够在装置其它版本的 Kernel 之后,更改GRUB_DEFAULT
的值。
- 从新生成 Kernrl 配置
$ grub2-mkconfig -o /boot/grub2/grub.cfg
- 而后重启机器
$ reboot
- 重启结束后,查看是否胜利
$ uname -r
删除多余内核
你能够在装置新内核之后,抉择把其它内核删掉,然而请留神千万不要删除正在运行的那个内核!!!
- 查看所有的 Kernel
$ rpm -qa | grep kernel
- 删除你想删除的内核
$ yum remove kernel-[old_kernel_version]
举个例子
$ yum remove kernel-3.10.0-957.el7.x86_64
- 从新生成 Kernrl 配置
$ grub2-mkconfig -o /boot/grub2/grub.cfg
开启 BBR
整了这么半天,除了更新下内核,另一个重要的事件就是须要开启 BBR 了。
- 编辑
/tec/sysctl.conf
文件
$ vim /etc/sysctl.conf
- 增加如下内容:
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
- 或者应用 tee 命令重定向追加到
/tec/sysctl.conf
文件中:
$ echo ‘net.core.default_qdisc=fq’ | sudo tee -a /etc/sysctl.conf
$ echo ‘net.ipv4.tcp_congestion_control=bbr’ | sudo tee -a /etc/sysctl.conf
- 从配置文件“/etc/sysctl.conf”加载内核参数设置
$ sysctl -p
- 验证是否胜利(是否开启了 BBR
$ sysctl net.ipv4.tcp_congestion_control
显示如下内容即可:
net.ipv4.tcp_congestion_control = bbr
$ sysctl net.ipv4.tcp_available_congestion_control
显示如下内容即可:
net.ipv4.tcp_available_congestion_control = reno cubic bbr
- 查看内核模块是否加载
$ lsmod | grep bbr