Voici ce que j'ai appris en faisant exactement la même chose que vous. Je suggère d'utiliser mbuffer. Lorsque j'ai testé dans mon environnement, cela n'a été utile que pour la réception. Sans cela, l'envoi ralentissait tandis que la réception rattrapait son retard.
Quelques exemples : http://everycity.co.uk/alasdair/2010/07/using-mbuffer-to-speed-up-slow-zfs-send-zfs-receive/
Page d'accueil avec options et syntaxe http://www.maier-komor.de/mbuffer.html
La commande d'envoi de ma réplication script :
zfs send -i tank/pool@oldsnap tank/pool@newsnap | ssh -c arcfour remotehostip "mbuffer -s 128k -m 1G | zfs receive -F tank/pool"
Cela fait tourner mbuffer sur l'hôte distant comme tampon de réception pour que l'envoi soit aussi rapide que possible. J'utilise une ligne de 20mbit et j'ai trouvé que le fait d'avoir mbuffer du côté de l'envoi n'aidait pas. De plus, ma boîte zfs principale utilise toute sa mémoire vive comme cache, donc donner même 1g à mbuffer m'obligerait à réduire la taille de certains caches.
De plus, et ce n'est pas vraiment mon domaine d'expertise, je pense qu'il est préférable de laisser ssh faire la compression. Dans votre exemple, je pense que vous utilisez bzip et ensuite ssh qui par défaut utilise la compression, donc SSH essaie de compresser un flux compressé. J'ai fini par utiliser arcfour comme chiffrement car c'est le moins gourmand en ressources CPU et c'était important pour moi. Vous pouvez obtenir de meilleurs résultats avec un autre chiffrement, mais je vous suggère de laisser SSH se charger de la compression (ou de désactiver la compression ssh si vous voulez vraiment utiliser quelque chose qu'il ne prend pas en charge).
Ce qui est vraiment intéressant, c'est que l'utilisation de mbuffer pour l'envoi et la réception sur localhost accélère également les choses :
zfs send tank/pool@snapshot | mbuffer -s 128k -m 4G -o - | zfs receive -F tank2/pool
J'ai trouvé que 4g pour les transferts locaux semble être la meilleure solution pour moi. Cela montre bien que zfs send/receive n'aime pas vraiment la latence ou toute autre pause dans le flux pour fonctionner au mieux.
C'est juste mon expérience, j'espère que cela vous aidera. Il m'a fallu un certain temps pour comprendre tout cela.
1 votes
H
0 votes
Y
3 votes
H
1 votes
A