손상된 NFS 연결로 인해 클라이언트 시스템이 정지되지 않도록 방지


21

여러 서버 (NFS 서버와 클라이언트 모두 데비안 8)간에 볼륨을 공유하는 NFS 4 공유가 있습니다. 최근 네트워크 중단으로 인해 클라이언트 시스템이 정지되는 문제가있었습니다.

우리의 NFS 옵션은 최소이었다 rw(기본값 있도록 hard, fg등).

현재 이러한 옵션을 실험하고 있지만 예상 한 동작을 얻지 못했습니다. rw,soft,bg,retrans=6,timeo=150

(소프트 위험의 일부를 상쇄하기 위해 재전송을 늘 렸습니다)

테스트하기 위해 따르는 절차는 다음과 같습니다.

  • 부팅 머신
  • cd/mnt/mountpoint
  • NFS 연결 확인
  • cd /
  • 네트워크를 죽이다 ifdown eth0
  • cd/mnt/mountpoint
  • ls

이 시점에서 커맨드 라인이 멈춰버 렸습니다. 얼마 후 'nfs : server [servername]이 응답하지 않고 시간이 초과되었습니다.'라는 메시지가 1 분에 한 번씩 반복되는 것처럼 보입니다.

작업이 실패하고 제어를 반환하기 위해 내가 원하거나 예상하는 것.

이 설정에서 내가 잘못 가고있는 곳을 누군가에게 알려주십시오.

(PS : 나는 또한 autofs로 마운트를 시도했지만 비슷한 동작을 보았습니다)

고맙습니다


3
soft어떤 상황에서도 권장하지 않습니다 . 오류시 데이터를 버릴 수 있습니다 . 대신 나는 제안 할 것이다 hard,intr.
roaima

2
@roaima-감사합니다. 그 의견은 웹에서 매우 널리 퍼져있는 것 같습니다 hard. intrman에 따라 NFS4에서 지원되지 않습니다.
UpTheCreek

2
(수정, intrNFS4에서는 지원하지만 커널> 2.6.25에서는 지원되지 않는 것 같습니다 )
UpTheCreek

'표준'답변과 다른 점은 현재 작업 디렉토리를 마운트 지점으로 변경하고 있다는 것입니다. 을 사용하지 않고 동일한 동작을 cd수행하지만 대신 수행 ls /mnt/mountpoint합니까? ls실패 후 쉘이 PWD에 따라 파일 시스템 조작을 시도하고있을 수 있습니다. (더 나쁜, 당신은 넣어 정도로 바보 인 경우에 .당신에 $PATH)
토비 Speight

답변:


4

intr를 눌렀을 때 다시 제어 할 수 있어야 ^C하지만 일반적으로 즉시 그렇지는 않습니다.

   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.

당신이 말했듯이, 기대는 여기서 문제입니다. 네트워크 문제는 일시적 일 수 있지만 작업 실패는 영구적입니다. 따라서 대부분의 작업은 기본적으로 작업이 완료 될 때까지 단순히 차단됩니다.

이것이 표준 답변이지만 현재 매뉴얼 페이지를 보면 다음과 같습니다.

                  The  intr / nointr mount option is deprecated after ker-
                  nel 2.6.25.  Only SIGKILL can interrupt  a  pending  NFS
                  operation on these kernels, and if specified, this mount
                  option is ignored  to  provide  backwards  compatibility
                  with older kernels.

따라서 NFS3 / NFS4 문제인 것처럼 보이지 않지만 intr작동 방식 에 대한 결정 입니다. 따라서 KILL프로세스를 수행 할 수 있어야 하지만 그다지 유용하지 않을 수 있습니다.

옵션이 제거 된 이유에 대한 토론을 찾을 수 없습니다. 프로세스를 죽일 수 있습니까?


고마워하지만 사람에 따르면 intrnfs 2/3는 지원하지만 4는 지원하지 않습니다.
UpTheCreek

@UpTheCreek, 왜 그런지 이해할 수 없습니다. 여기에 데비안 시스템이 없지만 사용 가능한 것으로 명시 적으로 언급되어 있습니다. 사용해 보셨습니까? "intr 서버로부터의 응답을 기다리는 동안 NFS4 작업 (하드 마운트에서)이 중단 될 수있게합니다."
BowlOfRed

2
네, 시도했지만 아무런 효과가 없었습니다. Man은 최근 커널 버전에서는 무시되었다고 말합니다.
UpTheCreek

전체 시스템이 정지되어 프로세스를 종료 할 수 없습니다. 내 경험으로는 명령을 내릴 수 없습니다. (어떤 경우에는 냉동 된 시스템에 SSH를 연결하는 것이 가능할 수도 있습니다.)
Monica Cellio 용 MountainX

3

내 대답 중 일부는 경험을 바탕으로 한 의견입니다. 내가 사실을 가지고있는 곳에서 나는 그들을 기억하려고한다.

  1. NFS 4는 버전 2 및 3에 비해 개선 된 것으로 간주되지만 개선 이 필요한 강력한 사용 사례는 아직 보지 못했습니다. 아마도 파일 시스템을 Samba를 사용하는 Windows 클라이언트와 NFS를 사용하는 Unix / Linux 클라이언트로 내보내려고하기 때문일 수 있습니다.
  2. soft거의 모든 상황에서 권장하지 않습니다 . 오류시 데이터를 버릴 수 있습니다 . 대신 나는 제안 할 것이다 hard,intr.
  3. 지적했듯이 intrNFS 4에는 유효하지 않지만 이는 NFS가 아닌 커널 변경 인 것으로 보입니다 .
  4. NFS 자동 마운터 ( autofs)는 NFS 버전 2 및 3의 사용 사례에 적합하며 NFS 파일 시스템이 필요할 때만 마운트하여 서버 오류로부터 클라이언트 시스템을 보호합니다.

내 제안은 NFS 4에서 NFS 3으로의 이동을 고려하여 특정 사용 사례에 도움이되는지 확인하는 것입니다. 다운 그레이드로 생각하지 마십시오.


1
고마워하지만 NFS3로 전환 할 수 없으며 내가 말했듯 intr이 최신 커널 버전에서는 지원되지 않습니다.
UpTheCreek

2
그래 아 외모처럼 intr 된다 (이것은 모두에서 2/3 옵션 만 열거 된 NFS4 지원 혼란을 조금이다 남자 4 만 옵션을)하지만, 최근 커널 버전에서 지원되지 않습니다.
UpTheCreek

1
"어떤 상황에서도 소프트를 권장하지 않습니다"-정말? 필자의 경우 이미지 디렉토리를 마운트하는 바쁜 웹 서버가 있습니다. 이미지 호스트가 다운되고 우리가 사용 hard하면 전체 웹 사이트가 다운됩니다. 를 사용하면 soft이미지가 깨질 수 있습니다 (캐싱 시스템이 거의 완전히 이미지를 완화하지만). soft파일 손상 을 허용 하는 위험은 그다지 중요하지 않습니다. 사이트보다 손상된 이미지 파일이 하나 더 있습니다.
Doug McLean

1
@DougMcLean도 비슷한 상황에 처해 있습니다 (바쁜 웹 팜, 이미지 서버, NFS ...) 나는 다소 특수한 경우라고 말할 것입니다. 내 이미지 서버가 신뢰할 수 없다면 soft수용 가능한 솔루션으로 정착했을 것 입니다. 답변이 "never"에서 "almost never"로 수정되었습니다. 감사!
roaima

1
메모리가 올 바르면이 시스템 정지 문제가 NFS v3에도있었습니다.
모니카 Cellio에 대한 MountainX
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.