Включение кэширования записи приводит к снижению быстродействия диска

Переводы статьи Переводы статьи
Код статьи: 332023 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Проблема

На компьютере под управлением одной из следующих операционных систем возможно снижение скорости определенных операций записи на жесткий диск после включения кэширования записи.
  • Windows 2000 с пакетом обновлений 3 (SP3)
  • Windows 2000 с пакетом обновлений 2 (SP2), если установлено исправление, описанное в следующей статье базы знаний Майкрософт:
    281672 Возможные потери данных после активации параметра «Включен буфер записи» (эта ссылка может указывать на содержимое полностью или частично на английском языке)
  • Windows XP
В частности скорость записи на жесткий диск ниже, чем на компьютере под управлением Windows 2000 с пакетом обновлений более ранней версии, чем 3 (SP3). Кроме того, скорость записи на совместно используемый диск на компьютере в составе кластера может значительно отличаться для каждого узла.

Причина

Windows 2000 с пакетом обновлений более ранней версии, чем 3 (SP3), содержит ошибку, которая предотвращает запуск определенных дисковых команд. Эти команды используются только по отношению к дискам с включенным кэшированием записи для немедленной записи критически важных данных на жесткий диск вместо того, чтобы временно хранить их в дисковом кэше с обратной записью.

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

После устранения ошибки путем установки исправления, описанного в статье 281672, по отношению к дискам с включенным кэшированием записи выполняются необходимые команды. Это исправление включено в пакет обновлений 3 (SP3) для Windows 2000 и (в несколько измененном виде) в состав Windows XP.

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

Решение

Компьютеры под управлением Windows 2000

Предупреждение. Установка исправления (установка обновленных драйверов и включение параметра Power Protected) приводит к отключению встроенной в дисковые драйверы Windows 2000 защиты, которая обеспечивала немедленную запись критически важных данных на диск вместо временного их расположения в дисковом кэше. Устанавливать исправление рекомендуется только в том случае, если компьютер и каждый из подключенных к нему жестких дисков защищен от случайного или непреднамеренного отключения питания, например, устройством с аварийным батарейным питанием. Для получения необходимых сведений обратитесь к продавцу компьютера или жесткого диска. Устанавливая исправление, необходимо осознавать связанный с этим риск. Предварительно убедитесь, что имеющееся оборудование по защите от перебоев с электроснабжением способно эффективно снизить риск потери данных. Кроме того, на компьютере в составе кластера различия между узлами в скорости записи на совместно используемые диски можно устранить, установив параметр кэширования записи Power Protected на каждом узле.

Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
281672 Возможные потери данных после активации параметра «Включен буфер записи» (эта ссылка может указывать на содержимое полностью или частично на английском языке)

Часть 1. Установка обновления для Windows 2000

Данная проблема может быть решена с помощью исправления, выпущенного корпорацией Майкрософт. Предлагаемое исправление должно применяться исключительно в системах, где наблюдается вышеописанная проблема. Данное исправление находится на стадии дополнительного тестирования. По этой причине корпорация Майкрософт рекомендует во всех случаях, когда проблема не представляет особой важности, отложить ее решение до выхода ближайшей версии Windows 2000 с пакетом обновлений, в которую будет включено решение описанной проблемы.

Чтобы немедленно получить исправление, обратитесь в службу технической поддержки корпорации Майкрософт. Полный список телефонов службы поддержки, а также сведения об условиях обслуживания см. на веб-узле Майкрософт по адресу:
http://support.microsoft.com/contactus/?ws=support
Английская версия исправления содержит версии файлов, приведенные в следующей таблице или более поздние. Дата и время указаны в формате единого всемирного времени (по Гринвичу). При просмотре сведений о файле в системе происходит перевод соответствующих значений в местное время. Чтобы выяснить разницу между временем UTC и местным временем, откройте вкладку Часовой пояс элемента «Дата и время» на панели управления.
   Дата         Время  Версия         Размер  Имя файла
   -------------------------------------------------------
   15-янв-2003  19:42  5.0.2195.6655  34 832  Classpnp.sys
   15-янв-2003  19:43  5.0.2195.6655  30 768  Disk.sys
				
Примечание. Несмотря на то что в данное исправление включены файлы более поздних версий, чем файлы из состава пакета обновлений 3 (SP3), исправление может быть установлено на компьютерах под управлением Windows 2000 с пакетом обновлений 2 (SP2) или 3 (SP3).

Часть2. Настройка параметра кэширования записи Power Protected

После установки обновления для Windows 2000 и перезагрузки компьютера (загружаются обновленные драйверы) необходимо включить параметр Power Protected на каждом диске с включенным кэшированием записи, кэш которого защищен от случайных перебоев с питанием. Установка обновления без включения параметра Power Protected не приводит к изменению поведения диска или улучшению его быстродействия.

Чтобы настроить параметр Power Protected для выбранного диска, воспользуйтесь средством Dskcache.exe (загружается отдельно). Дополнительные сведения о получении средства Dskcache.exe и настройке параметра Power Protected см. в следующей статье базы знаний Майкрософт:
811392 Средство Dskcache.exe для настройки параметра кэширования записи Power Protected
Примечание. Включить параметр Power Protected можно только для дисков, которые реально присутствуют в системе. По умолчанию параметр Power Protected отключен (следовательно, он отключен для добавляемых в систему дисков). Для вновь добавленного в систему диска параметр Power Protected необходимо включить отдельно.

