Relacionado a esta pergunta no StackOverflow , pergunto-me se existe uma maneira de liberar o cache do NFS / forçar o Linux a ver a cópia mais atualizada de um arquivo que esteja em um compartilhamento NFS.
Tenho uma situação em que quatro servidores Apache montam o mesmo diretório via NFS e, quando um servidor faz uma alteração em um arquivo, leva de 5 a 10 segundos para os outros servidores verem essa alteração. Se uma segunda alteração for feita nesse arquivo nessa janela, ela poderá substituir a primeira.
A fstab
entrada para o sistema de arquivos é:
172.16.1.15:/home /media/home nfs vers=3,defaults,noauto,sync,acregmin=1 0 0
Existe um comando que forçará o Linux a liberar o cache de um arquivo em um compartilhamento NFS?
Respostas:
Verifique estes itens e veja se há algum trabalho para você:
No cliente , se você ainda não estiver usando a
cto
opção na coluna de opções da/etc/fstab
linha do seu sistema de arquivos NFS, adicione-a.cto
diz ao cliente nfs para abrir arquivos via close-to-open, o que os faz atualizar o arquivo sempre que o abrem.No servidor , verifique se o seu sistema de arquivos foi exportado com a
sync
opção, e nãoasync
. Com gravações síncronas, o cliente liberará para o disco quando o arquivo for fechado. ( ou com a NFS V3, sempre que uma confirmação () é feita ). Pode haver um desempenho atingido dessa maneira, mas se você estiver gravando em um sistema de arquivos NFS, definitivamente desejasync
definir.Seguindo o post dessa stackoverflow, a abertura do arquivo com O_DIRECT funcionará apenas se o kernel tiver sido compilado com CONFIG_NFS_DIRECTIO.
Além disso, verifique se você possui as seguintes configurações no seu arquivo httpd.conf:
EnableMMAP off
EnableSendfile off
Na documentação de ajuste de desempenho do apache:
fonte
cto
no cliente e vou tentar isso. Eu não tenhosync
nemasync
no servidor; Acabei de adicionarsync
.O_DIRECT
não me ajudou, porque na verdade é o PHP que está lendo esses arquivos e não pode abri-losO_DIRECT
da maneira que encontrar.Dentro de um determinado processo, chamar opendir e closedir no diretório pai de um arquivo invalida o cache do NFS. Eu usei isso ao programar um agendador de tarefas. Muito, muito útil. Tente!
fonte
Se você abrir o arquivo fornecido em um programa não armazenado em cache (como vim ou emacs) e depois fechar, ele atualizará / limpará o cache desse arquivo
fonte