Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Оппортунистическая блокировка (также называемая оплоком) — это блокировка, размещенная клиентом на файле, размещенном на сервере. В большинстве случаев клиент запрашивает оппортунистическую блокировку, чтобы кэшировать данные локально, уменьшая сетевой трафик и повышая время видимого отклика. Оппортунистические блокировки используются сетевыми редиректорами на клиентах, подключенных к удаленным серверам, так же как клиентскими приложениями на локальных серверах.
Замечание
Статьи о оппортунистических блокировках, найденных в этом разделе, относятся в основном к клиентским приложениям, хотя некоторые сведения предоставляются для сетевых перенаправлений. Дополнительные сведения об оплоке для сетевых перенаправителей можно найти в статьях Windows WDK на тему Oplocks.
Обзор
Оппортунистические блокировки координируют кэширование и согласованность данных между клиентами и серверами, а также среди нескольких клиентов. Данные, которые являются последовательными, — это данные, одинаковые в сети. Другими словами, если данные согласованы, данные на сервере и все клиенты синхронизируются.
Оппортунистические блокировки не являются командами клиента на сервере. Они являются запросами от клиента к серверу. С точки зрения клиента, они оппортунистичны. Другими словами, сервер предоставляет такие блокировки всякий раз, когда другие факторы делают блокировки возможными.
Когда локальное приложение запрашивает доступ к удаленному файлу, реализация оппортунистических блокировок является прозрачной для приложения. Сетевой перенаправитель и сервер автоматически открывают и закрывают оппортунистические блокировки. Однако оппортунистические блокировки также можно использовать, когда локальные приложения запрашивают доступ к локальному файлу, а доступ к другим приложениям и процессам необходимо делегировать, чтобы предотвратить повреждение файла. В этом случае локальное приложение напрямую запрашивает оппортунистическую блокировку из локальной файловой системы и кэширует файл локально. При использовании таким образом оппортунистическая блокировка фактически является семафором, управляемым локальным сервером, и в основном используется для обеспечения согласованности данных и уведомлений о доступе к файлам.
Прежде чем использовать оппортунистические блокировки в приложении, вы должны ознакомиться с режимами доступа к файлам и совместному использованию, описанными в разделе "Создание и открытие файлов".
Максимальное количество одновременных оппортунистических блокировок, которые можно создать, ограничено только объемом доступной памяти.
Локальные приложения не должны пытаться запрашивать оппортунистические блокировки с удаленных серверов. Ошибка будет возвращена DeviceIoControl , если предпринята попытка сделать это.
Оппортунистические замки мало полезны для приложений. Одним из способов использования оппортунистических блокировок приложений в локальной файловой системе является предоставление прозрачного доступа к файлам. Приложение, например индексатор содержимого или другой сканер, может использовать оппортунистическую блокировку для уведомления о том, что другое приложение пытается получить доступ к файлу, который обрабатывает приложение индексатора. Это позволяет индексатору закрыть свой дескриптор, освободить ресурс для другого приложения и избежать нарушения условий совместного доступа или других проблем для другого приложения. Еще одним практическим применением оппортунистических блокировок в приложении является тестирование сетевого перенаправления или обработчика блокировки сервера.
Как правило, файловые системы реализуют поддержку оппортунистических блокировок. Большинство приложений оставляют управление оппортунистической блокировкой драйверам файловой системы. Любой пользователь, реализующий файловую систему, должен использовать комплект устанавливаемой файловой системы (IFS). Любой, кто разрабатывает драйвер устройства, отличный от устанавливаемой файловой системы, должен использовать комплект драйверов Windows (WDK).
Оппортунистические блокировки и связанные операции — это расширение части протокола оппортунистических блокировок в Common Internet File System (CIFS), интернет-документ. Протокол CIFS — это расширенная версия протокола SMB. Дополнительные сведения см. в разделе "Обзор протоколов Microsoft SMB и CIFS". Интернет-документ CIFS явно указывает, что внедрение CIFS может вводить оппортунистические блокировки, если отказывается в их предоставлении.
Темы, перечисленные ниже, определяют оппортунистические блокировки.
В этом разделе
Тема | Описание |
---|---|
Локальное кэширование | локальное кэширование данных — это метод, используемый для ускорения сетевого доступа к файлам данных. Он включает кэширование данных на клиентах, а не на серверах, когда это возможно. |
Согласованность данных | Если данные согласованы, данные на сервере и все клиенты синхронизируются. Один из типов программной системы, предоставляющей совместное управление данными, — это система управления версиями (RCS). |
Как запросить оппортунистическую блокировку | Оппортунистические блокировки запрашиваются при первом открытии файла с разрешениями и флагами, соответствующими приложению, открываемого файлом. Все файлы, для которых запрашиваются оппортунистические блокировки, должны быть открыты для асинхронной обработки. |
Ответ сервера на открытые запросы на заблокированные файлы | Вы можете свести к минимуму влияние приложения на других клиентов и влияние, которое они оказывают на приложение, предоставив максимально общий доступ, запрашивая минимальный уровень доступа и используя наименее навязчивую оппортунистическую блокировку, подходящую для вашего приложения. |
Типы оппортунистических блокировок | Описание блокировок Read-Write-Handle, Read-Write, Read-Handle и Read оппортунистические блокировки. Также описываются устаревшие оппортунистические блокировки уровня 1, уровня 2, пакетные и фильтрационные. |
Снятие оппортунистических блокировок | Нарушение оппортунистической блокировки — это процесс снижения блокировки, которую один клиент имеет в файле, чтобы другой клиент смог открыть файл с оппортунистической блокировкой или без нее. |
Примеры оппортунистической блокировки | Схемы представлений сетевого трафика для оппортунистической блокировки уровня 1, пакетной оппортунистической блокировки и оппортунистической блокировки фильтра. |
Операции оппортунистической блокировки | Если приложение запрашивает оппортунистические блокировки, все файлы, для которых он запрашивает блокировки, должны быть открыты для перекрывающихся (асинхронных) входных и выходных данных с помощью функции CreateFile с флагом FILE_FLAG_OVERLAPPED . |
Дополнительные сведения о оппортунистических блокировках см. в документе CIFS Internet Draft. Любые расхождения между этим разделом и текущим черновиком CIFS следует устранить в пользу черновика CIFS.
См. также
Руководство по управлению доступом к файлам и протоколами NetApp