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 de pouvoir mettre les données en cache 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 de réseau sur les clients avec des serveurs distants, ainsi que par les applications client sur les serveurs locaux.

Notes

Les articles sur les verrous opportunistes de cette section concernent principalement les applications clientes, bien que certaines informations soient fournies pour les redirecteurs réseau. Vous trouverez plus d’informations sur le verrouillage d’opération pour les redirecteurs réseau dans les articles Oplocks de Windows WDK.

Vue d’ensemble

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 des données identiques sur le réseau. En d’autres termes, si les données sont cohérentes, les données du serveur et celles de tous les clients sont synchronisées.

Les verrous opportunistes ne sont pas commandés par le client au serveur. Il s’agit de demandes adressées par le client au serveur. Du point de vue du client, elles sont opportunistes. En d’autres termes, le serveur accorde ces verrous lorsque d’autres facteurs les rendent possibles.

Lorsqu’une application locale demande l’accès à un fichier distant, la mise en œuvre des verrous opportunistes est transparente pour l’application. Le redirecteur de réseau et le serveur concerné 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é afin d’éviter la corruption du fichier. Dans ce cas, l’application locale demande directement un verrou opportuniste au système de fichiers local et met le fichier en cache localement. Lorsqu’il est utilisé de cette manière, le verrou opportuniste est effectivement un sémaphore géré par le serveur local, et il est principalement utilisé à des fins de cohérence des données dans le fichier et de notification de l’accès au fichier.

Avant d’utiliser des verrous opportunistes dans votre application, vous devez vous familiariser avec les modes d’accès et de partage des fichiers décrits dans la section 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 à des serveurs distants. Une erreur sera renvoyée par DeviceIoControl en cas de tentative de ce type.

Les verrous opportunistes sont d’une utilité très limitée pour les applications. La seule utilisation pratique est de tester un redirecteur de réseau ou un gestionnaire de verrou opportuniste de serveur. En règle générale, les systèmes de fichiers prennent en charge les verrous opportunistes. Les applications laissent généralement la gestion opportuniste des verrous aux pilotes du système de fichiers. Toute personne mettant en œuvre un système de fichiers doit utiliser le kit IFS (Installable File System). Toute personne développant un pilote de périphérique 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 sur-ensemble de la partie verrouillage opportuniste du protocole CIFS (Common Internet File System), un projet Internet. Le protocole CIFS est une version améliorée du protocole Server Message Block (SMB). Pour plus d’informations, consultez Vue d’ensemble du protocole SMB et du protocole CIFS de Microsoft. Le projet Internet CIFS indique explicitement qu’une implémentation CIFS peut mettre en œuvre 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. Elle consiste à mettre en cache les données sur les clients plutôt que sur les serveurs lorsque cela est possible.
Cohérence des données Si les données sont cohérentes, les données du serveur et celles de tous les clients sont synchronisées. Le système de contrôle des révisions (RCS) est un type de système logiciel qui assure la cohérence des données.
Comment demander un verrou opportuniste Les verrous opportunistes sont demandés en ouvrant d’abord un fichier avec les autorisations et les drapeaux appropriés à l’application qui ouvre le fichier. Tous les fichiers pour lesquels des verrous opportunistes seront demandés doivent être ouverts pour des opérations superposées (asynchrones).
Réponse du serveur aux demandes d’ouverture de fichiers verrouillés Vous pouvez réduire l’impact de votre application sur les autres clients et l’impact de ces derniers sur votre application en 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 les verrous opportunistes de niveau 1, de niveau 2, de lot et de filtre.
Verrous opportunistes cassants Faire sauter un verrou opportuniste est le processus qui consiste à dégrader le verrou qu’un client possède sur un fichier afin qu’un autre client puisse ouvrir le fichier, avec ou sans verrou opportuniste.
Exemples de verrous opportunistes Diagrammes des vues du trafic réseau pour un verrouillage opportuniste de niveau 1, un verrouillage opportuniste par lot et un verrouillage opportuniste par filtre.
Opérations de verrouillage opportunistes Si une application demande des verrous opportunistes, tous les fichiers pour lesquels elle demande des verrous doivent être ouverts pour les entrées et sorties qui se chevauchent (asynchrones) à l’aide de la fonction CreateFile avec l’indicateur FILE_FLAG_OVERLAPPED.

Pour plus d’informations sur les verrous opportunistes, voir le document CIFS Internet Draft. Toute divergence entre ce sujet et l’actuel projet Internet du CIFS doit être résolue en faveur du projet Internet du CIFS.

Voir aussi

Guide de gestion des protocoles et de l’accès aux fichiers NetApp

Oplocks (WDK)