Partilhar via


Bloqueios oportunistas

Um bloqueio oportunista (também chamado de oplock) é um bloqueio colocado por um cliente em um arquivo que reside em um servidor. Na maioria dos casos, um cliente solicita um bloqueio oportunista para que possa armazenar dados em cache localmente, reduzindo assim o tráfego de rede e melhorando o tempo de resposta aparente. Os bloqueios oportunistas são usados por redirecionadores de rede em clientes com servidores remotos, bem como por aplicativos cliente em servidores locais.

Observação

Os artigos sobre bloqueios oportunistas encontrados nesta seção referem-se principalmente a aplicativos cliente, embora algumas informações sejam fornecidas para redirecionadores de rede. Você pode encontrar mais informações de oplock para redirecionadores de rede nos artigos Oplocks do Windows WDK.

Visão geral

Os bloqueios oportunistas coordenam o cache de dados e a coerência entre clientes e servidores e entre vários clientes. Dados coerentes são dados iguais em toda a rede. Em outras palavras, se os dados forem coerentes, os dados no servidor e em todos os clientes serão sincronizados.

Bloqueios oportunistas não são comandos do cliente para o servidor. São solicitações do cliente para o servidor. Do ponto de vista do cliente, são oportunistas. Em outras palavras, o servidor concede tais bloqueios sempre que outros fatores tornam os bloqueios possíveis.

Quando um aplicativo local solicita acesso a um arquivo remoto, a implementação de bloqueios oportunistas é transparente para o aplicativo. O redirecionador de rede e o servidor envolvido abrem e fecham os bloqueios oportunistas automaticamente. No entanto, bloqueios oportunistas também podem ser usados quando um aplicativo local solicita acesso a um arquivo local, e o acesso por outros aplicativos e processos deve ser delegado para evitar a corrupção do arquivo. Nesse caso, o aplicativo local solicita diretamente um bloqueio oportunista do sistema de arquivos local e armazena o arquivo em cache localmente. Quando usado desta forma, o bloqueio oportunista é efetivamente um semáforo gerenciado pelo servidor local, e é usado principalmente para fins de coerência de dados no arquivo e notificação de acesso ao arquivo.

Antes de usar bloqueios oportunistas em seu aplicativo, você deve estar familiarizado com os modos de acesso e compartilhamento de arquivos descritos em Criando e abrindo arquivos.

O número máximo de bloqueios oportunistas simultâneos que você pode criar é limitado apenas pela quantidade de memória disponível.

Os aplicativos locais não devem tentar solicitar bloqueios oportunistas de servidores remotos. Um erro será retornado por DeviceIoControl se uma tentativa é feita para fazer isso.

As fechaduras oportunistas são de uso limitado para aplicações. Um uso de bloqueios oportunistas por aplicativos em um sistema de arquivos local é fornecer acesso transparente a arquivos. Um aplicativo, como um indexador de conteúdo ou outro scanner, pode usar um bloqueio oportunista para ser notificado de que outro aplicativo está tentando acessar um arquivo que o aplicativo indexador está processando. Isso permite que o indexador feche seu identificador e saia do caminho do outro aplicativo e evite causar violações de compartilhamento ou outros problemas para o outro aplicativo. Outro uso prático de bloqueios oportunistas em um aplicativo é testar um redirecionador de rede ou um manipulador de bloqueio oportunista de servidor.

Normalmente, os sistemas de arquivos implementam suporte para bloqueios oportunistas. A maioria dos aplicativos deixa o gerenciamento de bloqueio oportunista para os drivers do sistema de arquivos. Qualquer pessoa que implemente um sistema de arquivos deve usar o Kit de Sistema de Arquivos Instalável (IFS). Qualquer pessoa que desenvolva um driver de dispositivo diferente de um sistema de arquivos instalável deve usar o Kit de Driver do Windows (WDK).

Os bloqueios oportunistas e as operações associadas são um superconjunto da parte de bloqueio oportunista do Sistema de Ficheiros da Internet Comum (CIFS), um documento em rascunho da Internet. O protocolo CIFS é uma versão melhorada do protocolo SMB (Server Message Block). Para obter mais informações, consulte Microsoft SMB Protocol and CIFS Protocol Overview. O CIFS Internet Draft identifica explicitamente que uma implementação do CIFS pode implementar bloqueios oportunistas recusando-se a concedê-los.

Nesta secção

Os tópicos a seguir identificam bloqueios oportunistas:

Tópico Descrição
Cache local O cache local de dados é uma técnica usada para acelerar o acesso da rede aos arquivos de dados. Envolve o armazenamento em cache de dados em clientes em vez de em servidores, quando possível.
Coerência dos dados Se os dados forem coerentes, os dados no servidor e em todos os clientes serão sincronizados. Um tipo de sistema de software que fornece coerência de dados é um sistema de controle de revisão (RCS).
Como solicitar um bloqueio oportunista Os bloqueios oportunistas são solicitados abrindo primeiro um arquivo com permissões e sinalizadores apropriados para o aplicativo que abre o arquivo. Todos os arquivos para os quais serão solicitados bloqueios oportunistas devem ser abertos para operação sobreposta (assíncrona).
Resposta do servidor a solicitações abertas em arquivos bloqueados Você pode minimizar o impacto que seu aplicativo tem em outros clientes e o impacto que eles têm em seu aplicativo concedendo o máximo de compartilhamento possível, solicitando o nível mínimo de acesso necessário e usando o bloqueio oportunista menos intrusivo adequado para seu aplicativo.
Tipos de fechaduras oportunistas Descreve os bloqueios oportunistas Read-Write-Handle, Read-Write, Read-Handle e Read. Também descreve os bloqueios oportunistas herdados de nível 1, nível 2, agrupamento e filtro.
Quebrando bloqueios oportunistas Quebrar um bloqueio oportunista é o processo de degradar o bloqueio que um cliente tem em um arquivo para que outro cliente possa abrir o arquivo, com ou sem um bloqueio oportunista.
Exemplos de bloqueio oportunista Diagramas de exibições de tráfego de rede para um bloqueio oportunista de nível 1, um bloqueio oportunista em lote e um bloqueio oportunista de filtro.
Operações de bloqueio oportunistas Se um aplicativo solicitar bloqueios oportunistas, todos os arquivos para os quais ele solicita bloqueios deverão ser abertos para entrada e saída sobrepostas (assíncronas) usando a função CreateFile com o sinalizador FILE_FLAG_OVERLAPPED .

Para obter informações adicionais sobre bloqueios oportunistas, consulte o documento CIFS Internet Draft. Quaisquer discrepâncias entre este tópico e o atual CIFS Internet Draft devem ser resolvidas em favor do CIFS Internet Draft.

Guia de Gerenciamento de Protocolos e Acesso a Arquivos NetApp

Oplocks (WDK)