Tăng tốc rsync trên smb


8

Tôi đang sao lưu một hộp Linux qua SMB sang NAS. Tôi gắn NAS cục bộ và sau đó tôi đồng bộ rất nhiều dữ liệu (100GB hoặc hơn). Tôi tin rằng phải mất một thời gian rất dài để làm điều đó: hơn 12 giờ. Tôi dự kiến ​​sẽ nhanh hơn nhiều khi mọi thứ được sao chép vì hầu như không có gì thay đổi từ ngày này sang ngày khác.

Có cách nào để tăng tốc độ này không?

Tôi đã nghĩ rằng có lẽ rsync nghĩ rằng nó hoạt động với các đĩa cứng cục bộ và sử dụng tổng kiểm tra thay vì so sánh thời gian / kích thước? Nhưng tôi đã không tìm ra cách để so sánh thời gian và ngày tháng. Bất cứ điều gì khác tôi có thể kiểm tra?


Thay vào đó, tôi cũng khuyên bạn nên xem NFS thay vì SMB - Tôi đã nhận thấy (và có lẽ chỉ có tôi) rằng Samba nhanh hơn
warren

Thật không may, NAS này không có NFS và hiện tại, tôi đang bị mắc kẹt với nó.
Pupeno

Kiểm tra khả năng của NAS bằng cách sử dụng trình ánh xạ cổng, như nmap. Tôi đã chạy vào một số đơn vị NAS chạy dịch vụ rsync gốc, mặc dù không có đề cập nào trong tài liệu và không đề cập đến trong cấu hình.
Kyle__

Vui lòng kiểm tra chủ đề này ["rsync sang NAS sao chép mọi thứ mọi lúc"] [1] [1]: serverfault.com/questions/262411/
Kẻ

Vui lòng kiểm tra chủ đề này [rsync để NAS sao chép mọi thứ mọi lúc] [1] [1]: serverfault.com/questions/262411/ chủ
dtoubelis

Câu trả lời:


28

Tôi nghĩ rằng bạn đang hiểu sai về thuật toán rsync và cách áp dụng công cụ này.

Lợi thế về hiệu suất của Rsync đến từ việc thực hiện chuyển delta - nghĩa là chỉ di chuyển các bit đã thay đổi trong một tệp. Để xác định các bit đã thay đổi, tệp phải được đọc bởi máy chủ nguồn và đích và khối tổng kiểm tra so với để xác định bit nào đã thay đổi. Đây là phần "kỳ diệu" của rsync-- chính thuật toán rsync.

Khi bạn đang gắn âm lượng đích với SMB và sử dụng rsync để sao chép tệp từ những gì Linux "thấy" là nguồn cục bộ và đích cục bộ (cả hai được gắn trên máy đó), hầu hết các phiên bản rsync hiện đại đều chuyển sang chế độ sao chép 'toàn bộ tệp' và tắt thuật toán sao chép delta. Đây là một "chiến thắng" bởi vì, với thuật toán sao chép delta, rsync sẽ đọc toàn bộ tệp đích (qua dây từ NAS) để xác định bit nào của tệp đã thay đổi.

"Cách đúng" để sử dụng rsync là chạy máy chủ rsync trên một máy và máy khách rsync trên máy kia. Mỗi máy sẽ đọc các tệp từ bộ lưu trữ cục bộ của chính nó (sẽ rất nhanh), đồng ý về các bit của các tệp đã thay đổi và chỉ chuyển các bit đó. Họ cho rằng bạn đang sử dụng số lượng rsync của 'cp'. Bạn có thể hoàn thành điều tương tự với 'cp' và nó có thể sẽ nhanh hơn.

Nếu thiết bị NAS của bạn hỗ trợ chạy máy chủ rsync (hoặc máy khách) thì bạn đang kinh doanh. Nếu bạn chỉ gắn nó vào máy nguồn thông qua SMB thì bạn cũng có thể chỉ cần sử dụng 'cp' để sao chép các tệp.


