데비안에서 NFS 읽기 캐시는 어떻게 작동합니까?


12

NFS를 사용하여 많은 작은 파일을 제공 할 계획입니다. 클라이언트 측 캐싱이 매우 중요하므로 매우 자주 읽습니다. NFS가 이것을 처리합니까? 어떤 방식으로 클라이언트 쪽 캐싱을 늘리는 방법이 있습니까?

... 또는 다른 해결책을보아야합니까? rsync 또는 unison을 사용하여 주기적으로 동기화하는 것은 파일이 때때로 클라이언트 측에서 수정되므로 옵션이 아닙니다.

답변:


6

첫째, NFS는 캐시 일관성을 제공하지 않으므로 필요한 경우 다른 곳을 찾아야합니다.

NFS가 지정하는 것은 개방형 일관성이라는 약한 모델입니다. 파일이 닫히면 더티 데이터가 서버로 플러시됨을 의미합니다. 반대로 파일을 열면 속성 확인이 수행됩니다. 즉, 클라이언트가 해당 파일에서 페이지를 캐시 한 경우 해당 페이지가 여전히 유효한지 확인합니다.

사양 자체는 아니지만 대부분의 NFS 클라이언트에는 속성 캐시 시간 초과라는 이름이 있습니다. 즉, 클라이언트가 서버에 접속하여 유효성을 다시 확인하기 전에 디렉토리 또는 열린 파일의 속성이 얼마나 오래된 지 알 수 있습니다. Linux에서는 actimeo = etc. 마운트 옵션을 참조하십시오. 값이 클수록보다 적극적인 캐싱이 가능하지만 그 동안 다른 클라이언트가 파일을 업데이트 한 경우 오래된 데이터를 사용할 위험이 높아집니다.


당신의 답변에 감사드립니다. 그래서, 나는 이것을 올바르게 이해하기 위해 클라이언트 측 "속성 캐시"에는 파일 / 디렉토리 속성에 대한 캐시 만 포함합니다. 캐시에 파일 내용이 포함되어 있지 않습니까?
Ztyx

예, 클라이언트는 로컬 파일 시스템과 마찬가지로 페이지 컨텐츠를 파일 캐시에 캐시합니다. 캐시 된 파일 내용의 무효화 여부 및시기를 결정하는 데 속성이 사용됩니다.
janneb

아 답변 해 주셔서 감사합니다. 좋은 하루 보내세요
Ztyx

"페이지"라고 말하면 파일의 일부가 캐시 될 수 있고 파일의 일부가 캐시되지 않을 수 있음을 의미하는 것 같습니다. 파일 캐시가 아닙니까? 캐시 할 수있는 파일의 세분입니다.
CMCDragonkai

@CMCDragonkai : 커널은 페이지 단위 (보통 4KB)에서 캐시 된 파일 내용을 추적하므로 파일의 일부를 캐시 할 수 있습니다. NFS에서 캐시 무효화가 정확히 어떻게 작동하는지 잘 모르겠습니다. 서버에 연결하여 속성을 재확인 할 때 속성 캐시 시간 초과 후 재확인이 실패하면 해당 파일에 속한 모든 캐시 된 페이지가 삭제됩니다.
janneb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.