Tại sao rsync tự rèn? Và tại sao một quá trình rẽ nhánh như vậy lại gần như nhàn rỗi (như đã thấy trong iotop)?


11

Điều này đề cập đến vấn đề được nêu ở đây và tôi cũng đang trải nghiệm tương tự.

Trong một trong các máy chủ của tôi, tôi đã chạy một rsync, để sao lưu một thư mục lớn (kích thước lớn hơn 300 Gb) vào một đĩa khác, được gắn trên cùng một máy. Thư mục được rsynced chứa hàng ngàn thư mục và tệp. Tôi đã ban hành một lệnh rsync duy nhất, với 'nohup' và sau đó đẩy nó ở chế độ nền bằng cách sử dụng lệnh '&'. Lệnh hoàn chỉnh được đưa ra trên shell bash từ xa (sử dụng putty) là:

nohup rsync -avh /some/local/dir /backup/ >> /opt/rsync.dec22.log &

Sau đó, chỉ để kiểm tra tốc độ dữ liệu được sao chép, tôi đã sử dụng lệnh 'iotop' và thấy rằng có 3 rsync chạy với cùng tham số. Khi tìm kiếm tôi đã tìm thấy liên kết ở trên nói rằng đó là bình thường.

Nhưng thực hiện một iotop để chỉ giám sát những quy trình đó và các quy trình rsync duy nhất đang chạy trên hệ thống, tôi thấy rằng một quy trình đang đọc tệp, một quy trình đang viết chúng, nhưng một quy trình không hoạt động. Hành vi có vẻ là tốt, vì một quá trình chỉ làm một việc tại một thời điểm, nhưng quá trình thứ 3 đang làm gì (được xem là quy trình giữa trong hình ảnh bên dưới)?

Lệnh iotop tôi đã sử dụng là:

iotop -p22250 -p22251 -p22252

Dưới đây là ảnh chụp màn hình cho đầu ra lệnh iotop:

đầu ra lệnh iotop hiển thị quá trình 3 rsync

Tôi đang hỏi nguyên nhân này vì tôi sử dụng rsync rất nhiều và muốn hiểu hành vi của nó vì lợi ích lâu dài. Tôi thậm chí đã đọc hướng dẫn, nhưng nó không nói gì về việc giả mạo.

Câu trả lời:


9

rsync là một chương trình được thiết kế để trở thành máy khách và máy chủ. Máy chủ đọc và khách hàng viết. Hãy tưởng tượng rằng thay vì một máy tính, bạn có máy tính qua mạng, tôi chắc chắn sẽ rõ ràng hơn nhiều nếu bạn nghĩ như vậy.

Sau đó là bộ điều khiển. Vì các hoạt động IO có xu hướng đi kèm với một số rủi ro nhất định, một vấn đề IO không nên gây ra sự chặn hoàn toàn hoặc sự cố. Vì vậy, nó tạo ra một ngã ba cho mỗi kết nối và nằm trong nền.


Cảm ơn kiến ​​thức. Tôi hiểu nó theo quan điểm của các máy tính riêng biệt trên mạng, mỗi máy tính thực hiện một phần công việc đồng bộ. Nhưng bạn cũng có thể giới thiệu cho tôi tài liệu hành vi nơi tôi có thể đọc thêm những thứ như vậy về rsync và cả về khái niệm này không? Cũng muốn biết làm thế nào là dữ liệu đọc được thông qua quá trình đọc đến quá trình đang viết? Là khái niệm về IPC đang được sử dụng?
Gautam Somani

3
@GautamSomani Trang rsync chính thức sẽ là nguồn tốt nhất của bạn cho việc đó. rsync.samba.org Ngoài ra, cách thức hoạt động có sẵn ở đây: rsync.samba.org/how-rsync-works.html Nếu bạn muốn biết thêm chi tiết, có lẽ bạn phải đào sâu vào nguồn.
Grumpy

Tác giả ban đầu ra mắt rsync cục bộ. Anh ta không kết nối với rsyncd vì vậy không có cách nào daemon rèn con của nó. Và không có kết nối mạng. Vì vậy, đây là một câu hỏi tại sao rsync rẽ nhánh khi được thực thi cục bộ. Câu trả lời là sai lệch và sai.
drookie

@drookie Không thành vấn đề nếu là cục bộ hoặc qua mạng. Nó hoạt động theo cùng một cách. Nó cũng giải thích hành vi này trong tài liệu chính thức mà tôi đã liên kết ngay phía trên bình luận của bạn, cũng nói, "trong một lần chuyển cục bộ, qua vỏ từ xa hoặc qua ổ cắm mạng."
Grumpy
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.