Förstå fillåsning och låstyper i Azure NetApp Files

I NAS-miljöer har flera klienter åtkomst till filer på samma volym. NAS-volymen är inte programmedveten, så för att skydda data mot potentiell skada när fler än en klient försöker skriva till samma fil samtidigt skickar program låsbegäranden till NAS-servern för att förhindra att andra klienter gör ändringar medan filen används. Med NFS beror fillåsningsmekanismer på vilken NFS-version som används.

Låstyper

Det finns flera typer av NFS-lås, bland annat:

Delade lås: Delade lås kan användas av flera processer samtidigt och kan endast utfärdas om det inte finns några exklusiva lås på en fil. Dessa lås är avsedda för skrivskyddat arbete men kan användas för skrivningar (till exempel med en databas).

Exklusiva lås: Exklusiva lås fungerar på samma sätt som exklusiva lås i CIFS/SMB: endast en process kan använda filen när det finns ett exklusivt lås. Om andra processer har låst filen kan ett exklusivt lås inte utfärdas om inte den processen förgrenades.

Delegeringar: Delegeringar används endast med NFSv4.x och tilldelas när NFS-serveralternativen är aktiverade och klienten stöder NFSv4.x-delegeringar. Delegeringar ger ett sätt att cachelagrar åtgärder på klientsidan genom att skapa ett "mjukt" lås till filen som används av en klient. Detta förbättrar prestandan för specifika arbetsbelastningar genom att minska antalet anrop mellan klienten och servern och liknar SMB-opportunistiska lås. Azure NetApp Files stöder för närvarande inte NFSv4.x-delegeringar.

Byteintervalllås: I stället för att låsa en hel fil låser byteintervall bara en del av en fil.

Låsningsbeteendet beror på typen av lås, klientoperativsystemets version och den NFS-version som används. Se till att testa låsning i din miljö för att mäta det förväntade beteendet.

NFSv3-låsning

NFSv3 använder underordnade protokoll som Network Lock Manager (NLM) och Network Status Monitor (NSM) för att samordna fillås mellan NFS-klienten och servern. Dessa tilläggsprotokoll definieras i RFC-1813, som Azure NetApp Files följer.

NLM hjälper till att upprätta och frigöra lås, medan NSM meddelar peer-datorer med serveromstarter. När en klient startas om med NFSv3-låsning måste servern släppa låsen. När en server startas om påminner klienten servern om de lås som den höll

Kommentar

I vissa fall kommunicerar inte NFS-låsmekanismerna korrekt (till exempel vid nätverksfel) och inaktuella lås blir kvar på servern och måste rensas manuellt. Mer information om den här uppgiften finns i felsöka fillås.

NFSv4.x-låsning

NFSv4.x använder en lånebaserad låsmodell som är integrerad i NFS-protokollet. Det innebär att det inte finns några underordnade tjänster att underhålla eller oroa sig för. all låsning är inkapslad i NFSv4.x-kommunikationen.

Azure NetApp Files stöder fillåsningsmekanismen NFSv4.x och underhåller tillståndet för alla fillås under en lånebaserad modell. I enlighet med RFC 8881 definierar Azure NetApp Files en enda låneperiod för alla tillstånd som innehas av en NFS-klient. Om klienten inte förnyar sitt lån inom den definierade perioden kan alla tillstånd som är associerade med klientens lån frisläppas av servern."

Det innebär att klienten kan förnya sitt lån explicit eller implicit genom att utföra en åtgärd, till exempel att läsa en fil. Dessutom definierar Azure NetApp Files en respitperiod, vilket är en period av särskild bearbetning där klienter försöker återta sitt låstillstånd under en serveråterställning.

Period Definition
Livslängd Tidsperioden då Azure NetApp Files oåterkalleligen beviljar ett lås till en klient.
Respitperiod Tidsperioden då klienter försöker återta sitt låstillstånd under serveråterställning i händelse av ett serverstopp.

Så här hanterar Azure NetApp Files NFSv4.x-lås

Lås utfärdas av Azure NetApp Files vid klientbegäran på lånebasis. Azure NetApp Files-servern kontrollerar lånet på varje klient var 30:e sekund efter ändringar. Vid en klientomstart kan klienten frigöra alla giltiga lås från servern när den har startats om. Om Azure NetApp Files-servern startas om utfärdar den inte några nya lås till klienterna under en respitperiod på 45 sekunder när den startas om. Därefter kan lås utfärdas till de begärande klienterna. Om låset inte kan återupprättas under den angivna respitperioden upphör låset att gälla på egen hand. Det här beteendet skiljer sig från NFSv3-låsning eftersom det inte finns inaktuella lås som måste brytas manuellt.

Manuellt upprätta lås på en klient

Om du vill testa NFS-lås måste klienten instruera NFS-servern att upprätta ett lås. Alla program använder dock inte lås. Programmet "vi" låser till exempel inte en fil. Den skapar en dold växlingsfil med hjälp av en punktnamnskonvention i samma mapp och checkar sedan in skrivningar till filen när programmet stängs. Sedan tas den gamla filen bort och växlingsfilen byter namn till filnamnet.

Det finns dock verktyg för att manuellt upprätta lås. Flock kan till exempel låsa filer.

Om du vill upprätta ett lås på en fil kör du först exec för att tilldela ett numeriskt ID.

# exec 4<>v4user_file

Använd flock för att skapa ett delat eller exklusivt lås på filen.

# 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

För att låsa upp filen.

# flock -u -n 4

Om du låser filer manuellt kan du testa öppna och redigera filer och testa låsbrytningsfunktionerna i Azure NetApp Files.

Nästa steg