Verrous opportunistes

Un verrou opportuniste (également appelé oplock) est un verrou placé par un client sur un fichier résidant sur un serveur. Dans la plupart des cas, un client demande un verrou opportuniste afin qu’il puisse mettre en cache les données localement, ce qui réduit le trafic réseau et améliore le temps de réponse apparent. Les verrous opportunistes sont utilisés par les redirecteurs réseau sur les clients avec des serveurs distants, ainsi que par les applications clientes sur les serveurs locaux.

Les verrous opportunistes coordonnent la mise en cache et la cohérence des données entre les clients et les serveurs et entre plusieurs clients. Les données cohérentes sont les données identiques sur le réseau. En d’autres termes, si les données sont cohérentes, les données sur le serveur et tous les clients sont synchronisés.

Les verrous opportunistes ne sont pas des commandes du client sur le serveur. Ils sont des demandes du client vers le serveur. Du point de vue du client, ils sont opportunistes. En d’autres termes, le serveur accorde ces verrous chaque fois que d’autres facteurs rendent les verrous possibles.

Lorsqu’une application locale demande l’accès à un fichier distant, l’implémentation de verrous opportunistes est transparente pour l’application. Le redirecteur réseau et le serveur impliqués ouvrent et ferment automatiquement les verrous opportunistes. Toutefois, les verrous opportunistes peuvent également être utilisés lorsqu’une application locale demande l’accès à un fichier local, et que l’accès par d’autres applications et processus doit être délégué pour empêcher l’altération du fichier. Dans ce cas, l’application locale demande directement un verrou opportuniste à partir du système de fichiers local et met en cache le fichier localement. Lorsqu’il est utilisé de cette façon, le verrou opportuniste est effectivement un sémaphore géré par le serveur local et est principalement utilisé à des fins de cohérence des données dans le fichier et la notification d’accès au fichier.

Avant d’utiliser des verrous opportunistes dans votre application, vous devez être familiarisé avec les modes d’accès et de partage de fichiers décrits dans Création et ouverture de fichiers.

Le nombre maximal de verrous opportunistes simultanés que vous pouvez créer est limité uniquement par la quantité de mémoire disponible.

Les applications locales ne doivent pas tenter de demander des verrous opportunistes à partir de serveurs distants. Une erreur est retournée par DeviceIoControl si une tentative est effectuée pour ce faire.

Les verrous opportunistes sont très limités pour les applications. La seule utilisation pratique consiste à tester un redirecteur réseau ou un gestionnaire de verrou opportuniste de serveur. En règle générale, les systèmes de fichiers implémentent la prise en charge des verrous opportunistes. Les applications conservent généralement la gestion des verrous opportunistes aux pilotes du système de fichiers. Toute personne implémentant un système de fichiers doit utiliser le kit IFS (Installable File System). Toute personne qui développe un pilote d’appareil autre qu’un système de fichiers installable doit utiliser le kit de pilotes Windows (WDK).

Les verrous opportunistes et les opérations associées sont un super ensemble de la partie opportuniste du protocole Common Internet File System (CIFS), un brouillon Internet. Le protocole CIFS est une version améliorée du protocole SMB (Server Message Block). Pour plus d’informations, consultez Présentation du protocole Microsoft SMB et du protocole CIFS. Le brouillon Internet CIFS identifie explicitement qu’une implémentation CIFS peut implémenter des verrous opportunistes en refusant de les accorder.

Les rubriques suivantes identifient les verrous opportunistes.

Contenu de cette section

Rubrique Description
Mise en cache locale
La mise en cache locale des données est une technique utilisée pour accélérer l’accès réseau aux fichiers de données. Il implique la mise en cache des données sur des clients plutôt que sur des serveurs si possible.
Cohérence des données
Si les données sont cohérentes, les données sur le serveur et tous les clients sont synchronisés. Un type de système logiciel qui fournit une cohérence des données est un système de contrôle de révision (RCS).
Comment demander un verrou opportuniste
Les verrous opportunistes sont demandés en ouvrant d’abord un fichier avec des autorisations et des indicateurs appropriés à l’application ouvrant le fichier. Tous les fichiers pour lesquels les verrous opportunistes seront demandés doivent être ouverts pour l’opération qui se chevauche (asynchrone).
Réponse du serveur aux demandes ouvertes sur les fichiers verrouillés
Vous pouvez réduire l’impact que votre application a sur d’autres clients et l’impact qu’elles ont sur votre application en lui accordant autant de partage que possible, en demandant le niveau d’accès minimal nécessaire et en utilisant le verrou opportuniste le moins intrusif adapté à votre application.
Types de verrous opportunistes
Décrit le niveau 1, le niveau 2, le lot et les verrous opportunistes de filtre.
Rupture des verrous opportunistes
La rupture d’un verrou opportuniste est le processus de dégradation du verrou qu’un client a sur un fichier afin qu’un autre client puisse ouvrir le fichier, avec ou sans verrou opportuniste.
Exemples de verrou opportunistes
Diagrammes des vues de trafic réseau pour un verrou opportuniste de niveau 1, un verrou opportuniste par lots et un verrou opportuniste de filtre.
Opérations de verrouillage opportunistes
Si une application demande des verrous opportunistes, tous les fichiers pour lesquels il demande des verrous doivent être ouverts pour une entrée et une sortie qui se chevauchent (asynchrone) à l’aide de la fonction CreateFile avec l’indicateur de FILE_FLAG_OVERLAPPED .

Pour plus d’informations sur les verrous opportunistes, consultez le document CIFS Internet Draft. Toutes les différences entre cette rubrique et le brouillon Internet CIFS actuel doivent être résolues en faveur du brouillon Internet CIFS.