2012-12-03 4 views
0

내 로컬 컴퓨터에 NFS 마운트를 마운트했습니다. (내 컴퓨터가 NFS 클라이언트라고 가정합니다.) NFS에 파일이 기록되고 있습니다. NFS 마운트 (NFS 서버)를 호스트하는 원격 시스템에 의해 마운트하십시오. 자, 로컬 머신에서 읽기 전에 원격 머신에 쓰여지는 파일이 닫혀 있다는 것을 JAVA를 사용하여 어떻게 감지 할 수 있습니까?원격 NFS 서버에 현재 쓰여지고있는 파일에 대한 NFS 클라이언트 측 잠금

아니면 내가 원하는 것을 성취 할 수있는 대안이 있습니까?

편집 : 원격 NFS 서버를 제어 할 수 없다는 점을 말씀 드리고 싶습니다. 읽기 전용 모드로만 마운트 할 수 있습니다.

+1

원격 시스템에서 파일을 닫고 데이터를 플러시 할 때까지 이전 데이터를 읽습니다. – Petesh

+0

Petesh : 필자는 NFS 클라이언트에서 읽기 전에 파일이 닫혀 있는지 확인해야합니다. 어떻게해야합니까? –

+0

파일 잠금을 사용하여 주문을 시행 할 수 있지만 원격 파일 프로토콜이기 때문에 일관성이 보장되지는 않습니다. – Petesh

답변

1

NFS 서버 또는 NFS 서버의 파일을 업데이트하는 프로그램을 제어 할 수 없다고 말씀 하셨듯이 할 수있는 일이 많지 않습니다. 실제로 사용할 수있는 유일한 방법은 파일이 업데이트되면 수정 시간이 업데이트된다는 것입니다. 이 파일은 File.lastModified()를 사용하여 Java 클라이언트에서 사용할 수 있어야합니다. 응용 프로그램에서 마지막 수정 날짜를 기억하면 마지막으로 읽은 후 처리 할 데이터가 있는지 최소한 알 수 있습니다. 확실히 완벽하지는 않습니다. 경주 조건 등이 있지만 응용 프로그램이 필요로하는 것과 수행하는 것에 따라 충분할 수 있습니다. 파일이 닫혔는지 또는 서버에서 열려 있는지 알 수 없습니다.

파일 수정이 느리게 나타나는 경우 noac 마운트 옵션을 사용하여 마운트 할 수도 있습니다. 이것은 일반적인 NFS 클라이언트에서 NFS 성능을 아프게하지만 컴퓨터가 해당 드라이브에서 다른 많은 NFS 파일을 사용하지 않을 경우 작동 할 수 있습니다. "man nfs"을 참조하십시오.

참고로 NFS 서버의 응용 프로그램이 잠금을 사용한다는 표시가 없으므로 파일 잠금이 도움이된다는 것을 알 수 없습니다.