Tối đa hóa hiệu suất và thông lượng rsync - máy chủ gigabit được kết nối trực tiếp


27

Tôi có hai máy chủ Dell R515 chạy CentOS 6.5, với một trong các máy chủ phổ biến được gắn trực tiếp với nhau. Tôi sử dụng liên kết trực tiếp để đẩy các bản sao lưu từ máy chủ chính trong cặp sang phụ mỗi đêm bằng cách sử dụng rsync trên ssh. Theo dõi lưu lượng, tôi thấy thông lượng ~ 2MBps, ít hơn nhiều so với tôi mong đợi từ một cổng gigabit. Tôi đã đặt MTU thành 9000 ở cả hai bên, nhưng dường như điều đó không thay đổi gì cả.

Có một bộ cài đặt và tối ưu hóa được đề xuất nào sẽ đưa tôi đến thông lượng tối đa có sẵn không? Hơn nữa, vì tôi đang sử dụng rsync trên ssh (hoặc có khả năng chỉ là NFS) để sao chép hàng triệu tệp (~ 6Tb tệp nhỏ - kho thư Zimbra khổng lồ), các tối ưu hóa tôi đang tìm kiếm có thể cần cụ thể hơn cho trường hợp sử dụng cụ thể của tôi .

Tôi đang sử dụng ext4 ở cả hai bên, nếu vấn đề đó

Cảm ơn

EDIT: Tôi đã sử dụng các rsynctùy chọn sau với kết quả khá giống nhau:

rsync -rtvu --delete source_folder/ destination_folder/

rsync -avHK --delete --backup --backup-dir=$BACKUPDIR source_folder/ destination_folder/

Hiện tại, tôi đang xem xét cùng một mức hiệu suất kém khi sử dụng cpđể xuất NFS, trên cùng một liên kết cáp trực tiếp.

EDIT2: sau khi hoàn tất đồng bộ hóa, tôi có thể chạy iperfvà thấy hiệu suất đạt khoảng 990Mbits / giây, sự chậm chạp là do bộ dữ liệu thực tế đang sử dụng.


1
Bạn nên thêm rsync vào thẻ của bạn. Bạn đã kiểm tra thời gian cho phần niêm yết của rsync chưa? Thông lượng thấp có thể là do các tệp nhỏ. Bạn có thể đăng lệnh rsync của bạn để kiểm tra các tùy chọn không?
kranteg

@kranteg vui lòng xem chỉnh sửa
dyasny

2
Vui lòng xác minh kết nối với iperf.
ewwhite

yup, iperf hiển thị 991mbits / s, tôi đoán đó là bộ dữ liệu rất chậm
dyasny

Bạn không thể có thông số tốt với rsync và bộ dữ liệu với các tệp nhỏ. Bạn chắc chắn nên thử tar.
kranteg

Câu trả lời:


24

Số lượng tập tin và chi phí mã hóa SSH có thể là rào cản lớn nhất. Bạn sẽ không thấy tốc độ dây khi chuyển khoản như thế này.

Các tùy chọn để cải thiện bao gồm:

  • Sử dụng rsync + SSH với thuật toán mã hóa ít tốn kém hơn (ví dụ -e "ssh -c arcfour")
  • Loại bỏ mã hóa hoàn toàn qua vận chuyển SSH bằng một cái gì đó như HPN-SSH .
  • Chuyển khối dựa trên. Snapshots, dd, ZFS ảnh chụp gửi / nhận , vv
  • Nếu đây là chuyển khoản một lần hoặc không thường xuyên, sử dụng tar, netcat ( nc), mbuffer hoặc một số kết hợp.
  • Kiểm tra tuned-admcài đặt CentOS của bạn .
  • Loại bỏ atime khỏi hệ thống tập tin gắn kết của bạn. Kiểm tra các tùy chọn gắn kết hệ thống tập tin khác.
  • Gửi / nhận bộ đệm.
  • Điều chỉnh rsynclệnh của bạn . Would -W, toàn bộ các tập tin tùy chọn có ý nghĩa ở đây? Là nén được kích hoạt?
  • Tối ưu hóa hệ thống con lưu trữ của bạn cho loại chuyển (SSD, đếm trục chính, bộ đệm của bộ điều khiển RAID.)

