108 votes

Un moyen plus rapide que sshfs pour monter un système de fichiers distant ?

J'ai utilisé sshfs pour travailler à distance, mais il est vraiment lent et ennuyeux, en particulier lorsque j'utilise eclipse dessus.

Existe-t-il un moyen plus rapide de monter localement le système de fichiers distant ? Ma priorité numéro 1 est la vitesse.

La machine distante est Fedora 15, la machine locale est Ubuntu 10.10. Je peux également utiliser Windows XP localement si nécessaire.

57voto

Meetai.com Points 691

Si vous devez améliorer la vitesse des connexions sshfs, essayez ces options :

oauto_cache,reconnect,defer_permissions,noappledouble,nolocalcaches,no_readahead

la commande serait :

sshfs remote:/path/to/folder local -oauto_cache,reconnect,defer_permissions

25voto

Tilo Points 424

Sshfs utilise le protocole de transfert de fichiers SSH, ce qui implique le cryptage.

Si vous montez simplement via NFS, c'est bien sûr plus rapide, car non crypté.

Essayez-vous de monter des volumes sur le le même réseau ? alors utilisez NFS .

22voto

aland Points 2810

Outre les solutions déjà proposées d'utiliser Samba/NFS, qui sont parfaitement valables, vous pouvez également obtenir un certain gain de vitesse en vous en tenant à sshfs en utilisant un cryptage plus rapide (l'authentification serait aussi sûre que d'habitude, mais les données transférées elles-mêmes seraient plus faciles à décrypter) en fournissant -o Ciphers=arcfour option pour sshfs . Il est particulièrement utile si votre machine a un processeur faible.

15voto

joeytwiddle Points 1595

Je n'ai pas d'alternatives à recommander, mais je peux fournir des suggestions sur la façon d'accélérer sshfs :

sshfs -o cache_timeout=115200 -o attr_timeout=115200 ...

Cela devrait éviter certaines demandes d'aller-retour lorsque vous essayez de lire le contenu ou les autorisations de fichiers que vous avez déjà récupérés plus tôt dans votre session.

sshfs simule les suppressions et les modifications au niveau local, de sorte que les nouvelles modifications effectuées sur la machine locale devraient apparaître immédiatement, malgré les délais importants, car les données mises en cache sont automatiquement abandonnées.

Mais ces options sont non recommandé si les fichiers distants peuvent être mis à jour à l'insu de la machine locale, par exemple par un utilisateur différent, ou un ssh Shell distant. Dans ce cas, des délais d'attente plus faibles seraient préférables.

Voici d'autres options que j'ai expérimentées, bien que je ne sois pas sûr qu'elles aient fait une différence :

sshfs_opts="-o auto_cache -o cache_timeout=115200 -o attr_timeout=115200   \
-o entry_timeout=1200 -o max_readahead=90000 -o large_read -o big_writes   \
-o no_remote_lock"

Vous devriez également consulter les options recommandées par Meetai dans sa réponse.

Récursion

Le plus gros problème dans mon flux de travail est lorsque j'essaie de lire de nombreux dossiers, par exemple dans une arborescence profonde, car sshfs effectue une requête aller-retour pour chaque dossier séparément. Cela peut également être le goulot d'étranglement que vous rencontrez avec Eclipse.

Faire des requêtes pour plusieurs dossiers en parallèle pourrait aider à résoudre ce problème, mais la plupart des applications ne le font pas : elles ont été conçues pour des systèmes de fichiers à faible latence avec une mise en cache en lecture anticipée, et attendent donc qu'un fichier soit terminé avant de passer au suivant.

Précaching

Mais quelque chose que sshfs pourrait faire serait de regarder devant soi au système de fichiers distant, collecte les statistiques des dossiers avant que je ne les demande, et me les envoie lorsque la connexion n'est pas immédiatement occupée. Cela utiliserait plus de bande passante (pour les données de lookahead qui ne sont jamais utilisées) mais pourrait améliorer la vitesse.

Nous pouvons forcer sshfs à effectuer une mise en cache en lecture anticipée, en exécutant cette commande avant de commencer votre tâche, ou même en arrière-plan lorsque votre tâche est déjà en cours :

find project/folder/on/mounted/fs > /dev/null &

Cela devrait mettre en cache toutes les entrées du répertoire, réduisant ainsi les coûts ultérieurs liés aux allers-retours. (Bien sûr, vous devez utiliser les grands timeouts comme ceux que j'ai fournis plus tôt, ou ces données mises en cache seront effacées avant que votre application n'y accède).

Mais cela find prendra beaucoup de temps. Comme d'autres applications, elle attend les résultats d'un dossier avant de demander le suivant.

Il est peut-être possible de réduire le temps total en demandant à plusieurs processus de recherche de regarder dans différents dossiers. Je n'ai pas testé pour voir si cela est vraiment plus efficace. Cela dépend si sshfs autorise les requêtes en parallèle. (Je pense qu'il le fait.)

find project/folder/on/mounted/fs/A > /dev/null &
find project/folder/on/mounted/fs/B > /dev/null &
find project/folder/on/mounted/fs/C > /dev/null &

Si vous souhaitez également pré-cacher le contenu des fichiers, vous pouvez essayer ceci :

tar c project/folder/on/mounted/fs > /dev/null &

Évidemment, cela prendra beaucoup plus de temps, transférera beaucoup de données et nécessitera une taille de cache énorme. Mais une fois l'opération terminée, l'accès aux fichiers devrait être agréable et rapide.

8voto

maple Points 170

Après avoir cherché et essayé. Je viens de trouver l'ajout -o Compression=no Il est très rapide. Le retard peut être causé par le processus de compression et de décompression. Par ailleurs, l'utilisation de 'Ciphers=aes128-ctr' semble plus rapide que d'autres alors que certains poste a fait quelques expériences à ce sujet. Alors, ma commande est en quelque sorte comme ça :

sshfs -o allow_other,transform_symlinks,follow_symlinks,IdentityFile=/Users/maple/.ssh/id_rsa -o auto_cache,reconnect,defer_permissions -o Ciphers=aes128-ctr -o Compression=no maple@123.123.123.123:/home/maple ~/mntpoint

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X