คัดลอกไฟล์ขนาดใหญ่ไปยังหลายเครื่องบน LAN


9

ฉันมีไฟล์ขนาดใหญ่ไม่กี่ไฟล์ที่ฉันต้องการคัดลอกจากเครื่อง Linux เครื่องหนึ่งไปยังเครื่อง Linux อีกประมาณ 20 เครื่องทั้งหมดนี้อยู่ใน LAN เดียวกันโดยเร็วที่สุดเท่าที่จะเป็นไปได้ เครื่องมือ / วิธีใดที่จะดีที่สุดสำหรับการคัดลอกไฟล์เหล่านี้โดยสังเกตว่านี่จะไม่เป็นการคัดลอกแบบครั้งเดียว เครื่องเหล่านี้จะไม่เชื่อมต่อกับอินเทอร์เน็ตและความปลอดภัยไม่ใช่ปัญหา

ปรับปรุง:

เหตุผลที่ฉันถามเรื่องนี้ก็เพราะ (ตามที่ฉันเข้าใจ) เรากำลังใช้scpอนุกรมในการคัดลอกไฟล์ไปยังเครื่องแต่ละเครื่องและฉันได้รับแจ้งว่านี่ "ช้าเกินไป" และเป็นทางเลือกที่เร็วกว่า ตามที่ฉันได้รับการบอกว่าการพยายามscpโทรแบบขนานนั้นช้าลงมากขึ้นเนื่องจากการค้นหาฮาร์ดไดรฟ์


กำหนด "ใหญ่" หลายร้อย MB / GB / TB / มากกว่า?
Janne Pikkarainen

ปัจจุบันจำนวนทั้งหมดอยู่ที่ประมาณ 4 GiB (บีบอัด) แม้ว่าอาจจะเติบโตในอนาคต
Jonathan Callen

นั่นคือโดยวิธีการใด ๆ แม้ในปี 2011 - ไม่ใหญ่ รับลิงค์ 1 กิกะบิตที่มีการสลับอย่างถูกต้อง (มาตรฐานในปี 2011) ที่ค่อนข้างจะเป็นไปได้ ใช้งานเซิร์ฟเวอร์ 10g (ไม่ใช่ที่หายากแม้แต่ในปี 2011) ... ดี;)
TomTom

คำตอบ:


27

BitTorrent มันเป็นวิธีที่ Twitter ใช้บางสิ่งภายใน

http://engineering.twitter.com/2010/07/murder-fast-datacenter-code-deploys.html (ลิงก์เก็บถาวรเว็บ)


3
นอกเหนือจากคำตอบของฉัน (ซึ่งฉันคิดว่าจะทำได้ดีถ้าคุณสามารถนำไปใช้ได้) คำตอบด้านล่างสำหรับ NFS นั้นดีมาก เซิร์ฟเวอร์ NFS ที่ดีควรแคชไฟล์ดังนั้นคุณจะไม่กดปุ่มดิสก์ต่อไป นอกจากนี้อย่าคัดลอกไฟล์จากเซิร์ฟเวอร์ไปยังไคลเอนต์ เริ่มต้นจากไคลเอ็นต์และปล่อยให้แคชของเซิร์ฟเวอร์ NFS ช่วยเหลือ
mfinni

1
ให้แน่ใจว่าได้ลองในสภาพแวดล้อมที่ไม่ได้ใช้งานจริงในการนำเสนอที่พวกเขากล่าวว่า (iirc) ทำให้สวิตช์บางตัวประสบปัญหามากมายระหว่างการปรับใช้ครั้งแรกเนื่องจากจำนวนแพ็คเก็ตแลกเปลี่ยน
Shadok

1
@psusi ทำไมคุณถึงบอกว่าต้องส่งข้อมูลทั้งหมด 20 ครั้ง เมื่อเพื่อนคนอื่น ๆ มีส่วนหนึ่งของไฟล์พวกเขาสามารถเริ่มส่งชิ้นส่วนที่พวกเขามีให้กับเพื่อนคนอื่น ๆ ด้วยตนเอง
Jonathan Callen

