Porównaj ceny domen i usług IT, sprzedawców z całego świata

rename () o atomowości NFS


Mam proces, który:
  • zapisuje nowy plik .tmp.
  • używa
             rename()       
    wywołanie systemowe w celu zastąpienia istniejącego pliku.
  • Dostęp do tego pliku uzyskuje zdalny klient NFS.

Robimy to, ponieważ potrzebujemy aktualizacji plików atomowych, a
         rename()
http://man7.org/linux/man-pages/man2/rename.2.html
specyfikacja mówi:

Jeśli newpath już istnieje, zostanie zastąpiony atomowo, więc nie ma punktu, w którym inny proces próbujący uzyskać dostęp do newpath stwierdzi, że go brakuje. Jednak prawdopodobnie pojawi się okno, w którym zarówno oldpath, jak i newpath odwołują się do pliku o zmienionej nazwie.

Polegamy na tym zachowaniu.
Ale tu jest haczyk - całkiem niedawno po przejściu na nowy NetApp (tryb klastrowy, z trybu 7) mieliśmy proces, który bardzo często wywala
       ENOENT
- Nie ma takiego pliku lub katalogu.
Mówiąc „bardzo rzadko” mam na myśli - 4 lub 5 razy w ciągu ostatnich kilku tygodni, proces, który ma miejsce co około 5 minut.
Sprawdzam u dostawcy, czy może to być błąd na jego serwerze NFS.
Ale tak naprawdę próbuję dowiedzieć się, czy ta atomowa gwarancja dotyczy NFS. Czy ktoś może mi wyjaśnić, jeśli
       rename()
Czy gwarancja niepodzielności dotyczy skryptów wielu klientów NFS? Nie jestem pewien, czy ta funkcja zadziałała, ale nigdy

gwarantowane

głównie.
Z:

RFC1813
https://tools.ietf.org/html/rf ... edura RENAME zmienia nazwę pliku określonego przez z.nazwa w katalogu, z.dir, na to.nazwa w katalogu, na.dir. Operacja musi być niepodzielna dla klienta.

W razie potrzeby mamy klientów SL 6.5 uzyskujących dostęp do magazynów danych NFS na ONTAP-CDOT 8.3.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:


Unikanie warunków wyścigu w NFS

Jest to zawsze przyjemne zadanie, a jedynym sposobem obejścia tego problemu bez przepisywania aplikacji jest zamontowanie udostępnionego zasobu z opcjami.
         sync
i zmień serwer NFS, który ma być używany
         no_wdelay
... Nie pamiętam, jak ustawić no_wdelay w NetApp.
Wadą tej metody jest to, że jeśli masz wiele jednoczesnych zapisów do tego udziału, będą one wykładniczo wolniejsze. Możesz zapytać NetApp, jak ustawić no_wdelay na tym zasobie lub po prostu opisać im problem. Mogą mieć lepsze pomysły. Nie dotykałem NetApp od co najmniej 8 lat.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się