Đây là những gì tôi đã học được làm chính xác những gì bạn đang làm. Tôi đề nghị sử dụng mbuffer. Khi kiểm tra trong môi trường của tôi, nó chỉ giúp ở đầu nhận, không có nó thì việc gửi sẽ bị chậm lại trong khi nhận được bắt kịp.
Một số ví dụ:
http://everycity.co.uk/alasdair/2010/07/USE-mbuffer-to-speed-up-slow-zfs-send-zfs-receive/
Trang chủ với các tùy chọn và cú pháp
http://www.maier-komor.de/mbuffer.html
Lệnh gửi từ tập lệnh sao chép của tôi:
zfs send -i tank/pool@oldsnap tank/pool@newsnap | ssh -c arcfour remotehostip "mbuffer -s 128k -m 1G | zfs receive -F tank/pool"
điều này chạy mbuffer trên máy chủ từ xa như một bộ đệm nhận để việc gửi chạy càng nhanh càng tốt. Tôi chạy một dòng 20mbit và thấy rằng có mbuffer ở phía gửi cũng không giúp được gì, hộp zfs chính của tôi đang sử dụng tất cả ram như bộ đệm nên việc cung cấp 1g cho mbuffer sẽ yêu cầu tôi giảm một số kích thước bộ đệm.
Ngoài ra, và đây không thực sự là lĩnh vực chuyên môn của tôi, tôi nghĩ tốt nhất là cứ để ssh thực hiện việc nén. Trong ví dụ của bạn, tôi nghĩ rằng bạn đang sử dụng bzip và sau đó sử dụng ssh mà theo mặc định sử dụng nén, vì vậy SSH đang cố gắng nén một luồng nén. Cuối cùng tôi đã sử dụng arcfour làm mật mã vì nó ít tốn CPU nhất và điều đó rất quan trọng đối với tôi. Bạn có thể có kết quả tốt hơn với một mật mã khác, nhưng tôi chắc chắn đề nghị cho phép SSH thực hiện nén (hoặc tắt nén ssh nếu bạn thực sự muốn sử dụng thứ gì đó không hỗ trợ).
Điều thực sự thú vị là việc sử dụng mbuffer khi gửi và nhận trên localhost cũng giúp tăng tốc mọi thứ:
zfs send tank/pool@snapshot | mbuffer -s 128k -m 4G -o - | zfs receive -F tank2/pool
Tôi thấy rằng 4g cho chuyển localhost dường như là sweetspot đối với tôi. Nó chỉ cho thấy rằng gửi / nhận zfs không thực sự thích độ trễ hoặc bất kỳ tạm dừng nào khác trong luồng để hoạt động tốt nhất.
Chỉ cần kinh nghiệm của tôi, hy vọng điều này sẽ giúp. Tôi đã mất một lúc để tìm ra tất cả điều này.