кдамп (Linux)
kdump — это функция ядра Linux , которая создает аварийные дампы в случае сбоя ядра . При запуске kdump экспортирует образ памяти (также известный как vmcore ), который можно проанализировать в целях отладки и определения причины сбоя. К дампу основной памяти , экспортированному как объект исполняемого и связываемого формата (ELF), можно получить доступ либо напрямую через /proc /vmcore во время обработки сбоя ядра, или он может быть автоматически сохранен в локально доступной файловой системе , на необработанном устройстве или в удаленной системе, доступной по сети . [1] [2]
Внутренности
[ редактировать ]
В случае сбоя ядра kdump сохраняет согласованность системы , загружая другое ядро Linux , известное как ядро захвата дампа , и используя его для экспорта и сохранения дампа памяти. В результате система загружается в чистую и надежную среду вместо того, чтобы полагаться на уже поврежденное ядро, которое может вызвать различные проблемы, такие как повреждение файловой системы при записи файла дампа памяти. Чтобы реализовать эту схему «двойного ядра», kdump использует kexec для «теплой» загрузки ядра, захватывающего дамп, сразу после сбоя ядра, используя способность kexec загружаться «поверх» текущего работающего ядра, избегая при этом выполнения загрузчика и аппаратного обеспечения. инициализация, выполняемая прошивкой системы ( BIOS или UEFI ). Ядро для захвата дампа может представлять собой либо отдельный образ ядра Linux , созданный специально для этой цели, либо основной образ ядра может быть повторно использован в архитектурах , поддерживающих перемещаемые ядра. [1] [3] [4] [5] : 5–6
Содержимое основной памяти ( ОЗУ ) сохраняется во время загрузки и работы ядра захвата дампа за счет предварительного резервирования небольшого объема ОЗУ, в которое предварительно загружено ядро захвата дампа, поэтому никакая часть ОЗУ, используемая основным ядром, не используется. перезаписывается при обработке сбоя ядра. Этот зарезервированный объем оперативной памяти используется исключительно ядром захвата дампа и в противном случае не используется во время нормальной работы системы. Некоторые архитектуры, включая x86 и ppc64 , требуют небольшой фиксированной части оперативной памяти для загрузки ядра независимо от того, где оно загружено; в этом случае kexec создает копию этой части ОЗУ, чтобы она также была доступна ядру захвата дампа. Размер и необязательное положение зарезервированной части ОЗУ указываются через параметр загрузки ядра. крашкернел и kexec Утилита командной строки используется после загрузки основного ядра для предварительной загрузки образа ядра для захвата дампа и связанного с ним образа initrd в зарезервированную часть ОЗУ. [1] [3] [4]
В дополнение к функциональности, которая является частью ядра Linux, дополнительные утилиты пользовательского пространства поддерживают механизм kdump, в том числе утилита kexec, упомянутая выше. [1] [4] Помимо официальных утилит, которые предоставляются в виде патча к набору утилит пользовательского пространства kexec, некоторые дистрибутивы Linux предоставляют дополнительные утилиты, упрощающие настройку работы kdump, включая настройку автоматического сохранения файлов дампа памяти. [6] [7] [8] Созданные файлы дампа памяти можно проанализировать с помощью отладчика GNU ( gdb ) или с помощью Red Hat . специального раздела аварийная утилита. [9] [10]
История
[ редактировать ]Kdump заменил устаревший инструмент Linux Kernel Crash Dumps (LKCD), который также записывал содержимое памяти при сбое. [11] Kdump представляет собой более эффективную и масштабируемую утилиту, чем LKCD. [12]
Функциональность kdump вместе с kexec была объединена с основной веткой ядра Linux в версии ядра 2.6.13, выпущенной 29 августа 2005 г. [13]
См. также
[ редактировать ]- debugfs — файловая система ядра Linux на базе оперативной памяти, специально разработанная для целей отладки.
- kdump (BSD) — утилита BSD для просмотра файлов трассировки, созданных утилитой ktrace.
- Ядро Linux упс – потенциально нефатальное отклонение от правильного поведения ядра Linux
- ProcDump — утилита для создания дампов ядра приложений на основе триггеров производительности.
Ссылки
[ редактировать ]- ^ Jump up to: а б с д Джонатан Корбет (27 октября 2004 г.). «Аварийные дампы с помощью kexec» . LWN.net . Проверено 9 августа 2014 г.
- ^ «13.2 О Kdump (Глава 13: Поддержка средств диагностики)» . Корпорация Оракл . 2012 . Проверено 9 августа 2014 г.
- ^ Jump up to: а б с Вивек Гоял; Эрик В. Бидерман; Харипрасад Неллитерта (14 июня 2006 г.). «Kdump: механизм дампа сбоя ядра на основе Kexec» (PDF) . lse.sourceforge.net . Проверено 9 августа 2014 г.
- ^ Jump up to: а б с «Документация по ядру Linux: Documentation/kdump/kdump.txt» . ядро.орг . 12 августа 2013 года . Проверено 9 августа 2014 г.
- ^ Такаси Иваи (26 июля 2006 г.). «Отладка с помощью Kdump» (PDF) . СУЗЕ . Проверено 9 августа 2014 г.
- ^ «29.2.2. Использование утилиты настройки дампа ядра (Руководство по развертыванию Red Hat Enterprise Linux 6)» . Красная шляпа . Проверено 9 августа 2014 г.
- ^ «kexec и kdump: базовая конфигурация kdump (Руководство по системному анализу и настройке)» . СУЗЕ . 25 апреля 2014 года . Проверено 9 августа 2014 г.
- ^ «Как использовать kdump для устранения сбоев ядра» . Федора . 9 апреля 2014 года . Проверено 9 августа 2014 г.
- ^ Дэвид Андерсон (27 августа 2010 г.). «Информационный документ: Аварийная утилита Red Hat» . Красная шляпа . Проверено 9 августа 2014 г.
- ^ «kexec и kdump: анализ аварийного дампа (Руководство по системному анализу и настройке)» . СУЗЕ . 25 апреля 2014 года . Проверено 9 августа 2014 г.
- ^ Любунчич, Игорь (15 апреля 2009 г.). «Сбор и анализ сбоев ядра Linux — LKCD» .
- ^ Любунчич, Игорь (18 июля 2009 г.). «Сбор и анализ сбоев ядра Linux — Kdump» .
- ^ «Ядро Linux 2.6.13» . kernelnewbies.org . 29 августа 2005 года . Проверено 9 августа 2014 г.
Внешние ссылки
[ редактировать ]- Официальный сайт
- Kdump, механизм дампа ядра при сбоях на основе Kexec , IBM , 2005, Вивек Гоял, Эрик В. Бидерман и Харипрасад Неллитерта
- Использование Kdump для изучения сбоев ядра Linux , 21 июня 2017 г., Пратюш Ананд
- Kdump: Использование и внутреннее устройство , Red Hat , июнь 2017 г., Пратюш Ананд и Дэйв Янг