Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #106, ОКТЯБРЬ 2007 г.

Реставрируем окна

Крис Касперски

Хакер, номер #106, стр. 158

Восстановление Windows Server 2003 после тяжелых ранений

Windows Server 2003 – достаточно надежная и неприхотливая система, средняя наработка на отказ которой составляет несколько лет. Для борьбы с падениями народ вовсю использует Norton Ghost, Acronis TrueImage и другие платные утилиты, плохо работающие (или совсем не работающие) со SCSI-дискам/RAID-массивами, а о штатном MS Backup никто и слушать не хочет — все сразу начинают махать руками и гнать волну. Плох же тот мастер, кто не знает свой инструмент! Мыщъх использует MS Backup уже более семи лет и со всей ответственностью заявляет, что это отличное средство восстановления системы, обладающее огромным скрытым потенциалом, о котором мы сейчас и расскажем.

Почему падает Win2k3? Причины на самом деле различны, и если попытаться огласить весь список, то получится здоровенный талмуд, поэтому перечислим лишь наиболее значимые из них:

  • установка «кривого» программного обеспечения (пакетов обновлений, прикладных приложений, драйверов и т.д.), вызывающая конфликты разной степени тяжести и/или ведущая к разрушению критически важных структур данных;
  • сбои питания и/или дефекты оборудования, нарушающие целостность системного кода/данных;
  • вирусные эпидемии и хакерские атаки, завершающиеся внедрением нестабильно работающего руткита;
  • ошибки оператора, удалившего жизненно важные системные файлы, отключившего базовые службы или сделавшего другую глупость.

Также приходится сталкиваться с физическими отказами жесткого диска, контроллера RAID-массива, разрушением главной загрузочной записи, boot-сектора и другими катастрофами планетарного масштаба, требующими для восстановления данных не только соответствующих навыков, но и (в ряде случаев) весьма дорогостоящего оборудования.

К счастью, такие происшествия случаются нечасто. В наших рассуждениях мы будем исходить из того, что жесткий диск (RAID-массив) на аппаратном уровне функционирует исправно, файловая система цела (или может быть вылечена штатной утилитой chkdsk), а пострадала лишь сама операционная система, причем тяжесть разрушений колеблется от нестабильной работы до полного отказа загружаться. Более сложные случаи восстановления мы не рассматриваем, отсылая читателя к серии статей «Восстановление данных на NTFS-разделах» и к книгам «Техника восстановления данных» («Data recovery tips and solutions»), электронные копии которых лежат на мыщъх’ином сервере: http://nezumi.org.ru/recover.zip, http://nezumi.org.ru/recover-full-rus.zip, http://nezumi.org.ru/recover-full-eng.zip. Они, естественно, совершенно бесплатны.

Хочется еще раз напомнить читателю, что залогом сохранности данных была и остается резервная копия, о технике создания которой мы и будем говорить. При нынешних ценах на сменные носители отсутствие резервной копии может объясняться лишь полной безответственностью системного администратора или неумением автоматизировать процесс резервирования. Но объяснение — это еще не оправдание! Приговором (в случае разрушения) становится кропотливая работа по ручному восстановлению «осколков» данных, когда файлы приходится собирать буквально по кусочкам. И стоит эта работа намного больше носителей для резервного копирования. Добавь сюда простой организации на время восстановления, и ты поймешь, почему в этой статье мы будем говорить только об утилите MS Backup, оставив остальные способы восстановления за кадром.

Создание резервной копии

Набираем в командной строке «ntbackup.exe» (именно «nt», а не «ms») и дожидаемся запуска. Поклонники графических сред и мыши могут пойти другим путем: «My Computer -> Any Disk -> Properties -> Tools -> Backup Now».

Сразу пропускаем главное окно приложения с большими прямоугольными кнопками, вызывающими различных мастеров (no kidding!), и переходим непосредственно к вкладке Backup.

