Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 vystavit pouze v případě, že soubor neobsahuje žádné exkluzivní zámky. Tyto zámky jsou určeny pro čtení, ale lze je použít i pro zápisy (například u databází).
Exkluzivní zámky: Exkluzivní zámky fungují stejně jako exkluzivní zámky v protokolu SMB: Soubor může používat pouze jeden proces, pokud existuje exkluzivní zámek. Pokud nějaký jiný proces soubor zamkl, nelze vydat výhradní zámek, pokud nebyl tento proces forkován.
Delegace: 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 rozsahu bajtů: Místo uzamčení celého souboru uzamkne rozsah bajtů 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á zřizovat a uvolňovat zámky, zatímco NSM upozorní sousedy na restartování serveru. Při uzamčení NFSv3 musí server při restartování klienta uvolnit zámky. Když se server restartuje, klient serveru připomene zámky, které měl server v držení.
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.
termín | 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 každých 30 sekund výpůjční dobu každého klienta kvůli změnám. 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, během doby 45 sekund nevydá klientům žá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 NFS, musí klient požádat server NFS, aby vytvořil zámek. Ne všechny aplikace ale používají zámky. Například aplikace "vi" nezamkne soubor. Vytvoří skrytý swapový soubor pomocí názvosloví s tečkou ve stejné složce a potom po zavření aplikace potvrdí zápisy do tohoto souboru. Poté se starý soubor odstraní a výměnný soubor se přejmenuje na původní název souboru.
Existují však nástroje pro ruční vytvoření zámků. Například flock 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 flock k vytvoření sdíleného nebo výhradního zámku na 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 proces otevření a úprav souborů a otestovat funkci přerušení zámku ve službě Azure NetApp Files.