7
Ôi! Downvote! Tôi tò mò muốn biết lý do tại sao bạn đánh giá thấp câu trả lời, xem xét nó chính xác về mặt kỹ thuật.
Evan Anderson

Tôi không thể chạy máy chủ rsync trên NAS, nếu không tôi sẽ làm như vậy. Khi không sử dụng máy chủ rsync, rsync có thể sử dụng tổng kiểm tra hoặc kích thước và thời gian để tìm hiểu xem một tệp có thay đổi hay không. Theo trang man, nó sẽ sử dụng kích thước và datetime theo mặc định, nhưng kinh nghiệm của tôi là nó không làm điều đó và tôi không thấy cách nào để ép buộc nó. Tôi chỉ thấy một cách để buộc kiểm tra. --checksum: Không có tùy chọn này, rsync sử dụng "kiểm tra nhanh" (theo mặc định) kiểm tra xem kích thước và thời gian sửa đổi lần cuối của mỗi tệp có khớp giữa người gửi và người nhận hay không.
Pupeno

Evan, cho tôi vài phút để viết bình luận của tôi.
Pupeno

2
Hành vi nào bạn thấy đang nói với bạn rằng nó đang kiểm tra các tệp? Hành vi "kiểm tra nhanh" là hành vi mặc định, vì vậy không có cách nào để "ép buộc" nó. Nếu bạn không thể chạy rsync trên NAS, chỉ cần sử dụng 'cp'. Nó sẽ nhanh hoặc nhanh hơn.
Evan Anderson

Theo cách tôi hiểu rsync hoạt động, nó nên kiểm tra ngày giờ địa phương, ngày và giờ từ xa và nếu chúng khớp không sao chép tệp. Điều đó có nghĩa là nó không nên sao chép 99% các tệp, nhưng thực tế là phải mất hơn 12 giờ cho 60 GB hoặc nói với tôi rằng đó là sao chép mọi thứ (dường như đó là những gì bạn đang ám chỉ bằng cách nói rằng cp sẽ nhanh hơn) hoặc nó thực sự đang kiểm tra, có nghĩa là nó không sao chép mọi thứ, nhưng nó đang tải xuống mọi thứ.
Pupeno


4

Vâng, bạn có thể tăng tốc nó. Bạn cần làm cho nguồn hoặc đích trông giống như một máy từ xa, nói bằng cách gọi nó là " localhost:".

Bạn đã nói rằng bạn đang gắn kết chia sẻ SMB cục bộ. Điều này làm cho nguồn hoặc đích trông giống như một đường dẫn cục bộ đến rsync. Trang man rsync nói rằng các bản sao trong đó nguồn và đích là các đường dẫn cục bộ sẽ sao chép toàn bộ tệp. Điều này được nêu trong đoạn văn cho tùy chọn "--whole-file" trong trang man. Do đó, thuật toán delta không được sử dụng. Sử dụng localhost:cách giải quyết "" sẽ khôi phục chức năng thuật toán delta và sẽ tăng tốc độ chuyển.


1
Tôi tự hỏi ý nghĩa nào nên làm ... rsyncsử dụng dấu thời gian và ngày để kiểm tra xem một tập tin có cần được cập nhật hay không. Nếu nó cần một bản cập nhật, thì rsync sẽ chia tệp thành các phần và so sánh tổng kiểm tra. Điều đó có nghĩa là nó sẽ đọc toàn bộ tập tin để có thể làm điều đó. Vì vậy, nếu bạn không có trình nền rsync chạy từ xa, bạn sẽ cần phải chuyển toàn bộ tệp để thực hiện phân đoạn và kiểm tra để bạn có thể chuyển ngay lập tức. Vì vậy, "cách giải quyết" được nêu ở đây mua cho bạn trong thực tế không có gì trong kịch bản này.
TylerDurden

3

Nghĩ rằng tôi sẽ ném 2p của tôi vào đây.

