젠투 박스와 윈도우 박스가있는 작은 로컬 네트워크가 있습니다. 다음과 같은 명령을 사용하여 Windows 상자에서 시작되는 공유를 Gentoo 상자에 마운트합니다.
mount -t cifs -o username=WindowsUsername,password=thepassword,uid=pistos //192.168.0.103/Users /mnt/windowsbox
대부분의 경우 모든 것이 제대로 작동하며 문제없이 읽고 쓸 수 있습니다. 그러나 몇 주 정도마다 연결 또는 탑재 지점이 작동하지 않거나 중단 된 것처럼 보이므로 탑재 지점에 액세스하려는 프로세스가 D 상태 (디스크 또는 I / O 대기)에 멈 춥니 다. 이러한 프로세스는 TERM 및 KILL 신호에 영향을받지 않습니다. 네트워크에서 Windows 상자를 분리했다가 다시 연결해도 도움이되지 않습니다. 얼어 붙은 상태는 5 분 이상 지속됩니다. 다른 이름으로 저장 대화 상자, ls
명령 등을 고정시키기 때문에 정말 실망스럽고 정상적인 작업을 방해 umount
합니다. 마운트 지점에서을 발행 하면 마운트 지점이 사용 중이거나 마운트 지점이 사용 중임을보고합니다. 결국 데드 상태가 자체적으로 해결되고 마운트 지점이 마운트 해제되거나 umount
지연없이 가능합니다 .
내 생각에 이것은 연결 / 마운트가 유휴 상태이거나 Windows 컴퓨터가 유휴 상태 일 때 발생합니다. 나는 확실하지 않다.
왜 이런 일이 발생하며이를 방지하기 위해 어떻게해야합니까? 아니면 어떻게 이러한 D- 상태 프로세스를 마음대로 성공적으로 죽일 수 있습니까?
아마도 관련 : CIFS 마운트는 읽기에 응답하지 않습니다
답변
왜 문제가 발생하는지 확실하지 않지만 해결 방법으로 매분마다 cron을 통해 실행 touch /mnt/windowsbox/keepalive.txt
하거나 echo "I am still alive." >/mnt/windowsbox/keepalive.txt
실행 하려고 시도 했습니까? 그렇게하면 연결이 활성화되어 있어야합니다.
답변
나도 몇 달마다 이것을 만난다. sudo umount -l
내 해결 방법입니다. https://stackoverflow.com/a/96288/2097284
답변
또 다른 잠재적 인 대답은 cron을 통해 정기적으로 마운트의 파일에 쓰는 것을 제안했습니다. 대신 smbclient 프로그램을 사용하여 공유에 연결하고 연결을 끊는 것이 좋습니다.
나는 이것을 달성하기 위해 다음과 같은 bash 스크립트를 작성했다.
#!/bin/bash
su usernamehere -c "smbclient \\\\\\\\\\\\\\\\servernamehere\\\\\\\\sharenamehere passwordhere -c exit" >/dev/null 2>&1
이 명령은 공유에 새로 연결 한 다음 exit 명령을 실행하여 명령 줄에서 설정 한 연결을 즉시 종료합니다. 백 슬래시를 이스케이프해야하고 큰 따옴표로 묶인 문자열 안에 있으면 이스케이프를 이스케이프해야하므로 서버 이름 앞에 슬래시가 8 개, 공유 이름 앞에 4가 있어야합니다. 아마도 더 똑똑한 방법이 있지만 이것이 효과가있는 것 같습니다.
어쩌면 한 번에 몇 분 동안 연결을 열어 두어 더 안정적으로 만들 수있는 방법이 있지만 그것은 내 리그에서 약간 벗어났습니다.