Dlaczego Linux Kdump nie pisze do / var / crash?

10

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.

  1. 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)
    
  2. Plik /etc/kdump.confjest plikiem waniliowym zawierającym ustawienia domyślne. Większość linii jest komentowana, istnieją tylko dwie aktywne linie dla pathi core_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
    
  3. Zapewniam, że kdumpusługa jest uruchomiona i kdumpnie 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 ~]# 
    
  4. 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

  5. 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łuje fsckzamiast 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
    
  6. Następnie system uruchomi się ponownie (co jest ustawieniem domyślnym).

  7. 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 ~]#
    
  8. Wiem, że zrzuty awaryjne mogą działać ogólnie. Jeśli powiem, kdumpaby 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
    
  9. Jeżeli ustawić default shellw /etc/kdump.confi 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 #
    
  10. Ale teraz utknąłem.

Stefan Lasiewski
źródło
Jaka jest marka / model serwera?
ewwhite
To jest Supermicro z płytą główną X9DRW4 i najnowszymi bios.
Stefan Lasiewski
Porażka. Mam podobną awarię na HP ProLiantach z najnowszym jądrem RHEL6. Zastanawiam się, czy to głębszy problem.
ewwhite
Dla mnie wygląda to trochę jak błąd. Ale nie pamiętam, jak powinien wyglądać wynik.
Stefan Lasiewski
1
Cześć. Czy rozwiązałeś ten problem? Mam bardzo podobny problem.
Chul-Woong Yang

Odpowiedzi:

5

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.

nacięcie
źródło
2

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.

Brak nazwy użytkownika
źródło
Sprawdzę initrd i zobaczę, co znajdę. pathOpcja w # 2 jest domyślna ścieżka ( /var/crash).
Stefan Lasiewski
Nie, nie mam organu nadzorującego uruchamiającego ponownie komputer. Okazuje się, że kontroler LSI + dyski SSD Samsung okresowo się zamrażają z powodów, których nie do końca rozumiemy.
Stefan Lasiewski
Czy otrzymałeś jakieś informacje zwrotne, ponieważ jest to dość szalone, być może problem z poborem mocy spowodował zbyt niskie napięcie?
Brak