Для обеспечения удаленного доступа к файлам в Windows 2000 применяется протокол Server Message Block (SMB). Когда клиент Windows 2000 Professional обращается к файлу, размещенному на сервере Windows 2000, он использует механизм оппортунистической блокировки (opportunistic locking, oplock) для помещения информации о файле в локальный кэш. Это гарантирует, что файл при открытии и использовании маркируется. Такой механизм кеширования позволяет сократить время, затрачиваемое клиентом на обращение к файлу. Технология OPLOCK также предотвращает одновременный доступ к файлу и его потенциальную модификацию до тех пор, пока первый пользователь не закончит работать с этим файлом и не закроет его. Когда первый клиент закрывает файл, сервер Windows 2000 обязан снять блокировку, для того чтобы к этому файлу мог обратиться другой клиент. Хотя на данную процедуру сервер затрачивает некоторое время, учитывая соотношение быстродействия клиента и сервера, обычно он все равно остается в выигрыше.

По умолчанию механизм OPLOCK включен в системах Windows 2000 Professional, но отключен на серверах Windows 2000. Как отмечается в статье Microsoft "Configuring Opportunistic Locking in Windows 2000" (http://support.microsoft.com/?kbid=296264), вы всегда можете активировать или деактивировать OPLOCK в системах Windows 2000 Professional, изменив соответствующим образом реестр по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\MRxSmb\Parameters\OplocksDisabled (тип значения - REG_DWORD). Система станет использовать OPLOCK, если значение OplocksDisabled установлено в 0, и отключает механизм блокировки, если это значение равно 1. Кроме того, на сервере можно установить, стоит ли принимать от клиентов запросы блокировки. Для этого используется параметр реестра по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\lanmanserver\parameters\EnableOplocks (тип значения - REG_DWORD). Когда значение EnableOplocks равно 1, сервер принимает запросы блокировки и не рассматривает их, если значение EnableOplocks равно 0. В названной выше статье приводятся дополнительные сведения о тонкой настройке реестра при работе с механизмом OPLOCK.

Если для создания образов клиента Windows 2000 Professional используется утилита Sysprep, то при копировании мастер-образа на две разные системы ошибка в коде утилиты приводит к тому, что на обеих системах в реестр прописывается один и тот же глобальный уникальный идентификатор (Globally Unique Identifier, GUID). Адрес реестра, по которому хранится GUID - HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\lanmanserver\parameters.

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

Microsoft выпустила программу коррекции для проблемы дублирования GUID в образах систем Windows XP меню Windows 2000. Программа коррекции для Windows 2000 стоила внесения изменений в 34 файла (дата выпуска большинства из них - 6 февраля). В XP был изменен файл службы srvsvc.dll (дата выпуска - также 6 февраля). Эти программы коррекции можно получить только через Microsoft Product Support Services (PSS). Ссылаться следует на статью Microsoft "Opportunistic Locking May Not Be Granted If Windows Is Installed by Using Sysprep" (http://support.microsoft.com/?kbid=812599).

Задержка регистрации при использовании Sysprep Image

Возможно, вы уже столкнулись с задержками, достигающими порой двух минут, при регистрации в системе, построенной при помощи Sysprep. В формируемом образе эта утилита неверно устанавливает некоторый параметр, который влияет на временной интервал полной загрузки объектов групповой политики Group Policy Object (GPO). В результате каждый раз при загрузке системы, созданной с помощью образа Sysprep, заново загружается полное содержимое GPO - следовательно, время регистрации напрямую зависит от сложности используемой в организации групповой политики.

Как отмечается в статье Microsoft "Logon Delays on Computers That Were Imaged by Using Sysprep.exe" (http://support.microsoft.com/?kbid=275702), параметр HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\ CurrentVersion\Winlogon\GPExtensions\{GUID}\ MaxNoGPOListChangesInterval описывает максимальный интервал в минутах между полной загрузкой GPO при условии, что эта политика не изменялась. Правильное значение (значение по умолчанию) составляет 960 минут (16 часов), однако мини-программа, запускаемая после окончания работы Sysprep, неверно устанавливает это значение в 1. Поскольку максимальный интервал в данном случае составляет всего 1 минуту, каждый раз при перезапуске система, созданная "по образу и подобию" Sysprep заново полностью загружает GPO. Microsoft не выпустила по этому поводу никаких исправлений. Очевидно, проблема устраняется вручную (или через сценарий) - изменением MaxNoGPOListChangesInterval и присвоением ему значения 960 минут.

Паула Шерик - редактор Windows 2000 Magazine и консультант по вопросам планирования, реализации и взаимодействия сетей. Ее адрес: paula@win2000mag.com.