Программа SPK компании Alexander LAN способна предотвратить аварию сервера. Если же это не удастся, то, как правило, она может перезапустить сервер и представить детальную картину аварии


УСТАНОВКА
ПОКА ГРОМ НЕ ГРЯНЕТ...
КТО ВИНОВАТ?
ЗАКЛЮЧЕНИЕ

Программный продукт Server Protection Kit (SPK) компании Alexander LAN имеет довольно занимательную историю. Изначально Alexander LAN называлась Alexander Communications и представляла собой консультативную маркетинговую компанию. Первый контракт Alexander Communications заключался в продвижении продукта NetCheck компании Nu-Mega Technologies. Программа NetCheck была предназначена для того, чтобы не допускать аварий сервера NetWare из-за порчи оперативной памяти. Дело кончилось тем, что компания Alexander LAN стала сама выпускать и распространять программное обеспечение; при этом она приобрела у Nu-Mega лицензию на переработку и продажу программы NetCheck, как своей собственной.

В рамках этой деятельности Alexander LAN разработала два совершенно новых продукта, EDNA и DEXTER; оба они могут быть интегрированы с новой версией NetCheck, для обеспечения защиты файловых серверов NetWare. В результате появился Alexander LAN Server Protection Kit 2.0 - первая программа, способная помочь при аварии в NetWare, причем работает она и с NetWare 3.x, и NetWare 4.x.

В случае аварии программа EDNA (Emer-gency Diagnostics for Network Administrator) 1.02 автоматически берет на себя управление файловым сервером. Она выполняет также диагностику и создает файл EDNA Crash File (аварийный файл EDNA) с DOS-расширением .ecf. Этот файл содержит всю информацию о состоянии сервера на момент аварии. Факультативная программная опция позволяет EDNA автоматически перезапустить файловый сервер и восстановить все его службы. По указанию пользователя, сразу после перезагрузки сервера EDNA сама может запускать для проверки целостности файловой системы утилиту Novell под названием vrepair. Кроме того, EDNA может составить электронное письмо - его потом можно прочесть программой просмотра под Windows - для последующей отсылки в Novell или другую компанию технической поддержки для дополнительного анализа причин и условий сбоя.

Программа DEXTER (Debugger Extender) 1.20 позволяет проанализировать стеки символических имен после аварии и заглянуть во внутреннюю кухню операционной системы NetWare. Программа выдает все вызовы процедур и все события, приведшие к аварии; она также указывает, какие задания выполнялись по этим адресам. Несмотря на то что DEXTER работает как загружаемый модуль, предоставляемые им данные доступны из программы просмотра EDNA.

NetCheck 2.10 автоматически перехватывает все загружаемые модули, драйверы и фрагменты ядра операционной системы, действия которых могут привести к порче оперативной памяти и тем самым вызвать аварию сервера. NetCheck поддерживает версии NetWare от 3.11 до 4.10 и может интегрироваться с DEXTER и EDNA.

Короче говоря, NetCheck перехватывает большинство могущих привести к аварии сервера ошибок программ. Если это все-таки не удается или если авария происходит из-за аппаратного сбоя, то в игру вступают EDNA или DEXTER. EDNA делает как бы моментальную фотографию системы и записывает ее на диск для последующего анализа. DEXTER обеспечивает возможность изучения текущего состояния системы и интерпретирует некоторую символическую информацию.

УСТАНОВКА

Установить Alexander SPK довольно просто. Покупатель получает всего две дискеты. Поскольку программа Setup работает под Windows, то на рабочей станции администратора сети должна быть инсталлирована какая-либо версия этой операционной системы. Программа запрашивает у пользователя имена каталогов, куда будет производиться установка; предполагается, что каталоги создаются в корневой части диска C: или тома SYS:. Это можно легко поменять, однако тут следует соблюдать осторожность: если файлы будут записаны на локальный диск C: (а такую ошибку допустить очень легко), то обращаться к ним после запуска файлового сервера будет нельзя.

