To się powtórzyło! Mam 4 serwery, które ulegają okresowym awariom, aw dziennikach systemowych lub konsoli szeregowej nie są drukowane żadne informacje.
Ponadto usługa kdump systemu Linux nie zapisuje zrzutów rdzenia w domyślnej lokalizacji /var/crash
.
- Czy możesz mi pomóc dowiedzieć się, dlaczego?
- Czy to ważne, czy moim głównym systemem plików jest wolumin LVM?
Oto, co próbowałem.
Mój system to Scientific Linux 6.5 z najnowszym jądrem.
[root@host1 ~]# uname -r 2.6.32-431.11.2.el6.x86_64 [root@host1 ~]# cat /etc/issue Scientific Linux release 6.5 (Carbon)
Plik
/etc/kdump.conf
jest plikiem waniliowym zawierającym ustawienia domyślne. Większość linii jest komentowana, istnieją tylko dwie aktywne linie dlapath
icore_collector
.#net my.server.com:/export/tmp #net [email protected] path /var/crash core_collector makedumpfile -c --message-level 1 -d 31 #core_collector scp
Zapewniam, że
kdump
usługa jest uruchomiona ikdump
nie trzeba jej odbudowywaćinitrd
.[root@host1 ~]# chkconfig --list kdump kdump 0:off 1:off 2:off 3:on 4:on 5:on 6:off [root@host1 ~]# /etc/init.d/kdump restart Stopping kdump: [ OK ] Starting kdump: [ OK ] [root@host1 ~]#
Następnie wymuszam awarię jądra za pomocą tych poleceń zapożyczonych z Przewodnika wdrażania RHEL6: Rozdział 29. Usługa odzyskiwania po awarii kdump :
Następnie wpisz następujące polecenia w wierszu poleceń:
echo 1 > /proc/sys/kernel/sysrq echo c > /proc/sysrq-trigger
To zmusi jądro Linuksa do awarii
System ulega awarii. Mogę zobaczyć postęp na mojej konsoli szeregowej. Widzę wiadomość
Saving to the local filesystem UUID=e7abcdeb-1987-4c69-a867-fabdceffghi2
, ale zaraz potem widzę dziwną wiadomośćUsage: fsck.ext4
, która wygląda jak coś, co przypadkowo wywołujefsck
zamiast tego, co powinno robić. Nie widzę wzmianki o błędzie braku pamięci ani nic takiego.host1.example.org login: SysRq : Trigger a crash BUG: unable to handle kernel NULL pointer dereference at (null) ... ... skipping 50 lines of output ... Creating block device ram8 Creating block device ram9 Creating Remain Block Devices Making device-mapper control node Scanning logical volumes Reading all physical volumes. This may take a while... No volume groups found No volume groups found Activating logical volumes No volume groups found No volume groups found Free memory/Total memory (free %): 58272 / 116616 ( 49.9691 ) Saving to the local filesystem UUID=e7abcdeb-1987-4c69-a867-fabdceffghi2 Usage: fsck.ext4 [-panyrcdfvtDFV] [-b superblock] [-B blocksize] [-I inode_buffer_blocks] [-P process_inode_size] [-l|-L bad_blocks_file] [-C fd] [-j external_journal] [-E extended-options] device Emergency help: -p Autom
Następnie system uruchomi się ponownie (co jest ustawieniem domyślnym).
Kiedy system wraca do trybu online, nic w nim nie ma
/var/crash
. Zakładam, że zrzut awaryjny nie został napisany.[root@host1 ~]# ls -lA /var/crash/ total 0 [root@host1 ~]#
Wiem, że zrzuty awaryjne mogą działać ogólnie. Jeśli powiem,
kdump
aby skopiować zrzut pamięci do innego systemu z następującą konfiguracją, kdump pomyślnie zapisuje zrzut pamięci na innym hoście:path vmcore ssh [email protected] sshkey /root/.ssh/kdump_id_rsa
Jeżeli ustawić
default shell
w/etc/kdump.conf
i przebudować initrd, a następnie rozbić system ponownie uzyskać nieco bardziej informacyjny o błędziemount: can't find /mnt in /etc/fstab
Free memory/Total memory (free %): 58272 / 116616 ( 49.9691 ) Saving to the local filesystem UUID=e720481b-1987-4c69-a867-f2b4cba3b312 Usage: fsck.ext4 [-panyrcdfvtDFV] [-b superblock] [-B blocksize] [-I inode_buffer_blocks] [-P process_inode_size] [-l|-L bad_blocks_file] [-C fd] [-j external_journal] [-E extended-options] device Emergency help: -p Automatic repair (no questions) -n Make no changes to the filesystem -y Assume "yes" to all questions -c Check for bad blocks and add them to the badblock list -f Force checking even if filesystem is marked clean -v Be verbose -b superblock Use alternative superblock -B blocksize Force blocksize when looking for superblock -j external_journal Set location of the external journal -l bad_blocks_file Add to badblocks list -L bad_blocks_file Set badblocks list mount: can't find /mnt in /etc/fstab dropping to initramfs shell exiting this shell will reboot your system /sys/block #
Ale teraz utknąłem.
źródło
Odpowiedzi:
Trochę za późno na grę, ale jeśli musisz skonfigurować kdump na przyszłość:
Myślę, że dyrektywa ścieżki wyznacza ścieżkę z wyznaczonej partycji lub systemu plików. Domyślnie jest to root fs. Jeśli masz osobną partycję w fstab dla / var, zaciemni ona katalog awarii, gdy system jest uruchamiany normalnie. tzn. gdybyś uruchomił się normalnie i odmontował / var, zobaczysz awarię / [UniqCoreDir]. Możesz to zmienić, dodając dyrektywę „ext4 / PATH / TO / DEVICE” w kdump.conf. Możesz także użyć innej ścieżki, która nie zostanie zamontowana.
Tylko zgadnij, ale może mieć wiele vmcores ukrytych pod / var.
źródło
Rozłóż kdump initrd w / boot / check, aby zobaczyć ostatnią ścieżkę, na którą próbuje on zrzucić.
Myślę, że opcja „ścieżka” jest trochę dziwna, prawdopodobnie pozostawiłbym ją domyślną lub wyraźnie ustawiłem na / var / crash
Czy masz jakiś organ nadzorujący uruchamiający ponownie komputer? może to również uniemożliwić utworzenie rdzenia poprzez ponowne uruchomienie komputera przed jego uruchomieniem.
źródło
path
Opcja w # 2 jest domyślna ścieżka (/var/crash
).