재부팅 순서가 중요합니다. 클라이언트 후 서버를 재부팅하면이 상황이 발생할 수 있습니다. 오래된 NFS 핸들은 클라이언트가 파일을 열었 음을 나타내지 만 서버는 더 이상 파일 핸들을 인식하지 못합니다. 경우에 따라 NFS는 시간 초과 후 데이터 구조를 정리합니다. 다른 경우에는 NFS 데이터 구조를 직접 정리하고 나중에 NFS를 다시 시작해야합니다. 이러한 구조의 위치는 다소 O / S에 따라 다릅니다.
먼저 서버와 클라이언트에서 NFS를 다시 시작하십시오. 파일 핸들이 지워질 수 있습니다.
다른 서버에서 열린 파일로 NFS 서버를 재부팅하는 것은 권장되지 않습니다. 서버에서 열린 파일을 삭제 한 경우 특히 문제가됩니다. 서버는 파일이 재부팅 될 때까지 파일을 열어 둘 수 있지만 재부팅하면 서버 측의 메모리 내 파일 핸들이 제거됩니다. 그러면 클라이언트는 더 이상 파일을 열 수 없습니다.
서버에서 사용 된 마운트를 결정하는 것은 어렵고 신뢰할 수 없습니다. 이 showmount -a
옵션은 일부 활성 마운트를 표시 할 수 있지만 모든 마운트를보고하지는 않습니다. 잠긴 파일은 쉽게 식별 할 수 있지만 잠금을 활성화해야하며 파일을 잠 그려면 클라이언트 소프트웨어에 의존합니다.
lsof
클라이언트에서 마운트에서 파일을 연 프로세스를 식별 할 수 있습니다 .
NFS 마운트 에서 hard
및 intr
마운트 옵션을 사용합니다 . 이 hard
옵션을 사용하면 IO가 무기한 재 시도됩니다. 이 intr
옵션을 사용하면 프로세스가 NFS IO가 완료되기를 기다리는 경우 종료 될 수 있습니다.
hard, intr
것이 좋습니다. 그러나 NFS는 시도 할 때마다 시간 초과를 두 배로 늘립니다. 그래서 당신은 최고의 설정timeo=1
및retrans=5
정도. 이 점에 유의 한다 NFS를 다시 시작한 후 NFS 서버에 무거운 부담을. NFS 서비스를 너무 자주 재시작하지 마십시오.;)