Здесь отмечаем галочкой пункт System State («Состояние системы»), форсирующий архивирование следующих компонентов (перечисленных в колонке справа): загрузочные файлы, реестр и классы COM+. К сожалению, мы не можем влиять на выбор компонентов, что есть большая вселенская несправедливость, поскольку в подавляющем большинстве случаев система выходит из строя из-за разрушения реестра или классов.

Указываем путь к файлу архива в строке «Backup media of file name» и нажимаем Start Backup, после чего у нас запросят описание/метку архива (backup description/label) и способ его создания: append (дозапись в конец) или replace (замещение старых данных). Исходя из своего личного опыта, мыщъх рекомендует не класть все яйца в одну корзину, то есть всегда создавать архивный файл заново, отказавшись от идеи дозаписи в его конец, поскольку это чревато целым рядом различных проблем.

Нажав кнопу Advanced («Дополнительные опции»), мы можем выбрать тип архива: normal (полная архивация со снятием атрибута «Архивный»), copy (полная архивация без снятия атрибута «Архивный»), incremental (архивирование только измененных или вновь созданных файлов), differential (то же самое, что incremental, только без снятия атрибута «Архивный»), daily (архивирование файлов, измененных в течение дня). Последние 3 типа для восстановления требуют архивы normal/copy и всю цепочку incremental/differential/daily, что часто приводит к путанице и снижает вероятность успешного восстановления, особенно если хотя бы один из архивов поврежден, так что мыщъх рекомендует всегда выбирать тип normal, несмотря на то что он требует больше времени, чем последние 3.

Галочка «Verify data after backup» («Проверка целостности данных после архивирования») при резервировании на жесткий диск бессмысленна, и поэтому ее лучше не взводить, а вот «Automatically backup System Protected Files with the System State» («Автоматически архивировать защищенные системные файлы вместе с состоянием системы») лучше оставить взведенной по умолчанию.

Наконец, после нажатия на кнопку Start Backup начинается процесс архивации, занимающий (в зависимости от быстродействия системы) от нескольких минут до получаса. На выходе мы получаем bkf-файл размером порядка 400 Мб; точный размер зависит от версии системы, количества установленных заплаток, драйверов и приложений, но в своей практике мыщъх еще не сталкивался с тем, чтобы bkf-файл (типа replace) не влезал на один диск CD-R/RW, не говоря уже о DVD-R/RW. Хранить на жестком диске архив небезопасно. Впрочем, как показывает практика, оптические носители сыпятся еще чаще, так что несколько копий никому не помешает.

ОК, мы имеем архив состояния системы, и, если вдруг Win2k3 начнет вести себя нестабильно, мы всегда сможем выполнить откат. Приложения и драйверы, установленные после создания архива, в большинстве случаев отката не переживут (это зависит от того, в какие ключи реестра они себя прописывают) и потребуют переустановки. Поэтому вырабатываем следующую стратегию поведения. Создаем архив системы. Устанавливаем новое приложение/драйвер/заплатку. Тестируем сервер в течение некоторого времени (например, недели). Если полет нормальный, создаем новый архив системы, а старый удаляем. Если же после установки приложения/драйвера/заплатки появляются глюки, которые не устраняются деинсталлятором, выполняем принудительный откат через MS Backup. Эта бесхитростная схема позволила мыщъх’у продержать пару серверов и пяток рабочих станций более семи лет без переустановки системы.

Простые случаи восстановления

Система глючит, работает нестабильно, но все-таки загружается, позволяя нам запустить MS Backup и выполнить откат к стабильному архиву. Если же Win2k3 зависает или выбрасывает голубой экран на стадии загрузки, попробуй при запуске нажать <F8> и выбрать Safe Mode (или Safe Mode with Networking, если хранишь архивы на отдельном сервере, как, например, поступает мыщъх). Также можно попробовать выбрать пункт Last Known Good Configuration («Загрузка последней удачной конфигурации»).

