Linux의 NFSv3 구현에서 파일 삭제는 기본적으로 동기식입니까?

Linux의 NFSv3 구현에서 파일 삭제는 기본적으로 동기식입니까?

NFS 클라이언트에게 파일을 생성하도록 지시할 수 있음을 확인했습니다.쓰다sync mount옵션이나 플래그를 통해 동기화하지만 O_SYNC open(기본적으로 비동기식이므로) 파일이 동기화되었는지 여부는 표시되지 않습니다.삭제동기식입니다.RFC 1813이 경우 지정된 클라이언트 동작이 없는 것 같습니다.

에서 man 5 nfs:

동기식 마운트 옵션

NFS 클라이언트는 동기 마운트 옵션을 다른 파일 시스템과 다르게 처리합니다(일반적인 동기 및 비동기 마운트 옵션에 대한 설명은 mount(8) 참조). 동기화 또는 비동기가 지정되지 않은 경우(또는 비동기 옵션이 지정된 경우) NFS 클라이언트는 다음 이벤트 중 하나가 발생할 때까지 서버에 애플리케이션 쓰기 전송을 지연합니다. 메모리 압력으로 인해 시스템 메모리 리소스가 회수됩니다. 응용 프로그램은 sync(2), msync(2) 또는 fsync(3)를 사용하여 명시적으로 파일 데이터를 새로 고칩니다.

응용 프로그램은 close(2)를 사용하여 파일을 닫습니다.

파일은 fcntl(2)을 통해 잠기거나 잠금 해제됩니다.

즉, 일반적인 상황에서는 응용 프로그램에서 작성한 데이터가 파일을 호스팅하는 서버에 즉시 표시되지 않을 수 있습니다. 마운트 지점에 sync 옵션이 지정되면 해당 마운트 지점의 파일에 데이터를 쓰는 시스템 호출로 인해 시스템 호출이 사용자 공간에 제어권을 반환하기 전에 데이터가 서버로 플러시됩니다. 이는 클라이언트 전체에 걸쳐 더 나은 데이터 캐시 일관성을 제공하지만 상당한 성능 비용이 발생합니다.

애플리케이션은 O_SYNC 개방형 플래그를 사용하여 동기 마운트 옵션을 사용하지 않고 개별 파일에 대한 애플리케이션 쓰기가 즉시 서버로 이동하도록 할 수 있습니다.

close파일을 삭제/링크 해제 하는 것도 마찬가지라고 생각합니다 (기본적으로 동기로 지정되어 있지만 이에 대해서는 잘 모르겠습니다.

파일에 대한 하드 링크가 여전히 있으면 NFS 서버에서 파일이 실제로 삭제되지 않을 수 있다는 것을 알고 있지만 이는 이 질문의 범위를 벗어난다고 생각합니다.

관련 정보