Некоторое время  назад в статье "Восстановление работоспособности DHCP"  я уже отмечал, какое важное место занимает   DHCP в системах Windows 2000,  Windows NT и основанных на   этом протоколе сетях. Там же было приведено  несколько   советов,  представлены   утилиты, позволяющие поддерживать  работоспособность DHCP-серверов,  и описана техника   восстановления рабочего состояния этой службы после отказа. Теперь настала очередь поговорить о другой важной сетевой службе, WINS.

Как чаще всего случается при проведении восстановительных операций, возможность успешного восстановления работоспособности жизненно важных служб (а WINS – именно такая служба) зависит от того, насколько вы подготовлены к отказу. Самый квалифицированный эксперт в области восстановления системы и данных бессилен и мало чем сможет помочь, если отсутствует   резервная копия системы или ничего не известно о текущей рабочей конфигурации службы. Следовательно, нужно принять превентивные  меры на случай  неполадок в работе WINS.

Превентивные мероприятия

Разрешение имен (процесс преобразования имени в соответствующий адрес) – чрезвычайно важный процесс не только с точки зрения перевода имени NetBIOS в правильный адрес IP, это необходимо для нормального функционирования сети Windows. Устраните этот процесс - и в сети Windows станет невозможно работать. Несмотря на то, что WINS "выросла" из NetBIOS, она в равной степени важна для сетей Windows 2000 с активизированной службой Active Directory (AD), поскольку очень часто в этих сетях работают клиенты и приложения, зависящие от NetBIOS.

Если в организации активно используется WINS, необходимо  постоянно следить за состоянием этой службы. Грамотное техническое обслуживание гарантирует работоспособность как самой службы WINS, так и всей сети в целом. Одной из обязательных повседневных задач администратора должна стать проверка журнала System Event Log на всех WINS-серверах на предмет поиска записей, относящихся к работе WINS. Если таких серверов или записей оказывается слишком много, целесообразно подумать о фильтрации событий или покупке программы-монитора, ориентированной только  на работу с серверами WINS и записями WINS. Кроме того, следует  проверить, правильно ли   настроена регистрация событий WINS, чтобы уровень регистрируемых событий был адекватным   ситуации. По умолчанию и Windows 2000,  и Windows NT регистрируют события службы WINS в системном журнале - System Event Log, а для просмотра событий используется штатная программа Event Viewer.

Если по вине WINS все же возникла проблема,  и нужна более подробная информация о происшедшем, воспользуйтесь консолью WINS   сервера для регистрации дополнительных параметров службы. Консоль WINS Windows 2000 имеет вкладку Advanced в окне Properties. Выберите Log detailed events to Windows event log, как   показано на Рисунке 1. В консоли WINS в Windows NT нужно выбрать Server, Configuration, щелкнуть Advanced и выбрать параметр Log Detailed Events.

Подключение функции WINS Consistency Checking

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

1.   Если запись в локальной базе данных сервера WINS идентична той, которая извлечена из удаленной базы данных сервера – владельца записи, система обновляет временную метку записи на локальном сервере.

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

На Рисунке 2 показаны параметры для включения функции проверки целостности consistency-checking в системе Windows 2000. Если вы используете Windows NT WINS Manager, необходимо предварительно поменять некоторые значения в реестре. Эти значения находятся в разделе HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Wins\Parameters и предназначены для настройки службы WINS. Кроме того, можно дополнительно создать подраздел с именем ConsistencyCheck в разделе Parameters. Это приведет к тому, что WINS станет периодически выполнять проверку непротиворечивости своей базы данных. В Таблице 1 перечислены правильные названия параметров в подразделе ConsistencyCheck, их значения и тип данных по умолчанию, диапазоны возможных значений и описание назначения.

Будьте внимательны при  настройке проверки целостности через реестр, так как  здесь кроется потенциальная опасность,  ибо эта функция может захватить значительные ресурсы как на сервере WINS, так и в сети. Если в реестр добавлен подраздел ConsistencyCheck,  убедитесь, что заданные значения минимально нагружают сервер и сеть. Настраивая конфигурацию consistency-checking (т.е. устанавливая значения временных интервалов, максимальное число одновременно обрабатываемых записей), примите во внимание сетевую топологию, число серверов и клиентов WINS, а также число и пропускную способность WAN-связей, разделяющих WINS-серверы организации.

Помните, планируя запуск consistency checking,  нужно  постараться  минимизировать использование ресурсов сервера и сети, скажем, запускать тест во время наименьшей рабочей загрузки того и другого. На Рисунке 3 изображен пример раздела реестра на сервере WINS с добавленным подразделом ConsistencyCheck

