Inzicht in bestandstypen voor het vergrendelen en vergrendelen van bestanden in Azure NetApp Files

In NAS-omgevingen hebben meerdere clients toegang tot bestanden in hetzelfde volume. Het NAS-volume is niet op de hoogte van de toepassing, dus om gegevens te beschermen tegen mogelijke beschadiging wanneer meer dan één client probeert te schrijven naar hetzelfde bestand tegelijkertijd, verzenden toepassingen vergrendelingsaanvragen naar de NAS-server om te voorkomen dat andere clients wijzigingen aanbrengen terwijl het bestand wordt gebruikt. Met NFS zijn mechanismen voor bestandsvergrendeling afhankelijk van de NFS-versie die wordt gebruikt.

Vergrendelingstypen

Er zijn verschillende typen NFS-vergrendelingen, waaronder:

Gedeelde vergrendelingen: Gedeelde vergrendelingen kunnen tegelijkertijd door meerdere processen worden gebruikt en kunnen alleen worden uitgegeven als er geen exclusieve vergrendelingen op een bestand zijn. Deze vergrendelingen zijn bedoeld voor alleen-lezenwerk, maar kunnen worden gebruikt voor schrijfbewerkingen (zoals bij een database).

Exclusieve vergrendelingen: exclusieve vergrendelingen werken hetzelfde als exclusieve vergrendelingen in CIFS/SMB: slechts één proces kan het bestand gebruiken wanneer er een exclusieve vergrendeling is. Als andere processen het bestand hebben vergrendeld, kan er geen exclusieve vergrendeling worden uitgegeven tenzij dat proces is gesplitst.

Delegaties: delegaties worden alleen gebruikt met NFSv4.x en worden toegewezen wanneer de NFS-serveropties zijn ingeschakeld en de client NFSv4.x-delegaties ondersteunt. Delegaties bieden een manier om bewerkingen aan de clientzijde in de cache op te slaan door een 'zachte' vergrendeling te maken voor het bestand dat door een client wordt gebruikt. Dit verbetert de prestaties van specifieke workloads door het aantal aanroepen tussen de client en de server te verminderen en vergelijkbaar zijn met opportunistische SMB-vergrendelingen. Azure NetApp Files biedt momenteel geen ondersteuning voor NFSv4.x-delegaties.

Vergrendelingen van bytebereik: in plaats van een heel bestand te vergrendelen, vergrendelt bytebereik alleen een deel van een bestand.

Het vergrendelingsgedrag is afhankelijk van het type vergrendeling, de versie van het clientbesturingssysteem en de NFS-versie die wordt gebruikt. Test de vergrendeling in uw omgeving om het verwachte gedrag te meten.

NFSv3-vergrendeling

NFSv3 maakt gebruik van ondersteunende protocollen zoals Network Lock Manager (NLM) en Network Status Monitor (NSM) om bestandsvergrendelingen tussen de NFS-client en -server te coördineren. Deze aanvullende protocollen worden gedefinieerd in RFC-1813, waaraan Azure NetApp Files voldoet.

NLM helpt bij het tot stand brengen en vrijgeven van vergrendelingen, terwijl NSM peers van het opnieuw opstarten van de server op de hoogte stelt. Wanneer NFSv3 wordt vergrendeld, moet de server de vergrendelingen vrijgeven wanneer een client opnieuw wordt opgestart. Wanneer een server opnieuw wordt opgestart, herinnert de client de server aan de vergrendelingen die deze heeft vastgehouden

Notitie

In sommige gevallen communiceren de NFS-vergrendelingsmechanismen niet goed (zoals in het geval van een netwerkstoring) en verlopen vergrendelingen blijven op de server staan en moeten ze handmatig worden gewist. Zie problemen met bestandsvergrendelingen oplossen voor meer informatie over deze taak.

NFSv4.x-vergrendeling

NFSv4.x maakt gebruik van een op lease gebaseerd vergrendelingsmodel dat is geïntegreerd in het NFS-protocol. Dit betekent dat er geen nevendiensten zijn waarover u zich zorgen hoeft te maken; alle vergrendelingen worden ingekapseld in de NFSv4.x-communicatie.

Azure NetApp Files ondersteunt het NFSv4.x-mechanisme voor bestandsvergrendeling, waarbij de status van alle bestandsvergrendelingen onder een leasemodel behouden blijft. In overeenstemming met RFC 8881 definieert Azure NetApp Files één leaseperiode voor alle statussen die door een NFS-client worden bewaard. Als de client de lease niet binnen de gedefinieerde periode verlengt, kan alle status die is gekoppeld aan de lease van de client door de server worden vrijgegeven.

Dit betekent dat de client de lease expliciet of impliciet kan verlengen door een bewerking uit te voeren, zoals het lezen van een bestand. Daarnaast definieert Azure NetApp Files een respijtperiode, een periode van speciale verwerking waarin clients proberen hun vergrendelingsstatus terug te vorderen tijdens een serverherstel.

Termijn Definitie
Lease De periode waarin Azure NetApp Files onherroepelijk een vergrendeling aan een client verleent.
Respijtperiode De periode waarin clients proberen hun vergrendelingsstatus vrij te maken tijdens serverherstel in het geval van een serverstoring.

Hoe Azure NetApp Files NFSv4.x-vergrendelingen verwerkt

Vergrendelingen worden uitgegeven door Azure NetApp Files op clientaanvraag op leasebasis. De Azure NetApp Files-server controleert de lease op elke client elke 30 seconden op wijzigingen. In het geval van opnieuw opstarten van een client kan de client alle geldige vergrendelingen van de server terugvorderen nadat deze opnieuw is opgestart. Als de Azure NetApp Files-server opnieuw wordt opgestart, worden er bij het opnieuw opstarten geen nieuwe vergrendelingen voor de clients gegenereerd gedurende een respijtperiode van 45 seconden. Na die tijd kunnen vergrendelingen worden uitgegeven aan de aanvragende clients. Als de vergrendeling niet opnieuw kan worden ingesteld tijdens de opgegeven respijtperiode, verloopt de vergrendeling zelfstandig. Dit gedrag verschilt van NFSv3-vergrendeling, omdat er geen verouderde vergrendelingen zijn die handmatig moeten worden verbroken.

Vergrendelingen op een client handmatig instellen

Om NFS-vergrendelingen te testen, moet de client de NFS-server vertellen een vergrendeling tot stand te brengen. Niet alle toepassingen maken echter gebruik van vergrendelingen. De toepassing 'vi' vergrendelt bijvoorbeeld geen bestand. Er wordt een verborgen wisselbestand gemaakt, met behulp van een naamconventie voor puntjes, in dezelfde map en schrijft vervolgens naar dat bestand wanneer de toepassing wordt gesloten. Vervolgens wordt het oude bestand verwijderd en wordt de naam van het wisselbestand gewijzigd in de bestandsnaam.

Er zijn echter hulpprogramma's om vergrendelingen handmatig tot stand te brengen. Flock kan bijvoorbeeld bestanden vergrendelen.

Als u een vergrendeling voor een bestand wilt instellen, voert u eerst exec uit om een numerieke id toe te wijzen.

# exec 4<>v4user_file

Gebruik flock om een gedeelde of exclusieve vergrendeling op het bestand te maken.

# 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

Het bestand ontgrendelen.

# flock -u -n 4

Door bestanden handmatig te vergrendelen, kunt u interacties tussen bestanden openen en bewerken testen en de functionaliteit voor vergrendelingsonderbreking testen in Azure NetApp Files.

Volgende stappen