Использование дамповых устройств

Анализ и устранение сбоев операционной системы AIX существенно упрощается, если в системе предусмотрено автоматическое создание дампа. Воспользуйтесь дамповым устройством для получения дампа памяти, который можно будет отправить в отдел поддержки IBM.

Дэвид Тенсли, системный администратор, Ace Europe

фото Дэвида ТенслиДэвид Тенсли (David Tansley) — один из внештатных авторов IBM developerWorks. У него более 15 лет опыта администрирования UNIX-систем, а последние 8 лет он специализируется на AIX. В сферу его личных интересов входят бадминтон и Формула 1, но наибольшее удовольствие он получает, путешествуя на своём мотоцикле вместе с женой.



24.10.2012

Введение

Если в системе из-за непредвиденного события происходит сбой, то автоматически создается дамп ядра. На самом деле дамп системы может произойти и при отсутствии ошибок. Но в рамках этой статьи я предполагаю, что система "упала" из-за фатальной ошибки или неправильных действий пользователя. В дампе находится содержимое памяти на момент возникновения ошибки. Очевидно, что подобные сбои происходят неожиданно для администратора системы, и поэтому в его интересах заранее подготовиться к такому событию. Признаком сбоя является перезагрузка системы и появление в журнале ошибок записи с меткой SYSDUMP.

Для примеров я воспользуюсь ОС AIX версии 7.1, однако обсуждаемые идеи применимы и для более старых версий AIX, например, 5.3 и 6.1.


Подготовка

Чтобы быть готовым к возможным системным сбоям, необходимо организовать логический том для дампового устройства (dump device logical volume), на который будет записан дамп памяти после возобновления работы системы. В случае если дамповое устройство оказывается недоступным, для размещения дампа должно быть назначено второе дамповое устройство. Однако возможны ситуации, когда сбой можно игнорировать, поэтому не нужен файл с дампом, который необходим для дальнейшего исследования. Выбор того или иного варианта зависит от системного администратора, однако "хорошим тоном" считается иметь в rootvg основное дамповое устройство, необходимое для правильной работы системы. Дамповое устройство может быть отзеркалированно, но служба поддержки IBM AIX не рекомендует этот вариант, так как само зеркалирование может стать причиной сбоя. В определенных обстоятельствах для файла с дампом может быть создана только одна копия на одном из зеркалированных дамповых устройств, которое находится на зеркалированном диске. Это может стать причиной того, что при перезапуске системы удастся восстановить только половину файла с дампом. Правильным считается иметь основное дамповое устройство на одном диске без поддержки зеркалирования, а второе устройство на другом диске и также без зеркалирования. Однако я заметил, что распространенной практикой является зеркалирование дампового устройства rootvg. Второе дамповое устройство может находиться как в rootvg, так и за его пределами, главное чтобы оно не находилось в страничном пространстве или на внешнем устройстве, например, ленточном накопителе.


Дамповые устройства

Традиционно на множестве систем стандартное устройство для системных дампов располагается в /dev/hd6 (страничное пространство). Если после произошедшего сбоя оставшегося пространства не хватает для копирования файла с дампом, то администратору при перезапуске системы предлагается скопировать файл с дампом на съемный носитель, например, ленту или DVD-диск. Подобные действия могут требовать времени, а иногда, крайне важно, восстановить работу системы как можно быстрее. К сожалению, иногда системные администраторы из-за требований руководства своей компании пропускают этот шаг, чтобы быстрее восстановить систему, но после удаления файла с дампом они уже не смогут установить истинную причину сбоя. Если на дамповом устройстве недостаточно пространства для копирования дампа, тогда при запуске системы через меню можно вызвать утилиту copydumpmenu, которая позволяет скопировать дамп на внешний носитель, например, на ленточное устройство. Эту утилиту можно вызвать из командной строки и после успешного запуска системы. По умолчанию для копирования используется каталог /var/adm/ras, а файл называется file-name:vmcore.<X>.BZ, где X – порядковый номер. Файл дампа хранится в архивном файле в формате BZ (BZIP).

