깨진 NFS 마운트가 디렉토리를 잠그지 못하게 하시겠습니까? 보관하는 공유 프록시라고 생각하십시오. 내 문제는

다소 흥미로운 설정이 있습니다. 하나의 폴더에 여러 개의 원격 NFS 서버가 마운트 된 후 해당 폴더가 Samba를 통해 다시 내보내집니다. 모든 공유 폴더를 한 곳에 보관하는 공유 프록시라고 생각하십시오.

내 문제는 마운트 중 하나가 다운 될 때마다 (서버 재시작, 서비스 재시작, 서버가 내보내는 외부 하드 드라이브 등) 마운트 블록을 영원히 읽으려는 시도입니다. 또한 ls해당 디렉토리에서 실행이 중지되고 Samba를 통해 연결하는 사용자도 정지됩니다. 이로 인해 수백 개의 프로세스가 차단되어 크론 작업 중 하나가 몇 배나 차단되어 서버가 거의 충돌했습니다. 일반적으로 ls완료 (취소 할 수 없음)를 기다리고 , 실행하고 for i in *; do sudo umount -l -f $i; done;, 작동하고, 문제를 해결하고, 모든 것을 다시 마운트 하기 를 기다리지 않는 터미널을 가져와야하기 때문에 매우 성가시다 .

어떤 이유로 든 연결이 실패하면 (바람직하게는 재시도 기간이 지난 경우) 마운트 자체가 마운트되지 않거나 최소한 차단되지 않는다는 규정으로 NFS 공유를 마운트하는 방법이 있습니까?



답변

일반적으로 NFS를 마운트 할 때 다음과 유사한 플래그를 설정하는 것이 좋습니다.

bg,intr,soft
   bg      If  the  first  NFS  mount  attempt times out, retry the mount in the
           background.  After a mount operation is backgrounded, all subsequent mounts
           on the same NFS  server  will  be  backgrounded immediately, without first
           attempting the mount.  A missing mount point is treated as a timeout, to
           allow for nested NFS mounts.
   soft    If  an  NFS  file operation has a major timeout then report an I/O error
           to the calling program.  The default is to continue retrying NFS file
           operations indefinitely.
   intr    If  an  NFS  file  operation  has  a major timeout and it is hard mounted,
           then allow signals to interupt the file operation and cause it to return
           EINTR to the calling program.  The default is to not allow file operations
           to be interrupted.

당신은 또한 설정할 수 있습니다 :

timeo=5,retrans=5,actimeo=10,retry=5

NFS 서버가 재 시도를 기다리지 않고 연결을 끊으면 NFS 마운트 시간이 초과되고 디렉토리에 액세스 할 수 없게됩니다.

한 번 봐 가지고 이 링크를 NFS 마운트 옵션에 대한 자세한 내용은