1 Kdump工具

Kdump的工作机制是在内核崩溃时, 通过kexec 工具由BIOS启动一个备用内核, 由备用内核执行一系列任务,保存内存中崩溃内核的状态, 供后续故障分析用。

  本文默认AMD或INTEL X86_64架构, RHEL7系统环境.

1.1 内核管理工具Kdump安装

Kdump是RHEL7中自带的内核管理工具.在RHEL7.1之前的版本,kdump作为安装完成之后的可选组件自动安装,从RHEL7.1开始kdump被植入安装界面,作为系统基础工具供安装选择.

可以通过下面命令直接RPM包安装.

yum -y install kexec-tools
rpm -q kexec-tools

同时,Kdump还配备了图形化管理工具,可以通过下面命令安装.

yum -y install system-config-kdump

对于RHEL7.4及之后的版本,kdump支持INTEL IOMMU. 而不支持RHEL7.3及之前的版本.

1.2 通过命令行配置kdump内存容量

kdump能监控系统内核运行状态,其地位比较特殊. kdump的内存空间是在系统启动时,由引导程序分配的,相对于系统内核,kdump内存是一个独立的空间.

可以通过如下命令指定kdump的内存空间大小.

crashkernel=128M    #为kdump保留128M的内存空间.

crashkernel的值可以设置成“auto",在一些拥有较大内存的系统中,利于实现Kdump的自动化管理.

crashkernel=auto

当然,crashkernel的值还可以通过如下形式实现更灵活的配置.

  crashkernel=<范围1>:<大小1>, <范围2>:<大小2>

crashkernel=512M-2G:64M,2G-:128M    #当系统内存在512M-2G之间时,为Kdump保留64M的内存空间;当系统内存大于2G时,为Kdump保留128M的内存空间.

还可以这样:

crashkernel=128M@16M    #为Kdump保留128M的内存空间,内存地址从16M(physical address 0x01000000)开始.

1.3 Kdump的存储

Kdump的配置在/etc/kdump.cnf中. kdump提供多种方式将捕获到内核崩溃数据本地保存或保存到远程主机.

#path /var/crash    #kdump本地存储目录,默认是存放在/var/crash目录下,可以根据使用习惯设置.
path /usr/local/cores 
...
#raw /dev/vg/lv_kdump    #kdump可以直接写入移动介质.
raw /dev/sdb1
...
#nfs my.server.com:/export/tmp    #kdump可以通过NFS保存到网络上其它存储设备中.
nfs test.example.com:/export/cores
...
#ssh user@my.server.com      #kdump可以通过SSH传输协议,保存远程主机上.
#sshkey /root/.ssh/kdump_id_rsa
ssh user@test.example.com
sshkey /root/.ssh/mykey

kdump.conf中还可以在 core_collector makedumpfile 选项后加上" -c ", 使kdump文件能够被压缩,以节省存储空间.

core_collector makedumpfile -csystemctl start kdump.service    #启动Kdump服务
systemctl enable kdump.service    #使Kdump开机自启
systemctl is-active kdump       #检查Kdump是否已启动
active
echo 1 > /proc/sys/kernel/sysrq   #模拟内核崩溃,检查/var/crash/是否自动保存Kdump捕获的内核崩溃数据, 以确定Kdump是否正常工作
echo c > /proc/sysrq-trigger

需要注意的是

(1)在RHEL7之前的版本中,kdump的存储目录会随着kdump服务的启动而由系统自动创建. RHEL7中,如果改变了kdump的存储目录,则必须在启动kdump服务之前,手动创建kdump的存储目录,否则kdump服务会启动失败.

  (2)如果在安装界面禁用了kdump, 而安装完成之后再通过systemctl start kdump启动kdump, 会报内存不足无法启动的错误. kdump的内存空间是在内核加载之前由boot分配的, 所以必须修改boot. 最好使用kdump的图形管理工具 system-config-kdump 加载kdump的默认配置, 使kdump处于可用状态, 然后重启系统, systemctl status kdump 服务处于激活状态(active).