Команда snap может использоваться для сбора информации о файле дампа, но обязательно необходимо указать flag –D, чтобы произвести сбор информации с основного дампового устройства.

Так как сегодня системам доступны гораздо большие объемы памяти, то это позволяет размещать основное дамповое устройство с большей гибкостью Обычно в системах, обладающих более 4 ГБ памяти, выделяется отдельное дамповое устройство lg_dumplv.

# lsvg -l rootvg |grep sysdump
lg_dumplv sysdump  8  8   open/syncd N/A

С помощью команды sysdumpdev можно определить, какие устройства используются для хранения системных дампов.

Ниже представлен результат запуска sysdumpdev для системы с AIX 7.1, основное дамповое устройство которой находится в в lg_dumplv:

#  sysdumpdev -l
primary              /dev/lg_dumplv
secondary            /dev/sysdumpnull
copy directory       /var/adm/ras
forced copy flag     TRUE
always allow dump    TRUE
dump compression     ON
type of dump         traditional

Рассмотрим подробно полученную информацию. Отметим, что с версии AIX 6.1 появляется дополнительное поле type of dump (тип дампа). В данном случае его значение равно traditional, но его можно установить равным fw-assisted (firmware - прошивка), если оборудование поддерживает такую возможность. Значение поля secondary говорит, что дополнительное дамповое устройство отсутствует (идентификатор устройства равен sysdumpnull). Поэтому все дампы, направленные на это устройство, будут потеряны. В качестве каталога для копирования системного дампа установлен /var/adm/ras, оттуда его можно будет извлечь для дальнейшего анализа или отправки в службу поддержки IBM. Значение поля always allow dump равно true, так как это необходимо для успешного создания дампа. Параметр dump compression равен on, т.е. по умолчанию файл с дампом будет архивироваться.

Стандартными опциями sysdumpdev являются:

  • -P -p <device_name> - для изменения используемого основного дампового устройства;
  • -P -s <device_name> - для изменения используемого дополнительного дампового устройства;
  • -D <path_name> - для изменения каталога, куда будет копироваться дамп;
  • -k или -K – для изменения параметра always allow dump (-kFALSE, -KTRUE);
  • -t <fw-assisted | traditional> - для изменения типа дампа.

Управляемое пользователем создание дампа

Для создания дампа (в процессе его создания происходит перезагрузка системы) используется команда sysdumpstart, в качестве параметра которой указывается место для размещения дампа; в данном случае это будет основное дамповое устройство.

# sysdumpstart -p

После запуска этого процесса на LED-панель или консоль HMC системы выводится сообщение 00c2 (так это выглядит на моей системе Power 5). Это значит, что идет создание дампа. После перезапуска системы в журнале ошибок могут появиться следующие записи:

# errpt |more
IDENTIFIER TIMESTAMP  T C RESOURCE_NAME  DESCRIPTION
A6DF45AA   1027180611 I O RMCdaemon      The daemon is started.
67145A39   1027180411 U S SYSDUMP        SYSTEM DUMP
F48137AC   1027180411 U O minidump       COMPRESSED MINIMAL DUMP
A6DF45AA   1027180411 I O RMCdaemon      The daemon is started.
9DBCFDEE   1027180511 T O errdemon       ERROR LOGGING TURNED ON

Продолжим исследование отчета об ошибках:

Type:            UNKN
WPAR:            Global
Resource Name:   SYSDUMP

Description
SYSTEM DUMP

Probable Causes
UNEXPECTED SYSTEM HALT

User Causes
SYSTEM DUMP REQUESTED BY USER

        Recommended Actions
        PERFORM PROBLEM DETERMINATION PROCEDURES

