首页 > 其他分享 >RHEL7系统管理之内核管理

RHEL7系统管理之内核管理

时间:2023-11-04 23:25:34浏览次数:29  
标签:RHEL7 系统管理 crash Kdump 调校 内核 sysctl kdump

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 [email protected]      #kdump可以通过SSH传输协议,保存远程主机上.
#sshkey /root/.ssh/kdump_id_rsa
ssh [email protected]
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,系统管理,crash,Kdump,调校,内核,sysctl,kdump
From: https://www.cnblogs.com/A121/p/17810012.html

相关文章

  • crash —— 查看进程的内核栈的内容
    有时我们有这样的需求,想查看某个进程的内核栈里的全部内容,介绍下面的几种做法:方法1:得到进程的栈底地址以及栈大小,然后使用rd指令读取使用mach指令获取内核栈的大小crash>mach|grepSIZEMEMORYSIZE:64GBPAGESIZE:4096KERNELSTACKSI......
  • 短剧视频小程序付费系统管理开发
      短剧视频小程序付费系统软件的开发实现了一种创新的技术,提升视频的内容输入,也可以为制片组提供方面,观看短剧的用户直接在平台注册观看。  短剧视频小程序付费系统软件的开发,是一个有效建立网络框架的形式,确保系统的稳定安全。开发一个集成多种模式的短剧软件,要方便用户......
  • 小剧场短剧影视小程序系统管理软件开发
      短剧影视软件为了实现市场的需求,我们开发一款短剧小程序系统软件。该软件能帮助用户提供给更方便观众看的的系统,也可以实现短剧的的管理。  短剧主要功能包括:用户注册登录,短剧分类,视频上传,搜索功能,个人中心。通过注册获得账号,在短剧平台上选择自己喜欢的视频,所有的用户......
  • 短视频短剧小程序抖音快手微视系统管理平台开发
      短视频是从抖音短视频开始的,短剧小程序软件适合在抖音,快手,微信端管理,其他的平台也可以实现管理。这些短视频品台吸引了众多的老板参与进来,用户自然就能看到更多的视频内容。  开发者需要对各个软件的功能进行了解,抖音、快手、微视等都是需要拥有独特的用户群体。开发者......
  • 内核System.map
    内核System.map是一个文本文件,记录了操作系统内核中各个函数和变量的地址信息。它是通过编译和链接操作系统内核时生成的。System.map文件对于内核调试非常有用,因为它可以提供内核中各个函数和变量的地址。当在内核发生崩溃或者调试时,可以通过System.map文件来定位问题所在的函数......
  • 进程空间管理:用户态和内核态
    用户态虚拟空间里面有几类数据,例如代码、全局变量、堆、栈、内存映射区等。在structmm_struct里面,有下面这些变量定义了这些区域的统计信息和位置。unsignedlongmmap_base;/*baseofmmaparea*/unsignedlongtotal_vm;/*Totalpagesmapped*/unsignedlonglock......
  • lsmod-查看内核模块信息
    lsmod-查看内核模块信息lsmod——显示已载入系统的模块lsmod其实就是listmodules的缩写,即列出所有模块.功能说明:显示已载入系统的模块。#lsmodModuleSizeUsedbyiptable_nat59230nf_nat226761iptable_nat第1......
  • 系统编程:控制文件I/O的内核缓冲之sync(),fsync()和fdatasync()
        通过系统编程:从write()和fwrite()谈开来我们知道了系统调用和glibc库函数为了提升性能而设立的缓冲区,那么,什么情况下数据会从上一次缓冲区刷新到下一层存储介质(可能是缓冲区,也可能是永久存储介质)呢?fflush()库函数提供了强制将stdio库函数缓冲区数据刷新到内核缓冲......
  • 飞腾派使用内核态编程完成LED20控制操作
    1基础知识在该程序设计过程中我们首先需要学习如何在内核态编程。1.1内核态编程在内核态中编写C语言程序和在用户态中编写C语言程序不同,在用户态中编写C语言程序,我们可以使用libc库,通过系统调用访问内核态的相关操作。基础的内核态程序如下:#include<linux/init.h>#include......
  • CentOS7 以rpm包方式升级内核
    RPM包方式安装后,查看内核启动序号:[root@localhost~]awk-F\''$1=="menuentry"{print$2}'/etc/grub2.cfgCentOSLinux(4.4.179-1.el7.elrepo.x86_64)7(Core)CentOSLinux(3.10.0-693.el7.x86_64)7(Core)CentOSLinux(0-rescue-6d4c599606814867814......