1.4 利用crash功能分析内核崩溃

利用crash功能组件能够分析linux内核崩溃时的网络、磁盘、CPU、系统内核状态,快速定位故障点.

crash组件可以通过RPM包安装

sudo yum -y install crash       #安装crash
sudo debuginfo-install kernel    #安装内核调试模块sudo crash /usr/lib/debug/lib/modules//vmlinux /var/crash//vmcore  #启动crash调试

测试一下:

crash基本调试命令:

crash>log    #崩溃时日志记录
crash>bt     #崩溃时的堆栈信息
crash>vm     #崩溃时的内存状态
crash>ps     #崩溃时的进程状态
crash>files   #崩溃时的打开的文件
crash>exit   #退出crash

2 linux内核调校

2.1 kernel的调校途径

RHEL7中提供三种内核调校方法:

  (1)使用sysctl 命令;

  (2)修改/etc/sysctl.d/ 目录下的内核配置文件;

  (3)通过shell 在/proc/sys 目录下挂载虚拟文件系统;

2.2 sysctl命令

可以列出、读取、设置内核参数, 还可以将参数设置为临时或永久.

sysctl -a        #列出所有可调校的项
sysctl kernel.version    #列出kernel的版本信息sysctl .=      #使调校参数临时生效
sysctl -W .=   #使调校参数永久生效

2.3 修改99-sysctl.conf文件

修改/etc/sysctl.d/99-sysctl.conf 目录下的99-sysctl.conf文件

cp /etc/sysctl.d/99-sysctl.conf /etc/sysctl.d/99-sysctl.conf.bak    #备份系统默认的内核参数文件
vim /etc/sysctl.d/99-my.conf    #创建新的内核参数文件...
. =    #写入要调校的参数类和值. =
...
save    #保存文件
reboot\ sysctl -p /etc/sysctl.d/99-my.conf  #重启系统或者使用sysctl -p 命令载入新的内核参数配置

2.4 sysctl 调校内核参数

(1)调整最大请求的aio数量.

sysctl -a | grep fs.aio    #查看内核默认的最大aio值
sysctl fs.aio-max-nr=2048576  #临时调整aio最大值

(2)开启本地ipv4转发功能.

sysctl net.ipv4.ip_forward = 1

(3)设定进程能被分配到的最大内存空间.

sysctl vm.max_map_count = 65530

(4)设定系统中同时运行的最大进程数.

sysctl kernel.threads-max = 16161

在root权限下,通过sysctl 命令的内核参数调校, 基本上能直接控制linux 的内核所有行为, 满足实际生产中的绝大多数需求.

