Tuning performances sshfs

Soumis par -badmin- le mer 28/03/2018 - 10:12

Récemment j'ai du copier quelques teraoctets entre deux postes ne supportant pas le protocole rsync.

Parmi les solutions possibles, il y a NFS ou ISCSI, qu'il faut mettre en place du côté server et client, ce qui n'est pas forcément possible sans installer des paquets.

Je me suis donc tourné vers sshfs, permettant via FUSE, de monter un système de fichiers distant directement via ssh.

Le problème, c'est que sur un réseau 1000Mbits, j'obtenais des performances de l'ordre de 200Mbits/s, et une utilisation CPU de ssh assez élevée.

Le bottleneck n'étant pas les disques qui devraient en toute logique pouvoir envoyer quelques 200Mbytes/s en séquentiel, j'ai donc cherché à optimiser ma connexion ssh.

Ayant comparé la vitesse de plusieurs algorithmes sécurisés (donc exit arcfour bien qu'il soit rapide) de cryptage ssh depuis le site http://wiki.csnu.org/index.php/SSH_ciphers_speed_comparison, j'ai donc décidé de partir avec aes128-ctr.

La machine cliente étant virtualisée, et avec support AES-NI sur la plateforme de virtualisation, l'impact des performances entre le baremetal et la paravirtualisation devrait être minime.

En ajoutant donc les options suivantes sur sshfs, je suis passé de 200Mbits/s à quelques 650Mbits/s.

sshfs 10.60.25.12:/mnt/DATA /mnt -o cache=yes -o kernel_cache -o compression=no -o ciphers=aes128-ctr

En modifiant les paramètres TCP via sysctl ou en jouant sur les paramètres de offloading de la carte réseau avec ethtool, il doit être possible d'améliorer encore les performances, mais pour aujourd'hui, cela me suffira amplement :)