Tôi đã bỏ SSH cho NFS, thấy kết quả tương tự. Chuyển tiền dựa trên khối là những gì tôi đang lên kế hoạch, chuyển sang sao lưu dựa trên ảnh chụp nhanh LVM và sao lưu dự phòng sang máy chủ thứ hai, nơi tôi sẽ chạy ZFS để khấu trừ. atime bị vô hiệu hóa ở cả hai bên. Không nén được sử dụng. Làm cách nào để tối ưu hóa các gói lưu trữ cho loại chuyển khoản này? Nguồn này có hai ổ RAID10 trên 12x 10k, một ổ trên ổ đĩa cục bộ, còn lại là MD1220. Máy chủ dự phòng có cùng số lượng đĩa, nhưng với các ổ đĩa SATA lớn và sử dụng RAID5. Bộ điều khiển H800 và H700 bộ nhớ cache đầy đủ ở cả hai bên. 2MBps (từ iftop) ~
dyasny

~ làm cho tôi nghĩ rằng mạng là nút cổ chai ở đây dù sao.
dyasny

@dyasny Kiểm tra mạng của bạn iperfđể chắc chắn.
ewwhite


1
Hãy chắc chắn rằng cấu trúc thư mục đích được tạo bởi rsyncchứ không phải bởi cp. Tôi đã thấy rsyncmất nhiều thời gian hơn để cập nhật cây thư mục từ xa được tạo bởi cp: 88GB được cập nhật với kiểm tra trong 1h26m thay vì 3h! Cách bạn tạo bố cục đĩa ban đầu là rất quan trọng để có được hiệu suất cập nhật tốt. Thời gian CPU là như nhau; thời gian thực có thể tăng gấp đôi. (Bản cập nhật tương tự mà không cần kiểm tra chạy trong 13 phút từ SSD đến Seagate 200 GB).
Ian D. Allen

3

Như bạn có thể biết sao chép rất nhiều tệp nhỏ (ví dụ: hộp thư sử dụng định dạng MailDir hoặc tương tự) chắc chắn không phải là lựa chọn tốt nhất để tận dụng các giao diện băng thông cao. SSH có lẽ không phải là giao thức vận chuyển tốt nhất cho điều đó. Tôi sẽ thử sử dụng tar để tạo tarball trên máy chủ nguồn trước khi gửi nó đến máy chủ thứ cấp.

tar c /var/mail | ssh root@secondary-host 'tar x -C /var/backups'

Nếu bạn cần sao lưu gia tăng, bạn có thể muốn thử các -gtùy chọn của tar. Nếu bạn vẫn cần tối đa hóa nhóm, hãy thử sử dụng netcat thay vì ssh.


Tôi đã chuyển sang NFS thay vì SSH, để loại bỏ chi phí mã hóa, không có niềm vui
dyasny

Bạn đã thử sử dụng tar? Có thể là bước đầu tiên thử tạo một tarbal cục bộ trên máy chủ chính và sau đó chuyển nó qua dây. (hoặc kiểm tra mạng của bạn với iperf như @ewwhite có đường)
alxeimz

Tôi sẽ, nếu tôi có không gian địa phương để phụ tùng. Điều này là khá lớn, ngay cả với một hộp DAS đông dân cư
dyasny

sau đó thử đường ống qua netcat hoặc ssh (mặc dù điều này không hiệu quả)
alxeimz

Tôi sẽ chuyển sang chặn các bản sao lưu dựa trên sau này và tôi dự định sẽ chuyển ddqua ncđó. nhưng ngay bây giờ, tôi bị mắc kẹt với hai bản sao lưu khổng lồ sau đó cần phải được chuyển khỏi máy chủ chính, vì vậy tôi có thể tạo một hệ thống LVM ở đó
dyasny

1

Hãy thử trêu chọc các yếu tố góp phần:

  • CPU (ví dụ: dd của / dev / zero được truyền qua loopback)
  • đĩa I / O (ví dụ: dd của một tệp lớn được chuyển sang cat> / dev / null [đường ống để tránh đoản mạch])
  • I / O mạng vật lý (ví dụ: dd được chuyển sang máy khác)
  • v.v.

và thử nghiệm chúng một cách độc lập.

Tôi đã có một số trải nghiệm xấu với trình điều khiển Broadcom, vì vậy đề xuất đầu tiên của tôi là kiểm tra băng thông mạng có thể sử dụng với: dd if=/dev/zero bs=1m count=10k | rsh backup_host cat \> /dev/null


Hoặc iperf ...
ewwhite
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.