เพิ่มประสิทธิภาพการทำงานสูงสุดและปริมาณงาน rsync - เซิร์ฟเวอร์กิกะบิตที่เชื่อมต่อโดยตรง


27

ฉันมีเซิร์ฟเวอร์ Dell R515 สองเครื่องที่ใช้งาน CentOS 6.5 โดยมี NIC ของ Broadcom หนึ่งเครื่องในแต่ละเครื่องเชื่อมต่อโดยตรงกับเซิร์ฟเวอร์อื่น ฉันใช้ลิงก์โดยตรงเพื่อผลักดันการสำรองข้อมูลจากเซิร์ฟเวอร์หลักในคู่ไปที่สำรองทุกคืนโดยใช้ rsync บน ssh ตรวจสอบปริมาณการใช้งานฉันเห็นปริมาณงาน ~ 2MBps ซึ่งน้อยกว่าที่คาดไว้มากจากพอร์ตกิกะบิต ฉันได้ตั้งค่า MTU เป็น 9000 ทั้งสองด้าน แต่ดูเหมือนจะไม่เปลี่ยนแปลงอะไรเลย

มีชุดการตั้งค่าและการเพิ่มประสิทธิภาพที่แนะนำที่จะนำฉันไปสู่ปริมาณงานที่มีสูงสุด นอกจากนี้เนื่องจากฉันใช้ rsync บน ssh (หรืออาจเป็นเพียงแค่ NFS) เพื่อคัดลอกไฟล์หลายล้านไฟล์ (~ 6Tb ของไฟล์ขนาดเล็ก - Zimbra mailstore ขนาดใหญ่) การเพิ่มประสิทธิภาพที่ฉันกำลังมองหาอาจจำเป็นต้องเฉพาะเจาะจงมากขึ้นสำหรับกรณีการใช้งานเฉพาะของฉัน .

ฉันใช้ ext4 ทั้งสองด้านถ้าเป็นเช่นนั้น

ขอบคุณ

แก้ไข: ฉันใช้rsyncตัวเลือกต่อไปนี้กับผลลัพธ์ที่คล้ายกันมาก:

rsync -rtvu --delete source_folder/ destination_folder/

rsync -avHK --delete --backup --backup-dir=$BACKUPDIR source_folder/ destination_folder/

ขณะนี้ฉันกำลังดูประสิทธิภาพที่ไม่ดีในระดับเดียวกันเมื่อใช้cpกับการส่งออก NFS ผ่านลิงก์สายเคเบิลโดยตรงเดียวกัน

EDIT2: หลังจากเสร็จสิ้นการซิงค์ฉันสามารถเรียกใช้iperfและพบว่าประสิทธิภาพอยู่ที่ประมาณ 990Mbits / วินาทีความช้านั้นเกิดจากชุดข้อมูลจริงที่ใช้งานอยู่


1
คุณควรเพิ่ม rsync ลงในแท็กของคุณ คุณตรวจสอบเวลาสำหรับส่วนของรายการของ rsync หรือไม่ ปริมาณงานที่น้อยอาจเกิดจากไฟล์เล็ก ๆ คุณสามารถโพสต์คำสั่ง rsync ของคุณเพื่อตรวจสอบตัวเลือกได้หรือไม่
kranteg

@kranteg โปรดดูการแก้ไข
dyasny

2
iperfโปรดตรวจสอบการเชื่อมต่อกับ
ewwhite

yup, iperf แสดง 991mbits / s ฉันเดาว่ามันเป็นชุดข้อมูลที่ช้ามาก
dyasny

คุณไม่สามารถส่งผ่านข้อมูลได้ด้วย rsync และชุดข้อมูลที่มีไฟล์ขนาดเล็ก คุณควรลองทาร์อย่างแน่นอน
kranteg

คำตอบ:


24

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

ตัวเลือกที่จะปรับปรุง ได้แก่ :

  • การใช้ rsync + SSH พร้อมอัลกอริธึมการเข้ารหัสที่มีค่าใช้จ่ายน้อยลง (เช่น-e "ssh -c arcfour")
  • ขจัดเข้ารหัสทั้งหมดผ่านการขนส่ง SSH กับสิ่งที่ต้องการHPN-SSH
  • การถ่ายโอนแบบบล็อก สแนปชอตdd,, ZFS snapshot การรับส่งฯลฯ
  • หากเป็นการถ่ายโอนครั้งเดียวหรือไม่บ่อยครั้งใช้tarnetcat ( nc), mbufferหรือชุดค่าผสมบางอย่าง
  • ตรวจสอบ CentOS ของคุณการตั้งค่าtuned-adm
  • การลบ atime ออกจากระบบไฟล์ของคุณ ตรวจสอบตัวเลือกการติดตั้งระบบไฟล์อื่น ๆ
  • NIC ส่ง / รับบัฟเฟอร์
  • ปรับrsyncคำสั่งของคุณ หากว่า-Wไฟล์-ทั้งตัวเลือกที่ให้ความรู้สึกที่นี่? เปิดใช้งานการบีบอัดหรือไม่
  • ปรับระบบย่อยหน่วยเก็บข้อมูลให้เหมาะสมสำหรับประเภทการถ่ายโอน (SSD, spindle-count, แคชคอนโทรลเลอร์ RAID)