В общем, нужно любым способом добиться загрузки системы. После этого запускай ntbackup и не мешкая (ведь система может упасть в любой момент) переходи к вкладке Restore and Manage Media («Восстановление и управление носителями»). Здесь находится перечень всех bkf-архивов с описаниями и метками, которые мы только успели создать. Достаточно распахнуть соответствующую ветвь в левом окне, выбрав самый свежий архив, и установить галочку напротив System State. По умолчанию архив ищется в той локации, где он был создан, но мы можем изменить путь, нажав кнопку Browse и указав, к примеру, лазерный диск (примечание: для ускорения процедуры восстановления рекомендуется предварительно скопировать bkf-файл с CD/DVD на HDD).

В поле «Restore files to:» («Куда восстанавливать») оставляем значение по умолчанию —Original location («Исходная локация») и нажимаем кнопку Start Restore, запуская процесс восстановления.

После перезагрузки мы получаем нормально работающую систему.

Тяжелые случаи восстановления

Представим себе, что система не загружается. Ну не загружается и все тут! Хоть грызи свой хвост, хоть бейся зубами об лед! Большинство администраторов, вылакав пол-литра корвалола, просто переустанавливают Винду поверх старой или - даже страшно сказать — с нуля, забыв о том, что MS Backup (который все ругают!) может ускорить эту работу в сотни раз!

Находим машину с любой стабильно работающей NT-подобной системой (Win2k, WinXP, Win2k3, на счет Вислы мыщъх, правда, не уверен). Вставляем туда CD/DVD с архивом, запускаем MS Backup, переходим во вкладку Restore and Manage Media и (внимание!) в поле «Restore files to:» выбираем пункт Alternative location («Альтернативное размещение»), указав любую папку, например C:\TEMP\Server2003. Нажимаем Start Restore и получаем копию системы, только в другом месте.

Теперь подумаем, как перетащить все эти файлы на восстанавливаемый Win2k3. Решения на самом деле всего 3. Первое - снять жесткий диск с сервера и подключить его к рабочей машине вторым, после чего скопировать все файлы из папки Server2003 в каталоги Windows и (опционально) Program Files. Внимание: файлы ntdetect.com и ntldr должны находиться в строго определенных местах диска, и потому их лучше не копировать, иначе система вообще перестанет загружаться.

Естественно, если на сервере установлен хитрый SCSI или RAID, то подключить его к рабочей станции не удастся, и в этом случае придется воспользоваться LiveCD, поддерживающим NTFS (например, Knoppix или Windows PE).

Если же RAID настолько хитрый, что его не видит даже LiveCD, то к рухнувшему серверу подключаем еще один жесткий диск, устанавливаем на него Win2k3 (со всеми необходимыми SCSI/RAID-драйверами), перетягиваем туда по сети или через CD/DVD разархивированные файлы и осуществляем перезапись.

Как показывает практика, в подавляющем большинстве случаев для восстановления системы достаточно переписать всего лишь реестр и классы, находящиеся в папках: \temp\server-2003\Registry и \temp\server-2003\COM+ Class Registration Database. Скопируй их в каталог \WINDOWS\system32\config поверх уже существующих файлов и перезагрузись.

Вот, собственно говоря, и все. При правильной организации вопроса восстановление системы, которая даже не загружается, занимает не более 10-15 минут, расходуемых главным образом на распаковку bkf-архива. Если же эту операцию выполнить заблаговременно, то на загрузку с LiveCD с последующим копированием реестра не уйдет и пяти минут!

Ремонт bkf-архивов

