วิธีเพิ่มความเร็ว rsync สำหรับไฟล์ขนาดเล็ก


15

ฉันพยายามถ่ายโอนไฟล์ขนาดเล็กหลายพันไฟล์จากเซิร์ฟเวอร์หนึ่งไปยังอีกเซิร์ฟเวอร์หนึ่งโดยใช้คำสั่งต่อไปนี้:

rsync -zr --delete /home/user/ user@10.1.1.1::backup

ขณะนี้การถ่ายโอนใช้เวลานาน (ฉันยังไม่ได้ตั้งเวลา) มีวิธีทำให้เร็วขึ้นหรือไม่ ฉันควรใช้เครื่องมืออื่นหรือไม่? ฉันควรจะใช้ rsync ผ่าน ssh แทนที่จะใช้โปรโตคอล rsync หรือไม่


เป็นร้อย ๆ เท่านั้นจริง ๆ หรือ ในขณะที่น้อยกว่าสองพันหรือไม่
Zoredache

ยิ่งไปกว่านั้น ... 475,576 รวม 9.3GB
ก๋วยเตี๋ยวมี. ค.

นั่นคือการดูดโดยใช้เครื่องมือเกือบทั้งหมดที่ทำงานในระดับระบบไฟล์ stat()ฉันสงสัยว่าถ้าคุณได้บางโปรไฟล์ที่คุณจะเห็นจำนวนเงินที่สำคัญของเวลาใช้จ่ายโทร
Zoredache

ทำไมไม่-aแต่-r?
kamae

คำตอบ:


13

คุณต้องระบุคอขวด มันไม่ใช่ rsync อาจไม่ใช่แบนด์วิธเครือข่ายของคุณ ตามที่@Zoredacheแนะนำว่าเป็นไปได้มากว่า iops จำนวนมากที่เกิดจากการstat()โทรทั้งหมด เครื่องมือการซิงค์ใด ๆ จะต้อง stat ไฟล์ ในขณะที่ซิงค์ทำงานiostatเพื่อตรวจสอบ

ดังนั้นคำถามจะกลายเป็น; ฉันจะเพิ่มประสิทธิภาพสถิติได้อย่างไร สองคำตอบง่าย ๆ :

  1. รับระบบย่อยดิสก์ที่เร็วกว่า (ทั้งสองโฮสต์ถ้าจำเป็น) และ
  2. ปรับแต่งระบบไฟล์ของคุณ (เช่นสำหรับ ext3 mount ด้วยnoatimeและเพิ่ม a dir_index)

หากมีโอกาสมันไม่ใช่ดิสก์ iops ของคุณที่มีขีด จำกัด คุณสามารถทดลองแยกต้นไม้ dir ออกเป็นหลาย ๆ ต้นแล้วเรียกใช้ rsyncs หลาย ๆ อัน


1
ขอบคุณฉันจะดูเป็น dir_index และดูว่าฉันจะไปได้อย่างไร (เราใช้เวลากลางคืน) ดูเหมือนว่าดิสก์ io จะเป็นคอขวด แต่เรากำลังใช้งานไดรฟ์ SAS 15k ใน RAID 5 แล้วขั้นตอนต่อไปจะเป็น SSD แต่ บริษัท โฮสติ้งของเรายังไม่ได้ให้ทางเลือกกับเรา
ก๋วยเตี๋ยว

5

การบีบอัดไม่ได้มีประโยชน์มากสำหรับไฟล์ขนาดเล็ก (พูดน้อยกว่า 100 ไบต์) สำหรับไฟล์ขนาดเล็กบางครั้งรุ่นที่บีบอัดอาจใหญ่กว่าต้นฉบับ ลองrsyncคำสั่งโดยไม่มีการ-zตั้งค่าสถานะ

sshดีสำหรับความปลอดภัย แต่จะไม่ทำให้การโอนเร็วขึ้น ในความเป็นจริงมันจะทำให้การถ่ายโอนช้าลงเนื่องจากความต้องการการเข้ารหัส / ถอดรหัส

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


หากคุณเพิ่งใช้rsyncไคลเอนต์มันจะใช้ SSH เบื้องหลัง คุณต้องออกไปนอกทางเพื่อปิดการเข้ารหัสเมื่อใช้ rsync ดู: stackoverflow.com/a/1821574/64911
mlissner

1

คุณกำลังใช้ rsync เวอร์ชันใด สิ่งที่เก่ากว่า 3.0.0 (ทั้งสองด้าน) ไม่มีฟีเจอร์ลิสต์ที่เพิ่มขึ้นซึ่งจะเพิ่มความเร็วในการถ่ายโอนจำนวนมาก


การใช้ rsync 3.0.5 บนเซิร์ฟเวอร์ทั้งสอง
ก๋วยเตี๋ยว

1

เพิ่ม-v --progressไปยังบรรทัดคำสั่ง rsync ของคุณ

rsync จะทำใน 2 ขั้นตอน:

  1. เรียกดูไฟล์ทั้งหมดบนทั้งสองแพลตฟอร์มเพื่อเปรียบเทียบขนาดและ mdate
  2. ทำการถ่ายโอนจริง

หากคุณเป็นไฟล์ขนาดเล็กจำนวน rsync ในไดเรกทอรีที่ซ้อนกันอาจเป็นไปได้ว่า rsync ใช้เวลาส่วนใหญ่ในการย่อยและค้นหาไฟล์ทั้งหมด

หากเวลาไม่ได้ใช้สำหรับการค้นหาเวลาอาจเกิดจากการเพิ่มเวลาแฝงทั้งหมดที่เริ่มต้นการถ่ายโอนไฟล์ใหม่


1

ในกรณีที่เกี่ยวข้องกับระบบไฟล์ ext3 หรือ ext4 ให้ตรวจสอบว่าทั้งคู่เปิดใช้งานคุณสมบัติ dir_index ! จำนวน rsync-throughput สามเท่านี้ในกรณีของฉัน

ดูรายละเอียดในคำตอบของฉันได้ที่: /server//a/759421/80414

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.