RHEL7系统管理之内核管理相关推荐

  1. linux基础—课堂随笔010_系统启动和内核管理

    系统启动和内核管理 Linux: kernel+rootfs kernel: 进程管理.内存管理.网络管理.驱动程序.文件系统.安全功能 rootfs:程序和glibc 库:函数集合, functio ...

  2. Linux 第20天: (09月12日) Linux启动和内核管理

    Linux 第20天: (09月12日) Linux启动和内核管理 本章内容 CentOS 5和6的启动流程 服务管理 Grub管理 自制Linux 启动排错 编译安装内核 Linux组成 Linux ...

  3. Linux内核管理之分配掩码(三)

    Linux内核管理之分配掩码(三) 分配掩码是linux内存管理中非常重要的一个参数,它影响着页面分配的整个流程. 分配掩码gfp_mask定义在include/linux/gfp.h文件中,这些标志 ...

  4. Axure高保真企业商城后台管理系统web端公司商城后台管理原型连锁门店管理系统交互组件点餐平台商家管理端后台库存管理财务管理系统管理接单管理

    作品介绍:Axure高保真企业商城后台管理系统&web端公司商城后台管理原型&连锁门店管理系统交互组件&点餐平台商家管理端后台&库存管理&财务管理&系统 ...

  5. 内核管理 之 内核管理概述

    作者:北南南北 来自:LinuxSir.Org 摘要:本文讲述与内核操作有关的基础知识:比如编译内核,装载.移除内核模块,查看模块信息等:本文涉及相关的命令有modprobe.insmod.depmo ...

  6. 垃圾回收分类系统、垃圾回收高保真原型设计 、垃圾分类后台管理系统、垃圾回收分类平台、垃圾回收分类、智慧管理系统、订单管理、财务管理、系统管理、库存管理、设备管理、Axure原型、rp原型

    Axure高保真web端后台管理系统.垃圾回收分类系统.垃圾回收高保真原型设计 .垃圾分类后台管理系统.垃圾回收分类平台.垃圾回收分类.智慧管理系统.订单管理.财务管理.系统管理.库存管理.设备管理 ...

  7. RBP系统管理之地区管理

    RBP的系统管理中包括组织机构管理.业务角色管理.系统用户管理.个人信息管理.地区管理等功能模块,其中『地区管理』功能模块是方便跨区域的公司针对不同区域的进行分区管理.地区管理即实际地区(区域省份)在 ...

  8. RBP系统管理之日志管理

    RBP的系统管理中设置了日志管理,通过『日志管理』功能模块,用户可以对系统日志进行查询操作,以及日志备份信息的下载和导入操作,主要分为日志查询和日志备份两部分,本文将分别介绍. 一.日志查询 用户可以 ...

  9. 内核管理 之 编译内核操作流程 ──为新手指南

    作者:北南南北 来自:LinuxSir.Org 提要: 编译内核主要是通过内核实现某些功能,比如iptables 需要内支持:所有的硬件的支持也是通过内核实现的:本文只是简单的给初学者讲一下编译内核的 ...

最新文章

  1. linux重定向文件容加时间,linux – 如何在Bash中将stdout重定向到文件时添加时间戳?...
  2. HTTP菜鸟教程速查手册
  3. 怎样才干成为一名优秀的软件測试人员
  4. java 1 0_【Java】1.0 开发环境
  5. PID控制算法的C语言实现十 模糊算法简介
  6. 微软走进云南为网吧提供特价正版软件
  7. 多玩YY瞄准在线教育
  8. [1034]安装Xposed框架+JustTrustMe
  9. 老Java程序员花2天写了个连连看,我竟连不过我女儿,我了个去!
  10. FILecoin 将重大战略升级,FIL 或将引导商业数据
  11. 1960-2018年世界各国GDP排名变化--Python动图实现
  12. 机器人总动员拟人_《机器人总动员》从三个角度解析这部电影带给我们的思考与感动...
  13. 发明专利与实用新型的联系?
  14. 【EmailCamel外贸邮件群发】邮件到达收件箱系列文章05:免费公共邮箱作为发件人的限制
  15. cc150第一章JAVA字符串和数组总结
  16. java和javaweb的区别_java和javaweb有什么关系吗?它们之间的区别是什么?
  17. tab s2 android 8,mini 3一边去!三星GalaxyTab S2 8.0评测
  18. 互联网日报 | 蔚来首款旗舰轿车1月9日发布;抖音电商开启首届抢新年货节;2020年快递业务量达830亿件...
  19. FCC Truncate a string 解决方法
  20. SAP 让库龄表飞起来!

热门文章

  1. 如何去判断一个面试者的深度学习水平?
  2. 为了爱情,吃掉150瓶“老干妈”的程序员
  3. 别动不动就画折线图了,教你4种酷炫可视化方法
  4. Python从入门到精通- 什么是NumPy? (上)
  5. RESTful之过滤Filtering
  6. Linux之vim全选、全部复制、全部删除
  7. 尚硅谷学习笔记-节点的常用属性和方法
  8. 尚硅谷学Javaweb,关于正则表达式笔记
  9. 【Python基础】使用统计函数绘制简单图形
  10. 实战:车牌识别之车牌定位