Еще одна проблема состоит в том, что при обновлении файла autoexec.ncf (для добавления трех входящих в систему загружаемых модулей) программа использует имя текущего диска DOS, в результате может появиться команда вроде load f:systemalexspsdexter.nlm. В этом случае строку придется изме-нить для того, чтобы команда указывала на том SYS:.

Последнее, что делает программа Setup, - она устанавливает Windows-приложение EDNA на рабочей станции администратора сети. Это приложение позволяет администратору сети просматривать созданный загружаемым модулем EDNA аварийный файл.

ПОКА ГРОМ НЕ ГРЯНЕТ...

Три загружаемых модуля, входящие в комплект, выполняются в фоновом режиме. Не вмешиваясь в работу системы, они бездействуют, пока не появится программа с ошибкой или не случится авария. Когда же это происходит, три модуля собирают обширную статистику о сбое и записывают ее в сжатом виде в файл, создаваемый в DOS-разделе диска (примерно 30% объема оперативной памяти сервера). В этот файл, в частности, записывается autoexec.ncf, журнал консоли, vol$log.txt и ряд других файлов, способных помочь при выяснении причин аварии. После этого Alexander SPK перезагружает систему (и запускает vrepair, если при установке EDNA была выбрана соответствующая опция). Затем SPK выдает на экран консоли сообщение об аварии и восстановлении работы сервера (это сообщение можно спокойно удалить с экрана). Кроме того, администратору сети может быть отправлено соответствующее сообщение по электронной почте. Последний шаг в процессе перезагрузки - копирование сжатого файла с диска C: на том SYS:. Программа SPK копирует файл во вновь создаваемый подкаталог под названием SYS:ednammddyy_A (или _B, или _C и т. д.).

После перезапуска системы администратор может запустить программу edna.exe, представляющую собой Windows-приложение, устанавливаемое вместе со всем прочим программным обеспечением.

Причину аварии можно расследовать, запустив EDNA, открыв аварийный файл, перейдя во вновь созданный каталог и щелкнув на имени сжатого файла (оно имеет вид mmddyy_a.lzh). При этом сжатый файл раскрывается (появляется файл mmddyy_a.ecf) и передается в окно просмотра.

Для имитации аварии мы использовали поставляемый вместе с программой загружаемый модуль abort.nlm. Окно просмотра EDNA, является как раз результатом открытия файла после перезапуска системы. Это окно содержит целый ряд полезных данных, в частности дату и время аварии, непосредственную причину аварии, имя сервера, номер версии NetWare и координаты администратора, ответственного за работу данного сервера.

На экране читатель может видеть ряд других экранов и меню. Начнем с того, что EDNA показывает, какая именно нить (thread) привела к ненормальному завершению (abend) и какой загружаемый модуль породил эту нить, а также выдает содержимое регистров процессора и символический след, показывающий, что происходило в центральном процессоре непосредственно перед аварией.

Содержимое стека демонстрирует, к какой функции обратилась нить во время аварии. Если же символические имена и отладочная информация доступны, то высвечиваются и они. Функции часто имеют мнемонические имена, что помогает определить, как именно вела себя нить в момент аварии сервера.

Просмотр стека можно проводить в двух режимах. По умолчанию просматривается только информация о вызовах функций. При работе в другом режиме EDNA выдает все элементы стека (и указывает, что представляет собой каждый из них); вместе со всей доступной символической и отладочной информацией. Эта информация полезна скорее разработчику, нежели конечному пользователю.

Много полезного содержит и экран загружаемых модулей. Тут находится информация обо всех NLM и драйверах, которые были загружены на момент аварии системы. EDNA выдает версию, дату, представленное разработчиком описание загружаемого модуля, адреса кода и данных загружаемого модуля в оперативной памяти.

КТО ВИНОВАТ?

