In relazione a questa domanda su StackOverflow, mi chiedo se c'è un modo per svuotare la cache NFS / forzare Linux a vedere la copia più aggiornata di un file che si trova su una condivisione NFS.
Ho una situazione in cui quattro server Apache montano la stessa directory tramite NFS e quando un server apporta una modifica a un file, ci vogliono circa 5-10 secondi affinché gli altri server vedano tale modifica. Se viene apportata una seconda modifica a quel file all'interno di questa finestra, potrebbe sovrascrivere la prima modifica.
Il fstab
la voce per il filesystem è:
172.16.1.15:/home /media/home nfs vers=3,defaults,noauto,sync,acregmin=1 0 0
Esiste un comando che forzerà Linux a svuotare la cache di un file su una condivisione NFS?
Risposta accettata:
Controlla questi elementi e vedi se qualcuno funziona per te:
-
Sul cliente , se non stai già utilizzando
cto
opzione nelle opzioni colonna del/etc/fstab
riga per il tuo filesystem NFS, aggiungilo.cto
dice al client nfs di aprire i file tramite close-to-open, che gli fa aggiornare il file ogni volta che lo apre. -
Sul server , assicurati che il tuo filesystem sia esportato con
sync
opzione, e nonasync
. Con le scritture sincrone, il client verrà scaricato su disco quando il file viene chiuso. (o con nfs V3, ogni volta che viene eseguito un commit() ). Potrebbe esserci un calo delle prestazioni in questo modo, ma se stai eseguendo scritture su un filesystem NFS, vuoi sicuramentesync
impostato. -
Sulla scia di quel post di stackoverflow, l'apertura del file con O_DIRECT funziona solo se il kernel è stato compilato con CONFIG_NFS_DIRECTIO.
-
Inoltre, assicurati di avere le seguenti impostazioni nel tuo file httpd.conf:
EnableMMAP off
EnableSendfile off
Dalla documentazione di ottimizzazione delle prestazioni di Apache:
- Se si esegue la mappatura della memoria di un file che si trova su un filesystem montato su NFS e un processo su un altro computer client NFS elimina o tronca il file, il processo potrebbe ricevere un errore di bus la prossima volta che tenterà di accedere al contenuto del file mappato.
- La disattivazione di EnableSendfile non aiuta specificamente il comportamento di sincronizzazione/asincrono di NFS, ma deve essere disattivata se stai utilizzando Apache con NFS.