Failure Causes
UNEXPECTED SYSTEM HALT
        Recommended Actions
        PERFORM PROBLEM DETERMINATION PROCEDURES

Detail Data
DUMP DEVICE
/dev/lg_dumplv
DUMP SIZE
              63894528
TIME
Thu Oct 27 18:02:28 2011
DUMP TYPE (1 = PRIMARY, 2 = SECONDARY)
           1
DUMP STATUS
           0

Как можно понять из представленной информации, дамп был отправлен на основное дамповое устройство.

Используя команду sysdumpdev можно убедиться, что дамп действительно был выполнен и сохранен на основное устройство. При успешном создании дампа также выводится информации о дате создания, размере файла и имени устройства.

# sysdumpdev -L
0453-039

Device name:         /dev/lg_dumplv
Major device number: 10
Minor device number: 16
Size:                63894528 bytes
Uncompressed Size:   498002880 bytes
Date/Time:           Thu Oct 27 18:02:28 BST 2011
Dump status:         0
Type of dump:        traditional
dump completed successfully

С помощью этой же команды можно получить информацию о последнем системном дампе, его размере и месте, где он хранится.

# sysdumpdev -z
63894528 /dev/lg_dumplv

Дамп в сжатом виде находится на логическом томе lg_dumplv. В случае, если дамп создается по инициативе пользователя, то файл с ним не копируется в указанный каталог. Чтобы скопировать последний системный дамп с дампового устройства в каталог используется команда savecore. Предположим, что нам необходимо скопировать дамп в каталог /var/adm/ras

# savecore -d /var/adm/ras
vmcore.0.BZ

Если вам требуется разархивировать файл с дампом, то воспользуйтесь утилитой dmpuncompress, которая показана ниже:

dmpuncompress  < filename>

После того как файл с дампом был разархивирован, его можно исследовать с помощью kdb или переслать в службу поддержки IBM.

# dmpuncompress vmcore.0.BZ
replaced with vmcore.0

Также в меню SMIT можно выбрать опцию Dump, а в её подменю выбрать опцию Copy a system dump (скопировать дамп системы). Экран меню для копирования дампа представлен ниже.

                              Copy dump image to:

Type or select values in entry fields.
Press Enter after making all desired changes.

                                                        [Entry Fields]
