Hướng dẫn sử dụng Kdump để tìm nguyên nhân lỗi Kernel Panic trên CentOS 7
BÀI VIẾT

Hướng dẫn sử dụng Kdump để tìm nguyên nhân lỗi Kernel Panic trên CentOS 7

2.2K
author Bùi Tấn Việt - 2021-10-14 13:38:07 (GMT+7)

Bạn không sử dụng CentOS 7?
Xem bài viết cho các distro khác

Giới thiệu

Khi máy chủ bị lỗi lỗi kernel panic, hệ điều hành sẽ bị crash đột ngột. Lúc này việc kiểm tra trạng thái lúc máy chủ gặp sự cố rất khó khăn bởi máy chủ đã bị crash và không thao tác được, hoặc phải reboot.

Kdump là gì?

Kdump là tính năng của kernel Linux được sử dụng để chụp lại trạng thái của hệ thống khi kernel bị crash. Để bật kdump, chúng ta cần cấp cho nó một lượng RAM vật lý cố định, nó sẽ dùng để chứa các thông tin khi kernel bị panic hoặc crash.

Khi kernel bị crash hoặc panic, nó sẽ gọi kexec(kdump kernel), các thông tin về các vùng nhớ RAM, SWAP đang sử dụng sẽ được copy vào file vmcore , được lưu vào ổ đĩa của máy chủ hoặc lưu qua mạng tùy vào cấu hình kdump mà chúng ta chỉ định.

Bằng cách phân tích các file dump này, chúng ta có thể tìm ra nguyên nhân dẫn đến kernel bị panic hoặc crash. Hoặc chúng ta cũng có thể gởi file dump này cho các chuyên gia để họ phân tích lỗi.

Bài viết này sẽ hướng dẫn các bạn cài đặt và cấu hình kdump trên CentOS 7

Yêu cầu

Bạn cần phải đáp ứng các yêu cầu sau trước khi thực hiện:

  • Có quyền root trên máy chủ

  • Nên thực hiện ở máy chủ testing trước khi áp dụng vào production

Bước 1: Cài đặt kexec-tools

Sử dụng lệnh yum để cài đặt với quyền root:

bash (root)
yum install kexec-tools

Bước 2: khai báo RAM sử dụng cho Kdump kernel

Sửa file /etc/default/grub , tại dòng crashkernel=<RAM_CAN_KHAI_BAO> . Tại đây khai báo là 128M

/etc/default/grub
. . .
GRUB_CMDLINE_LINUX="crashkernel=128M rhgb quiet"
. . .

Chạy lệnh sau để hệ thống tải lại file grub2

bash (root)
grub2-mkconfig -o /boot/grub2/grub.cfg
Kết quả
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-1160.42.2.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.42.2.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-862.3.2.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-862.3.2.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-937ea59989d54e62a18e4d6a05692d66
Found initrd image: /boot/initramfs-0-rescue-937ea59989d54e62a18e4d6a05692d66.img

Reboot lại máy chủ

bash (root)
reboot

Bước 3: Khởi động dịch vụ kdump

Sử dụng các lệnh sau

Khởi động kdump

bash (root)
systemctl start kdump.service 

Cấu hình để dịch vụ kdump khởi động kèm với máy chủ

bash (root)
systemctl enable kdump.service
Created symlink from /etc/systemd/system/multi-user.target.wants/kdump.service to /usr/lib/systemd/system/kdump.service.

Bước 4: Kiểm tra hoạt động của kdump

Bước này sẽ thử làm crash hệ thống, tuy nhiên trước khi thực hiện, cần kiểm tra kdump có hoạt động hay chưa:

bash (root)
systemctl is-active kdump.service
active

Hoặc lệnh

bash (root)
service kdump status
● kdump.service - Crash recovery kernel arming
   Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: enabled)
   Active: active (exited) since Thu 2021-10-14 13:56:40 +07; 2min 26s ago
 Main PID: 1114 (code=exited, status=0/SUCCESS)

Oct 14 13:56:34 vps.testpanel.com.novalocal dracut[1377]: *** Constructing GenuineIntel.bin ****
Oct 14 13:56:34 vps.testpanel.com.novalocal dracut[1377]: *** Store current command line parameters ***
Oct 14 13:56:34 vps.testpanel.com.novalocal dracut[1377]: *** Creating image file ***
Oct 14 13:56:34 vps.testpanel.com.novalocal dracut[1377]: *** Creating microcode section ***
Oct 14 13:56:34 vps.testpanel.com.novalocal dracut[1377]: *** Created microcode section ***
Oct 14 13:56:39 vps.testpanel.com.novalocal dracut[1377]: *** Creating image file done ***
Oct 14 13:56:39 vps.testpanel.com.novalocal dracut[1377]: *** Creating initramfs image file '/boot/initramfs-3.10.0-1160.42.2.el7.x86_64kdump.img' done ***
Oct 14 13:56:40 vps.testpanel.com.novalocal kdumpctl[1114]: kexec: loaded kdump kernel
Oct 14 13:56:40 vps.testpanel.com.novalocal kdumpctl[1114]: Starting kdump: [OK]
Oct 14 13:56:40 vps.testpanel.com.novalocal systemd[1]: Started Crash recovery kernel arming.

Nguy hiểm: Thao tác sau sẽ làm crash hệ thống, máy chủ của bạn sẽ bị crash để test kdump và reboot. Vì vậy bạn không nên thực hiện thao tác sau ở các máy chủ production.

Để làm hệ thống crash, thực hiện lệnh sau:

bash (root)
echo 1 > /proc/sys/kernel/sysrq ; echo c > /proc/sysrq-trigger

Sau khi hệ thống crash và khởi động lại, chúng ta sẽ thấy file dump tại /var/crash/

bash (root)
[root@vps ~]# ls -al /var/crash/
total 0
drwxr-xr-x.  3 root root  43 Oct 14 13:59 .
drwxr-xr-x. 20 root root 278 Sep 30 12:20 ..
drwxr-xr-x   2 root root  44 Oct 14 13:59 127.0.0.1-2021-10-14-13:59:48

Chúc các bạn thành công.


Bạn có làm được theo hướng dẫn này không?

Bài liên quan

Hướng dẫn quản lý phân vùng đĩa cứng trên Linux
Hướng dẫn quản lý phân vùng đĩa cứng trên Linux
Hướng dẫn cài đặt Jenkins trên Ubuntu 20.04
Hướng dẫn cài đặt Jenkins trên Ubuntu 20.04
Hướng dẫn sử dụng Kdump để tìm nguyên nhân lỗi Kernel Panic trên Ubuntu 20.04
Hướng dẫn sử dụng Kdump để tìm nguyên nhân lỗi Kernel Panic trên Ubuntu 20.04

Object Storage

Chuẩn S3, không giới hạn băng thông

Object Storage

Thuê Server Riêng

Chi phí thấp, cấu hình cao

Thuê Server Riêng
Thông tin tác giả
Bùi Tấn Việt

Co-Founder & CEO at 123HOST

2 Bình luận

Tính năng đang được phát triển

Đang tải bình luận
Liên hệ chúng tôi