Kdump adalah utilitas yang digunakan untuk menangkap dump inti sistem jika terjadi kerusakan sistem.
Core dump yang ditangkap ini nantinya dapat digunakan untuk menganalisis penyebab pasti kegagalan sistem dan menerapkan perbaikan yang diperlukan untuk mencegah error di masa mendatang.
Kdump mencadangkan sebagian kecil memori untuk kernel sekunder yang disebut crashkernel.
Kernel sekunder atau kerusakan ini digunakan untuk menangkap gambar dump inti setiap kali sistem mogok.
1. Instal Alat Kdump
Pertama, instal kdump, yang merupakan bagian dari paket kexec-tools.
# yum install kexec-tools
2. Setel crashkernel di grub.conf
Setelah paket terinstal, edit file /boot/grub/grub.conf dan atur jumlah memori yang akan dicadangkan untuk kernel crash kdump.
Anda dapat mengedit /boot/grub/grub.conf untuk nilai crashkernel dan menyetelnya ke nilai otomatis atau yang ditentukan pengguna. Disarankan untuk menggunakan minimum 128M untuk mesin dengan memori 2G atau lebih tinggi.
Pada contoh berikut, cari baris yang dimulai dengan “kernel”, yang disetel ke “crashkernel=auto”.
# vi /boot/grub/grub.conf default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Red Hat Enterprise Linux (2.6.32-419.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-419.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /initramfs-2.6.32-419.el6.x86_64.img
3. Konfigurasikan Lokasi Pembuangan
Setelah kernel crash, core dump dapat ditangkap ke sistem file lokal atau sistem file jarak jauh (NFS) berdasarkan pengaturan yang ditentukan di /etc/kdump.conf (dalam sistem operasi SLES jalurnya adalah /etc/sysconfig/kdump).
File ini dibuat secara otomatis ketika paket kexec-tools diinstal.
Semua entri dalam file ini akan dikomentari secara default. Anda dapat membatalkan komentar yang diperlukan untuk opsi terbaik Anda.
# vi /etc/kdump.conf #raw /dev/sda5 #ext4 /dev/sda3 #ext4 LABEL=/boot #ext4 UUID=03138356-5e61-4ab3-b58e-27507ac41937 #net my.server.com:/export/tmp #net [email protected] path /var/crash core_collector makedumpfile -c --message-level 1 -d 31 #core_collector scp #core_collector cp --sparse=always #extra_bins /bin/cp #link_delay 60 #kdump_post /var/crash/scripts/kdump-post.sh #extra_bins /usr/bin/lftp #disk_timeout 30 #extra_modules gfs2 #options modulename options #default shell #debug_mem_level 0 #force_rebuild 1 #sshkey /root/.ssh/kdump_id_rsa
Dalam file di atas:
- Untuk menulis dump ke perangkat mentah, Anda dapat menghapus komentar "raw /dev/sda5" dan mengubahnya untuk menunjuk ke lokasi dump yang benar.
- Jika Anda ingin mengubah jalur lokasi dump, batalkan komentar dan ubah “path /var/crash” untuk menunjuk ke lokasi baru.
- Untuk NFS, Anda dapat membatalkan komentar “#net my.server.com:/export/tmp” dan arahkan ke lokasi server NFS saat ini.
4. Konfigurasikan Kolektor Inti
Langkah selanjutnya adalah mengkonfigurasi kolektor inti di file konfigurasi Kdump. Penting untuk mengompresi data yang diambil dan memfilter semua informasi yang tidak perlu dari file inti yang diambil.
Untuk mengaktifkan kolektor inti, batalkan komentar pada baris berikut yang dimulai dengan core_collector.
core_collector makedumpfile -c --message-level 1 -d 31
- makedumpfile yang ditentukan dalam core_collector sebenarnya membuat DUMPFILE kecil dengan mengompresi data.
- makedumpfile menyediakan dua format DUMPFILE (format ELF dan format terkompresi kdump).
- Secara default, makedumpfile membuat DUMPFILE dalam format terkompresi kdump.
- Format terkompresi kdump hanya dapat dibaca dengan utilitas mogok, dan dapat lebih kecil dari format ELF karena dukungan kompresi.
- Format ELF dapat dibaca dengan GDB dan utilitas mogok.
- -c untuk mengompresi data dump per halaman
- -d adalah jumlah halaman yang tidak perlu dan dapat diabaikan.
Jika Anda menghapus komentar pada baris #default shell maka shell akan dipanggil jika kdump gagal mengumpulkan inti. Kemudian administrator dapat secara manual mengambil core dump menggunakan perintah makedumpfile.
5. Mulai ulang Layanan kdump
Setelah kdump dikonfigurasi, restart layanan kdump,
# service kdump restart Stopping kdump: [ OK ] Starting kdump: [ OK ] # service kdump status Kdump is operational
Jika Anda memiliki masalah dalam memulai layanan, maka modul kdump atau parameter crashkernel belum diatur dengan benar. Jadi, verifikasi /proc/cmdline dan pastikan itu mencerminkan untuk menyertakan nilai crashkernel.
6. Memicu Pembuangan Inti Secara Manual
Anda dapat memicu dump inti secara manual menggunakan perintah berikut:
echo 1 > /proc/sys/kernel/sysrq echo c > /proc/sysrq-trigger
Server akan reboot sendiri dan crash dump akan dibuat.
7. Lihat File Inti
Setelah server di-boot ulang, Anda akan melihat file inti dibuat di bawah /var/crash berdasarkan lokasi yang ditentukan di /var/crash.
Anda akan melihat file vmcore dan vmcore-dmseg.txt:
# ls -lR /var/crash drwxr-xr-x. 2 root root 4096 Mar 26 11:06 127.0.0.1-2014-03-26-11:06:43 /var/crash/127.0.0.1-2014-03-26-11:06:43: -rw-------. 1 root root 33595159 Mar 26 11:06 vmcore -rw-r--r--. 1 root root 79498 Mar 26 11:06 vmcore-dmesg.txt
8. Analisis Kdump menggunakan crash
Utilitas kerusakan digunakan untuk menganalisis file inti yang diambil oleh kdump.
Ini juga dapat digunakan untuk menganalisis file inti yang dibuat oleh utilitas dump lain seperti netdump, diskdump, xendump.
Anda perlu memastikan paket “kernel-debuginfo” ada dan berada pada level yang sama dengan kernel.
Luncurkan alat crash seperti yang ditunjukkan di bawah ini. Setelah Anda perintah ini, Anda akan mendapatkan prompt uang tunai, di mana Anda dapat menjalankan perintah crash:
# crash /var/crash/127.0.0.1-2014-03-26-12\:24\:39/vmcore /usr/lib/debug/lib/modules/`uname –r`/vmlinux crash>
9. Lihat Proses saat Sistem Rusak
Jalankan perintah ps pada prompt crash, yang akan menampilkan semua proses yang berjalan ketika sistem crash.
crash> ps PID PPID CPU TASK ST %MEM VSZ RSS COMM 0 0 0 ffffffff81a8d020 RU 0.0 0 0 [swapper] 1 0 0 ffff88013e7db500 IN 0.0 19356 1544 init 2 0 0 ffff88013e7daaa0 IN 0.0 0 0 [kthreadd] 3 2 0 ffff88013e7da040 IN 0.0 0 0 [migration/0] 4 2 0 ffff88013e7e9540 IN 0.0 0 0 [ksoftirqd/0] 7 2 0 ffff88013dc19500 IN 0.0 0 0 [events/0]
10. Lihat ruang Swap saat Sistem Rusak
Jalankan perintah swap pada prompt crash, yang akan menampilkan penggunaan ruang swap saat sistem mogok.
crash> swap FILENAME TYPE SIZE USED PCT PRIORITY /dm-1 PARTITION 2064376k 0k 0% -1
11. Lihat IPCS saat Sistem Rusak
Jalankan perintah ipcs pada prompt kerusakan, yang akan menampilkan penggunaan memori bersama saat sistem mogok.
crash> ipcs SHMID_KERNEL KEY SHMID UID PERMS BYTES NATTCH STATUS (none allocated) SEM_ARRAY KEY SEMID UID PERMS NSEMS ffff8801394c0990 00000000 0 0 600 1 ffff880138f09bd0 00000000 65537 0 600 1 MSG_QUEUE KEY MSQID UID PERMS USED-BYTES MESSAGES (none allocated)
12. Lihat IRQ saat Sistem Rusak
Jalankan perintah irq pada prompt kerusakan, yang akan menampilkan statistik IRQ saat sistem mogok.
crash> irq -s CPU0 0: 149 IO-APIC-edge timer 1: 453 IO-APIC-edge i8042 7: 0 IO-APIC-edge parport0 8: 0 IO-APIC-edge rtc0 9: 0 IO-APIC-fasteoi acpi 12: 111 IO-APIC-edge i8042 14: 108 IO-APIC-edge ata_piix . .
vtop – Perintah ini menerjemahkan alamat virtual pengguna atau kernel ke alamat fisiknya.
foreach – Perintah ini menampilkan data untuk beberapa tugas dalam sistem
waitq – Perintah ini menampilkan semua tugas yang diantrekan pada antrian tunggu.
13. Lihat Memori Virtual saat Sistem Rusak
Jalankan perintah vm pada prompt kerusakan, yang akan menampilkan penggunaan memori virtual saat sistem mogok.
crash> vm PID: 5210 TASK: ffff8801396f6aa0 CPU: 0 COMMAND: "bash" MM PGD RSS TOTAL_VM ffff88013975d880 ffff88013a0c5000 1808k 108340k VMA START END FLAGS FILE ffff88013a0c4ed0 400000 4d4000 8001875 /bin/bash ffff88013cd63210 3804800000 3804820000 8000875 /lib64/ld-2.12.so ffff880138cf8ed0 3804c00000 3804c02000 8000075 /lib64/libdl-2.12.so
14. Lihat File yang Terbuka saat Sistem Rusak
Jalankan perintah file pada prompt kerusakan, yang akan menampilkan file yang terbuka saat sistem macet.
crash> files PID: 5210 TASK: ffff8801396f6aa0 CPU: 0 COMMAND: "bash" ROOT: / CWD: /root FD FILE DENTRY INODE TYPE PATH 0 ffff88013cf76d40 ffff88013a836480 ffff880139b70d48 CHR /tty1 1 ffff88013c4a5d80 ffff88013c90a440 ffff880135992308 REG /proc/sysrq-trigger 255 ffff88013cf76d40 ffff88013a836480 ffff880139b70d48 CHR /tty1 ..
15. Lihat Informasi Sistem saat Sistem Rusak
Jalankan perintah sys pada prompt crash, yang akan menampilkan informasi sistem ketika sistem crash.
crash> sys KERNEL: /usr/lib/debug/lib/modules/2.6.32-431.5.1.el6.x86_64/vmlinux DUMPFILE: /var/crash/127.0.0.1-2014-03-26-12:24:39/vmcore [PARTIAL DUMP] CPUS: 1 DATE: Wed Mar 26 12:24:36 2014 UPTIME: 00:01:32 LOAD AVERAGE: 0.17, 0.09, 0.03 TASKS: 159 NODENAME: elserver1.abc.com RELEASE: 2.6.32-431.5.1.el6.x86_64 VERSION: #1 SMP Fri Jan 10 14:46:43 EST 2014 MACHINE: x86_64 (2132 Mhz) MEMORY: 4 GB PANIC: "Oops: 0002 [#1] SMP " (check log for details)