Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
serverguide-precise-ru.pdf
Скачиваний:
77
Добавлен:
03.05.2015
Размер:
1.86 Mб
Скачать

Установка

5. Отчёт о падении ядра

5.1. Введение

Отчёт о падении ядра (Kernel Crash Dump) является частью содержимого оперативной памяти (RAM), которая копируется на диск всякий раз, когда выполнение ядра прерывается. Следующие события могут стать причиной остановки ядра:

Критическая ошибка ядра (Kernel Panic)

Незамаскированное прерывание (NMI)

Фатальная ошибка проверки машины (MCE)

Ошибка аппаратного обеспечения

Ручное вмешательство

Некоторые из этих событий (Kernel Panic, NMI) ядро обрабатывает автоматически и запускает механизм сохранения отчета через kexec. В других случаях требуется ручное вмешательство для захвата памяти. Всякий раз, как что-то из перечисленного происходит, важно найти основную причину с целью предотвращения такого события снова. Причина может быть определена с помощью инспектирования содержимого памяти.

5.2. Механизм отчёта о падении ядра

Когда происходит критическая ошибка ядра, ядро полагается на механизм kexec для быстрой перезагрузки новой копии ядра в предварительно зарезервированную секцию памяти, которая выделяется при загрузке системы. Это позволяет существующей памяти остаться нетронутой с целью безопасного копирования её содержимого в файл.

5.3. Установка

Утилита сохранения отчёта о падении ядра устанавливается следующей командой:

sudo apt-get install linux-crashdump

После этого потребуется перезагрузка.

5.4. Конфигурация

Никакой дальнейшей настройки не требуется, чтобы разрешить механизм отчёта о падении ядра.

20

Установка

5.5. Проверка

Для подтверждения, что механизм отчёта о падении ядра доступен, надо проверить несколько вещей. Во-первых, убедитесь, что указан загрузочный параметр crashkernel (заметьте, что строка внизу разделена на две, чтобы уместить её в формат документа):

cat /proc/cmdline

BOOT_IMAGE=/vmlinuz-3.2.0-17-server root=/dev/mapper/PreciseS-root ro crashkernel=384M-2G:64M,2G-:128M

Параметр crashkernel имеет следующий синтаксис:

crashkernel=<range1>:<size1>[,<range2>:<size2>,...][@offset] range=start-[end] 'start' is inclusive and 'end' is exclusive.

Таким образом с параметром crashkernel, найденным в файле /proc/cmdline мы имеем:

crashkernel=384M-2G:64M,2G-:128M

Значение выше означает:

если оперативная память меньше 384МБ, то ничего не резервировать (это вариант «спасения»)

если оперативная память между 384МБ и 2ГБ (привилегированная), то зарезервировать 64МБ

если оперативная память больше 2ГБ, то зарезервировать 128МБ

Во-вторых, убедитесь, что ядро зарезервировало требуемую память для kdump ядра, выполнив:

dmesg | grep -i crash

...

 

[

0.000000] Reserving 64MB of memory at 800MB for crashkernel (System RAM: 1023MB)

5.6. Проверка механизма отчёта о падении ядра

Проверка механизма отчёта о падении ядра вызовет перезагрузку системы. В определенных ситуациях это может привести к потере

21

Установка

данных, если система будет сильно загружена. Если вы хотите проверить этот механизм, убедитесь, что система простаивает или загружена очень слабо.

Убедитесь, что механизм SysRQ включен, посмотрев значение параметра

ядра/proc/sys/kernel/sysrq:

cat /proc/sys/kernel/sysrq

Если возвращается значение 0, свойство отключено. Включите его следующей командой:

sudo sysctl -w kernel.sysrq=1

Как только закончите с этим, вам придётся стать суперпользователем (root), поскольку будет недостаточно использовать только sudo. От имени пользователя root вам нужно выполнить команду echo c > /proc/sysrqtrigger. Если вы используете сетевое соединение, вы потеряете связь с системой. Именно поэтому лучше проводить тест с системной консоли. Это позволит сделать процесс отчёта о падении ядра видимым.

Типичный вывод теста будет выглядеть следующим образом:

sudo -s

 

[sudo] password for ubuntu:

 

# echo c > /proc/sysrq-trigger

 

[

31.659002] SysRq : Trigger a crash

 

[

31.659749] BUG: unable to handle kernel NULL pointer dereference at

(null)

[

31.662668] IP: [<ffffffff8139f166>] sysrq_handle_crash+0x16/0x20

 

[

31.662668] PGD 3bfb9067 PUD 368a7067 PMD 0

 

[

31.662668] Oops: 0002 [#1] SMP

 

[

31.662668] CPU 1

 

....

 

 

Дальнейший вывод отрезан, но вы можете посмотреть перезагрузку системы и где-нибудь в журнале вы сможете найти следующую строчку:

Begin: Saving vmcore from kernel crash ...

После завершения система перезагрузится в нормальный рабочий режим. После чего вы сможете найти файл отчёта о падении ядра в каталоге /var/

crash:

ls /var/crash linux-image-3.0.0-12-server.0.crash

22

Установка

5.7. Ресурсы

Отчёт о падении ядра — обширная тема, требующая хорошего знания ядра Linux. Вы сможете найти больше информации по следующим ссылкам:

Документация по kdump13.

Утилита crash14

Анализ падений ядра Linux15 (Основано на дистрибутиве Fedora, однако предоставляет хороший критический анализ исследований отчетов падения ядра)

13http://www.kernel.org/doc/Documentation/kdump/kdump.txt

14http://people.redhat.com/~anderson/

15http://www.dedoimedo.com/computers/crash-analyze.html

23

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]