2013-07-16 8 views
6

sshfs로 원격 파일 시스템을 마운트합니다. ssh 연결 시간이 초과되면 다른 응용 프로그램이 정지 될 수 있습니다 (예 : 로컬 파일 만 열리는 vim 세션). 시스템이 복구되는 데 약 10 분이 소요됩니다. 원격 파일 시스템을 읽기 전용으로 마운트하더라도 이런 일이 발생합니다. 왜? 신뢰할 수없는 연결 (예 : wifi)을 사용할 때 다른 응용 프로그램이 멈추지 않도록 sshfs 마운트를 수행하는 방법이 있습니까? 난 강력한 무언가가 필요 없어, 난 단지 원격 컴퓨터에서 파일을 볼 수 있어야합니다, 읽기 전용이 될 수 있습니다.신뢰할 수없는 연결에 sshfs 마운트

나는 lubuntu 12.10을 사용합니다.

$sshfs -V 
SSHFS version 2.4 
FUSE library version: 2.9.0 
fusermount version: 2.9.0 
using FUSE kernel interface version 7.18 

답변

1

당신은 압축, TCP에 대한 자동 재 연결 및 nodelay 플래그 수 있도록, 예를 들어, SSHFS의 옵션을 조금을 재생할 수 있습니다 :

-C  equivalent to '-o compression=yes' 
-o reconnect 
-o workaround=LIST 
    [no]nodelaysrv 
       set nodelay tcp flag in ssh (default: off) 

sshfs server:/srv/homes /mnt/mountpoint -C -o reconnect -o workaround=nodelaysrv 

을하지만은 나에게 더 나은 결과를 얻을 수있다 NFS를 사용하여, 나는 sshfs에서 가지고있는 lags를 가지지 않고 * nix 환경에서 꽤 표준이다. 읽기 전용 옵션으로 디렉토리를 보내면 속도가 더 빨라진다. NFS는 암호화 된 프로토콜이 아닙니다.

서버 :

# File: /etc/exports 
/srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check) 

클라이언트 :

mount server:/srv/homes /mnt/mountpoint 
+4

-1 ... 경고없이 암호화되지 않은 연결을 통해 암호화되지 않은 연결을 권합니다. – kubanczyk

7

사용 -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3

ServerAlive 옵션은 I/O 오류가 네트워크 중단의 1 분 후에 나오게. 이러한 옵션이 없으면 I/O 중단을 경험하는 프로세스는 sshfs가 reconnect이 처리 된 후에도 무기한으로 잠자는 것처럼 보입니다.

1

원격 측이 멀었다 고 생각하면 원격 호스트를 모니터하고 로컬 sshfs 프로세스를 종료하십시오. 당신은 여러 가지 방법으로 그것을 할 수 있습니다. 예를 들어 bash는 방법으로 그런 식으로 핑을 시작합니다

mountpoint=~/mnt/google 

sshfs -o reconnect,ServerAliveInterval=5,ServerAliveCountMax=3 [email protected]:/ "$mountpoint" 

while : 
do 
    if ping -c 3 google.com 
    then 
    echo "google.com is still up" 
    else 
    # find sshfs pid 
    sshfsPids=$(ps -C sshfs -f | grep "$mountpoint" | grep -v grep | awk '{print $2}' | tr '\n' ' ') 
    kill -SIGTERM "$sshfsPids" 
    fi 
done 

이 프로젝트 고려 연결에 대한 외부 감시 방법을 사용하여 확인하는 경우 : 거의 동일하지만보다 정교한 방법으로 수행 https://github.com/RuralYak/sshfs-watchdog