Google BBR 算法是一个 TCP 加速优化工具,Google 2016 年已开源其 TCP BBR 拥塞控制算(BBR2 已经在路上),并提交至 Linux 内核,根据实地测试,在部署了最新版内核并开启 TCP BBR VPS 上,网络连接状况确实有很不错的提升。
方法适用:腾讯云、阿里云、Vultr、Linode、VirMach 等 VPS。
「CentOS 7 更换/升级内核 删除多余内核 快速开启 Google BBR TCP加速:https://ae.mba/27」CentOS 7 更新支持 BBR 内核
uname -r
查看 CentOS 内核,如果低于 4.10,则更新内核,安装 ELRepo 源:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
启用 ELRepo 源仓库:
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
安装新内核:
「CentOS 7 更换/升级内核 删除多余内核 快速开启 Google BBR TCP加速:https://ae.mba/27」yum -y --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel
检查已安装可用内核
rpm -qa | grep kernel
看到有 kernel-ml-5.16.15-1.el7.elrepo.x86_64 字样表示新内核安装成功。(或者版本号大于 5.3)
查看可用内核列表
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
返回列表如:
0 : CentOS Linux (5.16.15-1.el7.elrepo.x86_64) 7 (Core)
「CentOS 7 更换/升级内核 删除多余内核 快速开启 Google BBR TCP加速:https://ae.mba/27」
1 : CentOS Linux (0-rescue-74c28eb5f85446149c7643671f227ffa) 7 (Core)
2 : CentOS Linux (0-rescue-00a62363617944e08db8db894ba6145e) 7 (Core)
修改开机默认使用内核
grub2-set-default 0
grub2-mkconfig -o /boot/grub2/grub.cfg ##有可能需要执行一下
检查内核修改结果
grub2-editenv list
结果:
saved_entry=0
重启一下系统。检查一下新内核是否启用成功:
「CentOS 7 更换/升级内核 删除多余内核 快速开启 Google BBR TCP加速:https://ae.mba/27」uname -r
正常会有类似如下返回:
5.16.15-1.el7.elrepo.x86_64
CentOS 7 新内核启用 Google BBR TCP 加速
内核升级完成,执行如下代码即可开启 BBR:
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
重启系统(不重启应该也可以):
reboot
检查是否开启成功:
sysctl net.ipv4.tcp_available_congestion_control
输出:net.ipv4.tcp_available_congestion_control = reno cubic bbr
sysctl net.ipv4.tcp_congestion_control
输出:net.ipv4.tcp_congestion_control = bbr
lsmod | grep bbr
输出:tcp_bbr 20480 5(不一定有)
附:CentOS 7 升级 / 删除内核开启 BBR 自动化脚本
脚本小改自:腾创库,代码如下:
#!/bin/bash
#
# Title: CentOS7.6_x64_upgrade_kernel_script
# Author: ZNing
# Date: 2022-3-18
# Pass on the Tencent Cloud CentOS 7.9 x64
# You should run this script three times. The first is yum update, the second is kernel upgrade to 5, the final one is optional when you decided to maunal which is deleting old kernel.
clear;
function upgradeYum()
{
yum clean all;
yum update -y;
reboot;
}
function upgradeKernel()
{
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org;
rpm -Uvh https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm;
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available;
yum --enablerepo=elrepo-kernel install -y kernel-ml;
grub2-mkconfig -o /boot/grub2/grub.cfg;
grub2-editenv list;
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg;
echo -n "please enter the latest kernel number ->";
read num;
grub2-set-default $num;
grub2-editenv list;
}
function confirmKernel()
{
echo -n "are the kernel changed? If it is, plz input(y),else(n) ->";
read confirmInput;
if [ "$confirmInput" == 'y' ]; then
reboot;
elif [ "$selected" == 'n' ]; then
exit;
else
confirmKernel;
return;
fi;
}
function removeOldKernel()
{
IFS=$'\n';
for LINE in `rpm -qa | grep kernel- | grep 3.`; do
#Do some works on "${LINE}"
yum -y remove ${LINE};
done;
reboot;
}
function checkSystem()
{
cat /etc/redhat-release;
uname -sr;
uname -a;
echo "[Notice] Confirm Upgrade Kernel? please select: (1~4)"
select selected in 'Upgrade Step 1' 'Upgrade Step 2' 'Delete Old Kernel' 'Exit'; do break; done;
[ "$selected" == 'Exit' ] && echo 'Exit Upgrade.' && exit;
if [ "$selected" == 'Upgrade Step 1' ]; then
upgradeYum;
elif [ "$selected" == 'Upgrade Step 2' ]; then
upgradeKernel;
confirmKernel;
elif [ "$selected" == 'Delete Old Kernel' ]; then
removeOldKernel;
else
ConfirmInstall;
return;
fi;
echo "[OK] You Selected: ${selected}";
}
checkSystem;
代码需要执行 3 次,简单使用说明:
第一次执行进行 yum update 升级并重启。
第二次执行进行 Kernel 升级与切换:
这一步会进行两次的用户手工输入,第一次输入是选择最新内核所代表的最前面的数字,以便程序确认最新内核位置;
第二步输入确认是否内核已经切换为第一步所输的数字,如果 saved_entry=X 中的 X 为第一步所输入的数字,即可输入 y 进行切换内核重启。
第三次执行(可选)删除旧内核,当然也可以手工删除。
CentOS 7 删除多余无用内核
每次升级内核,旧内核不会自动删除,有些 VPS /boot 空间可能不大,升级可能提示错误:At least 30MB more space needed on the /boot filesystem……
查看 CentOS 可用内核列表
rpm -qa | grep kernel
一般留下在用内核即可:
kernel-ml-5.12.9-1.el7.elrepo.x86_64
kernel-ml-headers-5.16.15-1.el7.elrepo.x86_64
kernel-ml-5.16.15-1.el7.elrepo.x86_64
kernel-ml-devel-5.12.9-1.el7.elrepo.x86_64
kernel-ml-devel-5.16.15-1.el7.elrepo.x86_64
查看系统当前使用内核
uname -r
显示目前使用内核:
5.16.15-1.el7.elrepo.x86_64
删除多余内核
命令:rpm -e 内核名称,(yum remove 命令也可以)比如:
rpm -e kernel-ml-5.2.11-1.el7.elrepo.x86_64
下面命令可以删除所有非当前使用内核:(操作前请先确认清楚)
yum remove $(rpm -qa | grep kernel | grep -v $(uname -r))
检查 boot 剩余空间
df -h /boot
解压及网盘密码 1024
本文已于 2022-03-18 修改更新,您的宝贵建议请在文章下方评论区留言反馈,谢谢。
Comments:0