En relación con esta pregunta en StackOverflow , me pregunto si hay una manera de vaciar el caché NFS / forzar Linux para ver la copia más actualizada de un archivo que está en un recurso compartido NFS.
Tengo una situación en la que cuatro servidores Apache montan el mismo directorio a través de NFS, y cuando un servidor realiza un cambio en un archivo, los otros servidores tardan entre 5 y 10 segundos en ver ese cambio. Si se realiza un segundo cambio en ese archivo dentro de esta ventana, puede sobrescribir el primer cambio.
La fstab
entrada para el sistema de archivos es:
172.16.1.15:/home /media/home nfs vers=3,defaults,noauto,sync,acregmin=1 0 0
¿Hay algún comando que obligue a Linux a vaciar la memoria caché de un archivo en un recurso compartido NFS?
Respuestas:
Verifique estos elementos y vea si alguno funciona para usted:
En el cliente , si aún no está utilizando la
cto
opción en la columna de opciones de la/etc/fstab
línea para su sistema de archivos NFS, agréguela.cto
le dice al cliente nfs que abra los archivos a través de close-to-open, lo que les hace actualizar el archivo cada vez que lo abren.En el servidor , asegúrese de que su sistema de archivos se exporte con la
sync
opción, y noasync
. Con escrituras sincrónicas, el cliente vaciará al disco cuando se cierre el archivo. ( o con nfs V3, cada vez que se realiza un commit () ). Puede haber un impacto en el rendimiento de esa manera, pero si está escribiendo en un sistema de archivos NFS, definitivamente quieresync
configurarlo.Siguiendo los pasos de esa publicación de stackoverflow, abrir el archivo con O_DIRECT funciona solo si el núcleo se compiló con CONFIG_NFS_DIRECTIO.
Además, asegúrese de tener la siguiente configuración en su archivo httpd.conf:
EnableMMAP off
EnableSendfile off
De la documentación de ajuste de rendimiento de apache:
fuente
cto
el cliente y lo intentaré. Yo tampoco tengosync
niasync
en el servidor; Acabo de agregarsync
.O_DIRECT
no me ayudó porque en realidad es PHP el que lee estos archivos y no puede abrirlosO_DIRECT
de ninguna manera que pueda encontrar.Dentro de un proceso dado, llamar a opendir y closedir en el directorio padre de un archivo invalida el caché NFS. Usé esto mientras programaba un programador de trabajos. Muy, muy servicial. ¡Intentalo!
fuente
Si abre el archivo dado en un programa no almacenado en caché (como vim o emacs) y luego lo cierra, actualizará / borrará el caché para ese archivo
fuente