Опубликован: 15.10.2008 | Доступ: свободный | Студентов: 3511 / 739 | Оценка: 4.48 / 4.23 | Длительность: 45:21:00
Лекция 17:

Планирование катастроф и восстановление

Конфигурирование административных оповещений

Процесс задания административных оповещений для ошибок BSOD - это Microsoft-версия классической игры в кошку и мышь, в которой после каждой реальной поимки мыши становится все труднее и труднее схватить ее, поэтому вам удается завершить игру все реже и реже. С каждой новой версией Windows становится все труднее найти способ административного оповещения, когда происходит отказ сервера.

Если вы устанавливаете в диалоговом окне Startup and Recovery флажок, указывающий отправку оповещения, то сталкиваетесь с "небольшой" проблемой: нет средства для выполнения этой задачи. В этом диалоговом окне следовало бы добавить кнопку Configure Alert (Конфигурировать оповещение), щелчок на которой позволял бы вам выполнить задачи, необходимые для отправки оповещений. Но тогда бы вы лишили программистов Microsoft удовольствия все более усложнять игру в кошку и мышь.

В Windows NT можно легко задавать эти оповещения: откройте аплет Server в Control Panel, щелкните на Alerts и добавьте имена получателей оповещений.

В Windows 2000 нет подходящих апплетов, нет средства администрирования на основе консоли MMC и нет никакого диалогового окна для этой функции. Однако в качестве дружеской помощи в игре "конфигурирование оповещений" Microsoft поместила в папку %SystemRoot%\System32 обновленную версию средства Windows NT - Server Manager (имя файла srvmgr.exe ). Фактически это новая версия Windows NT Server Manager. Вы можете использовать ее в версиях Windows 2000 Server, чтобы задавать административные оповещения для случаев отказа. Кроме того, в версиях Windows 2000 Server во время загрузки автоматически запускаются службы Messenger и Alerter (необходимые для отправки оповещений).

В Windows Server 2003 отсутствуют те же компоненты, что и в Windows 2000, но на этот раз программисты еще больше усложнили условия игры - srvmgr.exe не включена в эту ОС. Кроме того, службы Messenger и Alerter отключены по умолчанию.

Я разобрался, как отправлять административные оповещения в Windows Server 2003 при ошибках BSOD, и поэтому объявляю себя победителем игры в кота и мышь.

Я не знаю, является ли мое решение настоящим победителем этой игры (если Microsoft выдает соответствующие призы), но оно действует, и поэтому я праздную победу!

Активизация служб Messenger и Alerter на сервере

Чтобы активизировать службы Messenger и Alerter на сервере, вы должны изменить сначала значения для служб Messenger и Alerter, используемые при загрузке, чтобы эти службы запускались автоматически при загрузке операционной системы. Для этого откройте оснастку Services из меню Administrative Tools и дважды щелкните на строке каждой службы. На рис. 17.8 показано диалоговое окно Properties для службы Alerter.

Изменение типа запуска для служб Messenger и Alerter

Рис. 17.8. Изменение типа запуска для служб Messenger и Alerter

Выберите вариант Automatic (Автоматически) в раскрывающемся списке Startup Type (Тип запуска) и щелкните на кнопке Apply (Применить). Затем щелкните на кнопке Start (Запустить), чтобы запустить эту службу немедленно (то есть не перезагружать компьютер, чтобы запустилась эта служба). Щелкните на кнопке OK, чтобы закрыть диалоговое окно Properties.

Примечание. Служба Alerter запускается по умолчанию в Windows Server 2003 и в Windows 2000 Server, но не в Windows XP Professional или Windows 2000 Professional. Если вы хотите отправлять оповещение при отказе компьютера Windows XP Professional/2000 Professional, используйте оснастку Services, чтобы сконфигурировать службу Alerter для автоматического запуска.
Задание получателей оповещений

Вы должны указать системе Windows Server 2003 имена получателей оповещений, что требует изменений в реестре. Откройте Regedit и перейдите в подраздел HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Alerter\Parameters. В правой панели дважды щелкните на элементе AlertNames и добавьте имена всех компьютеров и пользователей в сети, которые должны увидеть всплывающее сообщение, когда сервер обнаружит ошибку BSOD. Поместите имя каждого компьютера или пользователя в отдельную строку.


