손상된 NFS 마운트로 인해 디렉터리가 잠기지 않도록 하시겠습니까?

손상된 NFS 마운트로 인해 디렉터리가 잠기지 않도록 하시겠습니까?

다소 흥미로운 설정이 있습니다. 폴더에 여러 원격 NFS 서버가 있는 서버를 마운트한 다음 Samba를 통해 폴더를 다시 내보냅니다. 모든 공유 폴더를 한 곳에 보관하는 공유 프록시라고 생각하세요.

하지만 내 문제는 마운트 중 하나가 실패할 때마다(서버 다시 시작, 서비스 다시 시작, 서버에서 내보낸 외부 하드 드라이브 제거 등) 마운트를 읽으려는 시도가 영구적으로 차단된다는 것입니다. 이는 또한 lsSamba를 통해 연결하는 사용자와 마찬가지로 해당 디렉터리에서 실행하는 것이 중지됨을 의미합니다. 이로 인해 크론 작업이 여러 번 차단되어 수백 개의 프로세스가 차단되어 서버가 거의 충돌할 뻔했습니다. 일반적 ls으로 완료를 기다리지 않는(취소할 수 없음) 터미널을 열고 를 실행하고 for i in *; do sudo umount -l -f $i; done;작동하기를 바라며 문제를 해결한 다음 모든 것을 다시 설치해야 하기 때문에 이는 매우 짜증나는 일입니다.

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

답변1

일반적으로 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 마운트 옵션에 대한 추가 정보

관련 정보