ปลายทาง rsync ionice


14

เพื่อหลีกเลี่ยง rsync ให้อดอยากระบบและเครือข่ายที่เราใช้ioniceเมื่อเริ่มต้น rsync และตั้งค่า--bwlimitพารามิเตอร์ ตัวอย่างเช่น:

ionice -c2 -n7 rsync -aH --bwlimit=30000 /foo root@dest.com:/

สิ่งนี้จะช่วยให้มั่นใจได้ว่าเซิร์ฟเวอร์ต้นทางนั้นยังคงตอบสนองได้ดี อย่างไรก็ตามเซิร์ฟเวอร์ปลายทางช้ามากเนื่องจากดิสก์ io ที่ 100% (ตามที่atopยูทิลิตีเห็น)

เป็นไปได้ไหมที่จะใช้ioniceที่เซิร์ฟเวอร์ปลายทางด้วย? บางทีผ่าน-eตัวเลือกrsync ? ฉันไม่ต้องการเรียกใช้ rsync daemon ถ้าเป็นไปได้

คำตอบ:


11

การเปลี่ยนคำสั่ง rsync หรือตัดคำในเชลล์สคริปต์เพื่อรวมคำสั่ง / พารามิเตอร์ ionice เป็นตัวเลือก นอกจากนี้คุณสามารถใช้ประโยชน์จาก--rsync-pathตัวเลือกซึ่งจะบอก rsync ว่าคำสั่งใดที่จะดำเนินการบนเซิร์ฟเวอร์ระยะไกล สิ่งที่ต้องการ--rsync-path="ionice -c2 -n7 rsync"จะทำให้แน่ใจว่า ionice ทำงานบนปลายทาง

ฉันจะเพิ่ม ionice ที่ไม่ได้มีประสิทธิภาพขึ้นอยู่กับการกำหนดค่าเซิร์ฟเวอร์ ใช้งานได้กับลิฟต์ CFQ I / O เริ่มต้นเท่านั้น หากคุณทำการปรับแต่งระบบจัดเก็บข้อมูลใด ๆ วิธีการนี้อาจใช้ไม่ได้

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

คุณกำลังคัดลอกอะไร การตั้งค่าฮาร์ดแวร์ / ระบบปฏิบัติการคืออะไร


เรามีโฮสต์ OpenVZ หลายแห่ง เหล่านี้เป็นเครื่อง Xeon 16-core ที่ใช้ CentOS ทุกคืนเราคัดลอก OpenVZ คอนเทนเนอร์ทั้งหมดไปยังโฮสต์อื่น เนื่องจากที่อยู่ IP ของเราสามารถกำหนดเส้นทางไปยังโฮสต์ทั้งหมดได้ทำให้เราสามารถเปิดใช้งาน VPS สำรองได้อย่างรวดเร็วในกรณีที่โฮสต์ล้มเหลว
Jason Smith

โหลดมีความสูงเท่าใด สำเนาท้องถิ่นต่อท้องถิ่นเป็นอย่างไร มีการเปลี่ยนแปลงใด ๆ กับลิฟต์ I / O ของที่เก็บข้อมูลหรือไม่
ewwhite

จากสิ่งที่ฉันได้เห็นการ จำกัด แบนด์วิดท์ของเครือข่ายไม่ จำกัด ดิสก์ io (หลายพันไดเรกทอรีต้องสแกนแม้ว่าจะไม่มีไฟล์ใดเปลี่ยนแปลง) --bwlimit ควร จำกัด ดิสก์ i / o ด้วยหรือไม่
Jason Smith

ตามatopดิสก์ io จะระเบิดอย่างต่อเนื่องถึง 100% ฉันไม่แน่ใจว่าคุณหมายถึงอะไรโดย "ลิฟต์ I / O ของที่เก็บข้อมูล" ดังนั้นฉันอาจเรียกใช้ค่าเริ่มต้นหรือไม่
Jason Smith

2

คำสั่ง rsync ของคุณจะเรียกใช้rsyncคำสั่งที่ปลายทางระยะไกลเช่นกัน

ลองใส่สิ่งต่อไปนี้กับผู้ใช้รูตเซิร์ฟเวอร์ปลายทาง. bashrc ของคุณในคำอื่น ๆ /root/.bashrc

alias rsync="ionice -c2 -n7 rsync"

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