Tôi cần chuyển tệp vdisk 20 GB KVM , lưu trữ hệ thống tệp gốc của máy ảo CentOS 6.5, từ máy chủ phòng thí nghiệm này sang máy chủ phòng thí nghiệm khác. Kích thước tệp lớn và thực tế là tôi đã từng nén một tệp vdisk như vậy đến vài trăm byte khiến tôi có khả năng nén theo bản năng scp
nhưng tôi rất ngạc nhiên khi thấy tốc độ truyền khá thấp. Sau đó, tôi đã thử bzip2
kết hợp với ssh
và cat
và giật mình. Dưới đây là tóm tắt về các phương pháp và thông lượng trung bình.
scp -C vm1-root.img root@192.168.161.62:/mnt/vdisks/
, 11 MB / s.bzip2 -c vm1-root.img | ssh -l root 192.168.161.62 "bzip2 -d -c > /mnt/vdisks/vm1-root.img"
, 5 MB / s. Kết quả này thậm chí thấp hơn nhắc nhở tìm kiếm trên Net.scp -c arcfour -C vm1-root.img root@192.168.161.62:/mnt/vdisks/
, 13 MB / s. Việc sử dụng này-c arcfour
như được đề xuất trong một câu trả lời trên serverfault. Nó hầu như không giúp đỡ. Cuối cùng, tôi đã tắt tính năng nén.scp vm1-root.img root@192.168.161.62:/mnt/vdisks/
, 23 MB / s.
Không nên nén đã nhanh hơn?
EDIT: Tôi không biết tại sao câu hỏi đã bị hạ cấp. Tôi nghĩ rằng có một cái gì đó để được học ở đây.
Sau khi nhận được ssh(1)
mẹo trang man từ @sven, tôi đã thử một vài phương pháp chuyển tập tin thay thế không liên quan đến nén, cả hai đều có kết quả tốt hơn.
cat vm1-root.img | ssh -l root 192.168.161.62 "cat > /mnt/vdisks/vm1-root.img"
, 26 MB / s.nc -l 5678 > /mnt/vdisks/vm1-root.img
trên máy thu vànc 192.168.161.62 5678 < vm1-root.img
trên máy phát, 40 MB / s. Cổng5678
là một tùy ý có sẵn.
Sử dụng nc
hóa ra là phương pháp sao chép nhanh nhất!
Trong quá khứ, scp -C
đã làm việc rất tốt bất cứ khi nào tôi nghĩ rằng nó sẽ. Ví dụ: khi chuyển syslog ( /var/log/messages*
) có kích thước vài GB. Tốc độ truyền không nén vài trăm KB / s sẽ tăng lên 1-2 MB / s. Ví dụ này không thuộc trường hợp kết nối chậm như đã được chỉ ra trong trang man.
Tôi có một trường hợp, một hình ảnh vdisk mới được tạo cho phân vùng 20 GB có kích thước nén chỉ 200 MB. Với tốc độ truyền khoảng 25 MB / s, chúng tôi có thể thực hiện sao chép chỉ trong 8 giây thay vì hơn 13 phút! Rõ ràng, scp
không nén là không hiệu quả trong trường hợp này và scp -C
thậm chí còn tồi tệ hơn.
Tôi đoán, bài học chính được học ở đây là, scp -C
nên được coi là chỉ là một tiện lợi. Nếu một tệp có thể được nén đáng kể, thì tốt hơn hết là trước tiên hãy nén nó trên nguồn, chuyển biểu mẫu đã nén và cuối cùng là nén vào đích. Các công cụ thực hiện nén và giải nén nhanh chóng (ví dụ pbzip2 ) sẽ giúp ích nhiều hơn.