느린 NFS 작업 중단

느린 NFS 작업 중단

NFS 디렉터리에 액세스하려고 하는 서버에 SSH를 통해 연결합니다. 그러나 연결 문제로 인해 ls이 디렉터리에서 기본 명령을 완료하는 데 시간이 오래 걸리는 경우가 있습니다(항상은 아니지만). SSH 연결을 종료하고 다시 여는 것보다 이러한 명령을 중단하는 더 좋은 방법이 있습니까? 보내도 SIGING효과가 없는 것 같습니다.

답변1

커널 버전 2.6.25 이후에는 액세스할 수 없는 NFS 마운트에 정지된 프로세스를 중지하는 유일한 방법은 SIGKILL입니다 kill -9.

이 커널 버전 이전에는 사용되는 마운트 옵션에 의존했습니다. 이 옵션을 사용하면 hard,nointr프로세스가 중단되지 않고 hard,intrNFS 중단 프로세스가 SIGINT를 사용하여 중단될 수 있습니다.

커널 2.6.25에서는 완전히 종료할 수 없는 프로세스는 일반적으로 매우 바람직하지 않다는 것이 인식되어 전체 intr/nointr마운트 옵션 쌍이 작동 불가능으로 설정되어 intr표준 작동 모드가 되었습니다. 동시에 이 상태의 프로세스는 신중하게 고려한 후에만 종료되어야 함을 나타내기 위해 신호 요구 사항이 SIGKILL로 강화되었습니다.

본질적으로 읽기 전용 프로세스(예: ls항상 종료해도 안전해야 함)이지만 프로세스가 NFS 파일 시스템에 있는 파일에 쓰는 경우 액세스할 수 없는 NFS 서버에 정지되어 종료됩니다. 일관되지 않은 상태에 있을 수 있으며 일부 애플리케이션별 복구 작업이 필요할 수 있습니다.

options 를 사용하면 soft,timeo=<number of deciseconds>지정된 시간이 지나면 오류와 함께 작업이 자동으로 실패하지만 이로 인해 데이터 무결성 문제가 발생할 수 있습니다. 예를 들어, 프로그램이 쓰기 가능 기능이 있는 NFS 기반 파일에 액세스하고 mmap(2)쓰기 작업이 실패한 경우 프로그램에 오류를 다시 보고할 방법이 없으며 프로그램이 계속 진행되지 않는 한 프로그램이 계속 진행되는 것을 방지할 수 있는 확실한 방법도 없습니다. /프로그램이 munmap(2)또는 를 호출할 때까지 msync(2). 따라서 메모리의 데이터와 디스크의 데이터가 동기화되지 않거나 메모리 매핑된 데이터가 프로그램 뒤에서 자동으로 미리 작성된 상태로 복원되어야 합니다.어느 것도 아니다그건 좋은 선택이고저것soft이것이 NFS 마운트 옵션이 일반적으로 권장되지 않는 이유입니다.

관련 정보