2012-11-15 2 views
0

NFS를 사용하여 두 대의 서버가 간단한 텍스트 파일을 통해 통신 할 수 있지만 때로는 정보를 얻기 위해 텍스트 파일을 읽는 서버가 불완전한 파일을 읽은 다음이 충돌로 인해 발생하는 것 같습니다. 그런 다음 충돌이 발생하는 "불완전한"파일을 살펴보고 파일이 완성되었습니다. 이 파일을 읽는 서버가 NFS에서 작성하기 전에 파일을 읽는 것이 가능합니까? 나는 리눅스의 mv을 사용하여 완전히 작성된 경우에만 로컬 시스템에서 NFS로 이동하므로 NFS에 불완전한 상태가 "절대로"있어서는 안됩니다.NFS 동기화 대 async

이 문제는 sync vs async와 관련이 있습니까? 지금 비동기를 사용하고 있습니다. 내 이해에서, 비동기는 당신이 쓰기에서 돌아오고 프로그램이 계속 실행될 수 있음을 의미하며이 쓰기는 나중에 발생합니다. 동기화는 프로세스가 계속 진행되기 전에 쓰기가 완료 될 때까지 프로세스가 대기한다는 것을 의미합니다. 동기화를 변경하면 문제가 해결 되나요? 아니면 이것을 처리하는 더 좋은 방법이 있습니까? 두 서버가 데이터베이스를 통해 통신 할 수 있다는 것을 알고 있지만 실제로 데이터베이스 사용량을 줄이려고 시도하고 있습니다. 감사!

답변

1

mvcp + rm으로 변환되며 NFS가 관련되지 않은 경우에도 확실하지 않습니다. 먼저 파일을 대상 파일 시스템의 임시 파일로 복사 한 다음 올바른 이름으로 바꿔야합니다. 대신 예를 들어 :

$ mv myfile.txt /mnt/targetfs/myfile.txt 

할 :

$ mv myfile.txt /mnt/targetfs/.myfile.txt.tmp 
$ mv /mnt/targetfs/.myfile.txt.tmp /mnt/targetfs/myfile.txt 

(. 이것은 올바른 이름이없는 상태에서 파일을 읽는 과정이이를 무시했다고 가정)

+0

죄송합니다, I didn 히 내 설명에이 점을 언급하지 않았지만 실제로는 이미 내가 한 일이며 여전히 문제가 있습니다. – srchulo