여러 서버(NFS 서버와 모든 Debian 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: 서버 [서버 이름]이 응답하지 않습니다. 시간이 초과되었습니다."라는 메시지가 1분마다(무기한) 반복되는 것으로 나타납니다.
작업이 실패하고 제어권이 반환되면 어떻게 되는지 원하거나 기대합니다.
누군가 이 설정에 어떤 문제가 있는지 말해 줄 수 있나요?
(PS: autofs로 마운트도 시도했지만 비슷한 동작을 보였습니다.)
감사해요
답변1
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
하지만 아마도 별로 유용하지 않을 것입니다.
이 옵션이 제거된 이유에 대한 논의를 찾을 수 없습니다. 프로세스를 kill -KILL할 수 있습니까?
답변2
내 답변 중 일부는 경험을 바탕으로 한 의견입니다. 사실이 있으면 (기억하려고) 링크를 걸어 놓겠습니다.
- NFS 4가 고려됩니다.개선하다버전 2와 3 이상. 그러나 개선이 필요한 강력한 사용 사례를 본 적이 없습니다. 아마도 내 목표는 Samba를 사용하는 Windows 클라이언트와 NFS를 사용하는 Unix/Linux 클라이언트로 파일 시스템을 내보내는 것이기 때문일 수 있습니다.
soft
나는 거의 모든 상황에서 그것을 권장하지 않습니다. 데이터를 허용합니다오류로 인해 폐기됨. 대신에 추천합니다hard,intr
.- 당신이 지적했듯이
intr
이것은 NFS 4에서는 작동하지 않지만 이것은커널 변경NFS 대신. - NFS 자동 마운트(
autofs
)는 NFS 버전 2 및 3을 사용하는 사용 사례에 적합하며 필요할 때만 NFS 파일 시스템을 마운트하여 서버 오류로부터 클라이언트 시스템을 보호하는 데 도움을 줍니다.
제가 드릴 수 있는 조언은 NFS 4에서 NFS 3으로의 마이그레이션을 고려하고 이것이 특정 사용 사례에 도움이 되는지 확인하라는 것입니다. 다운그레이드라고 생각하지 마세요.