Salin file besar ke beberapa mesin di LAN

9

Saya memiliki beberapa file besar yang harus saya salin dari satu mesin Linux ke sekitar 20 mesin Linux lainnya, semuanya pada LAN yang sama secepat mungkin. Alat / metode apa yang terbaik untuk menyalin file-file ini, mencatat bahwa ini tidak akan menjadi salinan satu kali. Mesin-mesin ini tidak akan pernah terhubung ke Internet, dan keamanan tidak menjadi masalah.

Memperbarui:

Alasan saya menanyakan hal ini adalah karena (seperti yang saya mengerti) kami saat ini menggunakan scpserial untuk menyalin file ke masing-masing mesin dan saya telah diberitahu bahwa ini "terlalu lambat" dan alternatif yang lebih cepat sedang dicari. Menurut apa yang telah saya katakan, berusaha untuk memaralelkan scppanggilan hanya memperlambatnya lebih jauh karena hard drive mencari.

Jonathan Callen
sumber
Tentukan "besar". Ratusan MB / GB / TB / lebih?
Janne Pikkarainen
Saat ini, totalnya duduk di sekitar 4 GiB (terkompresi), meskipun itu dapat tumbuh di masa depan.
Jonathan Callen
Artinya, dengan cara apa pun bahkan pada tahun 2011 - BUKAN BESAR. Diberi tautan 1 gigabit yang diaktifkan dengan benar (standar pada 2011) yang cukup mudah untuk dicapai. Menjalankannya dari server 10g (tidak jarang bahkan pada tahun 2011) ... well;)
TomTom

Jawaban:

27

BitTorrent. Begitulah cara Twitter menyebarkan beberapa hal secara internal.

http://engineering.twitter.com/2010/07/murder-fast-datacenter-code-deploys.html (tautan arsip web)

mfinni
sumber
3
Selain jawaban saya (yang menurut saya akan melakukan pekerjaan dengan baik, jika Anda bisa menerapkannya), jawaban di bawah untuk NFS adalah jawaban yang sangat bagus. Server NFS yang baik harus menyimpan file cache sehingga Anda tidak akan terus memukul disk. Juga, dengan itu, jangan menyalin file dari server ke klien. Mulailah dari klien dan biarkan cache server NFS membantu.
mfinni
1
Pastikan untuk mencobanya di lingkungan non-produksi, dalam presentasi yang mereka katakan (iirc) itu membuat beberapa switch sangat menderita selama penyebaran pertama karena jumlah paket yang dipertukarkan.
Shadok
1
@psusi Mengapa menurut Anda harus mengirim semua data 20 kali? Setelah rekan-rekan lain memiliki bagian dari file tersebut, mereka dapat mulai mengirim bagian-bagian yang mereka miliki kepada rekan-rekan lainnya sendiri.
Jonathan Callen
2
Masalah untuk OP bukan LAN, itu adalah disk di server pusat.
mfinni
1
@ pSusi - multicast tentu akan menjadi jawaban lain yang valid. Posting itu sebagai jawaban, bukan sebagai ketukan pada jawaban saya.
mfinni
12

Bagaimana dengan UFTP , ia menggunakan multicast untuk mengirimkan file melalui UDP ke banyak klien sekaligus. Tidak untuk semua orang dan saya bukan ahli dalam hal itu tetapi sepertinya itu melakukan apa yang Anda inginkan.

Chopper3
sumber
1
Penafian: Ini akan membutuhkan peralatan yang mendukung multicast.
user606723
Saya agak berharap ini akan berada di vlan yang sama - mengurangi dampak dari penggunaan ini.
Chopper3
@ user606723: Bukankah semuanya modern? Mungkin beberapa sampah konsumen tidak, tapi saya belum menemukan sesuatu dengan multicast yang rusak dalam beberapa saat. Terlalu banyak menggunakannya hari ini. Saya pikir Windows Active Directory bahkan menggunakan multicast.
Zan Lynx
Sebenarnya saya tidak punya pengalaman dengan @ZanLynx ini. Saya tahu bahwa banyak kantor / laboratorium komputer menggunakan sakelar konsumen / tidak dikelola pada hop terakhir. Bagaimana switch ini berperilaku dengan multicast?
user606723
3

Sudahkah Anda mencoba menyalin data ini rsync? Jika Anda memiliki 1 Gbit LAN atau lebih cepat, menyalin lebih dari 4 * 20 GB seharusnya tidak menjadi masalah.

Seberapa sering salinan ini terjadi? Apakah penting jika butuh beberapa menit untuk menyelesaikannya?

Janne Pikkarainen
sumber
3

scp-tsunami itu jalannya!

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

Ini biasanya digunakan untuk mendistribusikan gambar disk pada kluster virtualisasi, kinerjanya mendekati bittorrent tetapi lebih mudah digunakan untuk penggunaan sehari-hari.

Giovanni Toraldo
sumber
2

Menyiapkan berbagi NFS dan meminta setiap mesin menarik dari repo bersama file besar ini kemungkinan akan menjadi metode tercepat (NFS sangat cepat dan memiliki sedikit overhead).

Anda bisa menambahkan satu atau dua NIC tambahan ke server sumber dan menyatukannya untuk memberi Anda hasil yang lebih baik.

Implementasi bisa menjadi pekerjaan cron sederhana pada setiap server target yang mengambil secara membabi buta dari bagian setiap jam / hari / apa pun. Anda juga dapat mengatur daemon untuk polling untuk file baru; Anda juga bisa hanya skrip sesi kontrol ke SSH (dengan pasangan kunci) ke dalam setiap kotak target dan memerintahkan mereka untuk mengambil file ketika Anda menjalankan skrip Anda.

gravyface
sumber
1
Saya percaya pendahulu saya mencoba menggunakan NFS untuk ini dan menemukan bahwa (pada saat itu), cache RAM tidak cukup besar untuk seluruh transfer, yang menyebabkan beban pada hard drive menjadi faktor pembatas daripada jaringan. kecepatan.
Jonathan Callen