Пожалуй, еще важнее то, что модуль NetCheck сообщает EDNA о порче оперативной памяти сервера. Он определяет, какой загружаемый модуль или драйвер испортил адресные области памяти программных кодов других загружаемых модулей или драйверов. Такая информация помогает выявить виновника и пострадавшего, а также их адреса - потом администратор может поставить в известность о произошедшем производителя некорректного модуля. Данная функция очень важна, поскольку модуль или процесс, выполняющийся непосредственно в момент аварии, вполне может быть в ней не виноват. Приведем простой пример. Представьте себе, что какой-нибудь модуль испортил код некой другой программы. Некоторое время спустя ни в чем неповинная программа получает управление, и, как только она доходит до испорченного участка, происходит сбой сервера. SPK сообщает, какой модуль исполнялся в момент сбоя. Однако сам-то этот модуль ни в чем не виноват! Информация, предоставляемая NetCheck, позволяет отделить агнцев от козлищ.

Очень хороша опция отправки информации по электронной почте. Программа формирует файл, куда в сжатом виде помещается аварийный файл edna.ecf и ряд других файлов (в частности autoexec.ncf и startup.ncf). Этот файл можно отправить по электронной почте в Novell или какую-нибудь другую фирму, занимающуюся анализом аварий; сюда же можно включить даже программу пользовательского интерфейса для EDNA. Интерфейс EDNA представляет собой самораскрывающийся архив, что очень удобно для получателя. Получив такой файл, инженер Novell может с помощью интерфейса EDNA преобразовать аварийный файл к соответствующему формату для анализа информации средствами Novell.

В наши дни многие компании сокращают свои услуги по поддержке пользователя или просят плату за такие услуги. В этом смысле Alexander LAN приятное исключение - компания предоставляет бесплатную техническую поддержку по телефону без всяких ограничений (платить приходится только за сам телефонный звонок). Помимо этого, Alexander LAN предлагает бесплатную диагностическую поддержку, т. е. помогает своим покупателям анализировать аварийные файлы EDNA. Компания считает себя обязанной полностью восстановить работу каждого отказавшего сервера.

"Мы не берем деньги за техническую помощь, - говорит Дирк Смит, президент Alexander LAN. - И в частности, потому, что наш профессиональный уровень возрастает каждый раз, как нам удается разобраться в новой ситуации, приведшей к аварии. Имея подобный опыт, нам легче ответить на вопросы других клиентов. Кроме того, это помогает в усовершенствовании нашего изделия".

ЗАКЛЮЧЕНИЕ

Просмотр и анализ содержимого стеков - занятие не для начинающих и не для слабонервных. Многие пользователи увидят в SPK всего лишь средство автоматического перезапуска сервера; на аварийные файлы никто не будет обращать внимания, если только не окажется, что какой-либо сервер сбоит слишком часто. В последнем случае пользователь, бросив беглый взгляд на данные, перешлет файл к какому-нибудь знающему человеку, чтобы тот его проанализировал - кстати, неплохое занятие для реселлеров. Разработчикам, напротив, новые средства помогут существенно сократить время отладки. Кроме того, они получат возможность выдавать на рынок более тщательно отлаженные и протестированные изделия.

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

Впрочем, все это теория. SPK простоял на нашем испытательном сервере неделю и стал свидетелем двух аварий, о которых EDNA не смогла сообщить никаких данных - длина аварийного файла равнялась нулю. Так что виновника этих аварий найти не удалось. Более того, перед загрузкой SPK сервер несколько месяцев работал без всяких аварий, да и после его выгрузки за неделю не произошло ни одной аварии. Поставщик, которому мы сообщили о своих наблюдениях, сказал, что это совпадение. Утверждать обратное, имея на руках лишь косвенные доказательства, мы не будем. Тем не менее тот факт, что EDNA ничего не сообщила об аварии, вызывает определенное разочарование.


Стив Калман руководит компанией Esquire Micro Consultants. С ним можно связаться через Internet по адресу: skalman@ptdprolog.net.

Поделитесь материалом с коллегами и друзьями