여러 노드가 파일에 데이터를 순서대로 쓰고 파일이 NFS에있는 프로젝트가 있습니다.C++ ofstreams를 사용하여 비동기 NFS에 파일 쓰기 또는 플러시
우리는 동기 NFS를 사용하기 전에 파일 스트림에 대한 플러시가 정상적으로 작동했습니다. 이제 우리는 비동기 NFS를 가지고 있으며 작동하지 않습니다. 분명히 캐싱은 그림으로 나타나고 다른 노드는 특정 노드에 의해 만들어진 변경 사항을 보지 않습니다.
강제로 캐시에서 디스크로 데이터를 플러시하는 방법이 있는지 알고 싶습니다. 나는 이것이 효율적이지 않다는 것을 안다. 그러나 우리가 실제 해결책을 제자리에 잡을 때까지 일을 얻을 것이다.
ofstream에는 기본 파일 시스템에 대한 아이디어가 없습니다. sync (2) 시스템 콜이 도움이 될 수 있습니다. 그러나 모든 미해결 파일 버퍼를 동기화합니다. – Oncaphillis
나는'flush()'에 대한 호출이'fsync()'또는'ioctl()'에 대한 기본 호출을 초래할 것이라고 추측합니다. 아마도 strace를 실행하여 그것이 가능한지 확인하십시오. 그렇다면 아마도'sync()'? 그렇지 않다면, 아마도'rdbuf()'에서 파일 디스크립터를 가져 와서'fsync()'또는'ioctl()'을 명시 적으로 호출 할 것인가? – Jason