Восстановление системы NT после сбоев при загрузке
WINDOWS 2000 MAGAZINE #03/99
Шон Дейли
Часть 2
| | В первой части моей статьи, опубликованной в предыдущем номере журнала, речь шла о наиболее распространенных причинах сбоев при загрузке Windows NT и о некоторых приемах, которые помогают предотвратить и быстро реанимировать систему после неудачного старта. На этот раз я расскажу еще о нескольких возможных причинах неудачной загрузки NT, а также других методах и средствах быстрого восстановления системы после сбоя. |
Будь готов
Основная рекомендация, данная читателям в предыдущей статье, заключалась в том, что готовиться к решению проблем следует задолго до того, как они появятся. Чтобы во всеоружии встретить неприятности завтрашнего дня, нужно сделать несколько подготовительных шагов уже сегодня. В нашем случае это и наличие проверенных процедур установки программного и аппаратного обеспечения, и создание нескольких резервных копий важнейшей информации о настройках, и подготовка специальных средств для выполнения восстановления. Все это послужит спасательным кругом в пучине нежданных напастей.
Не сомневаюсь, что большинство пользователей NT осознают важность наличия последней версии системной информации на диске восстановления Emergency Repair Disk (ERD). На этом диске содержатся копия системного реестра NT и критически важная информация, необходимая для проведения процедуры восстановления программой установки NT. Во многих организациях проводится регулярное резервное копирование системной информации и обновление дисков ERD для всех серверов. Однако выполнение этих процедур требует физического присутствия администратора сети для локального запуска на каждом сервере в организации утилиты rdisk.exe. Многие считают, что этот процесс слишком утомителен и только зря отнимает время.
ЭКРАН 1. Утилита ERDisk компании Aelita Software Group помогает удаленно собирать и обновлять информацию на дисках.
Вот так и получается, что иногда информация на диске ERD не отражает актуального состояния системы. Тем, кому эта ситуация знакома, рекомендую альтернативный метод сбора информации с систем Windows NT. Утилита ERDisk компании Aelita Software Group может собирать такую информацию по сети (см. Экран 1). Кроме сохранения информации ERD в любом заданном месте - на локальном или сетевом диске - программа ERDisk способна выполнять автоматический запуск командных файлов по заданному расписанию. Она также позволяет автоматически обновлять информацию на дисках ERD для всех NT-систем сети, снимая с администратора часть забот о наличии дисков восстановления с актуальной информацией.
Резервные копии: подальше положишь...
Постоянное обновление информации на дисках восстановления ERD для каждой системы NT является несомненно обязательным, но не единственным средством предохранения от бед. В предыдущей статье я уже говорил о методах создания и хранения резервных копий системного реестра. Например, утилита regback.exe из состава Windows NT Server 4.0 Resource Kit позволяет создавать копии индивидуальных файлов ветвей реестра в несжатом виде. Такие несжатые копии файлов реестра особенно удобны при необходимости заменить какую-либо ветвь реестра (более подробно об утилите regback.exe рассказано во врезке "Причуды regback.exe"). Однако здравый смысл подсказывает, что сохранение резервных копий данных системы на локальном жестком диске этой же системы не обеспечивает защиту от сбоев, поскольку сбой может произойти и с локальным диском. Скорее имеет смысл позаботиться о создании дополнительных (избыточных) копий, т. е. сохранении важных данных о конфигурации системы, например копии системного реестра Windows NT, на жестком диске другого компьютера, и наоборот. Иными словами, если говорить о резервных копиях, то чем их больше, тем лучше, а если хранить их перекрестно на других системах, то это совсем хорошо.
Неплохо было бы не только создавать резервные копии данных системного реестра, но и делать избыточные копии другой важной информации. Например, я периодически создаю резервные копии баз данных Microsoft Exchange Server (а именно dir.edb, pub.edb, priv.edb) в автономном режиме (с остановкой служб сервера Exchange на время резервного копирования) на другом сервере сети. Используемая мною программа резервного копирования имеет специальный модуль для создания копий баз сервера Exchange во время его работы, но опытным путем я определил, что полностью восстановить Exchange Server гораздо проще с помощью его недавней копии, созданной в автономном режиме (полностью восстанавливать Exchange Server приходится после проблем с жесткими дисками). Однако следует помнить, что предложенный метод только дополняет стандартный план восстановления системы после сбоя и ни в коей мере не заменяет основные способы (например, резервное копирование данных на магнитную ленту). Если нет желания тратить дефицитное дисковое пространство на хранение таких данных, можно копировать их на другие сменные носители: диски CD-R и CD-RW, картриджи Zip и Jazz, магнито-оптические диски и т. п. Лучше выбрать один из этих вариантов, поскольку утилита создания дисков ERD поддерживает только трехдюймовые дискеты, а это далеко не самый надежный носитель.
Автоматический запуск служб и драйверов
В первой части статьи я говорил о следующих типичных причинах сбоев при загрузке NT и появления "голубого экрана смерти".
- Установка программного обеспечения, при которой разрушается ветвь системного реестра HKEY_LOCAL_MACHINE. Это может происходить при попытках прикладной программы установить новую службу или драйвер.
- Некорректное изменение конфигурации сетевого оборудования, что может привести к созданию неверных сетевых привязок и ошибочной записи соответствующих им значений ключей в реестре.
- Загрузка некорректного файла приводит к разрушению исправного системного файла, который был загружен в память до момента сбоя.
Кроме того, я рассказал о методах решения таких проблем, в том числе о полной замене файлов ветвей системного реестра.
Сейчас стоит обсудить другую возможную причину появления сообщения STOP при попытке инициализации службы или драйвера. В этом случае проблему можно решить путем редактирования системного реестра, а не полной замены файла ветви реестра или всего реестра. Данное решение предпочтительнее и в том случае, если важно не потерять какие-либо параметры установки, или точно неизвестно, какой именно драйвер либо служба вызвали сбой.
В некоторых случаях ошибка возникает при инициализации службы или драйвера, загружающегося до модуля GUI (т. е. до того момента, как NT инициализирует драйвер видеосистемы и перейдет в графический режим). Та же ошибка появляется и после перехода системы NT в графический режим - это может случиться даже во время процедуры входа в систему или еще позднее, поскольку часть служб и драйверов инициализируется в фоновом режиме, уже после выдачи окна регистрации в системе. Такая ситуация возможна при установке новой службы или драйвера либо при переустановке самой системы Windows NT. Кроме этих случаев возможны варианты, когда вновь устанавливаемые программы либо пытаются запустить свои службы или драйверы, конфликтующие с имеющимися в системе NT, либо требуют пакета исправлений более поздней версии. Причиной сбоя при загрузке могут стать и некорректно проведенные изменения параметров установки ранее успешно загружавшихся драйверов и служб. Например, физическая смена сетевой карты без предварительного удаления драйвера предыдущей карты приведет к сбою при загрузке этого драйвера.
В другом случае сообщение об ошибке STOP появляется после изменения драйвера видеоплаты в системе с установленным программным обеспечением удаленного управления (например, Symantec pcANYWHERE32). Большинство таких программ настраиваются на имеющийся драйвер видеосистемы при установке, и проблема становится очевидной только при замене драйвера видеоплаты. Поскольку первоначальный драйвер уже не запускается, после перезагрузки система выдает сообщение об ошибке. В этом случае для корректной смены драйвера видеоплаты на системе сначала требуется удалить программу удаленного управления, поменять видеодрайвер и вновь установить программу удаленного управления.
Плата за грехи: переименование, перемещение или удаление файлов
Рассмотрим некоторые способы предотвращения ошибок, связанных с неправильной загрузкой службы или драйвера. Один из них - это переименование, перемещение или удаление соответствующего данной службе файла для предотвращения ее загрузки. Если известно имя файла, вызывающего такого рода ошибку, следует загрузиться в режим DOS, если тип основной файловой системы FAT, или в параллельную NT систему, если это NTFS. Далее необходимо временно переименовать исходный файл. В большинстве случаев этот способ устраняет сообщение об ошибке, но в установках NT остаются ссылки на несуществующий файл. Если идти таким путем, дальше потребуется переустановить службу или драйвер, или же полностью удалить их из системы при условии, конечно, что система NT загрузилась. Метод переименования не работает и может вызвать проблемы в случае наличия зависимых друг от друга служб или драйверов, как было продемонстрировано в предыдущем примере с программой удаленного управления.
Редактирование системного реестра в автономном режиме
Существует еще один способ решения проблем, связанных с загрузкой служб или драйверов. Это редактирование системного реестра с целью отключения неисправного драйвера или службы. Но как можно редактировать реестр, не загрузившись в NT? Имея альтернативный путь доступа к тому с первоначальной системой, можно редактировать реестр. Для получения доступа к данным реестра со стороны используется параллельная установка системы NT на том же компьютере либо подключение диска с системным разделом NT (содержащим системный каталог NT и файлы ветвей реестра) к компьютеру с другой системой NT.
Получить доступ к системному реестру через параллельно установленную на этом же компьютере систему NT гораздо проще, чем подключать диск к другому компьютеру, так как в данном случае можно избежать проблем, возникающих при физическом перемещении диска из одной системы в другую. Однако вне зависимости от типа файловой системы (FAT или NTFS), на которой размещается системный раздел, необходимо загрузить NT. Редактирование данных реестра осуществляется через редактор реестра NT Registry Editor, а он не может быть запущен вне системы NT. К сожалению, еще никто не придумал такого редактора реестра NT, который бы работал в другой операционной системе, например в DOS.
После того как доступ к файлам системного реестра первоначальной системы получен, можно начинать редактирование в автономном режиме. И хотя многие пользователи хорошо знакомы с редактором реестра NT Registry Editor, вероятно, не все знают о возможности открывать файлы реестра других установленных на этом компьютере NT-систем или создавать дополнительные ветви реестра с помощью редактора реестра системы. Для редактирования реестра в автономном режиме запускают regedt32.exe (утилита regedit.exe не поддерживает такой способ редактирования реестра), указывают ключ HKEY_LOCAL_MACHINE, затем вариант Load Hive в меню Registry редактора реестра и выбирают файл ветви реестра, который необходимо редактировать. Требуется изменить параметры запуска драйвера/службы; эта информация хранится системой NT в ветви реестра SYSTEM. После выбора нужного файла система попросит указать имя подключа, под которым будет храниться содержимое выбранного файла (cм. Экран 2). Эти действия не изменяют имя указанного файла ветви реестра и не оказывают никакого влияния на системный реестр системы Windows NT, которая была загружена. Кроме того, не имеет никакого значения имя, присвоенное ветви, поскольку редактор реестра использует его только для временного обозначения данных, загруженных из ветви реестра первоначальной системы. После присвоения имени дополнительная ветвь появится в окне HKEY_LOCAL_MACHINE.
ЭКРАН 2. Загрузка внешнего файла куста реестра в редактор regedt32.exe.
С этого момента уже можно редактировать ветвь SYSTEM реестра первоначальной системы и, соответственно, попытаться решить проблему неудачного старта. Как и при любой другой операции с системным реестром, вначале следует сделать резервную копию. Однако содержимое нового ключа, SYSTEM2 в данном случае, будет немного отличаться от того, что обычно находится под ключом SYSTEM. Доступными подключами ключа ControlSet будут только подключи ControSetxxx, где xxx - число типа 001. На экране не будет ключа CurrentControlSet, который появляется при редактировании реестра загруженной системы. Ключ не виден, поскольку это только псевдоним того ключа, который был использован при загрузке системы Windows NT.
ЭКРАН 3. Определение значений для наборов Current, Default, Last Known Good и Failed.
Чтобы удостовериться в том, что редактируется нужный подключ, а не задаваемый по умолчанию для параллельной установки, выбирается подключ Select вновь созданного ключа. В правой панели редактора реестра будет выведено несколько значений (см. Экран 3). Система NT использует эти параметры и их значения для того, чтобы выяснить, какой именно набор данных будет задаваться по умолчанию при старте (DefaulControlSet), какой является текущим (CurrentControlSet), какой будет определять набор LastKnownGoodMenu и какой был задействован при загрузке, когда произошел сбой. На Экране 3 значение параметра Current указывает на номер той конфигурации NT, которая была загружена при последней загрузке системы. Представленное этим параметром значение используется как номер набора данных CurrentControlSet. В большинстве случаев значения данного параметра и задаваемого по умолчанию одинаковы. В данном примере значение параметра Current равно 0x2. Это означает, что необходимо редактировать набор ControlSet002. После определения правильного набора данных можно изменить состояние службы или драйвера на момент загрузки системы.
ТАБЛИЦА 1: Значения параметров запуска для служб и драйверов устройств
Тип запуска | Значение для устройства (шестнадцатеричное) | Значение для службы (шестнадцатеричное) |
Boot (загрузка) | 0x0 | N/A |
System (система) | 0x1 | N/A |
Automatic (автоматически) | 0x2 | 0x2 |
Manual (ручное) | 0x3 | 0x3 |
Disabled (отключено) | | 0x4 0x4 |
Значения параметров реестра, связанные с установленной службой или драйвером первоначальной системы, находятся в значениях ключа HKEY_LOCAL_MACHINE\SYSTEM2\ControSet00x\имя подозрительной службы или драйвера. В этом ключе SYSTEM2 ссылается на подключ в представленном примере, ControSet00x соответствует тому набору данных, который был определен по процедуре, приведенной выше, а имя подозрительной службы или драйвера - службе или драйверу, который предположительно вызывает сбой. Для каждой из перечисленных в подключе Services служб (или драйверов) хранится несколько значений. В их числе значение параметра Start (значение типа REG_DWORD). Значение этого параметра определяет текущее состояние данной службы или драйвера при старте системы. Присваивание параметру Start значения 0х4 деактивирует данную службу или драйвер, и NT не будет загружать его при старте системы. В Таблице 1 перечислены все возможные значения параметра Start для служб и драйверов устройств. После того как редактирование реестра в автономном режиме будет закончено, необходимо выгрузить импортированный ранее файл ветви реестра. Это делается указанием ветви с присвоенным ранее именем и выбором опции Unload Hive в меню Registry редактора реестра.
После деактивации старта службы или драйвера первоначальной установки системы NT можно успешно изолировать дефектный элемент системы, мешающий корректной загрузке. Определить, какая именно служба (или драйвер) вызвала сбой, можно экспериментально. Дополнительную информацию, которая поможет выявить проблемный компонент системы, можно почерпнуть из журналов регистрации событий и сообщений об ошибках.
Полезные утилиты
Рассказ о методах восстановления систем NT будет неполным без упоминания об утилитах производства независимых компаний, значительно облегчающих этот процесс. ERD Commander и Remote Recover компании Winternals Software, а также NTRecover от Systems Internals относятся к числу весьма полезных программных продуктов производства ведущих поставщиков программ восстановления. И хотя каждая из этих утилит упрощает процесс восстановления разрушенной системы NT, в них используются различные подходы, и они обладают разными возможностями. Так, NTRecover компания Systems Internals позволяет получить доступ к жесткому диску не загружающейся системы через последовательный порт с работоспособной машины. После установления соединения можно копировать и удалять файлы, запускать программу проверки диска Chkdsk или антивирусную программу на жестком диске удаленной системы. В большинстве случаев возможностей программы будет вполне достаточно для успешного восстановления незагружающейся системы.
ERD Commander - мечта администратора NT, ставшая явью. Тот, кто целыми днями мучается с установочными дискетами DOS или Windows 95 несомненно оценит ее по достоинству. Утилита с интерфейсом в виде командной строки загружается с простой трехдюймовой дискеты и может читать и записывать на тома с NTFS. На Экране 4 показан интерфейс утилиты ERD Commander.
ЭКРАН 4. Выполнение операций восстановления утилитой ERD Commander.
Профессиональная версия данной программы предоставляет дополнительные возможности, такие, как поддержка избыточных наборов дисков (наборы дисков, поддерживаемые драйвером NT ftdisk.sys), способность запуска Chkdsk, восстановление утраченных паролей, чтение дисков с FAT32, а кроме того, возможность работы с утилитой Expand и параметры командной строки, которые позволят выборочно управлять начальным состоянием служб и драйверов или деактивировать их.
Remote Recover - новейшая разработка компании Winternals. Эта программа со своим загрузочным диском, который включает в себя сетевой драйвер спецификации NDIS2, позволяющий обеспечить удаленный доступ к томам NTFS не стартующей системы по сети. После получения доступа к файлам системы можно выполнять процедуры восстановления, подобные NTRecover и ERD Commander.
Роль аппаратного обеспечения
Давать какие-либо советы по восстановлению систем после сбоев достаточно опасно. Так, первое, что приходит на ум при виде "голубого экрана смерти" в ходе установки системы NT, это мысль о проблемах с программным обеспечением. Но реальным виновником может быть и неисправное оборудование, и просто сбой в работе какого-либо элемента системы (например, жесткого диска или его контроллера, ошибки в работе оперативной или кэш-памяти, неверно выбранные параметры в установках BIOS). Т. е. ни в коем случае нельзя исключать вероятность того, что сбой в работе аппаратуры может привести к появлению "голубого экрана смерти" и сообщения об ошибке, относящегося к работе программного обеспечения.
Об этой возможности особенно важно помнить при добавлении нового аппаратного компонента в систему или в том случае, если наблюдались сбои в подаче электропитания (полное отключение электричества, броски напряжения и т. д.). Предположим, что на прошлой неделе в сервер была установлена новая факс-плата, и во время тестирования все работало замечательно. Но неделю спустя появились "голубой экран смерти" и сообщение STOP, причем оно не ссылается ни на проблемы с вновь установленным драйвером или службой, ни на неполадки с факс-платой. Причиной такого явления могут быть порождаемые новой факс-платой ошибки взаимодействия с другими платами в компьютере или некорректность работы драйвера, которая возникает только при высоком сетевом трафике. В подобной ситуации круг виновников нарушения работы NT можно примерно определить. Но если попытаться решить проблему, вызванную неисправной аппаратурой, средствами, предназначенными для исправления ошибок, связанных с программным обеспечением (восстановление реестра или даже переустановка NT), можно надолго увязнуть в бесплодных попытках восстановления системы.
Под лежачий камень...
Итак, в своих статьях я рассказал о передовых методах и полезных утилитах, которые имеет смысл применять в экстремальной ситуации, если вдруг система Window NT не загрузится. Что более важно, я описал превентивные меры, которые можно предпринять уже сейчас, дабы увеличить вероятность успешного восстановления системы при сбое и сэкономить время, которое придется потратить на решение возникших проблем. В документации компании Microsoft, как обычно, предлагается воспользоваться программой установки системы NT с параметром Repair или восстановить последнюю рабочую конфигурацию системы, выбрав вариант LastKnownGoodConfiguration при начальной загрузке. Но, к сожалению, эти меры недостаточно эффективны. По большому счету, если активно готовиться к возможным авариям, используя в том числе описанные в статье методы, подобной рекомендацией от Microsoft не придется воспользоваться никогда.
Об авторе
Шон Дейли - один из редакторов журнала Windows NT Magazine и президент компании iNTellinet Solutions, занимающейся консалтингом и сетевой интеграцией. Имеет звание MCSE. Последней из его книг была Optimizing Windows NT, выпущенная издательством IDG Books. С ним можно связаться по адресу электронной почты sean@ntsol.com.
Причуды regback.exe
Regback.exe - одна из самых полезных утилит, поставляемых в составе Microsoft Windows NT Server 4.0 Resource Kit. Однако она имеет некоторые изъяны. Основной недостаток связан с тем, как утилита обращается с частью реестра, содержащей установки текущего пользователя (а именно HKEY_CURRENT_USER) при создании резервной копии. Regback.exe выводит имена файлов ветвей системного реестра, копии которых она создает (например, SOFTWARE, SYSTEM, SECURITY).
РИСУНОК 1. Пример последовательности сообщений программы Regback.exe.
C:\REGBACK>regback 072899.PRE
saving SECURITY to 072899.PRE\SECURITY
saving SOFTWARE to 072899.PRE\software
saving SYSTEM to 072899.PRE\system
saving .DEFAULT to 072899.PRE\default
saving SAM to 072899.PRE\SAM
***Hive = \REGISTRY\USER\S-1-5-21-36516332-637091160-1803697834-1001
Stored in file \Device\Harddisk1\Partition2\WINDOWS\Profiles\Sean\NTUSER.DAT
Must be backed up manually
regback <filename you choose> users S-1-5-21-36516332-637091160-1803697834-1001
C:\REGBACK>regback NTUSER.DAT users S-1-5-21-36516332-637091160-1803697834-1001
saving S-1-5-21-36516332-637091160-1803697834-1001 to NTUSER.DAT
На Рисунке 1 показана последовательность сообщений, выводимых утилитой regback.exe. Но, кроме этого, она сообщает о невозможности создания копии файла ветви реестра с именем ntuser.dat, хранящего настройки системы текущего пользователя. Приходится делать копию этого файла вручную. Если не задействован профиль пользователя, хранящийся централизованно на сервере, то для сохранения ваших настроек системы придется это делать обязательно. Инструкции по сохранению файла ntuser.dat, приведенные на Рисунке 1, выглядят устрашающе, тогда как сам процесс достаточно прост. Нужно щелкнуть правой кнопкой мыши в левом верхнем углу окна с командной строкой и воспользоваться опциями появившегося меню Edit, Mark и Edit, Copy для формирования верной команды. Или же можно сконфигурировать окно командной строки для работы с функцией QuickEdit, которая позволяет проводить операции выделения, копирования и вставки с помощью мыши. Необходимо скопировать строку сообщения, которую утилита regback.exe выводит в качестве примера (например, regback users S-1-5-21-36516332-637091160-1803697834-1001), и вставить ее в командную строку. Надеюсь, что в дальнейшем Microsoft исправит этот недостаток, а пока можно воспользоваться предлагаемой последовательностью действий.
<<< Назад