Компьютеры под управлением Windows XP

Из-за отличий в архитектуре Windows 2000 и Windows XP в настоящее время не планируется выпуск аналогичного обновления для Windows XP.

Статус

Такое поведение является особенностью продукта.

Дополнительная информация

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

Для принудительной записи кэшированных данных на физический диск без откладывания используются две команды.
  • Команда flush buffers для дисков SCSI и IDE/ATAPI вызывает немедленную запись кэшированных данных на диск. Для дисков SCSI запускается команда SYNCHRONIZE CACHE, а дисков IDE/ATAPI – команда FLUSH CACHE. Как правило, запуск команды является результатом вызова программой Windows интерфейса FlushFileBuffers API. Примером операции, для выполнения которой вызывается интерфейс FlushFileBuffers API, а диску отправляется команда SYNCHRONIZE CACHE, является запись в системный реестр.
  • Команда Write Through (только для устройств SCSI) реализуется путем отправки диску команды WRITE с установленным битом FUA (ForceUnitAccess). Выполнение этой команды приводит к немедленной записи текущего пакета данных на диск в обход встроенного кэша записи. Зачастую это происходит при вызове программой Windows интерфейса WriteFile API для записи в файл, открытый с помощью вызова интерфейса CreateFile API с установленным флагом FILE_FLAG_WRITE_THROUGH. Антивирусные программы обычно открывают файлы с флагом FILE_FLAG_WRITE_THROUGH. Поддержка бита FUA не является обязательной. Эта функция реализована только в некоторых устройствах SCSI и FC (Fiber Channel) (как правило, отдельных дисках – в противоположность массивам RAID).
Выполнение этих команд позволяет повысить уровень безопасности критически важных данных за счет некоторого снижения быстродействия (достигаемого благодаря использованию встроенного кэша записи). Данные, которые немедленно не записаны на диск с помощью представленных команд, будут потеряны, а записываемый файл может быть поврежден в случае внезапного отключения питания диска.

В Windows 2000 с пакетом обновлений более ранней версии, чем 3 (SP3), эти команды отправляются диску неправильно. Так, команда SYNCHRONIZE CACHE не отправляется диску, когда программа вызывает интерфейс FlushFileBuffers, а бит FUA для команды WRITE не устанавливается, если файл открыт с флагом FILE_FLAG_WRITE_THROUGH. Установка исправления, описанного в статье базы знаний Майкрософт 281672, приводит к устранению ошибки, связанной с запуском команд, которые необходимы для защиты критически важных данных.

Примечание. Сервер Microsoft SQL Server широко использует флаг FILE_FLAG_WRITE_THROUGH для локальных баз данных, файлов журналов и файлов резервных копий. Данные локальной базы могут содержать информацию на дисках SCSI и SAN (кроме дисков NAS). Если параметр «Power Protected» не включен для устройства защиты кэширования сквозной записи, то при создании контрольной точки базы данных большого размера производительность сервера SQL Server может снижаться.

Настройка в диспетчере устройств параметра Включить кэширование записи приводит к выполнению следующих действий.
  • Диску отправляется команда включить (выключить) кэширование записи.
  • Создается параметр реестра, в соответствии с которым драйвер диска использует (или не использует) команды управления кэшированием записи на диск (Flush, Write-Through).
После установки описанного в этой статье исправления создается дополнительный параметр Power Protected. Когда включены оба параметра (Кэширование записи и Power Protected), дисковый кэш включается и распознается драйвером диска, однако драйвер не использует команд Flush и Write-Through. Это, с одной стороны, позволяет сохранить быстродействие, которое в противном случае снижалось бы за счет переноса данных из кэша на диск, а с другой стороны, приводит к возникновению риска потери или повреждения данных, которые находятся в кэше в момент перебоев с питанием.

В таблице кратко обобщены результаты использования параметров Кэширование записи и Power Protected.
Свернуть эту таблицуРазвернуть эту таблицу
Кэширование записи Power Protected
Описание
Отключен Нет данных Диск не производит кэширования записи.
Драйвер не отправляет команд Flush и Write-Through.
(Такое поведение возможно только в случае выключения кэширования записи на устройстве).
Включен Отключен Диск производит кэширование записи.
Драйвер отправляет команды Flush и Write-Through.
(Поведение по умолчанию после установки пакета обновлений 3 (SP3) и данного исправления при условии включения кэширования записи на диске).
Включен Включен Диск производит кэширование записи.
Драйвер не отправляет команд Flush и Write-Through.
(Поведение из-за ошибки, исправленной в пакете обновлений 3 (SP3), при условии включения кэширования записи на диске).

Свойства

Код статьи: 332023 - Последний отзыв: 11 сентября 2006 г. - Revision: 12.1
Информация в данной статье относится к следующим продуктам.
  • Microsoft Windows XP Professional
  • Microsoft Windows XP Home Edition
  • Microsoft Windows 2000 Service Pack 3
  • Microsoft Windows 2000 Server SP2
  • Microsoft Windows 2000 Service Pack 3
  • Microsoft Windows 2000 Professional SP2
  • Microsoft Windows 2000 Advanced Server SP3
  • Microsoft Windows 2000 Advanced Server SP2
  • Microsoft Windows 2000 Service Pack 3
Ключевые слова: 
kbautohotfix kbqfe kbhotfixserver kbhotfixserver kbqfe kbfix kbbug kbqfe KB332023

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com