云服务器内容精选

  • 配置操作系统dump(Linux) 本文以CentOS 7.5版本操作系统为例进行介绍,更多版本的操作,请参考对应操作系统官网帮助文档。 远程登录云服务器。 执行以下命令,安装kexec-tools。 yum install kexec-tools 执行以下命令,查看crashkernel预留内存大小。 cat /etc/default/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CM DLI NE_LINUX="net.ifnames=0 consoleblank=600 console=tty0 console=ttyS0,115200n8 spectre_v2=off nopti crashkernel=auto " GRUB_DISABLE_RECOVERY="true" 执行以下命令,设置crashkernel的大小。 vim /etc/default/grub 当前crashkernel预留内存大小为“auto”,您可以在“GRUB_CMDLINE_LINUX”字段,修改“crashkernel”的值,设置crashkernel的大小。 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="net.ifnames=0 consoleblank=600 console=tty0 console=ttyS0,115200n8 spectre_v2=off nopti crashkernel=256M" GRUB_DISABLE_RECOVERY="true" 您可以根据系统架构决定crashkernel预留内存大小,过小会导致生成coredump文件失败。 当前示例的系统内存是1GiB,预留内存设置为256M。 执行以下命令,重新生成grub配置文件。 grub2-mkconfig -o /boot/grub2/grub.cfg 执行以下命令,编辑内核参数文件/etc/sysctl.conf。 vim /etc/sysctl.conf 在/etc/sysctl.conf配置文件中增加以下参数,以便于在收到NMI时将操作系统切换到应急模式,并生成内存转储。 kernel.panic_on_unrecovered_nmi=1 kernel.unknown_nmi_panic=1 重启系统。 reboot 执行以下命令,修改kdump默认配置/etc/kdump.conf。 vim /etc/kdump.conf #指定coredump文件存储位置 path /var/crash #增加-c参数,代表压缩coredump文件 core_collector makedumpfile -c -l --message-level 1 -d 31 #生成coredump后,重启系统 default reboot 执行以下命令,开启kdump服务并设置开机自启动。 systemctl start kdump.service systemctl enable kdump.service 执行以下命令,检查kdump是否开启成功。 service kdump status Redirecting to /bin/systemctl status kdump.service ● kdump.service - Crash recovery kernel arming Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: enabled) Active: active (exited) since Wed 2024-05-22 21:19:47 CS T; 11min ago Main PID: 591 (code=exited, status=0/SUC CES S) CGroup: /system.slice/kdump.service systemctl is-active kdump.service active
  • 背景知识 操作系统dump,即内核转储或崩溃转储,是当云服务器系统运行出现异常时,对操作系统内存数据的实时完整备份。 操作系统dump功能主要利用操作系统内核对硬件异常的处理能力。操作系统内核可以监测到硬件异常,并根据异常的类型来决定处理方式。当系统遇到无法处理的异常或错误时,系统的部分或全部运行状态信息将会转储到磁盘上,这些状态信息包括:CPU的寄存器、物理内存、进程状态、文件系统状态、硬件设备状态等。 操作系统dump可以由以下几种方式触发: 系统崩溃:当操作系统遇到无法处理的异常或错误时,例如非法的内存访问、内核panic等,系统会自动触发dump。 手动触发:系统管理员也可以通过一些命令或者操作手动触发系统dump,例如在Linux系统中可以通过向/proc/sysrq-trigger写入c字符来触发系统dump。 计划触发:某些情况下,系统管理员为了获取系统的某一时刻的运行状态信息,或者模拟系统崩溃的情况,也可以设置在某一特定的时间触发系统dump。 在多数情况下,为了准确获得系统dump,需要对系统进行相关的配置,例如在Linux系统中,需要配置kdump服务等。本文主要介绍手动触发dump的操作指导。