rsync ช้ามาก (ตัวประกอบ 8 ถึง 10) เทียบกับ cp ในการคัดลอกไฟล์จาก nfs-share ไปยัง local dir


17

ฉันมีเซิร์ฟเวอร์ Ubuntu ติดตั้งใหม่ซึ่งควรเป็นเซิร์ฟเวอร์สำรองใหม่สำหรับ VM-storage ของเรา เซิร์ฟเวอร์มี 4 นิกส์ 2 ในนั้นคือ 10Gbit (อันที่จริงแล้ว intel x540-T2 พร้อมไดร์เวอร์ใหม่ล่าสุดที่มีอยู่) ซึ่งใช้สำหรับเชื่อมต่อกับ SAN ฉันติดตั้ง nfs-share ไว้ภายในเครื่องและเปรียบเทียบความแตกต่างของความเร็วขณะที่คัดลอกไดเรกทอรีด้วยไฟล์ ~ 30 ไฟล์ประมาณ 15 vm-images และไฟล์บันทึกที่เกี่ยวข้อง รูปภาพมีขนาดระหว่าง 8 GB ถึง 600 GB

โดยใช้:

cp -rf /mnt/nfs-share /backup-storage/

bmon แสดงผลประมาณ 600 MiB / s

การใช้

rsync -av /mnt/nfs-share /backup-storage/

bmon แสดงแพ็กเก็ตบางอย่างในวินาทีแรกหยุดประมาณ 30 วินาทีและสร้างได้มากถึง 60-75 MiB / s CPU อยู่ที่ประมาณ 60%

สิ่งที่ควร / ฉันจะเปลี่ยนไปใช้rsyncกับประสิทธิภาพเช่นเดียวกับcp?

คำตอบ:


20

ผมคิดว่าความแตกต่างเหล่านี้จะค่อนข้างดีขึ้นระหว่างและcp rsyncดูบทความนี้เป็นข้อมูลอ้างอิงหัวข้อ: ดูที่ประสิทธิภาพ rsync

ตัดตอนมา:
The four commands tested were:

    rsync $SRC $DEST
    echo $SRC | cpio -p $DEST
    cp  $SRC $DEST
    cat $SRC > $DEST/$SRC

The results for rsync, cpio, cp, and cat were:

user    sys     elapsed hog MiB/s   test
5.24    77.92   101.86  81% 100.53  cpio
0.85    53.77   101.12  54% 101.27  cp
1.73    59.47   100.84  60% 101.55  cat
139.69  93.50   280.40  83% 36.52   rsync

ฉันใช้rsyncเป็นประจำทุกวัน มีสิ่งที่คุณสามารถทำได้เพื่อปรับปรุงสถานการณ์

ตัวอย่างเช่นคุณสามารถลองใช้-Wสวิตช์ได้:

-W, --whole-file            copy files whole (w/o delta-xfer algorithm)

นอกจากนี้ผมขอแนะนำให้แน่ใจว่าคุณมี 3.x rsyncรุ่น มีการปรับปรุงที่เห็นได้ชัดเจนคือเมื่อเราเลื่อนไปเป็นเวอร์ชันที่ใหม่กว่า


15

วิธีที่จะทำให้ rsync มีประสิทธิภาพเช่นเดียวกับ cp คือการสะกดคำว่า "cp"

ความแตกต่างระหว่างสองคำสั่งมีความสำคัญแม้ว่าผลกระทบสุทธิอาจเหมือนกัน โดยเฉพาะอย่างยิ่ง rsync ทำการอ่านเพื่อดูว่าควรคัดลอกไฟล์บางส่วนหรือบางส่วนของไฟล์หรือไม่

มีเหตุผลบางอย่างที่คุณต้องการใช้ rsync หรือไม่? เนื่องจาก cp คัดลอก "สุ่มสี่สุ่มห้า" คุณจะเห็นประสิทธิภาพที่สูงขึ้น หากสำหรับชุดเงื่อนไขที่เรียกใช้กลไก "delta-transfer" ของ rsync คุณจะเห็นอัตราการถ่ายโอนที่ลดลงและการใช้ CPU เพื่อเพิ่มขึ้นอย่างมากในลักษณะที่คุณรายงาน


ฉันตระหนักถึงพฤติกรรม แต่ไม่คาดหวังถึงผลกระทบดังกล่าว ฉันคิดว่าควรให้ CPU-Power และ IOPS rsync อย่างน้อย 300 MiB / s โดยเฉพาะถ้าไม่มีไฟล์ที่จะคัดลอก ฉันยังทำการทดสอบไม่เสร็จ การสำรองข้อมูลด้วย rsync นั้นจะง่ายกว่า แต่ฉันสามารถเขียนสคริปต์โดยใช้ cp, dd หรืออะไรก็ตามที่อยู่ในใจ ตอนนี้ฉันต้องการทดสอบความเป็นไปได้ต่างๆในระบบไฟล์ที่แตกต่างกันเพื่อประเมินสิ่งที่เหมาะสมที่สุด
Soulpath

6
คุณอาจเรียกฉันว่าเป็นนักประสบการณ์นิยม แต่เมื่อความคาดหวังและความจริงของคุณไม่เห็นด้วยก็มักจะไม่ใช่ความจริงที่เข้าใจผิด มีเหตุผลหลายสิบประการที่ทำให้คุณถูกลงโทษได้ แม้การอ่านและเขียนบน SAN ที่สอดประสานกันจะมีประสิทธิภาพที่น่าทึ่งขึ้นอยู่กับรายละเอียดของซอฟต์แวร์
msw

3
ฉันไม่สงสัยเกี่ยวกับความเป็นจริงเพียงเกี่ยวกับ rsync- แต่เนื่องจากความแตกต่างเหล่านี้ฉันจะไปกับการเขียนสคริปต์โดยใช้ cp และบาง checksums ขอบคุณสำหรับคำแนะนำ!
Soulpath

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

น่าเศร้าที่คำตอบนี้ผิดในรายละเอียด เมื่อคัดลอกระหว่าง filesystems "ท้องถิ่น" (และใช่ NFS ภูเขาเป็นระบบแฟ้มท้องถิ่นในบริบทนี้) rsync ไม่ได้อ่านไฟล์เป้าหมาย--whole-fileเมื่อคัดลอกเว้นแต่ว่าคุณได้เปิดใช้งานนี้การดำเนินการต่อต้านด้วย cpในสถานการณ์เช่นนี้ก็เช่นเดียวกับช้ามาก
roaima
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.