Каждое имя должно быть уникальным в сети, а это означает, что если вы создаете список всех имен компьютеров и всех имен пользователей, то у вас не будет дубликатов. Вероятно, вы знаете, что имена компьютеров должны быть уникальными и имена пользователей должны быть уникальными, но, возможно, не знаете, что имена пользователей и компьютеров тоже не должны быть одинаковыми. Если у вас есть пользователь с именем ivens, то вы не можете иметь компьютер с именем ivens.

Лучше всего включить в список всех пользователей вашего отдела ИТ и/или все компьютеры, которые обычно используются членами вашего отдела ИТ (включая, конечно, и вас).

После конфигурирования первого компьютера Windows Server 2003 вы можете использовать значок (ссылку), чтобы добавлять имена получателей на других компьютерах, работающих под управлением Windows Server 2003 (или Windows 2000). Значок - это .reg-файл, который автоматически добавляет имена получателей на всех компьютерах, которые будут следить за аварийными отказами. Вот как это сделать.

  1. Откройте regedit.exe на компьютере, где вы только что задали имена получателей, и экспортируйте подраздел HKEY_LOCAL_MACHINE\System\ CurrentControlSet\ Services\Alerter\Parameters, выделив этот объект в левой панели и выбрав File/Export в линейке меню Regedit.
  2. Задайте имя файла (я назвал свой файл Recipients) и сохраните его. Windows сохранит этот файл как файл реестра (с расширением .reg ) и по умолчанию поместит его в папку My Documents текущего выполнившего вход пользователя.
  3. Вы можете распространять этот .reg -файл с помощью электронной почты или поместить его в разделяемую точку сети. Для слияния этих настроек с реестром целевого компьютера достаточно дважды щелкнуть на .reg -файле, после чего появится сообщение, где запрашивается подтверждение того, что вы хотите выполнить слияние этих данных с реестром.

  4. Щелкните на кнопке Yes. Windows выведет сообщение об успешном завершении. Щелкните на кнопке OK, чтобы убрать это сообщение.
Активизация службы Messenger на компьютерах-получателях

Чтобы на экране компьютера, который получит оповещение, появилось соответствующее всплывающее сообщение, на этом компьютере должна быть запущена служба Messenger. (Служба Alerter должна быть запущена только на компьютерах, которые отправляют оповещения, а служба Messenger необходима как для отправки, так и для приема.) В Windows 2000 (Professional или Server) и в Windows XP для службы Messenger задан по умолчанию тип запуска Automatic, поэтому вам ничего не нужно делать (в предположении, что все сотрудники отдела ИТ работают на компьютерах под управлением Windows 2000 или Windows XP).

Примечание. Не существует способа включать оповещения конкретно для ошибок BSOD. Оповещения имеют тип Boolean, поэтому если вы (ваш компьютер) являетесь получателем, то должны быть готовы к получению всплывающих сообщений и звуковых сигналов при каждом незапланированном событии на машине, для которой вы сконфигурировали оповещения.
Тестирование конфигурации с помощью принудительной ошибки BSOD

Имеет смысл проверить, что все сделанное вами для подготовки к разрешению проблем, вызывающих ошибки BSOD, будет действительно работать. Microsoft предоставляет способ принудительного вызова ошибки BSOD без причинения какого-либо ущерба вашему компьютеру. Вы можете выполнить этот тест, чтобы проверить, что оповещения, файлы дампов и журналы Event Viewer срабатывают должным образом.

Что происходит во время аварийных отказов

Прежде чем вызвать принудительную ошибку BSOD на своем компьютере, вы должны ознакомиться с тем, что происходит в этом случае, чтобы вы могли понять, охватывает ли ваша подготовка все необходимые области. В этом разделе кратко описывается, как выполняется процесс выдачи дампа.

Когда вы конфигурируете опции, описанные в предыдущих разделах, система Windows Server 2003 записывает эти настройки в реестр. Кроме элемента реестра, содержащего имена получателей оповещений (см. предыдущий раздел), реестр также содержит настройки для выбранных вами опций восстановления. Эти данные находятся в подразделе реестра HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Control\CrashControl.


Во время загрузки система Windows Server 2003 читает элементы данных в этом подразделе и подготавливает компьютер к поведению, указанному значениями этих элементов данных.

Параметр CrashDumpEnabled указывает тип файла данных.

  • 0 указывает отсутствие дампа.
  • 1 указывает полный дамп памяти (Complete Memory Dump).
  • 2 указывает дамп памяти ядра (Kernel Memory Dump).
  • 3 указывает малый дамп памяти (Small Memory Dump).

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

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