* Copy dump image from:                              [/dev/lg_dumplv]         /
* Copy dump image to:                                [/var/adm/ras/dump_fil>
* Input and output file blocksize for copy           [4096]                   #
  Size in bytes of dump image                         63894528
  Date of last dump                                   Thu Oct 27 18-02-28 B>

Значения полей определяются параметрами текущего дампа, расположенного на основном дамповом устройстве. Если используются настройки по умолчанию, то после копирования файл с дампом будет доступен в каталоге /var/adm/ras.

# ls -l dump_file_copy.BZ
-rw-r--r--    1 root     system     63894528 Oct 27 18:15 dump_file_copy.BZ

После выполнения дампа также может быть создан и минидамп. В случае его создания в журнале errorlog должна появиться запись следующего типа.

F48137AC   1027180411 U O minidump       COMPRESSED MINIMAL DUMP

Минидамп - это небольшой сжатый дамп, который также будет сохранен в каталог /var/adm/ras. В этом файле содержится "мгновенный снимок" системы на момент выполнения дампа или возникновения сбоя. Минидамп можно использовать для диагностики в случаях, когда отсутствует основной дамп из-за того, что он был удален или в процессе его создания произошел сбой.


Создание дополнительного дампового устройства

Ранее в выводе команды sysdumpdev -l дополнительное дамповое устройство было установлено в /dev/sysdumpnull, поэтому если запись дампа идет на это устройство, то она не будет сохранена. При подобной конфигурации дополнительное дамповое устройство работало бы как устройство NULL, т.е. все данные, выводимые на него, не сохранялись. Сейчас я создам новое дополнительное дамповое устройство и изменю атрибуты команды sydumpdev так, чтобы они соответствовали новой конфигурации, тогда если основное устройство окажется недоступным, то дамп будет записан на дополнительное.

В показанном примере основное устройство использовало восемь логических разделов (как можно увидеть в выводе команды). Поэтому я воспользуюсь этим же размером для создания дополнительного устройства.

Сначала потребуется выделить пространство для дампового устройства. Мы должны определить потенциальный размер дампа, созданного ОС AIX, и использовать его за основу при создании устройства. Предполагаемый размер проще всего определить с помощью команды sysdumpdev с параметром e, которую лучше запускать, когда система не простаивает и работает в нормальном режиме.

# sysdumpdev -e
0453-041 Estimated dump size in bytes: 282486374

Замечу, что если параметр compressed активирован (т.е. дамп создается в сжатом виде), то количество байт, возвращенных sysdumpdev, соответствует размеру уже сжатого файла дампа, а не исходному размеру файла дампа. В результате запуска данной команды был получен размер в 282486374 байт, но для большего удобства мы преобразуем его в мегабайты:

#  expr 282486374 / 1024 / 1024
269

К этому размеру следует добавить еще порядка 50% (около 135 МБ), чтобы учесть ситуацию, когда сбой происходит при перегрузке системы, что приводит к размеру в 404 МБ. Это значение и будет минимально возможным размером для создаваемого дампового устройства. Также следует учесть, что файловой системе для успешного копирования файла потребуется как минимум еще столько же свободного пространства.

Необходимо убедиться, что первичное дамповое устройство lg_dumplv не зеркалируется в rootvg и располагается только на одном диске. Дополнительное устройство тогда можно разместить на другом диске. С помощью приведенной ниже команды мы можем убедиться, что существует только одна копия lg_dumplv.

# lsvg -l rootvg
rootvg:
LV NAME             TYPE       LPs     PPs     PVs  LV STATE      MOUNT POINT
hd5                 boot       1       2       2    closed/syncd  N/A
…
...
livedump            jfs2       2       4       2    open/syncd    /var/adm/ras/livedump
lg_dumplv           sysdump    8       8       1    open/syncd    N/A

Далее мы выполним запрос к логическому тому lg_dumplv, чтобы узнать на каком диске он располагается. Как видно по результату выполнения команды ниже, lg_dumplv целиком находится на hdisk0. Все необходимые требования соблюдены, и мы можем создать дополнительное дамповое устройство и разместить его на диске hdisk1 в rootvg.

# lslv -m lg_dumplv
lg_dumplv:N/A
LP    PP1  PV1               PP2  PV2               PP3  PV3
0001  0008 hdisk0
0002  0009 hdisk0
0003  0010 hdisk0
0004  0011 hdisk0
0005  0012 hdisk0
0006  0013 hdisk0
0007  0014 hdisk0
0008  0015 hdisk0

Чтобы определить, сколько логических разделов (logical partitions, LP) потребуется для создания дополнительного устройства, необходимо выполнить запрос к группе томов rootvg для уточнения размера страницы (параметр PP size). В данном случае размер одной страницы раздела равен 128 МБ.

# lsvg rootvg
VOLUME GROUP:       rootvg                   VG IDENTIFIER:  00c23bed00004c00000
0013142b3b106
VG STATE:           active                   PP SIZE:        128 megabyte(s)
VG PERMISSION:      read/write               TOTAL PPs:      270 (34560 megabyte
…
…

Поэтому для создания логического тома размером в 404 МБ мне потребуется 4 раздела, а общий размер тома будет равен 512 МБ. Логический том создается с помощью команды mklv, ниже представлен формат её использования для создания логического тома для хранения системного дампа.

mklv -t sysdump -y <LV name> < volume group> < number of LP's> <hdisk to reside on>

Создать логический том с интересующими нас параметрами можно с помощью следующей команды:

# mklv -t sysdump -y lg_dumplv2 rootvg  4 hdisk1

где:

  • lg_dumplv2 — название логического тома;
  • rootvg – группа томов, где он размещен;
  • 4 — количество разделов, выделенных под логический том;
  • hdisk1 – жесткий диск, где будет располагаться логический том.

Однако, как упоминалось ранее, дополнительное дамповое устройство должно быть такого же размера, как и основное, поэтому мы выделим для него 8 разделов. Чтобы создать устройство с подобной конфигурацией, потребуется немного изменить параметры команды mklv, указав размер равным не 4, а 8 разделам.

# mklv -t sysdump -y lg_dumplv2 rootvg 8 hdisk1

После выполнения команды необходимо выполнить запрос к логическому тому lg_dumplv2, чтобы проверить, что устройство действительно было создано на диске hdisk1.

# lslv -m lg_dumplv2
lg_dumplv2:N/A
LP    PP1  PV1               PP2  PV2               PP3  PV3
0001  0003 hdisk1
0002  0004 hdisk1
0003  0005 hdisk1
0004  0006 hdisk1
0005  0007 hdisk1
0006  0008 hdisk1
0007  0009 hdisk1
0008  0010 hdisk1

Состояние логического тома можно проверить запросом к rootvg. Как можно видеть из результата выполнения такого запроса, хотя логический том и был создан, но он не активирован и находится в "закрытом" состоянии.

#  lsvg -l rootvg
rootvg:
LV NAME             TYPE       LPs     PPs     PVs  LV STATE      MOUNT POINT
hd5                 boot       1       2       2    closed/syncd  N/A
hd8                 jfs2log    1       2       2    open/syncd    N/A
…
…
lg_dumplv           sysdump    8       8       1    open/syncd    N/A
lg_dumplv2          sysdump    8       8       1    closed/syncd  N/A

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

# sysdumpdev -Ps /dev/lg_dumplv2
primary              /dev/lg_dumplv
secondary            /dev/lg_dumplv2
copy directory       /var/adm/ras
forced copy flag     TRUE
always allow dump    TRUE
dump compression     ON
type of dump         traditional

И ещё раз проверить состояние rootvg, чтобы убедиться, что созданный логический том находится в активном состоянии.

#  lsvg -l rootvg
rootvg:
LV NAME             TYPE       LPs     PPs     PVs  LV STATE      MOUNT POINT
hd5                 boot       1       2       2    closed/syncd  N/A
hd8                 jfs2log    1       2       2    open/syncd    N/A
…
…
lg_dumplv           sysdump    8       8       1    open/syncd    N/A
lg_dumplv2          sysdump    8       8       1    open/syncd    N/A

Осталось выполнить окончательную проверку, запустив процесс записи системного дампа на дополнительное устройство:

#  sysdumpstart -s

После перезагрузки следует убедиться, что системный дамп находится на дополнительном устройстве. Для этого можно воспользоваться командой sysdumpdev, чтобы узнать местонахождение самого "свежего" системного дампа.

# sysdumpdev -L
0453-039

Device name:         /dev/lg_dumplv2
Major device number: 10
Minor device number: 18
Size:                64955392 bytes
Uncompressed Size:   502517142 bytes
Date/Time:           Thu Oct 27 18:19:37 BST 2011
Dump status:         0
Type of dump:        traditional
dump completed successfully

Как можно увидеть из результата работы команды sysdumpdev, дамп действительно был записано на дополнительное устройство.

Теперь можно выполнить команду savecore, чтобы скопировать последний системный дамп в другой каталог для дальнейшего изучения или отправки в службу поддержки IBM.

# savecore -d /var/adm/ras
vmcore.0.BZ

Заключение

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

Ресурсы

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=AIX и UNIX, Технология Java, Open source
ArticleID=842518
ArticleTitle=Использование дамповых устройств
publish-date=10242012