2
ปัญหาสำหรับ OP ไม่ใช่ LAN แต่เป็นดิสก์บนเซิร์ฟเวอร์กลาง
mfinni

1
@ pSusi - multicast จะเป็นคำตอบที่ถูกต้องอย่างแน่นอน โพสต์ว่าเป็นคำตอบไม่เป็นคำตอบของฉัน
mfinni

12

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


1
คำเตือน: นี่จะต้องมีอุปกรณ์ที่รองรับมัลติคาสต์
user606723

ฉันหวังว่าจะเป็นเช่นนี้ใน vlan เดียวกัน - ลดผลกระทบของการใช้นี้
Chopper3

@ user606723: ทุกสิ่งไม่ทันสมัยใช่ไหม บางทีขยะผู้บริโภคบางอย่างไม่ได้ แต่ฉันไม่ได้ทำงานอะไรเลยกับ multicast ที่เสียไประยะหนึ่ง วันนี้ใช้มากเกินไป ฉันคิดว่า Windows Active Directory ใช้มัลติคาสต์ด้วยซ้ำ
Zan Lynx

ที่จริงฉันไม่มีประสบการณ์กับ @ZanLynx นี้ ฉันรู้ว่าสำนักงาน / ห้องปฏิบัติการคอมพิวเตอร์หลายแห่งใช้สวิตช์ผู้บริโภค / สวิตช์ที่ไม่มีการจัดการในช่วงสุดท้าย สวิตช์เหล่านี้จะทำงานอย่างไรกับมัลติคาสต์
user606723

3

คุณพยายามคัดลอกข้อมูลนี้ด้วยrsyncหรือไม่? หากคุณมี 1 Gbit LAN หรือเร็วกว่าการคัดลอกเกิน 4 * 20 GB ไม่น่าจะมีปัญหา

สำเนานี้จะเกิดขึ้นบ่อยแค่ไหน? มันสำคัญไหมถ้าใช้เวลาสองสามนาทีกว่าจะเสร็จ?


3

SCP-สึนามิเป็นวิธี!

https://code.google.com/p/scp-tsunami/

โดยทั่วไปจะใช้เพื่อแจกจ่ายอิมเมจดิสก์บนคลัสเตอร์ virtualization ประสิทธิภาพของมันใกล้กับ BitTorrent แต่มันง่ายกว่าที่จะใช้สำหรับการใช้งานรายวัน


2

การตั้งค่าการแบ่งปัน NFS และการดึงเครื่องแต่ละเครื่องจาก repo ที่ใช้ร่วมกันของไฟล์ขนาดใหญ่น่าจะเป็นวิธีที่เร็วที่สุด (NFS นั้นรวดเร็วมากและมีค่าใช้จ่ายเล็กน้อย)

คุณสามารถเพิ่ม NIC เพิ่มเติมหรือสองตัวในเซิร์ฟเวอร์ต้นทางและเชื่อมโยงเข้าด้วยกันเพื่อให้ปริมาณงานที่ดีขึ้น

การปรับใช้อาจเป็นงาน cron อย่างง่ายบนเซิร์ฟเวอร์เป้าหมายแต่ละเครื่องที่ดึงข้อมูลจากการแชร์ทุก ๆ ชั่วโมง / วัน / อะไรก็ตาม คุณสามารถตั้งค่า daemon เพื่อสำรวจความคิดเห็นสำหรับไฟล์ใหม่; คุณสามารถใช้สคริปต์ควบคุมเซสชันกับ SSH (พร้อมคู่คีย์) ลงในแต่ละกล่องเป้าหมายและสั่งให้ดึงไฟล์เมื่อคุณเรียกใช้สคริปต์ของคุณ


1
ฉันเชื่อว่าบรรพบุรุษของฉันพยายามใช้ NFS สำหรับเรื่องนี้และพบว่า (ในเวลานั้น) แคช RAM มีขนาดไม่ใหญ่พอสำหรับการถ่ายโอนทั้งหมดซึ่งทำให้โหลดบนฮาร์ดไดรฟ์กลายเป็นปัจจัย จำกัด แทนเครือข่าย ความเร็ว.
Jonathan Callen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.