기본 NFS 서버가 오프라인 상태가 되면 공유를 마운트하는 모든 클라이언트는 다음의 영향을 받습니다.
1. `df` does not work (times out)
2. `lsof` does not work (times out)
3. I cannot unmount the share (umount times out)
4. I cannot restart the client PC, the shutdown process gets stuck
while trying to umount the dead NFS share:
`nfs server not responding still trying`
5. hard reboot (reset) works, but while booting the client PC gets
stuck while trying to mount the NFS share
이제 이 문제를 해결하는 방법을 알았습니다. 5. 항목을 fstab
으로 변경할 수 있습니다 noauto
. 하지만 다른 문제는 어떻습니까? 클라이언트에는 NFS
죽은 NFS 서버에 대한 대기를 중지할 수 있는 지능이 없습니까? 왜 무한정 기다리나요? 무슨 일이 일어나더라도 x
몇 초 후에 그가 시도를 포기하도록 어딘가에 시간 초과를 설정할 수 있습니까?
답변1
예, 이것이 NFS의 특성입니다. 클라이언트는 NFS 리소스가 반환될 때까지 무기한 기다립니다. 믿거나 말거나, 이렇게 작동하도록 설계되었습니다!
자동 마운트
autofs
더 나은 접근 방식 은 NFS 공유를 무기한 마운트하는 대신 필요에 따라 자동으로 마운트하는 도구 와 같은 것을 사용하는 것입니다 .
NFS만 사용
@Patrick이 주석에서 지적했듯이 soft
NFS 공유를 탑재할 때 이 옵션을 사용하면 이 동작을 줄일 수 있습니다.
출처 발췌:http://www.tldp.org/HOWTO/NFS-HOWTO/client.html
부드러운
파일 요청이 실패하면 NFS 클라이언트는 파일 액세스를 요청한 클라이언트 컴퓨터의 프로세스에 오류를 보고합니다. 일부 프로그램은 이 문제를 침착하게 처리할 수 있지만 대부분은 그렇지 않습니다. 이 설정은 파일 손상 및 데이터 손실의 원인이 되므로 사용하지 않는 것이 좋습니다. 메일을 중요하게 생각한다면 특히 메일 디스크에 사용해서는 안 됩니다.
딱딱한
서버가 충돌하면 NFS 마운트 파일 시스템의 파일에 액세스하는 프로그램이 중단됩니다. intr도 지정하지 않으면 프로세스를 중단하거나 종료할 수 없습니다("긍정적 종료" 제외). NFS 서버가 다시 온라인 상태가 되면 프로그램은 중단 없이 원래 위치에서 계속 실행됩니다. 모든 NFS 마운트 파일 시스템에서는 hard,intr을 사용하는 것이 좋습니다.
/etc/fstab
당신의 파일 에
# device mountpoint fs-type options dump fsckord
...
master.foo.com:/home /mnt/home nfs rw,soft 0 0
...
답변2
(오래된 글인 것은 알지만...)
"lazy" 마운트 지점을 마운트 해제합니다.
umount -l -f /마운트/포인트
-l, --lazy
Lazy unmount. Detach the filesystem from the filesystem hierarchy now, and cleanup all references to the filesystem as
soon as it is not busy anymore. (Requires kernel 2.4.11 or later.)
이렇게 하면 오래된 NFS 마운트 지점이 마운트 해제되고 오래된 NFS 마운트로 인해 서버 작업이 방해받지 않습니다.
NFS 공유가 다시 나타나면 수동으로 마운트해야 합니다.
답변3
오프라인 NFS 서버에서 디렉터리를 마운트 해제하려고 시도하는 동안 뭔가를 발견했습니다. 나의 첫 번째 반응은 가장 낮은 하위 디렉터리를 먼저 마운트 해제한 다음 디렉터리 트리의 맨 위로 이동하는 것이었습니다. 그러나 --force
하위 디렉터리 사용 및 마운트 해제는 --lazy
시간 초과로 인해 실패합니다. 마침내 나에게 도움이 된 것은 내가 --force
다음과 같이 최상위 수준에서 사용했을 때였습니다.--lazy
umount --lazy --force /net/machine
예를 들어, 낮은 디렉토리를 먼저 마운트 해제하지 마십시오.
umount --lazy --force /net/machine/subdir