เหตุใด rsync จึงแยกตัวเอง และทำไมหนึ่งกระบวนการทางแยกดังกล่าวเกือบจะไม่ได้ใช้งานเลย (อย่างที่เห็นใน iotop)?


11

สิ่งนี้อ้างถึงเรื่องที่ระบุไว้ที่นี่และฉันก็ประสบเช่นเดียวกัน

ในหนึ่งในเซิร์ฟเวอร์ของฉันฉันใช้ rsync เพื่อสำรองข้อมูลไดเรกทอรีขนาดใหญ่ (ขนาดใหญ่กว่า 300 Gb) ไปยังดิสก์อื่นติดตั้งบนเครื่องเดียวกัน ไดเรกทอรีที่ถูก rsynced มีไดเรกทอรีและไฟล์หลายพันรายการ ฉันออกคำสั่ง rsync เดียวโดยใช้ 'nohup' จากนั้นผลักคำสั่งเป็นพื้นหลังโดยใช้คำสั่ง '&' คำสั่งที่สมบูรณ์ที่กำหนดบนเชลล์ bash ระยะไกล (ใช้ putty) คือ:

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

จากนั้นเพื่อตรวจสอบว่าข้อมูลใดที่ถูกคัดลอกอัตราฉันใช้คำสั่ง 'iotop' และพบว่ามี rsync 3 ตัวที่ทำงานด้วยพารามิเตอร์เดียวกัน ในการค้นหาฉันพบลิงค์ด้านบนซึ่งระบุว่าเป็นเรื่องปกติ

แต่การทำไอโซโทปเพื่อตรวจสอบกระบวนการเหล่านั้นและกระบวนการ rsync เดียวที่ทำงานบนระบบฉันเห็นว่ากระบวนการหนึ่งกำลังอ่านไฟล์ พฤติกรรมดูเหมือนว่าดีเมื่อกระบวนการหนึ่งทำเพียงครั้งเดียว แต่กระบวนการที่ 3 กำลังทำอะไร (มองว่าเป็นสื่อกลางในภาพด้านล่าง)

คำสั่ง iotop ที่ฉันใช้คือ:

iotop -p22250 -p22251 -p22252

นี่คือสกรีนช็อตสำหรับเอาต์พุตคำสั่ง iotop:

เอาต์พุตคำสั่ง iotop แสดงกระบวนการ 3 rsync

ฉันถามสาเหตุนี้ฉันใช้ rsync บ่อยครั้งและต้องการเข้าใจพฤติกรรมของมันเพื่อผลประโยชน์ระยะยาว ฉันอ่านคู่มือ แต่ก็ไม่ได้บอกว่าไม่มีฟอร์กกิ้ง

คำตอบ:


9

rsync เป็นโปรแกรมที่ออกแบบมาเพื่อลูกค้าและเซิร์ฟเวอร์ เซิร์ฟเวอร์อ่านและไคลเอนต์เขียน ลองจินตนาการว่าแทนที่จะเป็นคอมพิวเตอร์เครื่องเดียวคุณมีคอมพิวเตอร์ผ่านเครือข่ายฉันแน่ใจว่ามันชัดเจนกว่านี้ถ้าคุณคิดแบบนั้น

จากนั้นก็มีคอนโทรลเลอร์ เนื่องจากการดำเนินงานของ IO มีความเสี่ยงในระดับหนึ่งปัญหาของ IO จึงไม่ควรทำให้เกิดการบล็อกทั้งหมดหรือเกิดความผิดพลาด ดังนั้นมันจะสร้างทางแยกสำหรับแต่ละการเชื่อมต่อและอยู่ในพื้นหลัง


ขอบคุณสำหรับความรู้ ฉันเข้าใจในมุมมองของคอมพิวเตอร์แยกต่างหากในเครือข่ายคอมพิวเตอร์แต่ละเครื่องทำงานเป็นส่วนหนึ่งของการซิงค์ แต่คุณยังสามารถอ้างอิงเอกสารพฤติกรรมที่ฉันสามารถอ่านเพิ่มเติมเกี่ยวกับ rsync และแนวคิดได้หรือไม่ และต้องการทราบว่าข้อมูลการอ่านผ่านกระบวนการอ่านไปยังกระบวนการที่กำลังเขียนอย่างไร มีการใช้แนวคิดของ IPC หรือไม่
Gautam Somani

3
@GautamSomani หน้า rsync อย่างเป็นทางการจะเป็นแหล่งข้อมูลที่ดีที่สุดสำหรับคุณ rsync.samba.orgนอกจากนี้วิธีการทำงานก็มีให้ที่นี่: rsync.samba.org/how-rsync-works.htmlหากคุณต้องการรายละเอียดเพิ่มเติมคุณอาจต้องขุดลงไปในแหล่งที่มา
พอใจ

ผู้เขียนต้นฉบับเปิดตัว rsync ในพื้นที่ เขาไม่ได้เชื่อมต่อกับ rsyncd ดังนั้นจึงไม่มีทางที่ daemon จะอุ้มลูกของมัน และไม่มีการเชื่อมต่อเครือข่าย ดังนั้นจึงเป็นคำถามที่ว่าทำไม rsync จึงหยุดเมื่อดำเนินการในพื้นที่ คำตอบคือทำให้เข้าใจผิดและผิด
drookie

@drookie ไม่สำคัญว่าจะเป็นเครือข่ายท้องถิ่นหรือผ่านเครือข่าย มันทำงานในลักษณะเดียวกัน นอกจากนี้ยังอธิบายถึงพฤติกรรมนี้ในเอกสารทางการที่ฉันเชื่อมโยงไว้เหนือความคิดเห็นของคุณซึ่งกล่าวว่า "ไม่ว่าจะเป็นการถ่ายโอนภายในผ่านรีโมตเชลล์หรือผ่านซ็อกเก็ตเครือข่าย"
พอใจ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.