GalaxyData Community

Kernel 4 CentOS 7 или IO wait

Обновление ядра в CentOS до последней версии

Список команд для быстрого обновления:

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://elrepo.org/linux/kernel/el7/x86_64/RPMS/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel -y
grub2-set-default 'CentOS Linux (4.20.10-1.el7.elrepo.x86_64) 7 (Core)'
grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-editenv list

yum install yum-utils
package-cleanup --oldkernels --count=2

nano /etc/yum.conf
##add

exclude=kernel.x86_64

# tuned on virual server
tuned-adm profile virtual-guest
tuned-adm active
===

modprobe tcp_bbr 
echo  "tcp_bbr" | sudo tee -a /etc/modules-load.d/modules.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 
echo  "# allow testing with buffers up to 64MB
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
# increase Linux autotuning TCP buffer limit to 32MB
net.ipv4.tcp_rmem = 4096 87380 33554432
net.ipv4.tcp_wmem = 4096 65536 33554432
# recommended default congestion control is htcp
net.ipv4.tcp_congestion_control=htcp
# recommended for hosts with jumbo frames enabled
net.ipv4.tcp_mtu_probing=1
# recommended for CentOS7/Debian8 hosts
net.core.default_qdisc = fq " | sudo tee -a /etc/sysctl.conf 
sysctl -p

==
check
-
sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control

==
yum --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel kernel-ml-headers -y

В данном посте будет рассмотрено обновление ядра в CentOS 6,7 до последней версии.

Шаг 1. Добавление репозитория в систему

Импортируем ключ

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

 

Добавляем репозиторий для CentOS 7

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

Добавление репозитория для CentOS 6 (Внимание, перед установкой ядра нужно обновить систему командой yum upgrade)

rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm

 

Шаг 2. Устанавливаем плагин yum-plugin-fastestmirror

yum install yum-plugin-fastestmirror

 

Шаг 3. Проверяем текущую версию ядра

uname -r

 

Результат для CentOS 7

Шаг 4. Устанавливаем последнюю версию ядра доступную в репозитории.

yum --enablerepo=elrepo-kernel install kernel-ml

пакет kernel-ml это текущий стабильный релиз ядра.

Как видно из скрина мы установили последнюю версию ядра CentOS (На данный момент это версия 4.6)

Перегружаем систему

reboot

 

Шаг 5. Выбор версии ядра при загрузке системы.

При загрузке системы мы увидим установленное ядро

Шаг 6. Проверка версии ядра CentOS а так же опции

net.ipv6.ip_nonlocal_bind

 

P.S. для запуска сервера с новым ядром 4.6 нужно внести изменения в загрузчик grub2 командой

grub2-set-default 0

 

в этом случае по умолчанию будет запускаться первое по списку ядро.
Для просмотра дефолтного пункта загрузки можно воспользоваться командой

grub2-editenv list

 

Вывод

Далее, нужно убедиться в том, что новая версия ядра установлена и корректно прописана в автозагрузчике
?
1

cat /boot/grub2/grub.cfg | grep 'CentOS Linux (4'

 

На данном этапе важно ничего не изменять в этом файле, так как он генерируется динамически. Все что нам нужно — это убедиться в том, что новая версия ядра в нем указана и скопировать ее название.

После того, как новая версия ядра успешно установлена, она все еще не является текущей. Т.е. при следующей перезагрузке системы должно появиться окно выбора версии ядра по умолчанию.

Но, так как мы работаем с системой удаленно при помощи терминала SSH, увидеть выбор ядра при загрузке системы не представляется возможным (но если есть удаленный доступ через KVM это все упрощает), поэтому ядро по умолчанию будем устанавливать в ручном режиме.

На всякий случай проверим какое ядро загружется по умолчанию
?
1
# cat /etc/default/grub

В файле увидим следующую строку
?
1
GRUB_DEFAULT=saved

Что означает, что будет загружена последняя сохраненная версия.
Какая же версия ядра была загружена последней?
Это можно увидеть при помощи следующей команды
?
1
# grub2-editenv list

В ответ получим примерно следующее
?
1
saved_entry=CentOS Linux (3.10.0-229.20.1.el7.x86_64) 7 (Core)
Разумеется, точная версия может отличаться.

Далее, ручками изменяем версию ядра по умолчанию
?
1
# grub2-set-default [title number=»» or=»»]
Где title будет точный заголовок нового ядра, который мы увидели (и скопировали) ранее в файле /boot/grub2/grub.cfg

В моем случае новое ядро имеет следующий заголовок
?
1
CentOS Linux (4.4.0-1.el7.elrepo.x86_64) 7 (Core)

таким образом, команда по изменению ядра, загружаемого по умолчанию будет выглядеть следующим образом
?
1

grub2-set-default 'CentOS Linux (4.16.13-1.el7.elrepo.x86_64) 7 (Core)'

 

Важно — весь заголовок оборачивается в одинарные кавычки.

После этого еще раз проверим версию ядра загружаемого по умолчанию
?
1
# grub2-editenv list

На этом этапе сохраняем новую конфигурацию автозагрузчика
?
1
# grub2-mkconfig -o /boot/grub2/grub.cfg

Ну и, наконец, перезагружаем систему
?
1
# reboot

После того, как система перезагрузилась можно проверить текущую версию ядра
?
1
# uname -r

В моем случае вывод будет таким
?
1
4.4.0-1.el7.elrepo.x86_64

На этом, собственно, апгрейд ядра CentOS 7 закончен.

 

http://blog.stolbunsky.com/2016/01/upgrade-centos7-kernel.html

Exit mobile version