Sinkronisasi file Multi Thread di antara 2 server Linux

9

Saat ini saya sedang menjalankan rsync untuk 2,2 juta file total 250GB dan itu hanya membutuhkan waktu 700 ribu file dalam 6 jam.

Apakah ada yang tahu alat seperti rsync yang dapat melakukan ini dengan beberapa utas sehingga berjalan lebih cepat?

Tom van Ommen
sumber
3
Apakah Anda punya alasan untuk menganggapnya terikat CPU?
Chopper3
Opsi rsync apa yang Anda gunakan?
Kyle Smith
Apakah Anda menggunakan ssh sebagai transportasi?
JimB
rsync -avSPp Dan tidak ada masalah CPU atau Disk.
Tom van Ommen
Dan tidak ada transportasi SSH yang melihat sesuatu di web, tidak tahu apakah ini lebih cepat. Sudah butuh waktu lama untuk mengindeks semua file.
Tom van Ommen

Jawaban:

7

Saya ragu cpu adalah faktor pembatas di sini. Kemungkinan besar Anda dibatasi oleh bandwidth jaringan untuk transfer, dan IO disk; terutama latensi untuk semua panggilan stat tersebut.

Bisakah Anda memecah hierarki sistem file menjadi potongan-potongan kecil untuk diproses secara paralel?

Apa file sumbernya, dan apa yang menulis atau memodifikasinya? Apakah mungkin untuk mengirim perubahan saat terjadi di tingkat aplikasi?

JimB
sumber
Menyinkronkan file Lampiran Zarafa, semua di-gzip secara default. saya bisa menjalankan beberapa instance tapi itu kurang efisien dari 10 utas. Dan jaringannya adalah 1GBit hingga 1GBit tetapi pusat data yang berbeda tetapi seharusnya tidak menjadi masalah. mendapat 24 disk SAS di sisi sumber dan penyimpanan cerdas dengan SSD di tujuan.
Tom van Ommen
1
@ Tom van Ommen - menurut Anda mengapa Anda menggunakan CPU terbatas? Bagaimana beberapa proses lebih efisien daripada utas jika Anda benar-benar dibatasi CPU?
JimB
1
@ Tom van Ommen, 10 proses memiliki overhead lebih dari 10 utas; Namun, mengunci struktur data antara utas adalah mimpi buruk pengkodean. Seringkali jauh lebih efisien (untuk waktu pembuat kode) hanya menelurkan banyak proses dan selesai dengannya
Mike Pennington
1
@Guacamole - banyak utas dapat membantu dalam beberapa situasi, tetapi jika tautannya jenuh, dia tidak akan mendorong lagi melalui tidak peduli berapa banyak utas yang dia miliki. Rsync memang menggunakan utas untuk konkurensi, dan tidak secara internal memblokir IO.
JimB
1
@Guacamole - Yang saya tunjukkan adalah jika dia menggunakan ssh sebagai transport, throughputnya dibatasi oleh ssh sendiri (khususnya jendela penerimaan statis, kecuali dia menggunakan patch ssh HPN).
JimB
1

Jika subsistem disk dari server penerima adalah array dengan banyak disk, menjalankan beberapa proses rsync dapat meningkatkan kinerja. Saya menjalankan 3 proses rsync untuk menyalin file ke server NFS (RAID6 dengan 6 disk per grup serangan) untuk memenuhi Gigabit Ethernet.

Orang ini melaporkan harness python dasar yang memunculkan beberapa proses rsync http://www.reliam.com/company/featured_geek

sinysee
sumber
Sayangnya, tautannya sudah mati. Bisakah Anda menemukannya lagi?
P.Péter
1

Saya sudah membaca banyak pertanyaan yang mirip dengan ini. Saya pikir satu-satunya jawaban nyata adalah memecah salinan / pindah secara manual. IOps akan menjadi masalah di sini. Jika itu membuat Anda merasa lebih baik, saya sedang dalam proses memindahkan ~ 200 million file yang menghabiskan lebih dari 100TB ruang disk.

Wayne
sumber
0

Anda dapat mempertimbangkan untuk memeriksa klon cp multithreaded untuk linux (open source): http://static.usenix.org/event/lisa10/tech/slides/kolano.pdf

pepatah
sumber
Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
Scott Pack