Чем анализировать core файлы в Solaris?
24.02.2009
Паника ядра в Solaris бывает очень редко, но… всякое бывает. А если вы сами пишете драйвера или экпериментируете с OpenSolaris, то может это событие и нередкое ;) Итак, сервер сбросил корку (/var/crash/`hostname`/unix.* и /var/crash/`hostname`/vmcore.*)
Что использовать для анализа дампа памяти после паники?
Инструмент | Комментарии |
mdb (Solaris Modular Debugger) | Уже установлен в Solaris. Пакеты SUNWmdbr,SUNWmdb |
MDeBug: An MDB-Based Debugging Tool for the Solaris 8 and 9 OS | Скрипт, выполняющий стандартный набор запросов к mdb. Работает в режиме диалога. |
ACT — «crash dump analyzer». | Находится на EIS-DVD. Немножко бестолково генерит информацию. Позволяет разделить информацию, на несколько файлов (threads, summary, biowait итд ) Запускается /opt/CTEact/bin/act -s /tmp/my_analyze -n unix.0 -d vmcore.0 |
SolarisCAT | Инструмент суперский, отлично задокументирован, на каждую команду написан подробнейший хелп. Из дампа можно выжать все, что только можно представить. Делали разработчики ядра Solaris, поддерживает различные фенички Solaris10, типа zones итд |
Несколько ссылок в тему:
- Solaris Modular Debugger Guide
- Solaris Core Analysis, Part 1: mdb
- Solaris Core Analysis, Part 2: Solaris CAT
- Less known Solaris Features: About crashes and cores
- mdb-cheatsheet
UPD: 20090709
Сообщения и ошибки VXVM
22.02.2009
Обновлено!
На сайте Symantec появился инструмент для поиска по номеру ошибок
В последних версиях Veritas volume manager ошибки имеют нумерацию типа V-5-X-XXXX. Поиск описания ошибки просто по коду обычно не приносит результата ;) Список ошибок был найден здесь, вместе с различными ссылками на документы по vxvm. Но, как мне кажется, лучше искать ошибки по нижеприведенной табличке.
Управлять ленточными приводами и роботом ленточной библиотеки под управлением NetBackup можно с помощью команд vmoprcmd и robtest. Например, воспользуемся библиотекой, чтобы считать информацию с ленточки из под ОС.
посмотреть статус ленточных приводов
vmoprcmd -dp
опустить привод под номером 10 (NetBackup не будет его использовать)
vmoprcmd -down 10
robtest
( выбрать библиотеку )
s p ( смотреть статус ленточек в mailslot )
s d ( смотреть статус ленточек в приводах )
s s ( смотреть статус ленточек в слотах библиотеки )
m p1 d3 (переместить ленту из mailslot 1 в привод номер 3)
q (выйти из robtest)
Внимание! Не оставляйте запущенную утилиту robtest, она мешает нормальной работе NetBackup. Обязательно выходите из нее.
выполняете с ленточкой команды из-под под ОС
mt -f /dev/rmt/6cbn rewind
tar xf /dev/rmt/6cbn
# отключаете использование ленточки в ОС
mt -f /dev/rmt/6cbn offline
снова через robtest переносите ленточку и возвращаете снова привод под управление NetBackup.
поднять привод под номером 10 (NetBackup будет его использовать дальше)
vmoprcmd -up 10
Ссылки по теме:
Supplemental Information to Media Manager System Administrator’s Guide for Automated Cartridge System Library Software
Зачем устанавливать ASL и APM для vxvm?
19.12.2008
Обязательно устанавливайте Array Support Library (ASL) и Array Policy Module (APM, когда он есть) в vxvm для всех используемых массивов. Зачем это нужно? Дело в том, что эти модули используется для повышения надежности доступа к массивам. В частности, vxdmp определяет тип доступа к массиву (active-active, active-passive), для наиболее надежного соединения, скорости переключения при отказе одного из каналов, балансировки нагрузки.
Еще одна причина — информация о дисковой группе хранится не на всех дисках, а по умолчанию — на 10-20% дисков, и vxvm старается раскидать по принципу наибольшей надежности их по разным контроллерам-массивам, а если тип массива не установлен — то информация будет сохраняться без учета особенностей сети хранения данных.
Итак, пример из жизни, реальная ситуация (сбой кластера): не установлена ASL, все тома отзеркалены на разные массивы, оба массива определелись как jbod-ы. В результате все конфигурационные копии попали на ОДИН массив, который, неожиданно отказал. Таким образом получилось, что есть копии всех томов, но дисковую группу импортировать нельзя, так как недоступны все конфигурационные копии.
Читать полностью »
Зеркалирование загрузочных дисков под vxvm
12.12.2008
Вообще, инкапсулировать загрузочные диски под управление vxvm следует только, если вы собираетесь их зазеркалить. Если же, такой цели не стоит (например, есть в наличии аппаратный raid-контроллер на внутренние диски), то не стоит городить огород.
Инкапсуляция (rootability, как это теперь называется) запускается командой
# vxdiskadm
Читать полностью »
Хватает ли нам процессорных мощностей?
05.12.2008
Как разобраться, хватает ли нам процессорных мощностей и где тот параметр, который нам укажет, что процессора не тянут те задачи, которые мы им вешаем?
Читать полностью »
Шпаргалки по awk и sed
02.12.2008
Очень часто смотришь на текст какого-нибудь awk или sed скрипта и понимаешь, что ничего в нем не понимаешь ;) Куча каких-то непонятных предопределеннх переменных, неадекватный синтаксис… Чтобы быть во всеоружии — нужно под рукой всегда иметь шпаргалку ;)
Очень полезные шпаргалки по awk и sed. Взяты отсюда.
Ну и в догонку — отличная подборка односточников на awk [локальная копия]. В комплекте со «шпаргалкой по AWK» получается отличный набор продвинутого awk-программера ;)
Как в shell сгенерировать последовательность
30.11.2008
Достаточно часто приходится генирировать последовательности в shell. Например, создать 10 файлов с разными именами, или переименовать, или добавить в vxvm диски, присвоив им новые имена, или отформатировать последовательно диски с командной строки на дисковом массиве, ну и т.д. Самый простой и правильный способ — это использовать команду seq, но к сожалению, ее в solaris по умолчанию нет.
Итак, несколько примеров, как напечатать цифры от 1 до 10:
Эти генерилки работают везде
$ i=0; while [ $i -lt 11 ]; do echo $i; i=`expr $i + 1` ; done
$ for i in 1 2 3 4 5 6 7 8 9 10; do echo $i; done
$ perl -e 'print "$_\n" foreach(1..10)'
Эта работает только в bash
$ for (( i = 1; i < 11; i++ )); do echo $i; done
а эта только в linux
$ seq 1 10
IPMP без головной боли
26.11.2008
Для повышения надежности сетевых соединений в Solaris можно использовать link aggregations или IPMP. Ниже по тексту — шпаргалка по IPMP.
Читать полностью »
Solaris: объединение сетевых интерфейсов
25.11.2008
Для повышения надежности сетевых соединений в Solaris можно использовать «link aggregations» или IPMP. Ниже по тексту — шпаргалка по «link aggregations».
В Solaris 10 появилась возможность объединять физические интерфейсы в один логический интерфейс (link aggregations). Tочнее, эта возможность была и ранее, но использовался дополнительный продукт — SunTruncking, теперь эта возможность есть по умолчанию. Для чего это нужно:
- Увеличивается пропускная способность
- Load balancing
- Повышается надежность за счет резервных сетевых интерфейсов
- Упрощается администрирование
- Уменьшается пул необходимых ip-адресов
Необходимые условия для организации link aggregations:
- сетевые коммутаторы должны поддерживать link aggregation control protocol (LACP). Смотрите документацию по по вашим коммутаторам.
- на сервере могут объединяться интерфейсы с поддержкой GLDv3. Сейчас это интерфейсы xge, e1000g, и bge. (здесь список более полный)
- все интерфейсы должны быть в full duplex mode и работать с одной скоростью.
- переменная obp local-mac-address? должна быть установлена в true (
# eeprom local-mac-address?=true
)