Partager via


Comprendre le verrouillage des fichiers et les types de verrous dans Azure NetApp Files

Dans les environnements NAS, plusieurs clients accèdent aux fichiers du même volume. Le volume NAS n’est pas conscient de l’application. Par conséquent, pour protéger les données contre toute altération potentielle lorsque plusieurs clients tentent d’écrire dans le même fichier en même temps, les applications envoient des demandes de verrouillage au serveur NAS pour empêcher d’autres clients d’apporter des modifications pendant l’utilisation du fichier. Avec NFS, les mécanismes de verrouillage de fichiers dépendent de la version NFS utilisée.

Types de verrou

Il existe plusieurs types de verrous NFS, notamment :

Verrous partagés : les verrous partagés peuvent être utilisés par plusieurs processus en même temps et ne peuvent être émis qu’en l’absence de verrous exclusifs sur un fichier. Ces verrous sont destinés au travail en lecture seule, mais peuvent être utilisés pour les écritures (par exemple, avec une base de données).

Verrous exclusifs : les verrous exclusifs fonctionnent de la même façon que les verrous exclusifs dans CIFS/S Mo : un seul processus peut utiliser le fichier lorsqu’il existe un verrou exclusif. Si d’autres processus ont verrouillé le fichier, un verrou exclusif ne peut pas être émis, sauf si ce processus a été forked.

Délégations : les délégations sont utilisées uniquement avec NFSv4.x et sont affectées lorsque les options de serveur NFS sont activées et que le client prend en charge les délégations NFSv4.x. Les délégations offrent un moyen de mettre en cache les opérations côté client en créant un verrou « soft » au fichier utilisé par un client. Cela améliore les performances des charges de travail spécifiques en réduisant le nombre d’appels entre le client et le serveur et sont similaires à S Mo verrous opportunistes. Actuellement, Azure NetApp Files ne prend pas en charge les délégations NFSv4.x.

Verrous de plage d’octets : au lieu de verrouiller un fichier entier, les verrous de plage d’octets verrouillent uniquement une partie d’un fichier.

Le comportement de verrouillage dépend du type de verrou, de la version du système d’exploitation client et de la version NFS utilisée. Veillez à tester le verrouillage dans votre environnement pour évaluer le comportement attendu.

Verrouillage NFSv3

NFSv3 utilise des protocoles auxiliaires tels que Network Lock Manager (NLM) et Network Status Monitor (NSM) pour coordonner les verrous de fichiers entre le client NFS et le serveur. Ces protocoles auxiliaires sont définis dans RFC-1813, auxquels Azure NetApp Files adhère.

NLM permet d’établir et de libérer des verrous, tandis que NSM avertit les homologues des redémarrages du serveur. Avec le verrouillage NFSv3, lorsqu’un client redémarre, le serveur doit libérer les verrous. Lorsqu’un serveur redémarre, le client rappelle au serveur les verrous qu’il a conservés

Remarque

Dans certains cas, les mécanismes de verrouillage NFS ne communiquent pas correctement (par exemple, en cas de panne réseau), et les verrous obsolètes sont laissés sur le serveur et doivent être effacés manuellement. Pour plus d’informations sur cette tâche, consultez résoudre les problèmes de verrous de fichier.

Verrouillage NFSv4.x

NFSv4.x utilise un modèle de verrouillage basé sur un bail intégré au protocole NFS. Cela signifie qu’il n’y a pas de services auxiliaires à maintenir ou à s’inquiéter ; tout le verrouillage est encapsulé dans la communication NFSv4.x.

Azure NetApp Files prend en charge le mécanisme de verrouillage de fichiers NFSv4.x, en conservant l’état de tous les verrous de fichier sous un modèle basé sur un bail. Conformément à RFC 8881, Azure NetApp Files définit une période de bail unique pour tous les états détenus par un client NFS. Si le client ne renouvelle pas son bail au cours de la période définie, tous les états associés au bail du client peuvent être libérés par le serveur.

Cela signifie que le client peut renouveler son bail explicitement ou implicitement en effectuant une opération, telle que la lecture d’un fichier. En outre, Azure NetApp Files définit une période de grâce, qui est une période de traitement spécial dans laquelle les clients tentent de récupérer leur état de verrouillage pendant une récupération du serveur.

Terme Définition
Lease Période pendant laquelle Azure NetApp Files accorde définitivement un verrou à un client.
Période de grâce Période pendant laquelle les clients tentent de récupérer leur état de verrouillage lors de la récupération du serveur en cas de panne de serveur.

Comment Azure NetApp Files gère les verrous NFSv4.x

Les verrous sont émis par Azure NetApp Files à la demande du client sur une base de bail. Le serveur Azure NetApp Files case activée le bail sur chaque client toutes les 30 secondes pour les modifications. Dans le cas d’un redémarrage du client, le client peut récupérer tous les verrous valides du serveur une fois qu’il a redémarré. Si le serveur Azure NetApp Files redémarre, lors du redémarrage, il n’émet aucun nouveau verrou pour les clients pendant une période de grâce de 45 secondes. Après cette période, les verrous peuvent être émis aux clients demandeurs. Si le verrou ne peut pas être recréé pendant la période de grâce spécifiée, le verrou expire par lui-même. Ce comportement diffère du verrouillage NFSv3, car il n’y aura pas de verrous obsolètes qui doivent être rompus manuellement.

Établissement manuel de verrous sur un client

Pour tester les verrous NFS, le client doit indiquer au serveur NFS d’établir un verrou. Toutefois, toutes les applications n’utilisent pas de verrous. Par exemple, l’application « vi » ne verrouille pas un fichier. Il crée un fichier d’échange masqué, à l’aide d’une convention d’affectation de noms de points, dans le même dossier, puis valide les écritures dans ce fichier lorsque l’application est fermée. L’ancien fichier est ensuite supprimé et le fichier d’échange est renommé en nom de fichier.

Toutefois, il existe des utilitaires pour établir manuellement des verrous. Par exemple, flock peut verrouiller des fichiers.

Pour établir un verrou sur un fichier, exécutez d’abord exec pour affecter un ID numérique.

# exec 4<>v4user_file

Utilisez flock pour créer un verrou partagé ou exclusif sur le fichier.

# flock

Usage:
 flock [options] <file|directory> <command> [command args]
 flock [options] <file|directory> -c <command>
 flock [options] <file descriptor number>

Options:
 -s  --shared             get a shared lock
 -x  --exclusive          get an exclusive lock (default)
 -u  --unlock             remove a lock
 -n  --nonblock           fail rather than wait
 -w  --timeout <secs>     wait for a limited amount of time
 -E  --conflict-exit-code <number>  exit code after conflict or timeout
 -o  --close              close file descriptor before running command
 -c  --command <command>  run a single command string through the shell

 -h, --help     display this help and exit
 -V, --version  output version information and exit

# flock -n 4

Pour déverrouiller le fichier.

# flock -u -n 4

Le verrouillage manuel des fichiers vous permet de tester les interactions ouvertes et modifiées des fichiers et de tester la fonctionnalité de saut de verrou dans Azure NetApp Files.

Étapes suivantes