NFS 캐시 : 서버에서 수정할 때 클라이언트에서 파일 내용이 업데이트되지 않음 서버 시스템 (v4),

설정은 다음과 같습니다. 하나의 NFS 서버 시스템 (v4), 여러 NFS 클라이언트 시스템.

클라이언트 시스템이 NFS 마운트에 파일을 쓰면 다른 클라이언트는 새로운 컨텐츠를 즉시 볼 수 있습니다. 문제 없습니다.

그러나 서버 시스템이 파일의 내용을 수정하면 클라이언트 ls에서 디렉토리를 수행 할 때 까지이 새로운 내용이 클라이언트에 표시되지 않습니다 .

나는이 불일치에 완전히 빠져 있습니다 … 어떤 도움이라도 크게 감사하겠습니다!

정보 :

  • 클라이언트와 서버 모두에서 nfs 1.2.3-r1
  • acregmin, acregmax, acdirmin, acdirmax, lookupcache : 기본값


답변

귀하의 의견에 따라 답변으로 추가하십시오.
해결책은 lookupcache=nonenfs 마운트 옵션 에 추가 하는 것입니다.

클라이언트가 파일을 처음 읽을 때 NFS 조회를 수행하여 NFS 파일 ID를 가져옵니다. 그런 다음 NFS 파일 ID를 캐시하고 파일을 다시 열면 캐시를 사용합니다. 일반적으로 파일이 업데이트 될 때 파일 ID가 동일하게 유지되는 것처럼 문제가되지 않습니다. 그러나 어떤 이유로 이전 파일이 제거되고 새 파일이 만들어 지거나 이름이 바뀌거나 같은 파일이 아닌 다른 파일이 만들어집니다.
이제 일반적으로 클라이언트가 존재하지 않는 파일 ID를 열려고 할 때 서버에서 오류가 발생하고 새 파일 ID를 얻기 위해 다른 조회를 수행하는 것처럼 문제가 아닙니다. 그러나 어떤 이유로 NFS 서버는 클라이언트가 이전 파일 ID를 열도록 허용합니다. 다른 클라이언트가 파일을 열어 놓았으므로 아직 삭제되지 않았을 것입니다.

어쨌든 그것을 해결하는 방법은 클라이언트에게 nfs mount 옵션을 사용하여 파일을 열기 전에 항상 nfslookup을 수행하도록 지시하는 것 lookupcache=none입니다. 이것의 단점은 NFS 서버에 더 많은 트래픽을 추가하기 때문에 파일을 자주 열면 비용이 많이들 수 있다는 것입니다.


답변

마운트 옵션을로 변경하십시오 hard,intr. 시스템에서 기본값이 부드럽다 고 생각합니다. 도움이 될 것입니다.


답변

다음을 사용하여 NFS 캐시를 수동으로 새로 고칠 수도 있습니다.

sudo mount /nfs-mount -o remount

… 성능을 저하시키는 마운트 옵션을 추가하지 않으려는 경우.