Ich habe gelernt, genau das zu tun, was Sie tun. Ich schlage vor, mbuffer zu verwenden. Beim Testen in meiner Umgebung hat es nur auf der Empfangsseite geholfen, ohne dass es beim Senden zu Verzögerungen kam, während der Empfang aufholte.
Einige Beispiele:
http://everycity.co.uk/alasdair/2010/07/using-mbuffer-to-speed-up-slow-zfs-send-zfs-receive/
Homepage mit Optionen und Syntax
http://www.maier-komor.de/mbuffer.html
Der Sendebefehl aus meinem Replikationsskript:
zfs send -i tank/pool@oldsnap tank/pool@newsnap | ssh -c arcfour remotehostip "mbuffer -s 128k -m 1G | zfs receive -F tank/pool"
Dadurch wird mbuffer auf dem Remote-Host als Empfangspuffer ausgeführt, sodass das Senden so schnell wie möglich erfolgt. Ich verwende eine 20-MBit-Leitung und habe festgestellt, dass es nicht hilfreich ist, auch einen MBuffer auf der Sendeseite zu haben. Außerdem verwendet meine Haupt-ZFS-Box den gesamten RAM als Cache. Wenn ich also auch nur 1 g MBuffer zur Verfügung habe, müsste ich einige Cache-Größen reduzieren.
Außerdem, und das ist nicht wirklich mein Fachgebiet, denke ich, ist es am besten, ssh die Komprimierung zu überlassen. In Ihrem Beispiel verwenden Sie vermutlich bzip und dann ssh, das standardmäßig die Komprimierung verwendet. Daher versucht SSH, einen komprimierten Stream zu komprimieren. Am Ende habe ich arcfour als Chiffre verwendet, da es die geringste CPU-Belastung hat und das war für mich wichtig. Möglicherweise erzielen Sie bessere Ergebnisse mit einer anderen Verschlüsselung, aber ich würde definitiv empfehlen, SSH die Komprimierung durchführen zu lassen (oder die ssh-Komprimierung zu deaktivieren, wenn Sie wirklich etwas verwenden möchten, das sie nicht unterstützt).
Was wirklich interessant ist, ist, dass die Verwendung von mbuffer beim Senden und Empfangen auf localhost die Dinge ebenfalls beschleunigt:
zfs send tank/pool@snapshot | mbuffer -s 128k -m 4G -o - | zfs receive -F tank2/pool
Ich fand, dass 4 g für lokale Hosttransfers der Sweetspot für mich zu sein scheint. Es zeigt nur, dass zfs send / receive Latenz oder andere Pausen im Stream nicht wirklich mag, um am besten zu funktionieren.
Nur meine Erfahrung, hoffe das hilft. Ich brauchte eine Weile, um das alles herauszufinden.