centos7安装5.4版本内核

一、简介

公司服务器新上万兆网卡和nvme,准备搭建ceph 集群。但是Dell R620够老的,担心用不了。这里记录所踩的坑。

二、 elrepo 安装

刚开始和网络查的结果一样,用elrepo 来更新内核。但是elrepo 的lt版本只到4.4,不符合cephfs 的内核要求。

抱着试一试的心态安装ml版本 5.9.8。结果是raid还能识别,但是igb 和万兆不识别。只能换个内核了。

记录下elrepo的升级方式

安装elrepo源和GPG key

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum -y install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
yum -y --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel

elrepo包含两个版本内核,kernel-ml和kernel-lt.

  • kernel-ml是mainline版本,一直跟随最新的版本走,目前是5.9.8

  • kernel-lt是longterm版本,长期支持,目前是4.4.243

CephFS 要求最小内核是4.17,所以选择安装kernel-ml

注意:关于安装驱动这个问题,elrepo也有给出相关包和方法:http://elrepo.org/tiki/DeviceIDs。可是实践后发现对我没有用,还是老实到官网找最新的驱动吧

三、centos 官方altarch 源

centos7 官方kernel版本是3.10,再怎么update 大版本还是3.10。这时想到centos的altarch 源,这个源里的包都是相对新的,官方用这个替换了以前的experimental。而且他的稳定性和兼容性应该比elrepo好。

下载并安装kernel

cd ~
wget https://mirrors.tuna.tsinghua.edu.cn/centos-altarch/7/kernel/x86_64/Packages/kernel-5.4.65-200.el7.x86_64.rpm
wget https://mirrors.tuna.tsinghua.edu.cn/centos-altarch/7/kernel/x86_64/Packages/kernel-core-5.4.65-200.el7.x86_64.rpm
wget https://mirrors.tuna.tsinghua.edu.cn/centos-altarch/7/kernel/x86_64/Packages/kernel-devel-5.4.65-200.el7.x86_64.rpm
wget https://mirrors.tuna.tsinghua.edu.cn/centos-altarch/7/kernel/x86_64/Packages/kernel-modules-5.4.65-200.el7.x86_64.rpm
yum install kernel-*

kernel包结构说明

  • kernel
  • kernel-core 内核核心功能
  • kernel-modules 内核的基本模块(大部分常用的驱动都在这里)

当然,你也可以做成yum repo的形式。

altarch.repo

[altarch]
name=CentOS-$releasever - altarch
baseurl=http://mirror.centos.org/altarch/$releasever/kernel/$basearch/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

设置内核启动顺序

查看当前启动内核

grub2-editenv list

选择指定内核启动

grub2-set-default 0

安装完新内核后,一般都是放在启动第一位,我们只要执行上面命令设置使用第一个内核启动就好了.可以使用下面命令查看排序

egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'

重启系统

扩展内容

更换5 的内核后,服务器的网卡名称会改变,通过以下方式找到正确的网卡名

网卡wake-on

通过wake-on查找服务器哪个网卡的千兆口是插了网线的,开启后,ethtool 可以看网卡是否有速率,有速率的就是插了网线的。

检查网卡是否支持WOL

ethtool eth0 

如果 wake-on 一项值为 d,表示禁用wake on lan
值为 g,表示启用 wake on lan

用下面的命令来启用wake on lan

ethtool -s eth0 wol g

万兆网卡可以通过dmesg 查找

[root@]# grep Up dmesg
[    2.549298] microcode: Microcode Update Driver: v2.2.
[    3.859307] i40e 0000:04:00.1 eth2: NIC Link is Up, 10 Gbps Full Duplex, Flow Control: Non

查看使用的网卡驱动

可以查看网卡型号和驱动版本

lspci -nn|grep Eth
01:00.0 Ethernet controller [0200]: Intel Corporation I350 Gigabit Network Connection [8086:1521] (rev 01)
01:00.1 Ethernet controller [0200]: Intel Corporation I350 Gigabit Network Connection [8086:1521] (rev 01)
01:00.2 Ethernet controller [0200]: Intel Corporation I350 Gigabit Network Connection [8086:1521] (rev 01)
01:00.3 Ethernet controller [0200]: Intel Corporation I350 Gigabit Network Connection [8086:1521] (rev 01)
04:00.0 Ethernet controller [0200]: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ [8086:1572] (rev 02)
04:00.1 Ethernet controller [0200]: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ [8086:1572] (rev 02)

查看驱动路径

通过这个命令去对比2个内核的raid 和网卡驱动是否一致

]# lsinitrd -k 5.4.65-200.el7.x86_64|grep igb
-rw-r--r--   1 root     root         3618 Oct 31  2018 usr/lib/kbd/keymaps/xkb/ng-igbo.map.gz
drwxr-xr-x   2 root     root            0 Nov 16 11:41 usr/lib/modules/5.4.65-200.el7.x86_64/kernel/drivers/net/ethernet/intel/igb
-rw-r--r--   1 root     root        94760 Sep 16 22:30 usr/lib/modules/5.4.65-200.el7.x86_64/kernel/drivers/net/ethernet/intel/igb/igb.ko.xz

开启BBR

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
sudo sysctl -p

验证

sysctl net.ipv4.tcp_available_congestion_control
lsmod | grep bbr

有输出

tcp_bbr                20480  880 

则说明成功了.

如果没成功,执行uname -r看下内核版本,确定大于4.9的话,再重启下机器看看.

猜你喜欢

转载自blog.51cto.com/foxhound/2551477
今日推荐