Если есть возможность запустить оснастку Windows 2000 WINS (например, на административной станции Windows 2000), то ею можно воспользоваться для обслуживания серверов NT 4.0 WINS и получить преимущества графического интерфейса при использовании функции consistency checking. Другой способ инициировать проверку целостности на серверах NT WINS воспользоваться командой СС утилиты Winscl из состава Microsoft Windows NT Server 4.0 Resource Kit. О другом варианте проверки функции  рассказано во врезке  "Верификация зарегистрированных записей".

Утилита Jetpack

Службы WINS и DHCP (и Windows 2000, и Windows NT) используют  одну и ту же технологию управления базами данных - Microsoft Jet. Для превентивного сжатия базы данных WINS целесообразно использовать утилиту Jetpack, разработанную Microsoft специально для этих целей. Регулярное использование утилиты Jetpack полезно не только для поддержания минимального размера файла базы данных, но и как инструмент проверки ее состояния:  если Jetpack обнаруживает нарушение целостности данных, администратору базы данных  это станет известно. Синтаксис Jetpack следующий:

jetpack  

где database.mdb –  база данных, которая сжимается, tempdatabase.mdb – временный файл базы данных, используемый в процессе ее сжатия. Например, чтобы сжать базу данных WINS, перейдите в каталог WINS (\%systemroot%\system32\wins), остановите работу службы WINS и запустите программу Jetpack:

jetpack wins.mdb tmp.mdb

В приведенном примере говорится, что для   сжатия базы данных WINS Jetpack использует файл tmp.mdb в качестве временной базы данных.

Jetpack копирует записи из основной базы данных во временную, после чего удаляет оригинал и переименовывает временную базу, присваивая ей имя оригинальной (т.е. wins.mdb). Подробнее о Jetpack  рассказано в статье Microsoft "How to Use Jetpack.exe to Compact a WINS or DHCP Database".

Коды ошибок Jetpack приведены в статье Microsoft "Jetpack Error Codes for Windows 2000 and Windows NT 4.0". Если WINS работает в кластере, процедура сжатия данных выполняется  несколько иначе  это описано в статье "How to Use the Jetpack Utility on a Clustered WINS/DHCP Database".

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

Резервирование базы данных WINS

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

По умолчанию WINS автоматически создает резервную копию своей базы данных каждые 24 часа, хотя можно настроить  службу  на создание такой копии всякий раз при завершении работы (это может инициировать администратор системы, либо сетевая утилита обслуживания WINS). Версия консоли управления WINS - MMC Windows 2000 WINS – позволяет резервировать базы данных WINS всякий раз при остановке сервера WINS (соответствующий параметр присутствует на вкладке General в окне Properties сервера WINS). В NT для этого нужно выбрать сервер WINS,   команду Server, Configuration, щелкнуть Advanced и установить флажок Backup On Termination (см. Рисунок 4). Это приведет к тому, что WINS станет автоматически создавать резервную копию своей базы данных (wins.mdb) и двух файлов, имеющих к базе непосредственное отношение - j500000xx.log и wins.pat. Важное замечание: автоматическое резервирование, о котором идет речь, не начнется при выполнении штатного выключения сервера (server shutdown), пусть даже  при этом служба WINS   будет остановлена, как это обычно происходит при штатном выключении.

Резервирование WINS   выполняется и  вручную. Резервировать базу данных можно ежедневно, но для этого нужно использовать специальное программное обеспечение, позволяющее создавать резервные копии открытых файлов, иначе задание будет пропущено. По этой причине проще резервировать WINS во время остановки соответствующей службы. Если программа архивирования не поддерживает обработку открытых файлов,  возможно, придется предварительно запустить задание prebackup job (это может быть файл сценария или BAT-файл) для остановки WINS и postbackup job,  которое вновь запустит службу WINS. Если выбран режим Backup On Termination, система автоматически станет резервировать базу данных при остановке службы. Или администратор может остановить WINS, затем воспользоваться программой архивирования или простым копированием трех жизненно важных компонентов WINS  - файлов wins. mdb, j500000xx.log и wins.pat – в некий каталог по своему усмотрению.

Если WINS MMC запускается с того же самого сервера,  что и процедура резервирования данных, для выполнения поставленной задачи можно воспользоваться встроенной функцией резервирования. В оснастке WINS консоли MMC Windows 2000 этот пункт меню появляется при обращении к контекстному меню сервера в левой панели окна, а в NT аналогичная команда появляется при обращении к меню Mappings. Чтобы эту команду можно было использовать, необходимо включить регистрацию работы сервера WINS. Не  путайте названный параметр регистрации с флажками настройки регистрации обычных и дополнительных событий, речь о которых шла выше. В данном случае слово регистрация относится не к регистрации событий, а скорее к протоколированию транзакций и характеру использования журнального файла J50.log.

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