Не то чтобы часто, но все-таки случается, что MS Backup не может открыть bkf-файл, который сам же и создал. Причины тому могут быть самые разные, но нас сейчас не это волнует. Единственная копия архива, и та нерабочая! Как быть? Что делать? А на экран тем временем выдаются следующие малоприятные сообщения:

  • «The backup file is unusable. You must erase it, or choose another file» («Архивный файл не может быть использован, Вы должны очистить его или выбрать другой файл»).
  • «The fixed media is full. You cannot back up all of the specified data to this disk device. The backup operation will stop» («Несъемный носитель заполнен, Вы не можете сохранить все указанные файлы на этом устройстве, операция архивации будет остановлена»).
  • «The backup file contains unrecognized data and cannot be used» («Архивный файл содержит нераспознанные данные и не может быть использован»).
  • «An inconsistency was encountered on the requested media» («Архивный файл несовместим с данным носителем»).

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

Вот ссылки на производителей платных и бесплатных утилит: www.bkffilerecovery.com, www.recoverdatatools.com/ms-backup-recovery.html, www.msbackuprecovery.net. Какую из них выбрать — вопрос вкуса. Лично мыщъх предпочитает коммерческий пакет Kernel BKF Recovery от Nucleus Data Recovery. Другие пакеты не тестировал, так что о них ничего сказать не может.

Заключение

Рассмотрев вопросы, связанные с восстановлением системы, мы оставили за бортом проблему архивации пользовательских данных и документов, также решаемую посредством MS Backup, причем не только в ручном режиме, но и, например, по расписанию. Однако стратегия резервирования пользовательских данных выходит далеко за рамки темы нашего сегодняшнего разговора и определяется главным образом политикой компании. Кто-то предпочитает держать все документы на сервере, используя системы контроля версий, не только обеспечивающие банальную архивацию, но и хранящие историю изменений, что крайне важно при совместной работе с документами. Другие же хранят документы на рабочих станциях пользователей. Глупость, конечно, вернее, не глупость, а огромная головная боль для администратора, но именно благодаря ей создается децентрализованная система, способная функционировать даже при крахе сервера. В общем, вариантов много. А MS Backup – всего лишь архиватор со встроенным планировщиком. Но для поддержания сервера на плаву ничего другого и не надо!

Что находится внутри системного архива

Чтобы лучше понять возможности (и ограничения!) MS Backup, необходимо знать, какие именно файлы она резервирует при сохранении системы:

  • некоторые ветви реестра, сосредоточенные в файлах system, software, security, sam, default, ComRegDb.bak, образующие ветвь HKEY_LOCAL_MACHINE (остальные ветви реестра не сохраняются);
  • практически все содержимое папок Sytem32 и System (стратегия отбора файлов не совсем понятна, похоже, берутся все жизненно необходимые компоненты плюс некоторые файлы, относящиеся к установленным приложениям сторонних разработчиков);
  • некоторые важнейшие файлы и папки из каталога Windows (например, AppPatch, msagent, MICROSOFT.NET и т.д.);
  • отдельные файлы и папки из каталога PROGRAM FILES (например, COMMON FILES, Internet Explorer, Outlook Express и т.д.);
  • содержимое каталога RSA\MachineKeys из папки DOCUMENTS AND SETTINGS\ALL USERS\APPLICATION DATA\MICROSOFT\CRYPTO, содержащее ключи шифрования (если, конечно, таковые имеются).

Остальные файлы (в том числе и пользовательские учетные записи) не сохраняются, хотя ничего не мешает указать их вручную, проставив соответствующие галочки напротив папок DOCUMENTS AND SETTINGS\<Имя пользователя>.

Полезный совет

Достаточно часто причиной сбоев системы становится повреждение учетной записи администратора (может возникнуть, например, из-за порчи ветви реестра HKEY_CURRENT_USER, которую, кстати говоря, MS Backup не архивирует). Иногда доходит до того, что администратора вообще не пускают в систему, и приходится использовать различные утилиты для восстановления пароля администратора или же переустанавливать ОС, что отнимает уйму времени и нервов.

Но есть более простой путь: достаточно создать несколько учетных записей для пользователей, входящих в группу «Администраторы», и, если поломалась одна учетная запись, воспользоваться другой, благо на сервере учетные записи администраторов обычно не содержат никаких уникальных персональных настроек.

Содержание