Vysvětlení typů uzamčení a uzamčení souborů ve službě Azure NetApp Files
V prostředích NAS má více klientů přístup k souborům ve stejném svazku. Svazek NAS nerozužívá aplikaci, takže aby bylo možné chránit data před potenciálním poškozením, když se více než jeden klient pokusí najednou zapisovat do stejného souboru, aplikace odesílají žádosti o uzamčení na server NAS, aby ostatní klienti nemohli provádět změny, když se soubor používá. U systému souborů NFS závisí mechanismy uzamčení souborů na používané verzi systému souborů NFS.
Typy zámků
Existuje několik typů zámků NFS, mezi které patří:
Sdílené zámky: Sdílené zámky může současně používat více procesů a lze je vydat pouze v případě, že soubor neobsahuje žádné exkluzivní zámky. Tyto zámky jsou určeny pro práci jen pro čtení, ale lze je použít pro zápisy (například s databází).
Exkluzivní zámky: Exkluzivní zámky fungují stejně jako exkluzivní zámky v protokolu SMB: Soubor může použít pouze jeden proces, pokud je k dispozici exkluzivní zámek. Pokud nějaký jiný proces soubor zamkl, nelze vydat výhradní zámek, pokud nebyl tento proces forkován.
Delegování: Delegování se používají jenom s NFSv4.x a přiřazují se, když jsou povolené možnosti serveru NFS a klient podporuje delegování NFSv4.x. Delegování poskytují způsob ukládání operací na straně klienta do mezipaměti vytvořením "měkkého" zámku pro soubor používaný klientem. Tím se zlepší výkon konkrétních úloh snížením počtu volání mezi klientem a serverem a podobá se oportunistickým zámkům SMB. Azure NetApp Files v současné době nepodporuje delegování NFSv4.x.
Zámky v bajtovém rozsahu: Místo uzamčení celého souboru uzamkne bajtový rozsah jenom část souboru.
Chování uzamčení závisí na typu zámku, verzi klientského operačního systému a používané verzi systému souborů NFS. Nezapomeňte otestovat uzamčení ve vašem prostředí, abyste mohli posoudit očekávané chování.
Uzamykání NFSv3
NFSv3 používá doplňkové protokoly, jako je Network Lock Manager (NLM) a Network Status Monitor (NSM) ke koordinaci zámků souborů mezi klientem NFS a serverem. Tyto doplňkové protokoly jsou definovány v DOKUMENTU RFC-1813, které azure NetApp Files dodržuje.
NLM pomáhá vytvářet a vydávat zámky, zatímco NSM upozorní peery na restartování serveru. Při uzamčení NFSv3 musí server při restartování klienta uvolnit zámky. Když se server restartuje, klient připomene serveru zámky, které se zamkne.
Poznámka:
V některých případech mechanismy uzamčení systému souborů NFS nekomunikují správně (například v případě výpadku sítě) a zastaralé zámky zůstanou na serveru a musí být ručně vymazány. Další informace o této úloze najdete v tématu řešení potíží se zámky souborů.
Uzamykání NFSv4.x
NFSv4.x používá model uzamčení založený na zapůjčení, který je integrovaný v protokolu NFS. To znamená, že neexistují žádné doplňkové služby, které by bylo třeba udržovat nebo se obávat; veškeré uzamykání je zapouzdřeno v komunikaci NFSv4.x.
Azure NetApp Files podporuje mechanismus uzamykání souborů NFSv4.x a udržuje stav všech zámků souborů v rámci modelu založeného na zapůjčení. V souladu s dokumentem RFC 8881 definuje Služba Azure NetApp Files jedno období zapůjčení pro všechny stavy uchovávané klientem NFS. Pokud klient neprodlouží zapůjčení v definovaném období, může server uvolnit veškerý stav přidružený k zapůjčení klienta."
To znamená, že klient může prodloužit zapůjčení explicitně nebo implicitně provedením operace, například čtením souboru. Kromě toho Azure NetApp Files definuje období odkladu, což je období speciálního zpracování, ve kterém se klienti pokusí uvolnit stav uzamčení během obnovení serveru.
Pojem | definice |
---|---|
Pronájem | Časové období, ve kterém azure NetApp Files neodvolatelně uděluje zámek klientovi. |
Poskytnutá lhůta | Časové období, ve kterém se klienti pokusí uvolnit stav uzamčení během obnovení serveru v případě výpadku serveru. |
Jak Azure NetApp Files zpracovává zámky NFSv4.x
Zámky vydává služba Azure NetApp Files po vyžádání klienta na základě zapůjčení. Server Azure NetApp Files kontroluje zapůjčení každého klienta každých 30 sekund, aby se změny změnily. V případě restartování klienta může klient uvolnit všechny platné zámky ze serveru po restartování. Pokud se server Azure NetApp Files restartuje, po restartování se klientům po dobu odkladu po dobu 45 sekund nevydá žádné nové zámky. Po uplynutí této doby se zámky dají vydat žádajícím klientům. Pokud není možné zámek během zadaného období odkladu znovu navázat, zámek vyprší samostatně. Toto chování se liší od uzamčení NFSv3, protože nebudou zastaralé zámky, které je potřeba ručně porušovat.
Ruční navazování zámků na klientovi
Aby bylo možné otestovat zámky SYSTÉMU SOUBORŮ NFS, musí klient informovat server NFS, aby vytvořil zámek. Ne všechny aplikace ale používají zámky. Například aplikace "vi" nezamkne soubor. Vytvoří skrytý prohození souboru pomocí konvence pojmenování tečky ve stejné složce a potom potvrdí zápisy do souboru při zavření aplikace. Starý soubor se odstraní a prohození se přejmenuje na název souboru.
Existují však nástroje pro ruční vytvoření zámků. Například hejno může zamknout soubory.
Pokud chcete vytvořit zámek souboru, nejprve spuštěním příkazu exec přiřaďte číselné ID.
# exec 4<>v4user_file
Použijte hejno k vytvoření sdíleného nebo výhradního zámku v souboru.
# 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
Odemknutí souboru.
# flock -u -n 4
Ruční zamykání souborů umožňuje otestovat otevřené a upravit interakce souborů a otestovat funkčnost zamknutí ve službě Azure NetApp Files.