Всякий раз при выполнении резервного копирования WINS  его служба размещает резервируемые файлы в подкаталог \wins_bak\new, корневой каталог которого совпадает с каталогом резервирования базы данных WINS (задается на этапе установки WINS). Для NT путь к каталогу резервирования по умолчанию выглядит так: \%systemroot%\system32\wins\backup, таким образом, полный путь для резервируемых файлов - \%systemroot%\system32\wins\backup\wins_bak\new.

Для Windows 2000, однако, каталог резервирования по умолчанию иной - \%systemroot%\system32\wins (\wins, не \backup!). В результате такого различия возникает путаница, например, при переходе с NT на Windows 2000 или при использовании нестандартных путей. Кроме того, если администратор пытается вручную создать резервную копию базы данных WINS, а на сервере отсутствует путь к каталогу резервирования, принятый по умолчанию, утилита обслуживания WINS попросит указать соответствующий путь. Чтобы выяснить текущее местоположение каталога резервирования WINS, придется проверить настройки каждого WINS-сервера. Разработчики  Microsoft рекомендуют использовать в качестве каталога резервирования путь \%systemroot%\system32\wins. Как бы то ни было, старайтесь всегда использовать локальные диски и пути для каталога резервирования –  не указывайте сетевой путь и не используйте нотацию Universal Naming Convention (UNC).

Восстановление WINS

Если вы столкнулись с проблемой в работе WINS –  не имеет значения, кто об этом "сообщил" - рядовой пользователь или администратор системы, испорченные  данные в оснастке WINS консоли MMC или журнал событий System Log на сервере WINS –  сразу следует постараться устранить проблему. Если все дело в нескольких испорченных записях, попробуйте просто их удалить из базы данных.

Если проблема более серьезная,  и вы знаете коды ошибок или идентификаторы событий (Event ID) в системном журнале, попробуйте вначале отыскать описание конкретной ошибки по коду или ID в базе знаний Microsoft - Microsoft Support Knowledge Base.  Это позволит значительно сэкономить время поиска неисправности в работе WINS.

Если есть подозрения, что база данных WINS испорчена, попробуйте запустить утилиту Jetpack. Если Jetpack подтвердит ваши опасения или если необходимо вернуться  к альтернативной версии базы данных WINS, тогда следующий шаг – восстановление базы данных WINS.

Во-первых, остановите WINS на том сервере, на котором будет  выполняться   процедура восстановления. Можно воспользоваться одним из нескольких методов для решения относительно простой задачи восстановления базы данных WINS. Один из методов – запуск обслуживающей утилиты на сервере WINS и использование параметра Restore Local Database.

Восстановить базы данных WINS можно и вручную или с помощью имеющейся резервной копии. При проведении ручного восстановления выполните следующие действия:

1.    Остановите службу WINS.

2.    Удалите все файлы из каталога \%systemroot%\system32\wins (подкаталоги, если они имеются, не трогайте!).

3.    Чтобы создать пустую, чистую базу данных WINS, снова запустите службу WINS.

4.    Скопируйте три резервных файла (wins.mdb, j500000xx.log и wins.pat) из каталога резервирования в каталог \%systemroot%\system32\wins. Если система спросит, надо ли перезаписывать существующие файлы, ответьте Yes.

5.    Остановите WINS.

6.    Запустите оснастку WINS на сервере WINS и выберите команду Restore Local Database. Откройте окно резервного каталога. Убедитесь, что выбран корневой каталог подкаталога \wins_bak (т.е. \%systemroot%\system32\wins или \%systemroot%\system32\wins\backup).

7.    Запустите Jetpack для сжатия базы данных и проверки целостности восстановленной базы данных.

8.    Запустите WINS.

Более  подробно аналогичная процедура описана в статьях Microsoft "Recovering a WINS Database From Other Backup Sources"  и "Restoring a Windows 2000 WINS Database from Other Backup Sources", соответственно,  для систем Windows 2000 и NT.

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

Будьте предусмотрительны

Не найдетесь на авось и не ждите, пока WINS перестанет нормально  работать. Следуя  данным  выше рекомендациям, можно значительно повысить надежность работы WINS и уменьшить время простоя по вине этой жизненно важной сетевой службы.

Шон Дейли - один из редакторов журнала Windows NT Magazine и президент компании iNTellinet Solutions, занимающейся консалтингом и сетевой интеграцией. Имеет сертификат MCSE. Последней из его книг была «Optimizing Windows NT», выпущенная издательством IDG Books. С ним можно связаться по адресу: sean@ntsol.com.