W związku z tym pytaniem dotyczącym StackOverflow zastanawiam się, czy istnieje sposób, aby opróżnić pamięć podręczną NFS / zmusić Linuksa, aby wyświetlić najbardziej aktualną kopię pliku znajdującego się w udziale NFS.
Mam sytuację, w której cztery serwery Apache montują ten sam katalog za pośrednictwem NFS, a gdy jeden serwer wprowadza zmianę do pliku, inne serwery zauważą tę zmianę w ciągu około 5–10 sekund. Jeśli druga zmiana zostanie wprowadzona do tego pliku w tym oknie, może ona zastąpić pierwszą zmianę.
fstab
Wejście do systemu plików to:
172.16.1.15:/home /media/home nfs vers=3,defaults,noauto,sync,acregmin=1 0 0
Czy istnieje polecenie, które zmusi Linuksa do opróżnienia pamięci podręcznej jednego pliku na udziale NFS?
Odpowiedzi:
Sprawdź te elementy i sprawdź, czy coś dla Ciebie działa:
Na kliencie , jeśli jeszcze nie korzystasz z
cto
opcji w kolumnie opcji/etc/fstab
wiersza dla systemu plików NFS, dodaj ją.cto
mówi klientowi nfs, aby otwierał pliki przez zamknięcie, co powoduje, że odświeżają plik za każdym razem, gdy go otwierają.Na serwerze upewnij się, że system plików został wyeksportowany z
sync
opcją, a nieasync
. W przypadku zapisów synchronicznych klient zostanie opróżniony na dysk, gdy plik zostanie zamknięty. ( lub z nfs V3, ilekroć dokonywana jest commit () ). W ten sposób może wystąpić spadek wydajności, ale jeśli robisz zapisy do systemu plików NFS, zdecydowanie chceszsync
ustawić.Idąc za piętami tego postu przepełnienia stosu, otwieranie pliku za pomocą O_DIRECT działa tylko wtedy, gdy jądro zostało skompilowane z CONFIG_NFS_DIRECTIO.
Upewnij się także, że w pliku httpd.conf masz następujące ustawienia:
EnableMMAP off
EnableSendfile off
Z dokumentacji dostrajania wydajności apache:
źródło
cto
na kliencie i spróbuję tego. Nie mamsync
aniasync
na serwerze; Właśnie dodałemsync
.O_DIRECT
nie pomogło mi, ponieważ to PHP czyta te pliki i nie może ich otworzyćO_DIRECT
w żaden sposób, jaki mogę znaleźć.W ramach danego procesu wywołanie opendir i closedir w katalogu nadrzędnym pliku unieważnia pamięć podręczną NFS. Użyłem tego podczas programowania harmonogramu zadań. Bardzo, bardzo pomocny. Spróbuj!
źródło
Jeśli otworzysz dany plik w niebuforowanym programie (takim jak vim lub emacs), a następnie zamkniesz, zaktualizuje / wyczyści pamięć podręczną tego pliku
źródło