sshfs 마운트의 서버 연결 해제를 처리하는 더 좋은 방법은 무엇입니까?


58

sshfs를 통해 마운트 된 여러 디렉토리가 있습니다 . 때때로 서버와의 연결이 끊어집니다 (나에 의해 구성 할 수 없음). 나는 보통 이런 디렉토리를 마운트합니다

sshfs user@server.example.com:/home/user /mnt/example

서버 연결이 끊어지면 sshfs 하위 시스템은 디렉토리를 마운트 해제 / 해제 하지 않고 대신 액세스 할 수 없도록 잠급니다. 입력 할 때 마운트가 여전히 표시됩니다 mount. 입력 할 때

ls /mnt/example

프로세스가 잠 깁니다 ( Ctrl+ 도 c도움이되지 않습니다). 그러므로 나는

sudo umount -l /mnt/example
# find pid of corresponding process:
ps aux | grep example.com
kill -9 <pid of locked sshfs process>

이것을 다루는 더 좋은 방법이 있습니까? 분명히 sshfsumount를 수행 하고 정리해야합니다. 이상적으로는 자동으로 다시 연결됩니다.


이것은 TCP 터널을 자동으로 다시 연결 하는 작업입니다 .
Gilles

4
유지 관리 소프트웨어를 사용하는 솔루션 무엇입니까?
Sebastian

답변:


45

"reconnect"옵션을 사용하여 sshfs를 실행할 수 있습니다. sshfs를 PAM / automount와 함께 사용하여 네트워크의 각 워크 스테이션에 대한 서버 파일을 공유합니다. 우리는 -o reconnect를 sshfs의 매개 변수로 사용합니다. 대부분의 사용자가 컴퓨터를 일시 중지하고 sshfs가 다시 연결되지 않거나 응답하지 않기 때문입니다.

예를 들면 다음과 같습니다.

sshfs mvaldez@192.168.128.1:/home/mvaldez/REMOTE /home/mvaldez/RemoteDocs -o reconnect,idmap=user,password_stdin,dev,suid

참고로 원격 컴퓨터가 실제로 작동하지 않으면 sshfs가 오랫동안 응답하지 않을 수 있습니다.


11

시간 초과를 줄이면이 ​​문제를 해결할 수 있습니다. $HOME/.ssh/config또는에 다음을 추가하십시오 /etc/ssh/ssh_config.

ServerAliveInterval 15
ServerAliveCountMax 3

결과적으로 45 초의 시간 초과가 발생합니다.


3
이것은 문제가 SSH의 결함 인 경우에만 도움이됩니다. sshfs기본 ssh프로세스의 죽음을 정상적으로 처리하지 못하는 더 큰 문제가 있습니다.
bahamat

실제로 이것은 해결 방법 일 뿐이며 sshfs 내에서 수정해야합니다.
Thor

그러나 여러 원인 중 하나의 원인을 처리하는 해결 방법 만 있습니다. 그의 문제는 킵 얼라이브와 관련이 없을 수도 있습니다. 문제의 본질은 원인에 대한 것이 아니라 일관된 상태로 정리하는 것에 관한 것입니다.
bahamat

5

스토리지에 사용하는 서버와 내가 살고있는 공간이 부족한 경우 다른 위치에 보관합니다. 파일을 네트워크로 가져 오기 위해 sshfs를 사용하여 서버에서 파일을 마운트하는 라즈베리 파이를 사용합니다.

최근에 정전으로 인해 라즈 비안 제시로 업그레이드해야했고 sshfs가 심각하게 불안정하다는 것을 깨달았습니다. 폴더가 올바르게 마운트되었지만 얼마 후 폴더에 연결할 수 없으며 마운트 내용을 나열하려는 경우 라즈베리 파이가 정지됩니다.

내가 시도한 것은 :

  1. fstab에서 다시 연결 사용
  2. .ssh / config 파일에서 ServerAliveInterval 및 ServerAliveCountMax를 사용했지만 아무 소용이 없습니다.
  3. 대부분의 포럼에서 읽은 다른 솔루션.

그러나 주사위는 없습니다! fstab 파일을 다음과 같이 수정할 때까지 :

sshfs#user@server:/remote/folder /local/mount/dir fuse IdentityFile=sshkeyfile,Port=XXX,uid=1000,gid=1000,allow_other,_netdev,ServerAliveInterval=45,ServerAliveCountMax=2,reconnect,noatime,auto 0 0

그리고 작동합니다! 더 이상 연결을 끊지 마십시오! sshfs가 어떤 이유로 ssh 구성 파일을 읽지 않고 살아있는 신호를 보내지 않은 것처럼 보입니다.


3

이것은 autofs 작업처럼 들립니다. 오히려 다양한 종류의 네트워크 마운트 (nfs, samba, sshfs, 이름 지정)를 다루고 다시 마운트해야 할 때를 알아내는 데 능숙합니다. 또한 사용 중지 후 파일 마운트 해제 및 파일 시스템 요청시 마운트 해제를 처리 할 수도 있습니다.


11
autofs는 요청시 연결을 수행하고 유휴 상태 일 때 마운트 해제 할 수 있지만 (문제가 발생하는 시간을 줄임) 서버 연결이 끊어져서 sshfs가 중단되면 도움이되지 않습니다.
Gilles

1

여전히이 문제가 발생하는 사람들이 있으면 여전히 문제를 해결할 수 없습니다. 해결 방법을 찾았습니다.

다음 루비 스크립트가 트릭을 수행했습니다. "keepalive"라는 폴더가 반복해서 생성됩니다. 무한대로 계속 실행하십시오.

$i =1 
$num =0
begin
    puts("Inside the loop i = #$i" )
    $i +=1
    puts 'creating obj'
    system 'mkdir  /{yourmountpoint}/keepalive'
    sleep 5
    puts 'we did it, it should be still alive'
end while $i > $num

왜 이것이 작동하는지 모르겠습니다. 그러나 잠시 동안 비활성 상태이고 모든 것이 멈추는 문제를 해결하는 것 같습니다. 마운트 지점에 폴더를 만들려고하면 폴더가 분리되어 얼어 붙지 않는 것 같습니다.


6
글쎄, 그것이 당신에게 효과적이라면, 스크립트와 루비 인터프리터가 필요하지 않습니다. 한 줄도 마찬가지입니다.while true; do mkdir -p /x/y; sleep 2; done
mivk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.