Когда происходит перезагрузка компьютера, Session Manager ( \%SystemRoot%\System32\smss.exe ) инициирует файл подкачки системы (это обычная процедура, см. в лекции 5 курса "Администрирование Microsoft Windows Server 2003" сведения о процессе загрузки). Одна из функций, действующих при инициализации файла подкачки, - это проверка того, что файл подкачки уже существует, содержит данные и имеет заголовок дампа. Если эти условия выполнены, когда Session Manager запускает logon manager ( \%SystemRoot%\System32\ winlogon.exe ), чтобы запустить процесс Winlogon, то Session Manager сообщает также процессу Winlogon, что существует дамп на случай аварийного отказа. Затем Winlogon автоматически выполняет программу savedump.exe, которая находится в %SystemRoot%\System32.

Savedump.exe читает заголовок дампа, чтобы определить, какие ответные действия должны быть выполнены в случае отказа. Если заголовок указывает, что дамп памяти существует, то savedump.exe копирует содержимое файла подкачки в файл для аварийного дампа, имя которого вы задали в диалоговом окне Startup and Recovery Options. Во время процесса копирования операционная система не может использовать часть файла подкачки, которая содержит аварийный дамп, поэтому вы теряете некоторую часть виртуальной памяти. (Если вы видите всплывающее сообщение об ошибке, где говорится, что системе не хватает виртуальной памяти, не обращайте на это внимания.) После копирования содержимого файла подкачки в файл дампа диспетчер памяти (memory manager) операционной системы освобождает часть файла подкачки, содержащую данные дампа. Кроме того, после копирования данных в файл дампа программа savedump.exe выполняет любые другие опции, указанные в диалоговом окне Startup and Recovery Options, такие как отправка административных оповещений или запись события в журнал System.

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

Принудительный вызов ошибки BSOD

Microsoft включила в Windows Server 2003 (в Windows 2000) средство, которое вызывает принудительный отказ компьютера и возникновение ошибки BSOD. Это средство легко устанавливать и использовать, и оно очень удобно для тестирования ваших настроек конфигурации восстановления. Чтобы принудительно вызвать ошибку BSOD, вам нужно внести изменение в реестр и затем применить комбинацию клавиш, которая (в сочетании с новой настройкой реестра) вызывает аварийный отказ компьютера.

Конфигурирование принудительной ошибки BSOD

Для настройки компьютера, чтобы он реагировал на принудительную ошибку BSOD, откройте Regedit и перейдите в подраздел HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\i8042prt\ Parameters. (Раздел i8042prt управляет портами клавиатуры и мыши, а подраздел Parameters содержит их базовые настройки.) Добавьте к этому подразделу новый элемент типа REG_DWORD с именем CrashOnCtrlScroll и задайте для него значение 1. Перезагрузите компьютер, чтобы начали действовать эти новые настройки (операционная система читает этот подраздел только при загрузке).

Принудительный вызов отказа компьютера

После перезагрузки компьютера не загружайте какое-либо ПО (формально вы можете это делать, но нет никакого смысла вызывать отказ вашего компьютера с открытым ПО, поскольку вы можете повредить это приложение). Удерживая правую клавишу CTRL, нажмите два раза клавишу SCROLL LOCK (это не сработает, если вы нажмете левую клавишу CTRL). Вы увидите синий экран со следующим сообщением STOP:

*** STOP: 0x000000E2 (0x00000000,0x00000000,0x00000000,0x00000000) 
A problem has been detected and Windows has been shut down to prevent damage 
to your computer. The end-user manually generated the crashdump.

(Обнаружена проблема, и система Windows была отключена, чтобы воспрепятствовать повреждениям на вашем компьютере. Конечный пользователь вручную вызвал crashdump.)

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

Вы можете также увидеть сообщение, указывающее, что содержимое памяти записывается на диск, а также возрастающее число, представляющее запись на диск. Если вы сконфигурировали компьютер для перезагрузки после сообщения STOP, он сделает это (в противном случае перезагрузите компьютер вручную). Если вы сконфигурировали оповещения, то во время перезагрузки данного компьютера (при загрузке ОС) компьютеры и/или пользователи, которые заданы как получатели оповещения, получат соответствующее сообщение (непосредственно перед запуском процесса входа пользователя).