Anh tôi vừa cài đặt một NAS Buffalo trên mạng văn phòng của mình. Anh ấy bây giờ nhìn vào off-site sao lưu, do đó nên văn phòng thiêu rụi, ít nhất anh vẫn có tất cả các tài liệu kinh doanh của mình ở nơi khác (hàng trăm dặm).

Rào cản đầu tiên của tôi là có được VPS mà anh ấy có (một máy chủ riêng ảo nhỏ của Linux, không có gì quá khó khăn) để quay số với tư cách là người dùng VPN đến bộ định tuyến băng thông rộng của anh ấy (anh ấy đang sử dụng DrayTek cho việc này) để nó có thể là một phần của VPN của anh ấy và do đó nó có thể truy cập trực tiếp vào NAS một cách an toàn. Có được sắp xếp và làm việc rực rỡ.

Vấn đề tiếp theo là chuyển các tập tin từ NAS sang máy chủ VPS. Tôi đã bắt đầu bằng cách thực hiện một thú cưỡi Samba và gặp vấn đề chính xác (hoặc thậm chí tệ hơn) mà bạn đã mô tả. Tôi đã thực hiện một rsync chạy khô và mất hơn 1 giờ 30 phút chỉ để tìm ra những tập tin sẽ chuyển, bởi vì theo Evan, theo phương pháp này, đầu kia không phải là rsync nên nó phải thực hiện nhiều lần các cuộc gọi / đọc hệ thống trên giá đỡ Samba (qua kết nối PPTP / được điều chỉnh, với thời gian khứ hồi khoảng 40ms). Hoàn toàn không khả thi.

Tôi ít biết rằng Buffalo thực sự chạy một daemon rsync, vì vậy, thay vào đó, toàn bộ hoạt động khô chỉ mất 1 phút 30 giây cho các tệp 87k với tổng trị giá 50Gb. Rõ ràng, để chuyển 50Gb tệp (từ một NAS trên liên kết băng thông rộng chỉ có băng thông ra 100k / giây) là một vấn đề hoàn toàn khác (điều này sẽ mất vài ngày), nhưng khi rsync ban đầu hoàn tất, mọi bản sao lưu gia tăng sẽ được thực hiện giảm mỡ (dữ liệu của anh ấy sẽ không thay đổi nhiều trên cơ sở hàng ngày).

Đề nghị của tôi là sử dụng một NAS tốt, hỗ trợ rsync, vì những lý do Evan đã nói ở trên. Nó sẽ giải quyết tất cả các vấn đề của bạn.


+1 vì đã cho tôi biết rằng Buffalo NAS chạy rsync - cảm ơn!
Michael

0

Có mùi như bạn có một NAS rẻ hơn. Nó cũng có thể là từ băng thông mạng của bạn ...

NAS tiêu chuẩn "tiêu chuẩn" thực sự rất yếu khi nói đến IO nặng, đó là những gì bạn đang cố gắng thực hiện ở đây. Nó cũng có thể là một công tắc giá rẻ kết nối PC và NAS của bạn không đủ mạnh để xử lý tất cả các gói chính xác.


Cùng một NAS, cùng một công tắc, một máy tính khác, chạy Windows, sao lưu với nó, nhiều thông tin hơn, trong vòng chưa đầy bốn giờ.
Pupeno

0

Hãy thử điều này vì nghĩ rằng bữa ăn mang lại cho bạn nhiều hơn 10% tốc độ nhận được của bạn http: //www.thegeek ware.com/2009/09/linux-remote-backup-USE-rsnapshot-rsync-utility/


Nó có thể hoạt động trên SMB thay vì SSH không?
Pupeno

0

Có hai nguồn tiềm ẩn của sự cố - hoặc bạn sử dụng các tùy chọn dòng comman không chính xác hoặc NAS của bạn có vấn đề với dấu thời gian (hoặc cả hai :-). Vui lòng kiểm tra chủ đề này "rsync để NAS sao chép mọi thứ mọi lúc" để biết thêm thông tin.

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.