云服务器内容精选

  • 问题描述 Linux操作系统的E CS 实例发生异常重启事件,错误提示如下: Kernel panic - not syncing: NMI: Not continuing 同时,内核日志打印如下信息: [645683.754132] Uhhuh. NMI received for unknown reason 20 on CPU 1. [645683.754133] Do you have a strange power saving mode enabled? [645683.754133] Kernel panic - not syncing: NMI: Not continuing
  • 可能原因 如果Linux操作系统ECS实例的内核参数kernel.unknown_nmi_panic配置为1,则ECS会在系统收到NMI中断时主动通过panic系统重启。 通常情况下,内核参数kernel.unknown_nmi_panic配置为1的目的是为了通过触发NMI中断主动通过panic系统进行定位。由于个别型号的CPU会在正常业务流程中产生NMI中断,在这种情况下如果将内核参数kernel.unknown_nmi_panic配置为1,将会导致ECS产生非预期的异常重启事件。
  • 解决方案 远程登录ECS实例。 执行以下命令,查看ECS实例内核参数kernel.unknown_nmi_panic的值。 sysctl -n kernel.unknown_nmi_panic 如果内核参数的取值为1,说明是由于内核参数配置错误引起的ECS实例异常重启。 图1 排查结果 执行以下命令,查看是否存在内核参数kernel.unknown_nmi_panic相关配置。 vim /etc/sysctl.conf 在/etc/sysctl.conf文件中,排查是否存在kernel.unknown_nmi_panic的相关配置。 如果存在kernel.unknown_nmi_panic=1的配置,将该配置改为kernel.unknown_nmi_panic=0 如果不存在kernel.unknown_nmi_panic=1的配置,增加kernel.unknown_nmi_panic=0 图2 查看/etc/sysctl.conf文件 按“Esc”,输入:wq保存并退出。 执行以下命令,使配置生效。 sysctl –p 图3 配置生效 该修复方案热生效,无需重启ECS。
  • 处理方法一:系统范围设置 以root用户登录云服务器。 执行以下命令,查看操作系统中当前打开的所有文件数和最大打开文件数设置(部分版本默认为366954)。 cat /proc/sys/fs/file-nr cat /proc/sys/fs/file-max 回显输出的第一列表示当前系统中所有打开的文件数。 执行以下命令,更改系统范围的最大打开文件数。 vim /etc/sysctl.conf 按i键进入编辑模式。 在文件末尾添加如下内容,具体的数值可以根据实际情况修改。 fs.file-max = 495000 按ESC键退出,并输入:wq保存配置。 执行以下命令,使修改生效。 sysctl -p
  • 问题原因 常见的可能导致系统启动失败或者无法进入系统的系统配置错误如表1所示。 表1 常见系统配置错误 问题类型 典型问题 配置错误 /etc/fstab文件缺失或者配置错误 SELinux配置错误 /etc/security/limits.conf配置错误 /etc/passwd配置格式错误 /etc/shadow配置格式错误 /etc/ssh/sshd_config配置格式错误 文件或目录缺失 /etc/ssh目录被误删 /etc/security目录被误删 /etc/passwd文件被误删 /etc/shadow文件被误删 /etc/ssh/sshd_config文件被误删 文件权限错误 SSH依赖的私钥权限配置过大 SSH依赖的公钥权限配置过大 内核参数配置错误 vm.nr_hugepages配置过大
  • 可能原因 一般来说不会出现删除文件后空间不释放的情况,但是也存在例外,比如文件进程锁定,或者有进程一直在向这个文件写数据。 Linux系统中的一个文件在文件系统中存放分为两个部分:数据部分和指针部分,指针位于文件系统的meta-data中,在将数据删除后,这个指针就从meta-data中清除了,而数据部分存储在磁盘中。在将数据对应的指针从meta-data中清除后,文件数据部分占用的空间就可以被覆盖并写入新的内容,之所以出现删除文件后,空间还没有释放,就是因为进程还在一直向这个文件写入内容,导致虽然删除了文件,但是由于进程锁定,文件对应的指针部分并未从meta-data中清除,而由于指针并未删除,系统内核就认为文件并未被删除,因此通过df命令查询空间并未释放。 当一个文件被删除后,在文件系统目录中已经不可见了,所以du就不会再统计它了。然而如果此时还有运行的进程持有这个已经被删除了的文件的句柄,那么这个文件就不会真正在磁盘中被删除,分区超级块中的信息也就不会更改。这样df仍旧会统计这个被删除了的文件。
  • 配置kdump操作步骤 查看是否已经安装kexec-tools。 rpm -q kexec-tools 如果没有安装,则执行下面命令安装。 yum install -y kexec-tools 开启kdump默认启动。 systemctl enable kdump 设置craskkernel参数,设置这个参数的目的是预留内存给capture kernel。 首先查看参数是否已经设置。 grep crashkernel /proc/cmdline 如果有显示,则表示已经设置,如果没有显示,则需要重新设置。 设置crashkernel,编辑/etc/default/grub文件。 GRUB_TIMEOUT=5 GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CM DLI NE_LINUX="crashkernel=auto rd.lvm.lv=rhel00/root rd.lvm.lv=rhel00/swap rhgb quiet" GRUB_DISABLE_RECOVERY="true" 找到GRUB_CMDLINE_LINUX参数,添加crashkernel=auto,其他内容不变。 执行grub命令,使以上配置生效。 grub2-mkconfig -o /boot/grub2/grub.cfg 打开/etc/kdump.conf文件中找到“path”参数,添加以下内容。 path /var/crash 默认是保存在/var/crash目录下,如果要保存到其他目录,则改成对应的目录, 例如保存在/home/kdump下,则改成: path /home/kdump 要确保指定的路径有足够的空间保存vmcore,建议剩余空间不小于 RAM 大小;也可以保存在SAN,nfs等共享设备上。 设置转存vmcore级别。 修改/etc/kdump.conf文件,添加如下参数,如果存在则无需添加。 core_collector makedumpfile -d 31 -c -c表示压缩vmcore文件, -d表示过滤掉部分无效的内存数据,可以根据需要调整,一般31即可,31是由如下的值与计算而成。 zero pages = 1 cache pages = 2 cache private = 4 user pages = 8 free pages = 16 执行如下命令重启系统,使以上配置生效。 reboot
  • CentOS 6系列操作系统配置atop 执行以下命令,安装atop。 yum install -y atop 编辑配置文件,修改采样周期。 vi /etc/sysconfig/atop 修改如下配置参数,修改后保存并退出。 LOG INTERVAL默认是600,可以修改成15,单位秒。 LOGINTERVAL=15 vi /etc/logrotate.d/atop 修改如下配置参数,修改后保存并退出。 默认atop日志保存周期为40天,可以根据实际修改“-mtime”的值为3,单位为天。 postrotate /usr/bin/find /var/log/atop/ -maxdepth 1 -mount -name atop_\[0-9\]\[0-9\]\[0-9\]\[0-9\]\[0-9\]\[0-9\]\[0-9\]\[0-9\]\* -mtime +3 -exec /bin/rm {} \; endscript 启动atop服务。 service atop start 检查是否启动成功,is running 表示运行正常。 service atop status atop (pid 3170) is running
  • Ubuntu 20/22、Debian 10/11系列操作系统配置atop 执行以下命令,安装atop。 apt-get install -y atop 编辑配置文件,修改采样周期。 vi /etc/default/atop 修改如下配置参数,修改后保存并退出。 LOGINTERVAL默认是600,可以修改成15,单位秒。 默认atop日志保存周期为28天,可以根据实际修改LOGGENERATIONS的值为3,单位为天。 LOGINTERVAL=15 LOGGENERATIONS=3 启动atop服务。 systemctl start atop 检查是否启动成功,active(running) 表示运行正常。 systemctl status atop atop.service - Atop advanced performance monitor Loaded: loaded (/etc/init.d/atop; bad; vendor preset: disabled) Active: active (running) since Sat 2024-03-11 14:09:47 CST; 16s ago
  • Ubuntu 16系列操作系统配置atop 执行以下命令,安装atop。 apt-get install -y atop 编辑配置文件,修改采样周期。 vi /etc/default/atop 修改如下配置参数,修改后保存并退出。 LOGINTERVAL默认是600,可以修改成15,单位秒。 默认atop日志保存周期为28天,不支持修改。 LOGINTERVAL=15 启动atop服务。 systemctl start atop 检查是否启动成功,active(running) 表示运行正常。 systemctl status atop atop.service - LSB: Monitor for system resources and process activity Loaded: loaded (/etc/init.d/atop; bad; vendor preset: enabled) Active: active (running) since Mon 2024-04-29 19:33:22 CST; 38s ago
  • SUSE 15、SUSE 12系列操作系统配置atop 下载atop源码安装包。 wget https://www.atoptool.nl/download/atop-2.6.0-1.src.rpm 执行以下命令安装源码atop。 rpm -ivh atop-2.6.0-1.src.rpm 安装编译atop依赖软件包 zypper -n install rpm-build ncurses-devel zlib-devel 执行以下命令编译atop cd /usr/src/packages/SPECS rpmbuild -bb atop-2.6.0.spec 执行以下命令安装atop cd /usr/src/packages/RPMS/x86_64 rpm -ivh atop-2.6.0-1.x86_64.rpm 编辑配置文件,修改采样周期。 vi /etc/default/atop 修改如下配置参数,修改后保存并退出。 LOGINTERVAL默认是600,可以修改成15,单位秒。 默认atop日志保存周期为28天,可以根据实际修改LOGGENERATIONS的值为3,单位为天。 LOGINTERVAL=15 LOGGENERATIONS=3 重启atop服务。 systemctl restart atop 检查是否启动成功,active(running) 表示运行正常。 systemctl status atop atop.service - Atop advanced performance monitor Loaded: loaded (/usr/lib/systemd/system/atop.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2021-06-19 16:50:01 CST; 6s ago
  • 分析atop日志 atop启动后,会将采集记录存放在/var/log/atop目录下的日志文件中。 执行如下命令,查看日志文件。 atop -r /var/log/atop/atop_2024XXXX atop常用命令 打开日志文件后,您可以使用以下命令筛选数据。 c:按照进程CPU使用率进行降序筛选。 m:按照进程内存使用率进行降序筛选。 d:按照进程磁盘使用率进行降序筛选。 a:按照进程资源综合使用率进行降序筛选。 n:按照进程网络使用率进行降序筛选。 t:跳转到下一个监控采集点。 T:跳转到上一个监控采集点。 b:指定时间点,格式为YYYYMMDDhhmm。 系统资源监控字段含义 下图为部分监控字段以及数值,具体数值根据采样周期和atop版本有所不同。下图仅供参考,具体数据以您实际数据为准。 图1 系统资源监控字段 主要参数说明如下: ATOP 行:主机名、信息采样日期和时间点。 PRC 行:进程整体运行情况。 #sys 及 user:内核态和用户态所占 CPU 的时间值。 #proc:进程总数。 #zombie:僵死进程的数量。 #exit:采样周期期间退出的进程数量。 CPU 行:CPU 整体(即多核 CPU 作为一个整体 CPU 资源)的使用情况。CPU 行的各字段数值相加结果为 N*100%,N 为 CPU 核数。 #sys 及 user:内核态和用户态所占 CPU 的时间比例。 #irq:CPU 被用于处理中断的时间比例。 #idle:CPU 处在完全空闲状态的时间比例。 #wait:CPU 处在进程等待磁盘 IO ,导致 CPU 空闲状态的时间比例。 CPL 行:CPU 负载情况。 #avg1、avg5 和 avg15:过去1分钟、5分钟和15分钟内运行队列中的平均进程数量。 #csw:指示上下文交换次数。 #intr:指示中断发生次数。 MEM 行:内存的使用情况。 #tot:物理内存大小。 #free:空闲的物理内存大小 #cache :用于页缓存的内存大小。 #buff:用于文件缓存的内存大小。 #slab:系统内核占用的内存大小。 SWP 行:交换空间的使用情况。 #tot:交换区总量。 #free:空闲交换空间大小。 DSK 行:磁盘使用情况,每一个磁盘设备对应一列。如果有 sdb 设备,那么增加一行 DSK 信息。 #sda:磁盘设备标识。 #busy:磁盘忙时比例。 #read 及 write:读、写请求数量。 NET 行:多列 NET 展示了网络状况,包括传输层(TCP 和 UDP)、IP 层以及各活动的网口信息。 #xxxxxi:各层或活动网口收包数目。 #xxxxxo:各层或活动网口发包数目。 停止 atop atop运行会占用额外的系统和磁盘资源,不建议在业务环境下长期运行,您可在问题排查完成后,执行以下命令停止atop。 systemctl stop atop CentOS 6执行以下命令停止atop。 service atop stop
  • CentOS 7/8、AlmaLinux、 Rocky Linux系列操作系统配置atop 执行以下命令,安装atop。 yum install -y atop 编辑配置文件,修改采样周期。 vi /etc/sysconfig/atop 修改如下配置参数,修改后保存并退出。 LOGINTERVAL默认是600,可以修改成15,单位秒。 默认atop日志保存周期为28天,可以根据实际修改LOGGENERATIONS的值为3,单位为天。 LOGINTERVAL=15 LOGGENERATIONS=3 启动atop服务。 systemctl start atop 检查是否启动成功,active(running) 表示运行正常。 systemctl status atop atop.service - Atop advanced performance monitor Loaded: loaded (/usr/lib/systemd/system/atop.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2024-03-6 11:49:47 CST; 2h 27min ago
  • Ubuntu 18、Debian 8/9系列操作系统配置atop 执行以下命令,安装atop。 apt-get install -y atop 编辑配置文件,修改采样周期。 vi /usr/share/atop/atop.daily 修改如下配置参数,修改后保存并退出。 LOGINTERVAL默认是600,可以修改成15,单位秒。 默认atop日志保存周期为28天,可以根据实际修改“-mtime”的值为3,单位为天。 LOGINTERVAL=15 …… ( (sleep 3; find $LOGPATH -name 'atop_*' -mtime +3 -exec rm {} \;)& ) 启动atop服务。 systemctl start atop 检查是否启动成功,active(running) 表示运行正常。 systemctl status atop atop.service - Atop advanced performance monitor Loaded: loaded (/etc/init.d/atop; bad; vendor preset: disabled) Active: active (running) since Sat 2024-03-6 14:09:47 CST; 15s ago
  • 操作场景 本节操作介绍atop和kdump的配置方法。 不同的Linux版本使用的atop工具版本不同,因此配置方法稍微有所不同。 配置atop: atop简介 atop安装前准备 CentOS 7/8、AlmaLinux、 Rocky Linux系列操作系统配置atop CentOS 6系列操作系统配置atop Ubuntu 20/22、Debian 10/11系列操作系统配置atop Ubuntu 18、Debian 8/9系列操作系统配置atop Ubuntu 16系列操作系统配置atop SUSE 15、SUSE 12系列操作系统配置atop 使用源码方式安装(适用于CentOS Stream 9、openEuler、EulerOS等系列操作系统) 分析atop日志 配置kdump: 配置kdump使用须知 kdump简介 配置kdump操作步骤 检查kdump配置是否生效