2017-09-26 50 views
9

Próbuję użyć trace-cmd, aby zebrać więcej informacji o awarii kernela, którą widzę. Niestety, jądro zawiesza się z komunikatem "panic-panic - not syncing" (tzn. Bufory gniazd i plików nie są przepłukiwane, więc to, co znajdowało się w buforach w momencie awarii, jest nieuchronnie tracone).użyj trace-cmd/ftrace, aby uzyskać function_graph tuż przed wystąpieniem paniki()

Czy istnieje sposób:

  1. siła trace-cmd proces opróżnić swoje bufory do systemu plików lub gniazd? LUB
  2. zrobić trace-cmd/ftrace, aby uniknąć buforowania (np. Wywoływać printk() za scenami i używać netconsole)?

Ponieważ używam że trace-cmd polecenia w środowisku wirtualnym wtedy mnie to nie obchodzi, że dysk może czasami uszkodzone, bo mogę po prostu przywrócić ostatnią dobrą migawki lub przesunięcie VM.

Odpowiedz

2

nie mogę zagwarantować, mój przepis pomaga, ale kto wie :)

Przy pierwszej próbie do unbuffer wszystkie wyjścia trace-cmd. Możesz znaleźć przepisy, aby to zrobić. https://unix.stackexchange.com/questions/25372/turn-off-buffering-in-pipe

Po drugie, jądro traktuje pisanie FS w panice jest bardzo niebezpieczne i to jest ok, jednak możesz spróbować zapisać ostatnie ukąszenia informacji przed śmiercią na zewnątrz rozbitej maszyny. Spróbuj przekierować krytyczne informacje do portu szeregowego lub połączenia sieciowego i złap je po drugiej stronie. Podobnie jak

Innym sposobem jest próba uniknięcia paniki i niech jądro działa dłużej, ale z nieprzewidywalnym wynikiem. Możesz wyłączyć panikę w kilku przypadkach. Spójrz na ustawienia panic_on_* w katalogu . Więcej szczegółów można znaleźć w "Documentation for /proc/sys/kernel/"

+0

Nie rozwiązało to problemu, ponieważ uważam, że istnieje inny bufor między ftrace a trace-cmd. Unbuffer tylko odblokowuje STDOUT, prawda? –

+0

Tak, oczywiście. Takie podejście jest tylko próbą zmniejszenia buforowania. Innym sposobem jest próba uniknięcia paniki i niech jądro działa dłużej, ale z nieprzewidywalnym wynikiem. Możesz wyłączyć panikę w kilku przypadkach. Sprawdź ustawienia "panic_on_ *" w "Dokumentacja dla/proc/sys/kernel/*" (https://www.kernel.org/doc/Documentation/sysctl/kernel.txt). – MrCryo