ฉันทิ้ง SSH สำหรับ NFS แล้วเห็นผลลัพธ์เดียวกันมาก การถ่ายโอนตามบล็อกคือสิ่งที่ฉันกำลังวางแผนสลับไปใช้การสำรองข้อมูลโดยใช้สแน็ปช็อต LVM และสำรองข้อมูลไปยังเซิร์ฟเวอร์ที่สองซึ่งฉันจะใช้งาน ZFS เพื่อลดความซ้ำซ้อน atime ถูกปิดการใช้งานทั้งสองด้าน ไม่ใช้การบีบอัด ฉันจะเพิ่มประสิทธิภาพ Subsys หน่วยเก็บข้อมูลสำหรับการถ่ายโอนชนิดนี้ได้อย่างไร แหล่งที่มามีสอง RAID10 มากกว่า 12x 10k ไดรฟ์ SAS หนึ่งในไดรฟ์ภายในและอื่น ๆ MD1220 เซิร์ฟเวอร์สำรองมีจำนวนดิสก์เท่ากัน แต่มีไดรฟ์ SATA ขนาดใหญ่และใช้ RAID5 แคชตัวเต็ม H800 และ H700 ควบคุมทั้งสองด้าน 2MBps (จาก iftop) ~
dyasny

~ ทำให้ฉันคิดว่าการสร้างเครือข่ายเป็นปัญหาคอขวดที่นี่
dyasny

@dyasny ทดสอบเครือข่ายของคุณด้วยiperfเพื่อให้แน่ใจ
ewwhite


1
ตรวจสอบให้แน่ใจว่าโครงสร้างไดเรกทอรีปลายทางถูกสร้างขึ้นโดยและไม่ได้โดยrsync cpผมเคยเห็นrsyncใช้เวลามากอีกต่อไปเพื่อปรับปรุงต้นไม้ไดเรกทอรีระยะไกล แต่เดิมสร้างขึ้นโดยcp: 88GB ปรับปรุงด้วย Checksumming ใน 1h26m แทน 3h! วิธีที่คุณสร้างเค้าโครงดิสก์เริ่มต้นนั้นมีความสำคัญต่อการได้รับประสิทธิภาพการอัพเดตที่ดี เวลา CPU เหมือนกัน เวลาจริงสามารถเพิ่มเป็นสองเท่า (การอัปเดตเดียวกันโดยไม่ตรวจสอบการทำงานใน 13 นาทีจาก SSD เป็น 200GB Seagate)
Ian D. Allen

3

ดังที่คุณทราบว่าการคัดลอกไฟล์จำนวนมาก (เช่นกล่องจดหมายที่ใช้รูปแบบ MailDir หรือคล้ายกัน) ไม่ใช่ตัวเลือกที่ดีที่สุดในการใช้ประโยชน์จากอินเทอร์เฟซแบนด์วิดท์สูง SSH อาจไม่ใช่โปรโตคอลการขนส่งที่ดีที่สุดสำหรับสิ่งนั้น ฉันจะลองใช้ tar เพื่อสร้าง tarball บนโฮสต์ต้นทางก่อนที่จะส่งไปให้คุณโฮสต์รอง

tar c /var/mail | ssh root@secondary-host 'tar x -C /var/backups'

หากคุณต้องการการสำรองข้อมูลเพิ่มเติมคุณอาจต้องการลองใช้-gตัวเลือก tar หากคุณยังต้องการเพิ่มกลุ่มเป้าหมายให้ลองใช้ netcat แทน ssh


ฉันได้เปลี่ยนไป NFS แทน SSH เพื่อลบค่าใช้จ่ายในการเข้ารหัสไม่มีความสุข
dyasny

คุณเคยลองใช้น้ำมันดินหรือยัง? อาจเป็นขั้นตอนแรกลองสร้าง tarbal ในเครื่องบนเซิร์ฟเวอร์หลักแล้วโอนไปที่ wire (หรือทดสอบเครือข่ายของคุณด้วย iperf เช่น @ewwhite suggeted)
alxgomz

ฉันจะถ้าฉันมีพื้นที่ในท้องถิ่นเพื่อสำรอง นี้เป็นอย่างมากสวยแม้จะมีประชากรอย่างเต็มที่ DAS กล่อง
dyasny

จากนั้นลอง piping มันผ่าน netcat หรือ ssh (ไม่ใช่ประสิทธิภาพเท่านี้)
alxgomz

ฉันจะเปลี่ยนเพื่อป้องกันการสำรองข้อมูลตามในภายหลังและผมตั้งใจที่จะท่อddผ่านncแล้ว แต่ตอนนี้ฉันติดอยู่กับ
แบ็กอั

1

ลองลองแยกแยะปัจจัยที่สนับสนุน:

  • CPU (เช่น dd ของ / dev / ศูนย์ piped ผ่านลูปแบ็ค)
  • disk I / O (เช่น dd ของไฟล์ขนาดใหญ่ไปป์ที่ cat> / dev / null [piped เพื่อป้องกันการลัดวงจร]
  • I / O เครือข่ายทางกายภาพ (เช่น dd ไปยังเครื่องอื่น)
  • เป็นต้น

และทดสอบพวกเขาอย่างอิสระ

ฉันเคยมีประสบการณ์ที่ไม่ดีกับไดรเวอร์ Broadcom ดังนั้นคำแนะนำแรกของฉันคือทดสอบแบนด์วิดท์เครือข่ายที่ใช้งานได้ด้วย: dd if=/dev/zero bs=1m count=10k | rsh backup_host cat \> /dev/null


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