Quel est le meilleur moyen de gérer les déconnexions de serveur des montages sshfs?


58

J'ai plusieurs répertoires montés via sshfs . Je reçois parfois des déconnexions du serveur (non configurable par moi). Je monte habituellement les répertoires comme celui-ci

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

Lorsqu'un serveur se déconnecte, le sous-système sshfs ne démonte pas / ne libère pas le répertoire mais le verrouille à la place. Le montage est toujours visible lors de la frappe mount. Quand je tape

ls /mnt/example

le processus est verrouillé ( Ctrl+ cn'aide pas non plus). Je fais donc

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

Y a-t-il une meilleure façon de gérer cela? Évidemment, sshfs devrait faire le démontage et le nettoyage ... Idéalement, il se reconnecterait automatiquement.



4
une solution utilisant un logiciel maintenu ?
Sebastian le

Réponses:


45

Vous pouvez exécuter sshfs avec l'option "reconnecter". Nous utilisons sshfs avec PAM / automount pour partager des fichiers de serveur pour chaque poste de travail de notre réseau. Nous utilisons -o reconnect en tant que paramètre pour sshfs, principalement parce que nos utilisateurs ont suspendu leurs ordinateurs et que sake ne pourrait pas se reconnecter (ou répondre, ou quoi que ce soit d'autre).

Par exemple:

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

Juste une note, si l'ordinateur distant est vraiment en panne, sshfs peut ne plus répondre pendant un long moment.


11

Cela peut être contourné en réduisant le délai d'attente. Ajoutez les éléments suivants à $HOME/.ssh/configou /etc/ssh/ssh_config:

ServerAliveInterval 15
ServerAliveCountMax 3

Cela entraîne un délai d'attente de 45 secondes.


3
Cela n’aidera que si le problème vient de SSH. Il existe un problème plus vaste qui sshfsne traite pas la mort du sshprocessus sous-jacent avec élégance.
bahamat

En effet, ceci n’est qu’une solution de contournement et doit être corrigé dans sshfs.
Thor

Mais seulement une solution de contournement qui traite d’une cause parmi d’autres. Son problème n’a peut-être rien à voir avec la conservation. La nature de la question porte moins sur la cause que sur le nettoyage dans un état cohérent.
bahamat

5

J'ai un serveur que j'utilise pour le stockage et pour un manque d'espace là où je vis, je le conserve dans un autre endroit. Afin d'amener les fichiers sur mon réseau, j'utilise un Raspberry Pi qui monte les fichiers à partir du serveur à l'aide de sshfs.

Récemment, j'ai dû passer à Jessica Raspbian en raison d'une panne de courant et me suis rendu compte que sshfs devenait sérieusement instable. Les dossiers seraient correctement montés, mais après un certain temps, je ne serais plus en mesure de me connecter et le Raspberry Pi se figerait si je souhaitais répertorier le contenu des supports.

Ce que j'ai essayé était:

  1. utilisé reconnecter dans le fstab
  2. utilisé ServerAliveInterval et ServerAliveCountMax dans le fichier .ssh / config mais en vain.
  3. autres solutions que j'ai lues sur la plupart des forums.

mais pas de dés! Jusqu'à ce que j'ai modifié le fichier fstab comme suit:

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

Et il fonctionne! Pas plus de déconnexions! J'ai l'impression que sshfs ne lit pas le fichier de configuration ssh pour une raison quelconque et que les signaux de maintien en vie n'ont jamais été envoyés.


3

Cela ressemble à un travail d'autofs. Il est plutôt apte à gérer des montages réseau de différents types (nfs, samba, sshfs, etc.) et à remarquer le moment où ces éléments doivent être remontés. Il peut également s'occuper de les démonter après des périodes d'inutilisation et de les monter lorsqu'une demande de système de fichiers est faite.


11
autofs effectuera la connexion à la demande et pourra être démonté lorsqu'il sera inactif (ce qui réduira la fenêtre temporelle problématique), mais cela ne changera rien si sshfs se bloque car le serveur est déconnecté.
Gilles, arrête de faire le mal '

1

Si certaines personnes rencontrent encore ce problème, je ne peux toujours pas le résoudre. J'ai trouvé une solution de contournement.

Le script ruby ​​suivant a fait l'affaire. Il crée un dossier appelé "keepalive" à plusieurs reprises. Continuez à courir jusqu'à l'infini.

$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

Je ne sais pas pourquoi cela fonctionne. Mais cela semble résoudre mon problème de rester inactif pendant une minute et de tout geler. Il essaie simplement de créer un dossier au point de montage, ce qui semble l'empêcher de tout déconnecter et de tout geler.


6
Eh bien, si cela fonctionne pour vous, vous n'avez pas besoin d'un script et d'un interprète Ruby. Une seule ligne ferait aussi bien l' while true; do mkdir -p /x/y; sleep 2; done
affaire
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.