Partager via


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

Dans les environnements NAS, plusieurs clients accèdent aux fichiers du même volume. Le volume NAS n'est pas sensible aux applications. Ainsi, pour protéger les données contre une corruption potentielle lorsque plusieurs clients tentent d'écrire sur 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 que le fichier est en cours d'utilisation. Avec NFS, les mécanismes de verrouillage des 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 que s'il n'y a pas de verrous exclusifs sur un fichier. Ces verrous sont destinés au travail en lecture seule, mais peuvent être utilisés pour les écritures (comme avec une base de données).

Verrous exclusifs : les verrous exclusifs fonctionnent de la même manière que les verrous exclusifs dans SMB : 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 à moins que ce processus n'ait été forké.

Délégations : les délégations sont utilisées uniquement avec NFSv4.x et sont attribuées lorsque les options du 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 « souple » sur le fichier utilisé par un client. Cela améliore les performances de charges de travail spécifiques en réduisant le nombre d'appels entre le client et le serveur et est similaire aux verrous opportunistes SMB. Azure NetApp Files ne prend actuellement pas en charge les délégations NFSv4.x.

Verrous de plage d'octets : plutôt que de verrouiller un fichier entier, les verrous de plage d'octets ne verrouillent qu'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. Assurez-vous de 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 verrouillages de fichiers entre le client et le serveur NFS. Ces protocoles auxiliaires sont définis dans la RFC-1813, à laquelle Azure NetApp Files adhère.

NLM aide à établir et à libérer les verrous, tandis que NSM informe les nœuds 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 détenait

Remarque

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

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 aucun service auxiliaire à maintenir ou à gérer ; 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 fichiers dans un modèle basé sur un bail. Conformément à la RFC 8881, Azure NetApp Files « définira une période de bail unique pour tous les états détenus par un client NFS. Si le client ne renouvelle pas son bail dans le délai défini, 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 de manière explicite ou implicite en effectuant une opération, comme 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 au cours de laquelle les clients tentent de récupérer leur état de verrouillage lors d’une récupération de serveur.

Terme Définition
Lease La période pendant laquelle Azure NetApp Files accorde de manière irrévocable un verrou à un client.
Période de grâce La 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 du serveur.

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

Les verrous sont émis par Azure NetApp Files à la requête du client sur la base d’un bail. Le serveur Azure NetApp Files vérifie le bail de chaque client toutes les 30 secondes pour détecter les modifications. En cas de redémarrage du client, le client peut récupérer tous les verrous valides du serveur après son redémarrage. Si le serveur Azure NetApp Files redémarre, lors du redémarrage, il n’émet aucun nouveau verrou aux clients pendant une période de grâce de 45 secondes. Passé ce délai, les cadenas pourront être délivrés aux clients qui en feront la requête. Si le verrou ne peut pas être rétabli pendant la période de grâce spécifiée, le verrou expire de lui-même. Ce comportement diffère du verrouillage NFSv3, car il n'y aura pas de verrous obsolètes qui devront être brisés manuellement.

Établissez manuellement des verrous sur un client

Pour tester les verrous NFS, le client doit indiquer au serveur NFS d’établir un verrou. Cependant, toutes les applications n’utilisent pas de verrous. Par exemple, l’application « vi » ne verrouillera pas un fichier. Il crée un fichier d'échange caché, en utilisant une convention de dénomination de points, dans le même dossier, puis valide les écritures dans ce fichier lorsque l'application est fermée. Ensuite, l'ancien fichier est supprimé et le fichier d'échange est renommé avec le nom de fichier.

Il existe cependant des utilitaires permettant d'établir manuellement des verrous. Par exemple, flock peut verrouiller des fichiers.

Pour établir un verrou sur un fichier, exécutez d’abord exec pour attribuer 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 d’ouverture et de modification des fichiers et de tester la fonctionnalité de rupture de verrouillage dans Azure NetApp Files.

Étapes suivantes