Informacje o typach blokowania i blokowania plików w usłudze Azure NetApp Files
W środowiskach NAS wiele klientów uzyskuje dostęp do plików w tym samym woluminie. Wolumin NAS nie jest świadomy aplikacji, dlatego w celu ochrony danych przed potencjalnym uszkodzeniem, gdy więcej niż jeden klient próbuje zapisać w tym samym pliku w tym samym czasie, aplikacje wysyłają żądania blokady do serwera NAS, aby uniemożliwić innym klientom wprowadzanie zmian podczas korzystania z pliku. W systemie plików NFS mechanizmy blokowania plików zależą od używanej wersji systemu plików NFS.
Typy blokad
Istnieje kilka typów blokad NFS, które obejmują:
Blokady udostępnione: Blokady udostępnione mogą być używane przez wiele procesów w tym samym czasie i mogą być wystawiane tylko wtedy, gdy nie ma wyłącznych blokad w pliku. Te blokady są przeznaczone do pracy tylko do odczytu, ale mogą być używane do zapisu (na przykład z bazą danych).
Blokady wyłączne: Blokady wyłączne działają tak samo jak blokady wyłączne w SMB: tylko jeden proces może używać pliku, gdy istnieje wyłączna blokada. Jeśli jakiekolwiek inne procesy zablokowały plik, nie można wydać wyłącznej blokady, chyba że ten proces został rozwidlenia.
Delegowanie: Delegowanie są używane tylko w systemie plików NFSv4.x i są przypisywane, gdy opcje serwera NFS są włączone, a klient obsługuje delegowanie NFSv4.x. Delegowania umożliwiają buforowanie operacji po stronie klienta przez utworzenie "miękkiej" blokady do pliku używanego przez klienta. Poprawia to wydajność określonych obciążeń, zmniejszając liczbę wywołań między klientem a serwerem i jest podobna do blokad oportunistycznych protokołu SMB. Usługa Azure NetApp Files obecnie nie obsługuje delegowania NFSv4.x.
Blokady zakresu bajtów: Zamiast blokować cały plik, zakres bajtów blokuje tylko część pliku.
Zachowanie blokowania zależy od typu blokady, wersji systemu operacyjnego klienta i używanej wersji systemu NFS. Pamiętaj, aby przetestować blokowanie w środowisku, aby ocenić oczekiwane zachowanie.
Blokowanie systemu plików NFSv3
System plików NFSv3 używa protokołów pomocniczych, takich jak Network Lock Manager (NLM) i Network Status Monitor (NSM), aby koordynować blokady plików między klientem systemu plików NFS i serwerem. Te protokoły pomocnicze są zdefiniowane w dokumencie RFC-1813, z którym jest zgodna usługa Azure NetApp Files.
NlM pomaga ustanowić i zwolnić blokady, podczas gdy NSM powiadamia równorzędne elementy równorzędne o ponownym uruchomieniu serwera. W przypadku blokowania systemu plików NFSv3 po ponownym uruchomieniu klienta serwer musi zwolnić blokady. Po ponownym uruchomieniu serwera klient przypomina serwerowi o blokadach, które są przechowywane
Uwaga
W niektórych przypadkach mechanizmy blokowania systemu plików NFS nie komunikują się prawidłowo (na przykład w przypadku awarii sieci), a nieaktywne blokady są pozostawione na serwerze i muszą zostać ręcznie wyczyszczone. Aby uzyskać więcej informacji na temat tego zadania, zobacz Rozwiązywanie problemów z blokadami plików.
Blokowanie systemu plików NFSv4.x
System plików NFSv4.x korzysta z modelu blokowania opartego na dzierżawie zintegrowanego w ramach protokołu NFS. Oznacza to, że nie ma usług pomocniczych do utrzymania lub martwienia się; wszystkie blokady są hermetyzowane w komunikacji NFSv4.x.
Usługa Azure NetApp Files obsługuje mechanizm blokowania plików NFSv4.x, zachowując stan wszystkich blokad plików w modelu opartym na dzierżawie. Zgodnie z RFC 8881 usługa Azure NetApp Files "definiuje pojedynczy okres dzierżawy dla wszystkich stanów przechowywanych przez klienta systemu plików NFS. Jeśli klient nie odnowi dzierżawy w określonym przedziale czasu, cały stan skojarzony z dzierżawą klienta może zostać zwolniony przez serwer.
Oznacza to, że klient może jawnie lub niejawnie odnowić dzierżawę, wykonując operację, taką jak odczytywanie pliku. Ponadto usługa Azure NetApp Files definiuje okres prolongaty, który jest okresem specjalnego przetwarzania, w którym klienci próbują odzyskać swój stan blokady podczas odzyskiwania serwera.
Termin | Definicja |
---|---|
Dzierżawa | Okres, w którym usługa Azure NetApp Files nieodwołalnie przyznaje klientowi blokadę. |
Okres prolongaty | Okres, w którym klienci próbują odzyskać stan blokady podczas odzyskiwania serwera w przypadku awarii serwera. |
Jak usługa Azure NetApp Files obsługuje blokady NFSv4.x
Blokady są wystawiane przez usługę Azure NetApp Files na żądanie klienta na podstawie dzierżawy. Serwer usługi Azure NetApp Files sprawdza dzierżawę każdego klienta co 30 sekund pod kątem zmian. W przypadku ponownego uruchomienia klienta klient może odzyskać wszystkie prawidłowe blokady z serwera po ponownym uruchomieniu. Jeśli serwer usługi Azure NetApp Files zostanie uruchomiony ponownie, po ponownym uruchomieniu nie wyda żadnych nowych blokad klientom przez okres prolongaty 45 sekund. Po tym czasie blokady mogą być wystawiane klientom żądającym. Jeśli blokada nie może zostać ponownie ustanowiona w określonym okresie prolongaty, blokada wygaśnie samodzielnie. To zachowanie różni się od blokowania systemu plików NFSv3, ponieważ nie będzie nieaktualnych blokad, które muszą zostać ręcznie uszkodzone.
Ręczne ustanawianie blokad na kliencie
Aby przetestować blokady systemu plików NFS, klient musi poinformować serwer NFS o ustanowieniu blokady. Jednak nie wszystkie aplikacje używają blokad. Na przykład aplikacja "vi" nie zablokuje pliku. Tworzy ukryty plik wymiany przy użyciu konwencji nazewnictwa kropki w tym samym folderze, a następnie zatwierdza zapisy w tym pliku po zamknięciu aplikacji. Następnie stary plik zostanie usunięty, a nazwa pliku wymiany zostanie zmieniona na nazwę pliku.
Istnieją jednak narzędzia do ręcznego ustanawiania blokad. Na przykład stado może blokować pliki.
Aby ustanowić blokadę pliku, najpierw uruchom polecenie exec, aby przypisać identyfikator liczbowy.
# exec 4<>v4user_file
Użyj aplikacji Flock, aby utworzyć udostępnioną lub wyłączną blokadę pliku.
# 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
Aby odblokować plik.
# flock -u -n 4
Ręczne blokowanie plików umożliwia testowanie interakcji otwierania i edytowania plików oraz testowanie funkcji przerwania blokady w usłudze Azure NetApp Files.
Następne kroki
- Często zadawane pytania dotyczące NFS usługi Azure NetApp Files
- Często zadawane pytania dotyczące protokołu SMB dla usługi Azure NetApp Files
- Rozwiązywanie problemów z blokadami plików na woluminie usługi Azure NetApp Files
- Często zadawane pytania dotyczące odporności aplikacji dla usługi Azure NetApp Files