Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

kdump - это функция ядра Linux, которая создает аварийные дампы в случае сбоя ядра . При запуске kdump экспортирует образ памяти (также известный как vmcore ), который можно проанализировать в целях отладки и определения причины сбоя. Дамповый образ основной памяти , экспортированный как объект исполняемого и связываемого формата (ELF), может быть доступен либо напрямую через / proc / vmcore во время обработки сбоя ядра, либо он может быть автоматически сохранен в локально доступной файловой системе , на необработанное устройствоили удаленной системе, доступной по сети . [1] [2]

Внутреннее [ править ]

В схеме с «двойным ядром» kdump использует kexec для загрузки другого ядра и получения дампа памяти. [3] : 10

В случае сбоя ядра kdump сохраняет целостность системы, загружая другое ядро Linux, известное как ядро захвата дампа , и использует его для экспорта и сохранения дампа памяти. В результате система загружается в чистую и надежную среду вместо того, чтобы полагаться на уже вышедшее из строя ядро, которое может вызвать различные проблемы, например вызвать повреждение файловой системы при записи файла дампа памяти. Чтобы реализовать эту схему «двойного ядра», kdump использует kexec для («теплой») загрузки ядра для захвата дампа сразу после сбоя ядра, используя способность kexec загружаться «поверх».текущее работающее ядро, избегая запуска загрузчика и оборудованияинициализация выполняется системной прошивкой ( BIOS или UEFI ). Ядро для захвата дампа может быть либо отдельным образом ядра Linux, созданным специально для этой цели, либо основным образом ядра можно повторно использовать на архитектурах , поддерживающих перемещаемые ядра. [1] [3] [4] [5] : 5–6

Содержимое основной памяти ( RAM ) сохраняется при загрузке и запуске ядра для захвата дампа за счет предварительного резервирования небольшого объема оперативной памяти, в которую предварительно загружается ядро ​​для захвата дампа, поэтому никакая часть оперативной памяти, используемой основным ядром, не используется. перезаписывается при обработке сбоя ядра. Этот зарезервированный объем оперативной памяти используется исключительно ядром записи дампа и не используется во время нормальной работы системы. Для некоторых архитектур, включая x86 и ppc64 , требуется небольшая часть ОЗУ с фиксированной позицией для загрузки ядра независимо от того, где оно загружено; в этом случае kexec создает копию этой части ОЗУ, чтобы она также была доступна ядру захвата дампа. Размер и необязательная позиция зарезервированной части ОЗУ указываются черезпараметр загрузки ядра crashkernel , а утилита командной строки kexec используется после загрузки основного ядра для предварительной загрузки образа ядра для записи дампа и связанного с ним образа initrd в зарезервированную часть ОЗУ. [1] [3] [4]

В дополнение к функциям, которые являются частью ядра Linux, дополнительные утилиты пользовательского пространства поддерживают механизм kdump, включая упомянутую выше утилиту kexec . [1] [4] Помимо официальных утилит, которые предоставляются как патч к набору утилит пользовательского пространства kexec, некоторые дистрибутивы Linux предоставляют дополнительные утилиты, которые упрощают настройку работы kdump, включая настройку автоматического сохранения файлов дампа памяти. [6] [7] [8] Создан дамп памяти файлы могут быть проанализированы с помощью GNU Debugger ( GDB ), или с помощью Red Hat , выделенный «ыутилита сбоя . [9] [10]

История [ править ]

Функциональность kdump вместе с kexec была объединена с основной веткой ядра Linux в версии ядра 2.6.13, выпущенной 29 августа 2005 г. [11]

См. Также [ править ]

  • debugfs  - файловая система ядра Linux на основе RAM, специально разработанная для целей отладки
  • kdump (BSD)  - утилита BSD для просмотра файлов трассировки, сгенерированных утилитой ktrace
  • К сожалению, ядро ​​Linux  - потенциально нефатальное отклонение от правильного поведения ядра Linux
  • ProcDump  - утилита для создания дампов ядра приложений на основе триггеров производительности

Ссылки [ править ]

  1. ^ a b c d Джонатан Корбет (27 октября 2004 г.). «Аварийные дампы с kexec» . LWN.net . Проверено 9 августа 2014 года .
  2. ^ «13.2 О Kdump (Глава 13: Поддержка диагностических инструментов)» . Корпорация Oracle . 2012 . Проверено 9 августа 2014 года .
  3. ^ a b c Вивек Гоял; Эрик В. Бидерман; Харипрасад Неллитерта (14 июня 2006 г.). «Kdump: основанный на Kexec механизм аварийного сброса ядра» (PDF) . lse.sourceforge.net . Проверено 9 августа 2014 года .
  4. ^ a b c "Документация ядра Linux: Documentation / kdump / kdump.txt" . kernel.org . 12 августа 2013 . Проверено 9 августа 2014 года .
  5. Такаши Иваи (26 июля 2006 г.). «Отладка с помощью Kdump» (PDF) . SUSE . Проверено 9 августа 2014 года .
  6. ^ «29.2.2. Использование утилиты настройки дампа ядра (Руководство по развертыванию Red Hat Enterprise Linux 6)» . Красная шляпа . Проверено 9 августа 2014 года .
  7. ^ «kexec и kdump: базовая конфигурация kdump (руководство по системному анализу и настройке)» . SUSE . 25 апреля 2014 . Проверено 9 августа 2014 года .
  8. ^ «Как использовать kdump для отладки сбоев ядра» . Fedora . 9 апреля 2014 . Проверено 9 августа 2014 года .
  9. Дэвид Андерсон (27 августа 2010 г.). «Белая книга: утилита Red Hat Crash Utility» . Красная шляпа . Проверено 9 августа 2014 года .
  10. ^ «kexec и kdump: Анализ аварийного дампа (Руководство по системному анализу и настройке)» . SUSE . 25 апреля 2014 . Проверено 9 августа 2014 года .
  11. ^ "Ядро Linux 2.6.13" . kernelnewbies.org . 29 августа 2005 . Проверено 9 августа 2014 года .

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Kdump, основанный на Kexec механизм аварийного сброса ядра , IBM , 2005, авторы Вивек Гоял, Эрик В. Бидерман и Харипрасад Неллитерта.