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

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

790
author Bùi Tấn Việt - 2021-10-14 14:15:04 (GMT+7)

Bạn không sử dụng Ubuntu 20.04?
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 Ubuntu 20.04

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

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

bash (root)
apt install linux-crashdump

Giao diện cấu hình gói sẽ hiện lên, bạn cần chọn Yes hai lần để hệ thống cho phép kexcec-tools handle reboot và đọc file cấu hình grub

Nếu lỡ bỏ qua hai cấu hình trên, bạn có thể dùng hai lệnh sau để thực hiện cấu hình lại: dpkg-reconfigure kexec-toolsdpkg-reconfigure kdump-tools

Reboot lại máy chủ

bash (root)
reboot

Bước 2: Kiểu tra cấu hình

Sử dụng các lệnh kdump-config show để biết rằng kdump đang hoạt động:

bash (root)
kdump-config show
DUMP_MODE:        kdump
USE_KDUMP:        1
KDUMP_SYSCTL:     kernel.panic_on_oops=1
KDUMP_COREDIR:    /var/crash
crashkernel addr: 0xb3000000
   /var/lib/kdump/vmlinuz: symbolic link to /boot/vmlinuz-5.4.0-31-generic
kdump initrd:
   /var/lib/kdump/initrd.img: symbolic link to /var/lib/kdump/initrd.img-5.4.0-31-generic
current state:    ready to kdump

kexec command:
  /sbin/kexec -p --command-line="BOOT_IMAGE=/boot/vmlinuz-5.4.0-31-generic root=UUID=d85ae6ae-019c-458e-a8d0-520df727e0d5 ro console=tty1 console=ttyS0 reset_devices systemd.unit=kdump-tools-dump.service nr_cpus=1 irqpoll nousb ata_piix.prefer_ms_hyperv=0" --initrd=/var/lib/kdump/initrd.img /var/lib/kdump/vmlinuz

Kiểm tra file cat /proc/cmdline. Nếu có dòng cấu hình crashkernel là bạn đã thao tác đúng.

bash (root)
cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-5.4.0-31-generic root=UUID=d85ae6ae-019c-458e-a8d0-520df727e0d5 ro console=tty1 console=ttyS0 crashkernel=512M-:192M

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

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.

Bước này sẽ thử làm crash hệ thống. Để 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 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 CentOS 7
Hướng dẫn sử dụng Kdump để tìm nguyên nhân lỗi Kernel Panic trên CentOS 7

Cloud VPS tại 123HOST

Hiệu năng, ổn định và bảo mật

Cloud VPS giá rẻ

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

Founder & CEO at 123HOST

Bình luận

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

Đang tải bình luận