Оппортунистические блокировки

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

Примечание

Статьи об оппортунистических блокировках, найденные в этом разделе, относятся в основном к клиентским приложениям, хотя некоторые сведения предоставляются для перенаправителей сети. Дополнительные сведения о блокировке для сетевых перенаправителей см. в статьях Windows WDK Oplocks .

Общие сведения

Оппортунистические блокировки координируют кэширование данных и согласованность между клиентами и серверами, а также между несколькими клиентами. Согласованные данные — это одинаковые данные по сети. Другими словами, если данные согласованы, данные на сервере и всех клиентах синхронизируются.

Оппортунистические блокировки не являются командами клиента для сервера. Это запросы от клиента к серверу. С точки зрения клиента они являются оппортунистическими. Другими словами, сервер предоставляет такие блокировки всякий раз, когда другие факторы делают их возможными.

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

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

Максимальное количество одновременных оппортунистических блокировок, которые можно создать, ограничено только объемом доступной памяти.

Локальные приложения не должны пытаться запрашивать оппортунистические блокировки с удаленных серверов. Если будет предпринята попытка сделать это, DeviceIoControl возвратит ошибку.

Оппортунистические блокировки очень ограничены для приложений. Единственным практическим применением является тестирование перенаправителя сети или серверного оппортунистического обработчика блокировки. Как правило, файловые системы реализуют поддержку оппортунистических блокировок. Как правило, приложения оставляют управление блокировками в драйверах файловой системы. Любой пользователь, реализующий файловую систему, должен использовать комплект устанавливаемой файловой системы (IFS). Любой, кто разрабатывает драйвер устройства, отличный от устанавливаемой файловой системы, должен использовать комплект драйверов Windows (WDK).

Оппортунистические блокировки и связанные с ними операции являются надмножеством части оппортунистической блокировки протокола Common Internet File System (CIFS), internet draft. Протокол CIFS — это расширенная версия протокола SMB. Дополнительные сведения см. в разделах Microsoft SMB Protocol и CIFS Protocol Overview. В проекте CIFS в Интернете явно указывается, что реализация CIFS может реализовать оппортунистические блокировки, отказываясь предоставлять их.

В следующих разделах описаны оппортунистические блокировки.

В этом разделе

Раздел Описание
Локальное кэширование Локальное кэширование данных — это метод, используемый для ускорения сетевого доступа к файлам данных. Она включает кэширование данных на клиентах, а не на серверах, когда это возможно.
Когерентность данных Если данные согласованы, данные на сервере и всех клиентах синхронизируются. Одним из типов программной системы, обеспечивающей когерентность данных, является система управления редакциями (RCS).
Как запросить оппортунистическую блокировку Оппортунистические блокировки запрашиваются путем открытия файла с разрешениями и флагами, соответствующими приложению, открываемого файл. Все файлы, для которых будут запрашиваться оппортунистические блокировки, должны быть открыты для перекрывающихся (асинхронных) операций.
Ответ сервера на открытые запросы к заблокированным файлам Вы можете свести к минимуму влияние приложения на другие клиенты и их влияние на приложение, предоставив как можно больше общего доступа, запросив минимальный необходимый уровень доступа и используя наименее навязчивую оппортунистическую блокировку, подходящую для вашего приложения.
Типы оппортунистических блокировок Описывает уровни 1, уровень 2, пакетные и фильтровые оппортунистические блокировки.
Нарушение оппортунистических блокировок Нарушение оппортунистической блокировки — это процесс снижения производительности блокировки, которую один клиент имеет в файле, чтобы другой клиент смог открыть файл с оппортунистической блокировкой или без нее.
Примеры оппортунистических блокировок Схемы представлений сетевого трафика для оппортунистической блокировки уровня 1, пакетной оппортунистической блокировки и оппортунистической блокировки фильтра.
Оппортунистические операции блокировки Если приложение запрашивает оппортунистические блокировки, все файлы, для которых оно запрашивает блокировки, должны быть открыты для перекрывающихся (асинхронных) входных и выходных данных с помощью функции CreateFile с флагом FILE_FLAG_OVERLAPPED .

Дополнительные сведения о оппортунистических блокировках см. в документе CIFS Internet Draft. Любые несоответствия между этой темой и текущим проектом CIFS Internet следует устранять в пользу проекта CIFS Internet.

См. также раздел

Руководство по управлению доступом к файлам и протоколами NetApp

Oplocks (WDK)